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



Symfony 1.2中是否可以基于lang更改路由?

在我的系统中有两种语言-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

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 

有一些插件可以处理这种情况(或者至少给了你一种自己做这件事的方法):

  • zxI18n例程插件

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

  • gbI18nRoutePlugin

    I18N路由的简单方式。

另一种选择是在路由中添加区域性,如/pl/product、/en/product等。。

相关内容

  • 没有找到相关文章

最新更新