6

我有一个项目,我想为 PHP 部分翻译成多种语言,我使用 Zend Frameworks Zend_Translate 和 GetText。现在我也想翻译 JS 部分。

我正在使用 jQuery JS 框架,很想听听您对 JS 文件翻译的想法

4

7 回答 7

13

我已经在三个项目中成功地使用 GetText 翻译了 JavaScript 文件。

当然,GetText 本身不支持 JavaScript,JavaScript 也不支持 GetText。我的解决方案如下。

  • 在 JavaScript 中,我用gettext("your text here").
  • 然后我有一个脚本,它从 JavaScript 文件中提取字符串并创建一个 C 文件,因为 gettext 支持 C。
  • 然后我使用xgettext生成的 C 文件和项目中的任何其他文件来生成 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 创建页面内容之前,您应该三思而后行。

于 2009-01-10T20:59:18.313 回答
3

http://24ways.org/2007/javascript-internationalisation

于 2009-01-11T05:53:45.910 回答
3

您可能也会感兴趣:一个用于 jQuery 的 gettext 插件

于 2009-01-11T08:46:10.960 回答
3

好吧,您可以扩展字符串以给它们一个翻译函数,该函数在语言环境中查找接收者。

你会像这样使用它:

alert("你最喜欢的语言是英语!".translated());

并且您会收到“tu idiom prefiero es Espanol”或其他内容的警报

尼可

于 2009-01-11T08:51:46.923 回答
2
// just for some idea 
//var language ="fr_FR";
var language ="sp_SP";

var FRLOCALE = {
  "Hello": "bonjure ",
  "My name is %s": "mo nome oc ",
  "what": "some french thing"
};

var SPLOCALE = {
  "Hello": "Spanish for hello",
  "My name is %s": "spanish for my name is ",
  "what": "qu"
};

function translated(language, string){
    if (language.indexOf("fr") > -1) {
        return FRLOCALE[string] ? FRLOCALE[string] : string;
    } 

    if (language.indexOf("sp") > -1) {
      return SPLOCALE[string] ? SPLOCALE[string] : string;
    }

    return string; 
}

alert(translated(language,"Hello"));

alert(translated(language,"some thing not translated "));
于 2015-04-11T01:34:39.320 回答
0

http://plugins.jquery.com/project/jquery-localize找到了这个,它被 letmegooglethatforyou.com 使用,也找到了这个http://plugins.jquery.com/project/l10n哪个更好?

于 2009-01-10T20:34:21.373 回答
0

我有一个 PHP 网页,它也以多种语言存在。我已经用 PHP 编写了自己的语言类,当涉及到本地化 JavaScript 文件时,我刚刚将服务器配置为也将 .js 文件作为 PHP 执行,并且我使用我的 PHP 类来翻译 JavaScript 字符串。

像这样的东西:

alert ( '<?php echo $l->Get ( 'MyString' ); ?>' );

我只是在每个 JavaScript 文件的开头包含一个初始化“$l”的文件。我对此没有任何问题。

于 2009-01-12T18:14:18.210 回答