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 | 越南语(越南) |