如何做本地化的JavaScript?

时间:2009-05-28 15:20:16

标签: javascript localization

我有一个使用TONS的javascript的Web应用程序,和往常一样,有很多文本常量会显示给嵌入代码本身的用户。

您认为使这种可本地化的最佳方式是什么? 我知道我需要从代码中取出这些字符串并用常量替换它们,这些常量将被定义到一些外部位置。

对于服务器端,ASP.Net提供了一些非常简洁的功能来处理这个问题 在Javascript中最好的做法是什么?

我最好的想法是拥有一个JS文件,其中包含网站JS的所有字符串常量(我对每种语言都有不同的副本),然后在每个页面上,我都包含这个脚本首先,在所有其他人面前 这似乎是最集中的方式,也浪费了最少的带宽。

还有其他更好的方法吗?

谢谢!

5 个答案:

答案 0 :(得分:2)

你的方法很有意义。详细说明:

我在对象中有每种语言的字符串。

局部= { “猫”: “聊天”, “狗”: “缄”};

然后在代码中:

局部[ “猫”]

键和数组表示法(而不是更常见的对象点表示法)的引用是为了避免与JavaScript保留字冲突。

答案 1 :(得分:2)

这是我们如何做到的(在ASP.net中),几乎与你提到的一致: 1)创建了两个javascript文件:一个定义了站点所需的所有javascript函数/ DOM操作,第二个名为Messages.js:这定义了需要本地化的所有字符串文字,类似于var ALERT_MSG =“Alert message用英语“。

2)创建了不同版本的Messages.js,我们支持的每个语言环境都有一个,并对字符串进行了本地化。本地化的js文件使用messages.locale.js命名约定命名(例如,messages.fr-FR.js)。

3)在“ScriptManager”中包含了js文件,并为Messages.js文件提供了ResourceUICultures:这可以确保在html输出中嵌入正确的本地化文件(如果你没有使用ASP.net,你可以构建通过做一些文化嗅探并包括适当的js文件来实现这个基本功能。

4)Voila!

答案 2 :(得分:1)

有一个gettext library,但我没有使用它。

答案 3 :(得分:1)

你的方法听起来不错。

如果你有很多字符串并且你担心文件的庞大,你可能想要考虑一个脚本,它通过连接代码javascript和locale javascript为每种语言创建一个单独的javascript文件,然后应用像{ {3}}

你会在发布时浪费一些CPU周期,但你会节省一些往返......

答案 4 :(得分:0)

有一个用于本地化JavaScript应用程序的库:https://github.com/wikimedia/jquery.i18n

字符串存储在JSON文件中,几乎所有人都建议,但它还有一些其他功能:

它可以进行参数替换,支持性别(聪明的他/她处理),数字(聪明的复数处理,包括具有多个复数形式的语言),以及某些语言需要的自定义语法规则。

唯一的要求是jQuery。