Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 翻译实现_C#_User Interface_Translate - Fatal编程技术网

C# 翻译实现

C# 翻译实现,c#,user-interface,translate,C#,User Interface,Translate,我已经创建了to.resx文件:Translate.English.resx和Translate.Romanian.resx,其中包含如下字符串: MainWindowTitle : English Value CultureInfo.GetCultureInfo("en"); or CultureInfo.GetCultureInfo("ro"); MainWindow.Text = translate.MainWindowText; 在罗马尼亚文件中: MainWindowTitle :

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

MainWindowTitle : English Value
CultureInfo.GetCultureInfo("en");
or
CultureInfo.GetCultureInfo("ro");
MainWindow.Text = translate.MainWindowText;
在罗马尼亚文件中:

MainWindowTitle : Valoarea in Romana.
现在我的问题是:我如何强制程序解释如下代码:

  • 我有一个名为
    lang
    字符串,首先等于
    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
我如何才能做到这一点?

请检查您必须将您的resx文件重命名为类似“translate.en.resx”和“translate.ro.resx”的文件。然后你可以这样做:

MainWindowTitle : English Value
CultureInfo.GetCultureInfo("en");
or
CultureInfo.GetCultureInfo("ro");
MainWindow.Text = translate.MainWindowText;

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

给出一个类似String.resx、String.ro.resx、String.tr.resx、String.fr.resx的名称

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

  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));
}

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

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);
}
如果你想要一个完整的例子,请查看我的博客