国际化-Symfony5全面开发
在前面的课程,我们修改了translation.yaml配置文件。现在默认的地区是中文地区,Symfony会在translations目录中查找中文地区的翻译文件。如果没有找到中文地区的翻译文件的话,会查找英文地区的翻译文件。
打开translations目录,我们已经对KnpPaginatorBundle进行了一些翻译。翻译文件的名称是有一定的格式的,首先是翻译项所在的域(domain),然后是翻译的地区,最后是文件的后缀。
回到浏览器,我们点击底部工具栏上翻译项的按钮,当前页面缺失了14条翻译,翻译项所在的域是messages,所需要翻译的文本就是Message ID,翻译的结果就是Message Preview,我们当前的地区是中文地区。
回到项目,在translations目录中我们新增一个翻译文件,叫做messages.zh_CN.yaml,中文地区yaml配置文件。我们逐条复制,第一条Post,这里我们翻译为文章。然后是ID,ID不进行翻译。然后是Title,标题。
#translations/messages.zh_CN.yaml
Post: '文章'
ID: 'ID'
Title: '标题'
为了节省时间,我这里就不进行翻译了,我们在translations目录中新增了一个文件。我们清理一下缓存。
回到浏览器,我们后退一步,再次刷新文章列表。我们看到Post这里替换成了文章,并且标题这里显示了中文。底部的翻译提示,这里缺失的翻译项有11条,比之前少了3条,这就是国际化翻译文件的编写。
回到项目,我们打开PostController类。在PostController类中,我们使用addFlash()
方法添加了一条flash消息。消息的内容是中文这里使用的硬编码。
我们也可以对消息的内容进行国际化翻译,在下节课,我们通过注入服务类的方式来对消息的正文进行翻译。