1

POEDIT では、コード アナライザーがコードを解析する前に PHP コメントを削除しているようです。

これは、PHP コメント (// または #) またはドキュメント ブロック ( /* */) で見つからない翻訳はスキップされることを意味します。

それらを含めて検出可能にする解決策はありますか?

これが私がやろうとしていることの例です:

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

POEDITで「//_('No')」を検出してほしい

その後、「echo _(One::$enum[0]);」のように翻訳できます。

さらなる返信をありがとう:)

カール。

-- 編集 -- 最後に、3 年後、私は非常に簡単な解決策を見つけたと思います。静的変数は public であるため、クラスの横に入力できます。

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

このソリューションについてどう思いますか?

4

2 に答える 2

2

かなり古いスレッド...
しかし、私のやり方を示すのに役立つかもしれないと思います

まず第一に、あなたの提案の主な問題はコードの重複です

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

これは、文字列を変更する場合、文字列を 2 回更新することを覚えておく必要があることを意味します

こういう事にこうやって向き合ってる

class One 
{
    const ENUM_NO  = 0;
    const ENUM_YES = 1;

    public static function getEnum() (
        return [
            self::ENUM_NO  => _('No'),
            self::ENUM_YES => _('Yes')
        ];
    );
}

わかりました、それはかなりの余分な行を意味します...
しかし、gettextはそのままで機能し、文字列は1つの場所でのみ編集されます

同意しました。最善の方法は、PHP が許可することです。

class One 
{
    public static $enum = array(
        '0' => _('No'),
        '1' => _('Yes')
    );
}
于 2016-02-26T09:36:05.243 に答える