gpt4 book ai didi

symfony - 在另一个翻译中引用翻译

转载 作者:行者123 更新时间:2023-12-04 15:24:30 25 4
gpt4 key购买 nike

我有这种情况:

unit:
sqkm: Square Kilometers

my_translation: Size is %size% ## I want to append the value of unit.sqkm here ##

有没有办法引用 unit.sqkm的翻译内 my_translation key ?

编辑 :请注意,我知道如何通过 Twig 做到这一点。我的问题是: 有没有办法在翻译文件中做到这一点 .

最佳答案

我为此扩展了 Symfony Tanslator:

<?php

namespace Bundle\Program\Translation;

use Symfony\Bundle\FrameworkBundle\Translation\Translator as BaseTranslator;

class Translator extends BaseTranslator
{
/**
* Uses Symfony Translator to translate, but enables referencing other translations via @@code@@
*/
public function trans($id, array $parameters = array(), $domain = null, $locale = null)
{
$text = parent::trans($id, $parameters, $domain, $locale);

$translations = [];

$delimiter = "@@";
$strLen = strlen($delimiter);
$pos = strpos($text, $delimiter);

while ($pos !== false) {
$startsAt = $pos + $strLen;
$endsAt = strpos($text, $delimiter, $startsAt);
$translations[] = $delimiter . substr($text, $startsAt, $endsAt - $startsAt) . $delimiter;
$pos = strpos($text, $delimiter, $endsAt + $strLen);
}

foreach ($translations as $translation) {
$translationTrim = str_replace($delimiter, '', $translation);
$text = str_replace($translation, $this->trans($translationTrim, $parameters, $domain, $locale), $text);
}

return $text;
}
}

然后通过参数替换 Symfony 翻译器类:
parameters:

translator.class: Bundle\Program\Translation\Translator

现在您可以通过 @@other.translation@@ INSIDE 您的 yml 文件引用其他翻译。

关于symfony - 在另一个翻译中引用翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258177/

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