2016-11-11 7 views
7

Iは、異なるロケールの複数のルートを有する:Zendのは、ルートに翻訳

例:

ルート用/

$routes['industry'] = array(
    'route' => 'branche/:type', 
    'defaults' => array(
     'module' => 'default', 
     'controller' => 'index', 
     'action' => 'branche', 
     'type' => 'automobil' 
    ), 
    'reqs' => array(
     'type' => '(automobil|textil)' 
    ) 
); 

ルートデ用/何とか

$routes['industry'] = array(
    'route' => 'industry/:type', 
    'defaults' => array(
     'module' => 'default', 
     'controller' => 'index', 
     'action' => 'branche', 
     'type' => 'car' 
    ), 
    'reqs' => array(
     'type' => '(car|textile)' 
    ) 
); 

その可能にENこの場合は2つではなく1つの経路しか持たないのでしょうか?

注記は、変更されるルートだけでなく、reqsのタイプとデフォルトタイプも注意してください。

答えて

1

は私が

は私は明確にしましょう通常国際化がページ上ではなく、URL上の2つの異なるルートが を参照してください、あなたはあなたのURLを維持し、URL内のパラメータを使用して、ページの言語を知っていますそのパラメータの

$routes['industry'] = array(
    'route' => 'industry/:lang/:type', 
    'defaults' => array(
     'module' => 'default', 
     'controller' => 'index', 
     'action' => 'branche', 
     'type' => 'car', 
     'lang' => 'en' 
    ), 
    'reqs' => array(
     'lang' => '(en|de)', 
     'type' => '(car|textile)' 
    ) 
); 

とによっては、LANG、あなたの小枝やPHTMLまたはHTMLに正しいメッセージを表示

URLを変更し、これを行うための別の方法は次のとおりです。

$routes['industry'] = array(
    'route' => ':industry/:type', 
    'defaults' => array(
     'module' => 'default', 
     'controller' => 'index', 
     'action' => 'branche', 
     'type' => 'car', 
     'industry' => 'industry' 
    ), 
    'reqs' => array(
     'industry' => '(industry|branche)', 
     'type' => '(car|textile)' 
    ) 
); 
+0

URL変換を解決しません。 URLには常に "業界"となり、 "branche"にはなりません。 – costa

+0

URLを変更することは必須ですか?その場合は2つのルートを実行する必要があります。私の経験では、あなたは常に1つの言語であなたのURLを保持し、言語に応じてコンテンツを変更しますが、もちろんそれぞれの現実は異なり、ニーズが異なります。 URLを変更する必要がある場合は、2つのルートを作成するか、業界|ブランチを作成する必要があります。ソリューション2への回答を編集する – Emiliano

関連する問題