2016-09-01 5 views
0

xgettextツールがCソースファイルを解析して翻訳するための文字列を収集する方法についていくつかの誤解があります。xgettextはマクロとして定義された文字列を認識しません

私はxgettextツールのバージョン0.10.35と を使用しましたが、解析中にマクロのように定義された文字列を認識しないことが判明しました。例えば

我々は次の内容でtest_xgettext.cファイルがあります:私たちは

を実行する場合xgettext.exe test_xgettext.c -o test_xgettext.pot -k_

#include <stdio.h> 

#define _(str)   str 

#define STRING_1  _("string 1") 

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

次の内容の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ファイルに「文字列2」しかありません。私の目標は「文字列1」と「文字列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 "" 
関連する問題