static void json_keyword(cJSON *json, struct locale *lang) { cJSON *child; if (json->type != cJSON_Object) { log_error("keywords for locale `%s` not a json object: %d", locale_name(lang), json->type); return; } for (child = json->child; child; child = child->next) { keyword_t kwd = findkeyword(child->string); if (kwd != NOKEYWORD) { if (child->type == cJSON_String) { init_keyword(lang, kwd, child->valuestring); locale_setstring(lang, mkname("keyword", keywords[kwd]), child->valuestring); } else if (child->type == cJSON_Array) { cJSON *entry; for (entry = child->child; entry; entry = entry->next) { init_keyword(lang, kwd, entry->valuestring); if (entry == child->child) { locale_setstring(lang, mkname("keyword", keywords[kwd]), entry->valuestring); } } } else { log_error("invalid type %d for keyword `%s`", child->type, child->string); } } else { log_error("unknown keyword `%s` for locale `%s`", child->string, locale_name(lang)); } } }
keyword_t getkeyword(void) { return (keyword_t)findkeyword(getstr()); }
keyword_t igetkeyword(const char *s) { return (keyword_t)findkeyword(igetstr(s)); }