这需要一个正确的方向。
我正在使用PHP和JavaScript构建一个多语言网站。当使用javascript(AJAX)向数据库发送注释/消息时,我需要向用户显示成功或错误消息。由于使用了3种不同的语言,我在每个页面上编写代码,使用代码并使用PHP语言变量来翻译成功/错误消息。
一切正常,但当用户查看页面的来源时,他会看到我在网站上用于不同内容的一长串功能。
我想将所有内容都包含在JS文件中:
但是PHP语言变量不起作用。
我现在唯一想到的是使用不同的语言制作不同的JS文件: myjs_en.js
myjs_fr.js
myjs_nl.js
检查用户选择的语言,包括3个文件中的一个。
或者我可以使用其他选项吗?
感谢您的帮助!
答案 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能够检测和集成多个源文件,并根据目录或文件名另外检测要使用的语言环境。“