1crate::ix!();
2
3pub trait LanguageDistribution {
4 fn language_distribution(&self) -> HashMap<Language, f64>;
5}
6
7impl LanguageDistribution for Country {
8 fn language_distribution(&self) -> HashMap<Language, f64> {
9 let mut map = HashMap::new();
10 match self {
11 Country::Afghanistan => {
12 map.insert(Language::Pashto, 0.5);
14 map.insert(Language::Farsi, 0.5);
15 map
16 },
17 Country::Albania => {
18 map.insert(Language::Albanian, 1.0);
20 map
21 },
22 Country::Algeria => {
23 map.insert(Language::Arabic, 0.9);
25 map.insert(Language::Berber, 0.1);
26 map
27 },
28 Country::Andorra => {
29 map.insert(Language::Catalan, 1.0);
31 map
32 },
33 Country::Angola => {
34 map.insert(Language::Portuguese, 1.0);
36 map
37 },
38 Country::AntiguaAndBarbuda => {
39 map.insert(Language::English, 1.0);
41 map
42 },
43 Country::Argentina => {
44 map.insert(Language::Spanish, 1.0);
46 map
47 },
48 Country::Armenia => {
49 map.insert(Language::Armenian, 1.0);
51 map
52 },
53 Country::Australia => {
54 map.insert(Language::English, 1.0);
56 map
57 },
58 Country::Austria => {
59 map.insert(Language::German, 1.0);
61 map
62 },
63 Country::Azerbaijan => {
64 map.insert(Language::Azeri, 1.0);
66 map
67 },
68 Country::Bahamas => {
69 map.insert(Language::English, 1.0);
71 map
72 },
73 Country::Bahrain => {
74 map.insert(Language::Arabic, 1.0);
76 map
77 },
78 Country::Bangladesh => {
79 map.insert(Language::Bengali, 1.0);
81 map
82 },
83 Country::Barbados => {
84 map.insert(Language::English, 1.0);
86 map
87 },
88 Country::Belarus => {
89 map.insert(Language::Belarusian, 0.5);
91 map.insert(Language::Russian, 0.5);
92 map
93 },
94 Country::Belgium => {
95 map.insert(Language::Dutch, 0.55);
97 map.insert(Language::French, 0.44);
98 map.insert(Language::German, 0.01);
99 map
100 },
101 Country::Belize => {
102 map.insert(Language::English, 0.5);
104 map.insert(Language::Spanish, 0.3);
105 map.insert(Language::Kriol, 0.2);
106 map
107 },
108 Country::Benin => {
109 map.insert(Language::French, 1.0);
111 map
112 },
113 Country::Bhutan => {
114 map.insert(Language::Dzongkha, 1.0);
116 map
117 },
118 Country::Bolivia => {
119 map.insert(Language::Spanish, 0.6);
121 map.insert(Language::Quechua, 0.3);
122 map.insert(Language::Aymara, 0.1);
123 map
124 },
125 Country::BosniaAndHerzegovina => {
126 map.insert(Language::Bosnian, 0.4);
128 map.insert(Language::Croatian, 0.3);
129 map.insert(Language::Serbian, 0.3);
130 map
131 },
132 Country::Botswana => {
133 map.insert(Language::English, 0.3);
135 map.insert(Language::Tswana, 0.7);
136 map
137 },
138 Country::Brazil => {
139 map.insert(Language::Portuguese, 1.0);
141 map
142 },
143 Country::Brunei => {
144 map.insert(Language::Malay, 1.0);
146 map
147 },
148 Country::Bulgaria => {
149 map.insert(Language::Bulgarian, 1.0);
151 map
152 },
153 Country::BurkinaFaso => {
154 map.insert(Language::French, 1.0);
156 map
157 },
158 Country::Burundi => {
159 map.insert(Language::Kirundi, 0.8);
161 map.insert(Language::French, 0.2);
162 map
163 },
164 Country::Cambodia => {
165 map.insert(Language::Khmer, 1.0);
167 map
168 },
169 Country::Cameroon => {
170 map.insert(Language::French, 0.7);
172 map.insert(Language::English, 0.3);
173 map
174 },
175 Country::Canada => {
176 map.insert(Language::English, 0.75);
178 map.insert(Language::French, 0.25);
179 map
180 },
181 Country::CapeVerde => {
182 map.insert(Language::Portuguese, 1.0);
184 map
185 },
186 Country::CentralAfricanRepublic => {
187 map.insert(Language::French, 0.5);
189 map.insert(Language::Sango, 0.5);
190 map
191 },
192 Country::Chad => {
193 map.insert(Language::Arabic, 0.5);
195 map.insert(Language::French, 0.5);
196 map
197 },
198 Country::Chile => {
199 map.insert(Language::Spanish, 1.0);
201 map
202 },
203 Country::China => {
204 map.insert(Language::Mandarin, 1.0);
206 map
207 },
208 Country::Colombia => {
209 map.insert(Language::Spanish, 1.0);
211 map
212 },
213 Country::Comoros => {
214 map.insert(Language::Comorian, 0.6);
216 map.insert(Language::Arabic, 0.2);
217 map.insert(Language::French, 0.2);
218 map
219 },
220 Country::CongoBrazzaville => {
221 map.insert(Language::French, 0.5);
223 map.insert(Language::Lingala, 0.5);
224 map
225 },
226 Country::CongoKinshasa => {
227 map.insert(Language::French, 0.4);
229 map.insert(Language::Lingala, 0.2);
230 map.insert(Language::Swahili, 0.2);
231 map.insert(Language::Kikongo, 0.1);
232 map.insert(Language::Tshiluba, 0.1);
233 map
234 },
235 Country::CostaRica => {
236 map.insert(Language::Spanish, 1.0);
238 map
239 },
240 Country::Croatia => {
241 map.insert(Language::Croatian, 1.0);
243 map
244 },
245 Country::Cuba => {
246 map.insert(Language::Spanish, 1.0);
248 map
249 },
250 Country::Cyprus => {
251 map.insert(Language::Greek, 0.8);
253 map.insert(Language::Turkish, 0.2);
254 map
255 },
256 Country::CzechRepublic => {
257 map.insert(Language::Czech, 1.0);
259 map
260 },
261 Country::Denmark => {
262 map.insert(Language::Danish, 1.0);
264 map
265 },
266 Country::Djibouti => {
267 map.insert(Language::French, 0.5);
269 map.insert(Language::Arabic, 0.5);
270 map
271 },
272 Country::Dominica => {
273 map.insert(Language::English, 1.0);
275 map
276 },
277 Country::DominicanRepublic => {
278 map.insert(Language::Spanish, 1.0);
280 map
281 },
282 Country::Ecuador => {
283 map.insert(Language::Spanish, 0.95);
285 map.insert(Language::Quechua, 0.05);
286 map
287 },
288 Country::Egypt => {
289 map.insert(Language::Arabic, 1.0);
291 map
292 },
293 Country::ElSalvador => {
294 map.insert(Language::Spanish, 1.0);
296 map
297 },
298 Country::EquatorialGuinea => {
299 map.insert(Language::Spanish, 0.7);
301 map.insert(Language::French, 0.2);
302 map.insert(Language::Portuguese, 0.1);
303 map
304 },
305 Country::Eritrea => {
306 map.insert(Language::Tigrinya, 0.6);
308 map.insert(Language::Arabic, 0.2);
309 map.insert(Language::English, 0.2);
310 map
311 },
312 Country::Estonia => {
313 map.insert(Language::Estonian, 1.0);
315 map
316 },
317 Country::Eswatini => {
318 map.insert(Language::Swati, 0.8);
320 map.insert(Language::English, 0.2);
321 map
322 },
323 Country::Ethiopia => {
324 map.insert(Language::Amharic, 0.4);
326 map.insert(Language::Oromo, 0.3);
327 map.insert(Language::Tigrinya, 0.3);
328 map
329 },
330 Country::Fiji => {
331 map.insert(Language::English, 0.4);
333 map.insert(Language::Fijian, 0.3);
334 map.insert(Language::Hindi, 0.3);
335 map
336 },
337 Country::Finland => {
338 map.insert(Language::Finnish, 0.92);
340 map.insert(Language::Swedish, 0.08);
341 map
342 },
343 Country::France => {
344 map.insert(Language::French, 0.95);
346 map.insert(Language::English, 0.03);
347 map.insert(Language::Breton, 0.01);
348 map.insert(Language::Basque, 0.01);
349 map
350 },
351 Country::Gabon => {
352 map.insert(Language::French, 1.0);
354 map
355 },
356 Country::Gambia => {
357 map.insert(Language::English, 1.0);
359 map
360 },
361 Country::Georgia => {
362 map.insert(Language::Georgian, 1.0);
364 map
365 },
366 Country::Germany => {
367 map.insert(Language::German, 0.94);
369 map.insert(Language::English, 0.04);
370 map.insert(Language::Turkish, 0.02);
371 map
372 },
373 Country::Ghana => {
374 map.insert(Language::English, 1.0);
376 map
377 },
378 Country::Greece => {
379 map.insert(Language::Greek, 1.0);
381 map
382 },
383 Country::Grenada => {
384 map.insert(Language::English, 1.0);
386 map
387 },
388 Country::Guatemala => {
389 map.insert(Language::Spanish, 0.9);
391 map.insert(Language::Kiche, 0.04);
392 map.insert(Language::Qeqchi, 0.03);
393 map.insert(Language::Kaqchikel, 0.02);
394 map.insert(Language::Mam, 0.01);
395 map
396 },
397 Country::Guinea => {
398 map.insert(Language::French, 1.0);
400 map
401 },
402 Country::GuineaBissau => {
403 map.insert(Language::Portuguese, 1.0);
405 map
406 },
407 Country::Guyana => {
408 map.insert(Language::English, 1.0);
410 map
411 },
412 Country::Haiti => {
413 map.insert(Language::HaitianCreole, 0.8);
415 map.insert(Language::French, 0.2);
416 map
417 },
418 Country::Honduras => {
419 map.insert(Language::Spanish, 1.0);
421 map
422 },
423 Country::Hungary => {
424 map.insert(Language::Hungarian, 1.0);
426 map
427 },
428 Country::Iceland => {
429 map.insert(Language::Icelandic, 1.0);
431 map
432 },
433 Country::India => {
434 map.insert(Language::Hindi, 0.4);
436 map.insert(Language::English, 0.1);
437 map.insert(Language::Bengali, 0.1);
438 map.insert(Language::Telugu, 0.08);
439 map.insert(Language::Marathi, 0.06);
440 map.insert(Language::Tamil, 0.06);
441 map.insert(Language::Urdu, 0.06);
442 map.insert(Language::Gujarati, 0.04);
443 map.insert(Language::Kannada, 0.03);
444 map.insert(Language::Malayalam, 0.03);
445 map.insert(Language::Oriya, 0.02);
446 map.insert(Language::Punjabi, 0.02);
447 map
448 },
449 Country::Indonesia => {
450 map.insert(Language::Indonesian, 1.0);
452 map
453 },
454 Country::Iran => {
455 map.insert(Language::Farsi, 1.0);
457 map
458 },
459 Country::Iraq => {
460 map.insert(Language::Arabic, 0.8);
462 map.insert(Language::Kurdish, 0.2);
463 map
464 },
465 Country::Ireland => {
466 map.insert(Language::English, 0.98);
468 map.insert(Language::IrishGaeilge, 0.02);
469 map
470 },
471 Country::Israel => {
472 map.insert(Language::Hebrew, 0.9);
474 map.insert(Language::Arabic, 0.1);
475 map
476 },
477 Country::Italy => {
478 map.insert(Language::Italian, 0.97);
480 map.insert(Language::German, 0.02);
481 map.insert(Language::French, 0.01);
482 map
483 },
484 Country::IvoryCoast => {
485 map.insert(Language::French, 1.0);
487 map
488 },
489 Country::Jamaica => {
490 map.insert(Language::English, 0.5);
492 map.insert(Language::JamaicanCreole, 0.5);
493 map
494 },
495 Country::Japan => {
496 map.insert(Language::Japanese, 1.0);
498 map
499 },
500 Country::Jordan => {
501 map.insert(Language::Arabic, 1.0);
503 map
504 },
505 Country::Kazakhstan => {
506 map.insert(Language::Kazakh, 0.6);
508 map.insert(Language::Russian, 0.4);
509 map
510 },
511 Country::Kenya => {
512 map.insert(Language::Swahili, 0.7);
514 map.insert(Language::English, 0.3);
515 map
516 },
517 Country::Kiribati => {
518 map.insert(Language::Gilbertese, 0.9);
520 map.insert(Language::English, 0.1);
521 map
522 },
523 Country::Kosovo => {
524 map.insert(Language::Albanian, 0.9);
526 map.insert(Language::Serbian, 0.1);
527 map
528 },
529 Country::Kuwait => {
530 map.insert(Language::Arabic, 1.0);
532 map
533 },
534 Country::Kyrgyzstan => {
535 map.insert(Language::Kyrgyz, 0.7);
537 map.insert(Language::Russian, 0.3);
538 map
539 },
540 Country::Laos => {
541 map.insert(Language::Lao, 1.0);
543 map
544 },
545 Country::Latvia => {
546 map.insert(Language::Latvian, 0.9);
548 map.insert(Language::Russian, 0.1);
549 map
550 },
551 Country::Lebanon => {
552 map.insert(Language::Arabic, 0.8);
554 map.insert(Language::French, 0.2);
555 map
556 },
557 Country::Lesotho => {
558 map.insert(Language::Sotho, 0.9);
560 map.insert(Language::English, 0.1);
561 map
562 },
563 Country::Liberia => {
564 map.insert(Language::English, 1.0);
566 map
567 },
568 Country::Libya => {
569 map.insert(Language::Arabic, 1.0);
571 map
572 },
573 Country::Liechtenstein => {
574 map.insert(Language::German, 1.0);
576 map
577 },
578 Country::Lithuania => {
579 map.insert(Language::Lithuanian, 1.0);
581 map
582 },
583 Country::Luxembourg => {
584 map.insert(Language::Luxembourgish, 0.5);
586 map.insert(Language::French, 0.3);
587 map.insert(Language::German, 0.2);
588 map
589 },
590 Country::Madagascar => {
591 map.insert(Language::Malagasy, 0.8);
593 map.insert(Language::French, 0.2);
594 map
595 },
596 Country::Malawi => {
597 map.insert(Language::English, 0.5);
599 map.insert(Language::Chichewa, 0.5);
600 map
601 },
602 Country::Malaysia => {
603 map.insert(Language::Malay, 1.0);
605 map
606 },
607 Country::Maldives => {
608 map.insert(Language::Dhivehi, 1.0);
610 map
611 },
612 Country::Mali => {
613 map.insert(Language::French, 1.0);
615 map
616 },
617 Country::Malta => {
618 map.insert(Language::Maltese, 0.9);
620 map.insert(Language::English, 0.1);
621 map
622 },
623 Country::MarshallIslands => {
624 map.insert(Language::Marshallese, 0.9);
626 map.insert(Language::English, 0.1);
627 map
628 },
629 Country::Mauritania => {
630 map.insert(Language::Arabic, 1.0);
632 map
633 },
634 Country::Mauritius => {
635 map.insert(Language::English, 0.3);
637 map.insert(Language::French, 0.3);
638 map.insert(Language::MauritianCreole, 0.4);
639 map
640 },
641 Country::Mexico => {
642 map.insert(Language::Spanish, 0.97);
644 map.insert(Language::Nahuatl, 0.015);
645 map.insert(Language::YucatecMaya, 0.005);
646 map.insert(Language::Tzotzil, 0.003);
647 map.insert(Language::Tzeltal, 0.003);
648 map.insert(Language::Chol, 0.002);
649 map.insert(Language::Mam, 0.001);
650 map.insert(Language::Chuj, 0.001);
651 map
652 },
653 Country::Micronesia => {
654 map.insert(Language::English, 0.5);
656 #[allow(deprecated)]
657 map.insert(Language::VariousMicronesianLocal, 0.5);
658 map
659 },
660 Country::Moldova => {
661 map.insert(Language::Romanian, 1.0);
663 map
664 },
665 Country::Monaco => {
666 map.insert(Language::French, 1.0);
668 map
669 },
670 Country::Mongolia => {
671 map.insert(Language::Mongolian, 1.0);
673 map
674 },
675 Country::Montenegro => {
676 map.insert(Language::Serbian, 1.0);
678 map
679 },
680 Country::Morocco => {
681 map.insert(Language::Arabic, 0.8);
683 map.insert(Language::Berber, 0.2);
684 map
685 },
686 Country::Mozambique => {
687 map.insert(Language::Portuguese, 1.0);
689 map
690 },
691 Country::Myanmar => {
692 map.insert(Language::Burmese, 1.0);
694 map
695 },
696 Country::Namibia => {
697 map.insert(Language::English, 1.0);
699 map
700 },
701 Country::Nauru => {
702 map.insert(Language::Nauruan, 0.9);
704 map.insert(Language::English, 0.1);
705 map
706 },
707 Country::Nepal => {
708 map.insert(Language::Nepali, 1.0);
710 map
711 },
712 Country::Netherlands => {
713 map.insert(Language::Dutch, 0.97);
715 map.insert(Language::English, 0.03);
716 map
717 },
718 Country::NewZealand => {
719 map.insert(Language::English, 0.9);
721 map.insert(Language::Maori, 0.1);
722 map
723 },
724 Country::Nicaragua => {
725 map.insert(Language::Spanish, 1.0);
727 map
728 },
729 Country::Niger => {
730 map.insert(Language::French, 1.0);
732 map
733 },
734 Country::Nigeria => {
735 map.insert(Language::English, 0.5);
737 map.insert(Language::Hausa, 0.2);
738 map.insert(Language::Yoruba, 0.15);
739 map.insert(Language::Igbo, 0.15);
740 map
741 },
742 Country::NorthKorea => {
743 map.insert(Language::Korean, 1.0);
745 map
746 },
747 Country::NorthMacedonia => {
748 map.insert(Language::Macedonian, 0.85);
750 map.insert(Language::Albanian, 0.15);
751 map
752 },
753 Country::Norway => {
754 map.insert(Language::Norwegian, 1.0);
756 map
757 },
758 Country::Oman => {
759 map.insert(Language::Arabic, 1.0);
761 map
762 },
763 Country::Pakistan => {
764 map.insert(Language::Urdu, 0.6);
766 map.insert(Language::English, 0.4);
767 map
768 },
769 Country::Palau => {
770 map.insert(Language::Palauan, 0.8);
772 map.insert(Language::English, 0.2);
773 map
774 },
775 Country::Palestine => {
776 map.insert(Language::Arabic, 1.0);
778 map
779 },
780 Country::Panama => {
781 map.insert(Language::Spanish, 1.0);
783 map
784 },
785 Country::PapuaNewGuinea => {
786 map.insert(Language::English, 0.3);
788 map.insert(Language::TokPisin, 0.4);
789 map.insert(Language::HiriMotu, 0.3);
790 map
791 },
792 Country::Paraguay => {
793 map.insert(Language::Spanish, 0.5);
795 map.insert(Language::Guarani, 0.5);
796 map
797 },
798 Country::Peru => {
799 map.insert(Language::Spanish, 0.8);
801 map.insert(Language::Quechua, 0.18);
802 map.insert(Language::Aymara, 0.02);
803 map
804 },
805 Country::Philippines => {
806 map.insert(Language::Filipino, 0.5);
808 map.insert(Language::English, 0.5);
809 map
810 },
811 Country::Poland => {
812 map.insert(Language::Polish, 1.0);
814 map
815 },
816 Country::Portugal => {
817 map.insert(Language::Portuguese, 1.0);
819 map
820 },
821 Country::Qatar => {
822 map.insert(Language::Arabic, 1.0);
824 map
825 },
826 Country::Romania => {
827 map.insert(Language::Romanian, 1.0);
829 map
830 },
831 Country::Russia => {
832 map.insert(Language::Russian, 0.95);
834 map.insert(Language::Tatar, 0.01);
835 map.insert(Language::Chechen, 0.01);
836 map.insert(Language::Bashkir, 0.01);
837 map.insert(Language::Chuvash, 0.008);
838 map.insert(Language::Yakut, 0.006);
839 map.insert(Language::Ossetian, 0.006);
840 map
841 },
842 Country::Rwanda => {
843 map.insert(Language::Kinyarwanda, 0.8);
845 map.insert(Language::French, 0.1);
846 map.insert(Language::English, 0.1);
847 map
848 },
849 Country::SaintKittsAndNevis => {
850 map.insert(Language::English, 1.0);
852 map
853 },
854 Country::SaintLucia => {
855 map.insert(Language::English, 0.7);
857 map.insert(Language::FrenchCreole, 0.3);
858 map
859 },
860 Country::SaintVincentAndTheGrenadines => {
861 map.insert(Language::English, 1.0);
863 map
864 },
865 Country::Samoa => {
866 map.insert(Language::Samoan, 0.9);
868 map.insert(Language::English, 0.1);
869 map
870 },
871 Country::SanMarino => {
872 map.insert(Language::Italian, 1.0);
874 map
875 },
876 Country::SaoTomeAndPrincipe => {
877 map.insert(Language::Portuguese, 1.0);
879 map
880 },
881 Country::SaudiArabia => {
882 map.insert(Language::Arabic, 1.0);
884 map
885 },
886 Country::Senegal => {
887 map.insert(Language::French, 1.0);
889 map
890 },
891 Country::Serbia => {
892 map.insert(Language::Serbian, 1.0);
894 map
895 },
896 Country::Seychelles => {
897 map.insert(Language::SeychelloisCreole, 0.7);
899 map.insert(Language::French, 0.15);
900 map.insert(Language::English, 0.15);
901 map
902 },
903 Country::SierraLeone => {
904 map.insert(Language::English, 1.0);
906 map
907 },
908 Country::Singapore => {
909 map.insert(Language::English, 0.4);
911 map.insert(Language::Malay, 0.2);
912 map.insert(Language::Mandarin, 0.35);
913 map.insert(Language::Tamil, 0.05);
914 map
915 },
916 Country::Slovakia => {
917 map.insert(Language::Slovak, 1.0);
919 map
920 },
921 Country::Slovenia => {
922 map.insert(Language::Slovenian, 1.0);
924 map
925 },
926 Country::SolomonIslands => {
927 map.insert(Language::English, 0.5);
929 map.insert(Language::Pijin, 0.5);
930 map
931 },
932 Country::Somalia => {
933 map.insert(Language::Somali, 0.8);
935 map.insert(Language::Arabic, 0.2);
936 map
937 },
938 Country::SouthAfrica => {
939 map.insert(Language::Zulu, 0.22);
941 map.insert(Language::Xhosa, 0.16);
942 map.insert(Language::Afrikaans, 0.13);
943 map.insert(Language::English, 0.09);
944 map.insert(Language::Sotho, 0.15);
945 map.insert(Language::Tswana, 0.15);
946 map.insert(Language::Ndebele, 0.06);
947 map.insert(Language::Swati, 0.04);
948 map
949 },
950 Country::SouthKorea => {
951 map.insert(Language::Korean, 1.0);
953 map
954 },
955 Country::SouthSudan => {
956 map.insert(Language::English, 0.3);
958 map.insert(Language::Dinka, 0.35);
959 map.insert(Language::Nuer, 0.35);
960 map
961 },
962 Country::Spain => {
963 map.insert(Language::Spanish, 0.88);
965 map.insert(Language::Catalan, 0.06);
966 map.insert(Language::Galician, 0.02);
967 map.insert(Language::Basque, 0.02);
968 map
969 },
970 Country::SriLanka => {
971 map.insert(Language::Sinhala, 0.7);
973 map.insert(Language::Tamil, 0.3);
974 map
975 },
976 Country::Sudan => {
977 map.insert(Language::Arabic, 0.9);
979 map.insert(Language::English, 0.1);
980 map
981 },
982 Country::Suriname => {
983 map.insert(Language::Dutch, 1.0);
985 map
986 },
987 Country::Sweden => {
988 map.insert(Language::Swedish, 1.0);
990 map
991 },
992 Country::Switzerland => {
993 map.insert(Language::German, 0.65);
995 map.insert(Language::French, 0.23);
996 map.insert(Language::Italian, 0.08);
997 map.insert(Language::Romansh, 0.04);
998 map
999 },
1000 Country::Syria => {
1001 map.insert(Language::Arabic, 1.0);
1003 map
1004 },
1005 Country::Taiwan => {
1006 map.insert(Language::Mandarin, 0.7);
1008 map.insert(Language::TaiwaneseHokkien, 0.25);
1009 map.insert(Language::Hakka, 0.05);
1010 map
1011 },
1012 Country::Tajikistan => {
1013 map.insert(Language::Tajik, 1.0);
1015 map
1016 },
1017 Country::Tanzania => {
1018 map.insert(Language::Swahili, 0.9);
1020 map.insert(Language::English, 0.1);
1021 map
1022 },
1023 Country::Thailand => {
1024 map.insert(Language::Thai, 1.0);
1026 map
1027 },
1028 Country::TimorLeste => {
1029 map.insert(Language::Tetum, 0.7);
1031 map.insert(Language::Portuguese, 0.3);
1032 map
1033 },
1034 Country::Togo => {
1035 map.insert(Language::French, 1.0);
1037 map
1038 },
1039 Country::Tonga => {
1040 map.insert(Language::Tongan, 0.9);
1042 map.insert(Language::English, 0.1);
1043 map
1044 },
1045 Country::TrinidadAndTobago => {
1046 map.insert(Language::English, 1.0);
1048 map
1049 },
1050 Country::Tunisia => {
1051 map.insert(Language::Arabic, 1.0);
1053 map
1054 },
1055 Country::Turkey => {
1056 map.insert(Language::Turkish, 1.0);
1058 map
1059 },
1060 Country::Turkmenistan => {
1061 map.insert(Language::Turkmen, 1.0);
1063 map
1064 },
1065 Country::Tuvalu => {
1066 map.insert(Language::Tuvaluan, 0.9);
1068 map.insert(Language::English, 0.1);
1069 map
1070 },
1071 Country::Uganda => {
1072 map.insert(Language::English, 0.5);
1074 map.insert(Language::Swahili, 0.5);
1075 map
1076 },
1077 Country::UAE => {
1078 map.insert(Language::Arabic, 1.0);
1080 map
1081 },
1082 Country::Ukraine => {
1083 map.insert(Language::Ukrainian, 0.9);
1085 map.insert(Language::Russian, 0.1);
1086 map
1087 },
1088 Country::UnitedKingdom => {
1089 map.insert(Language::English, 0.95);
1091 map.insert(Language::Welsh, 0.03);
1092 map.insert(Language::ScottishGaelic, 0.02);
1093 map
1094 },
1095 Country::USA => {
1096 map.insert(Language::English, 0.8);
1098 map.insert(Language::Spanish, 0.2);
1099 map
1100 },
1101 Country::Uruguay => {
1102 map.insert(Language::Spanish, 1.0);
1104 map
1105 },
1106 Country::Uzbekistan => {
1107 map.insert(Language::Uzbek, 1.0);
1109 map
1110 },
1111 Country::Vanuatu => {
1112 map.insert(Language::Bislama, 0.6);
1114 map.insert(Language::English, 0.2);
1115 map.insert(Language::French, 0.2);
1116 map
1117 },
1118 Country::VaticanCity => {
1119 map.insert(Language::Italian, 0.99);
1121 map.insert(Language::Latin, 0.01);
1122 map
1123 },
1124 Country::Venezuela => {
1125 map.insert(Language::Spanish, 1.0);
1127 map
1128 },
1129 Country::Vietnam => {
1130 map.insert(Language::Vietnamese, 1.0);
1132 map
1133 },
1134 Country::Yemen => {
1135 map.insert(Language::Arabic, 1.0);
1137 map
1138 },
1139 Country::Zambia => {
1140 map.insert(Language::English, 0.5);
1142 map.insert(Language::Chichewa, 0.2);
1143 #[allow(deprecated)]
1144 map.insert(Language::VariousBembaNyanjaLocal, 0.3);
1145 map
1146 },
1147 Country::Zimbabwe => {
1148 map.insert(Language::English, 0.3);
1150 map.insert(Language::Shona, 0.35);
1151 map.insert(Language::Ndebele, 0.35);
1152 map
1153 },
1154 }
1155 }
1156}
1157
1158#[cfg(test)]
1159mod language_distribution_tests {
1160 use super::*;
1161
1162 #[test]
1163 fn test_distribution_for_simple_case() {
1164 let c = Country::Japan; let dist = c.language_distribution();
1166 assert_eq!(dist.len(), 1, "Japan should have exactly one language entry");
1167 assert_eq!(*dist.get(&Language::Japanese).unwrap_or(&0.0), 1.0, "Japanese should be 100% in Japan");
1168 }
1169
1170 #[test]
1171 fn test_distribution_multiple_languages() {
1172 let c = Country::Belgium;
1173 let dist = c.language_distribution();
1174 assert!(dist.contains_key(&Language::Dutch), "Belgium should have Dutch");
1175 assert!(dist.contains_key(&Language::French), "Belgium should have French");
1176 assert!(dist.contains_key(&Language::German), "Belgium should have German");
1177
1178 let dutch = dist.get(&Language::Dutch).copied().unwrap_or(0.0);
1179 let french = dist.get(&Language::French).copied().unwrap_or(0.0);
1180 let german = dist.get(&Language::German).copied().unwrap_or(0.0);
1181 let sum = dutch + french + german;
1182
1183 assert!((sum - 1.0).abs() < f64::EPSILON, "Sum of language proportions should be 1.0");
1184 }
1185
1186 #[test]
1187 fn test_distribution_with_indigenous() {
1188 let c = Country::Bolivia;
1189 let dist = c.language_distribution();
1190 let spanish = dist.get(&Language::Spanish).copied().unwrap_or(0.0);
1192 let quechua = dist.get(&Language::Quechua).copied().unwrap_or(0.0);
1193 let aymara = dist.get(&Language::Aymara).copied().unwrap_or(0.0);
1194
1195 assert!((spanish - 0.6).abs() < f64::EPSILON, "Spanish should be 0.6 in Bolivia");
1196 assert!((quechua - 0.3).abs() < f64::EPSILON, "Quechua should be 0.3 in Bolivia");
1197 assert!((aymara - 0.1).abs() < f64::EPSILON, "Aymara should be 0.1 in Bolivia");
1198 }
1199}