【问题标题】:Devexpress LocalizationDevexpress 本地化
【发布时间】:2020-02-20 11:14:39
【问题描述】:

我有一个 WindowsForm 应用程序,所有文本(在表单标签/按钮/其他控件上)都用挪威语编写。我想使用本地化转换所有英文文本。 Devexpress中有什么方法可以将所有文本转换为英文,而无需手动将每个文本的含义写入资源文件中? 例如:- 在附件中,“Brukernavn”被硬编码在标签上。我想将其自动转换为英文而不在 English-ResourceFile 中分配其值。 Devexpress 本地化的方法应该是什么?

【问题讨论】:

    标签: winforms localization devexpress devexpress-windows-ui satellite-assembly


    【解决方案1】:

    我不知道有任何 Devexpress 方法可以做到这一点。一个好的解决方案是实际完成构建英语本地化文件的工作,如下所示。

    • 向您的应用程序添加一个国际化层。
    • 这一层 搜索应用程序以找到您可能想要的所有控件 翻译。
    • 找到所有控件后,您必须匹配它们 翻译文本的文本值。
    • 找到匹配的英文后 文本,您将不得不替换这些控件上的 Text 属性。

    如果您想避免构建适当的本地化系统,下面将介绍一种更简单的解决方案。

    • 制作一个类型列表,并在其中填写您要翻译的所有控制文本。
    • 翻译字符串并添加格式,这样您就有了一个字典类型(其中 Key 是原始文本,Value 是翻译后的文本)。
    • 在应用程序开始时,获取您要翻译的所有控件的列表,然后执行以下操作:

          public static IEnumerable<System.Windows.Forms.Control> GetAllControlsOfType(this      System.Windows.Forms.Control control, Type type)
          {
              var controls = control.Controls.Cast<System.Windows.Forms.Control>();
      
              return controls.SelectMany(ctrl => GetAllControlsOfType(ctrl, type))
               .Concat(controls)
               .Where(c => c.GetType() == type);
          }
      
          public void DoTranslation()
          {
              var ctrls = this.GetAllControlsOfTypes(new List<Type>() { typeof(Label), typeof(Button) });
              foreach (var ctr in ctrls)
              {
                  var element = dict.FirstOrDefault(i => i.Key == ctr.Text);
                  ctr.Text = element.Value;
              }
          }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 2015-04-20
      • 1970-01-01
      • 2021-03-16
      相关资源
      最近更新 更多