Skip to main content

num2words2_core/
lib.rs

1// GENERATED by bench/gen_registry.py — do not edit by hand.
2// Language modules are discovered from src/lang_*.rs.
3
4pub mod base;
5pub mod currency;
6pub mod floatpath;
7pub mod presentation;
8pub mod strnum;
9pub mod lang_af;
10pub mod lang_am;
11pub mod lang_ar;
12pub mod lang_as;
13pub mod lang_az;
14pub mod lang_ba;
15pub mod lang_ban;
16pub mod lang_be;
17pub mod lang_bg;
18pub mod lang_bm;
19pub mod lang_bn;
20pub mod lang_bo;
21pub mod lang_br;
22pub mod lang_bs;
23pub mod lang_ca;
24pub mod lang_ce;
25pub mod lang_ceb;
26pub mod lang_ckb;
27pub mod lang_cnh;
28pub mod lang_cs;
29pub mod lang_cy;
30pub mod lang_da;
31pub mod lang_de;
32pub mod lang_dv;
33pub mod lang_el;
34pub mod lang_en;
35pub mod lang_en_aero;
36pub mod lang_en_aero_faa;
37pub mod lang_en_aero_nato;
38pub mod lang_en_aero_us_army;
39pub mod lang_en_aero_usn;
40pub mod lang_en_in;
41pub mod lang_en_ne;
42pub mod lang_en_ng;
43pub mod lang_en_np;
44pub mod lang_eo;
45pub mod lang_es;
46pub mod lang_es_co;
47pub mod lang_es_cr;
48pub mod lang_es_gt;
49pub mod lang_es_hn;
50pub mod lang_es_ni;
51pub mod lang_es_ve;
52pub mod lang_et;
53pub mod lang_eu;
54pub mod lang_fa;
55pub mod lang_ff;
56pub mod lang_fi;
57pub mod lang_fil;
58pub mod lang_fo;
59pub mod lang_fr;
60pub mod lang_fr_be;
61pub mod lang_fr_ch;
62pub mod lang_fr_dz;
63pub mod lang_gl;
64pub mod lang_gu;
65pub mod lang_ha;
66pub mod lang_haw;
67pub mod lang_he;
68pub mod lang_hi;
69pub mod lang_hmn;
70pub mod lang_hr;
71pub mod lang_ht;
72pub mod lang_hu;
73pub mod lang_hy;
74pub mod lang_id;
75pub mod lang_is;
76pub mod lang_it;
77pub mod lang_ja;
78pub mod lang_jv;
79pub mod lang_ka;
80pub mod lang_ki;
81pub mod lang_kk;
82pub mod lang_km;
83pub mod lang_kn;
84pub mod lang_ko;
85pub mod lang_kok;
86pub mod lang_ksw;
87pub mod lang_ku;
88pub mod lang_ky;
89pub mod lang_kz;
90pub mod lang_la;
91pub mod lang_lb;
92pub mod lang_lg;
93pub mod lang_lij;
94pub mod lang_ln;
95pub mod lang_lo;
96pub mod lang_lt;
97pub mod lang_lus;
98pub mod lang_lv;
99pub mod lang_mg;
100pub mod lang_mi;
101pub mod lang_mk;
102pub mod lang_ml;
103pub mod lang_mn;
104pub mod lang_mr;
105pub mod lang_ms;
106pub mod lang_mt;
107pub mod lang_my;
108pub mod lang_nb;
109pub mod lang_ne;
110pub mod lang_nl;
111pub mod lang_nn;
112pub mod lang_oc;
113pub mod lang_om;
114pub mod lang_or;
115pub mod lang_pa;
116pub mod lang_pap;
117pub mod lang_pl;
118pub mod lang_pli;
119pub mod lang_ps;
120pub mod lang_pt;
121pub mod lang_pt_br;
122pub mod lang_rm;
123pub mod lang_rm_puter;
124pub mod lang_rm_surmiran;
125pub mod lang_rm_sursilv;
126pub mod lang_rm_sutsilv;
127pub mod lang_rm_vallader;
128pub mod lang_ro;
129pub mod lang_ru;
130pub mod lang_rw;
131pub mod lang_sa;
132pub mod lang_sd;
133pub mod lang_si;
134pub mod lang_sk;
135pub mod lang_sl;
136pub mod lang_sn;
137pub mod lang_so;
138pub mod lang_sq;
139pub mod lang_sr;
140pub mod lang_sr_latn;
141pub mod lang_su;
142pub mod lang_sv;
143pub mod lang_sw;
144pub mod lang_ta;
145pub mod lang_te;
146pub mod lang_tet;
147pub mod lang_tg;
148pub mod lang_th;
149pub mod lang_ti;
150pub mod lang_tk;
151pub mod lang_tl;
152pub mod lang_tr;
153pub mod lang_tt;
154pub mod lang_uk;
155pub mod lang_ur;
156pub mod lang_uz;
157pub mod lang_uz_cyr;
158pub mod lang_vi;
159pub mod lang_wo;
160pub mod lang_xh;
161pub mod lang_yi;
162pub mod lang_yo;
163pub mod lang_zh;
164pub mod lang_zh_hk;
165pub mod lang_zh_tw;
166pub mod lang_zu;
167
168pub use base::{Kwargs, KwVal, Lang, N2WError, Result};
169pub use currency::{CurrencyForms, CurrencyValue};
170pub use floatpath::FloatValue;
171pub use strnum::ParsedNumber;
172pub use lang_af::LangAf;
173pub use lang_am::LangAm;
174pub use lang_ar::LangAr;
175pub use lang_as::LangAs;
176pub use lang_az::LangAz;
177pub use lang_ba::LangBa;
178pub use lang_ban::LangBan;
179pub use lang_be::LangBe;
180pub use lang_bg::LangBg;
181pub use lang_bm::LangBm;
182pub use lang_bn::LangBn;
183pub use lang_bo::LangBo;
184pub use lang_br::LangBr;
185pub use lang_bs::LangBs;
186pub use lang_ca::LangCa;
187pub use lang_ce::LangCe;
188pub use lang_ceb::LangCeb;
189pub use lang_ckb::LangCkb;
190pub use lang_cnh::LangCnh;
191pub use lang_cs::LangCs;
192pub use lang_cy::LangCy;
193pub use lang_da::LangDa;
194pub use lang_de::LangDe;
195pub use lang_dv::LangDv;
196pub use lang_el::LangEl;
197pub use lang_en::LangEn;
198pub use lang_en_aero::LangEnAero;
199pub use lang_en_aero_faa::LangEnAeroFaa;
200pub use lang_en_aero_nato::LangEnAeroNato;
201pub use lang_en_aero_us_army::LangEnAeroUsArmy;
202pub use lang_en_aero_usn::LangEnAeroUsn;
203pub use lang_en_in::LangEnIn;
204pub use lang_en_ne::LangEnNe;
205pub use lang_en_ng::LangEnNg;
206pub use lang_en_np::LangEnNp;
207pub use lang_eo::LangEo;
208pub use lang_es::LangEs;
209pub use lang_es_co::LangEsCo;
210pub use lang_es_cr::LangEsCr;
211pub use lang_es_gt::LangEsGt;
212pub use lang_es_hn::LangEsHn;
213pub use lang_es_ni::LangEsNi;
214pub use lang_es_ve::LangEsVe;
215pub use lang_et::LangEt;
216pub use lang_eu::LangEu;
217pub use lang_fa::LangFa;
218pub use lang_ff::LangFf;
219pub use lang_fi::LangFi;
220pub use lang_fil::LangFil;
221pub use lang_fo::LangFo;
222pub use lang_fr::LangFr;
223pub use lang_fr_be::LangFrBe;
224pub use lang_fr_ch::LangFrCh;
225pub use lang_fr_dz::LangFrDz;
226pub use lang_gl::LangGl;
227pub use lang_gu::LangGu;
228pub use lang_ha::LangHa;
229pub use lang_haw::LangHaw;
230pub use lang_he::LangHe;
231pub use lang_hi::LangHi;
232pub use lang_hmn::LangHmn;
233pub use lang_hr::LangHr;
234pub use lang_ht::LangHt;
235pub use lang_hu::LangHu;
236pub use lang_hy::LangHy;
237pub use lang_id::LangId;
238pub use lang_is::LangIs;
239pub use lang_it::LangIt;
240pub use lang_ja::LangJa;
241pub use lang_jv::LangJv;
242pub use lang_ka::LangKa;
243pub use lang_ki::LangKi;
244pub use lang_kk::LangKk;
245pub use lang_km::LangKm;
246pub use lang_kn::LangKn;
247pub use lang_ko::LangKo;
248pub use lang_kok::LangKok;
249pub use lang_ksw::LangKsw;
250pub use lang_ku::LangKu;
251pub use lang_ky::LangKy;
252pub use lang_kz::LangKz;
253pub use lang_la::LangLa;
254pub use lang_lb::LangLb;
255pub use lang_lg::LangLg;
256pub use lang_lij::LangLij;
257pub use lang_ln::LangLn;
258pub use lang_lo::LangLo;
259pub use lang_lt::LangLt;
260pub use lang_lus::LangLus;
261pub use lang_lv::LangLv;
262pub use lang_mg::LangMg;
263pub use lang_mi::LangMi;
264pub use lang_mk::LangMk;
265pub use lang_ml::LangMl;
266pub use lang_mn::LangMn;
267pub use lang_mr::LangMr;
268pub use lang_ms::LangMs;
269pub use lang_mt::LangMt;
270pub use lang_my::LangMy;
271pub use lang_nb::LangNb;
272pub use lang_ne::LangNe;
273pub use lang_nl::LangNl;
274pub use lang_nn::LangNn;
275pub use lang_oc::LangOc;
276pub use lang_om::LangOm;
277pub use lang_or::LangOr;
278pub use lang_pa::LangPa;
279pub use lang_pap::LangPap;
280pub use lang_pl::LangPl;
281pub use lang_pli::LangPli;
282pub use lang_ps::LangPs;
283pub use lang_pt::LangPt;
284pub use lang_pt_br::LangPtBr;
285pub use lang_rm::LangRm;
286pub use lang_rm_puter::LangRmPuter;
287pub use lang_rm_surmiran::LangRmSurmiran;
288pub use lang_rm_sursilv::LangRmSursilv;
289pub use lang_rm_sutsilv::LangRmSutsilv;
290pub use lang_rm_vallader::LangRmVallader;
291pub use lang_ro::LangRo;
292pub use lang_ru::LangRu;
293pub use lang_rw::LangRw;
294pub use lang_sa::LangSa;
295pub use lang_sd::LangSd;
296pub use lang_si::LangSi;
297pub use lang_sk::LangSk;
298pub use lang_sl::LangSl;
299pub use lang_sn::LangSn;
300pub use lang_so::LangSo;
301pub use lang_sq::LangSq;
302pub use lang_sr::LangSr;
303pub use lang_sr_latn::LangSrLatn;
304pub use lang_su::LangSu;
305pub use lang_sv::LangSv;
306pub use lang_sw::LangSw;
307pub use lang_ta::LangTa;
308pub use lang_te::LangTe;
309pub use lang_tet::LangTet;
310pub use lang_tg::LangTg;
311pub use lang_th::LangTh;
312pub use lang_ti::LangTi;
313pub use lang_tk::LangTk;
314pub use lang_tl::LangTl;
315pub use lang_tr::LangTr;
316pub use lang_tt::LangTt;
317pub use lang_uk::LangUk;
318pub use lang_ur::LangUr;
319pub use lang_uz::LangUz;
320pub use lang_uz_cyr::LangUzCyr;
321pub use lang_vi::LangVi;
322pub use lang_wo::LangWo;
323pub use lang_xh::LangXh;
324pub use lang_yi::LangYi;
325pub use lang_yo::LangYo;
326pub use lang_zh::LangZh;
327pub use lang_zh_hk::LangZhHk;
328pub use lang_zh_tw::LangZhTw;
329pub use lang_zu::LangZu;
330
331use std::sync::OnceLock;
332
333/// Resolve a Python CONVERTER_CLASSES key to a cached language.
334pub fn get_lang_by_key(lang: &str) -> Option<&'static (dyn Lang + Sync)> {
335    static AF: OnceLock<LangAf> = OnceLock::new();
336    static AM: OnceLock<LangAm> = OnceLock::new();
337    static AR: OnceLock<LangAr> = OnceLock::new();
338    static AS: OnceLock<LangAs> = OnceLock::new();
339    static AZ: OnceLock<LangAz> = OnceLock::new();
340    static BA: OnceLock<LangBa> = OnceLock::new();
341    static BAN: OnceLock<LangBan> = OnceLock::new();
342    static BE: OnceLock<LangBe> = OnceLock::new();
343    static BG: OnceLock<LangBg> = OnceLock::new();
344    static BM: OnceLock<LangBm> = OnceLock::new();
345    static BN: OnceLock<LangBn> = OnceLock::new();
346    static BO: OnceLock<LangBo> = OnceLock::new();
347    static BR: OnceLock<LangBr> = OnceLock::new();
348    static BS: OnceLock<LangBs> = OnceLock::new();
349    static CA: OnceLock<LangCa> = OnceLock::new();
350    static CE: OnceLock<LangCe> = OnceLock::new();
351    static CEB: OnceLock<LangCeb> = OnceLock::new();
352    static CKB: OnceLock<LangCkb> = OnceLock::new();
353    static CNH: OnceLock<LangCnh> = OnceLock::new();
354    static CS: OnceLock<LangCs> = OnceLock::new();
355    static CY: OnceLock<LangCy> = OnceLock::new();
356    static DA: OnceLock<LangDa> = OnceLock::new();
357    static DE: OnceLock<LangDe> = OnceLock::new();
358    static DV: OnceLock<LangDv> = OnceLock::new();
359    static EL: OnceLock<LangEl> = OnceLock::new();
360    static EN: OnceLock<LangEn> = OnceLock::new();
361    static EN_AERO: OnceLock<LangEnAero> = OnceLock::new();
362    static EN_AERO_FAA: OnceLock<LangEnAeroFaa> = OnceLock::new();
363    static EN_AERO_NATO: OnceLock<LangEnAeroNato> = OnceLock::new();
364    static EN_AERO_US_ARMY: OnceLock<LangEnAeroUsArmy> = OnceLock::new();
365    static EN_AERO_USN: OnceLock<LangEnAeroUsn> = OnceLock::new();
366    static EN_IN: OnceLock<LangEnIn> = OnceLock::new();
367    static EN_NE: OnceLock<LangEnNe> = OnceLock::new();
368    static EN_NG: OnceLock<LangEnNg> = OnceLock::new();
369    static EN_NP: OnceLock<LangEnNp> = OnceLock::new();
370    static EO: OnceLock<LangEo> = OnceLock::new();
371    static ES: OnceLock<LangEs> = OnceLock::new();
372    static ES_CO: OnceLock<LangEsCo> = OnceLock::new();
373    static ES_CR: OnceLock<LangEsCr> = OnceLock::new();
374    static ES_GT: OnceLock<LangEsGt> = OnceLock::new();
375    static ES_HN: OnceLock<LangEsHn> = OnceLock::new();
376    static ES_NI: OnceLock<LangEsNi> = OnceLock::new();
377    static ES_VE: OnceLock<LangEsVe> = OnceLock::new();
378    static ET: OnceLock<LangEt> = OnceLock::new();
379    static EU: OnceLock<LangEu> = OnceLock::new();
380    static FA: OnceLock<LangFa> = OnceLock::new();
381    static FF: OnceLock<LangFf> = OnceLock::new();
382    static FI: OnceLock<LangFi> = OnceLock::new();
383    static FIL: OnceLock<LangFil> = OnceLock::new();
384    static FO: OnceLock<LangFo> = OnceLock::new();
385    static FR: OnceLock<LangFr> = OnceLock::new();
386    static FR_BE: OnceLock<LangFrBe> = OnceLock::new();
387    static FR_CH: OnceLock<LangFrCh> = OnceLock::new();
388    static FR_DZ: OnceLock<LangFrDz> = OnceLock::new();
389    static GL: OnceLock<LangGl> = OnceLock::new();
390    static GU: OnceLock<LangGu> = OnceLock::new();
391    static HA: OnceLock<LangHa> = OnceLock::new();
392    static HAW: OnceLock<LangHaw> = OnceLock::new();
393    static HE: OnceLock<LangHe> = OnceLock::new();
394    static HI: OnceLock<LangHi> = OnceLock::new();
395    static HMN: OnceLock<LangHmn> = OnceLock::new();
396    static HR: OnceLock<LangHr> = OnceLock::new();
397    static HT: OnceLock<LangHt> = OnceLock::new();
398    static HU: OnceLock<LangHu> = OnceLock::new();
399    static HY: OnceLock<LangHy> = OnceLock::new();
400    static ID: OnceLock<LangId> = OnceLock::new();
401    static IS: OnceLock<LangIs> = OnceLock::new();
402    static IT: OnceLock<LangIt> = OnceLock::new();
403    static JA: OnceLock<LangJa> = OnceLock::new();
404    static JV: OnceLock<LangJv> = OnceLock::new();
405    static KA: OnceLock<LangKa> = OnceLock::new();
406    static KI: OnceLock<LangKi> = OnceLock::new();
407    static KK: OnceLock<LangKk> = OnceLock::new();
408    static KM: OnceLock<LangKm> = OnceLock::new();
409    static KN: OnceLock<LangKn> = OnceLock::new();
410    static KO: OnceLock<LangKo> = OnceLock::new();
411    static KOK: OnceLock<LangKok> = OnceLock::new();
412    static KSW: OnceLock<LangKsw> = OnceLock::new();
413    static KU: OnceLock<LangKu> = OnceLock::new();
414    static KY: OnceLock<LangKy> = OnceLock::new();
415    static KZ: OnceLock<LangKz> = OnceLock::new();
416    static LA: OnceLock<LangLa> = OnceLock::new();
417    static LB: OnceLock<LangLb> = OnceLock::new();
418    static LG: OnceLock<LangLg> = OnceLock::new();
419    static LIJ: OnceLock<LangLij> = OnceLock::new();
420    static LN: OnceLock<LangLn> = OnceLock::new();
421    static LO: OnceLock<LangLo> = OnceLock::new();
422    static LT: OnceLock<LangLt> = OnceLock::new();
423    static LUS: OnceLock<LangLus> = OnceLock::new();
424    static LV: OnceLock<LangLv> = OnceLock::new();
425    static MG: OnceLock<LangMg> = OnceLock::new();
426    static MI: OnceLock<LangMi> = OnceLock::new();
427    static MK: OnceLock<LangMk> = OnceLock::new();
428    static ML: OnceLock<LangMl> = OnceLock::new();
429    static MN: OnceLock<LangMn> = OnceLock::new();
430    static MR: OnceLock<LangMr> = OnceLock::new();
431    static MS: OnceLock<LangMs> = OnceLock::new();
432    static MT: OnceLock<LangMt> = OnceLock::new();
433    static MY: OnceLock<LangMy> = OnceLock::new();
434    static NB: OnceLock<LangNb> = OnceLock::new();
435    static NE: OnceLock<LangNe> = OnceLock::new();
436    static NL: OnceLock<LangNl> = OnceLock::new();
437    static NN: OnceLock<LangNn> = OnceLock::new();
438    static OC: OnceLock<LangOc> = OnceLock::new();
439    static OM: OnceLock<LangOm> = OnceLock::new();
440    static OR: OnceLock<LangOr> = OnceLock::new();
441    static PA: OnceLock<LangPa> = OnceLock::new();
442    static PAP: OnceLock<LangPap> = OnceLock::new();
443    static PL: OnceLock<LangPl> = OnceLock::new();
444    static PLI: OnceLock<LangPli> = OnceLock::new();
445    static PS: OnceLock<LangPs> = OnceLock::new();
446    static PT: OnceLock<LangPt> = OnceLock::new();
447    static PT_BR: OnceLock<LangPtBr> = OnceLock::new();
448    static RM: OnceLock<LangRm> = OnceLock::new();
449    static RM_PUTER: OnceLock<LangRmPuter> = OnceLock::new();
450    static RM_SURMIRAN: OnceLock<LangRmSurmiran> = OnceLock::new();
451    static RM_SURSILV: OnceLock<LangRmSursilv> = OnceLock::new();
452    static RM_SUTSILV: OnceLock<LangRmSutsilv> = OnceLock::new();
453    static RM_VALLADER: OnceLock<LangRmVallader> = OnceLock::new();
454    static RO: OnceLock<LangRo> = OnceLock::new();
455    static RU: OnceLock<LangRu> = OnceLock::new();
456    static RW: OnceLock<LangRw> = OnceLock::new();
457    static SA: OnceLock<LangSa> = OnceLock::new();
458    static SD: OnceLock<LangSd> = OnceLock::new();
459    static SI: OnceLock<LangSi> = OnceLock::new();
460    static SK: OnceLock<LangSk> = OnceLock::new();
461    static SL: OnceLock<LangSl> = OnceLock::new();
462    static SN: OnceLock<LangSn> = OnceLock::new();
463    static SO: OnceLock<LangSo> = OnceLock::new();
464    static SQ: OnceLock<LangSq> = OnceLock::new();
465    static SR: OnceLock<LangSr> = OnceLock::new();
466    static SR_LATN: OnceLock<LangSrLatn> = OnceLock::new();
467    static SU: OnceLock<LangSu> = OnceLock::new();
468    static SV: OnceLock<LangSv> = OnceLock::new();
469    static SW: OnceLock<LangSw> = OnceLock::new();
470    static TA: OnceLock<LangTa> = OnceLock::new();
471    static TE: OnceLock<LangTe> = OnceLock::new();
472    static TET: OnceLock<LangTet> = OnceLock::new();
473    static TG: OnceLock<LangTg> = OnceLock::new();
474    static TH: OnceLock<LangTh> = OnceLock::new();
475    static TI: OnceLock<LangTi> = OnceLock::new();
476    static TK: OnceLock<LangTk> = OnceLock::new();
477    static TL: OnceLock<LangTl> = OnceLock::new();
478    static TR: OnceLock<LangTr> = OnceLock::new();
479    static TT: OnceLock<LangTt> = OnceLock::new();
480    static UK: OnceLock<LangUk> = OnceLock::new();
481    static UR: OnceLock<LangUr> = OnceLock::new();
482    static UZ: OnceLock<LangUz> = OnceLock::new();
483    static UZ_CYR: OnceLock<LangUzCyr> = OnceLock::new();
484    static VI: OnceLock<LangVi> = OnceLock::new();
485    static WO: OnceLock<LangWo> = OnceLock::new();
486    static XH: OnceLock<LangXh> = OnceLock::new();
487    static YI: OnceLock<LangYi> = OnceLock::new();
488    static YO: OnceLock<LangYo> = OnceLock::new();
489    static ZH: OnceLock<LangZh> = OnceLock::new();
490    static ZH_HK: OnceLock<LangZhHk> = OnceLock::new();
491    static ZH_TW: OnceLock<LangZhTw> = OnceLock::new();
492    static ZU: OnceLock<LangZu> = OnceLock::new();
493    match lang {
494        "af" => Some(AF.get_or_init(LangAf::new)),
495        "am" => Some(AM.get_or_init(LangAm::new)),
496        "ar" => Some(AR.get_or_init(LangAr::new)),
497        "as" => Some(AS.get_or_init(LangAs::new)),
498        "az" => Some(AZ.get_or_init(LangAz::new)),
499        "ba" => Some(BA.get_or_init(LangBa::new)),
500        "ban" => Some(BAN.get_or_init(LangBan::new)),
501        "be" => Some(BE.get_or_init(LangBe::new)),
502        "bg" => Some(BG.get_or_init(LangBg::new)),
503        "bm" => Some(BM.get_or_init(LangBm::new)),
504        "bn" => Some(BN.get_or_init(LangBn::new)),
505        "bo" => Some(BO.get_or_init(LangBo::new)),
506        "br" => Some(BR.get_or_init(LangBr::new)),
507        "bs" => Some(BS.get_or_init(LangBs::new)),
508        "ca" => Some(CA.get_or_init(LangCa::new)),
509        "ce" => Some(CE.get_or_init(LangCe::new)),
510        "ceb" => Some(CEB.get_or_init(LangCeb::new)),
511        "ckb" => Some(CKB.get_or_init(LangCkb::new)),
512        "cnh" => Some(CNH.get_or_init(LangCnh::new)),
513        "cs" | "cz" => Some(CS.get_or_init(LangCs::new)),
514        "cy" => Some(CY.get_or_init(LangCy::new)),
515        "da" | "dk" => Some(DA.get_or_init(LangDa::new)),
516        "de" => Some(DE.get_or_init(LangDe::new)),
517        "dv" => Some(DV.get_or_init(LangDv::new)),
518        "el" => Some(EL.get_or_init(LangEl::new)),
519        "en" => Some(EN.get_or_init(LangEn::new)),
520        "en_AERO" | "en_Aero_ICAO" | "en_aero_icao" | "en_x_aero_icao" => Some(EN_AERO.get_or_init(LangEnAero::new)),
521        "en_Aero_FAA" => Some(EN_AERO_FAA.get_or_init(LangEnAeroFaa::new)),
522        "en_Aero_NATO" => Some(EN_AERO_NATO.get_or_init(LangEnAeroNato::new)),
523        "en_Aero_US_Army" => Some(EN_AERO_US_ARMY.get_or_init(LangEnAeroUsArmy::new)),
524        "en_Aero_USN" | "en_Aero_US_Navy" => Some(EN_AERO_USN.get_or_init(LangEnAeroUsn::new)),
525        "en_IN" => Some(EN_IN.get_or_init(LangEnIn::new)),
526        "en_NE" => Some(EN_NE.get_or_init(LangEnNe::new)),
527        "en_NG" => Some(EN_NG.get_or_init(LangEnNg::new)),
528        "en_NP" => Some(EN_NP.get_or_init(LangEnNp::new)),
529        "eo" => Some(EO.get_or_init(LangEo::new)),
530        "es" => Some(ES.get_or_init(LangEs::new)),
531        "es_CO" => Some(ES_CO.get_or_init(LangEsCo::new)),
532        "es_CR" => Some(ES_CR.get_or_init(LangEsCr::new)),
533        "es_GT" => Some(ES_GT.get_or_init(LangEsGt::new)),
534        "es_HN" => Some(ES_HN.get_or_init(LangEsHn::new)),
535        "es_NI" => Some(ES_NI.get_or_init(LangEsNi::new)),
536        "es_VE" => Some(ES_VE.get_or_init(LangEsVe::new)),
537        "et" => Some(ET.get_or_init(LangEt::new)),
538        "eu" => Some(EU.get_or_init(LangEu::new)),
539        "fa" => Some(FA.get_or_init(LangFa::new)),
540        "ff" => Some(FF.get_or_init(LangFf::new)),
541        "fi" => Some(FI.get_or_init(LangFi::new)),
542        "fil" => Some(FIL.get_or_init(LangFil::new)),
543        "fo" => Some(FO.get_or_init(LangFo::new)),
544        "fr" => Some(FR.get_or_init(LangFr::new)),
545        "fr_BE" => Some(FR_BE.get_or_init(LangFrBe::new)),
546        "fr_CH" => Some(FR_CH.get_or_init(LangFrCh::new)),
547        "fr_DZ" => Some(FR_DZ.get_or_init(LangFrDz::new)),
548        "gl" => Some(GL.get_or_init(LangGl::new)),
549        "gu" => Some(GU.get_or_init(LangGu::new)),
550        "ha" => Some(HA.get_or_init(LangHa::new)),
551        "haw" => Some(HAW.get_or_init(LangHaw::new)),
552        "he" => Some(HE.get_or_init(LangHe::new)),
553        "hi" => Some(HI.get_or_init(LangHi::new)),
554        "hmn" => Some(HMN.get_or_init(LangHmn::new)),
555        "hr" => Some(HR.get_or_init(LangHr::new)),
556        "ht" => Some(HT.get_or_init(LangHt::new)),
557        "hu" => Some(HU.get_or_init(LangHu::new)),
558        "hy" => Some(HY.get_or_init(LangHy::new)),
559        "id" => Some(ID.get_or_init(LangId::new)),
560        "is" => Some(IS.get_or_init(LangIs::new)),
561        "it" => Some(IT.get_or_init(LangIt::new)),
562        "ja" | "jp" => Some(JA.get_or_init(LangJa::new)),
563        "jv" | "jw" => Some(JV.get_or_init(LangJv::new)),
564        "ka" => Some(KA.get_or_init(LangKa::new)),
565        "ki" => Some(KI.get_or_init(LangKi::new)),
566        "kk" => Some(KK.get_or_init(LangKk::new)),
567        "km" => Some(KM.get_or_init(LangKm::new)),
568        "kn" => Some(KN.get_or_init(LangKn::new)),
569        "ko" => Some(KO.get_or_init(LangKo::new)),
570        "kok" => Some(KOK.get_or_init(LangKok::new)),
571        "ksw" => Some(KSW.get_or_init(LangKsw::new)),
572        "ku" => Some(KU.get_or_init(LangKu::new)),
573        "ky" => Some(KY.get_or_init(LangKy::new)),
574        "kz" => Some(KZ.get_or_init(LangKz::new)),
575        "la" => Some(LA.get_or_init(LangLa::new)),
576        "lb" => Some(LB.get_or_init(LangLb::new)),
577        "lg" => Some(LG.get_or_init(LangLg::new)),
578        "lij" => Some(LIJ.get_or_init(LangLij::new)),
579        "ln" => Some(LN.get_or_init(LangLn::new)),
580        "lo" => Some(LO.get_or_init(LangLo::new)),
581        "lt" => Some(LT.get_or_init(LangLt::new)),
582        "lus" | "miz" => Some(LUS.get_or_init(LangLus::new)),
583        "lv" => Some(LV.get_or_init(LangLv::new)),
584        "mg" => Some(MG.get_or_init(LangMg::new)),
585        "mi" => Some(MI.get_or_init(LangMi::new)),
586        "mk" => Some(MK.get_or_init(LangMk::new)),
587        "ml" => Some(ML.get_or_init(LangMl::new)),
588        "mn" => Some(MN.get_or_init(LangMn::new)),
589        "mr" => Some(MR.get_or_init(LangMr::new)),
590        "ms" => Some(MS.get_or_init(LangMs::new)),
591        "mt" => Some(MT.get_or_init(LangMt::new)),
592        "my" => Some(MY.get_or_init(LangMy::new)),
593        "nb" | "no" => Some(NB.get_or_init(LangNb::new)),
594        "ne" => Some(NE.get_or_init(LangNe::new)),
595        "nl" => Some(NL.get_or_init(LangNl::new)),
596        "nn" => Some(NN.get_or_init(LangNn::new)),
597        "oc" => Some(OC.get_or_init(LangOc::new)),
598        "om" => Some(OM.get_or_init(LangOm::new)),
599        "or" => Some(OR.get_or_init(LangOr::new)),
600        "pa" => Some(PA.get_or_init(LangPa::new)),
601        "pap" => Some(PAP.get_or_init(LangPap::new)),
602        "pl" => Some(PL.get_or_init(LangPl::new)),
603        "pli" => Some(PLI.get_or_init(LangPli::new)),
604        "ps" => Some(PS.get_or_init(LangPs::new)),
605        "pt" => Some(PT.get_or_init(LangPt::new)),
606        "pt_BR" => Some(PT_BR.get_or_init(LangPtBr::new)),
607        "rm" => Some(RM.get_or_init(LangRm::new)),
608        "rm_puter" => Some(RM_PUTER.get_or_init(LangRmPuter::new)),
609        "rm_surmiran" => Some(RM_SURMIRAN.get_or_init(LangRmSurmiran::new)),
610        "rm_sursilv" => Some(RM_SURSILV.get_or_init(LangRmSursilv::new)),
611        "rm_sutsilv" => Some(RM_SUTSILV.get_or_init(LangRmSutsilv::new)),
612        "rm_vallader" => Some(RM_VALLADER.get_or_init(LangRmVallader::new)),
613        "ro" => Some(RO.get_or_init(LangRo::new)),
614        "ru" => Some(RU.get_or_init(LangRu::new)),
615        "rw" => Some(RW.get_or_init(LangRw::new)),
616        "sa" => Some(SA.get_or_init(LangSa::new)),
617        "sd" => Some(SD.get_or_init(LangSd::new)),
618        "si" => Some(SI.get_or_init(LangSi::new)),
619        "sk" => Some(SK.get_or_init(LangSk::new)),
620        "sl" => Some(SL.get_or_init(LangSl::new)),
621        "sn" => Some(SN.get_or_init(LangSn::new)),
622        "so" => Some(SO.get_or_init(LangSo::new)),
623        "sq" => Some(SQ.get_or_init(LangSq::new)),
624        "sr" | "sr_Cyrl" => Some(SR.get_or_init(LangSr::new)),
625        "sr_Latn" => Some(SR_LATN.get_or_init(LangSrLatn::new)),
626        "su" => Some(SU.get_or_init(LangSu::new)),
627        "sv" => Some(SV.get_or_init(LangSv::new)),
628        "sw" => Some(SW.get_or_init(LangSw::new)),
629        "ta" => Some(TA.get_or_init(LangTa::new)),
630        "te" => Some(TE.get_or_init(LangTe::new)),
631        "tet" => Some(TET.get_or_init(LangTet::new)),
632        "tg" => Some(TG.get_or_init(LangTg::new)),
633        "th" => Some(TH.get_or_init(LangTh::new)),
634        "ti" => Some(TI.get_or_init(LangTi::new)),
635        "tk" => Some(TK.get_or_init(LangTk::new)),
636        "tl" => Some(TL.get_or_init(LangTl::new)),
637        "tr" => Some(TR.get_or_init(LangTr::new)),
638        "tt" => Some(TT.get_or_init(LangTt::new)),
639        "uk" => Some(UK.get_or_init(LangUk::new)),
640        "ur" => Some(UR.get_or_init(LangUr::new)),
641        "uz" => Some(UZ.get_or_init(LangUz::new)),
642        "uz_Cyrl" | "uz_cyr" => Some(UZ_CYR.get_or_init(LangUzCyr::new)),
643        "vi" => Some(VI.get_or_init(LangVi::new)),
644        "wo" => Some(WO.get_or_init(LangWo::new)),
645        "xh" => Some(XH.get_or_init(LangXh::new)),
646        "yi" => Some(YI.get_or_init(LangYi::new)),
647        "yo" => Some(YO.get_or_init(LangYo::new)),
648        "cn" | "zh" | "zh_CN" => Some(ZH.get_or_init(LangZh::new)),
649        "zh_HK" => Some(ZH_HK.get_or_init(LangZhHk::new)),
650        "zh_TW" => Some(ZH_TW.get_or_init(LangZhTw::new)),
651        "zu" => Some(ZU.get_or_init(LangZu::new)),
652        _ => None,
653    }
654}
655
656/// Every Python key the core can serve.
657pub fn supported_lang_keys() -> Vec<&'static str> {
658    vec!["af", "am", "ar", "as", "az", "ba", "ban", "be", "bg", "bm", "bn", "bo", "br", "bs", "ca", "ce", "ceb", "ckb", "cn", "cnh", "cs", "cy", "cz", "da", "de", "dk", "dv", "el", "en", "en_AERO", "en_Aero_FAA", "en_Aero_ICAO", "en_Aero_NATO", "en_Aero_USN", "en_Aero_US_Army", "en_Aero_US_Navy", "en_IN", "en_NE", "en_NG", "en_NP", "en_aero_icao", "en_x_aero_icao", "eo", "es", "es_CO", "es_CR", "es_GT", "es_HN", "es_NI", "es_VE", "et", "eu", "fa", "ff", "fi", "fil", "fo", "fr", "fr_BE", "fr_CH", "fr_DZ", "gl", "gu", "ha", "haw", "he", "hi", "hmn", "hr", "ht", "hu", "hy", "id", "is", "it", "ja", "jp", "jv", "jw", "ka", "ki", "kk", "km", "kn", "ko", "kok", "ksw", "ku", "ky", "kz", "la", "lb", "lg", "lij", "ln", "lo", "lt", "lus", "lv", "mg", "mi", "miz", "mk", "ml", "mn", "mr", "ms", "mt", "my", "nb", "ne", "nl", "nn", "no", "oc", "om", "or", "pa", "pap", "pl", "pli", "ps", "pt", "pt_BR", "rm", "rm_puter", "rm_surmiran", "rm_sursilv", "rm_sutsilv", "rm_vallader", "ro", "ru", "rw", "sa", "sd", "si", "sk", "sl", "sn", "so", "sq", "sr", "sr_Cyrl", "sr_Latn", "su", "sv", "sw", "ta", "te", "tet", "tg", "th", "ti", "tk", "tl", "tr", "tt", "uk", "ur", "uz", "uz_Cyrl", "uz_cyr", "vi", "wo", "xh", "yi", "yo", "zh", "zh_CN", "zh_HK", "zh_TW", "zu"]
659}