gpt4 book ai didi

php - Symfony2 中翻译的高级定制

转载 作者:可可西里 更新时间:2023-11-01 12:45:02 26 4
gpt4 key购买 nike

我有一个 Symfony2 项目,我正在使用 Translation 组件来翻译文本。我在 yml 文件中有所有的翻译,就像这样

translation-identifier: Translated text here

Twig 翻译文本看起来像这样

'translation-identifier'|trans({}, 'domain')

问题是,在某些情况下,我希望同一翻译有两个不同的文本(不是为了复数)。这是我希望它的工作方式:

  1. yml 文件中为需要不同文本的翻译定义两个文本。每个都有自己独特的后缀

    translation-identifier-suffix1

    translation-identifier-suffix2
  2. 定义一个全局规则来定义应该选择哪个后缀。下面的伪代码:

     public function getSuffix() {
    return rand(0, 10) < 5 ? '-suffix1' : '-suffix2';
    }
  3. Twig(和 PHP)看起来是一样的——我仍然会只指定没有后缀的标识符。翻译器然后将后缀附加到标识符并尝试找到匹配项。如果没有匹配项,它将尝试再次找到没有后缀的匹配项。

最佳答案

据我所知,翻译器组件不支持它。

但如果您想要相同类型的行为,您可以通过覆盖翻译服务来实现。

1) 覆盖服务

# app/config/config.yml
parameters:
translator.class: Acme\HelloBundle\Translation\Translator

首先,您可以通过在 app/config/config.yml 中设置将保存服务类名的参数设置为您自己的类。仅供引用:https://github.com/symfony/FrameworkBundle/blob/master/Resources/config/translation.xml

2) 扩展提供的翻译器类symfony framework bundle。仅供引用:https://github.com/symfony/FrameworkBundle/blob/master/Translation/Translator.php

3) 覆盖由翻译器组件提供的trans函数。 https://github.com/symfony/Translation/blob/master/Translator.php

希望这对您有所帮助!

关于php - Symfony2 中翻译的高级定制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15550002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com