내부의 번역을 참조하기?나는이 상황이 다른 번역
편집 : 나뭇 가지를 통해이 작업을 수행 할 수있는 방법을 알고 있습니다. 제 질문은 : 이 번역 파일에서 이것을 수행하는 방법입니다.
내부의 번역을 참조하기?나는이 상황이 다른 번역
편집 : 나뭇 가지를 통해이 작업을 수행 할 수있는 방법을 알고 있습니다. 제 질문은 : 이 번역 파일에서 이것을 수행하는 방법입니다.
다른 번역에서 번역 된 값을 사용할 수 있습니다.
{{ 'paragraph' | trans({ '%size%': 3, '%unit%': 'unit' | trans()}) }}
여기에서 unit
은 번역을위한 또 다른 키입니다. 번역 파일 그러나 다음과 같이 수 :
paragraph: Size is %size% %unit%
unit: Square Kilometers
당신의 나뭇 가지 템플릿에서,이 시도 :
{{ 'my_translation' | trans({'%size%': size, 'unit.sqkm' : ('unit.sqkm'|trans)}) }}
답장을 보내 주셔서 감사합니다.하지만 저는보기가 아닌 번역 파일에서 수행하고 싶습니다. – smoove
을 나는 이것에 대한 심포니 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;
}
}
다음은 온라인 번역기 교체 클래스 매개 변수를 통해 :
parameters:
translator.class: Bundle\Program\Translation\Translator
이제 yml 파일을 @@ [email protected]@ INSIDE로 다른 번역을 참조 할 수 있습니다.
번역 파일 내에서 할 일을 찾았습니까? – crmpicco