我有一个项目,我想将 PHP 部分翻译成多种语言,我使用 Zend Frameworks Zend_Translate 和 GetText。现在我也想翻译JS部分。
我正在使用 jQuery JS 框架,很想听听您对 JS 文件翻译的看法
最佳答案
我已经在三个项目中成功使用 GetText 翻译 JavaScript 文件。
当然GetText本身不支持JavaScript,JavaScript也不支持GetText。我的解决方案如下。
- 在 JavaScript 中,我用
gettext("your text here")
包围可翻译的字符串。 - 然后我有一个脚本可以从 JavaScript 文件中提取字符串并创建一个 C 文件,因为 gettext 支持 C。
- 然后我对生成的 C 文件和项目中的任何其他文件使用
xgettext
来生成 POT 和 PO 文件。
翻译 PO 文件后,我必须将翻译返回到 JavaScript...
- 我再次解析 JavaScript 文件,记住可翻译字符串列表,然后针对每个语言环境:
- 我使用支持 GetText 的语言(在我的例子中是 PHP)翻译所有字符串并输出 JavaScript 文件。
例如,爱沙尼亚语的语言环境文件(例如 et_EE.js
)可能如下所示:
var LOCALE = {
"Hello": "Tere",
"My name is %s": "Minu nimi on %s",
"Enter your credit card number": "Sisesta oma krediitkaardi number"
};
function gettext(string) {
return LOCALE[string] ? LOCALE[string] : string;
}
根据所选的语言环境,您可以包含 et_EE.js
或 en_US.js
或 ...
en_US.js
可能只包含以下内容:
function gettext(string) {
return string;
}
ngettext()
有点棘手,但您应该了解总体思路。
很棒的是我可以使用所有可用的 gettext 工具。特别是当我在 PHP 和 JavaScript 中都有可翻译的文本时 - 我可以使用相同的工具来翻译它们,并确保相同的字符串在 JavaScript 和 PHP 中以相同的方式翻译。
注意:如果您处理的不是 JavaScript 密集型网络应用程序,则在首先使用 JavaScript 创建页面内容之前应该三思。
关于php - 如何在 JS 中翻译字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/431672/