Windows Phone 7的About模板——Your Last About Dialog(2)支持多语言

上次说到YLAD支持多语言。昨天配置了一下。方法很简单,默认的配置文件是Data.xml,如果要支持多语言,则加上语言的代码后缀即可,如中文为zh,则添加一个Data.zh.xml即可。

显示多语言的流程如下图:

YLAD会读取当前设置的语言代码,这个ISO 2 Letter Language Codes是 ISO 639-1标准制定的,用两个字符表示一种语言。完整的代码列表如下:

LanguageCode
Abkhazian AB
Afar AA
Afrikaans AF
Albanian SQ
Amharic AM
Arabic AR
Armenian HY
Assamese AS
Aymara AY
Azerbaijani AZ
Bashkir BA
Basque EU
Bengali, Bangla BN
Bhutani DZ
Bihari BH
Bislama BI
Breton BR
Bulgarian BG
Burmese MY
Byelorussian BE
Cambodian KM
Catalan CA
Chinese ZH
Corsican CO
Croatian HR
Czech CS
Danish DA
Dutch NL
English, American EN
Esperanto EO
Estonian ET
Faeroese FO
Fiji FJ
Finnish FI
French FR
Frisian FY
Gaelic (Scots Gaelic) GD
Galician GL
Georgian KA
German DE
Greek EL
Greenlandic KL
Guarani GN
Gujarati GU
Hausa HA
Hebrew IW
Hindi HI
Hungarian HU
Icelandic IS
Indonesian IN
Interlingua IA
Interlingue IE
Inupiak IK
Irish GA
Italian IT
Japanese JA
Javanese JW
Kannada KN
Kashmiri KS
Kazakh KK
Kinyarwanda RW
Kirghiz KY
Kirundi RN
Korean KO
Kurdish KU
Laothian LO
Latin LA
Latvian, Lettish LV
Lingala LN
Lithuanian LT
Macedonian MK
Malagasy MG
Malay MS
Malayalam ML
Maltese MT
Maori MI
Marathi MR
Moldavian MO
Mongolian MN
Nauru NA
Nepali NE
Norwegian NO
Occitan OC
Oriya OR
Oromo, Afan OM
Pashto, Pushto PS
Persian FA
Polish PL
Portuguese PT
Punjabi PA
Quechua QU
Rhaeto-Romance RM
Romanian RO
Russian RU
Samoan SM
Sangro SG
Sanskrit SA
Serbian SR
Serbo-Croatian SH
Sesotho ST
Setswana TN
Shona SN
Sindhi SD
Singhalese SI
Siswati SS
Slovak SK
Slovenian SL
Somali SO
Spanish ES
Sudanese SU
Swahili SW
Swedish SV
Tagalog TL
Tajik TG
Tamil TA
Tatar TT
Tegulu TE
Thai TH
Tibetan BO
Tigrinya TI
Tonga TO
Tsonga TS
Turkish TR
Turkmen TK
Twi TW
Ukrainian UK
Urdu UR
Uzbek UZ
Vietnamese VI
Volapuk VO
Welsh CY
Wolof WO
Xhosa XH
Yiddish JI
Yoruba YO
Zulu ZU

但在实际应用中,完整的country/region code和CultureInfo类里是这样表示的:zh-CN、zh-TW……等,中文就有好几种,如何区分简体中文和繁体中文呢?

下载了YLAD的源代码看,找到了读取语言设置的代码,在LocalizationHelper.cs里:

var language = culture.TwoLetterISOLanguageName; 

是在这里读取的,既然我们想要完整的CultureInfo代码,可作如下修改:

var language = culture.Name;

重新编译,更新引用,就可以区分zh-CN和zh-TW了。相应的配置文件要改为Data.zh-CN.xml和Data.zh-TW.xml。

我在codeplex的项目讨论中提到了这个问题,作者说会做如下修改:

首先读取当前country/region设置,即我修改的方式;如果没有本地化的country/region代码,则读取当然的语言代码,即YLAD目前的方式,如果没有找到本地化的语言代码,则使用默认设置。

他提到这样做的原因是某些country/region的区别可能很小或几乎没有,比如de-AT和de-DE,这样设置一个Data.de.xml即可,如果某些country/region的区别较大,如zh-CN和zh-TW,则可以根据需要设置不同的配置文件。这样就比较灵活了。


posted @ 2011-12-28 10:01  yan_xiaodi  阅读(855)  评论(0编辑  收藏  举报