2016-09-01 7 views
0

xgettext 도구가 C 소스 파일 을 구문 분석하고 추가 변환을 위해 문자열을 수집하는 방법에 대한 오해가 있습니다.xgettext가 매크로로 정의 된 문자열을 인식하지 못합니다.

xgettext 도구 버전 0.10.35와 을 사용하여 구문 분석하는 동안 매크로처럼 정의 된 문자열을 인식하지 못하는 것으로 나타났습니다. 예를 들어

우리는 다음 내용 test_xgettext.c 파일이 있습니다

#include <stdio.h> 

#define _(str)   str 

#define STRING_1  _("string 1") 

int main(void) 
{ 
    printf(STRING_1); 
    printf(_("string 2")); 
    return 0; 
} 

우리가 실행하는 경우를

xgettext.exe test_xgettext.c -o test_xgettext.pot -k_

다음 콘텐츠가 포함 된 test_xgettext.pot 파일을 갖습니다.

# SOME DESCRIPTIVE TITLE. 
# Copyright (C) YEAR Free Software Foundation, Inc. 
# FIRST AUTHOR <[email protected]>, YEAR. 
# 
#, fuzzy 
msgid "" 
msgstr "" 
"Project-Id-Version: PACKAGE VERSION\n" 
"POT-Creation-Date: 2016-09-01 12:39+0300\n" 
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 
"Last-Translator: FULL NAME <[email protected]>\n" 
"Language-Team: LANGUAGE <[email protected]>\n" 
"MIME-Version: 1.0\n" 
"Content-Type: text/plain; charset=CHARSET\n" 
"Content-Transfer-Encoding: ENCODING\n" 

#: test_xgettext.c:10 
msgid "string 2" 
msgstr "" 

여기서 POT 파일에는 "string 2"만 있고, 목표는 이고 "string 1"과 "string 2"를 모두 수집합니다.

도움을 위해 미리 감사드립니다.

+1

작품. (xgettext 0.19.2 on linux) – michalsrb

+0

@michalsrb 필자는 Windows 7 Professional에서 내 버전을 사용합니다. xgettext의 현재 사용되는 버전을 변경할 수 있는지 확실하지 않습니다. – yurko

+1

아마도 언어를 올바르게 인식하지 못합니다. "-L C"매개 변수를 추가하십시오. 예를 들어 python 모드에서 "문자열 1"은 건너 뜁니다. – michalsrb

답변

0

매크로 대신 배열을 사용하는 경우 xgettext 0.10.35에 대해 작동하는 것으로 나타났습니다.

수정 된 소스 파일 : 우리는 POT 파일에 다음 출력이있다이 경우

#include <stdio.h> 

#define _(str)   str 

char STRING_1[] =  _("string 1"); 

int main(void) 
{ 
    printf(STRING_1); 
    printf(_("string 2")); 
    return 0; 
} 

(내가 왼쪽으로 중요하지 선) :

또한 그것으로 작동하는지 밝혀졌다
#: test_xgettext.c:5 
msgid "string 1" 
msgstr "" 

#: test_xgettext.c:10 
msgid "string 2" 
msgstr "" 

처음에는 xgettext 버전 0.19.8.1 (Windows 7 Professional)이 필요했습니다. 소스 파일 :

#include <stdio.h> 

#define _(str)   str 

#define STRING_1  _("string 1") 

int main(void) 
{ 
    printf(STRING_1); 
    printf(_("string 2")); 
    return 0; 
} 

생성 POT 파일 : 나를 위해

#: test_xgettext.c:5 
msgid "string 1" 
msgstr "" 

#: test_xgettext.c:10 
#, c-format 
msgid "string 2" 
msgstr ""