summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunghoon Park <jh9216.park@samsung.com>2017-05-24 10:26:11 +0900
committerJunghoon Park <jh9216.park@samsung.com>2017-05-24 04:04:38 +0000
commit4484f4b263328669c77a6ce3843bbf1328e00f69 (patch)
treecb07c9eb247056845bb3c07a29583a33596d514b
parent6e08a7be9687a206aa1f56c87ae280a673ea0447 (diff)
downloadwidget-service-4484f4b263328669c77a6ce3843bbf1328e00f69.tar.gz
widget-service-4484f4b263328669c77a6ce3843bbf1328e00f69.tar.bz2
widget-service-4484f4b263328669c77a6ce3843bbf1328e00f69.zip
Find current locale when the incoming parameter 'lang' is nullsubmit/tizen_3.0/20170524.073551
Change-Id: I0eaac1c9a64eb4a13a6fdbabc48de8c4238506e8 Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
-rw-r--r--src/widget_service.c47
1 files changed, 44 insertions, 3 deletions
diff --git a/src/widget_service.c b/src/widget_service.c
index 9aaa2cc..da15ede 100644
--- a/src/widget_service.c
+++ b/src/widget_service.c
@@ -1515,7 +1515,7 @@ static char *_get_name(const char *widget_id, const char *lang, uid_t uid)
{
static const char query[] =
"SELECT label FROM label "
- "WHERE classid=? AND (locale=? OR locale IS NULL) "
+ "WHERE classid=? AND (LOWER(locale)=LOWER(?) OR locale IS NULL) "
"ORDER BY locale DESC";
int ret;
sqlite3 *db;
@@ -1570,9 +1570,37 @@ static char *_get_name(const char *widget_id, const char *lang, uid_t uid)
}
+static char *__get_cur_locale(void)
+{
+ char *language;
+ char *ptr;
+
+ language = vconf_get_str(VCONFKEY_LANGSET);
+ if (language) {
+ ptr = language;
+ while (*ptr) {
+ if (*ptr == '.') {
+ *ptr = '\0';
+ break;
+ }
+
+ if (*ptr == '_') {
+ *ptr = '-';
+ }
+
+ ptr++;
+ }
+ } else {
+ language = strdup("en-us");
+ }
+
+ return language;
+}
+
EAPI char *widget_service_get_name(const char *widget_id, const char *lang)
{
char *name;
+ char *language;
if (!_is_widget_feature_enabled()) {
_E("not supported");
@@ -1591,9 +1619,22 @@ EAPI char *widget_service_get_name(const char *widget_id, const char *lang)
return NULL;
}
- name = _get_name(widget_id, lang, getuid());
+ if (!lang)
+ language = __get_cur_locale();
+ else
+ language = strdup(lang);
+
+ if (!language) {
+ _E("Out-of-memory");
+ set_last_result(WIDGET_ERROR_OUT_OF_MEMORY);
+ return NULL;
+ }
+
+ name = _get_name(widget_id, language, getuid());
if (name == NULL && get_last_result() == WIDGET_ERROR_NOT_EXIST)
- name = _get_name(widget_id, lang, GLOBALAPP_USER);
+ name = _get_name(widget_id, language, GLOBALAPP_USER);
+
+ free(language);
return name;
}