2012-05-03 32 views
5

Tôi có một ứng dụng web nơi tôi có một số phiên dịch bằng gettext. Nhưng bây giờ tôi đã thực hiện một viết lại chính của ứng dụng và trong khi hầu hết các chuỗi là như nhau, cũng có khá một vài thay đổi đáng kể hoặc bị loại bỏ.Làm thế nào để tự động loại bỏ các chuỗi gettext không sử dụng?

Tôi sử dụng xgettext để tạo tệp .po và thật tuyệt vời khi có thể tìm chuỗi mới trong mã và thêm chúng vào tệp .po, nhưng tôi không thấy tùy chọn xóa chuỗi không được tìm thấy trong mã.

Có cách tự động để xóa các chuỗi khỏi tệp .po không còn trong mã không?

+1

Nó không tự động, nhưng công việc của tôi xung quanh là chạy xgettext hai lần. Lần chạy đầu tiên tôi sử dụng tham số --no-location. Lần chạy thứ hai đặt vị trí trở lại các tệp. Bây giờ các chuỗi văn bản không còn được sử dụng không có vị trí và có thể dễ dàng xác định để xóa. – getSurreal

Trả lời

0

Сan nên

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

Giả sử bạn có một PO tập tin mẫu tươi có chứa chỉ chuỗi mà phải ở trong các cửa hàng PO thức trong một tập tin gọi là messages.pot, và nhắm mục tiêu Danh mục PO trong message.po, bạn có thể làm điều này:

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

Điều này đánh dấu bất kỳ chuỗi lỗi thời nào. Công tắc --set-obsolete cho msgattrib áp dụng cờ lỗi thời cho tất cả các chuỗi trong tệp đích và --ignore-file yêu cầu nó bỏ qua các chuỗi xuất hiện trong tệp được chỉ định (mẫu PO trong trường hợp của chúng tôi).

Nếu bạn cũng muốn loại bỏ chúng hoàn toàn, có thêm một bước:

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

Bạn có thể đọc thêm về msgattrib lệnh here.

Các vấn đề liên quan