2012-07-19 111 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選擇變量類型。它不應該在應用程序中服務任何功能。 – 2012-07-21 15:38:50

+0

這是在PHP中進行註釋的唯一方式,它實際上由語言中的反射子系統支持。請參閱各種Reflection類的getDocComment()方法。另外,它們對於人類來說確實是可讀的 - 在上面的例子中,替代操作代碼中的PageView :: getInstance() - > setTitle(「Home」)就是。 – 2012-07-21 18:00:57

+0

我同意@Truth那裏,使用註釋做東西就像保存變量作爲空白文件的文件名;你可以做到這一點,但它只是尷尬。此外,僅僅爲了讀取值而以文本形式訪問文件似乎是一種浪費,當您可以設置一個普通變量(例如公共類屬性)時,可以使用任何需要的值。 – Mahn 2012-07-27 20:48:11

回答

0

如果你真的想這樣做,那麼你可以將你需要的字符串從php文件中提取到外部文件,同時用_(string)替換註釋部分;對於每場比賽並在該文件上運行Poedit。 (首頁)

3

簡短的回答,你不能:在比賽$1將註釋(標題),$2將價值 -

你可以用.*\*\s\@(\w+)\s\"(\w+)\".*與之匹敵。

POEdit使用xgettext掃描您的文件,因此使用特定的語法,忽略註釋行。

例如,如果你的關鍵詞是_下面的例子將被解析,如:

_('test'); - >字符串 '測試'

_("test"); - >字符串 '測試'

_('test' - >字符串'測試'

_ 'test - >沒有趕上

_('test - >沒有趕上

_(test) - >沒有趕上

_($test) - >沒有趕上

//_('test'); - >沒有趕上

/*_('test');*/ - >沒有趕上

可以執行xgettext使用其他參數,但我不知道你是否能夠實現你的目標。


一個簡單的解決辦法(不是標準OFC)是添加其他關鍵詞中placeholder並作出PHP函數像

function placeholder($string){} 

,並用它使poEdit的可以分析它

class MyController extends Controller { 

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

} 

在您的前端解析器中,只需使用簡單的_($value)即可翻譯您的標題。

不知道你的代碼如何,但會假設它與此類似。

假設$標籤=「標題」和$值=「家」

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