【问题标题】:Translation implementation翻译实施
【发布时间】:2012-10-04 02:28:22
【问题描述】:

我创建了 .resx 文件:Translate.English.resxTranslate.Romanian.resx,其中包含如下字符串:

MainWindowTitle : English Value

在罗马尼亚语文件中:

MainWindowTitle : Valoarea in Romana.

现在我的问题是:我如何强制程序像这里一样解释代码:

  • 我有一个stringlang,首先等于en
  • 我有MainWindow.Text = Translate.English.MainWindowTitle
  • 现在我希望它更易于实现,所以旁边:

    switch(lang){
        case "ro":
            MainWindow.Text = Translate.English.MainWindowTitle;
        break;
    
        case "en":
            MainWindow.Text = Translate.Romanian.MainWindowTitle;
        break;
    }
    

所以,除此之外,我希望它是这样的:

   lang = "ro";
   MainWindow.Text = Translate.(lang value).MainWindowText

我该怎么做?

【问题讨论】:

    标签: c# user-interface translate


    【解决方案1】:

    查看this post. 您必须将 resx 文件重命名为“translate.en.resx”和“translate.ro.resx”之类的名称。然后你可以这样做:

    CultureInfo.GetCultureInfo("en");
    or
    CultureInfo.GetCultureInfo("ro");
    MainWindow.Text = translate.MainWindowText;
    

    【讨论】:

      【解决方案2】:

      选择在您的项目中添加新项目和选定的资源文件。

      取一个类似 String.resx、String.ro.resx、String.tr.resx、String.fr.resx 的名称。

      4 种不同语言的示例用法:

        Console.WriteLine(Localize("name", "ro"));
        Console.WriteLine(Localize("name", "en"));
        Console.WriteLine(Localize("name", "fr"));
        Console.WriteLine(Localize("name", "tr"));
      
      
      public static string Localize(string name, string languageCode)
      {
        return Strings.ResourceManager.GetString(name, new CultureInfo(languageCode));
      }
      

      【讨论】:

        【解决方案3】:

        上面所有的人都是对的。除此之外,您还可以通过类似的方式实时更改语言。

        private void RefreshResources(Control ctrl, ComponentResourceManager res)
        {
           ctrl.SuspendLayout();
           res.ApplyResources(ctrl, ctrl.Name, CurrentLocale);
           foreach (Control control in ctrl.Controls)
              RefreshResources(control, res); // recursion
           ctrl.ResumeLayout(false);
        }
        

        如果你想要一个完整的例子,请查看我的博客here

        【讨论】:

          猜你喜欢
          • 2013-04-24
          • 1970-01-01
          • 2018-11-09
          • 2015-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-28
          • 1970-01-01
          相关资源
          最近更新 更多