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