[英]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.