2012-02-28 4 views
4

결과 문자열에 변수 값을 주입하고 문자열을 복수형으로 사용해야하는 상황에서 Zend_translate를 사용하려고합니다. 젠드는 현대를 부르는 것을 사용하는 경우복수 모드에서 Zend_Translate를 사용할 때 텍스트에 변수를 삽입 할 수 있습니까?

$this->translate('You have %1$s questions to answer', 3) 
// would result in "You have 3 questions to answer" being output 

을하지만 어떻게 이렇게 할 : 뷰 스크립트에서 정규 (비 복수)보기 도우미 $ this->을 (번역)을 사용하면 내가 문자열에 변수를 삽입 할 수 복수 표기법? 분명히 $ this-이> 번역()보기 도우미 자체가 복수의 표기법을 지원하지 않는 대신에 내가

$this->translate()->getTranslator()->translate( 
    array('You have %1$s question to answer', 
    'You have %1$s questions to answer', $someNr) 
) 

전화를해야하지만 그 시점에서 난 단지 변수 자리 표시 자와 복수의 문자열을 가지고, 난 몰라 주입 된 값을 갖는 문자열을 갖는다. 즉, 무엇을 내가 갖는 것은 : 당신은 내가 당신이

에 대답이 개 질문이

입니다 원하는 것은

에 대답 % 1 $ s의 질문이

그래서 질문은, Zend_Translate가 어떻게 든 복수형을 사용하는이 방법을 지원합니까? 나는. 복수형 문자열에 변수 값을 삽입 하시겠습니까? 아니면 복수형 앞뒤에 문자열을 나누고 각각을 개별적으로 변환 한 다음 결과를 연결해야합니까? (또는 다른) 컨트롤러에서

답변

2

:

<?php 
     $translate = new Zend_Translate (array (
      'adapter' => 'Zend_Translate_Adapter_Array', 
      'content' => array (
       'test' => 'You have %1$s %2$s to answer' 
      ), 
      'locale' => 'en' 
     )); 

뷰에서 :

<?php 
$x = 1; 
echo $this->translate ('test', $x, $this->translate (array (
    'question', 
    'questions', 
    $x 
))); 
?> 

하지만 아마 당신은이 작업을 수행 할 수있는보다 지능적인 방법을 http://framework.zend.com/manual/en/zend.translate.plurals.html에서보고 싶은데.

+0

젠드 문서를 이해하지 못하는 이유는 여기에 있습니다.) 어쨌든, 제 경우에는 실제로 가지고있는 것보다 더 나은 방법으로 문제를 실제로 해결하기 때문에 이것을 정답으로 받아 들일 것입니다. 그러나 번역을 두 번 호출해야하는 것은 여전히 ​​조금은 상쾌합니다. –