关于本地化的一些技巧

栏目: 编程语言 · AngularJS · 发布时间: 8年前

内容简介:关于本地化的一些技巧

在香港工作总是能接触到各种“本地化”的需求,大多数网站至少都会有中英文两个版本,有的还会分简体中文和繁体中文。而在实现本地化的过程中,由于英文与中文的文法、语序等差异,会有很多情况需要处理。

i18n & i10n

一直以来我都混淆使用这两个term,其中i18n是国际化,主要用于世界通用内容的翻译, 使产品无需做大的改变就能够适应不同的语言和地区的需要 ,包括时间、日期、货币等;而i10n是本地化,也就是把网站里其他内容进行翻译。

content key

将需要翻译的位置用 Content Key 占位,在单独的文件里来处理对应的翻译已经成为了本地化的最基本策略。这样做的好处是,1. 保持代码的整洁,无需因为翻译问题不断提交commit,避免污染git history;2. 方便不懂代码的运营人员随时调整翻译内容,而无需增加开发负担。

单复数 pluralization

举个栗子,如果需要翻译“x个苹果”,对应的英文会有单复数形式,遇到这种情况的时候,如果缺乏经验,通常是写 if else , 然后用两个不同的key:

key zh en
webstie.key.apple 个苹果 apple
webstie.key.apples 个苹果 apples

但是template里写太多的if else 容易使得逻辑混乱,也不利于维护,机智的我今天忽然发现angular其实有一个专门的指令来做这个事:

<ng-pluralize count="personCount"
                 when="{'0': 'Nobody is viewing.',
                     'one': '1 person is viewing.',
                     'other': '{} people are viewing.'}">
</ng-pluralize>

这个指令的本质其实跟if else类似,使用了一个hash map来储存对应的翻译,而我们可以利用这个指令,把when的值写到controller里,这样会比较美观 XD

插值 interpolation

有时候我们不得不把一整句话打断成多个部分,比如“step 1 of 5 ”,而对应的中文如果要求翻译成“第1步(共5步)”。这种情况下,如果使用断句的方法来翻译,中文需要有3个key,分别对应

lang part1 part2 part3
en step of
zh 步(共 步)

这样做,不仅不美观,写起来 string + string + string 也非常麻烦,同时代码及翻译文件都增加了维护的难度。

大家应该都有经验,在 console.log 中,可以使用 %s 作为占位符,如果能够使用占位符来进行翻译,以上情况就会简单很多。

Angular原生的 $interpolate 服务,用于编译含有特定标记的字符串, Hello, {{name}}

Compiles a string with markup into an interpolation function

翻译时,大多时候时候都是用 angular-translate ,这个第三方的服务能很好的处理插值,使用的标记是两个花括号 {{}}

//基本用法
$translate(translationId[, interpolateParams], interpolationId, defaultTranslationText, forceLanguage);

//例子
$scope.stepInfoText = $filter('translate')('widget-progress-bar.step.text', {currentStep:1, totalStep: 5});

//翻译文件 *.properties
widget-progress-bar.step.text=step {{currentStep}} of {{totalStep}}
//output: step 1 of 5

以上所述就是小编给大家介绍的《关于本地化的一些技巧》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

理想主义者

理想主义者

[美] 贾斯汀·彼得斯 / 程静、柳筠 / 重庆出版社 / 2018-5-15 / 49.80元

2013年1月11日,年仅26岁的黑客亚伦·斯沃茨自杀身亡,此事在美国引起轩然大波。这不仅是因为在互联网领域,斯沃茨是一个可以与比尔·盖茨、马克·扎克伯格、理查德·斯托曼等齐名的人,更是因为此事揭露了传统世界与互联网世界的规则冲突。 在互联网思维下,信息是明码标价的商品。各种利益方用技术竖起了一道道藩篱,将支付不起费用但渴望用知识改变命运的人隔绝在外。于是,一大批希望改变这种模式的“理想主义......一起来看看 《理想主义者》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具