WPF国际化的最佳实践

WPF国际化的最佳实践

1.创建项目资源文件

如果你的项目没有Properties文件夹和Resources.resx文件,可以通过右键项目-资源-常规-添加创建或打开程序集资源

2.添加国际化字符串

打开Resources.resx文件,添加需要翻译的文本字符,并将访问修饰符修改为public,才能在xaml中访问到此字符

3.添加其他国家地区资源文件

  • 在Properties文件夹下添加新的资源文件项
  • 注意一定要将新的文件名称格式命名为Resources.xx-xx.resx 这里一定要注意Resources是有s的,很多同事都命名错误导致无法国际化
  • 更多国家和地区的编码见文末

3.1 翻译文本

  • 将需要翻译的文本复制到新的地区资源文件中翻译

4.在代码中使用国际化文本

  • 在xaml中使用国际化文本

    <Button Width="40" Content="{x:Static prop:Resources.Confirm}" />
    
  • 引入Properties命名空间

    xmlns:prop="clr-namespace:WpfLanguage.Properties"
    

  • 在代码中使用国际化文本

    label.Content = Properties.Resources.Confirm;
    

5.在程序启动切换到对应国际的资源文件

protected override void OnStartup(StartupEventArgs e)
{

    // 切换到英语资源文件
    var info = new CultureInfo("en-US");
    Thread.CurrentThread.CurrentUICulture = info;

    base.OnStartup(e);
}

6.常见的国家和地区码

