0

翻訳は開発サーバーでは正常に機能しますが、本番サーバーでは次の通知が表示されます。言語「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にあります

「locale-a」によると、.moファイルには翻訳された文字列があり、ロケールは両方のサーバーに存在します。

そのようなセットアップが一方のサーバーで機能し、もう一方のサーバーでは機能しない理由についての手がかりはありますか?

編集 :

次の構成で動作するようになりました。

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

スキャンが機能していなかったようです。

4

2 に答える 2

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 '.'

));
于 2011-11-17T22:16:37.377 に答える
0

同様の問題がありましたが、application.ini を使用して翻訳を構成しました。

これらは Zend_Translate 関連の行です。

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

これは、開発サーバーでは問題なく機能しましたが、ステージング サーバーでは機能しませんでした。スキャン オプションから引用符を削除する必要がありました。

resources.translate.options.scan = directory

引用符なしで機能しました。しかし、この特定の構成行がステージング サーバーでクォートを処理できない理由がわかりません。

于 2012-01-17T09:22:24.587 に答える