c# - 如何在 Winforms 中制作多语言应用程序?

标签 c# .net winforms localization

我有一个应用程序,我需要在该应用程序中使用两种语言。 例如:

  • 英语
  • 阿拉伯语

但我不知道我该怎么做。任何人都可以帮助我吗?

我需要一些 C# Windows Forms 中的示例。

最佳答案

使用表单的 LocalizableLanguage 属性

Form 类有 LocalizableLanguage 属性。如果将 Localizable 属性设置为 true,则可以将控件添加到默认语言的表单并设置默认语言的属性。然后您可以选择其他语言并更改这些语言的属性。这样,值或可本地化的属性将针对不同的文化存储在单独的资源文件中。

注意:如果属性用 [Localizable(true)] 修饰,则该属性被认为是可本地化的属性。例如BackColor属性不可本地化,但 Text属性是可本地化的。

使用 Resx 资源文件本地化消息和图像

该项目在 Properties 文件夹下有一个 Rseources.Resx 文件,您可以使用它来本地化图像和消息。您也可以将 .resx 资源文件添加到项目中。例如,您可以创建一个 Strings.resx 文件并向其中添加一些字符串键和值,然后将其复制为 strings.en.resxstrings.fa .resx 并编辑这些语言的值。然后你可以使用这些资源值,例如:

MessageBox.Show(Properties.Resources.AreYouSure);

将使用当前 UI 区域性语言显示 Resources.Resx 文件中的 AreYouSure 的值。

如果找不到文化的资源 key 或资源文件的指定文化,将使用 Resx 文件的中性文化中的 key 值。

在运行时更改语言

您可以使用以下方法将应用程序的文化设置为波斯语:

System.Threading.Thread.CurrentThread.CurrentCulture =
    System.Globalization.CultureInfo.GetCultureInfo("fa");

System.Threading.Thread.CurrentThread.CurrentUICulture =
    System.Globalization.CultureInfo.GetCultureInfo("fa");

您应该将上述代码放在应用程序的开头或显示表单之前。

更多信息

更多信息和示例:

关于c# - 如何在 Winforms 中制作多语言应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32989100/

相关文章:

c# - ContentControl 的格式泄露到控制之外

c# - PowerShell 在 NavigateComplete2 事件触发时崩溃

c# - 如何取消选择列表框的项目?

c# - 从外部线程关闭模式对话框 - C#

c# - 尝试将 Outlook 电子邮件保存在文件夹中

c# - 优化这段c#代码

c# - 在 LINQ 求和表达式中处理 null

c# - 使用 ProcessStartInfo 为 UAC 重定向标准输出和提示

.net - GetReferencedAssemblies不会返回所有程序集

c# - 根据用户名获取用户电子邮件