你好,我来是因为我需要一点帮助,我想把我的网站翻译成3种语言: en,fr,es我翻译了翻译文件中的所有内容,但问题不是如何在网站上显示语言选择,也不是如何在url中显示它
在我的应答器html中:
<html lang="{{ app.request.locale }}">
和我的paramters.yaml:
parameters:
locale: fr
在我的翻译文件中,我有3个这样的文件:
messages.fr.yml
messages.en.yml
messages.es.yml
我想要显示如下的URL
www.mydomaine.com/fr/accueil
www.mydomaine.com/en/home
www.mydomaine.com/es/acogida
以及如何显示链接列表?走向它的是语言?
发布于 2018-08-27 03:23:57
好吧,下面的解决方案是在symfony 3.4上测试的,对于symfony 4.*版本可能会有点不同。
在您的config.yml
设置中,网站将在参数选项下操作所有语言,如下所示:
parameters:
locale: fr
locales: [en, fr, es]
同样,在config.yml
中,将翻译器备用区域设置和路径设置为您的翻译:
framework:
translator:
fallback: "%locale%"
paths: ['%kernel.root_dir%/../src/AppBundle/Resources/translations']
然后这样定义您的路由(yml定义示例):
home:
path: /{_locale}/home
defaults: { _controller: AppBundle:Default:home }
然后,所有人都可以使用您提供的每个地区访问您的主页(回答如何在url中显示语言的问题)。
www.mydomaine.com/fr/home
www.mydomaine.com/en/home
www.mydomaine.com/es/home
现在,如果问题也是关于如何在你的网站页面上获得翻译的内容-你可以使用不同的文件格式来保存翻译,例如,我将再次使用.yml
。通常将翻译放到像messages.en.yml
这样的文件中(对于其他语言,创建具有不同区域设置的相同文件,例如messages.fr.yml
)。
然后假设你的翻译文件中有一个关键字过滤器,例如foo: bar
,你可以使用trans
foo
:{{ 'foo'|trans({}, 'messages')} }}
在细枝中显示它的值。
您可以在official documentation中找到更多信息
https://stackoverflow.com/questions/52027109
复制相似问题