2012-03-26 4 views
8

회사 번역 시스템에서 생성 한 .po 파일 집합을 사용하고 있습니다 (해당되는 경우 Pootle 사용)..po 파일의 오류 감지

$ msgfmt -v -C default.po 
default.po:1:2: syntax error 
msgfmt: found 1 fatal error 

: 나는 문제가 .mo (이진 대응 .po에 파일)이 파일을 변환 (파일의 형식을 확인하는 -C 연산자 포함) msgfmt 유틸리티를 사용하여, 나는 다음과 같은 오류가 있어요 msgfmt이이 오류를 발생시키는 원인에 대한 자세한 정보를 얻는 방법에 대해 꽤 많이 봤습니다.

파일의 첫 번째 몇 줄 (카탈로그에는 포함되지 않았지만 주석이나 빈 번역 문자열 만 제외)도 제거하려고했습니다.

나는 그것이 파일 인코딩 문제라고 생각하는 경향이 있지만, 나는이 유형의 것을 많이 다루지 않았기 때문에 이것은 사용자 오류라는 것을 인정하는 것 이상이다.

누구나 내가이 파일의 오류를보다 구체적으로 진단 할 수있는 방법을 알고 있습니까? 또한 특정 파일 하나가 아닌 모든 현지화 된 파일에서 동일한 동작이 나타납니다.

답변

7

BOM에 문제가있는 것처럼 들리지만 PO 파일에는 이러한 파일이 포함되어서는 안됩니다. 이미 Pootle pocompile을 이미 시스템에 설치 했으므로 Translate Toolkit에서 pocompile을 실행하는 방법도 있습니다.

5

내 생각 엔 인코딩 문제 일 것입니다. 오류가 이미 파일의 처음 몇 문자에 나타나므로 범인은 아마도 byte order mark이며 utf-8에서는 바이트 시퀀스 0xEF, 0xBB, 0xBF로 인코딩됩니다. 이를 확인하는 가장 좋은 방법은 16 진수 편집기를 사용하여 파일을 보거나 파일에 바이트 순서 표시가 있는지 여부를 알려주는 편집기를 사용하는 것입니다.

예를 들어 vim에서는 set bomb?을 사용할 수 있으며 bomb 또는 nobomb 중 하나를 알려줍니다.

Here는 바이트 순서 표시로 시작하는 utf-8 인코딩 파일로 인해 발생한 동일한 오류 메시지가있는 사람의 블로그 항목입니다.

+1

Windows 사용자 : 메모장을 사용하여 제안 된 링크 된 기사의 제안 ++의 메뉴 옵션 : 인코딩> BOM이없는 UTF-8로 변환 – plusjeff