【问题标题】:Application-wide locales with Gettext and Zend_Translate?使用 Gettext 和 Zend_Translate 的应用程序范围的语言环境?
【发布时间】:2009-12-09 18:29:53
【问题描述】:

我有一个自定义目录,例如/www/phpstuff,它位于我的include_path 中。在这个phpstuff 目录中是一个文件夹i18n。它包含服务器端级别的.mo 文件。

Zend_Translate让你在构造函数的第二个参数中指定目录,我真的做不到

Zend_Translate( 'gettext', 'i18n/', 'en' );

它尝试从调用此脚本的目录中读取,有没有什么技巧可以让我不必明确指定/www/phpstuff/i18n?原因是我正在使用的这个框架将在许多不同的平台上使用,并且在 include_path 中指定目录比在绝对路径中更容易。

我能想到的唯一解决方法是手动读取包含路径,按分隔符拆分,检查是否有任何目录名为“gettext”,然后获取找到的第一个目录的绝对路径并设置它。

【问题讨论】:

    标签: php zend-framework gettext zend-translate


    【解决方案1】:

    您需要在某处定义应用程序路径。如果不想设置绝对路径,则需要设置相对路径。以这个目录结构为例:

    /application/
    /application/i18n/
    /public_html/
    /public_html/index.php
    

    这种情况下的应用程序路径是:

    define('APPLICATION_PATH', '../application');
    

    你可以这样使用它:

    Zend_Translate( 'gettext', APPLICATION_PATH . '/i18n', 'en' );
    

    希望对您有所帮助。

    【讨论】:

    • 是的,但这仍然是特定于应用程序的。如果我想为多个应用程序使用相同的 .mo 文件,我可以更新一个 mo 文件并反映所有应用程序怎么办?
    • 将 i18n 文件夹放在应用程序之外的某个位置并定义它的路径。问题不在于您将 i18n 文件夹放在哪里,而是您在某处定义了特定于应用程序的路径。
    • 我明白你在说什么,但我并没有将 Zend 主要用于这个应用程序 - 只使用 Zend_Translate,而且无论我试图在多个服务器上实现这些,我都做不到只需将 i18n 放在我所有应用程序的父级父目录中,因为有时它的结构不一致......我想这让我别无选择,只能定义一个绝对路径常量并使用它。
    猜你喜欢
    • 2018-08-09
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 2017-11-17
    相关资源
    最近更新 更多