如何在JS中翻译字符串
我有一个项目,我想为PHP部分翻译成多种语言我使用Zend Frameworks Zend_Translate和GetText。 现在我想翻译JS部分。
我正在使用jQuery JS Framework,并希望听到您对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密集型Web应用程序,那么在首先使用JavaScript创建页面内容之前,您应该三思而后行。
您可能也对此感兴趣: jQuery的gettext插件 。
好吧,你可以扩展字符串以给它们一个翻译函数,它在一个语言环境中查找接收者。
你会像这样使用它:
警报(“你最喜欢的语言是英语!”。翻译());
而且你会得到一个警告“tu idiom prefiero es Espanol”,或其他东西
尼科
我有一个PHP网页,也有多种语言版本。 我已经用PHP编写了自己的语言类,在本地化JavaScript文件时,我只是将服务器配置为以PHP的forms执行.js文件,并使用我的PHP类来翻译JavaScript字符串。
像这样的东西:
alert ( 'Get ( 'MyString' ); ?>' );
我只是在每个JavaScript文件的开头都包含一个初始化“$ l”的文件。 我对此没有任何问题。
// 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 "));