0
我正在構建一款應用程序,以訪問適用於Windows Phone的Google翻譯。我注意到,對於翻譯後的文字會有外來字符的語言,文本框會全部搞砸,而不是顯示隨機符號等等。不知道爲什麼。我需要在文本框中啓用某些內容嗎?c#windows手機 - 文本框不懂外文字符?
代碼:
private void btnTranslate_Click(object sender, RoutedEventArgs e)
{
string text = txtboxOriginal.Text;
string fromLanguage;
string toLanguage;
//Use Bing.
if ((bool)settings["translateIsBing"] == true)
{
if (string.IsNullOrWhiteSpace(text))
{
MessageBox.Show("Can't translate with nothing to translate. Please try again.");
}
else
{
}
}
//Use Google.
else if ((bool)settings["translateIsGoogle"] == true)
{
if (string.IsNullOrWhiteSpace(text))
{
MessageBox.Show("Can't translate with nothing to translate. Please try again.");
}
else
{
fromLanguage = this.getLanguageCodeGoogle(lstOriginalLanguages.SelectedIndex.ToString());
toLanguage = this.getLanguageCodeGoogle(lstTranslateToLanguages.SelectedIndex.ToString());
string url = "http://translate.google.com/translate_t?text=" + text + "&sl=" + fromLanguage + "&tl=" + toLanguage;
WebClient webclient = new WebClient();
webclient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webclient_DownloadStringCompleted);
webclient.DownloadStringAsync(new Uri(url, UriKind.RelativeOrAbsolute));
}
}
}
void webclient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
try
{
Debug.WriteLine(e.Result);
string result = e.Result;
int startPosition = result.IndexOf("TRANSLATED_TEXT='");
int length = result.IndexOf(@"';INPUT") - startPosition;
string partial = result.Substring(startPosition, length);
Debug.WriteLine("Step 1: {0}", partial);
startPosition = partial.IndexOf("'") + 1;
length = partial.Length - startPosition;
string secondPartial = partial.Substring(startPosition, length);
Debug.WriteLine("Step 2: {0}", secondPartial);
translatedText = secondPartial;
txtboxOriginal.Text = secondPartial;
btnTranslate.Content = "Translated";
btnTranslate.IsEnabled = false;
btnCopy.Visibility = Visibility.Visible;
btnCopy.IsEnabled = true;
btnReset.Visibility = Visibility.Visible;
btnReset.IsEnabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}