根据语言更改路由,翻译URL部分

时间:2013-08-08 14:49:33

标签: php routing symfony1 translation symfony-1.2

在Symfony 1.2中是否可以根据lang更改路由?

在我的系统中有2个语言 - EN,PL

示例路线如下所示:

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

我想要实现的目标:我希望produkt_show路由匹配[并生成]不同的URL,具体取决于当前语言。所以在PL中,我的网址看起来像这样:

 /produkty/:pslug/:idslug

这些路线必须具有相同的名称。我无法更改所有url_for / link_to等调用并将不同的路由名称传递给它们。

如果有什么不清楚的地方,请提前询问。

更新

根据j0k的建议,我使用了插件。我选择了zxI18nRoutingPlugin。它似乎是部分工作 - 如果我在浏览器地址输入中写字,它会将URL解析为正确的路径。但它仍会生成未翻译的URL。

e.g。

我的路线:

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

反式单位:

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

生成的网址:

<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

我无法理解,我会感激任何帮助,建议,任何事情,因为我坚持这一点。

更新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 

1 个答案:

答案 0 :(得分:2)

有些插件可以处理这种情况(或者至少为您提供了一种自行完成此操作的方法):

  • zxI18nRoutingPlugin

      

    zxI18nRoutingPlugin扩展了sfPatternRouting类,可以将路由模式静态文本转换为不同的语言。

  • gbI18nRoutePlugin

      

    轻松实现I18N路由。

An other option可以在路线中添加文化,例如/ pl / product,/ en / product等。