return meta_data_info_;
}
-std::shared_ptr<const wgt::parse::NavigationInfo>
+std::shared_ptr<const wgt::parse::AllowedNavigationInfo>
ApplicationData::navigation_info() const {
return navigation_info_;
}
handlers[ManifestHandlerType::META_DATA_HANDLER]->Key()));
navigation_info_ =
- std::static_pointer_cast<const wgt::parse::NavigationInfo>(
+ std::static_pointer_cast<const wgt::parse::AllowedNavigationInfo>(
manifest_parser.GetManifestData(
handlers[ManifestHandlerType::NAVIGATION_HANDLER]->Key()));
ime_info() const;
std::shared_ptr<const wgt::parse::MetaDataInfo>
meta_data_info() const;
- std::shared_ptr<const wgt::parse::NavigationInfo>
+ std::shared_ptr<const wgt::parse::AllowedNavigationInfo>
navigation_info() const;
std::shared_ptr<const wgt::parse::PermissionsInfo>
permissions_info() const;
ime_info_;
std::shared_ptr<const wgt::parse::MetaDataInfo>
meta_data_info_;
- std::shared_ptr<const wgt::parse::NavigationInfo>
+ std::shared_ptr<const wgt::parse::AllowedNavigationInfo>
navigation_info_;
std::shared_ptr<const wgt::parse::PermissionsInfo>
permissions_info_;
}
}
+std::string LocaleManager::GetLocalizedString(const StringMap& strmap) {
+ if (strmap.empty()) {
+ return std::string();
+ }
+
+ // find string with system locales
+ for (auto& locale : system_locales_) {
+ auto it = strmap.find(locale);
+ if (it != strmap.end()) {
+ return it->second;
+ }
+ }
+
+ // find string with empty locale
+ auto it = strmap.find("");
+ if (it != strmap.end()) {
+ return it->second;
+ }
+
+ // If localized string is not found, return first string.
+ return strmap.begin()->second;
+}
+
} // namespace wrt
#include <string>
#include <list>
+#include <map>
namespace wrt {
class LocaleManager {
public:
+ typedef std::map<std::string, std::string> StringMap;
+
LocaleManager();
virtual ~LocaleManager();
void SetDefaultLocale(const std::string& locale);
const std::list<std::string>& system_locales() const
{ return system_locales_; }
+ std::string GetLocalizedString(const StringMap& strmap);
+
private:
std::string default_locale_;
std::list<std::string> system_locales_;
#include "extension/xwalk/XW_Extension_Runtime.h"
#include "extension/xwalk/XW_Extension_SyncMessage.h"
-#include "common/logger.h"
#include "extension/widget/picojson.h"
+#include "common/logger.h"
#include "common/app_db.h"
#include "common/application_data.h"
+#include "common/locale_manager.h"
#include "common/string_utils.h"
XW_Extension g_xw_extension = 0;
}
out->insert(std::make_pair("status", picojson::value("success")));
+ wrt::LocaleManager locale_manager;
+ if (!widget_info->default_locale().empty()) {
+ locale_manager.SetDefaultLocale(widget_info->default_locale());
+ }
+
// TODO(sngn.lee): should be returned localized string
obj["author"] = picojson::value(widget_info->author());
- obj["description"] = picojson::value(widget_info->description());
- obj["name"] = picojson::value(widget_info->name());
- obj["shortName"] = picojson::value(widget_info->short_name());
+ obj["description"] = picojson::value(
+ locale_manager.GetLocalizedString(widget_info->description_set()));
+ obj["name"] = picojson::value(
+ locale_manager.GetLocalizedString(widget_info->name_set()));
+ obj["shortName"] = picojson::value(
+ locale_manager.GetLocalizedString(widget_info->short_name_set()));
obj["version"] = picojson::value(widget_info->version());
obj["id"] = picojson::value(widget_info->id());
obj["authorEmail"] = picojson::value(widget_info->author_email());