2012-07-19 5 views
6

PoEditにPHP注釈を理解させる方法を探しています。ここで私はPoEditをピックアップし、カタログに入れたいコードのサンプルです:PoEditとPHP注釈

class MyController extends Controller { 

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

} 

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

私はその文字列を翻訳する必要がありますが、PoEditは_()という表現しか理解していないようだし、キーワードに@Titleを追加しても機能しません。これはおそらく、PHPのアノテーションがコメントブロックにあるためです。

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

+4

私は実際には、ドキュメント上のものを行うために、コメントの使用を嫌います。コメントは、コードを理解するための人間が判読可能なテキスト用に予約されている必要があります。また、おそらくIDEが変数型を選択するのを支援する必要があります。アプリケーション内のどのような関数にもサーバーを割り当てるべきではありません。 –

+0

これはPHPで注釈を行う唯一の方法であり、実際には言語の反射サブシステムによって支持されています。さまざまなReflectionクラスのgetDocComment()メソッドを参照してください。加えて、実際には人間にとっては読みやすい - 上記の例の代わりに、アクションコードにPageView :: getInstance() - > setTitle( "Home")のようなものがあります。 –

+0

私はそこに@Truthに同意します。注釈を使うことは、空のファイルのファイル名として変数を保存することです。あなたはそれをすることができますが、それはちょっと厄介です。また、値を読み取るだけのテキストとしてファイルにアクセスすることは、必要な値を持つ一般的な変数、たとえばパブリッククラスのプロパティを設定すると無駄に見えます。 – Mahn

答えて

0

このようにしたいのであれば、必要な文字列をPHPファイルから外部ファイルに抽出し、注釈部分を_(文字列)に置き換えることができます。各試合のPoeditを実行してください。

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

3

短い答え、あなたがすることはできません。

POEditは、xgettextを使用して、特定の構文を使用してファイルをスキャンし、コメント行を無視します。

キーワードが_ある場合たとえば、次の例は以下のように解析されます:

_('test'); - >文字列 '試験'

_("test"); - >文字列 '試験'

_('test' - >文字列'テスト'

_ 'test - >ノーキャッチ

_('test - >ノーキャッチ

_(test) - >ノーキャッチ

_($test) - >ノーキャッチ

//_('test'); - >ノーキャッチ

/*_('test');*/ - >ノーキャッチ

あなたは実行することができxgettext他のパラメータを使用していますが、目標を達成できるかどうかはわかりません。


一つの簡単な修正(ない標準OFC)がplaceholderのような他のキーワードを追加して、

function placeholder($string){} 

のようなPHP関数を作成し、POEditはそれを

class MyController extends Controller { 

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

} 

を解析することができますので、それを使用することですあなたのフロントエンドのパーサで、単純な_($value)を使用すれば、タイトルが翻訳されます。

ダンノーあなたのコードはどのようになっていますか?

その$タグ=「タイトル」と$値を仮定=「ホーム」

echo '<'.$tag.'>'._($value).'</'.$tag.'>';