【问题标题】:PoEdit don't parse string in PHP commentsPoEdit 不解析 PHP 注释中的字符串
【发布时间】:2013-11-14 00:54:25
【问题描述】:

在 POEDIT 中,代码分析器似乎在解析代码之前删除了所有 PHP cmets。

这意味着在 PHP 注释(// 或 #)或文档块(/* */)中找不到的任何翻译都将被跳过。

是否有任何解决方案可以包含它们并使其可检测?

这是我正在尝试做的一个示例:

class One{
    public static $enum = array(
        '0' => 'No', // _('No')
        '1' => 'Yes' // _('Yes')
    );
}

我希望 POEDIT 检测“// _('No')”

然后,我可以这样翻译“echo _(One::$enum[0]);”

感谢您的进一步回复:)

卡尔。

-- 编辑-- 最后,经过 3 年,我想我找到了一个非常简单的解决方案。 因为静态变量是公共的,所以我可以在课堂上填充它:

One::$enum = array(
    '0' => _('No'),
    '1' => _('Yes')
);
class One{
   public static $enum = array();
}

你觉得这个解决方案怎么样?

【问题讨论】:

    标签: php poedit xgettext


    【解决方案1】:

    相当老的线程...
    但我认为这可能有助于表明我的做事方式

    首先,您的建议的主要问题是代码重复

    public static $enum = array(
        '0' => 'No', // _('No')
        '1' => 'Yes' // _('Yes')
    );
    

    这意味着如果要更改字符串,您必须记住更新两次...
    您可能会在某个时候忘记或错过任何一个。

    我就是这样处理这种事情的

    class One 
    {
        const ENUM_NO  = 0;
        const ENUM_YES = 1;
    
        public static function getEnum() (
            return [
                self::ENUM_NO  => _('No'),
                self::ENUM_YES => _('Yes')
            ];
        );
    }
    

    好的,这意味着很多额外的行...
    但是 gettext 开箱即用,字符串只能在一个位置进行编辑

    同意,最好是 PHP 允许

    class One 
    {
        public static $enum = array(
            '0' => _('No'),
            '1' => _('Yes')
        );
    }
    

    【讨论】:

      【解决方案2】:

      The way gettext worksxgettext(这是 Poedit 所称的——没有更多内容)从源代码中提取可翻译的字符串。如果一个字符串没有在源代码中使用,那么它显然永远不会在运行时使用,并且翻译它没有意义——翻译不会被使用。注释不是代码的一部分,所以 当然 xgettext 会忽略它们。否则就没有任何意义。

      Gettext 有gettext_noop() 功能,described well in the manual 可以处理像你这样的罕见情况。

      您可能想要定义一些类似的辅助函数并将其用作 Poedit 中的附加关键字,尽管this StackOverflow question 的答案解释了为什么这样的事情在 PHP 中毫无意义。

      【讨论】:

      • 嗨!谢谢你的回复。 gettext_noop 也有同样的问题,在类变量声明期间不能使用任何函数。是否有任何 xgettext 选项使其接受 PHP cmets?
      • 不——这没有任何意义,真的。您应该考虑更改代码以使用 PHP 的 gettext API。
      猜你喜欢
      • 2011-01-23
      • 2013-04-07
      • 2011-02-04
      • 2018-12-10
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 2017-01-27
      相关资源
      最近更新 更多