【问题标题】:Including multiple language js files to PHP files将多语言js文件包含到PHP文件中
【发布时间】:2012-06-17 18:34:32
【问题描述】:

只需要朝着正确的方向推进。

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

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

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

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

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

myjs_fr.js

myjs_nl.js

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

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

感谢您的帮助!

【问题讨论】:

    标签: php javascript multilingual


    【解决方案1】:

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

    根据文档:

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

    • API 不一致:没有针对不同源格式的单一 API。比如gettext的使用就很复杂了。

    • PHP 仅支持 gettext 和原生数组:PHP 本身仅支持数组或 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 能够检测和集成多个源文件,并根据目录或文件名额外检测要使用的语言环境。”

    【讨论】:

    • 感谢 Cillosis 的帮助。不幸的是,我对开始使用这个组件的项目太远了。该项目已经完成,我只是希望包含 .JS 文件而不是插入每个页面。不过,我将在我的下一个项目中开始使用这个组件。
    • 也许像模板引擎这样的东西会更好。它允许您在 javascript 中使用 PHP 变量并输出必要的文件。相关:stackoverflow.com/questions/6004060/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2013-05-25
    • 2013-12-04
    • 1970-01-01
    相关资源
    最近更新 更多