Symfony 翻译网站并查看语言列表

Symfony translation web site and view the list of languages

你好,我来是因为我需要一点帮助, 我想将我的网站翻译成 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

以及如何显示链接列表?朝向它的是语言 ?

嗯,下面的解决方案是在 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,例如foo: bar,您可以使用 trans 过滤器在树枝中显示其值:{{ 'foo'|trans({}, 'messages')} }}.

您可以在 official documentation

中找到更多信息