2013-08-08 2 views
1

Возможно ли в Symfony 1.2 изменить маршрутизацию на основе lang?Изменить маршрутизацию на основе языка, перевести URL-адреса

В моей системе есть 2 Langs - RU, PL

Пример маршрута выглядеть следующим образом:

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

Что я хочу достичь: Я хочу produkt_show маршрут, чтобы соответствовать [и генерировать] разные URL в зависимости от текущего языка. Так что в PL мой url будет выглядеть так:

/produkty/:pslug/:idslug 

Важно, чтобы эти маршруты имели одинаковые имена. Я не могу изменить все url_for/link_to и т. Д. Вызовы и передать им разные имена маршрутов.

Если что-то неясно - спросите заранее.

UPDATE

в соответствии с рекомендациями 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 - правильное действие выполняется.

Это моя конфигурация из панели инструментов Dev:

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 

Я просто не могу понять это, я был бы признателен за любую помощь, предложения, что-нибудь, потому что я застрял с этим.

UPDATE 2

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

ответ

2

Есть некоторые плагины, которые могут обрабатывать такой случай (или, по крайней мере, дал вам способ сделать это самостоятельно):

  • zxI18nRoutingPlugin

    ZxI18nRoutingPlugin расширяет класс sfPatternRouting, предоставляя возможность переводить маршруты шаблонов статического текста на разные языки.

  • gbI18nRoutePlugin

    Легкий способ иметь I18N маршрутизации.

может быть, чтобы добавить культуру внутри маршрута, как/пл/продукта,/EN/продукт, и т.д ..

+0

Это просто ооочень круто. Благодарю. Раньше я знал о последнем варианте, но это не то решение, которое хотел бы наш клиент. Я попытаюсь использовать плагины и написать через некоторое время, если они сработают. – tiriana

+0

Я использовал zxI18nRoutingPlugin, и, похоже, он работает частично, но ... он все еще генерирует URL-адреса, которые не транслируются. Он разрешает преобразованную корреляцию маршрута, если я ввожу его в адрес, введенный буквально. Я покажу пример на мой вопрос. – tiriana

+0

Как вам генерировать URL? Какова ценность 'culture_into_url'? Какова ценность 'use_cultures'? – j0k

Смежные вопросы