1

Symfony 1.2 で lang に基づいてルーティングを変更することは可能ですか?

私のシステムには 2 つの言語があります - EN、PL

サンプル ルートは次のようになります。

produkt_show:
  url:   /products/:pslug/:idslug
  param: { module: product, action: show }

私が達成したいこと: produkt_show ルートが、現在の言語に応じて異なる URL に一致する [および生成する] ようにします。したがって、PL では、私の URL は次のようになります。

 /produkty/:pslug/:idslug

これらのルートが同じ名前を持つことが不可欠です。すべての url_for/link_to などの呼び出しを変更して、異なるルート名を渡すことはできません。

ご不明な点がございましたら、お気軽にお問い合わせください。

アップデート

j0kのアドバイスに従って、プラグインを使用しました。私は zxI18nRoutingPlugin を選択しました。部分的に機能しているようです-ブラウザのアドレス入力に文字通り書くと、URLを正しいルートに解決します。ただし、翻訳されていない URL が生成されます。

例えば

私のルート:

contact_form:
  url:   /contact_form
  param: { module: contact_request, action: new}

トランス単位:

        <trans-unit>
            <source>contact_form</source>
            <target>formularz-kontaktowy</target>
        </trans-unit>

生成された URL:

<a href="/contact_form" title="Kontakt" class="menu-contact"> Kontakt </a>

しかし、BASE_URL/formularz-kontaktowy と入力すると、正しいアクションが実行されます。

これは開発ツールバーからの私の構成です:

Request:

    parameterHolder:
      action: new
      module: contact_request
      sf_culture: pl
    attributeHolder:
      sf_route: 'sfRoute Object()'

User

    options:
      auto_shutdown: false
      culture: pl
      default_culture: pl_PL
      use_flash: true
      logging: '1'
      timeout: 10800
    attributeHolder:
      symfony/user/sfUser/attributes: { LAST_CATEGORY_ID_PATH_VAR: null, product_elements_on_page: 50 }
    culture: pl_PL

私はこれで立ち往生しているので、助け、提案、何かをいただければ幸いです。

更新 2

factory.yml:

all:
  routing:
#    class: sfPatternRouting
#    param:
#      generate_shortest_url:            true
#      extra_parameters_as_query_string: true
    class: zxPatternI18NRouting
    param:
     generate_shortest_url:            true
     extra_parameters_as_query_string: true
     use_cultures:                     [pl, de, en, ru]   # destination cultures. Plugin looks for translations for these cultures.
     culture_into_url:                 false      # defines if culture should be always placed in url 
4

1 に答える 1

2

そのような場合を処理できるプラグインがいくつかあります (または、少なくとも自分でこれを行う方法を提供します)。

  • zxI18nRoutingPlugin

    zxI18nRoutingPlugin は sfPatternRouting クラスを拡張し、ルート パターンの静的テキストを別の言語に翻訳できるようにします。

  • gbI18nRoutePlugin

    I18N ルーティングの簡単な方法。

/pl/product、/en/product などのように、ルート内にカルチャを追加することもできます

于 2013-08-09T08:39:10.453 に答える