Bonjour,
je fais un traducteur qui get/post les éléments à partir du site google translate.
Ca marche très bien mais lorsque je veux par exemple traduire de l'anglais ou autre vers l'arabe, les caractères en arabe ne s'affiche pas dans ma richtextbox ou textblock (ça affiche des caractère style Ccàoc)... ??
main
méthodes utilisées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 address = new Uri("http://translate.google.com/translate_t"); wc = new WebClient(); wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; wc.UploadStringCompleted += new UploadStringCompletedEventHandler(wc_UploadStringCompleted);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 public string GetPostData(string fromLanguage, string toLanguage, string content) { string strPostData = string.Format("hl=en&ie=UTF8&oe=UTF8submit=Translate&langpair={0}|{1}",fromLanguage,toLanguage); return strPostData += "&text=" + HttpUtility.UrlEncode(content); } public void wc_UploadStringCompleted(object sender,UploadStringCompletedEventArgs e) { if (e.Result != null) { var doc = new HtmlDocument(); doc.LoadHtml(e.Result); var node = doc.DocumentNode.SelectSingleNode("//span[@id='result_box']"); var output = node != null ? node.InnerText : e.Error.Message; if(toLanguage == "ar") { byte[] enBuff = Encoding.GetEncoding("Arabic").GetBytes(output); output = Encoding.GetEncoding("Arabic").GetString(enBuff); this.Dispatcher.Thread.CurrentCulture.Name.ToString(); InputLanguageManager.SetInputLanguage(richtextOutput, CultureInfo.CreateSpecificCulture("ar-AE")); } richtextOutput.AppendText(output); } } private void button1_Click(object sender, RoutedEventArgs e) { richtextOutput.AppendText(""); choixFrom = comboBox1.SelectedIndex; choixTo = comboBox2.SelectedIndex; switch (choixFrom + 1) { case 1: fromLanguage = "en"; break; case 2: fromLanguage = "ar"; break; case 3: fromLanguage = "fr"; break; case 4: fromLanguage = "nl"; break; } switch (choixTo + 1) { case 1: toLanguage = "en"; break; case 2: toLanguage = "ar"; break; case 3: toLanguage = "fr"; break; case 4: toLanguage = "nl"; break; } wc.UploadStringAsync(address, GetPostData(fromLanguage, toLanguage, content)); } }
Partager