0

私のZend_translateは機能していますが、何らかの理由で英語にしか翻訳されません。私のロケールが手動でオランダ語に設定されている場合でも、英語の翻訳が表示されます。英語のmo/poファイルを削除すると、オランダ語の翻訳が使用されます。

これはブートストラップで設定されます:

    $translate = new Zend_Translate('gettext',
                    APPLICATION_PATH . "/languages/",
                    null,
                    array('scan' => Zend_Translate::LOCALE_DIRECTORY));

    $registry = Zend_Registry::getInstance();
    $registry->set('Zend_Translate', $translate);
    //$translate->setLocale('nl_NL');

言語ディレクトリには、en_US.mo、en_US.po、nl_NL.mo、nl_NL.poがあります。

私は何が間違っているのですか?

4

2 に答える 2

1

ここで私の解決策:このメソッドをbootstrap.phpファイルに追加してください。

protected function _initTranslate()
{
    $locale = new Zend_Locale(Zend_Locale::BROWSER);
    $langcode = $locale->getLanguage();

    $translate = new Zend_Translate(
                                    array(
                                        'adapter' => 'gettext',
                                        'content' => APPLICATION_PATH . "/langs/$langcode/$langcode.mo",
                                        'locale'  => $langcode,
                                    ));

    $registry = Zend_Registry::getInstance();
    $registry->set('Zend_Translate', $translate);
    $translate->setLocale('en');
}

問題について最新情報を入手してください。

さよなら

于 2013-04-27T19:23:34.050 に答える
0

ここで確認できるように、Zend_Translate::LOCALE_DIRECTORY の代わりに Zend_Translate::LOCALE_FILENAME を使用する必要があります。オプション

正しいコードは次のようになります。

$translate = new Zend_Translate('gettext',
                APPLICATION_PATH . "/languages/",
                null,
                array('scan' => Zend_Translate::LOCALE_FILENAME));

$registry = Zend_Registry::getInstance();
$registry->set('Zend_Translate', $translate);
于 2012-09-27T14:34:45.920 に答える