6

PoEdit に PHP アノテーションを理解させる方法を探しています。以下は、PoEdit にピックアップしてカタログに追加してもらいたいコードのサンプルです。

class MyController extends Controller {

    /**
     * @Title "Home"
     */
    public function index() {
        ...
    }

}

興味深いのは@Title注釈です。フロントコントローラーでアクセスされ、マスタービューに割り当てられ、事実上<title>...</title>タグ内になります。

その文字列を翻訳する必要がありますが、PoEdit は_()式しか理解できないようで、キーワードへの追加@Titleは機能しません。これはおそらく、PHP の注釈がコメント ブロックにあるためです。

PoEdit に注釈を理解させる方法はありますか?

4

2 に答える 2

3

Short answer, you can't.

POEdit uses xgettext to scan your files therefore using specific syntax, ignoring commented lines.

For example, if your keywords are _ the following examples will be parsed like:

_('test'); -> string 'test'

_("test"); -> string 'test'

_('test' -> string 'test'

_ 'test -> no catch

_('test -> no catch

_(test) -> no catch

_($test) -> no catch

//_('test'); -> no catch

/*_('test');*/ -> no catch

You can execute xgettext using other parameters but I'm not sure if you will be able to achieve your goal.


One easy fix (not standard ofc) is to add other keyword like placeholder and make a php function like

function placeholder($string){}

and use it so POEdit can parse it

class MyController extends Controller {

    /**
     * @Title "Home"
     */
    public function index() {
      placeholder('Home');  
      ...
    }

}

At your frontend parser just use the simple _($value) and you will have your title translated.

Dunno how is your code but will assume its something similar to this.

Assuming that $tag = 'title' and $value = 'Home'

echo '<'.$tag.'>'._($value).'</'.$tag.'>';
于 2012-07-24T06:59:09.173 に答える
0

本当にそのようにしたい場合は、必要な文字列を php ファイルから外部ファイルに抽出し、注釈部分を _(string); に置き換えます。一致ごとに、そのファイルに対して Poedit を実行します。

あなたはそれを一致させることができます.*\*\s\@(\w+)\s\"(\w+)\".*-$1一致すると注釈(タイトル)に$2なり、値になります:(ホーム)

于 2012-07-21T18:00:21.630 に答える