新在Symfoob娱乐下载ny 5.2:可翻译的对象
2020年9月25日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
翻译内容比原始消息通常需要更多的信息,比如翻译参数和翻译领域。为了使模板更简单,你可以翻译整个消息后端和翻译传递给模板。
然而,这是有时麻烦,还需要注射在多层应用程序的翻译服务。另一种是通过翻译所有数据(消息、参数域)的模板:
1 2 3 4 5 6 7
返回美元这- >呈现(“……”,(“order_status”= > [“消息”= >“order.status_message”,“参数”= > [“%地位%”= >美元订单- >getStatus (),“% order_id %”= >美元订单- >getId ()),“域”= >“管理”、]]);
这不再需要注射译者,但使得模板更加复杂:
1
{{order_status.message |反式(order_status。params order_status.domain)}}
在Syob娱乐下载mfony 5.2我们引进一个新的TranslatableMessage
类,在一个更简单的方法解决了这个问题。首先,创建一个TranslatableMessage
对象,并通过所有的翻译数据:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\翻译\TranslatableMessage;返回美元这- >呈现(“……”,(“order_status”= >新TranslatableMessage (“order.status_message”,(“%地位%”= >美元订单- >getStatus (),“% order_id %”= >美元订单- >getId ()),“管理”)));
现在,您可以将这个对象与相同的模板反式
过滤器和之前一样,但在一个更简单的方法:
1
{{order_status |反式}}
可翻译的消息持有所有的翻译数据,所以反式
过滤器可以自动提取。这个解决方案可以简化模板和后端代码,因为你不需要注入翻译或模拟当编写单元测试。
这个特性还引入了一个新的t ()
函数,可用在PHP和树枝模板,快速创建这种类型的对象。下面的例子使用这个函数创建一个回退比默认的翻译翻译它使用不同的参数:
1 2 3 4 5
{#在#}{{消息定义?消息|反式:后备|反式({%参数%:价值})}}{#在#}{{消息|默认的(t(回退,{%参数%:价值}))|反式}}
荣誉的了不起的人ob娱乐下载Symfony松弛聊天谁帮助我更好地理解这一特性,这样我就可以准备这篇博客。
发表在#生活在边缘
评论
罗兰Franssen
说9月25日,2020年在09:04
# 1
注意它也符合翻译提取:“php bin /控制台翻译:更新”(t(文字)的提取从任何地方)
大卫。Borsatto
说9月25日,2020年在09:08
# 2
这似乎是一个很不错的功能,但并不是“可翻译”一个奇怪的名字的类?类通常命名为名词,而这是命名为形容词,我感觉有点奇怪(也考虑其余的Symfony代码库)。ob娱乐下载也许“TranslatableMessage”(或另一个名词选项)可能更合适?
波尔Dellaiera
说9月25日,2020年在09:19
# 3
t()让我记住美好的Drupal 7: D
罗兰Franssen
说9月25日,2020年远
# 4
@Davide Borsatto命名为名义的形容词。这是很常见的我会说,例如php“Stringable”。
大卫。Borsatto
说9月25日,2020年在11:57
# 5
不过@Roland Franssen不同。你提到的用例接口(与特质,),类定义的行为和属性,而你有一个具体的“东西”。这也是我相信这种类型的一个Symfony,这个。ob娱乐下载
罗兰Franssen
说9月25日,2020年在十五14
# 6
@Davide Borsatto我不知道任何名义说形容词命名的规则只适用于接口和特征。问题是您可以使用名义形容词:名字“某物”)
约瑟夫Kufner
说9月27日,2020年在12:03
# 7
二十年后,这可能是我见过最理智的本地化解决方案。
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。