日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows Phone 7调用必应翻译服务

發布時間:2023/12/10 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows Phone 7调用必应翻译服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  這講是介紹如何在Windows Phone上調用必應翻譯服務。想必大家也知道必應為我們提供了很多服務,諸如搜索、地圖、翻譯等。前面已經介紹了如何在Windows Phone上調用必應的地圖服務,今天調用必應的翻譯服務,在它的服務中包含36種以上語言,包括簡體中文、繁體中文等。下面是一個快照。有興趣的朋友趕快行動吧!

  

  

效果圖如下

        起始界面

?

    沒有選擇語言時彈出提示框

?

    沒有輸入數據時彈出提示框

?

      翻譯完成后界面

?

  好啦!開始吧.

  Step 1:創建語言類Language.cs

     每種語言都有兩個屬性,Name,Code。如上倆圖中文的Name是chinese simplified,Code是zh-CHS.

public class Language
{
??? public string Code { get; set; }
??? public string Name { get; set; }
}

      

  Step 2:用戶接口

      我們定義了一些控件,并綁定Language的Name屬性,來顯示數據。

<ScrollViewer>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="30">源語言:</TextBlock>
<ListBox x:Name="lbxFrom" Height="160" Margin="0,10,0,10" Width="440" HorizontalAlignment="Left">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" FontSize="30"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBox Name="txtOrign" Text="" FontSize="25" TextWrapping="Wrap" Height="160" HorizontalAlignment="Left" Width="440"/>
<TextBlock FontSize="30">目標語言:</TextBlock>
<ListBox x:Name="lbxTo" Height="160" Margin="0,10,0,10" Width="440" HorizontalAlignment="Left">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" FontSize="30"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Name="btnTranslate" Content="翻譯"
Click="btnTranslate_Click" />
<TextBox Name="txtTarget" IsReadOnly="True" FontSize="30" TextWrapping="Wrap" Height="160" HorizontalAlignment="Left" Width="440"/>
</StackPanel>
</ScrollViewer>
</UserControl>

?

在MainPage.cs文件中定義三個List<T>,來保存數據。

        ? private List<string> codes;
???????       private List<string> names;
???????       private List<Language> languages;

?

  Step 3:使用Bing SOAP 服務

    ? 添加服務引用,地址為:http://api.microsofttranslator.com/V2/Soap.svc,LanguageServiceClient是一個Proxy,提供了一些調用服務的方法。下面我們定義一個對象

private BTS.LanguageServiceClient proxy;

要使用必應的翻譯服務我們首先必須獲取一個APP_ID,到http://cn.bing.com/developers/createapp.aspx網站,輸入信息來獲取。我注冊的ID也可以使用,請看下圖。

?

  接下來我們注冊事件?

  proxy.GetLanguagesForTranslateCompleted += new EventHandler<BTS.GetLanguagesForTranslateCompletedEventArgs>(proxy_GetLanguagesForTranslateCompleted);
????? proxy.GetLanguageNamesCompleted += new EventHandler<BTS.GetLanguageNamesCompletedEventArgs>(proxy_GetLanguageNamesCompleted);

????? proxy.TranslateCompleted += new EventHandler<BTS.TranslateCompletedEventArgs>(proxy_TranslateCompleted);

其中GetLanguagesForTranslateCompleted事件有一個GetLanguagesForTranslateCompletedEventArgs類型的參數。包含一些從服務中得到的數據,如Language的Code值。

GetLanguageNamesCompleted事件有一個GetLanguageNamesCompletedEventArgs類型的參數,包含Language的Name值。

TranslateCompleted事件將我們輸入原語言的數據翻譯為目標語言的數據。

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
proxy.GetLanguagesForTranslateCompleted += new EventHandler<BTS.GetLanguagesForTranslateCompletedEventArgs>(proxy_GetLanguagesForTranslateCompleted);
proxy.GetLanguageNamesCompleted += new EventHandler<BTS.GetLanguageNamesCompletedEventArgs>(proxy_GetLanguageNamesCompleted);
proxy.TranslateCompleted += new EventHandler<BTS.TranslateCompletedEventArgs>(proxy_TranslateCompleted);

proxy.GetLanguagesForTranslateAsync(APP_ID);
}

public void proxy_GetLanguagesForTranslateCompleted(object sender, BTS.GetLanguagesForTranslateCompletedEventArgs e)
{
codes = e.Result.ToList();

proxy.GetLanguageNamesAsync(APP_ID, "en", e.Result);
}

public void proxy_GetLanguageNamesCompleted(object sender, BTS.GetLanguageNamesCompletedEventArgs e)
{
names = e.Result.ToList();
loadLanguages();
}

public void proxy_TranslateCompleted(object sender, BTS.TranslateCompletedEventArgs e)
{
txtTarget.Text = e.Result;
}

?

?現在給ListBox對象綁定數據

