Fix memory leak
[platform/core/appfw/app-core.git] / src / appcore-i18n.c
old mode 100755 (executable)
new mode 100644 (file)
index 7998cf2..3cbefcc
@@ -33,17 +33,21 @@ static int _set;
 
 void update_lang(void)
 {
+       char language[32];
        char *lang;
        char *r;
 
        lang = vconf_get_str(VCONFKEY_LANGSET);
        if (lang) {
+               snprintf(language, sizeof(language), "%s:en_US:en_GB:en", lang);
+               setenv("LANGUAGE", language, 1);
                setenv("LANG", lang, 1);
                setenv("LC_MESSAGES", lang, 1);
                r = setlocale(LC_ALL, "");
                if (r == NULL) {
-                       r = setlocale(LC_ALL, vconf_get_str(VCONFKEY_LANGSET));
-                       _DBG("*****appcore setlocale=%s\n", r);
+                       r = setlocale(LC_ALL, lang);
+                       if (r != NULL)
+                               _DBG("*****appcore setlocale=%s\n", r);
                }
                free(lang);
        }
@@ -52,6 +56,7 @@ void update_lang(void)
 void update_region(void)
 {
        char *region;
+       char *r;
 
        region = vconf_get_str(VCONFKEY_REGIONFORMAT);
        if (region) {
@@ -66,6 +71,10 @@ void update_region(void)
                setenv("LC_TELEPHONE", region, 1);
                setenv("LC_MEASUREMENT", region, 1);
                setenv("LC_IDENTIFICATION", region, 1);
+               r = setlocale(LC_ALL, "");
+               if (r != NULL)
+                       _DBG("*****appcore setlocale=%s\n", r);
+
                free(region);
        }
 }
@@ -73,6 +82,7 @@ void update_region(void)
 static int __set_i18n(const char *domain, const char *dir)
 {
        char *r;
+       char *lan;
 
        if (domain == NULL) {
                errno = EINVAL;
@@ -82,30 +92,27 @@ static int __set_i18n(const char *domain, const char *dir)
        r = setlocale(LC_ALL, "");
        /* if locale is not set properly, try again to set as language base */
        if (r == NULL) {
-               r = setlocale(LC_ALL, vconf_get_str(VCONFKEY_LANGSET));
-               _DBG("*****appcore setlocale=%s\n", r);
+               lan = vconf_get_str(VCONFKEY_LANGSET);
+               if (lan != NULL) {
+                       r = setlocale(LC_ALL, lan);
+                       _DBG("*****appcore setlocale=%s\n", r);
+                       free(lan);
+               }
        }
-       if (r == NULL) {
+       if (r == NULL)
                _ERR("appcore: setlocale() error");
-       }
-       //_retvm_if(r == NULL, -1, "appcore: setlocale() error");
 
        r = bindtextdomain(domain, dir);
-       if (r == NULL) {
+       if (r == NULL)
                _ERR("appcore: bindtextdomain() error");
-       }
-       //_retvm_if(r == NULL, -1, "appcore: bindtextdomain() error");
 
        r = textdomain(domain);
-       if (r == NULL) {
+       if (r == NULL)
                _ERR("appcore: textdomain() error");
-       }
-       //_retvm_if(r == NULL, -1, "appcore: textdomain() error");
 
        return 0;
 }
 
-
 EXPORT_API int appcore_set_i18n(const char *domainname, const char *dirname)
 {
        int r;