Fix getting locale resource path 85/74385/3 accepted/tizen/common/20160615.193242 accepted/tizen/ivi/20160615.001448 accepted/tizen/mobile/20160615.001618 accepted/tizen/tv/20160615.001531 accepted/tizen/wearable/20160615.001545 submit/tizen/20160614.094055
authorHwankyu Jhun <h.jhun@samsung.com>
Tue, 14 Jun 2016 06:13:21 +0000 (15:13 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Tue, 14 Jun 2016 06:55:49 +0000 (15:55 +0900)
Change-Id: I7583298a629d57d3df27dccbc9ef8a1420b7021e
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/widget-i18n.c

index 91804e2..c739dd8 100755 (executable)
@@ -31,6 +31,8 @@
 #include "widget-log.h"
 #include "widget-private.h"
 
+#define PATH_LOCALE "locale"
+
 void _update_lang(void)
 {
        char *r;
@@ -80,10 +82,27 @@ void _update_region(void)
        }
 }
 
+static int __get_locale_resource_dir(char *locale_dir, int size)
+{
+       const char *res_path;
+
+       res_path = aul_get_app_resource_path();
+       if (res_path == NULL) {
+               _E("Failed to get resource path");
+               return -1;
+       }
+
+       snprintf(locale_dir, size, "%s" PATH_LOCALE, res_path);
+       if (access(locale_dir, R_OK) != 0)
+               return -1;
+
+       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) {
@@ -91,8 +110,8 @@ static int __set_i18n(const char *domain)
                return -1;
        }
 
-       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 */
@@ -108,7 +127,7 @@ static int __set_i18n(const char *domain)
        if (r == NULL)
                _E("appcore: setlocale() error");
 
-       r = bindtextdomain(domain, dirname);
+       r = bindtextdomain(domain, locale_dir);
        if (r == NULL)
                _E("appcore: bindtextdomain() error");