From 0be2f3895e946fb278530e25af49be0bd40ea2e5 Mon Sep 17 00:00:00 2001 From: Junghoon Park Date: Wed, 23 Aug 2017 15:41:58 +0900 Subject: [PATCH] Set environment variable LANG - Before calling main(), this variable should be set. Change-Id: I65fa6a7a709cac85e41475dd878496653d239eec Signed-off-by: Junghoon Park --- src/launchpad.c | 19 +++++++++++++++++++ src/launchpad_lib.c | 14 ++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/launchpad.c b/src/launchpad.c index 69f841c..8288d4c 100755 --- a/src/launchpad.c +++ b/src/launchpad.c @@ -1775,9 +1775,18 @@ static void __vconf_cb(keynode_t *key, void *data) } } +static void __update_lang(keynode_t *node, void *user_data) +{ + char *lang = vconf_keynode_get_str(node); + + if (lang) + setenv("LANG", lang, 1); +} + static int __before_loop(int argc, char **argv) { int ret; + char *lang; ret = __init_sigchild_fd(); if (ret != 0) { @@ -1804,6 +1813,16 @@ static int __before_loop(int argc, char **argv) VCONFKEY_SETAPPL_APP_HW_ACCELERATION); } + lang = vconf_get_str(VCONFKEY_LANGSET); + if (lang) { + setenv("LANG", lang, 1); + free(lang); + } + + ret = vconf_notify_key_changed(VCONFKEY_LANGSET, __update_lang, NULL); + if (ret != 0) + _E("Failed to register callback for %s", VCONFKEY_LANGSET); + ret = __init_label_monitor_fd(); if (ret != 0) _W("Failed to initialize label monitor"); diff --git a/src/launchpad_lib.c b/src/launchpad_lib.c index d1a3b89..183bd71 100644 --- a/src/launchpad_lib.c +++ b/src/launchpad_lib.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "launchpad_common.h" #include "launchpad.h" @@ -269,6 +270,14 @@ static void __receiver_cb(int fd) } } +static void __update_lang(keynode_t *node, void *user_data) +{ + char *lang = vconf_keynode_get_str(node); + + if (lang) + setenv("LANG", lang, 1); +} + static int __before_loop(int argc, char **argv) { int client_fd; @@ -310,11 +319,16 @@ static int __before_loop(int argc, char **argv) __loader_adapter->add_fd(__loader_user_data, client_fd, __receiver_cb); + if (vconf_notify_key_changed(VCONFKEY_LANGSET, __update_lang, NULL) != 0) + _E("vconf_notify_key_changed failed"); + return ret; } static int __after_loop(void) { + vconf_ignore_key_changed(VCONFKEY_LANGSET, __update_lang); + if (__loader_callbacks->terminate) { return __loader_callbacks->terminate(__argc, __argv, __loader_user_data); -- 2.7.4