一个翻译小程序(带一点点抒情)

     博客园里有几篇关于父亲节的文章?什么狗屁的父亲节母亲节,为什么不去想想让父母天天像过节一样,为什么只有到了外国人的父亲节,母亲节才想起有个爸妈,除此在外boss比爹还亲呢。

     很多人把时间都用在了自己的所谓的事业上,但是又给家庭成员带来了什么呢,也许你会常常看见,有人写本书写文章,说是献给亲爱的父母,老婆,孩子。但是父母,老婆,孩子知道程序是个锤子,人生没有"乌云"和"闪电"的时间也就短短几年的时间,程序没了可以重写,书没了,等老了经验丰富了,无牵无挂了可以慢慢写点此生最高水准的,可是亲人没了,就再也没了,严重的自我安慰其实损失最大的还是亲人,搞不定那天就为写程序写书过劳死了,提前挂点了,何必了,以后写书,就改写为了自己,别浪费亲人感情了。

    总之,写这些,不是为了发牢骚,而是告诉大家一个道理,这个世界除了父母谁都可能会嫌弃你背叛你,父母才是世界上最可爱的人,用心去爱,不要想起什么狗屁的节日才去问候一下,不要为世界做点可有可无的所谓的贡献的时候扯上父母。

    好了,不闲扯了,继续切入正题,今天女朋友让我给写一个翻译器,于是就花了半个小时过些弄个简单的,给她用,也就适合新手看看,简单的程序,也基本没什么注释,基本看下就明白了。

效果如下:

直接就贴代码了:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Windows.Forms;
  4 using System.Speech.Synthesis;
  5 using System.Threading;
  6 using System.Configuration;
  7 using System.IO;
  8 
  9 namespace 老婆的翻译器
 10 {
 11     /// <summary>
 12     /// Create By Rohelm.X 
 13     ///http://www.cnblogs.com/rohelm
 14     /// 2012.6.17
 15     /// </summary>
 16     public partial class Form1 : Form
 17     {
 18         Translator.LanguageServiceClient client = new Translator.LanguageServiceClient();
 19         private string[] languagecodes = null;
 20         private string[] languagenames = null;
 21         private static readonly string appid = ConfigurationManager.AppSettings["appid"];
 22         private delegate void AsyncFunction(string text);
 23         private AsyncFunction _asyncFunction = null;
 24         SpeechSynthesizer _synthesizer = null;
 25 
 26         public Form1()
 27         {
 28             InitializeComponent();
 29         }
 30        
 31         private void Form1_Load(object sender, EventArgs e)
 32         {
 33             cbb_slan.DataSource = this.GetAllLanguageCode();
 34             cbb_slan.SelectedIndex = 3;
 35             cbb_tarlan.DataSource = this.GetAllLanguageCode();
 36             cbb_tarlan.SelectedIndex = 8;
 37         }
 38 
 39         private void bt_transfram_Click(object sender, EventArgs e)
 40         {
 41             rtb_target.Text = client.Translate(appid, rtb_soruce.Text, ((LanguageCode)cbb_slan.SelectedItem).Code, ((LanguageCode)cbb_tarlan.SelectedItem).Code, "text/html", "general");
 42         }
 43         private void btn_auto_Click(object sender, EventArgs e)
 44         {
 45             if (this.GetNameByCode(rtb_soruce.Text) != "No")
 46             {
 47                 lb_disaply.Text = "亲爱的老婆,当前软件检测到的需要翻译的语言为" + this.GetNameByCode(rtb_soruce.Text) + "并已正常翻译。";
 48                 rtb_target.Text = client.Translate(appid, rtb_soruce.Text, client.Detect(appid, rtb_soruce.Text), ((LanguageCode)cbb_tarlan.SelectedItem).Code, "text/html", "general");
 49             }
 50             else
 51             {
 52                 lb_disaply.Text = "老婆你可能输入有误!";
 53             }
 54         }
 55         //  获取语言代码对应的名称
 56         public string GetNameByCode(string socrcetext)
 57         {
 58             string languagecode= client.Detect(appid,socrcetext);
 59             for (int i = 0; i < languagecodes.Length; i++)
 60             {
 61                 if (languagecode == languagecodes[i])
 62                 { 
 63                     return languagenames[i];
 64                 }
 65             }
 66             return "No";
 67         }
 68         //写了一个方法将有的代码和语言名字的集合
 69         public IEnumerable<LanguageCode> GetAllLanguageCode()
 70         {
 71             List<LanguageCode> list = new List<LanguageCode>();
 72             languagecodes = client.GetLanguagesForTranslate(appid);
 73             languagenames = client.GetLanguageNames(appid, "zh-cn", languagecodes);
 74             for (int i = 0; i < languagecodes.Length; i++)
 75             {
 76                 LanguageCode lan = new LanguageCode();
 77                 lan.Name = languagenames[i];
 78                 lan.Code = languagecodes[i];
 79                 list.Add(lan);
 80             }
 81             return list;
 82         }
 83       
 84         private void pb_speakSource_Click(object sender, EventArgs e)
 85         {
 86             Speak(rtb_soruce.Text);
 87         }
 88 
 89         private void Speak(string textString)
 90         {
 91             _asyncFunction = new AsyncFunction(AsyncSpeak);
 92             _asyncFunction.BeginInvoke(textString, null, null);
 93         }
 94 
 95         private void AsyncSpeak(string textString)
 96         {
 97             try
 98             {
 99                 if (_synthesizer == null)
100                     _synthesizer = new SpeechSynthesizer();
101 
102                 _synthesizer.SpeakAsyncCancelAll();
103                 _synthesizer.Speak(textString);
104             }
105             catch (Exception ex)
106             {
107                 using (TextWriter sw = new StreamWriter("Log.txt", true))
108                 {
109                     sw.WriteLine(ex.Message);
110                 }
111             }
112         }
113 
114         private void pb_speaktarget_Click(object sender, EventArgs e)
115         {
116             Speak(rtb_target.Text);
117         }
118     }
119 
120     public class LanguageCode
121     {
122         public string Name { get; set; }
123         public string Code { get; set; }
124     }
125 }
原文地址:https://www.cnblogs.com/rohelm/p/2553010.html