2015-06-20 55 views
1

現在我正在基於laravel開發兩個項目,並且我必須實現本地化。所以我發現最常用的方法是使用Gettext。 我只有gettext()和ngettext()翻譯字符串時遇到一些困難。我建立能夠像這樣轉換字符串的包裝:構建一個Gettext包裝器

fantasticFunction('Hi my name is :name and I have {n, one friend, :n friends}', [ 'name' => 'Luca', 'n' => 1 ]) 

而是寫的:

sprintf('Hi my name is %s and I have', name) . ' ' . $n . ngettext('friend', 'friends', $n) 

所以問題是:如果我做,如包裝,然後像poEdit的工具會不認識那些字符串。我該如何解決?

+0

然而,您可以本地化,但是您只需檢查自從添加了Laravel標籤以來 - 您確實意識到Laravel具有本地化內置功能,對嗎? –

+0

是的,但我和我的同事決定使用gettext,因爲它的廣泛支持 –

回答

1

您需要將fantasticFunction作爲關鍵字添加 - 這在xgettext文檔中有詳細記錄,而Poedit具有屬性UI。

但沒有什麼會幫助你與那{n, one friend, :n friends} thingie。如果你決定使用gettext,你需要真正遵循它的模型,這與它不兼容。看看ngettext的工作原理和plural forms in different languages in gettext的發明之前,你自己的方法。你對使用gettext的複數支持(一般來說勝任地完成)的「困難」含糊不清,你確定它不僅僅是NIH綜合症的一個例子嗎?