removed legacy API by replacing CAPI
[apps/core/preloaded/settings.git] / setting-common / src / setting-common-general-func.c
index 1d9ec67..e76c7ca 100755 (executable)
@@ -452,12 +452,12 @@ char *remove_first_substring(const char *parent, const char *pat)
        setting_retvm_if(!parent, NULL, "NULL == parent, Exit %s with return NULL", __FUNCTION__);
        char *str = strdup(parent); //to process the case parent pointing to const string
        setting_retvm_if(!pat, str, "NULL == pat, Exit %s with return [%s]", __FUNCTION__, str);
-       
+
        int idx = 0;
        int str_len = safeStrLen(str);
        int pat_len = safeStrLen(pat);
-       setting_retvm_if(pat_len > str_len, str, 
-                        "patlen[%d] > strlen[%d], Exit %s with return [%s]", 
+       setting_retvm_if(pat_len > str_len, str,
+                        "patlen[%d] > strlen[%d], Exit %s with return [%s]",
                         pat_len, str_len, __FUNCTION__, str);
        char *p = NULL;
        char *q = NULL;
@@ -695,7 +695,7 @@ int setting_invoke_reset_function(char *ug_name, service_h service, void *ext)
        char ug_file[PATH_MAX + 1];
        snprintf(ug_file, PATH_MAX, "%s/libug-%s.so", SETTING_UG_PATH, ug_name);
        struct stat st;
-       if(stat(ug_file, &st) != 0) { 
+       if(stat(ug_file, &st) != 0) {
 
                //2.if it does not exit in /opt/ug/lib, then do exist-checking in /usr/ug/lib
                memset(ug_file, 0x00, PATH_MAX + 1);
@@ -1340,3 +1340,89 @@ void font_size_set()
        text_classes = NULL;
        G_FREE(font_name);
 }
+
+static int _set;
+
+void update_lang(void)
+{
+    char *lang;
+    char *r;
+
+    lang = vconf_get_str(VCONFKEY_LANGSET);
+    if (lang) {
+        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);
+        }
+        free(lang);
+    }
+}
+
+void update_region(void)
+{
+    char *region;
+
+    region = vconf_get_str(VCONFKEY_REGIONFORMAT);
+    if (region) {
+        setenv("LC_CTYPE", region, 1);
+        setenv("LC_NUMERIC", region, 1);
+        setenv("LC_TIME", region, 1);
+        setenv("LC_COLLATE", region, 1);
+        setenv("LC_MONETARY", region, 1);
+        setenv("LC_PAPER", region, 1);
+        setenv("LC_NAME", region, 1);
+        setenv("LC_ADDRESS", region, 1);
+        setenv("LC_TELEPHONE", region, 1);
+        setenv("LC_MEASUREMENT", region, 1);
+        setenv("LC_IDENTIFICATION", region, 1);
+        free(region);
+    }
+}
+
+static int __set_i18n(const char *domain, const char *dir)
+{
+    char *r;
+
+    if (domain == NULL) {
+        errno = EINVAL;
+        return -1;
+    }
+
+    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);
+    }
+    //_retvm_if(r == NULL, -1, "appcore: setlocale() error");
+
+    r = bindtextdomain(domain, dir);
+    //_retvm_if(r == NULL, -1, "appcore: bindtextdomain() error");
+
+    r = textdomain(domain);
+    //_retvm_if(r == NULL, -1, "appcore: textdomain() error");
+
+    return 0;
+}
+
+
+
+int setting_set_i18n(char* pkgname, char* localedir)
+//int set_i18n(const char *domainname, const char *dirname)
+{
+#if 0
+       return appcore_set_i18n(pkgname, localedir);
+#else
+       if (_set)       return 0;
+    //_retv_if(_set, 0);
+
+    update_lang();
+    update_region();
+
+    return __set_i18n(pkgname, localedir);
+#endif
+}
+