我有一个项目,我想将其翻译成多种语言的PHP部分我使用Zend Frameworks Zend_Translate和GetText。现在我也要翻译JS部分。
我正在使用jQuery JS Framework,并希望听到您对JS文件的翻译的想法
答案 0 :(得分:12)
我已成功使用GetText在三个项目中翻译JavaScript文件。
当然,GetText本身不支持JavaScript,JavaScript也不支持GetText。我的解决方案如下:
gettext("your text here")
环绕可翻译字符串。xgettext
来生成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
可能只包含以下内容:
function gettext(string) {
return string;
}
对于ngettext()
来说有点棘手,但你应该得到一般的想法。
最棒的是我可以使用已有的所有gettext工具。特别是当我在PHP和JavaScript中都有可翻译的文本时 - 我可以使用相同的工具来翻译它们,并确保在JavaScript和PHP中以相同的方式翻译相同的字符串。
注意:如果您没有使用JavaScript密集型网络应用,那么在首先使用JavaScript创建网页内容之前,您应该三思而后行。
答案 1 :(得分:2)
答案 2 :(得分:2)
您可能也对此感兴趣:a gettext plugin for jQuery。
答案 3 :(得分:1)
好吧,你可以扩展字符串以给它们一个翻译函数,它在一个语言环境中查找接收者。
您可以这样使用它:
警告(“您最喜欢的语言是英语!”。翻译());
你会得到一个警告“tu idiom prefiero es Espanol”,或其他什么
尼科
答案 4 :(得分:0)
http://plugins.jquery.com/project/jquery-localize发现了这个,并且对于letmegooglethatforyou.com也使用了http://plugins.jquery.com/project/l10n哪个更好?
答案 5 :(得分:0)
我有一个PHP网页,也有多种语言版本。我在PHP中编写了自己的语言类,在本地化JavaScript文件时,我只是将服务器配置为以PHP的形式执行.js文件,并使用我的PHP类来翻译JavaScript字符串。
这样的事情:
alert ( '<?php echo $l->Get ( 'MyString' ); ?>' );
我只是在每个JavaScript文件的开头都包含一个初始化“$ l”的文件。我对此没有任何问题。
答案 6 :(得分:0)
// 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 "));