JavaScript 中的翻译就像 PHP 中的 gettext 一样?
我在 PHP 代码中使用 gettext,但有一个大问题。我的所有 JavaScript 文件都不受翻译的影响,有人可以告诉我一种简单的方法,可以将所选语言的翻译也转换为 JavaScript。
I am using gettext
in my PHP code, but I have a big problem. All my JavaScript files are not affected by the translation, can somebody tell me an easy way to get the translations in the chosen language into JavaScript as well.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
最简单的方法是让 PHP 文件将
gettext
的翻译写入 JavaScript 变量。js_lang.php:
然后包含它:
我还会推荐此方法与 S.Mark 提到的翻译插件(非常有趣!)结合使用。
您也可以在当前页面的标题中定义字典,而无需包含外部文件,但这样,您就必须在每次页面加载时查找并发送数据 - 完全没有必要,因为字典往往很少更改。
The easiest way is having a PHP file write the translations from
gettext
into JavaScript variables.js_lang.php:
and then include it:
I would also recommend this method in conjunction with the translation plugins S.Mark mentions (which are very interesting!).
You can define the dictionary in the current page's header, too, without including an external file, but that way, you would have to look up and send the data on every page load - quite unnecessary, as a dictionary tends to change very rarely.
我通常以 JavaScript 结构导出翻译:
可以使用以下方式定义页面文本的当前语言:
这可以读取在 JavaScript 中:
然后你可以编写这样的代码:
(可选)
i18n()
或gettext()
函数可以带来一些智能,如果按键则返回默认文本不存在)。例如:I generally export the translations in a JavaScript structure:
The current language of the page texts can be defined using:
<html xml:lang="en" lang="nl">
This can be read in JavaScript:
And then you can write code like this:
Optionally, a
i18n()
orgettext()
function can bring some intelligence, to return the default text if the key does not exist). For example:尝试 jQuery i18n 或 jQuery 本地化
jQuery i18n 的示例,当然您需要从 php 的语言文件生成基于 JSON 的字典
Try, jQuery i18n or jQuery localisation
An example for jQuery i18n, and of course you need to generate JSON based dictionary from language file from php
JSGettext (存档链接)是 GNU gettext 规范的最佳实现。
首先下载 JSGETTEXT 包并包含在您的页面中
/js/Gettext.js
javascript 代码示例
作为参考,请查找以下链接。它工作正常,无需将 .js 文件转换为 .php。
点击此处
JSGettext (archived link) is best implementation of GNU gettext spec.
First download JSGETTEXT package and include in your page
/js/Gettext.js
javascript code for example
For reference find below link. It's working fine without converting .js file to .php.
Click here
如果您改掉在代码中使用字符串文字的坏习惯,您的生活就会变得更加轻松。也就是说,不要
使用
“#some_message_id”是服务器端生成的隐藏 div 或 span。
You can make your life much easier if you get rid of bad habit to use string literals in your code. That is, instead of
use
where "#some_message_id" is a hidden div or span generated on the server side.
作为进一步的提示,有一个名为 po2json 的 Perl 脚本,它将从 .po 文件生成 json。
As a further hint there's a perl script called po2json which will generate json from a .po file.
对于 GNU gettext API 的 JavaScript 实现,这些链接也很有用:
http://tnga.github.io/lib.ijs
http://tnga.github.io/lib.ijs/docs/iJS .Gettext.html
For JavaScript implementation of GNU gettext API these links can be also useful:
http://tnga.github.io/lib.ijs
http://tnga.github.io/lib.ijs/docs/iJS.Gettext.html
这个库似乎是 JavaScript 中 getText 的最佳实现:
http://messageformat.github.io/Jed/
https://github.com/messageformat/Jed
文档中的示例:
This library seems the best implementation of getText in javascript:
http://messageformat.github.io/Jed/
https://github.com/messageformat/Jed
example from the documentation: