0

我想知道是否可以使用已经创建的评论来构建其他评论,其中包含使用过的推荐以及其他文本。

例如

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

有可能改变 #.....# 的话吗?

提前致谢。

4

2 回答 2

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')
);
于 2013-05-08T22:10:27.657 回答
0

在这个问题中,我只想使用 une time $this->translate() 并且不想使用 %s,因为我有一个包含所有消息的类(没有 %s)。我想仅在 .po 文件中关联评论(可能吗?)

字符串.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); 
于 2013-05-09T10:58:06.120 回答