diff options
author | Burt P <pburt0@gmail.com> | 2017-07-14 23:59:40 -0500 |
---|---|---|
committer | Leandro Pereira <leandro@hardinfo.org> | 2017-07-19 07:20:33 -0700 |
commit | e26ffa481c040f21b28ede1335194149faabb4c2 (patch) | |
tree | 8813cef84e25859e5fa42de8038dc0a78637fc1a /modules/computer | |
parent | 2ad7b03874a7dd196ff15e4a0834688b47ca373c (diff) |
Find a value for OS->Language field, Computer summary headers translatable
Note: "Computer" summary (not Computer->Summary).
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'modules/computer')
-rw-r--r-- | modules/computer/os.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/modules/computer/os.c b/modules/computer/os.c index fa9bb476..3ea4189e 100644 --- a/modules/computer/os.c +++ b/modules/computer/os.c @@ -171,6 +171,37 @@ computer_get_entropy_avail(void) return g_strdup_printf(_(tab_entropy_fstr[0]), bits); } +gchar * +computer_get_language(void) +{ + gchar *tab_lang_env[] = + { "LANGUAGE", "LANG", "LC_ALL", "LC_MESSAGES", NULL }; + gchar *lc = NULL, *env = NULL, *ret = NULL; + gint i = 0; + + lc = setlocale(LC_ALL, NULL); + + while (tab_lang_env[i] != NULL) { + env = g_strdup( g_getenv(tab_lang_env[i]) ); + if (env != NULL) break; + i++; + } + + if (env != NULL) + if (lc != NULL) + ret = g_strdup_printf("%s (%s)", lc, env); + else + ret = g_strdup_printf("%s", env); + else + if (lc != NULL) + ret = g_strdup_printf("%s", lc); + + if (ret == NULL) + ret = g_strdup( _("(Unknown)") ); + + return ret; +} + OperatingSystem * computer_get_os(void) { @@ -263,7 +294,7 @@ computer_get_os(void) os->kernel = g_strdup_printf("%s %s (%s)", utsbuf.sysname, utsbuf.release, utsbuf.machine); os->hostname = g_strdup(utsbuf.nodename); - os->language = g_strdup(g_getenv("LC_MESSAGES")); + os->language = computer_get_language(); os->homedir = g_strdup(g_get_home_dir()); os->username = g_strdup_printf("%s (%s)", g_get_user_name(), g_get_real_name()); |