Set environment variable LANG 26/145626/6
authorJunghoon Park <jh9216.park@samsung.com>
Wed, 23 Aug 2017 06:41:58 +0000 (15:41 +0900)
committerJunghoon Park <jh9216.park@samsung.com>
Mon, 28 Aug 2017 07:47:39 +0000 (07:47 +0000)
- Before calling main(), this variable should be set.

Change-Id: I65fa6a7a709cac85e41475dd878496653d239eec
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
src/launchpad.c
src/launchpad_lib.c

index 69f841c..8288d4c 100755 (executable)
@@ -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");
index d1a3b89..183bd71 100644 (file)
@@ -26,6 +26,7 @@
 #include <aul.h>
 #include <security-manager.h>
 #include <buxton2.h>
+#include <vconf.h>
 
 #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);