private void loadLanguages()
{
for (int index = 0; index < codes.Count; index++)
{
languages.Add(new Language
{
Code = codes[index],
Name = names[index]
});
}

lbxFrom.ItemsSource = languages;
lbxTo.ItemsSource = languages;
}

?

?定義Translate()方法來完成翻譯

private void Translate()
{
if (lbxFrom.SelectedItem == null || lbxTo.SelectedItem == null)
{
MessageBox.Show("請先選擇語言","提示",MessageBoxButton.OK);

return;
}

if (this.txtOrign.Text.Trim().Length==0)
{
MessageBox.Show("請先輸入要翻譯的單詞或語句","提示",MessageBoxButton.OK);

return;
}
else
{
Language from = lbxFrom.SelectedItem as Language;
Language to = lbxTo.SelectedItem as Language;

proxy.TranslateAsync(APP_ID, txtOrign.Text, from.Code, to.Code);
}
}
}

?

完整MainPage.xaml代碼

<phone:PhoneApplicationPage
x:Class="BingTranslatorService.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">

<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<ScrollViewer>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="30">源語言:</TextBlock>
<ListBox x:Name="lbxFrom" Height="160" Margin="0,10,0,10" Width="440" HorizontalAlignment="Left">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" FontSize="30"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBox Name="txtOrign" Text="" FontSize="25" TextWrapping="Wrap" Height="160" HorizontalAlignment="Left" Width="440"/>
<TextBlock FontSize="30">目標語言:</TextBlock>
<ListBox x:Name="lbxTo" Height="160" Margin="0,10,0,10" Width="440" HorizontalAlignment="Left">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" FontSize="30"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Name="btnTranslate" Content="翻譯"
Click="btnTranslate_Click" />
<TextBox Name="txtTarget" IsReadOnly="True" FontSize="30" TextWrapping="Wrap" Height="160" HorizontalAlignment="Left" Width="440"/>
</StackPanel>
</ScrollViewer>

</Grid>
</Grid>

</phone:PhoneApplicationPage>
</UserControl>

?

完整MainPage.csl代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace BingTranslatorService
{
public partial class MainPage : PhoneApplicationPage
{
private List<string> codes;
private List<string> names;
private List<Language> languages;
private BTS.LanguageServiceClient proxy;

//http://cn.bing.com/developers/createapp.aspx
private readonly string APP_ID = "3DAEE5B978BA031557E739EE1E2A68CB1FAD5909";
public MainPage()
{
InitializeComponent();
codes = new List<string>();
names = new List<string>();
languages = new List<Language>();
proxy = new BTS.LanguageServiceClient();
this.Loaded += new RoutedEventHandler(PhoneApplicationPage_Loaded);
}

private void btnTranslate_Click(object sender, RoutedEventArgs e)
{
Translate();
}

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
proxy.GetLanguagesForTranslateCompleted += new EventHandler<BTS.GetLanguagesForTranslateCompletedEventArgs>(proxy_GetLanguagesForTranslateCompleted);
proxy.GetLanguageNamesCompleted += new EventHandler<BTS.GetLanguageNamesCompletedEventArgs>(proxy_GetLanguageNamesCompleted);
proxy.TranslateCompleted += new EventHandler<BTS.TranslateCompletedEventArgs>(proxy_TranslateCompleted);

proxy.GetLanguagesForTranslateAsync(APP_ID);
}

public void proxy_GetLanguagesForTranslateCompleted(object sender, BTS.GetLanguagesForTranslateCompletedEventArgs e)
{
codes = e.Result.ToList();

proxy.GetLanguageNamesAsync(APP_ID, "en", e.Result);
}

public void proxy_GetLanguageNamesCompleted(object sender, BTS.GetLanguageNamesCompletedEventArgs e)
{
names = e.Result.ToList();
loadLanguages();
}

public void proxy_TranslateCompleted(object sender, BTS.TranslateCompletedEventArgs e)
{
txtTarget.Text = e.Result;
}

private void loadLanguages()
{
for (int index = 0; index < codes.Count; index++)
{
languages.Add(new Language
{
Code = codes[index],
Name = names[index]
});
}

lbxFrom.ItemsSource = languages;
lbxTo.ItemsSource = languages;
}



private void Translate()
{
if (lbxFrom.SelectedItem == null || lbxTo.SelectedItem == null)
{
MessageBox.Show("請先選擇語言", "提示", MessageBoxButton.OK);

return;
}

if (this.txtOrign.Text.Trim().Length == 0)
{
MessageBox.Show("請先輸入要翻譯的單詞或語句", "提示", MessageBoxButton.OK);

return;
}
else
{
Language from = lbxFrom.SelectedItem as Language;
Language to = lbxTo.SelectedItem as Language;

proxy.TranslateAsync(APP_ID, txtOrign.Text, from.Code, to.Code);
}
}
}
}
</UserControl>

?

?

源碼下載

總結

以上是生活随笔為你收集整理的Windows Phone 7调用必应翻译服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。