Php 可以修改Twig中占位符前面的单词吗?

Php 可以修改Twig中占位符前面的单词吗?,php,symfony,internationalization,twig,Php,Symfony,Internationalization,Twig,我们生成带有占位符的翻译文件,这些占位符将在以后填充,但对于修改前面单词的语言中的单词存在问题 例如,我们编写了一个翻译模板,如下所示: because of %name%, you..... 这是有问题的,因为在法语中,如果%name%以元音开头或不以元音开头,“of”的翻译不同 例如,如果此人是安迪,则应为: d' Andy 而对于史蒂夫来说,这将是: de Steve 处理这个案子最好的办法是什么 我可以看到关于英语不定冠词(a vs an)的类似问题已经解决,但我想知道是否有一种更

我们生成带有占位符的翻译文件,这些占位符将在以后填充,但对于修改前面单词的语言中的单词存在问题

例如,我们编写了一个翻译模板,如下所示:

because of %name%, you.....
这是有问题的,因为在法语中,如果%name%以元音开头或不以元音开头,“of”的翻译不同

例如,如果此人是安迪,则应为:

d' Andy
而对于史蒂夫来说,这将是:

de Steve
处理这个案子最好的办法是什么

我可以看到关于英语不定冠词(a vs an)的类似问题已经解决,但我想知道是否有一种更聪明的方法,而不是针对我们遇到的每种情况使用自定义过滤器(我们使用多种语言,我怀疑随着我们语言的扩展,还会出现其他类似的问题)


(我还在努力获得一个完全不同的翻译,这将是理想的!)

您寻求的答案在于扩展Translator类本身


演示如何以添加此功能所需的类似方式扩展转换器。您可以简单地使用翻译后缀的概念将正确的翻译添加到翻译目录中,然后在
trans()
函数中建立逻辑,查看语言环境和翻译id(您正在翻译的字符串)传递以添加正确的后缀并获得正确的翻译。

在细枝模板中添加一个if控件,并检查是否还需要删除撇号和名称之间的空格。此外,当您的解决方案在技术上可行时,我试图避免的是这样一种情况:如果名称以元音和法语dox开头,如果名称以a和西班牙语开头,doy等等。@edhgoose如果这是您的目标,那么没有“内置”解决方案。您必须在模板中放置if-else或创建自定义细枝扩展