zoukankan      html  css  js  c++  java
  • 一个翻译小程序(带一点点抒情)

         博客园里有几篇关于父亲节的文章?什么狗屁的父亲节母亲节,为什么不去想想让父母天天像过节一样,为什么只有到了外国人的父亲节,母亲节才想起有个爸妈,除此在外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 }
  • 相关阅读:
    SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
    Spark家族:Win10系统下搭建Scala开发环境
    Linux系统:centos7下搭建Rocketmq4.3中间件,配置监控台
    Linux系统:Centos7环境搭建Redis单台和哨兵集群环境
    Linux系统:常用Linux系统管理命令总结
    Linux系统:centos7下安装Jdk8、Tomcat8、MySQL5.7环境
    Linux系统:centos7下搭建ZooKeeper3.4中间件,常用命令总结
    SpringBoot2.0 整合 Redis集群 ,实现消息队列场景
    SpringBoot2.0 基础案例(17):自定义启动页,项目打包和指定运行环境
    SpringBoot2.0 基础案例(16):配置Actuator组件,实现系统监控
  • 原文地址:https://www.cnblogs.com/rohelm/p/2553010.html
Copyright © 2011-2022 走看看