693579551 发表于 2015-5-13 11:26:29

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]
查看完整版本: Windows Phone 7的About模板——Your Last About Dialog(2)支持多语言