Symfony国际化 Symfony Cookies和会话管理 Symfony记录 国际化(i18n) 和 本地化(l10n) 有助于提高客户对Web应用程序的覆盖率。Symfony为此提供了一个出色的翻译组件。让我们学习如何在本章中使用Translation组件。 启用翻译 默认情况下,Symfony Web框架禁用翻译组件。要启用它,请在配置文件app / config / config.yml中添加翻译器部分。 framework: translator: { fallbacks: [en] } 翻译文件 翻译组件使用翻译资源文件翻译文本。资源文件可以用PHP,XML和YAML编写。资源文件的默认位置是 app / Resources / translations 。它需要每种语言的一个资源文件。让我们为法语编写一个资源文件 messages.fr.yml 。 I love Symfony: J'aime Symfony I love %name%: J'aime %name% 左边的文字是英文,右边的文字是法文。第二行显示占位符的使用。占位符信息可以在使用翻译时动态添加。 用法 默认情况下,用户系统的默认语言环境将由Symfony Web框架设置。如果未在Web应用程序中配置默认语言环境,则会回退到英语。区域设置也可以在网页的URL中设置。 http://www.somedomain.com/en/index http://www.somedomain.com/fr/index 让我们在我们的示例中使用基于URL的语言环境来轻松理解翻译概念。在DefaultController(src / AppBundle / Controller / DefaultController.php)中创建一个新函数 translationSample ,路径为 / {_ locale} / translation / sample 。{_locale}是Symfony中的一个特殊关键字,用于指定默认语言环境。 /** * @Route("/{_locale}/translation/sample", name="translation_sample") */ public function translationSample() { $translated = $this->get('translator')->trans('I love Symfony'); return new Response($translated); } 在这里,我们使用翻译方法 trans ,它将内容翻译成当前语言环境。在这种情况下,当前语言环境是URL的第一部分。现在,运行应用程序并在浏览器中加载页面 http:// localhost:8000 / en / translation / sample 。 结果将是“我爱Symfony”的英文版。现在,在浏览器中加载页面 http:// localhost:8000 / fr / translation / sample 。现在,文本将被翻译成法文如下。 同样,树枝模板也包含 {%trans%} 块,以便在视图中启用翻译功能。要检查它,请在 app / Resources / views / translate / index.html.twig中 添加一个新函数, translationTwigSample 和相应的视图。 ** /** * @Route("/{_locale}/translation/twigsample", name="translation_twig_sample") */ public function translationTwigSample() { return $this->render('translate/index.html.twig'); } 视图 {% extends 'base.html.twig' %} {% block body %} {% trans with {'%name%': 'Symfony'} from "app" into "fr" %}I love %name% {% endtrans %} {% endblock %} 这里,反转块也指定占位符。页面结果如下。 Symfony Cookies和会话管理 Symfony记录