Symfony2 和 Twig 中的多语言

发布于 2024-12-17 22:12:13 字数 154 浏览 0 评论 0原文

如何在 Symfony 中创建多语言页面?在Symfony 1.0中,Jobeet教程有很好的描述。但现在在 symfony.com 上,我还没有看到与页面翻译相关的东西。 在 symfony 1.4 中, echo __('text');使用,但现在在 Symfony 2 中使用 TWIG。

how to create multilanguage page in Symfony? In Symfony 1.0, Jobeet tutorial has very good description. But now on symfony.com, i haven't seen somethings related to translation of page.
In symfony 1.4, echo __('text'); is used, but now in Symfony 2 TWIG is used.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伤感在游骋 2024-12-24 22:12:14

Symfony2 网站上有一个关于此的文档部分。

您可以在这里查看: 翻译

基本上,您可以在路由中访问名为 _locale 放入您的网址中,将用于在会话中设置区域设置。请注意,使用此方案,Symfony2 会自动将语言环境值设置到 Session 中。

http://www.host.com/en/contact // English version
http://www.host.com/fr/contact // French version

您还可以在路由中指定默认的 _locale 值,因此不必提供网址中的区域设置。

http://www.host.com/contact    // English version if default _locale is 'en'

然后,在 twig 中,您使用特殊的转换器 transtranschoice 来翻译消息。您的消息可以是密钥,也可以是用作密钥的自然语言消息,通常是英语。

{{ 'user.prompt.welcome' | trans }} {# Key message #}
{{ 'Welcome to our site' | trans }} {# Natural language message #}

翻译消息的区域设置是从会话中获取的,因此更改会话中的区域设置(通过 url 或以编程方式)会将翻译更改为其他内容。

这在底层使用了translator服务。

There is a documentation section on this on the Symfony2 website.

You can check it here: Translations

Basically, you have access in the routing to a special attribute named _locale that is put in your url and will be used to set the locale in the session. Note that using this scheme, the locale value is automatically set into the Session by Symfony2

http://www.host.com/en/contact // English version
http://www.host.com/fr/contact // French version

You can also specify a default _locale value in your routes so it is not mandatory to provide the locale in the url.

http://www.host.com/contact    // English version if default _locale is 'en'

Then, in twig, you use the special transformer trans and transchoice to translate messages. Your messages can be a key or an natural language message that is used as the key, usually in english.

{{ 'user.prompt.welcome' | trans }} {# Key message #}
{{ 'Welcome to our site' | trans }} {# Natural language message #}

The locale to translate the message is taken from the session, so changing the locale in the session (via the url or programmaticaly), will change the translation to another thing.

This uses the translator service under the hood.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文