2010-06-03 69 views
8

尋找有關如何在對小的msgid值進行小編輯時高效處理gettext PO文件的提示和/或工具。如何在對較大的文本值進行小編輯時高效處理gettext PO文件

示例:我們有許多存儲在PO消息目錄文件中的多句/多段消息。如果我們對消息做出非常小的改動,可能是編輯了一個單句,甚至糾正了標點符號,我們在運行msgmerge實用程序時會丟失原來的翻譯。

我們的翻譯人員從零開始重新翻譯長消息(已經通過編輯審批流程),而是返回其PO文件的備份副本,並手動搜索最後一個msgid/msgstr翻譯對的文本然後他們會根據當前的msgid值進行比較,以查看發生了什麼變化,然後複製並粘貼最後一次翻譯,然後編輯它們以反映更新後的msgid值。

這是很多工作!當然,必須有更好的方式來處理這種類型的工作流程?

是否有一種最佳實踐方式來歸檔並查找不再位於PO文件中的以前的翻譯?想到的一個想法是在我們的消息文本中或在我們的消息之前的評論中存儲唯一的消息ID,並使用此ID來檢索先前的msgid/msgstr翻譯對以供審閱。還是有PO編輯或在線服務,使這個過程更有效率?

謝謝 馬爾科姆

回答

5

Virtaal的翻譯記憶庫支持,也許可以幫助做到這一點。如果您的原單位在翻譯記憶庫中,它將在一定的變化範圍內(基於Levenshtein距離)顯示(有差異)。它仍將包含原始(未修改的)翻譯,但至少原始文本更易於訪問,且差異突出顯示。

我不是100%確定,但Pootle也可能提供基於Web的解決方案。如果您需要任何幫助,請在FreeNode的#pootle中詢問。

更普遍的改進當然是儘可能地分開/分割單元。

+0

謝謝您沃爾特。問候,馬爾科姆 – Malcolm 2010-06-22 01:50:24

9

我一直在尋找一種對msgids進行細微修改而不干擾現有翻譯的方法 - 例如,源文本中的錯字修正。這裏有一個配方,我只是工作了,不涉及網站:

  1. 使用msgen從GNU的gettext生成英語對英語的PO文件:

    msgen project.pot >corrections.po

  2. 手動編輯「corrections.po」中的msgstr s以反映在源文本中進行的拼寫錯誤修復,因此我們有一個從未糾正字符串到已糾正字符串的映射。 (我沒有想過如何自動化這一點。)

  3. 對於每一個 「真實」 的翻譯(例如ca.po):濫用poswap從翻譯工具包(translate-toolkit在Ubuntu)更改msgids:

    poswap -i corrections.po -t ca.po -o ca.new.po

這似乎確實從GNU gettext po文件中丟失頭文件註釋和廢棄的字符串,但手動修復這些文件比在每次翻譯中手動調整msgids(並且可能很容易被編寫腳本)要少得多。

(顯然,這應該只在特殊情況下,如果你絕對相信,沒有翻譯人員需要有機會重新審查他們的翻譯使用。)

+0

非常聰明。謝謝JTN。問候,馬爾科姆 – Malcolm 2010-09-26 18:02:58