From: Bruno Haible Date: Mon, 1 Oct 2007 00:50:54 +0000 (+0000) Subject: xgettext may now set the package name in the POT file. X-Git-Tag: v0.17~234 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f99c2ed3dfaff7a888553fdf948fbeb72a56596a;p=thirdparty%2Fgettext.git xgettext may now set the package name in the POT file. --- diff --git a/gettext-tools/src/ChangeLog b/gettext-tools/src/ChangeLog index de01dbc9e..b74a8716a 100644 --- a/gettext-tools/src/ChangeLog +++ b/gettext-tools/src/ChangeLog @@ -1,3 +1,14 @@ +2007-09-30 Bruno Haible + + * xgettext.c (package_name, package_version): New variables. + (long_options): Add --package-name, --package-version. + (main): Handle options --package-name, --package-version. + (usage): Document them. + (construct_header): Use package_name if present. + * msginit.c (project_id_version): Take a header argument. Return the + old value if already present. + (fields): Update. + 2007-09-30 Bruno Haible * message.h (format_type): New enum value 'format_kde'. diff --git a/gettext-tools/src/msginit.c b/gettext-tools/src/msginit.c index 5cd1e7f13..940311b10 100644 --- a/gettext-tools/src/msginit.c +++ b/gettext-tools/src/msginit.c @@ -872,8 +872,9 @@ failed: /* Construct the value for the Project-Id-Version field. */ static const char * -project_id_version () +project_id_version (const char *header) { + const char *old_field; const char *gettextlibdir; char *prog; char *argv[4]; @@ -885,6 +886,12 @@ project_id_version () size_t linelen; int exitstatus; + /* Return the old value if present, assuming it was already filled in by + xgettext. */ + old_field = get_field (header, "Project-Id-Version"); + if (old_field != NULL && strcmp (old_field, "PACKAGE VERSION") != 0) + return old_field; + gettextlibdir = getenv ("GETTEXTLIBDIR"); if (gettextlibdir == NULL || gettextlibdir[0] == '\0') gettextlibdir = relocate (LIBDIR "/gettext"); @@ -1284,7 +1291,7 @@ static struct } fields[] = { - { "Project-Id-Version", project_id_version, NULL }, + { "Project-Id-Version", NULL, project_id_version }, { "PO-Revision-Date", NULL, po_revision_date }, { "Last-Translator", last_translator, NULL }, { "Language-Team", language_team, NULL }, diff --git a/gettext-tools/src/xgettext.c b/gettext-tools/src/xgettext.c index b34282f64..e6c72cbc1 100644 --- a/gettext-tools/src/xgettext.c +++ b/gettext-tools/src/xgettext.c @@ -115,6 +115,12 @@ static int force_po; /* Copyright holder of the output file and the translations. */ static const char *copyright_holder = "THE PACKAGE'S COPYRIGHT HOLDER"; +/* Package name. */ +static const char *package_name = NULL; + +/* Package version. */ +static const char *package_version = NULL; + /* Email address or URL for reports of bugs in msgids. */ static const char *msgid_bugs_address = NULL; @@ -215,6 +221,8 @@ static const struct option long_options[] = { "omit-header", no_argument, &xgettext_omit_header, 1 }, { "output", required_argument, NULL, 'o' }, { "output-dir", required_argument, NULL, 'p' }, + { "package-name", required_argument, NULL, CHAR_MAX + 12 }, + { "package-version", required_argument, NULL, CHAR_MAX + 13 }, { "properties-output", no_argument, NULL, CHAR_MAX + 6 }, { "qt", no_argument, NULL, CHAR_MAX + 9 }, { "sort-by-file", no_argument, NULL, 'F' }, @@ -504,6 +512,12 @@ main (int argc, char *argv[]) case CHAR_MAX + 11: /* --boost */ recognize_format_boost = true; break; + case CHAR_MAX + 12: /* --package-name */ + package_name = optarg; + break; + case CHAR_MAX + 13: /* --package-version */ + package_version = optarg; + break; default: usage (EXIT_FAILURE); /* NOTREACHED */ @@ -844,6 +858,10 @@ Language specific options:\n")); printf (_("\ (only language C++)\n")); printf (_("\ + --kde recognize KDE 4 format strings\n")); + printf (_("\ + (only language C++)\n")); + printf (_("\ --boost recognize Boost format strings\n")); printf (_("\ (only language C++)\n")); @@ -886,6 +904,10 @@ Output details:\n")); printf (_("\ --foreign-user omit FSF copyright in output for foreign user\n")); printf (_("\ + --package-name=PACKAGE set package name in output\n")); + printf (_("\ + --package-version=VERSION set package version in output\n")); + printf (_("\ --msgid-bugs-address=EMAIL@ADDRESS set report address for msgid bugs\n")); printf (_("\ -m, --msgstr-prefix[=STRING] use STRING or \"\" as prefix for msgstr entries\n")); @@ -2785,12 +2807,23 @@ arglist_parser_done (struct arglist_parser *ap, int argnum) static message_ty * construct_header () { + char *project_id_version; time_t now; char *timestring; message_ty *mp; char *msgstr; static lex_pos_ty pos = { __FILE__, __LINE__ }; + if (package_name != NULL) + { + if (package_version != NULL) + project_id_version = xasprintf ("%s %s", package_name, package_version); + else + project_id_version = xasprintf ("%s", package_name); + } + else + project_id_version = xstrdup ("PACKAGE VERSION"); + if (msgid_bugs_address != NULL && msgid_bugs_address[0] == '\0') multiline_warning (xasprintf (_("warning: ")), xstrdup (_("\ @@ -2804,7 +2837,7 @@ specify an --msgid-bugs-address command line option.\n\ timestring = po_strftime (&now); msgstr = xasprintf ("\ -Project-Id-Version: PACKAGE VERSION\n\ +Project-Id-Version: %s\n\ Report-Msgid-Bugs-To: %s\n\ POT-Creation-Date: %s\n\ PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n\ @@ -2813,9 +2846,11 @@ Language-Team: LANGUAGE \n\ MIME-Version: 1.0\n\ Content-Type: text/plain; charset=CHARSET\n\ Content-Transfer-Encoding: 8bit\n", + project_id_version, msgid_bugs_address != NULL ? msgid_bugs_address : "", timestring); free (timestring); + free (project_id_version); mp = message_alloc (NULL, "", NULL, msgstr, strlen (msgstr) + 1, &pos);