I18N 国际化 简介

2019-03-17 22:39|来源: 网路

软件的国际化:

软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。
国际化(internationalization)又称为 i18n(读法为i 18 n,据说是因为internationalization(国际化)这个单词从i到n之间有18个英文字母,i18n的名字由此而来)


软件实现国际化,需具备以下两个特征:

  1、对于程序中固定使用的文本元素,例如菜单栏、导航条等中使用的文本元素、或错误提示信息,状态信息等,需要根据来访者的地区和国家,选择不同语言的文本为之服务
  2、对于程序动态产生的数据,例如(日期,货币等),软件应能根据当前所在的国家或地区的文化习惯进行显示


程序的固定文本、日期和货币符合来访者的阅读习惯,所以要使用到国际化(Internationalization)。

I18N、L10N、M17N的异同
I18N(Internationalization):支持多种语言,但是同一时间只能是英文和一种选定的语言,例如英文+中文、英文+德文、英文+韩文等等;

L10N(localization):支持2种语言,英文和另外一种语言(例如中文);

M17N(multilingualization):可以在同一时间支持多种语言,例如你可以在一个页面里看到中文、英文、德文和韩文。


国际化主要包括:
   固定文本的国际化
   期和时间的格式化
   数字:货币的格式化
   占位符国际化
   使用JSTL 中的 fmt 标签实现国际化


查看当前操作系统中可用的语言,通过地区和语言实现国际化配置文件,如
msg_zh_CN.properties
@Test
public void testLocale(){
    Locale[] locales=Locale.getAvailableLocales();
    for(Locale locale : locales){
        System.out.println(locale.getDisplayCountry()+":"+locale.getLanguage()+":"+locale.getCountry());
    }
}


::
阿拉伯联合酋长国:ar:AE
约旦:ar:JO
叙利亚:ar:SY
克罗地亚:hr:HR
比利时:fr:BE
巴拿马:es:PA
马耳他:mt:MT
委内瑞拉:es:VE
:bg:
台湾地区:zh:TW
:it:
:ko:
:uk:
:lv:
丹麦:da:DK
波多黎哥:es:PR
越南:vi:VN
美国:en:US
黑山:sr:ME
瑞典:sv:SE
玻利维亚:es:BO
新加坡:en:SG
巴林:ar:BH
:pt:
沙特阿拉伯:ar:SA
:sk:
也门:ar:YE
印度:hi:IN
:ga:
马耳他:en:MT
芬兰:fi:FI
:et:
:sv:
:cs:
波斯尼亚和黑山共和国:sr:BA
:el:
乌克兰:uk:UA
:hu:
瑞士:fr:CH
:in:
阿根廷:es:AR
埃及:ar:EG
日本:ja:JP
萨尔瓦多:es:SV
巴西:pt:BR
:be:
冰岛:is:IS
捷克共和国:cs:CZ
:es:
波兰:pl:PL
:tr:
西班牙:ca:ES
塞尔维亚及黑山:sr:CS
马来西亚:ms:MY
:hr:
:lt:
西班牙:es:ES
哥伦比亚:es:CO
保加利亚:bg:BG
:sq:
:fr:
:ja:
波斯尼亚和黑山共和国:sr:BA
:is:
巴拉圭:es:PY
:de:
厄瓜多尔:es:EC
美国:es:US
苏丹:ar:SD
:en:
罗马尼亚:ro:RO
菲律宾:en:PH
:ca:
突尼斯:ar:TN
黑山:sr:ME
危地马拉:es:GT
:sl:
韩国:ko:KR
塞浦路斯:el:CY
墨西哥:es:MX
俄罗斯:ru:RU
洪都拉斯:es:HN
香港:zh:HK
挪威:no:NO
匈牙利:hu:HU
泰国:th:TH
伊拉克:ar:IQ
智利:es:CL
:fi:
摩洛哥:ar:MA
爱尔兰:ga:IE
:mk:
土耳其:tr:TR
爱沙尼亚:et:EE
卡塔尔:ar:QA
:sr:
葡萄牙:pt:PT
卢森堡:fr:LU
阿曼:ar:OM
:th:
阿尔巴尼亚:sq:AL
多米尼加共和国:es:DO
古巴:es:CU
:ar:
:ru:
新西兰:en:NZ
塞尔维亚:sr:RS
瑞士:de:CH
乌拉圭:es:UY
:ms:
希腊:el:GR
以色列:iw:IL
南非:en:ZA
泰国:th:TH
:hi:
法国:fr:FR
奥地利:de:AT
:nl:
挪威:no:NO
澳大利亚:en:AU
:vi:
荷兰:nl:NL
加拿大:fr:CA
拉脱维亚:lv:LV
卢森堡:de:LU
哥斯达黎加:es:CR
科威特:ar:KW
:sr:
利比亚:ar:LY
:mt:
瑞士:it:CH
:da:
德国:de:DE
阿尔及利亚:ar:DZ
斯洛伐克:sk:SK
立陶宛:lt:LT
意大利:it:IT
爱尔兰:en:IE
新加坡:zh:SG
:ro:
加拿大:en:CA
比利时:nl:BE
:no:
:pl:
中国:zh:CN
日本:ja:JP
希腊:de:GR
塞尔维亚:sr:RS
:iw:
印度:en:IN
黎巴嫩:ar:LB
尼加拉瓜:es:NI
:zh:
马其顿王国:mk:MK
白俄罗斯:be:BY
斯洛文尼亚:sl:SI
秘鲁:es:PE
印度尼西亚:in:ID
英国:en:GB


