diff options
author | Michael Sweet <michael.r.sweet@gmail.com> | 2017-08-09 13:43:08 -0400 |
---|---|---|
committer | Michael Sweet <michael.r.sweet@gmail.com> | 2017-08-09 13:43:08 -0400 |
commit | 997db40489fbcc345cc2165af859c07fbc3e5d46 (patch) | |
tree | e9bda0dba4dbae213de9cb73c2e02f6320ff50f5 | |
parent | 345e10ca719b6a5c460f3e760f31384770e066de (diff) |
Fix the localization fallback code on macOS (rdar://33583699)
-rw-r--r-- | CHANGES.md | 1 | ||||
-rw-r--r-- | cups/language.c | 4 | ||||
-rw-r--r-- | cups/testlang.c | 24 |
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) { |