2013-04-22 69 views
6

即將建立一個Silex/Symfony2項目,我一直在尋找一種方法來生成XLIFF/PO/YAML翻譯文件,該文件基於項目內部翻譯的文本,但沒有找到任何指令或文檔。如何從Symfony2/Silex項目生成翻譯文件(.po,.xliff,.yml,...)?

我的問題是:是否有一種自動方式爲Symfony2/Silex項目生成特定格式的翻譯文件?

如果是,請告訴我如何生成文件,然後更新翻譯。

如果不是,請告訴我如何創建翻譯文件,然後爲我的項目添加更多文本?我正在尋找一個編輯器基於桌面或基於Web的,而不是使用普通的編輯器,如Transifex,GetLocalization(但他們沒有選擇創建一個新的文件或添加更多的文本)

回答

10

經過長時間的搜索互聯網,我發現了一個很好的一個:

https://github.com/schmittjoh/JMSTranslationBundle

+0

我有需要改變成一個.xliff文件.xlxs - 你知道這是如何實現?謝謝。 – 2014-10-27 11:06:21

+0

這不適用於'Twig 2.0',直到'JMS 1.3.1' – Trix 2017-03-06 13:48:40

5

我看到你發現了一個轉換器,但可以回答有關生成您最初的翻譯文件的第一個問題 - 如果你有Gettext在系統上安裝

你可以從你的「待發文本」生成一個PO文件在項目內部進行了解答「。命令行程序xgettext將掃描源文件以查找您正在使用的任何功能。

舉例:
要掃描的PHP文件爲trans方法調用as shown here你可以使用下面的命令的情況下 -

find . -name "*.php" | xargs xgettext --language=PHP --keyword=trans --output=messages.pot 

你的問題有關編輯:
你可以使用任何PO編輯器,例如作爲POEdit來管理您的翻譯,但正如您所說,您最終需要將PO文件轉換爲Symfony的XLIFF或YAML語言包。

我看到你已經找到了一個轉換工具。你也可以嘗試我爲Loco寫的那個。它支持PO to YAMLPO to XLIFF

+0

我認爲用xgettext處理symfonys複數形式是不可能的。 – steven 2015-10-22 14:48:41

+0

這是真的。 Gettext的有限複數語法與Symfony的更具表達性的語法不兼容。你必須在實際的字符串中嵌入特殊的語法。雖然這適用於Symfony使用的任何格式,包括推薦的XLIFF格式 – Tim 2015-10-22 17:48:26

1

解決方法忙碌的人(UNIX)

您可以運行在終端中輸入以下命令:

$ grep -rEo --no-filename "'.+'\|\btrans\b" templates/ > output.txt 

這將輸出的郵件列表翻譯:

'Please provide your email'|trans 
'Phone'|trans 
'Please provide your phone number'|trans 
... 

我的意思是差不多..但你通常可以從他做一些工作re ...

很顯然,你必須調整命令到你的喜好(transchoice,雙引號,而不是單...)。

不理想,但可以幫助!

grep選項

  • grep -R, -r, --recursive:讀每個目錄下的所有文件,遞歸這相當於-d遞歸選項。
  • grep -E, --extended-regexp:將PATTERN解釋爲擴展正則表達式。
  • grep -o, --only-matching:僅顯示匹配PATTERN的匹配行的部分。
  • grep -h, --no-filename:當搜索多個文件時,禁止輸出文件名的前綴。

source