📜  WPF-本地化

📅  最后修改于: 2020-11-18 09:59:14             🧑  作者: Mango


本地化是将应用程序资源转换为针对应用程序支持的特定区域性的本地化版本。

当您开发应用程序且仅以一种语言提供应用程序时,您就在限制客户数量和业务规模。如果您想增加客户群,这也将增加您的业务,那么您的产品必须是可用的,并且可以被全球的受众使用。产品具有成本效益的本地化是接触更多客户的最好,最经济的方法之一。

在WPF中,使用resx文件创建可本地化的应用程序非常容易,这是最简单的本地化解决方案。让我们举一个简单的例子来了解它是如何工作的-

  • 创建一个名为WPFLocalization的新WPF项目。

  • 在解决方案资源管理器中,您将在Properties文件夹下看到Resources.resx文件。

本土化

  • 将访问修饰符从内部更改为公共,以便可以在XAML文件中对其进行访问。

WPF本地化的变化

  • 现在添加以下字符串的名称和值,这些字符串和值将在我们的应用程序中使用。

添加字符串名称

  • 制作两个名为Resources.en.resx和Resources.ru-RU.resx的Resources.resx文件。这些是特定于语言和国家/地区名称的命名约定,可以在“国家语言支持(NLS)API参考( https://msdn.microsoft.com/zh-cn/goglobal/bb896001.aspx )”页面上找到。

  • 将Resources.ru-RU.resx中的值更改为俄语单词,如下所示。

更改资源中的值

  • 让我们转到设计窗口并拖动三个文本框,三个标签和三个按钮。

  • 在XAML文件中,首先添加名称空间声明以使用本地化资源xmlns:p =“ clr-namespace:WPFLocalization.Properties”

  • 如下所示设置所有控件的属性。在此示例中,我们将不使用硬编码的字符串作为XAML文件中标签,按钮和窗口标题的内容。我们将使用在* .resx文件中定义的字符串。例如,对于窗口的标题,我们使用* .resx文件中定义的Title字符串,例如“ Title =“ {x:Static p:Resources.Title}”“”

  • 这是XAML文件,其中使用不同的属性创建和初始化控件。


    
    
      
            
      
             
       
            
      
            
      
            
      
            
       
            
      
            
       
    
    
 
  • 编译并执行上述代码后,您将看到以下包含不同控件的窗口。

本地化示例

  • 默认情况下,该程序使用默认的Resources.resx。如果要以俄语显示在Resources.ru-RU.resx文件中定义的文本,那么当程序在App.xaml文件中启动时,您将需要显式设置区域性,如下所示。

using System.Windows;

namespace WPFLocalization {
   ///  
      /// Interaction logic for App.xaml 
   ///  
    
   public partial class App : Application {
    
      App() { 
         System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ru-RU");
         //System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en"); 
      } 
   } 
}

运行应用程序时,您将看到所有俄语文本。

运行应用程序

我们建议您执行上述代码,并为其他区域性创建resx文件。