30 const Profile& intl_profile) {
31 rapidjson::Document document;
32 auto& allocator = document.GetAllocator();
34 document.AddMember(
"method",
"setLocale", allocator);
35 rapidjson::Value
args(rapidjson::kArrayType);
37 for (
const auto& locale_id : intl_profile.locales()) {
38 UErrorCode error_code = U_ZERO_ERROR;
39 icu::Locale locale = icu::Locale::forLanguageTag(locale_id.id, error_code);
40 if (U_FAILURE(error_code)) {
41 FML_LOG(ERROR) <<
"Error parsing locale ID \"" << locale_id.id <<
"\"";
44 args.PushBack(rapidjson::Value().SetString(locale.getLanguage(), allocator),
47 auto country = locale.getCountry() !=
nullptr ? locale.getCountry() :
"";
48 args.PushBack(rapidjson::Value().SetString(country, allocator), allocator);
50 auto script = locale.getScript() !=
nullptr ? locale.getScript() :
"";
51 args.PushBack(rapidjson::Value().SetString(script, allocator), allocator);
54 locale.getVariant() !=
nullptr ? locale.getVariant() :
"";
57 std::transform(begin(variant),
end(variant), begin(variant),
58 [](
unsigned char c) {
return std::tolower(c); });
59 args.PushBack(rapidjson::Value().SetString(variant, allocator), allocator);
62 document.AddMember(
"args",
args, allocator);
64 rapidjson::StringBuffer buffer;
65 rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
66 document.Accept(writer);
67 auto data =
reinterpret_cast<const uint8_t*
>(buffer.GetString());
std::shared_ptr< const fml::Mapping > data