2

ユーザー エクスペリエンスを向上させるために、国際化された URL を使用したいと考えています (すべてイントラネット内にあるため、SEO を心配する必要はありません)。

したがって、基本的には次のような URL が必要です (この例では、英語、オランダ語、フランス語):

/en/products
/en/product/123/blue-box
/nl/producten
/nl/product/123/blauwe-doos
/fr/produits
/fr/produit/123/boite-bleue

その/nl/部分はまったく問題なく、SOとインターネット全体に説明されています。しかし、私の問題は、コントローラーとアクションへのルーティングにあります。

現在、私はデフォルトのルーターから拡張し、Zend_Translate を使用してすべてを英語に翻訳し、英語の名前に基づいたコントローラーとアクションを作成しました。

しかし、私はこれを行うためのより良い方法があるべきだと感じ続けています。このための zend フレームワークに標準コンポーネントがあるかどうか、またはおそらく以前にこのようなものをすでに作成していたかどうかは誰にもわかりません。

仕様:

PHP 5.4.4
Zend Framework 1.11.10
4

1 に答える 1

2

コントローラーをコピーする必要はありません。私はこのようにしました:

$translate = new Zend_Translate(
  array(
    'adapter' => 'array',
    'content' => 'PATH_TO_LANGUAGES/en_url.php',
    'locale'  => 'en'
  )
);

$translate->addTranslation(array(
  'content' => 'PATH_TO_LANGUAGES/nl_url.php',
  'locale' => 'nl'
));

$translate->setLocale('en');

Zend_Controller_Router_Route::setDefaultTranslator($translate);

言語ファイルは次のようになります。コントローラーまたはアクションを翻訳できます。しかし、クエリ パラメータも翻訳できるかどうかはわかりません。

// en_url.php
return array(
  'products' => 'products',
);

// nl_url.php
return array(
  'products' => 'producten',
);

詳しくはこちらをご覧ください。

于 2013-05-17T14:24:16.420 に答える