/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+ * Copyright (c) 2015 - 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
#include "widget-log.h"
#include "widget-private.h"
+#define PATH_LOCALE "locale"
+
void _update_lang(void)
{
+ char language[32];
+ char *r;
char *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);
- char *r = setlocale(LC_ALL, "");
+ r = setlocale(LC_ALL, "");
if (r == NULL) {
+ /* LCOV_EXCL_START */
r = setlocale(LC_ALL, lang);
-
if (r)
_D("*****appcore setlocale=%s\n", r);
-
+ /* LCOV_EXCL_STOP */
}
free(lang);
} else {
- _E("failed to get current language for set lang env");
+ _E("failed to get current language for set lang env"); /* LCOV_EXCL_LINE */
}
}
setenv("LC_TELEPHONE", region, 1);
setenv("LC_MEASUREMENT", region, 1);
setenv("LC_IDENTIFICATION", region, 1);
- r = setlocale(LC_ALL, "");
+ r = setlocale(LC_ALL, "");
if (r != NULL)
_D("*****appcore setlocale=%s\n", r);
free(region);
} else {
- _E("failed to get current region format for set region env");
+ _E("failed to get current region format for set region env"); /* LCOV_EXCL_LINE */
}
}
-static int __read_proc(const char *path, char *buf, int size)
+static int __get_locale_resource_dir(char *locale_dir, int size)
{
- int fd;
- int ret;
-
- if (buf == NULL || path == NULL)
- return -1;
+ const char *res_path;
- fd = open(path, O_RDONLY);
- if (fd < 0)
- return -1;
+ res_path = aul_get_app_resource_path();
+ if (res_path == NULL) {
+ _E("Failed to get resource path"); /* LCOV_EXCL_LINE */
+ return -1; /* LCOV_EXCL_LINE */
+ }
- ret = read(fd, buf, size - 1);
- if (ret <= 0) {
- close(fd);
+ snprintf(locale_dir, size, "%s" PATH_LOCALE, res_path);
+ if (access(locale_dir, R_OK) != 0)
return -1;
- } else
- buf[ret] = 0;
- close(fd);
-
- return ret;
-}
-
-static char* __proc_get_cmdline()
-{
-#define MAX_CMD_BUFSZ 1024
-
- char buf[MAX_CMD_BUFSZ];
- int ret;
-
- snprintf(buf, sizeof(buf), "/proc/%d/cmdline", getpid());
- ret = __read_proc(buf, buf, sizeof(buf));
- if (ret <= 0)
- return NULL;
-
- return strdup(buf);
+ return 0;
}
static int __set_i18n(const char *domain)
{
char *r;
- char dirname[PATH_MAX] = {0, };
+ char locale_dir[PATH_MAX];
+ char *lang;
if (domain == NULL) {
- errno = EINVAL;
- return -1;
+ errno = EINVAL; /* LCOV_EXCL_LINE */
+ return -1; /* LCOV_EXCL_LINE */
}
- snprintf(dirname, PATH_MAX, "%s/res/locale", aul_get_app_root_path());
- _D("locale dir: %s", dirname);
+ __get_locale_resource_dir(locale_dir, sizeof(locale_dir));
+ _D("locale dir: %s", locale_dir);
r = setlocale(LC_ALL, "");
/* if locale is not set properly, try again to set as language base */
if (r == NULL) {
- char *lang = vconf_get_str(VCONFKEY_LANGSET);
+ /* LCOV_EXCL_START */
+ lang = vconf_get_str(VCONFKEY_LANGSET);
r = setlocale(LC_ALL, lang);
-
if (r)
_D("*****appcore setlocale=%s\n", r);
if (lang)
free(lang);
-
+ /* LCOV_EXCL_STOP */
}
if (r == NULL)
- _E("appcore: setlocale() error");
+ _E("appcore: setlocale() error"); /* LCOV_EXCL_LINE */
- r = bindtextdomain(domain, dirname);
+ r = bindtextdomain(domain, locale_dir);
if (r == NULL)
- _E("appcore: bindtextdomain() error");
+ _E("appcore: bindtextdomain() error"); /* LCOV_EXCL_LINE */
r = textdomain(domain);
if (r == NULL)
- _E("appcore: textdomain() error");
+ _E("appcore: textdomain() error"); /* LCOV_EXCL_LINE */
return 0;
}