高级字符串本地化
Advanced string localization
我正在寻找一些帮助(和一些工具)的高级本地化。我使用Node后端,所以我更喜欢JS中的工具/库。
我目前使用本地化为不同语言的属性文件做一些简单的字符串替换。
home_en.properties
page.title=My Site
page.header=Hello %s
home_de.properties
page.title=Meine Seite
page.header=Hallo %s
到目前为止还好…但这里有一些更高级的例子,我正试图解决:
<标题> 倍数我需要能够正确翻译倍数,例如:
您有1条信息
和
您有2条消息
我不希望在我的代码中有逻辑说
if (i == 1) { // use page.messages.singular }
else { // use page.messages.plural }
因为我不相信check属于我的业务逻辑,而且我知道不同的语言对单数/复数的处理不同(即单数包括0)
<标题>多倍数h1> 面提到的一些问题,但现在有多个倍数的组合,例如:您有%d未读消息和%d已读消息
或
<标题>性别h1> 面是我想解决的一个例子:您有%d未读消息和%d已读消息,以及%d私人通知
我爱我的%s
,可能的值为cat, dog, horse
在英语中没有问题,但在德语中,这需要:
home_de.properties
animals.like.male=Ich liebe meinen %s
animals.like.female=Ich liebe meine %s
animals.like.neutral=Ich liebe mein %s
,这会导致不必要的英语条目:
home_en.properties
animals.like.male=I love my %s
animals.like.female=I love my %s
animals.like.neutral=I love my %s
<标题>这是一个冗长的设置,用于下面的问题:
有什么工具/库可以解决像这样的高级字符串本地化?
标题>标题>标题>标题>以下答案适用于一般翻译方法,而不限于特定的本地化框架。然而,为了简单起见,接下来我将选择18来说明这些想法是如何实现的。
倍数(多元化)
一般来说,您所说的"multiple"在很多本地化框架中是一个叫做"pluralization"的概念。
一个复数字符串意味着有一个变量影响字符串的输出内容。
下面的代码显示了带计数变量的字符串如何满足您的需求。(参考:http://i18next.com/pages/sample.html)
那么,你可以创建一个像这样的字符串:
{
"app": {
"new_messgae": "You have __count__ message.",
"new_messgae_plural": "You have __count__ messages."
}
}
多个倍数(多个计数的复数字符串)
处理这类字符串的方法很棘手,但通常我们将具有>1个变量的单个字符串拆分为具有1个变量的两个或多个复数字符串。
性别(string with context)
对于具有特定上下文(例如:性别)的字符串,您可以使用本地化框架中的"context"特性来使其工作。(请访问http://i18next.com/pages/sample.html的"上下文"部分获取信息)
- js中的本地化字符串消息
- 什么's是在Microsoft之间共享本地化ui字符串的规范方法'MVC和Javascript
- 使用 poEdit 在 Jed 本地化的 JS 源文件中查找 gettext 字符串
- 本地化字符串中的 JavaScript 参数
- 在 jQuery timeago.js 中本地化字符串
- Bootbox 4.1.0:如何将本地化字符串(如 Ok、Cancel)传递给 Bootbox 的确认
- L20n.js:本地化动态创建的字符串
- 脚本中字符串的本地化
- 从后端到JavaScript共享本地化字符串
- React js和Laravel本地化字符串
- 在JSP/Servlet和HTML5/JavaScript Web应用程序中使用本地化字符串支持多种语言
- Laravel中的javascript字符串本地化
- 如何将本地化应用于javascript字符串
- 试图将Unix纪元时间转换为UTC本地化日期/时间字符串
- 字符串中每个单词的首字母大写.本地化的问题
- 将本地化字符串转换为javascript中的十进制
- 如何在jQuery mobile中处理字符串本地化
- 高级字符串本地化
- 最简单的方法在javascript中本地化字符串
- 在 angularjs 控制器中本地化字符串属性