From: Duyoung Jang Date: Wed, 2 Oct 2013 06:45:58 +0000 (+0900) Subject: Change API for locale X-Git-Tag: submit/tizen/20131210.080830^2^2~76^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5425be0e986514af39e08d31cc171a7c12397795;p=platform%2Fframework%2Fnative%2Fappfw.git Change API for locale Change-Id: I07bd17394cf1d7ce5a4c0aebe51390227a9d4849 Signed-off-by: Duyoung Jang --- diff --git a/src/app/inc/FAppPkg_PackageParser.h b/src/app/inc/FAppPkg_PackageParser.h index c445f57..09ab5b9 100755 --- a/src/app/inc/FAppPkg_PackageParser.h +++ b/src/app/inc/FAppPkg_PackageParser.h @@ -145,6 +145,7 @@ private: bool ParseAppAttribute(_PackageXmlAttribute* pAttr, bool isUiApp); bool FindElement(const char* pName); + result GetLocale(Tizen::Base::String& value); private: _PackageInfoImpl* __pPackageInfoImpl; diff --git a/src/app/package/FAppPkg_PackageParser.cpp b/src/app/package/FAppPkg_PackageParser.cpp index 043ba99..1083428 100755 --- a/src/app/package/FAppPkg_PackageParser.cpp +++ b/src/app/package/FAppPkg_PackageParser.cpp @@ -20,6 +20,8 @@ #include #include +#include +#include #include #include @@ -29,7 +31,6 @@ #include #include #include -#include using namespace Tizen::App; using namespace Tizen::Base; @@ -41,6 +42,18 @@ using namespace Tizen::System; namespace Tizen { namespace App { namespace Package { +struct charDeleter +{ + void operator()(char* pValue) + { + if(pValue != null) + { + free(pValue); + pValue = null; + } + } +}; + _PackageXmlAttribute::_PackageXmlAttribute(void) :__pName(null) ,__pValue(null) @@ -753,7 +766,7 @@ _PackageParser::OnDisplayNamesEndElement(void) SysTryReturn(NID_APP, pNameList, false, E_SYSTEM, "pNameList is null."); String locale; - result r = _SettingInfoImpl::GetValue(L"http://tizen.org/setting/locale.language", locale); + result r = GetLocale(locale); SysTryReturn(NID_APP, !IsFailed(r), false, E_SYSTEM, "GetValue(http://tizen.org/setting/locale.language) failed."); locale.Replace(L"_", L"-"); @@ -1160,4 +1173,35 @@ _PackageParser::FindElement(const char* pName) return res; } +result +_PackageParser::GetLocale(String& value) +{ + int errorCode = 0; + result r = E_SUCCESS; + char* pTemp = null; + std::unique_ptr pLocale(null); + + errorCode = runtime_info_get_value_string(RUNTIME_INFO_KEY_LANGUAGE, &pTemp); + SysTryReturnResult(NID_APP, (errorCode == RUNTIME_INFO_ERROR_NONE) && (pTemp != null), E_SYSTEM, "runtime_info_get_value_string() failed."); + + pLocale.reset(pTemp); + icu::Locale icuLocale(pLocale.get()); + String localeString(icuLocale.getISO3Language()); + String languageScriptTmp(icuLocale.getScript()); + + if (!languageScriptTmp.IsEmpty()) + { + String languageScript; + languageScriptTmp.ToLowerCase(languageScript); + localeString.Append(L"-"); + localeString.Append(languageScript); + } + localeString.Append("_"); + localeString.Append(icuLocale.getCountry()); + + value = localeString; + + return r; +} + } } } // Tizen::App::Package