2012-05-03 20 views
5

我有一個web應用程序,我有幾個使用gettext的translataions。但是現在我已經對應用程序進行了重大改寫,雖然大部分字符串都是相同的,但也有不少改變或刪除了很多。如何自動刪除未使用的gettext字符串?

我使用xgettext來創建.po文件,能夠在代碼中找到新字符串並將它們添加到.po文件是非常好的,但我沒有看到一個選項來刪除不是在代碼中找到。

是否有自動的方式從.po文件中刪除不再在代碼中的字符串?

+1

它不是自動的,但我的工作是兩次運行xgettext。第一次運行我使用參數 - 無位置。第二次運行將位置放回到文件中。現在不再使用的文本字符串沒有位置,並且可以輕鬆識別刪除。 – getSurreal

回答

0

Сan所以

find . -name '*.po' -print0 | while read -d '' -r file; do msgattrib --output-file="$file" --no-obsolete "$file"; done 
3

假如你有一個包含唯一的字符串應該是在最後的PO目錄在一個名爲messages.pot文件和目標PO目錄中message.po新PO模板文件,你可以這樣做:

msgattrib --set-obsolete --ignore-file=messages.pot -o messages.po messages.po 

這標誌着任何過時的字符串。 --set-obsolete開關告訴msgattrib將已過時的標誌應用於目標文件中的所有字符串,並且--ignore-file指示它忽略出現在指定文件(本例中爲PO模板)中的字符串。

如果你也想徹底刪除了,有一個步驟:

msgattrib --no-obsolete -o messages.po messages.po 

你可以閱讀更多關於msgattrib命令here

相關問題