summaryrefslogtreecommitdiff
path: root/locale
diff options
context:
space:
mode:
authorMichael R Sweet <michaelrsweet@gmail.com>2017-11-10 15:33:47 -0500
committerMichael R Sweet <michaelrsweet@gmail.com>2017-11-10 15:33:47 -0500
commit89550f3f3373604d656a422896600446c33e1f2e (patch)
treef6796e494037a96a78a244604e4ead58998bcfbe /locale
parent9fafba54bfed61681a9caff3d0cf39c329b85552 (diff)
downloadcups-89550f3f3373604d656a422896600446c33e1f2e.tar.gz
Add media-type localizations for printer-specific media types (Issue #5168)
cups/dest-localization.c: Move .strings file loader to language.c. cups/language-private.h: Add load options for _cupsMessageLoad. cups/language.c: Move .strings file loader to this file. cups/ppd-cache.c: Save printer-strings-uri value and load the strings file for m edia-type cups/ppd-private.h: Bump cache version and add strings_uri. locale/checkpo.c: Use _cupsMessageLoad for .strings files.
Diffstat (limited to 'locale')
-rw-r--r--locale/checkpo.c189
1 files changed, 20 insertions, 169 deletions
diff --git a/locale/checkpo.c b/locale/checkpo.c
index f46f4cef0..75d9255da 100644
--- a/locale/checkpo.c
+++ b/locale/checkpo.c
@@ -25,9 +25,6 @@
static char *abbreviate(const char *s, char *buf, int bufsize);
static cups_array_t *collect_formats(const char *id);
-static cups_array_t *cups_load_strings(const char *filename);
-static int cups_read_strings(cups_file_t *fp, char *buffer, size_t bufsize, char **id, char **str);
-static char *cups_scan_strings(char *buffer);
static void free_formats(cups_array_t *fmts);
@@ -71,9 +68,9 @@ main(int argc, /* I - Number of command-line args */
*/
if (strstr(argv[i], ".strings"))
- po = cups_load_strings(argv[i]);
+ po = _cupsMessageLoad(argv[i], _CUPS_MESSAGE_STRINGS | _CUPS_MESSAGE_UNQUOTE);
else
- po = _cupsMessageLoad(argv[i], 1);
+ po = _cupsMessageLoad(argv[i], _CUPS_MESSAGE_UNQUOTE);
if (!po)
{
@@ -102,11 +99,11 @@ main(int argc, /* I - Number of command-line args */
* Make sure filter message prefixes are not translated...
*/
- if (!strncmp(msg->id, "ALERT:", 6) || !strncmp(msg->id, "CRIT:", 5) ||
- !strncmp(msg->id, "DEBUG:", 6) || !strncmp(msg->id, "DEBUG2:", 7) ||
- !strncmp(msg->id, "EMERG:", 6) || !strncmp(msg->id, "ERROR:", 6) ||
- !strncmp(msg->id, "INFO:", 5) || !strncmp(msg->id, "NOTICE:", 7) ||
- !strncmp(msg->id, "WARNING:", 8))
+ if (!strncmp(msg->msg, "ALERT:", 6) || !strncmp(msg->msg, "CRIT:", 5) ||
+ !strncmp(msg->msg, "DEBUG:", 6) || !strncmp(msg->msg, "DEBUG2:", 7) ||
+ !strncmp(msg->msg, "EMERG:", 6) || !strncmp(msg->msg, "ERROR:", 6) ||
+ !strncmp(msg->msg, "INFO:", 5) || !strncmp(msg->msg, "NOTICE:", 7) ||
+ !strncmp(msg->msg, "WARNING:", 8))
{
if (pass)
{
@@ -115,11 +112,11 @@ main(int argc, /* I - Number of command-line args */
}
printf(" Bad prefix on filter message \"%s\"\n",
- abbreviate(msg->id, idbuf, sizeof(idbuf)));
+ abbreviate(msg->msg, idbuf, sizeof(idbuf)));
}
- idfmt = msg->id + strlen(msg->id) - 1;
- if (idfmt >= msg->id && *idfmt == '\n')
+ idfmt = msg->msg + strlen(msg->msg) - 1;
+ if (idfmt >= msg->msg && *idfmt == '\n')
{
if (pass)
{
@@ -128,14 +125,14 @@ main(int argc, /* I - Number of command-line args */
}
printf(" Trailing newline in message \"%s\"\n",
- abbreviate(msg->id, idbuf, sizeof(idbuf)));
+ abbreviate(msg->msg, idbuf, sizeof(idbuf)));
}
- for (; idfmt >= msg->id; idfmt --)
+ for (; idfmt >= msg->msg; idfmt --)
if (!isspace(*idfmt & 255))
break;
- if (idfmt >= msg->id && *idfmt == '!')
+ if (idfmt >= msg->msg && *idfmt == '!')
{
if (pass)
{
@@ -144,10 +141,10 @@ main(int argc, /* I - Number of command-line args */
}
printf(" Exclamation in message \"%s\"\n",
- abbreviate(msg->id, idbuf, sizeof(idbuf)));
+ abbreviate(msg->msg, idbuf, sizeof(idbuf)));
}
- if ((idfmt - 2) >= msg->id && !strncmp(idfmt - 2, "...", 3))
+ if ((idfmt - 2) >= msg->msg && !strncmp(idfmt - 2, "...", 3))
{
if (pass)
{
@@ -156,7 +153,7 @@ main(int argc, /* I - Number of command-line args */
}
printf(" Ellipsis in message \"%s\"\n",
- abbreviate(msg->id, idbuf, sizeof(idbuf)));
+ abbreviate(msg->msg, idbuf, sizeof(idbuf)));
}
@@ -165,9 +162,9 @@ main(int argc, /* I - Number of command-line args */
untranslated ++;
continue;
}
- else if (strchr(msg->id, '%'))
+ else if (strchr(msg->msg, '%'))
{
- idfmts = collect_formats(msg->id);
+ idfmts = collect_formats(msg->msg);
strfmts = collect_formats(msg->str);
fmtidx = 0;
@@ -211,7 +208,7 @@ main(int argc, /* I - Number of command-line args */
printf(" Bad translation string \"%s\"\n for \"%s\"\n",
abbreviate(msg->str, strbuf, sizeof(strbuf)),
- abbreviate(msg->id, idbuf, sizeof(idbuf)));
+ abbreviate(msg->msg, idbuf, sizeof(idbuf)));
fputs(" Translation formats:", stdout);
for (strfmt = (char *)cupsArrayFirst(strfmts);
strfmt;
@@ -248,7 +245,7 @@ main(int argc, /* I - Number of command-line args */
printf(" Bad escape \\%c in filter message \"%s\"\n"
" for \"%s\"\n", strfmt[1],
abbreviate(msg->str, strbuf, sizeof(strbuf)),
- abbreviate(msg->id, idbuf, sizeof(idbuf)));
+ abbreviate(msg->msg, idbuf, sizeof(idbuf)));
break;
}
}
@@ -387,152 +384,6 @@ collect_formats(const char *id) /* I - msgid string */
/*
- * 'cups_load_strings()' - Load a .strings file into a _cups_msg_t array.
- */
-
-static cups_array_t * /* O - CUPS array of _cups_msg_t values */
-cups_load_strings(const char *filename) /* I - File to load */
-{
- cups_file_t *fp; /* .strings file */
- cups_array_t *po; /* Localization array */
- _cups_message_t *m; /* Localization message */
- char buffer[8192], /* Message buffer */
- *id, /* ID string */
- *str; /* Translated message */
-
-
- if ((fp = cupsFileOpen(filename, "r")) == NULL)
- return (NULL);
-
- po = _cupsMessageNew(NULL);
-
- while (cups_read_strings(fp, buffer, sizeof(buffer), &id, &str))
- {
- if ((m = malloc(sizeof(_cups_message_t))) == NULL)
- break;
-
- m->id = strdup(id);
- m->str = strdup(str);
-
- if (m->id && m->str)
- cupsArrayAdd(po, m);
- else
- {
- if (m->id)
- free(m->id);
-
- if (m->str)
- free(m->str);
-
- free(m);
-
- cupsArrayDelete(po);
- po = NULL;
- break;
- }
- }
-
- cupsFileClose(fp);
-
- return (po);
-}
-
-
-/*
- * 'cups_read_strings()' - Read a pair of strings from a .strings file.
- */
-
-static int /* O - 1 on success, 0 on failure */
-cups_read_strings(cups_file_t *strings, /* I - .strings file */
- char *buffer, /* I - Line buffer */
- size_t bufsize, /* I - Size of line buffer */
- char **id, /* O - Pointer to ID string */
- char **str) /* O - Pointer to translation string */
-{
- char *bufptr; /* Pointer into buffer */
-
-
- while (cupsFileGets(strings, buffer, bufsize))
- {
- if (buffer[0] != '\"')
- continue;
-
- *id = buffer + 1;
- bufptr = cups_scan_strings(buffer);
-
- if (*bufptr != '\"')
- continue;
-
- *bufptr++ = '\0';
-
- while (*bufptr && *bufptr != '\"')
- bufptr ++;
-
- if (!*bufptr)
- continue;
-
- *str = bufptr + 1;
- bufptr = cups_scan_strings(bufptr);
-
- if (*bufptr != '\"')
- continue;
-
- *bufptr = '\0';
-
- return (1);
- }
-
- return (0);
-}
-
-
-/*
- * 'cups_scan_strings()' - Scan a quoted string.
- */
-
-static char * /* O - End of string */
-cups_scan_strings(char *buffer) /* I - Start of string */
-{
- char *bufptr; /* Pointer into string */
-
-
- for (bufptr = buffer + 1; *bufptr && *bufptr != '\"'; bufptr ++)
- {
- if (*bufptr == '\\')
- {
- if (bufptr[1] >= '0' && bufptr[1] <= '3' &&
- bufptr[2] >= '0' && bufptr[2] <= '7' &&
- bufptr[3] >= '0' && bufptr[3] <= '7')
- {
- /*
- * Decode \nnn octal escape...
- */
-
- *bufptr = (char)(((((bufptr[1] - '0') << 3) | (bufptr[2] - '0')) << 3) | (bufptr[3] - '0'));
- _cups_strcpy(bufptr + 1, bufptr + 4);
- }
- else
- {
- /*
- * Decode \C escape...
- */
-
- _cups_strcpy(bufptr, bufptr + 1);
- if (*bufptr == 'n')
- *bufptr = '\n';
- else if (*bufptr == 'r')
- *bufptr = '\r';
- else if (*bufptr == 't')
- *bufptr = '\t';
- }
- }
- }
-
- return (bufptr);
-}
-
-
-/*
* 'free_formats()' - Free all of the format strings.
*/