簡體   English   中英

Symfony2主機URL轉換

[英]Symfony2 host url translation

我是Symfony2的新手(使用2.7,因為它是現有項目)。 我必須使用URL的主機名中的語言環境為網站創建翻譯后的URL。

為了更清楚,我將以這些示例為例:

en.mywebsite.com/hello (美國/英語版)或fr.mywebsite.com/bonjour (法語)

我有我的routing.yml文件,但是它當然不起作用。

helloRoute:
   host: "{locale}.mywebsite.com"
   path: I don't know the correct input, it can be "/hello" or "/bonjour"
   defaults: {_controller: MyWebSiteBundle:Front:viewHello}
   requirements:
      locale: fr|en

有我的Nginx配置:

server {
   listen                               80;
   server_name                          ~^(?<region>\.|en|fr)\.\mywebsite.com;
    root                                /Applications/MAMP/htdocs/web/web;

    rewrite                             ^/app_dev\.php/?(.*)$ /$1 permanent;

    location / {
        index                           app_dev.php;
        try_files                       $uri @rewriteapp;
    }
    ...
}

這個Nginx配置沒問題,那行得通。

我檢查了很多文檔,但是我不能這樣做。 Symfony文檔對此並不十分詳細。

我需要根據主機名的語言環境翻譯URL。 Symfony可能無法實現。

先感謝您。

我將創建兩條路線:

對於英語

helloRoute:
   host: "{_locale}.mywebsite.com"
   path: "/hello"
   defaults: {_controller: MyWebSiteBundle:Front:viewHello}
   requirements:
      locale: en

對於法語

bonjourRoute:
   host: "{_locale}.mywebsite.com"
   path: "/bonjour"
   defaults: {_controller: MyWebSiteBundle:Front:viewHello}
   requirements:
      locale: fr

*請注意,您在locale變量中使用了下划線。

您可以將兩條路由發送到同一控制器,並根據語言環境有條件地顯示。

更一般而言,為了能夠使用Symfony 2輕松處理URL中的國際化,可以使用BeSimple / BeSimpleI18nRoutingBundle

然后,如示例所示,您可以執行以下操作:

helloRoute:
   host: "{locale}.mywebsite.com"
   locales:  { en: "/hello", fr: "/bonjour" }
   defaults: {_controller: MyWebSiteBundle:Front:viewHello}
   requirements:
      locale: fr|en

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM