diff options
author | Wu Xiaotian <[email protected]> | 2019-06-09 21:57:54 +0800 |
---|---|---|
committer | raveit65 <[email protected]> | 2019-06-11 16:06:41 +0200 |
commit | 967ea267f537dfeb9a3e8eb8169899ac199e50d9 (patch) | |
tree | 695647125d10e1b6e7872c1cb5fb9cbfff1145a1 | |
parent | 451baa964b34accd93af19ab8c6aa93636bf79fd (diff) | |
download | mate-desktop-967ea267f537dfeb9a3e8eb8169899ac199e50d9.tar.bz2 mate-desktop-967ea267f537dfeb9a3e8eb8169899ac199e50d9.tar.xz |
check both {$prefix,/usr}/share/locale dirs for translation
-rw-r--r-- | libmate-desktop/mate-languages.c | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/libmate-desktop/mate-languages.c b/libmate-desktop/mate-languages.c index 865c5ca..f6a4ff6 100644 --- a/libmate-desktop/mate-languages.c +++ b/libmate-desktop/mate-languages.c @@ -325,25 +325,12 @@ language_name_get_codeset_details (const char *language_name, setlocale (LC_CTYPE, old_locale); } -/** - * mate_language_has_translations: - * @code: an ISO 639 code string - * - * Returns %TRUE if there are translations for language @code. - * - * Return value: %TRUE if there are translations for language @code. - * - * Since: 1.22 - */ -gboolean -mate_language_has_translations (const char *code) +static gboolean +locale_dir_has_mo_files (const gchar* path) { GDir *dir; const char *name; gboolean has_translations; - g_autofree char *path = NULL; - - path = g_build_filename (MATELOCALEDIR, code, "LC_MESSAGES", NULL); has_translations = FALSE; dir = g_dir_open (path, 0, NULL); @@ -370,6 +357,35 @@ mate_language_has_translations (const char *code) return has_translations; } +/** + * mate_language_has_translations: + * @code: an ISO 639 code string + * + * Returns %TRUE if there are translations for language @code. + * + * Return value: %TRUE if there are translations for language @code. + * + * Since: 1.22 + */ +gboolean +mate_language_has_translations (const char *code) +{ + gboolean has_translations; + gchar *path = NULL; + + path = g_build_filename (MATELOCALEDIR, code, "LC_MESSAGES", NULL); + has_translations = locale_dir_has_mo_files (path); + + if (!has_translations) { + g_free(path); + path = g_build_filename ("/usr/share/locale", code, "LC_MESSAGES", NULL); + has_translations = locale_dir_has_mo_files (path); + } + + g_free(path); + return has_translations; +} + static gboolean add_locale (const char *language_name, gboolean utf8_only) |