裏面我有這種情況:翻譯引用另譯
unit:
sqkm: Square Kilometers
my_translation: Size is %size% ## I want to append the value of unit.sqkm here ##
有引用my_translation
鍵內unit.sqkm
翻譯的方法嗎?
編輯:請注意,我知道如何通過樹枝做到這一點。我的問題是:有沒有辦法在翻譯文件中做到這一點。
裏面我有這種情況:翻譯引用另譯
unit:
sqkm: Square Kilometers
my_translation: Size is %size% ## I want to append the value of unit.sqkm here ##
有引用my_translation
鍵內unit.sqkm
翻譯的方法嗎?
編輯:請注意,我知道如何通過樹枝做到這一點。我的問題是:有沒有辦法在翻譯文件中做到這一點。
在你的嫩枝模板,試試這個:
{{ 'my_translation' | trans({'%size%': size, 'unit.sqkm' : ('unit.sqkm'|trans)}) }}
感謝您的回答,但我想在我的翻譯文件中做到這一點,而不是在視圖中。 – smoove
我延長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 @@[email protected]@
*/
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的翻譯class via參數:
parameters:
translator.class: Bundle\Program\Translation\Translator
現在您可以通過@@ other.translation @@ INSIDE引用其他翻譯了。
你在翻譯文件中找到了一種方法嗎? – crmpicco