2

Zend Framework でルート変換を試してみたいのですが、gettext アダプターを使用しており、ほとんどのチュートリアルには PHP 変換アダプターが含まれているため、機能させるのに問題があります。

メインの Bootstrap.php には、ルートを設定するメソッドがあります。

$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();

$translator = Zend_Registry::get('Zend_Translate');
Zend_Controller_Router_Route::setDefaultTranslator($translator);

$routerRoute = new Zend_Controller_Router_Route('@about',
     array(
      'module'     => 'default',
      'controller' => 'index',
      'action'     => 'about'
    )
);
$router->addRoute('about', $routerRoute);

これは/aboutパスに対して機能します。Zend_Translate を設定したコードを貼り付けますが、基本的*.moには現在のセッション言語に応じてファイルをロードします。

$langParam = $this->getSessionLang();

$localeString = $languages[$langParam];
$locale       = new Zend_Locale($localeString);

$moFilePath = $langFolder . $langParam . '.mo';
if (!file_exists($moFilePath)) {
    throw new Zend_Exception('File does not exist: ' . $moFilePath);
}

$translate = new Zend_Translate(
        array(
            'adapter'        => 'gettext',
            'content'        => $moFilePath,
            'locale'         => $locale,
            'ignore'         => array('.'), // ignore SVN folders
            'disableNotices' => ('production' === APPLICATION_ENV) // disable notices in Production
            )
        );

Zend_Registry::set('Zend_Translate', $translate);
Zend_Registry::set('Zend_Locale'   , $locale); 

これは、多くの場合、ルーティングに呼び出さpriorれます。

私の質問: gettext をルートの変換アダプターとして使用でき@aboutますか? できる?万歳!どのように?

4

1 に答える 1

1

まあ、私の母はすべてめちゃくちゃでした。したがって、コードに問題はありません。

ルートが翻訳できるようにmoファイルを編集する方法は次のとおりです(ZF i18nが機能していると思います-翻訳、ロケールなど):

1.これを覚えていますか?

$routerRoute = new Zend_Controller_Router_Route('@about',
     array(
      'module'     => 'default',
      'controller' => 'index',
      'action'     => 'about'
    )
);

2. 「@about」文字列が見えますか? それがまもなく翻訳されるパスです。では、poEdit がキャッチできるように文字列を変換するにはどうすればよいでしょうか。そうではありません。とにかくpoEditではありません。以下を手動で編集します.po file

#ro.po
msgid  "about"
msgstr "despre"

#en.po
msgid  "about"
msgstr "about"

msgid は、パス文字列 (「@」文字列を除く) と一致する必要があります。

3. poEdit で po ファイルを開きます。新しい文字列が表示されます (驚いたでしょう?)。これをコンパイルして、ZF が使用できるpo新しい光沢のあるmoファイルを取得します。

4.これで、site.com/aboutまたはsite.com/despreパスが機能します。

詳細はこちら。

于 2011-09-24T06:39:17.747 に答える