Esempio n. 1
0
void Localization::LoadJSON(const JSONValue& source)
{
    for (JSONObject::ConstIterator i = source.Begin(); i != source.End(); ++i)
    {
        String id = i->first_;
        if (id.Empty())
        {
            LOGWARNING("Localization::LoadJSON(source): string ID is empty");
            continue;
        }
        const JSONValue& langs = i->second_;
        for (JSONObject::ConstIterator j = langs.Begin(); j != langs.End(); ++j)
        {
            const String& lang = j->first_;
            if (lang.Empty())
            {
                LOGWARNING("Localization::LoadJSON(source): language name is empty, string ID=\"" + id + "\"");
                continue;
            }
            const String& string = j->second_.GetString();
            if (string.Empty())
            {
                LOGWARNING(
                    "Localization::LoadJSON(source): translation is empty, string ID=\"" + id + "\", language=\"" + lang + "\"");
                continue;
            }
            if (strings_[StringHash(lang)][StringHash(id)] != String::EMPTY)
            {
                LOGWARNING(
                    "Localization::LoadJSON(source): override translation, string ID=\"" + id + "\", language=\"" + lang + "\"");
            }
            strings_[StringHash(lang)][StringHash(id)] = string;
            if (!languages_.Contains(lang))
                languages_.Push(lang);
            if (languageIndex_ == -1)
                languageIndex_ = 0;
        }
    }
}