文档章节

国际化i18N与本地化Locale,以及CLDR

一配
 一配
发布于 2015/05/26 15:22
字数 1059
阅读 112
收藏 0

习惯上,internationalization(国际化)简写为i18N,中间的数字为省略的字母个数。i18N是指设计一种应用软件的过程,这种软件无需做大的工程改变就能适应不同的语言和地区的需要。 对 Web 应用来说,国际化尤为重要,因为潜在的用户可能来自世界的各个角落。


在i18N中用到的最多的可能就是翻译了,包括信息翻译 和 视图翻译。 前者将一条文本信息翻译为期望的语言,后者将整个文件翻译为期望的语言。一个翻译请求包含要被翻译的对象,对象所用的源语言,和对象所需要翻译到的目标语言。 

信息翻译

信息翻译是指将信息从 源语言 翻译为 目标语言

有如下几种信息源:

  • (1) 信息的翻译存储在一个 PHP 的 键值对 数组中。 原始信息为键,翻译后的信息为值。每个数组表示一个特定信息分类的翻译,分别存储在不同的 PHP 脚本文件中,文件名即分类名。 针对同一种语言的 PHP 翻译文件存储在同一个以区域 ID 命名的目录中。而所有的这些目录位于 basePath 指定的目录中。

  • (2) 信息的翻译存储在 GNU Gettext 文件中。

  • (3) 信息的翻译存储在数据库的表中。


在 Linux 系统中,通过定义一组环境变量来设置程序的语言环境,以实现对i18N的支持,这种机制称为:locale(本地化)。

i18n的国际组织是 Openi18n 组织,其前身是 li18nux 组织。它原来是制定GNU/Linux 自由操作系统上软件全球化标准的国际计划,后来扩充到GNU/Linux 之外所有开放源代码的技术领域,因而更名为 Open Internationalization Initiative,由非营利组织 Free Standards Group 赞助,并为世界各大厂商所支持,对于GNU/Linux 系统上的多国语言文字处理技术和环境有决定性的影响。各个开源软件开发组织通常都有负责“国际化”和“本地化”工作的分支机构。

i18n 主要使用 Gettext 软件包使软件实现国际化支持。事实上它是一整套 i18n解决方案。现在开源程序中普遍通过分离语言文件 ,然后通过 Gettext 软件包来实现国际化发展。


以下内容摘自【1】:

如果我比别人看得更远,那是因为我站在巨人的肩上。    ——艾萨克 牛顿


我们所有的生产力都要归功于标准库。

一个设计良好的标准库不仅提供了最常用的编程结构的实现,同时它们也用一种良好的方式澄清了那些结构的概念。当一个标准库与已存在的(甚至是内部的)约定背道而驰时,事情往往就开始变得糟糕了。

标准库就应该实现标准。

当我们说技术变得很直观,通常意思是说他们是很常见的技术。当我们要构建任何新标准库时,都应该建立在IETF、ISO和其它地方定义的标准之上。

苹果MacOS上Cocoa和其他标准库不同的地方就在于在Cocoa中可以用NSLocale和NSCalendar来编码一些特定的信息,但是这大多数都归功于Unicode通用区域数据库Unicode Common Locale Data Repository (CLDR).

jQuery也提供了自己的i18N库:Globalize 1.0, 该软件也是基于CLDR,详见[4]。


参考资料:

[1] Mattt Thompson:Cocoa之死, http://www.cocoachina.com/swift/20150107/10858.html

[2] Locale Coverage, http://www.unicode.org/cldr/charts/latest/supplemental/locale_coverage.html

Code

English

 Name

Native 

Name

Script

CLDR

 target

Sublocales

Confirmed

 Fields

Modern%
en English          English Latn modern 93 10,829 100%
zh Chinese 中文 Hans modern 4 13,755 99%
zh_Hant

Traditional

 Chinese

繁體中文 Hant modern 0 13,969 99%

[3] Yii 权威指南-国际化,http://www.howzhi.com/course/2519/lesson/35397

[4] Announcing Globalize 1.0, http://blog.jquery.com/2015/04/23/announcing-globalize-1-0/










© 著作权归作者所有

共有 人打赏支持
一配
粉丝 34
博文 137
码字总数 94295
作品 0
西城
私信 提问
主题:学习Spring必学的Java基础知识(8)----国际化信息

引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”。以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些Jav...

again-Y
2014/11/25
0
0
Java中的资源国际化

1.资源国际化中两个常用术语 I18N 与 L10N I18N:全称Internationlization,首字母I 与尾字母N之间共18个字母。资源国家化就是让一个软件产品使用国际环境,如语言,文化,使用习惯等; L10N...

YuanyuanL
2016/02/26
45
0
AngularJs学习笔记--I18n/L10n

一、I18n and L10n in AngularJS 1. 什么是I18n和L10n?   国际化(Internationalization),简称I18n,是让产品开发在一个他们可以简单地对产品进行语言、文化的本地化的方法的规范。本地化...

武文海
2015/02/06
0
0
Rails 多语言支持

一、Rails I18n(国际化) Rails在 2.2 版本以后已经把 I18n 模块引入了 Rails 框架,以前的多语言支持大都采用 localization 插件完成的。在 Rails 2.2 版本后,我们只需要在配置文件中开启 ...

齐薄云天
2010/04/08
274
0
浅析 Linux 的国际化与本地化机制

Linux 是一个国际化的操作系统,它的工具集和设备驱动程序均支持多语言操作。本文通过分析 glibc 中实现国际化和本地化机制的函数和命令工具集以及从程序开发者、翻译者和用户等多角度浅析国...

红薯
2009/12/24
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

3.系统和内存架构

在设计程序或并发系统时,需要考虑不同的系统和内存架构风格。 支持并发的计算机系统体系结构 1972年,迈克尔弗林(Michael Flynn)给出了用于分类不同风格计算机系统体系结构的分类法。 该分类...

Eappo_Geng
21分钟前
4
0
今天的学习

1,getimagesize:获得目标图像的大小 2,image_type_to_extension:获得目标文件的后缀信息 3,imagealphablending:设定目标图像混色的模式 4,imagechar:水平的画出一个字符 5,imagecharup...

墨冥
24分钟前
1
0
Java线程中yield与join方法的区别

长期以来,多线程问题颇为受到面试官的青睐。虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用。...

飓风2000
48分钟前
4
0
Python的 is 和 == 弄懂了吗?

在Python中一切都是对象。 Python中对象包含的三个基本要素,分别是: id(身份标识) type(数据类型) value(值) 对象之间比较是否相等可以用 == ,也可以用 is 。 is 和 == 都是对对象进行比较...

上海小胖
48分钟前
2
0
angularJS 路由加载js controller 未定义 解决方案

说明 本文主要说明,在angularJS框架使用中,angularJS 路由加载js controller 未定义 解决方案。 路由 $routeProvider 异步加载js 路由的基本用法,请查看官方文档,下面实例只说明,懒加载...

DrChenXX
56分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部