CultureInfo 地区
af-ZA 南非荷兰语(南非)
sq 阿尔巴尼亚语
sq-AL 阿尔巴尼亚语(阿尔巴尼亚)
ar 阿拉伯语
ar-DZ 阿拉伯语(阿尔及利亚)
ar-BH 阿拉伯语(巴林)
ar-EG 阿拉伯语(埃及)
ar-IQ 阿拉伯语(伊拉克)
ar-JO 阿拉伯语(约旦)
ar-KW 阿拉伯语(科威特)
ar-LB 阿拉伯语(黎巴嫩)
ar-LY 阿拉伯语(利比亚)
ar-MA 阿拉伯语(摩洛哥)
ar-OM 阿拉伯语(阿曼)
ar-QA 阿拉伯语(卡塔尔)
ar-SA 阿拉伯语(沙特阿拉伯)
ar-SY 阿拉伯语(叙利亚)
ar-TN 阿拉伯语(突尼斯)
ar-AE 阿拉伯语(阿联酋)
ar-YE 阿拉伯语(也门)
hy 亚美尼亚语
hy-AM 亚美尼亚语(亚美尼亚)
az 阿泽里语
az-Cyrl-AZ 阿泽里语(阿塞拜疆,西里尔语)
az-Latn-AZ 阿泽里语(阿塞拜疆,拉丁语)
eu 巴斯克语
eu-ES 巴斯克语(巴斯克地区)
be 白俄罗斯语
be-BY 白俄罗斯语(白俄罗斯)
bg 保加利亚语
bg-BG 保加利亚语(保加利亚)
ca 加泰罗尼亚语
ca-ES 加泰罗尼亚语(加泰罗尼亚地区)
zh-HK 中文(中国香港特别行政区)
zh-MO 中文(中国澳门特别行政区)
zh-CN 中文(中国)
zh-Hans 中文(简体)
zh-SG 中文(新加坡)
zh-TW 中文(台湾)
zh-Hant 中文(繁体)
hr 克罗地亚语
hr-BA 克罗地亚语(波斯尼亚和黑塞哥维那)
hr-HR 克罗地亚语(克罗地亚)
cs 捷克语
cs-CZ 捷克语(捷克共和国)
da 丹麦语
da-DK 丹麦语(丹麦)
dv 迪维希语
dv-MV 迪维希语(马尔代夫)
nl 荷兰语
nl-BE 荷兰语(比利时)
nl-NL 荷兰语(荷兰)
en 英语
en-AU 英语(澳大利亚)
en-BZ 英语(伯利兹)
en-CA 英语(加拿大)
en-029 英语(加勒比)
en-IE 英语(爱尔兰)
en-JM 英语(牙买加)
en-NZ 英语(新西兰)
en-PH 英语(菲律宾)
en-ZA 英语(南非)
en-TT 英语(特立尼达和多巴哥)
en-GB 英语(英国)
en-US 英语(美国)
en-ZW 英语(津巴布韦)
et 爱沙尼亚语
et-EE 爱沙尼亚语(爱沙尼亚)
fo 法罗语
fo-FO 法罗语(法罗群岛)
fa 波斯语
fa-IR 波斯语(伊朗)
fi 芬兰语
fi-FI 芬兰语(芬兰)
fr 法语
fr-BE 法语(比利时)
fr-CA 法语(加拿大)
fr-FR 法语(法国)
fr-LU 法语(卢森堡)
fr-MC 法语(摩纳哥)
fr-CH 法语(瑞士)
gl 加利西亚语
gl-ES 加利西亚语(西班牙)
ka 格鲁吉亚语
ka-GE 格鲁吉亚语(格鲁吉亚)
de 德语
de-AT 德语(奥地利)
de-DE 德语(德国)
de-DE_phoneb 德语(德国,电话簿排序)
de-LI 德语(列支敦士登)
de-LU 德语(卢森堡)
de-CH 德语(瑞士)
el 希腊语
el-GR 希腊语(希腊)
gu 古吉拉特语
gu-IN 古吉拉特语(印度)
he 希伯来语
he-IL 希伯来语(以色列)
hi 印地语
hi-IN 印地语(印度)
hu 匈牙利语
hu-HU 匈牙利语(匈牙利)
is 冰岛语
is-IS 冰岛语(冰岛)
id 印度尼西亚语
id-ID 印度尼西亚语(印度尼西亚)
it 意大利语
it-IT 意大利语(意大利)
it-CH 意大利语(瑞士)
ja 日语
ja-JP 日语(日本)
kn 卡纳达语
kn-IN 卡纳达语(印度)
kk 哈萨克语
kk-KZ 哈萨克语(哈萨克斯坦)
kok 贡根语
kok-IN 贡根语(印度)
ko 朝鲜语
ko-KR 朝鲜语(韩国)
ky 吉尔吉斯语
ky-KG 吉尔吉斯语(吉尔吉斯坦)
lv 拉脱维亚语
lv-LV 拉脱维亚语(拉脱维亚)
lt 立陶宛语
lt-LT 立陶宛语(立陶宛)
mk 马其顿语
mk-MK 马其顿语(马其顿,FYROM)
ms 马来语
ms-BN 马来语(文莱达鲁萨兰)
ms-MY 马来语(马来西亚)
mr 马拉地语
mr-IN 马拉地语(印度)
mn 蒙古语
mn-MN 蒙古语(蒙古)
没有 挪威语
nb-NO 挪威语(伯克梅尔,挪威)
nn-NO 挪威语(尼诺斯克,挪威)
pl 波兰语
pl-PL 波兰语(波兰)
pt 葡萄牙语
pt-BR 葡萄牙语(巴西)
pt-PT 葡萄牙语(葡萄牙)
pa 旁遮普语
pa-IN 旁遮普语(印度)
ro 罗马尼亚语
ro-RO 罗马尼亚语(罗马尼亚)
ru 俄语
ru-RU 俄语(俄罗斯)
sa 梵语
sa-IN 梵语(印度)
sr-Cyrl-CS 塞尔维亚语(塞尔维亚,西里尔语)
sr-Latn-CS 塞尔维亚语(塞尔维亚,拉丁语)
sk 斯洛伐克语
sk-SK 斯洛伐克语(斯洛伐克)
sl 斯洛文尼亚语
sl-SI 斯洛文尼亚语(斯洛文尼亚)
es 西班牙语
es-AR 西班牙语(阿根廷)
es-BO 西班牙语(玻利维亚)
es-CL 西班牙语(智利)
es-CO 西班牙语(哥伦比亚)
es-CR 西班牙语(哥斯达黎加)
es-DO 西班牙语(多米尼加共和国)
es-EC 西班牙语(厄瓜多尔)
es-SV 西班牙语(萨尔瓦多)
es-GT 西班牙语(危地马拉)
es-HN 西班牙语(洪都拉斯)
es-MX 西班牙语(墨西哥)
es-NI 西班牙语(尼加拉瓜)
es-PA 西班牙语(巴拿马)
es-PY 西班牙语(巴拉圭)
es-PE 西班牙语(秘鲁)
es-PR 西班牙语(波多黎各)
es-ES 西班牙语(西班牙)
es-ES_tradnl 西班牙语(西班牙,传统排序)
es-UY 西班牙语(乌拉圭)
es-VE 西班牙语(委内瑞拉)
sw 斯瓦希里语
sw-KE 斯瓦希里语(肯尼亚)
sv 瑞典语
sv-FI 瑞典语(芬兰)
sv-SE 瑞典语(瑞典)
syr 叙利亚语
syr-SY 叙利亚语(叙利亚)
ta 泰米尔语
ta-IN 泰米尔语(印度)
tt 鞑靼语
tt-RU 鞑靼语(俄罗斯)
te 泰卢固语
te-IN 泰卢固语(印度)
th 泰语
th-TH 泰语(泰国)
tr 土耳其语
tr-TR 土耳其语(土耳其)
uk 乌克兰语
uk-UA 乌克兰语(乌克兰)
ur 乌尔都语
ur-PK 乌尔都语(巴基斯坦)
uz 乌兹别克语
uz-Cyrl-UZ 乌兹别克语(乌兹别克斯坦,西里尔语)
uz-Latn-UZ 乌兹别克语(乌兹别克斯坦,拉丁语)
vi 越南语
vi-VN 越南语(越南)
相关推荐
mrchip21 小时前
Simple WPF: WPF 实现按钮的长按,短按功能
c#·wpf·.net core
mrchip1 天前
Simple WPF: WPF 自定义按钮外形
c#·wpf
martian6652 天前
学懂C#编程:WPF应用开发系列——WPF之ComboBox控件的详细用法
开发语言·c#·wpf·控件·combobox
K哥爬虫2 天前
【0基础学爬虫】爬虫框架之 feapder 的使用
爬虫·wpf
云草桑3 天前
WPF UI 界面布局 魔术棒 文字笔记识别 技能提升 布局功能扩展与自定义 继承Panel的对象,测量与排列 系列七
ui·wpf·设计·布局·版式设计
罗迪尼亚的熔岩3 天前
使用附加属性 实现wpf中的passwordBox 的明文/密文密码切换
wpf·状态模式
小海聊工控上位机3 天前
WPF资源的使用
c#·wpf
无熵~3 天前
C#/WPF 自制白板工具
开发语言·c#·wpf
mingupup3 天前
WPF在.NET9中的重大更新:Windows 11 主题
windows·.net·wpf
小海聊工控上位机4 天前
WPF自定义模板--TreeView 实现菜单连接线
wpf