我有一个项目需要翻译成多种语言,对于 PHP 部分,我使用了 Zend Frameworks 的 Zend_Translate 与 GetText 进行翻译。现在我也想翻译 JS 部分。
我使用的是 jQuery JS 框架,希望听听您对于 JS 文件翻译方面的想法。
我有一个项目需要翻译成多种语言,对于 PHP 部分,我使用了 Zend Frameworks 的 Zend_Translate 与 GetText 进行翻译。现在我也想翻译 JS 部分。
我使用的是 jQuery JS 框架,希望听听您对于 JS 文件翻译方面的想法。
我已经在三个项目中成功使用GetText来翻译JavaScript文件。
当然,GetText本身不支持JavaScript,而JavaScript也不支持GetText。我的解决方案如下:
gettext("你的文字在这里")
来包围可翻译的字符串。xgettext
对生成的C文件和项目中的任何其他文件进行处理,以生成POT和PO文件。在翻译完PO文件之后,我需要将翻译内容带回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
可能仅包含以下内容:
en_US.js
function gettext(string) {
return string;
}
ngettext()
有点棘手,但你应该能够理解大致意思。好的,您可以将字符串扩展为具有翻译功能,该功能会在语言环境中查找接收器。
使用方法如下:
alert("你最喜欢的语言是英语!".translated());
然后您将得到一个弹出窗口,其中包含“你最喜欢的语言是西班牙语”或其他内容。
尼科
// 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 "));
我有一个 PHP 网页,也存在于多种语言中。我已经在 PHP 中编写了自己的语言类,当需要本地化 JavaScript 文件时,我只需配置服务器将 .js 文件作为 PHP 执行,并使用我的 PHP 类来翻译 JavaScript 字符串。
就像这样:
alert ( '<?php echo $l->Get ( 'MyString' ); ?>' );
我只是在每个JavaScript文件的开头包含一个初始化"$l"的文件。我对此没有任何问题。
http://plugins.jquery.com/project/jquery-localize 发现了这个,它被用于和为letmegooglethatforyou.com服务,还发现了http://plugins.jquery.com/project/l10n 哪一个更好?