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

本文介绍了如何在YLAD中配置多语言支持,并通过修改代码区分中文简体(zh-CN)与繁体(zh-TW)。通过分析ISO639-1标准和CultureInfo类,提供了将语言代码从ISO2Letter转换为完整CultureInfo代码的方法,以实现更精确的语言识别。

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

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

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

LanguageCode
AbkhazianAB
AfarAA
AfrikaansAF
AlbanianSQ
AmharicAM
ArabicAR
ArmenianHY
AssameseAS
AymaraAY
AzerbaijaniAZ
BashkirBA
BasqueEU
Bengali, BanglaBN
BhutaniDZ
BihariBH
BislamaBI
BretonBR
BulgarianBG
BurmeseMY
ByelorussianBE
CambodianKM
CatalanCA
ChineseZH
CorsicanCO
CroatianHR
CzechCS
DanishDA
DutchNL
English, AmericanEN
EsperantoEO
EstonianET
FaeroeseFO
FijiFJ
FinnishFI
FrenchFR
FrisianFY
Gaelic (Scots Gaelic)GD
GalicianGL
GeorgianKA
GermanDE
GreekEL
GreenlandicKL
GuaraniGN
GujaratiGU
HausaHA
HebrewIW
HindiHI
HungarianHU
IcelandicIS
IndonesianIN
InterlinguaIA
InterlingueIE
InupiakIK
IrishGA
ItalianIT
JapaneseJA
JavaneseJW
KannadaKN
KashmiriKS
KazakhKK
KinyarwandaRW
KirghizKY
KirundiRN
KoreanKO
KurdishKU
LaothianLO
LatinLA
Latvian, LettishLV
LingalaLN
LithuanianLT
MacedonianMK
MalagasyMG
MalayMS
MalayalamML
MalteseMT
MaoriMI
MarathiMR
MoldavianMO
MongolianMN
NauruNA
NepaliNE
NorwegianNO
OccitanOC
OriyaOR
Oromo, AfanOM
Pashto, PushtoPS
PersianFA
PolishPL
PortuguesePT
PunjabiPA
QuechuaQU
Rhaeto-RomanceRM
RomanianRO
RussianRU
SamoanSM
SangroSG
SanskritSA
SerbianSR
Serbo-CroatianSH
SesothoST
SetswanaTN
ShonaSN
SindhiSD
SinghaleseSI
SiswatiSS
SlovakSK
SlovenianSL
SomaliSO
SpanishES
SudaneseSU
SwahiliSW
SwedishSV
TagalogTL
TajikTG
TamilTA
TatarTT
TeguluTE
ThaiTH
TibetanBO
TigrinyaTI
TongaTO
TsongaTS
TurkishTR
TurkmenTK
TwiTW
UkrainianUK
UrduUR
UzbekUZ
VietnameseVI
VolapukVO
WelshCY
WolofWO
XhosaXH
YiddishJI
YorubaYO
ZuluZU

但在实际应用中,完整的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,则可以根据需要设置不同的配置文件。这样就比较灵活了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值