/* 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];
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");
}
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 },
/* 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;
{ "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' },
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 */
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"));
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"));
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 (_("\
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\
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);