From 3d529f4ea2b0de42aa2144dbe904e564b7b0b813 Mon Sep 17 00:00:00 2001 From: Luca Falavigna Date: Mon, 20 Aug 2012 23:30:34 +0200 Subject: Imported Upstream version 2.2.0 --- src/engine/SCons/Tool/xgettext.xml | 288 +++++++++++++++++++++++++++++++++++++ 1 file changed, 288 insertions(+) create mode 100644 src/engine/SCons/Tool/xgettext.xml (limited to 'src/engine/SCons/Tool/xgettext.xml') diff --git a/src/engine/SCons/Tool/xgettext.xml b/src/engine/SCons/Tool/xgettext.xml new file mode 100644 index 0000000..ec37ad1 --- /dev/null +++ b/src/engine/SCons/Tool/xgettext.xml @@ -0,0 +1,288 @@ + + + +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 + + +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 +'.'), but only on demand (i.e. when given +POT file is required or when special alias is invoked). This +builder adds its targe node (messages.pot, say) to a +special alias (pot-update by default, see +&cv-link-POTUPDATE_ALIAS;) so you can update/create them easily with +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 +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 +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;. + + + + -- cgit v1.2.3