summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sweet <michael.r.sweet@gmail.com>2017-08-09 13:43:08 -0400
committerMichael Sweet <michael.r.sweet@gmail.com>2017-08-09 13:43:08 -0400
commit997db40489fbcc345cc2165af859c07fbc3e5d46 (patch)
treee9bda0dba4dbae213de9cb73c2e02f6320ff50f5
parent345e10ca719b6a5c460f3e760f31384770e066de (diff)
Fix the localization fallback code on macOS (rdar://33583699)
-rw-r--r--CHANGES.md1
-rw-r--r--cups/language.c4
-rw-r--r--cups/testlang.c24
3 files changed, 25 insertions, 4 deletions
diff --git a/CHANGES.md b/CHANGES.md
index 62a8b81a9..e88df3b20 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -38,6 +38,7 @@ CHANGES IN CUPS V2.2.5
- CUPS now sends the `Date` HTTP header in IPP requests (rdar://33302034)
- The `ippCopyAttribute` function did not copy out-of-band values correctly
(rdar://33688003)
+- Fixed the localization fallback code on macOS (rdar://33583699)
- The `ipptool` program now offers an option to validate response headers.
diff --git a/cups/language.c b/cups/language.c
index ec10fc77c..626c1316a 100644
--- a/cups/language.c
+++ b/cups/language.c
@@ -1468,8 +1468,8 @@ appleMessageLoad(const char *locale) /* I - Locale ID */
*/
strlcpy(baselang, locale, sizeof(baselang));
- if (baselang[3] == '-' || baselang[3] == '_')
- baselang[3] = '\0';
+ if (baselang[2] == '-' || baselang[2] == '_')
+ baselang[2] = '\0';
locale = baselang;
}
diff --git a/cups/testlang.c b/cups/testlang.c
index d6c9fddaa..e205711e6 100644
--- a/cups/testlang.c
+++ b/cups/testlang.c
@@ -37,6 +37,8 @@ main(int argc, /* I - Number of command-line arguments */
cups_lang_t *language; /* Message catalog */
cups_lang_t *language2; /* Message catalog */
struct lconv *loc; /* Locale data */
+ const char *msgid, /* String identifier */
+ *msgstr; /* Localized string */
char buffer[1024]; /* String buffer */
double number; /* Number */
static const char * const tests[] = /* Test strings */
@@ -74,8 +76,26 @@ main(int argc, /* I - Number of command-line arguments */
printf("Language = \"%s\"\n", language->language);
printf("Encoding = \"%s\"\n", _cupsEncodingName(language->encoding));
- printf("No = \"%s\"\n", _cupsLangString(language, "No"));
- printf("Yes = \"%s\"\n", _cupsLangString(language, "Yes"));
+
+ msgid = "No";
+ msgstr = _cupsLangString(language, msgid);
+ if (msgid == msgstr)
+ {
+ printf("%-8s = \"%s\" (FAIL)\n", msgid, msgstr);
+ errors ++;
+ }
+ else
+ printf("%-8s = \"%s\" (PASS)\n", msgid, msgstr);
+
+ msgid = "Yes";
+ msgstr = _cupsLangString(language, msgid);
+ if (msgid == msgstr)
+ {
+ printf("%-8s = \"%s\" (FAIL)\n", msgid, msgstr);
+ errors ++;
+ }
+ else
+ printf("%-8s = \"%s\" (PASS)\n", msgid, msgstr);
if (language != language2)
{