通过gettext库和poedit制作C、C++程序的国际化多语言版本的时候,需要确定Lang目录,然后编辑po文件生成mo文件,以便gettext库可以根据系统语言加载不同的mo文件,达到在界面上自动显示不同语言的便利。比如目录:C:\TestProject\Lang\en_US\LC_MESSAGES\text.mo。
很明显,如果需要支持多个国家的语言,在Lang目录下就需要增加多个国家的语言目录。如en_US就是美国的英语,问题是这个目录名是怎么来的呢?答案是通过gettext定义好的规则,前面是语言的代码,比如en表示English,中间加一个下划线,接着是国家或者地区的代码,我们说都是英文,但是也有美国的,也有英国的,这些就需要通过国家的代码来区分不同地区的语言,这里US就是表示United States。再比如都是中文,有简体中文,也有繁体中文之分,也是通过地区的代码来识别区分的。
按照如上的规则,增加不同国家的语言的时候,就可以通过 语言代码 + 下划线 + 地区代码 来确定需要支持的语言的Lang目录。接着在程序中调用gettext函数,即可动态的根据系统的语言自动的显示不同语言的界面。具体的规则可以参考<<http://www.gnu.org/software/gettext/manual/gettext.pdf>>,该文档中,Language Codes目录下就定义了不同的语言,Country Codes定义了不同的区域编码。结合自己的项目情况,支持各个国家的语言不在话下。
还是列举一些常用的吧, en_US 目录下存放 美国英文,zh_CN表示简体中文,zh_TW 表示繁体中文,es_ES表示西班牙语言,ru_RU表示俄国俄语。
转载请注明原文地址: https://ju.6miu.com/read-2131.html