[retro-gtk] environment: Use g_get_language_names()
- From: Adrien Plazas <aplazas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [retro-gtk] environment: Use g_get_language_names()
- Date: Sat, 28 Apr 2018 22:20:41 +0000 (UTC)
commit 59bc377b30ff7a1d8a89dd22de037b12c9568f39
Author: Adrien Plazas <kekun plazas laposte net>
Date: Sun Apr 29 00:10:38 2018 +0200
environment: Use g_get_language_names()
This allow to get the language in a cleaner way by avoiding to fiddle
with locale prefixes and to get a list of languages sorted by
desirability.
retro-gtk/retro-environment.c | 49 +++++++++++++++++++++----------------------
1 file changed, 24 insertions(+), 25 deletions(-)
---
diff --git a/retro-gtk/retro-environment.c b/retro-gtk/retro-environment.c
index 5b88788..d627e46 100644
--- a/retro-gtk/retro-environment.c
+++ b/retro-gtk/retro-environment.c
@@ -151,43 +151,42 @@ static gboolean
get_language (RetroCore *self,
unsigned *language)
{
- static const struct { const gchar *locale_prefix; enum RetroLanguage language; } values[] = {
- { "ar_", RETRO_LANGUAGE_ARABIC },
- { "de_", RETRO_LANGUAGE_GERMAN },
- { "en_", RETRO_LANGUAGE_ENGLISH },
+ static const struct { const gchar *locale; enum RetroLanguage language; } values[] = {
+ { "ar", RETRO_LANGUAGE_ARABIC },
+ { "de", RETRO_LANGUAGE_GERMAN },
+ { "en", RETRO_LANGUAGE_ENGLISH },
{ "eo", RETRO_LANGUAGE_ESPERANTO },
- { "es_", RETRO_LANGUAGE_SPANISH },
- { "fr_", RETRO_LANGUAGE_FRENCH },
- { "it_", RETRO_LANGUAGE_ITALIAN },
- { "jp_", RETRO_LANGUAGE_JAPANESE },
- { "ko_", RETRO_LANGUAGE_KOREAN },
- { "nl_", RETRO_LANGUAGE_DUTCH },
- { "pl_", RETRO_LANGUAGE_POLISH },
+ { "es", RETRO_LANGUAGE_SPANISH },
+ { "fr", RETRO_LANGUAGE_FRENCH },
+ { "it", RETRO_LANGUAGE_ITALIAN },
+ { "jp", RETRO_LANGUAGE_JAPANESE },
+ { "ko", RETRO_LANGUAGE_KOREAN },
+ { "nl", RETRO_LANGUAGE_DUTCH },
+ { "pl", RETRO_LANGUAGE_POLISH },
{ "pt_BR", RETRO_LANGUAGE_PORTUGUESE_BRAZIL },
{ "pt_PT", RETRO_LANGUAGE_PORTUGUESE_PORTUGAL },
- { "ru_", RETRO_LANGUAGE_RUSSIAN },
- { "vi_", RETRO_LANGUAGE_VIETNAMESE },
+ { "ru", RETRO_LANGUAGE_RUSSIAN },
+ { "vi", RETRO_LANGUAGE_VIETNAMESE },
{ "zh_CN", RETRO_LANGUAGE_CHINESE_SIMPLIFIED },
{ "zh_HK", RETRO_LANGUAGE_CHINESE_TRADITIONAL },
{ "zh_SG", RETRO_LANGUAGE_CHINESE_SIMPLIFIED },
{ "zh_TW", RETRO_LANGUAGE_CHINESE_TRADITIONAL },
- { NULL, RETRO_LANGUAGE_DEFAULT },
+ { "C", RETRO_LANGUAGE_DEFAULT },
};
- const gchar *locale = g_getenv ("LANG");
- gsize i = 0;
+ const gchar * const *locales = g_get_language_names ();
+ gsize locale_i, language_i;
- if (locale == NULL) {
- *language = RETRO_LANGUAGE_DEFAULT;
-
- return TRUE;
+ for (locale_i = 0; locales[locale_i] != NULL; locale_i++) {
+ for (language_i = 0;
+ !g_str_equal (values[language_i].locale, "C") &&
+ !g_str_equal (locales[locale_i], values[language_i].locale);
+ language_i++);
+ if (!g_str_equal (values[language_i].locale, "C"))
+ break;
}
- while (values[i].locale_prefix != NULL &&
- !g_str_has_prefix (locale, values[i].locale_prefix))
- i++;
-
- *language = values[i].language;
+ *language = values[language_i].language;
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]