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,则可以根据需要设置不同的配置文件。这样就比较灵活了。
页:
[1]