php - 如何在 JS 中翻译字符串

标签 php javascript jquery zend-framework translation

我有一个项目,我想将 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.jsen_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/

相关文章:

java - PHP 时间戳转 Java 时间戳

PHPUnit 检查方法返回类型

javascript - jQuery toggleClass 不切换类

javascript - 使用 SPServices 从另一个域上的 Sharepoint 获取总列​​表项

jquery - IE 的动态宽度解决方法

javascript - symfony 中 PHP 文件的路径

javascript - 如何使滚动列表中的项目可点击?

javascript - PUG:无法将对象传递到脚本中

jquery - 如何使用 Jquery 使下划线淡入? (背景图像?)

php - 长时间 sleep 后更新不起作用