zend framework 2使用其他评论进行文本翻译

时间:2013-05-08 21:21:03

标签: zend-framework2 gettext zend-translate xgettext

我想知道是否可以使用已经创建的注释来构建除了其他文本之外还包含使用过的推荐的其他注释。

e.g。

// 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

是否可以通过任何方式更改#.....#单词?

提前致谢。

2 个答案:

答案 0 :(得分: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')
);

答案 1 :(得分:0)

在这个问题中我想只使用时间$ 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方法只有一个translate方法,对函数的调用如下所示:

  echo Strings::getMessage(Strings::$USER_NO_LOGGED); 
相关问题