WPF国际化方式1之资源文件

先看效果吧,个人觉得由于MVVM模式的UI响应属性变化的特殊机制,资源文件和内存数据都是国际化不错的选择。

 

 

 

 

 

1.首先准备两个资源文件用来做中文和英文的转换使用,将程序中需要转换语言都弄成两个版本,分别放到两个资源文件中。

 

 将其中一个设为默认的语言,将默认的语言的资源文件的生成操作改为"Page"

 

 

 

 

 

 

 将其他语言文件的属性改为图下:

 

 

 2.将程序中需要用到的字符串翻译为各个版本,放置到对应的资源文件之中.

Chinese.xaml

 

 

 English.xaml

 

 

 

 

 

 3 在App.xaml之中导入默认的语言的资源文件作为全局资源,如果不想全局使用,只是特定的窗体就添加到对应窗体的Resources之中。

4.

(1)在xaml之中使用资源字典的数据:

直接使用 属性值=" {DynamicResource ResourceKey=XXX}"  XXX为资源字典中的key值

 

 

 

 

(2)在cs后台文件中使用资源字典的数据:

FindResource("XXX"); XXX为资源的key值

前提该窗体能够获取到该资源

(3)在viewModel文件中使用资源字典的数据

将窗体作为参数,通过构造传递到ViewModel,其他方式暂未知晓。。。

使用MVVM模式的,可以尝试将资源写入到两个字典获取其他对象中,在切换时修改对象即可,由于属性通知的机制,会自动更新UI。

 

5.切换资源字典:

切换时切记要判断资源集合中是否已有国际化语言的资源字典,如果有要先移出,在加入切换的语言资源,不然会产生冲突。

如果资源字典添加在App.xaml之中,步骤为

(1)获取资源字典

 

 (2)移除已有再添加,此处判断方法是判断App.xaml的所有的资源字典中是否存在包含某个键值的资源字典,如果存在就表明他是语言的资源文件,因为还有其他的需要用到的不能都移除,只需移除语言的资源

 

 如果资源字典添加到窗体的Resource之中的,只需将上面图中的"Application.Current.Resources.MergedDictionaries"改为" {你的window对象}.Resources.MergedDictionaries"其他一致。

转载于:https://www.cnblogs.com/qwqwQAQ/p/11595454.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF国际化是一种用于支持多语言的开发技术,可以使应用程序自动切换不同的语言环境。WPF提供了一套机制,允许开发人员在应用程序中以一种简单而灵活的方式实现国际化。以下是如何实现WPF应用程序的自动切换语言的步骤: 1. 创建源文件:首先,需要为每种语言创建一个源文件源文件是用于存储各种语言的本地化文本信息的文件,以键值对的形式存储。例如,可以创建一个名为"Resources.resx"的默认源文件,以及其他语言的源文件,如"Resources.zh-CN.resx"和"Resources.en-US.resx"。 2. 添加控件标记:在XAML文件中,可以使用标记来引用源文件中的本地化文本。例如,可以使用<TextBlock>标记来显示某个字符串,通过设置Text属性为源文件中的键值,如Text="{x:Static resx:Resources.Hello}"。 3. 设置语言切换逻辑:在应用程序中,可以为用户提供切换语言的选项。一种常见的方法是创建一个下拉列表框,列出所有支持的语言选项。当用户选择不同的语言时,可以通过修改应用程序的CurrentUICulture属性来实现语言切换。例如,可以使用CultureInfo类将CurrentUICulture设置为选择的新语言,如Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN")。 4. 更新界面:当语言切换后,需要及时更新界面上显示的文本。WPF会自动根据当前的CurrentUICulture来查找并加载对应的源文件,并将源文件中的本地化文本应用到界面上对应的控件。 通过以上步骤,可以实现WPF应用程序的自动切换语言功能。使用WPF国际化技术,开发人员可以轻松地为应用程序提供多语言支持,满足不同用户的语言需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值