zoukankan      html  css  js  c++  java
  • 使用WindowsAPICodePack实现翻译功能

    仅限于以下几种语言间的翻译:

                           

    在我的另一篇博文《图片批量压缩》中,有介绍WindowsAPICodePack库,该库是微软提供的一套基于Win7及以上版本操作系统的系统库,可以帮助我们完成一些代码很难完成的系统层面操作。本文就介绍其中的一个强大功能:语言的翻译转换功能。WindowsAPICodePack库下载地址:官方主页

    程序界面如下:

     

    获取所有翻译类别代码:

    //获取所有翻译类别
            private MappingService[] GetSpecifiedMappingServices(string CategoryName)
            {
                MappingService[] transliterationServices = null;
                try
                {
                    MappingEnumOptions enumOptions = new MappingEnumOptions() { Category = CategoryName };
                    transliterationServices = MappingService.GetServices(enumOptions);
                }
                catch (LinguisticException exc)
                {
                    MessageBox.Show(exc.Message);
                }
                return transliterationServices;
            }
    

      

    解释:前面贴出的可以翻译的几种语言,是系统给出的,并不是博主创造的,上面的代码就是从系统中获取所有支持的语言翻译功能。

    翻译功能代码如下:

    private string LanguageConverter(Guid serviceGuid, string sourceContent)
            {
                string transliterated = null;
                if ((sourceContent != null) && (sourceContent.Length > 0))
                {
                    try
                    {
                        MappingService mapService = new MappingService(serviceGuid);
                        using (MappingPropertyBag bag = mapService.RecognizeText(sourceContent, null))
                        {
                            transliterated = bag.GetResultRanges()[0].FormatData(new StringFormatter());
                        }
                    }
                    catch (LinguisticException exc)
                    {
                        MessageBox.Show(exc.Message);
                    }
                }
                return transliterated;
            }
    

      

    解释:通过serviceGuid初始化不同的翻译器,serviceGuid就是下拉列表中选择的语言的guid。

    调用翻译功能的代码:

    try
                {
                    guidService = ((DataItem)comboBox1.SelectedItem).guid;
                    string result = LanguageConverter(guidService.GetValueOrDefault(), txtSource.Text);
                    if ((result != null) && (result.Length > 0))
                    {
                        txtResult.Text = result;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    

      

    解释:略。

    下载:Demo   Code

  • 相关阅读:
    C与设计模式---观察者模式
    如何在嵌入式产品中应用键值存储数据库
    Matlab 常用函数小结
    【Qt点滴】游戏2048
    经典ICP算法的问题
    基于矩阵分解的推荐系统实例
    【Qt点滴】UDP协议实例:简易广播实现
    【Qt点滴】:获取本机网络信息
    51单片机:光立方
    STM32单片机:四旋翼飞行器的飞控实现
  • 原文地址:https://www.cnblogs.com/tuyile006/p/3712766.html
Copyright © 2011-2022 走看看