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;
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);
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
+}
+