public static Keyval[] new_() { Ordered_hash translated = Ordered_hash_.New_bry(); List_adp untranslated = List_adp_.New(); Add_itm_many( translated, Xol_lang_stub_.Id_en, Xol_lang_stub_.Id_de, Xol_lang_stub_.Id_pl, Xol_lang_stub_.Id_zh_hans, Xol_lang_stub_ .Id_zh_hant); // add langs with translations first, so they alphabetize to top of list int len = Xol_lang_stub_.Id__max; for (int i = 0; i < len; i++) { // add rest of langs, but sort by code Xol_lang_stub itm = Xol_lang_stub_.Get_by_id(i); if (translated.Has(itm.Key())) continue; untranslated.Add(itm); } untranslated.Sort_by(Xol_lang_stub_.Comparer_key); Keyval[] rv = new Keyval[len]; int translated_max = translated.Count(); for (int i = 0; i < translated_max; i++) rv[i] = new_itm((Xol_lang_stub) translated.Get_at(i)); for (int i = translated_max; i < len; i++) rv[i] = new_itm((Xol_lang_stub) untranslated.Get_at(i - translated_max)); return rv; }
private static void Add_itm_many(Ordered_hash translated, int... langs) { int langs_len = langs.length; for (int i = 0; i < langs_len; i++) { Xol_lang_stub itm = Xol_lang_stub_.Get_by_id(langs[i]); translated.Add_if_dupe_use_nth(itm.Key(), itm); } }