EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:为本地化工具创建自定义翻译提供程序

本地化工具利用了微软翻译的翻译服务提供商。但是,我们的本地化工具的显着特征之一就是可以使用自定义翻译服务。这意味着您可以使用其他翻译器。在此示例中,演示了自定义翻译提供程序实现。

若要创建自定义翻译提供程序,您需要创建并注册一个实现ITranslatorProvider接口的类。作为从头开始实现的替代方法,您可以创建TranslatorProviderBase类的后代,该类已经包含很多功能。此类还基于在线翻译服务,以块为单位收集本地化的值,以缩短翻译。在此示例中,我们将利用第二种方法。

TranslatorProviderBase类的后代应实现ITranslatorProvider接口的某些方法和属性,而基类未实现。

此外,需要重写ITranslatorProvider.Translate方法。

执行以下步骤来实现翻译提供程序。

  • 将以下类添加到与平台无关的模块项目(例如MySolution.Module)中,或将新模块添加到您的解决方案中并在其中实现该类。

    using DevExpress.ExpressApp.Utils;
    // ...
    public class MyTranslatorProvider : TranslatorProviderBase {
        public MyTranslatorProvider() : base("<br />", 5000) { }
    
        #region ITranslatorProvider Members
        public override string Caption {
            get { return "My Translate Provider"; }
        }
        public override string Description {
            get { return "My Description"; }
        }
        public override string[] GetLanguages() {
            string[] supportedLanguages = {"en", "fr", "de", "ru"};
            return supportedLanguages;
        }
        public override string Translate(string text, string sourceLanguageCode,
            string desinationLanguageCode) {
            string result = "";
            // Place the code that translates 'text' from 'sourceLanguageCode' to 'desinationLanguageCode' here
            return result;
        }
        #endregion
    }
    

    将最大块长度和分隔符传递给基类构造函数。

    注意

    如果需要将本地化的值分为几个部分分别进行本地化,则也可以覆盖辅助CalculateSentences方法。例如,当翻译服务错误地处理特殊符号时,以及在您需要排除引号和其他特殊符号中包含的字符串时,这是必需的。所述TranslatorProviderBase类收集本地化的值,并把它们分成基于小零件CalculateSentences方法,然后从这些更小的部分和过程将它们与构成块翻译方法。

    提示

    若要查看完整的示例,请参阅内置的BingTranslatorProvider的资源,该资源位于C:\ Program Files(x86)\ DevExpress 19.2 \ Components \ Sources \ DevExpress.ExpressApp \ DevExpress.ExpressApp.Win \ Core \ ModelEditor \ Localization \ TranslatorProviders.cs

  • 修改模块的构造函数,以注册自定义翻译提供程序类。

    public sealed partial class MySolutionModule : ModuleBase {
        public MySolutionModule() {
            InitializeComponent();
            TranslatorProvider.RegisterProvider(new MyTranslatorProvider());
        }
    }
    
  • 重建您的解决方案,此自定义翻译提供程序将替换Visual Studio中和运行时本地化工具使用的默认提供程序。
相关文章

转载保留此链接,注明出处