From 140d836e9cd54fb67b969fd82ef7ed19ba574d40 Mon Sep 17 00:00:00 2001 From: Luca Falavigna Date: Sat, 26 Apr 2014 15:11:58 +0200 Subject: Imported Upstream version 2.3.1 --- src/engine/SCons/Tool/xgettext.xml | 167 ++++++++++++++++++++++++++++--------- 1 file changed, 126 insertions(+), 41 deletions(-) (limited to 'src/engine/SCons/Tool/xgettext.xml') diff --git a/src/engine/SCons/Tool/xgettext.xml b/src/engine/SCons/Tool/xgettext.xml index 4e652c3..8f64a7c 100644 --- a/src/engine/SCons/Tool/xgettext.xml +++ b/src/engine/SCons/Tool/xgettext.xml @@ -1,40 +1,62 @@ + + + +%scons; + +%builders-mod; + +%functions-mod; + +%tools-mod; + +%variables-mod; +]> + + + + This scons tool is a part of scons &t-link-gettext; toolset. It provides scons interface to xgettext(1) program, which extracts internationalized messages from source code. The tool provides &b-POTUpdate; builder to make PO Template files. + -POTSUFFIX -POTUPDATE_ALIAS -XGETTEXTCOM -XGETTEXTCOMSTR -XGETTEXTFLAGS -XGETTEXTFROM -XGETTEXTFROMPREFIX -XGETTEXTFROMSUFFIX -XGETTEXTPATH -XGETTEXTPATHPREFIX -XGETTEXTPATHSUFFIX -_XGETTEXTDOMAIN -_XGETTEXTFROMFLAGS -_XGETTEXTPATHFLAGS +POTSUFFIX +POTUPDATE_ALIAS +XGETTEXTCOM +XGETTEXTCOMSTR +XGETTEXTFLAGS +XGETTEXTFROM +XGETTEXTFROMPREFIX +XGETTEXTFROMSUFFIX +XGETTEXTPATH +XGETTEXTPATHPREFIX +XGETTEXTPATHSUFFIX +_XGETTEXTDOMAIN +_XGETTEXTFROMFLAGS +_XGETTEXTPATHFLAGS -POTDOMAIN +POTDOMAIN + The builder belongs to &t-link-xgettext; tool. The builder updates target POT file if exists or creates one if it doesn't. The node is not built by default (i.e. it is Ignored from @@ -46,7 +68,9 @@ special alias (pot-update by default, see scons pot-update. The file is not written until there is no real change in internationalized messages (or in comments that enter POT file). + + You may see xgettext(1) being invoked by the &t-link-xgettext; tool even if there is no real change in internationalized messages (so the POT file is not being updated). This @@ -54,235 +78,296 @@ happens every time a source file has changed. In such case we invoke xgettext(1) and compare its output with the content of POT file to decide whether the file should be updated or not. + + Example 1. Let's create po/ directory and place following SConstruct script there: - + + # SConstruct in 'po/' subdir env = Environment( tools = ['default', 'xgettext'] ) env.POTUpdate(['foo'], ['../a.cpp', '../b.cpp']) env.POTUpdate(['bar'], ['../c.cpp', '../d.cpp']) - + + Then invoke scons few times: - + + user@host:$ scons # Does not create foo.pot nor bar.pot user@host:$ scons foo.pot # Updates or creates foo.pot user@host:$ scons pot-update # Updates or creates foo.pot and bar.pot user@host:$ scons -c # Does not clean foo.pot nor bar.pot. - + + the results shall be as the comments above say. + + Example 2. The &b-POTUpdate; builder may be used with no target specified, in which case default target messages.pot will be used. The default target may also be overriden by setting &cv-link-POTDOMAIN; construction variable or providing it as an override to &b-POTUpdate; builder: - + + # SConstruct script env = Environment( tools = ['default', 'xgettext'] ) env['POTDOMAIN'] = "foo" env.POTUpdate(source = ["a.cpp", "b.cpp"]) # Creates foo.pot ... env.POTUpdate(POTDOMAIN = "bar", source = ["c.cpp", "d.cpp"]) # and bar.pot - + + Example 3. The sources may be specified within separate file, for example POTFILES.in: - + + # POTFILES.in in 'po/' subdirectory ../a.cpp ../b.cpp # end of file - + + The name of the file (POTFILES.in) containing the list of sources is provided via &cv-link-XGETTEXTFROM;: - + + # SConstruct file in 'po/' subdirectory env = Environment( tools = ['default', 'xgettext'] ) env.POTUpdate(XGETTEXTFROM = 'POTFILES.in') - + + Example 4. You may use &cv-link-XGETTEXTPATH; to define source search path. Assume, for example, that you have files a.cpp, b.cpp, po/SConstruct, po/POTFILES.in. Then your POT-related files could look as below: - + + # POTFILES.in in 'po/' subdirectory a.cpp b.cpp # end of file - + - + # SConstruct file in 'po/' subdirectory env = Environment( tools = ['default', 'xgettext'] ) env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH='../') - + + Example 5. Multiple search directories may be defined within a list, i.e. XGETTEXTPATH = ['dir1', 'dir2', ...]. The order in the list determines the search order of source files. The path to the first file found is used. + + Let's create 0/1/po/SConstruct script: - + + # SConstruct file in '0/1/po/' subdirectory env = Environment( tools = ['default', 'xgettext'] ) env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../', '../../']) - + + and 0/1/po/POTFILES.in: - + + # POTFILES.in in '0/1/po/' subdirectory a.cpp # end of file - + + Write two *.cpp files, the first one is 0/a.cpp: - + + /* 0/a.cpp */ gettext("Hello from ../../a.cpp") - + + and the second is 0/1/a.cpp: - + + /* 0/1/a.cpp */ gettext("Hello from ../a.cpp") - + + then run scons. You'll obtain 0/1/po/messages.pot with the message "Hello from ../a.cpp". When you reverse order in $XGETTEXTFOM, i.e. when you write SConscript as - + + # SConstruct file in '0/1/po/' subdirectory env = Environment( tools = ['default', 'xgettext'] ) env.POTUpdate(XGETTEXTFROM = 'POTFILES.in', XGETTEXTPATH=['../../', '../']) - then the messages.pot will contain + + +then the messages.pot will contain msgid "Hello from ../../a.cpp" line and not msgid "Hello from ../a.cpp". + - + Suffix used for PO Template files (default: '.pot'). See &t-link-xgettext; tool and &b-link-POTUpdate; builder. + + Name of the common phony target for all PO Templates created with &b-link-POUpdate; (default: 'pot-update'). See &t-link-xgettext; tool and &b-link-POTUpdate; builder. + + Path to xgettext(1) program (found via Detect()). See &t-link-xgettext; tool and &b-link-POTUpdate; builder. + + Complete xgettext command line. See &t-link-xgettext; tool and &b-link-POTUpdate; builder. + + A string that is shown when xgettext(1) command is invoked (default: '', which means "print &cv-link-XGETTEXTCOM;"). See &t-link-xgettext; tool and &b-link-POTUpdate; builder. + + Additional flags to xgettext(1). See &t-link-xgettext; tool and &b-link-POTUpdate; builder. + + Name of file containing list of xgettext(1)'s source files. Autotools' users know this as POTFILES.in so they will in most cases set XGETTEXTFROM="POTFILES.in" here. The &cv-XGETTEXTFROM; files have same syntax and semantics as the well known GNU POTFILES.in. See &t-link-xgettext; tool and &b-link-POTUpdate; builder. + + List of directories, there xgettext(1) will look for source files (default: []). This variable works only together with &cv-link-XGETTEXTFROM; See also &t-link-xgettext; tool and &b-link-POTUpdate; builder. + + This flag is used to add single search path to xgettext(1)'s commandline (default: '-D'). + + (default: '') + + This flag is used to add single &cv-link-XGETTEXTFROM; file to xgettext(1)'s commandline (default: '-f'). + + (default: '') + + Internal "macro". Generates xgettext domain name form source and target (default: '${TARGET.filebase}'). + + Internal "macro". Genrates list of -D<dir> flags from the &cv-link-XGETTEXTPATH; list. + + Internal "macro". Generates list of -f<file> flags from &cv-link-XGETTEXTFROM;. + + + \ No newline at end of file -- cgit v1.2.3