【问题标题】:zend framework 2 gettext translation using others commentszend framework 2 gettext 翻译使用其他评论
【发布时间】:2013-05-08 21:21:03
【问题描述】:

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

例如

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

有可能改变#.....#字吗?

提前致谢。

【问题讨论】:

    标签: zend-framework2 gettext zend-translate xgettext


    【解决方案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')
    );
    

    【讨论】:

    • 在这个问题中,我只想使用时间 $this->translate() 并且不想使用 %s,因为我有一个包含所有消息的类(没有 %s)
    • 好吧,我已经向您展示了我能想到的两个选项;)此外,我实际上根本不知道您的班级是做什么的。我看不到任何好处^^
    【解决方案2】:

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

    字符串.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); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多