将多语言js文件包含到PHP文件中

时间:2012-06-17 18:34:33

标签: php javascript multilingual

这需要一个正确的方向。

我正在使用PHP和JavaScript构建一个多语言网站。当使用javascript(AJAX)向数据库发送注释/消息时,我需要向用户显示成功或错误消息。由于使用了3​​种不同的语言,我在每个页面上编写代码,使用代码并使用PHP语言变量来翻译成功/错误消息。

一切正常,但当用户查看页面的来源时,他会看到我在网站上用于不同内容的一长串功能。

我想将所有内容都包含在JS文件中:

但是PHP语言变量不起作用。

我现在唯一想到的是使用不同的语言制作不同的JS文件: myjs_en.js

myjs_fr.js

myjs_nl.js

检查用户选择的语言,包括3个文件中的一个。

或者我可以使用其他选项吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您可能最好从服务器端提供语言支持。如果您愿意,Zend_Framework的Zend_Translate组件可以用作独立库。

根据文件:

“在多语言应用程序中,内容必须翻译成多种语言并根据用户的语言显示内容.PHP提供了几种处理此类问题的方法,但PHP解决方案存在一些问题:

  • API不一致:不同的源格式没有单一的API。例如,gettext的使用非常复杂。

  • PHP仅支持gettext和native数组:PHP本身仅提供对array或gettext的支持。所有其他源格式都必须手动编码,因为没有原生支持。

  • 未检测到默认语言:如果不深入了解不同Web浏览器的背景,则无法检测到用户的默认语言。

    Gettext不是线程安全的:PHP的gettext库不是线程安全的,不应该在多线程环境中使用它。这是由于gettext本身的问题,而不是PHP,但它是一个存在的问题。

Zend_Translate没有上述问题。这就是为什么我们建议使用Zend_Translate而不是PHP的本机函数。 Zend_Translate的好处是:

  • 支持多种源格式:Zend_Translate支持多种源格式,包括PHP支持的格式,以及其他格式,包括TMX和CSV文件。

  • 线程安全的gettext:Zend_Translate的gettext读者是线程安全的。在多线程环境中使用它没有问题。

  • 简单且通用的API:Zend_Translate的API非常简单,只需要少量功能。因此它易于学习且易于维护。所有源格式都以相同的方式处理,因此如果源文件的格式从Gettext更改为TMX,则只需更改一行代码即可指定存储适配器。

  • 检测用户的标准语言:Zend_Translate可以检测和使用访问该站点的用户的首选语言。

  • 自动源检测:Zend_Translate能够检测和集成多个源文件,并根据目录或文件名另外检测要使用的语言环境。“