相关问答

更多
  • 只能用最老土的办法了,中文的做一个模板,英文的做一个模板
  • 在src下建一个struts.properties文件,在文件中设定国际化文件路径 struts.custom.i18n.resources=路径+globalMessages (如果国际化文件名为:globalMessages_zh.properties) 试试看
  • 你为什么不尝试使用i18n_routing宝石? https://github.com/kwi/i18n_routing 也很容易翻译动作的名称。 Why don't you try to use the i18n_routing gem? https://github.com/kwi/i18n_routing It's easy to translate also the name of the action.
  • 官方的i18n angular2将在最终发布之前的rc版本中实现。 它也会比目前的解决方案更先进。 更多信息i18n的新概念如何在angular2中工作: https://lingohub.com/blog/2015/03/angular-2-i18n-update-ng-conf-2015 更新2016年9月6日: 对国际化的支持现在在Angular 2 RC6中正式发布 官方发布博客: https://angularjs.blogspot.nl/2016/09/angular-2-rc6_1.html ...
  • 我认为我的道路不正确。 我相信额外的斜线是错误的...我从LOCALE_PATH删除/ translations /它现在正在工作。 LOCALE_PATHS = [ os.path.join(BASE_DIR, 'locale'), ] 然后我跑 django-admin compilemessages -l pt_BR 修改* .po生成并运行 django-admin compilemessages -l pt_BR 我还将en-us重命名为en LANGUAGE_CODE = 'en- ...
  • 实际上,Grails脚本中存在一个错误。 打包时,Grails将只复制文件夹/ grails-app / i18n下的.properties文件。 您的XML文件将被忽略。 要修复它,您可以手动编辑文件{grails-sources} /scripts/_GrailsPackage.groovy 。 寻找: if(config.grails.enable.native2ascii) { profile("converting native message bundles to ascii") { ...
  • 这可能是你必须自己创造的东西,但它不应该太难。 使用withMessage()分配错误消息时,您可以发送多个字符串。 例如,您可以发送一个对象。 因此,您可以将对于所有语言的错误消息放入对象中,以发生特定错误。 这里是一个例子: 路线 : const countValidation = require('./count.validation'); router .route('/blogposts') .get( countValidation.count, blogpostCon ...
  • 我发现你可以通过在你的语言环境文件中添加如下内容来实现这一点: en: user: level: '0': 'Admin' '1': 'Editor' '2': 'Contributer' 然后在一个视图中: <%= f.select :level, (0..2).to_a.map { |level| [t(level, :scope => 'user.level'), level] } %> 可能有更好的方法,但这似乎对我有用! I found you ...
  • 看来你正在使用W20框架作为应用程序的前端。 如果是这样,本框架(在角度CultureService中)提供了一个开箱即用的本地化函数 。 此功能应该能够在GUI中翻译您的消息。 请务必在角度模块/控制器中添加对“CultureService”的依赖。 It seems you're using W20-framework for the front of your application. If so, a localize function is provided out-of-the-box by t ...
  • 我认为国际化是一个复杂的问题,每一个处理i18n的语言/框架/你都会以不同的方式做到这一点。 所以,我的猜测是没有这样的插件,并且不会在不久的将来。 我发现的唯一一个插件是Eclipse I18N属性文件编辑器 ,它可以解决特定的文件类型,但您可能不需要特别使用此类型。 I believe internationalization is a complex issue, and every language/framework/you-name-it which deals with i18n does i ...