【问题标题】:No translation for the language - Works on development server but not in production该语言没有翻译 - 在开发服务器上工作,但在生产中不工作
【发布时间】:2011-04-13 22:37:57
【问题描述】:

虽然开发服务器上的翻译工作正常,但我们在生产服务器上收到以下通知:语言“fr”没有可用的翻译。

这是引导程序中的翻译配置(强制测试区域设置):

$locale = "fr_CA.utf8";
$translate = new Zend_Translate( 
    array(
        'adapter'=>'gettext', 
        'content' => APPLICATION_PATH . '/lang',
        'locale' => $locale,
        'scan' => Zend_Translate::LOCALE_DIRECTORY, 
        'disableNotices' => false,
        'clear' =>true,
        'reload'=>true,
    )
);

.mo 文件位于 APPLICATION_PATH/lang/fr_CA.utf8/LC_MESSAGES/messages.mo

.mo 文件中有翻译的字符串,并且两个服务器上都存在语言环境,根据“locale -a”。

任何关于为什么这样的设置可以在一台服务器上运行而不是另一台服务器的线索?

编辑:

我让它与以下配置一起工作:

        $translate = new Zend_Translate( 
        array(
            'adapter'=>'gettext', 
            'content' => APPLICATION_PATH.'/lang/'.$locale.'/LC_MESSAGES/messages.mo',
            'locale' => $locale,
            'disableNotices' => true,
            'clear' =>true,
            'reload'=>true,
        )
    );

扫描似乎无法正常工作。

【问题讨论】:

    标签: zend-framework zend-translate


    【解决方案1】:

    我遇到了类似的问题(使用数组适配器)

    原因:生产站点webroot路径包含隐藏目录 /home/.sites/path/to/my/webroot/

    // Settings:
    $locale = new Zend_Locale('browser');
    $language = $locale->getLanguage();
    
    // Solution: added option 'ignore'  => '===' to override
    // default $_options settings in Zend_Translate_Adapter
    
    $translate = new Zend_Translate(array(
        'adapter' => 'array',
        'content' => APPLICATION_PATH . '/languages/' . $language,
        'scan'    => Zend_Translate::LOCALE_DIRECTORY,
        'locale'  => $locale,
        'ignore'  => '===',        // override default '.'
    
    ));
    

    【讨论】:

      【解决方案2】:

      我有类似的问题,但使用 application.ini 配置翻译。

      这些是 Zend_Translate 相关的行:

      resources.translate.adapter = "gettext"
      resources.translate.content = APPLICATION_PATH "/languages"
      resources.translate.options.scan = 'directory'
      

      这在我们的开发服务器上运行良好,但在我们的暂存服务器上却不行。我们必须从扫描选项中删除引号:

      resources.translate.options.scan = directory
      

      没有引号它工作。但我不知道为什么这个特定的配置行无法处理我们登台服务器上的引号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-11
        • 2016-11-05
        • 1970-01-01
        • 1970-01-01
        • 2011-03-02
        • 1970-01-01
        • 2021-12-28
        • 1970-01-01
        相关资源
        最近更新 更多