2012-05-03 3 views
5

gettext를 사용하여 여러 개의 translataions이있는 웹 응용 프로그램이 있습니다. 그러나 이제는 응용 프로그램의 주요 재 작성 작업을 수행했으며 대부분의 문자열은 동일하지만 상당히 변경되거나 제거 된 문자열도 있습니다.사용하지 않는 gettext 문자열을 자동으로 제거하는 방법은 무엇입니까?

.po 파일을 만들 때 xgettext를 사용하고 코드에서 새 문자열을 찾아서 .po 파일에 추가 할 수는 있지만 대단히 유용하지 않은 문자열을 제거하는 옵션은 표시되지 않습니다. 코드에서 찾았습니다.

더 이상 코드에없는 .po 파일에서 문자열을 자동으로 제거하는 방법이 있습니까?

+1

자동으로 실행되지는 않지만 xgettext를 두 번 실행하면됩니다. 첫 번째 실행에서는 --no-location 매개 변수를 사용합니다. 두 번째 실행은 파일에 위치를 되돌립니다. 이제 더 이상 사용되지 않는 텍스트 문자열에는 위치가 없으므로 쉽게 삭제할 수 있습니다. – getSurreal

답변

0

Сan 그렇게

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

당신이 할 수있는, 당신은 messages.pot라는 파일에 최종 PO 카탈로그에, 그리고 message.po에 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을 읽을 수 있습니다

당신은 또한 완전히 제거하려면

은 한 단계가있다.