只需向正确的方向推动即可。

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

一切正常,但是当用户查看页面源代码时,他会在网站上看到一长串我用于其他用途的功能。

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


但是,PHP语言变量将无法工作。

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

myjs_fr.js

myjs_nl.js

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

还是我可以使用其他选项?

谢谢您的帮助!

最佳答案

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

根据文档:

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


API不一致:对于不同的源格式,没有单一的API。例如,gettext的用法非常复杂。
PHP仅支持gettext和本机数组: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能够检测和集成多个源文件,并根据目录或文件名另外检测要使用的语言环境。”

07-24 09:54
查看更多