2013-05-08 2 views
0

Я хочу знать, если возможно использовать комментарии, уже созданные для сборки других комментариев, которые содержат использованную оценку в дополнение к другому тексту.zend framework 2 gettext translation using others comments

например.

// EN файл

msgid "User no logged" 
    msgstr "" 

    msgid "#previous commend# as participant" 
    msgstr "" 

// Es файл

msgid "User no logged" 
    msgstr "Usuario no logueado" 

    msgid "#previous commend# as participant" 
    msgstr "#previous translation# como participante" 

Я хочу использовать этот перевод:

$this->translate('User no logged as participant'); 
    //I want obtain: Usuario no logueado como participante 

возможно изменение # ..... # слова ничем?

Заранее благодарен.

ответ

1

Разве это не так, о чем идет речь и о вашем другом вопросе? Хотя, если я правильно понял, что вы пытаетесь сделать, это может быть что-то вроде этого:

echo $this->translate(sprintf(
    '%s as participant', 
    $this->translate('User no logged') 
)); 

Но и в этом случае, для меня это просто два перевода в ряд, как:

echo sprintf('%s %s', 
    $this->translate('User no logged'), 
    $this->translate('as participant') 
); 
+0

В этом вопросе я хочу использовать только une time $ this-> translate() и не хочу использовать% s, потому что у меня есть класс, который содержит все сообщения (без% s) – josepmra

+0

Ну, я показал вам два варианта, о которых я могу думать;) В addi я вообще не знаю, что делает ваш класс. Я не вижу ни одной выгоды от него ^^ – Sam

0

В этом вопросе я хочу использовать только une time $ this-> translate() и не хочу использовать% s, потому что у меня есть класс, который содержит все сообщения (без% s). Я хотел бы связать комментарии только в файлах .po (возможно?)

Strings.php

class Strings { 
     public static $USER_NO_LOGGED = 'El usuario no esta logueado.'; 
     private static $translator; 
     private static $translatorTextDomain = 'default'; 

     public static function setTranslator(Translator $translator) { 
      self::$translator = $translator; 
     } 
     public static function getTranslator() { 
      return self::$translator; 
     } 
     public static function setTranslatorTextDomain($textDomain = 'default') { 
      self::$translatorTextDomain = $textDomain; 
     } 
     public static function getTranslatorTextDomain() { 
      return self::$translatorTextDomain; 
     } 
     public static function getMessage($message) {  
      $translator = self::getTranslator(); 
      if (!$translator) return $message; 

      return self::getTranslator()->translate($message, self::$translatorTextDomain); 
     } 
    } 

Как вы можете видеть, метод GetMessage имеет только один перевод метод и вызов функции делается следующим образом:

echo Strings::getMessage(Strings::$USER_NO_LOGGED);