我是Symfony2的新手(使用2.7,因为它是一个现有的项目)。我必须为网址创建已翻译的网址,并在网址的主机名中添加区域设置。
为了更清楚,我会采取一些例子:
美国/英国版的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文档对此并不十分详细。
我需要翻译的网址取决于主机名区域设置。也许这对Symfony来说是不可能的。
提前谢谢。
答案 0 :(得分:1)
我会创建两条路线:
表示英语
helloRoute:
host: "{_locale}.mywebsite.com"
path: "/hello"
defaults: {_controller: MyWebSiteBundle:Front:viewHello}
requirements:
locale: en
for french
bonjourRoute:
host: "{_locale}.mywebsite.com"
path: "/bonjour"
defaults: {_controller: MyWebSiteBundle:Front:viewHello}
requirements:
locale: fr
*请注意,您在语言环境变量中获得了前导下划线。
您可以将两条路线发送到同一个控制器,并根据区域设置有条件地显示。
答案 1 :(得分:1)
更一般地说,为了能够使用Symfony 2轻松处理URL的国际化,您可以使用BeSimple/BeSimpleI18nRoutingBundle。
然后,如示例中所示,您可以执行类似的操作:
helloRoute:
host: "{locale}.mywebsite.com"
locales: { en: "/hello", fr: "/bonjour" }
defaults: {_controller: MyWebSiteBundle:Front:viewHello}
requirements:
locale: fr|en