/*
- * "$Id: language.c 6916 2007-09-05 21:14:08Z mike $"
+ * "$Id: language.c 7558 2008-05-12 23:46:44Z mike $"
*
* I18N/language support for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
"unknown", "unknown",
"unknown", "unknown",
"euc-cn", "euc-jp",
- "euc-kr", "euc-tw"
+ "euc-kr", "euc-tw",
+ "jis-x0213"
};
#ifdef __APPLE__
"", "", "", "",
"", "", "", "",
- "EUCCN", "EUCJP", "EUCKR", "EUCTW"
+ "EUCCN", "EUCJP", "EUCKR", "EUCTW",
+ "SHIFT_JISX0213"
};
- DEBUG_printf(("cupsLangGet(language=\"%s\")\n", language ? language : "(null)"));
+ DEBUG_printf(("2cupsLangGet(language=\"%s\")", language));
#ifdef __APPLE__
/*
* preference so we have to look it up this way...
*/
- if (!language && (language = getenv("LANG")) == NULL)
- language = appleLangDefault();
+ if (!language)
+ {
+ if ((language = getenv("LANG")) == NULL)
+ language = appleLangDefault();
+
+ DEBUG_printf(("4cupsLangGet: language=\"%s\"", language));
+ }
#else
/*
ptr = setlocale(LC_ALL, NULL);
# endif /* LC_MESSAGES */
- DEBUG_printf(("cupsLangGet: current locale is \"%s\"\n",
- ptr ? ptr : "(null)"));
+ DEBUG_printf(("4cupsLangGet: current locale is \"%s\"", ptr));
if (!ptr || !strcmp(ptr, "C") || !strcmp(ptr, "POSIX"))
{
if (!strncmp(locale, "nb", 2))
locale[1] = 'o';
- DEBUG_printf(("cupsLangGet: new language value is \"%s\"\n", language));
+ DEBUG_printf(("4cupsLangGet: new language value is \"%s\"", language));
}
}
#endif /* __APPLE__ */
*ptr = '\0';
- DEBUG_printf(("cupsLangGet: charset set to \"%s\" via nl_langinfo(CODESET)...\n",
- charset));
+ DEBUG_printf(("4cupsLangGet: charset set to \"%s\" via "
+ "nl_langinfo(CODESET)...", charset));
}
#endif /* CODESET */
}
}
- DEBUG_printf(("cupsLangGet: langname=\"%s\", country=\"%s\", charset=\"%s\"\n",
+ DEBUG_printf(("4cupsLangGet: langname=\"%s\", country=\"%s\", charset=\"%s\"",
langname, country, charset));
/*
}
}
- DEBUG_printf(("cupsLangGet: encoding=%d(%s)\n", encoding,
+ DEBUG_printf(("4cupsLangGet: encoding=%d(%s)", encoding,
encoding == CUPS_AUTO_ENCODING ? "auto" :
lang_encodings[encoding]));
pthread_mutex_unlock(&lang_mutex);
#endif /* HAVE_PTHREAD_H */
+ DEBUG_printf(("3cupsLangGet: Using cached copy of \"%s\"...", real));
+
return (lang);
}
* No generic localization, so use POSIX...
*/
- DEBUG_printf(("access(\"%s\", 0): %s\n", filename, strerror(errno)));
+ DEBUG_printf(("4cupsLangGet: access(\"%s\", 0): %s", filename,
+ strerror(errno)));
snprintf(filename, sizeof(filename), "%s/C/cups_C.po", cg->localedir);
}
* Read the strings from the file...
*/
- lang->strings = _cupsMessageLoad(filename);
+ lang->strings = _cupsMessageLoad(filename, 1);
/*
* Return...
*/
cups_array_t * /* O - New message array */
-_cupsMessageLoad(const char *filename) /* I - Message catalog to load */
+_cupsMessageLoad(const char *filename, /* I - Message catalog to load */
+ int unquote) /* I - Unescape \foo in strings */
{
cups_file_t *fp; /* Message file */
cups_array_t *a; /* Message array */
int length; /* Length of combined strings */
- DEBUG_printf(("_cupsMessageLoad(filename=\"%s\")\n", filename));
+ DEBUG_printf(("4_cupsMessageLoad(filename=\"%s\")", filename));
/*
* Create an array to hold the messages...
*/
if ((a = cupsArrayNew((cups_array_func_t)cups_message_compare, NULL)) == NULL)
+ {
+ DEBUG_puts("5_cupsMessageLoad: Unable to allocate array!");
return (NULL);
+ }
/*
* Open the message catalog file...
*/
if ((fp = cupsFileOpen(filename, "r")) == NULL)
+ {
+ DEBUG_printf(("5_cupsMessageLoad: Unable to open file: %s",
+ strerror(errno)));
return (a);
+ }
/*
* Read messages from the catalog file until EOF...
* Unquote the text...
*/
- cups_unquote(ptr, ptr);
+ if (unquote)
+ cups_unquote(ptr, ptr);
/*
* Create or add to a message...
cupsFileClose(fp);
+ DEBUG_printf(("5_cupsMessageLoad: Returning %d messages...",
+ cupsArrayCount(a)));
+
return (a);
}
kCFStringEncodingASCII);
CFRelease(localeName);
- DEBUG_printf(("appleLangDefault: cg->language=\"%s\"\n",
+ DEBUG_printf(("9appleLangDefault: cg->language=\"%s\"",
cg->language));
/*
{
if (!strcmp(cg->language, apple_language_locale[i].language))
{
- DEBUG_printf(("appleLangDefault: mapping \"%s\" to \"%s\"...\n",
+ DEBUG_printf(("9appleLangDefault: mapping \"%s\" to \"%s\"...",
cg->language, apple_language_locale[i].locale));
strlcpy(cg->language, apple_language_locale[i].locale,
sizeof(cg->language));
cups_lang_t *lang; /* Current language */
- DEBUG_printf(("cups_cache_lookup(name=\"%s\", encoding=%d(%s))\n", name,
+ DEBUG_printf(("7cups_cache_lookup(name=\"%s\", encoding=%d(%s))", name,
encoding, encoding == CUPS_AUTO_ENCODING ? "auto" :
lang_encodings[encoding]));
for (lang = lang_cache; lang != NULL; lang = lang->next)
{
- DEBUG_printf(("cups_cache_lookup: lang=%p, language=\"%s\", encoding=%d(%s)\n",
- lang, lang->language, lang->encoding,
+ DEBUG_printf(("9cups_cache_lookup: lang=%p, language=\"%s\", "
+ "encoding=%d(%s)", lang, lang->language, lang->encoding,
lang_encodings[lang->encoding]));
if (!strcmp(lang->language, name) &&
{
lang->used ++;
- DEBUG_puts("cups_cache_lookup: returning match!");
+ DEBUG_puts("8cups_cache_lookup: returning match!");
return (lang);
}
}
- DEBUG_puts("cups_cache_lookup: returning NULL!");
+ DEBUG_puts("8cups_cache_lookup: returning NULL!");
return (NULL);
}
/*
- * End of "$Id: language.c 6916 2007-09-05 21:14:08Z mike $".
+ * End of "$Id: language.c 7558 2008-05-12 23:46:44Z mike $".
*/