twig的trans过滤器-Symfony5全面开发

您需要登录后才可观看此视频

为了更好的为您提供服务,请您登录后再查看本课程。

立即登录 注册账号

我们来查看Twig文档,Symfony为Twig提供了很多功能。我们往下看,这里有个trans过滤器,用来对模板中的字符串进行翻译。它的使用方法是这样的,trans后面可以添加参数。

回到项目,我们打开首页模板。这里需要进行一下翻译,我们使用双大括号把字符串添加进来,字符串使用单引号,后面使用竖线trans。回到浏览器,我们刷新一下博客首页,点击下面的翻译按钮,就新增了一个翻译的消息ID,复制消息ID,粘贴到messages翻译文件中。

回到项目,粘贴,这里我们翻译为Teebblog 文章列表。回到浏览器后退,刷新,我们看到现在文章列表就进行了翻译。回到项目,我们打开show.html.twig模板文件,这里有段提示需要登录后才可以提交评论,这里我们可以自定义一个消息ID,ID名称叫做login_for_comment。添加trans过滤器。

我们把要翻译的字符串拷贝一下,在翻译文件中添加消息ID,loggin_for_comment,粘贴。在翻译的字符串中,需要指定登录链接。这里我们可以把登录地址设置为一个参数,使用双百分号进行包裹%login_path%,回到show.html.twig文件。

我们可以在trans过滤器方法中传入参数,第一个参数是字符串中的变量。它是数组,我们使用大括号,key值我们使用百分号加上%login_path%,这里我们输入path('app_login')

回到浏览器,我们退出当前用户,查看第一篇文章,现在文章下边登录的提醒已经进行了翻译。我们需要让html字符串取消转义回到项目,在消息后面我们添加另外一个过滤器,raw

回到浏览器刷新,现在就可以了,我们查看一下过滤器的源码,按照command键点击trans。过滤器的底层都是PHP方法。在trans()方法通过getTranslator()方法来获取Translator对象,使用Translator对象的trans()方法来对消息进行了翻译。

回到模板文件,现在模板中还有很多地方需要进行翻译,我们可以使用trans过滤器进行翻译。回到浏览器,如果我们要开发一个多语言版本的网站,通常在地址栏中添加一个地区码。比如说en就代表英文语言,zh_CN就代表中文地区的语言,对应的页面上的字符串就会自动的进行翻译。

在下节课,我们来实现这个功能。

课程讨论

当前内容评论功能已关闭。