OpenTTD Source 20250612-master-gb012d9e3dc
townname.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6 */
7
10#include "../core/enum_type.hpp"
11
12static const std::string_view _name_original_english_1[] = {
13 "Great ",
14 "Little ",
15 "New ",
16 "Fort ",
17};
18
19static const std::string_view _name_original_english_2[] = {
20 "Wr",
21 "B",
22 "C",
23 "Ch",
24 "Br",
25 "D",
26 "Dr",
27 "F",
28 "Fr",
29 "Fl",
30 "G",
31 "Gr",
32 "H",
33 "L",
34 "M",
35 "N",
36 "P",
37 "Pr",
38 "Pl",
39 "R",
40 "S",
41 "S",
42 "Sl",
43 "T",
44 "Tr",
45 "W",
46};
47
48static const std::string_view _name_original_english_3[] = {
49 "ar",
50 "a",
51 "e",
52 "in",
53 "on",
54 "u",
55 "un",
56 "en",
57};
58
59static const std::string_view _name_original_english_4[] = {
60 "n",
61 "ning",
62 "ding",
63 "d",
64 "",
65 "t",
66 "fing",
67};
68
69static const std::string_view _name_original_english_5[] = {
70 "ville",
71 "ham",
72 "field",
73 "ton",
74 "town",
75 "bridge",
76 "bury",
77 "wood",
78 "ford",
79 "hall",
80 "ston",
81 "way",
82 "stone",
83 "borough",
84 "ley",
85 "head",
86 "bourne",
87 "pool",
88 "worth",
89 "hill",
90 "well",
91 "hattan",
92 "burg",
93};
94
95static const std::string_view _name_original_english_6[] = {
96 "-on-sea",
97 " Bay",
98 " Market",
99 " Cross",
100 " Bridge",
101 " Falls",
102 " City",
103 " Ridge",
104 " Springs",
105};
106
107static const std::string_view _name_additional_english_prefix[] = {
108 "Great ",
109 "Little ",
110 "New ",
111 "Fort ",
112 "St. ",
113 "Old ",
114};
115
116static const std::string_view _name_additional_english_1a[] = {
117 "Pen",
118 "Lough",
119 "Stam",
120 "Aber",
121 "Acc",
122 "Ex",
123 "Ax",
124 "Bre",
125 "Cum",
126 "Dun",
127 "Fin",
128 "Inver",
129 "Kin",
130 "Mon",
131 "Nan",
132 "Nant",
133 "Pit",
134 "Pol",
135 "Pont",
136 "Strath",
137 "Tre",
138 "Tilly",
139 "Beck",
140 "Canter",
141 "Bath",
142 "Liver",
143 "Mal",
144 "Ox",
145 "Bletch",
146 "Maccles",
147 "Grim",
148 "Wind",
149 "Sher",
150 "Gates",
151 "Orp",
152 "Brom",
153 "Lewis",
154 "Whit",
155 "White",
156 "Worm",
157 "Tyne",
158 "Avon",
159 "Stan",
160};
161
162static const std::string_view _name_additional_english_1b1[] = {
163 "Wr",
164 "B",
165 "C",
166 "Ch",
167 "Br",
168 "D",
169 "Dr",
170 "F",
171 "Fr",
172 "Fl",
173 "G",
174 "Gr",
175 "H",
176 "L",
177 "M",
178 "N",
179 "P",
180 "Pr",
181 "Pl",
182 "R",
183 "S",
184 "S",
185 "Sl",
186 "T",
187 "Tr",
188 "W",
189};
190
191static const std::string_view _name_additional_english_1b2[] = {
192 "ar",
193 "a",
194 "e",
195 "in",
196 "on",
197 "u",
198 "o",
199 "ee",
200 "es",
201 "ea",
202 "un",
203 "en",
204};
205
206static const std::string_view _name_additional_english_1b3a[] = {
207 "n",
208 "d",
209 "",
210 "t",
211 "",
212 "",
213};
214
215static const std::string_view _name_additional_english_1b3b[] = {
216 "ning",
217 "ding",
218 "fing",
219};
220
221static const std::string_view _name_additional_english_2[] = {
222 "ville",
223 "ham",
224 "field",
225 "ton",
226 "town",
227 "borough",
228 "bridge",
229 "bury",
230 "wood",
231 "ditch",
232 "ford",
233 "hall",
234 "dean",
235 "leigh",
236 "dore",
237 "ston",
238 "stow",
239 "church",
240 "wich",
241 "low",
242 "way",
243 "stone",
244 "minster",
245 "ley",
246 "head",
247 "bourne",
248 "pool",
249 "worth",
250 "hill",
251 "well",
252 "hattan",
253 "burg",
254 "berg",
255 "burgh",
256 "port",
257 "stoke",
258 "haven",
259 "stable",
260 "stock",
261 "side",
262 "brook",
263 "don",
264 "den",
265 "down",
266 "nor",
267 "grove",
268 "combe",
269 "by",
270 "say",
271 "ney",
272 "chester",
273 "dale",
274 "ness",
275 "shaw",
276 "thwaite",
277};
278
279static const std::string_view _name_additional_english_3[] = {
280 "-on-sea",
281 " Bay",
282 " Market",
283 " Beeches",
284 " Common",
285 " Park",
286 " Heath",
287 " Marsh",
288 " Green",
289 " Castle",
290 " End",
291 " Rivers",
292 " Cross",
293 " Bridge",
294 " Falls",
295 " City",
296 " Ridge",
297 " Springs",
298};
299
300static const std::string_view _name_austrian_a1[] = {
301 "Bad ",
302 "Deutsch ",
303 "Gross ",
304 "Klein ",
305 "Markt ",
306 "Maria ",
307};
308
309static const std::string_view _name_austrian_a2[] = {
310 "Aus",
311 "Alten",
312 "Braun",
313 "V\u00f6sl",
314 "Mittern",
315 "Nuss",
316 "Neu",
317 "Walters",
318 "Breiten",
319 "Eisen",
320 "Feld",
321 "Mittern",
322 "Gall",
323 "Obern",
324 "Grat",
325 "Heiligen",
326 "Hof",
327 "Holla",
328 "Stein",
329 "Eber",
330 "Eggen",
331 "Enzers",
332 "Frauen",
333 "Herren",
334 "Hof",
335 "H\u00fctt",
336 "Kaisers",
337 "K\u00f6nigs",
338 "Knittel",
339 "Lang",
340 "Ober",
341 "Ollers",
342 "Pfaffen",
343 "Potten",
344 "Salz",
345 "Schwarz",
346 "Stocker",
347 "Unter",
348 "Utten",
349 "V\u00f6sen",
350 "Vill",
351 "Weissen",
352};
353
354static const std::string_view _name_austrian_a3[] = {
355 "see",
356 "bach",
357 "dorf",
358 "ach",
359 "stein",
360 "hofen",
361 "au",
362 "ach",
363 "kirch",
364 "kirchen",
365 "kreuz",
366 "brunn",
367 "siedl",
368 "markt",
369 "wang",
370 "haag",
371};
372
373static const std::string_view _name_austrian_a4[] = {
374 "Bruck",
375 "Brunn",
376 "Gams",
377 "Grein",
378 "Ried",
379 "Faak",
380 "Zell",
381 "Spital",
382 "Kirchberg",
383 "Saal",
384 "Taferl",
385 "Wald",
386};
387
388static const std::string_view _name_austrian_a5[] = {
389 "St. ",
390 "Sankt ",
391};
392
393static const std::string_view _name_austrian_a6[] = {
394 "Aegyd",
395 "Andr\u00e4",
396 "Georgen",
397 "Jakob",
398 "Johann",
399 "Leonhard",
400 "Marein",
401 "Lorenzen",
402 "Margarethen",
403 "Martin",
404 "Michael",
405 "Nikolai",
406 "Oswald",
407 "Peter",
408 "P\u00f6lten",
409 "Stefan",
410 "Stephan",
411 "Thomas",
412 "Veit",
413 "Wolfgang",
414};
415
416static const std::string_view _name_austrian_f1[] = {
417 " an der ",
418 " ob der ",
419};
420
421static const std::string_view _name_austrian_f2[] = {
422 "Donau",
423 "Steyr",
424 "Lafnitz",
425 "Leitha",
426 "Thaya",
427 "Gail",
428 "Drau",
429 "Salzach",
430 "Ybbs",
431 "Traisen",
432 "Enns",
433 "Mur",
434 "Ill",
435};
436
437static const std::string_view _name_austrian_b1[] = {
438 " am ",
439};
440
441static const std::string_view _name_austrian_b2[] = {
442 "Brenner",
443 "Dachstein",
444 "Gebirge",
445 "Grossglockner",
446 "Hausruck",
447 "Semmering",
448 "Wagram",
449 "Wechsel",
450 "Wilden Kaiser",
451 "Ziller",
452};
453
454static const std::string_view _name_german_real[] = {
455 "Berlin",
456 "Bonn",
457 "Bremen",
458 "Cottbus",
459 "Chemnitz",
460 "Dortmund",
461 "Dresden",
462 "Erfurt",
463 "Erlangen",
464 "Essen",
465 "Fulda",
466 "Gera",
467 "Kassel",
468 "Kiel",
469 "K\u00f6ln",
470 "L\u00fcbeck",
471 "Magdeburg",
472 "M\u00fcnchen",
473 "Potsdam",
474 "Stuttgart",
475 "Wiesbaden",
476};
477
478static const std::string_view _name_german_pre[] = {
479 "Bad ",
480 "Klein ",
481 "Neu ",
482};
483
484static const std::string_view _name_german_1[] = {
485 "Alb",
486 "Als",
487 "Ander",
488 "Arns",
489 "Bruns",
490 "Bam",
491 "Biele",
492 "Cloppen",
493 "Co",
494 "Duis",
495 "D\u00fcssel",
496 "Dannen",
497 "Elb",
498 "Els",
499 "Elster",
500 "Eichen",
501 "Ems",
502 "Fahr",
503 "Falken",
504 "Flens",
505 "Frank",
506 "Frei",
507 "Freuden",
508 "Fried",
509 "F\u00fcrsten",
510 "Hahn",
511 "Ham",
512 "Harz",
513 "Heidel",
514 "Hers",
515 "Herz",
516 "Holz",
517 "Hildes",
518 "Inns",
519 "Ilsen",
520 "Ingols",
521 "Kel",
522 "Kies",
523 "Korn",
524 "Kor",
525 "Kreuz",
526 "Kulm",
527 "Langen",
528 "Lim",
529 "Lohr",
530 "L\u00fcne",
531 "Mel",
532 "Michels",
533 "M\u00fchl",
534 "Naum",
535 "Nest",
536 "Nord",
537 "Nort",
538 "Nien",
539 "Nidda",
540 "Nieder",
541 "N\u00fcrn",
542 "Ober",
543 "Offen",
544 "Osna",
545 "Olden",
546 "Ols",
547 "Oranien",
548 "Pader",
549 "Quedlin",
550 "Quer",
551 "Ravens",
552 "Regens",
553 "Rott",
554 "Ros",
555 "R\u00fcssels",
556 "Saal",
557 "Saar",
558 "Salz",
559 "Sch\u00f6ne",
560 "Schwein",
561 "Sonder",
562 "Sonnen",
563 "Stein",
564 "Strals",
565 "Straus",
566 "S\u00fcd",
567 "Ton",
568 "Unter",
569 "Ur",
570 "Vor",
571 "Wald",
572 "War",
573 "Wert",
574 "Wester",
575 "Witten",
576 "Wolfs",
577 "W\u00fcrz",
578};
579
580static const std::string_view _name_german_2[] = {
581 "bach",
582 "berg",
583 "br\u00fcck",
584 "br\u00fccken",
585 "burg",
586 "dorf",
587 "feld",
588 "furt",
589 "hausen",
590 "haven",
591 "heim",
592 "horst",
593 "mund",
594 "m\u00fcnster",
595 "stadt",
596 "wald",
597};
598
599static const std::string_view _name_german_3_an_der[] = {
600 " an der ",
601};
602
603static const std::string_view _name_german_3_am[] = {
604 " am ",
605};
606
607static const std::string_view _name_german_4_an_der[] = {
608 "Oder",
609 "Spree",
610 "Donau",
611 "Saale",
612 "Elbe",
613};
614
615static const std::string_view _name_german_4_am[] = {
616 "Main",
617};
618
619static const std::string_view _name_spanish_real[] = {
620 "Caracas",
621 "Maracay",
622 "Maracaibo",
623 "Valencia",
624 "El Dorado",
625 "Morrocoy",
626 "Cata",
627 "Cataito",
628 "Ciudad Bol\u00edvar",
629 "Barquisimeto",
630 "M\u00e9rida",
631 "Puerto Ordaz",
632 "Santa Elena",
633 "San Juan",
634 "San Luis",
635 "San Rafael",
636 "Santiago",
637 "Barcelona",
638 "Barinas",
639 "San Crist\u00f3bal",
640 "San Francisco",
641 "San Mart\u00edn",
642 "Guayana",
643 "San Carlos",
644 "El Lim\u00f3n",
645 "Coro",
646 "Coro Coro",
647 "Puerto Ayacucho",
648 "Elorza",
649 "Arismendi",
650 "Trujillo",
651 "Car\u00fapano",
652 "Anaco",
653 "Lima",
654 "Cuzco",
655 "Iquitos",
656 "Callao",
657 "Huacho",
658 "Caman\u00e1",
659 "Puerto Chala",
660 "Santa Cruz",
661 "Quito",
662 "Cuenca",
663 "Medell\u00edn",
664 "Tulc\u00e1n",
665 "Esmeraldas",
666 "Ibarra",
667 "San Lorenzo",
668 "Macas",
669 "Mora\u00f1a",
670 "Machala",
671 "Zamora",
672 "Latacunga",
673 "Tena",
674 "Cochabamba",
675 "Ascensi\u00f3n",
676 "Magdalena",
677 "Santa Ana",
678 "Manoa",
679 "Sucre",
680 "Oruro",
681 "Uyuni",
682 "Potos\u00ed",
683 "Tupiza",
684 "La Quiaca",
685 "Yacu\u00edba",
686 "San Borja",
687 "Fuerte Olimpo",
688 "Fort\u00edn Esteros",
689 "Campo Grande",
690 "Bogot\u00e1",
691 "El Banco",
692 "Zaragoza",
693 "Neiva",
694 "Mariano",
695 "Cali",
696 "La Palma",
697 "Andoas",
698 "Barranca",
699 "Montevideo",
700 "Valdivia",
701 "Arica",
702 "Temuco",
703 "Tocopilla",
704 "Mendoza",
705 "Santa Rosa",
706};
707
708static const std::string_view _name_french_real[] = {
709 "Agincourt",
710 "Lille",
711 "Dinan",
712 "Aubusson",
713 "Rodez",
714 "Bergerac",
715 "Bordeaux",
716 "Bayonne",
717 "Montpellier",
718 "Mont\u00e9limar",
719 "Valence",
720 "Digne",
721 "Nice",
722 "Cannes",
723 "St. Tropez",
724 "Marseille",
725 "Narbonne",
726 "S\u00e8te",
727 "Aurillac",
728 "Gu\u00e9ret",
729 "Le Creusot",
730 "Nevers",
731 "Auxerre",
732 "Versailles",
733 "Meaux",
734 "Ch\u00e2lons",
735 "Compi\u00e8gne",
736 "Metz",
737 "Chaumont",
738 "Langres",
739 "Bourg",
740 "Lyon",
741 "Vienne",
742 "Grenoble",
743 "Toulon",
744 "Rennes",
745 "Le Mans",
746 "Angers",
747 "Nantes",
748 "Ch\u00e2teauroux",
749 "Orl\u00e9ans",
750 "Lisieux",
751 "Cherbourg",
752 "Morlaix",
753 "Cognac",
754 "Agen",
755 "Tulle",
756 "Blois",
757 "Troyes",
758 "Charolles",
759 "Toulouse",
760 "Chamb\u00e9ry",
761 "Tours",
762 "St. Brieuc",
763 "St. Malo",
764 "La Rochelle",
765 "St. Flour",
766 "Le Puy",
767 "Vichy",
768 "St. Valery",
769 "Beaujolais",
770 "Reims",
771 "Albi",
772 "Paris",
773 "Biarritz",
774 "B\u00e9ziers",
775 "N\u00eemes",
776 "Chamonix",
777 "Angoul\u00e8me",
778 "Alen\u00e7on",
779};
780
781static const std::string_view _name_silly_1[] = {
782 "Binky",
783 "Blubber",
784 "Bumble",
785 "Crinkle",
786 "Crusty",
787 "Dangle",
788 "Dribble",
789 "Flippety",
790 "Google",
791 "Muffin",
792 "Nosey",
793 "Pinker",
794 "Quack",
795 "Rumble",
796 "Sleepy",
797 "Sliggles",
798 "Snooze",
799 "Teddy",
800 "Tinkle",
801 "Twister",
802 "Pinker",
803 "Hippo",
804 "Itchy",
805 "Jelly",
806 "Jingle",
807 "Jolly",
808 "Kipper",
809 "Lazy",
810 "Frogs",
811 "Mouse",
812 "Quack",
813 "Cheeky",
814 "Lumpy",
815 "Grumpy",
816 "Mangle",
817 "Fiddle",
818 "Slugs",
819 "Noodles",
820 "Poodles",
821 "Shiver",
822 "Rumble",
823 "Pixie",
824 "Puddle",
825 "Riddle",
826 "Rattle",
827 "Rickety",
828 "Waffle",
829 "Sagging",
830 "Sausage",
831 "Egg",
832 "Sleepy",
833 "Scatter",
834 "Scramble",
835 "Silly",
836 "Simple",
837 "Trickle",
838 "Slippery",
839 "Slimey",
840 "Slumber",
841 "Soggy",
842 "Sliggles",
843 "Splutter",
844 "Sulky",
845 "Swindle",
846 "Swivel",
847 "Tasty",
848 "Tangle",
849 "Toggle",
850 "Trotting",
851 "Tumble",
852 "Snooze",
853 "Water",
854 "Windy",
855 "Amble",
856 "Bubble",
857 "Cheery",
858 "Cheese",
859 "Cockle",
860 "Cracker",
861 "Crumple",
862 "Teddy",
863 "Evil",
864 "Fairy",
865 "Falling",
866 "Fishy",
867 "Fizzle",
868 "Frosty",
869 "Griddle",
870};
871
872static const std::string_view _name_silly_2[] = {
873 "ton",
874 "bury",
875 "bottom",
876 "ville",
877 "well",
878 "weed",
879 "worth",
880 "wig",
881 "wick",
882 "wood",
883 "pool",
884 "head",
885 "burg",
886 "gate",
887 "bridge",
888};
889
890static const std::string_view _name_swedish_1[] = {
891 "Gamla ",
892 "Lilla ",
893 "Nya ",
894 "Stora ",
895};
896
897static const std::string_view _name_swedish_2[] = {
898 "Boll",
899 "Bor",
900 "Ed",
901 "En",
902 "Erik",
903 "Es",
904 "Fin",
905 "Fisk",
906 "Gr\u00f6n",
907 "Hag",
908 "Halm",
909 "Karl",
910 "Kram",
911 "Kung",
912 "Land",
913 "Lid",
914 "Lin",
915 "Mal",
916 "Malm",
917 "Marie",
918 "Ner",
919 "Norr",
920 "Oskar",
921 "Sand",
922 "Skog",
923 "Stock",
924 "Stor",
925 "Str\u00f6m",
926 "Sund",
927 "S\u00f6der",
928 "Tall",
929 "Tratt",
930 "Troll",
931 "Upp",
932 "Var",
933 "V\u00e4ster",
934 "\u00c4ngel",
935 "\u00d6ster",
936};
937
938static const std::string_view _name_swedish_2a[] = {
939 "B",
940 "Br",
941 "D",
942 "Dr",
943 "Dv",
944 "F",
945 "Fj",
946 "Fl",
947 "Fr",
948 "G",
949 "Gl",
950 "Gn",
951 "Gr",
952 "H",
953 "J",
954 "K",
955 "Kl",
956 "Kn",
957 "Kr",
958 "Kv",
959 "L",
960 "M",
961 "N",
962 "P",
963 "Pl",
964 "Pr",
965 "R",
966 "S",
967 "Sk",
968 "Skr",
969 "Sl",
970 "Sn",
971 "Sp",
972 "Spr",
973 "St",
974 "Str",
975 "Sv",
976 "T",
977 "Tr",
978 "Tv",
979 "V",
980 "Vr",
981};
982
983static const std::string_view _name_swedish_2b[] = {
984 "a",
985 "e",
986 "i",
987 "o",
988 "u",
989 "y",
990 "\u00e5",
991 "\u00e4",
992 "\u00f6",
993};
994
995static const std::string_view _name_swedish_2c[] = {
996 "ck",
997 "d",
998 "dd",
999 "g",
1000 "gg",
1001 "l",
1002 "ld",
1003 "m",
1004 "n",
1005 "nd",
1006 "ng",
1007 "nn",
1008 "p",
1009 "pp",
1010 "r",
1011 "rd",
1012 "rk",
1013 "rp",
1014 "rr",
1015 "rt",
1016 "s",
1017 "sk",
1018 "st",
1019 "t",
1020 "tt",
1021 "v",
1022};
1023
1024static const std::string_view _name_swedish_3[] = {
1025 "arp",
1026 "berg",
1027 "boda",
1028 "borg",
1029 "bro",
1030 "bukten",
1031 "by",
1032 "byn",
1033 "fors",
1034 "hammar",
1035 "hamn",
1036 "holm",
1037 "hus",
1038 "h\u00e4ttan",
1039 "kulle",
1040 "k\u00f6ping",
1041 "lund",
1042 "l\u00f6v",
1043 "sala",
1044 "skrona",
1045 "sl\u00e4tt",
1046 "sp\u00e5ng",
1047 "stad",
1048 "sund",
1049 "svall",
1050 "svik",
1051 "s\u00e5ker",
1052 "udde",
1053 "valla",
1054 "viken",
1055 "\u00e4lv",
1056 "\u00e5s",
1057};
1058
1059static const std::string_view _name_dutch_1[] = {
1060 "Nieuw ",
1061 "Oud ",
1062 "Groot ",
1063 "Zuid ",
1064 "Noord ",
1065 "Oost ",
1066 "West ",
1067 "Klein ",
1068};
1069
1070static const std::string_view _name_dutch_2[] = {
1071 "Hoog",
1072 "Laag",
1073 "Zuider",
1074 "Zuid",
1075 "Ooster",
1076 "Oost",
1077 "Wester",
1078 "West",
1079 "Hoofd",
1080 "Midden",
1081 "Eind",
1082 "Amster",
1083 "Amstel",
1084 "Dord",
1085 "Rotter",
1086 "Haar",
1087 "Til",
1088 "Enk",
1089 "Dok",
1090 "Veen",
1091 "Leidsch",
1092 "Lely",
1093 "En",
1094 "Kaats",
1095 "U",
1096 "Maas",
1097 "Mar",
1098 "Bla",
1099 "Al",
1100 "Alk",
1101 "Eer",
1102 "Drie",
1103 "Ter",
1104 "Groes",
1105 "Goes",
1106 "Soest",
1107 "Coe",
1108 "Uit",
1109 "Zwaag",
1110 "Hellen",
1111 "Slie",
1112 "IJ",
1113 "Grubben",
1114 "Groen",
1115 "Lek",
1116 "Ridder",
1117 "Schie",
1118 "Olde",
1119 "Roose",
1120 "Haar",
1121 "Til",
1122 "Loos",
1123 "Hil",
1124};
1125
1126static const std::string_view _name_dutch_3[] = {
1127 "Drog",
1128 "Nat",
1129 "Valk",
1130 "Bob",
1131 "Dedem",
1132 "Kollum",
1133 "Best",
1134 "Hoend",
1135 "Leeuw",
1136 "Graaf",
1137 "Uithuis",
1138 "Purm",
1139 "Hard",
1140 "Hell",
1141 "Werk",
1142 "Spijk",
1143 "Vink",
1144 "Wams",
1145 "Heerhug",
1146 "Koning",
1147};
1148
1149static const std::string_view _name_dutch_4[] = {
1150 "e",
1151 "er",
1152 "el",
1153 "en",
1154 "o",
1155 "s",
1156};
1157
1158static const std::string_view _name_dutch_5[] = {
1159 "stad",
1160 "vorst",
1161 "dorp",
1162 "dam",
1163 "beek",
1164 "doorn",
1165 "zijl",
1166 "zijlen",
1167 "lo",
1168 "muiden",
1169 "meden",
1170 "vliet",
1171 "nisse",
1172 "daal",
1173 "vorden",
1174 "vaart",
1175 "mond",
1176 "zaal",
1177 "water",
1178 "duinen",
1179 "heuvel",
1180 "geest",
1181 "kerk",
1182 "meer",
1183 "maar",
1184 "hoorn",
1185 "rade",
1186 "wijk",
1187 "berg",
1188 "heim",
1189 "sum",
1190 "richt",
1191 "burg",
1192 "recht",
1193 "drecht",
1194 "trecht",
1195 "tricht",
1196 "dricht",
1197 "lum",
1198 "rum",
1199 "halen",
1200 "oever",
1201 "wolde",
1202 "veen",
1203 "hoven",
1204 "gast",
1205 "kum",
1206 "hage",
1207 "dijk",
1208 "zwaag",
1209 "pomp",
1210 "huizen",
1211 "bergen",
1212 "schede",
1213 "mere",
1214 "end",
1215};
1216
1217static const std::string_view _name_finnish_real[] = {
1218 "Aijala",
1219 "Kisko",
1220 "Espoo",
1221 "Helsinki",
1222 "Tapiola",
1223 "J\u00e4rvel\u00e4",
1224 "Lahti",
1225 "Kotka",
1226 "Hamina",
1227 "Loviisa",
1228 "Kouvola",
1229 "Tampere",
1230 "Oulu",
1231 "Salo",
1232 "Malmi",
1233 "Pelto",
1234 "Koski",
1235 "Iisalmi",
1236 "Raisio",
1237 "Taavetti",
1238 "Joensuu",
1239 "Imatra",
1240 "Tapanila",
1241 "Pasila",
1242 "Turku",
1243 "Kupittaa",
1244 "Vaasa",
1245 "Pori",
1246 "Rauma",
1247 "Kolari",
1248 "Lieksa",
1249};
1250
1251static const std::string_view _name_finnish_1[] = {
1252 "Hiekka",
1253 "Haapa",
1254 "Mylly",
1255 "Sauna",
1256 "Uusi",
1257 "Vanha",
1258 "Kes\u00e4",
1259 "Kuusi",
1260 "Pelto",
1261 "Tuomi",
1262 "Terva",
1263 "Olki",
1264 "Hein\u00e4",
1265 "Sein\u00e4",
1266 "Rova",
1267 "Koivu",
1268 "Kokko",
1269 "M\u00e4nty",
1270 "Pihlaja",
1271 "Pet\u00e4j\u00e4",
1272 "Kielo",
1273 "Kauha",
1274 "Viita",
1275 "Kivi",
1276 "Riihi",
1277 "\u00c4\u00e4ne",
1278 "Niini",
1279};
1280
1281static const std::string_view _name_finnish_2[] = {
1282 "Lappeen",
1283 "Lohjan",
1284 "Savon",
1285 "Lapin",
1286 "Pit\u00e4j\u00e4n",
1287 "Martin",
1288 "Kuusan",
1289 "Kemi",
1290 "Keri",
1291 "H\u00e4meen",
1292 "Kangas",
1293};
1294
1295static const std::string_view _name_finnish_3[] = {
1296 "harju",
1297 "linna",
1298 "j\u00e4rvi",
1299 "kallio",
1300 "m\u00e4ki",
1301 "nummi",
1302 "joki",
1303 "kyl\u00e4",
1304 "lampi",
1305 "lahti",
1306 "mets\u00e4",
1307 "suo",
1308 "laakso",
1309 "niitty",
1310 "luoto",
1311 "hovi",
1312 "ranta",
1313 "koski",
1314 "salo",
1315};
1316
1317static const std::string_view _name_polish_1_m[] = {
1318 "Wielki ",
1319 "Ma\u0142y ",
1320 "Z\u0142y ",
1321 "Dobry ",
1322 "Nowy ",
1323 "Stary ",
1324 "Z\u0142oty ",
1325 "Zielony ",
1326 "Bia\u0142y ",
1327 "Modry ",
1328 "D\u0119bowy ",
1329};
1330
1331static const std::string_view _name_polish_1_f[] = {
1332 "Wielka ",
1333 "Ma\u0142a ",
1334 "Z\u0142a ",
1335 "Dobra ",
1336 "Nowa ",
1337 "Stara ",
1338 "Z\u0142ota ",
1339 "Zielona ",
1340 "Bia\u0142a ",
1341 "Modra ",
1342 "D\u0119bowa ",
1343};
1344
1345static const std::string_view _name_polish_1_n[] = {
1346 "Wielkie ",
1347 "Ma\u0142e ",
1348 "Z\u0142e ",
1349 "Dobre ",
1350 "Nowe ",
1351 "Stare ",
1352 "Z\u0142ote ",
1353 "Zielone ",
1354 "Bia\u0142e ",
1355 "Modre ",
1356 "D\u0119bowe ",
1357};
1358
1359static const std::string_view _name_polish_2_o[] = {
1360 "Frombork",
1361 "Gniezno",
1362 "Olsztyn",
1363 "Toru\u0144",
1364 "Bydgoszcz",
1365 "Terespol",
1366 "Krak\u00f3w",
1367 "Pozna\u0144",
1368 "Wroc\u0142aw",
1369 "Katowice",
1370 "Cieszyn",
1371 "Bytom",
1372 "Frombork",
1373 "Hel",
1374 "Konin",
1375 "Lublin",
1376 "Malbork",
1377 "Sopot",
1378 "Sosnowiec",
1379 "Gda\u0144sk",
1380 "Gdynia",
1381 "Sieradz",
1382 "Sandomierz",
1383 "Szczyrk",
1384 "Szczytno",
1385 "Szczecin",
1386 "Zakopane",
1387 "Szklarska Por\u0119ba",
1388 "Bochnia",
1389 "Golub-Dobrzy\u0144",
1390 "Chojnice",
1391 "Ostrowiec",
1392 "Otwock",
1393 "Wolsztyn",
1394};
1395
1396static const std::string_view _name_polish_2_m[] = {
1397 "Jarocin",
1398 "Gogolin",
1399 "Tomasz\u00f3w",
1400 "Piotrk\u00f3w",
1401 "Lidzbark",
1402 "Rypin",
1403 "Radzymin",
1404 "Wo\u0142omin",
1405 "Pruszk\u00f3w",
1406 "Olsztynek",
1407 "Rypin",
1408 "Cisek",
1409 "Krotoszyn",
1410 "Stoczek",
1411 "Lubin",
1412 "Lubicz",
1413 "Milicz",
1414 "Targ",
1415 "Ostr\u00f3w",
1416 "Ozimek",
1417 "Puck",
1418 "Rzepin",
1419 "Siewierz",
1420 "Stargard",
1421 "Starogard",
1422 "Turek",
1423 "Tymbark",
1424 "Wolsztyn",
1425 "Strzepcz",
1426 "Strzebielin",
1427 "Sochaczew",
1428 "Gr\u0119bocin",
1429 "Gniew",
1430 "Lubliniec",
1431 "Lubasz",
1432 "Lutomiersk",
1433 "Niemodlin",
1434 "Przeworsk",
1435 "Ursus",
1436 "Tyczyn",
1437 "Sztum",
1438 "Szczebrzeszyn",
1439 "Wolin",
1440 "Wrzeszcz",
1441 "Zgierz",
1442 "Zieleniec",
1443 "Drobin",
1444 "Garwolin",
1445};
1446
1447static const std::string_view _name_polish_2_f[] = {
1448 "Szprotawa",
1449 "Pogorzelica",
1450 "Mot\u0142awa",
1451 "Lubawa",
1452 "Nidzica",
1453 "Kruszwica",
1454 "Bierawa",
1455 "Brodnica",
1456 "Chojna",
1457 "Krzepica",
1458 "Ruda",
1459 "Rumia",
1460 "Tuchola",
1461 "Trzebinia",
1462 "Ustka",
1463 "Warszawa",
1464 "Bobowa",
1465 "Dukla",
1466 "Krynica",
1467 "Murowana",
1468 "Niemcza",
1469 "Zaspa",
1470 "Zawoja",
1471 "Wola",
1472 "Limanowa",
1473 "Rabka",
1474 "Skawina",
1475 "Pilawa",
1476};
1477
1478static const std::string_view _name_polish_2_n[] = {
1479 "Lipsko",
1480 "Pilzno",
1481 "Przodkowo",
1482 "Strzelno",
1483 "Leszno",
1484 "Jaworzno",
1485 "Choszczno",
1486 "Mogilno",
1487 "Luzino",
1488 "Miasto",
1489 "Dziadowo",
1490 "Kowalewo",
1491 "Legionowo",
1492 "Miastko",
1493 "Zabrze",
1494 "Zawiercie",
1495 "Kochanowo",
1496 "Miechucino",
1497 "Mirachowo",
1498 "Robakowo",
1499 "Kosakowo",
1500 "Borne",
1501 "Braniewo",
1502 "Sulinowo",
1503 "Chmielno",
1504 "Jastrz\u0119bie",
1505 "Gryfino",
1506 "Koronowo",
1507 "Lubichowo",
1508 "Opoczno",
1509};
1510
1511static const std::string_view _name_polish_3_m[] = {
1512 " Wybudowanie",
1513 " \u015awi\u0119tokrzyski",
1514 " G\u00f3rski",
1515 " Morski",
1516 " Zdr\u00f3j",
1517 " Wody",
1518 " Bajoro",
1519 " Kraje\u0144ski",
1520 " \u015al\u0105ski",
1521 " Mazowiecki",
1522 " Pomorski",
1523 " Wielki",
1524 " Maly",
1525 " Warmi\u0144ski",
1526 " Mazurski",
1527 " Mniejszy",
1528 " Wi\u0119kszy",
1529 " G\u00f3rny",
1530 " Dolny",
1531 " Wielki",
1532 " Stary",
1533 " Nowy",
1534 " Wielkopolski",
1535 " Wzg\u00f3rze",
1536 " Mosty",
1537 " Kujawski",
1538 " Ma\u0142opolski",
1539 " Podlaski",
1540 " Lesny",
1541};
1542
1543static const std::string_view _name_polish_3_f[] = {
1544 " Wybudowanie",
1545 " \u015awi\u0119tokrzyska",
1546 " G\u00f3rska",
1547 " Morska",
1548 " Zdr\u00f3j",
1549 " Woda",
1550 " Bajoro",
1551 " Kraje\u0144ska",
1552 " \u015al\u0105ska",
1553 " Mazowiecka",
1554 " Pomorska",
1555 " Wielka",
1556 " Ma\u0142a",
1557 " Warmi\u0144ska",
1558 " Mazurska",
1559 " Mniejsza",
1560 " Wi\u0119ksza",
1561 " G\u00f3rna",
1562 " Dolna",
1563 " Wielka",
1564 " Stara",
1565 " Nowa",
1566 " Wielkopolska",
1567 " Wzg\u00f3rza",
1568 " Mosty",
1569 " Kujawska",
1570 " Malopolska",
1571 " Podlaska",
1572 " Le\u015bna",
1573};
1574
1575static const std::string_view _name_polish_3_n[] = {
1576 " Wybudowanie",
1577 " \u015awietokrzyskie",
1578 " G\u00f3rskie",
1579 " Morskie",
1580 " Zdr\u00f3j",
1581 " Wody",
1582 " Bajoro",
1583 " Kraje\u0144skie",
1584 " \u015al\u0105skie",
1585 " Mazowieckie",
1586 " Pomorskie",
1587 " Wielkie",
1588 " Ma\u0142e",
1589 " Warmi\u0144skie ",
1590 " Mazurskie ",
1591 " Mniejsze",
1592 " Wi\u0119ksze",
1593 " G\u00f3rne",
1594 " Dolne",
1595 " Wielkie",
1596 " Stare",
1597 " Nowe",
1598 " Wielkopolskie",
1599 " Wzg\u00f3rze",
1600 " Mosty",
1601 " Kujawskie",
1602 " Ma\u0142opolskie",
1603 " Podlaskie",
1604 " Le\u015bne",
1605};
1606
1607static const std::string_view _name_czech_real[] = {
1608 "A\u0161",
1609 "Bene\u0161ov",
1610 "Beroun",
1611 "Bezdru\u017eice",
1612 "Blansko",
1613 "B\u0159eclav",
1614 "Brno",
1615 "Brunt\u00e1l",
1616 "\u010cesk\u00e1 L\u00edpa",
1617 "\u010cesk\u00e9 Bud\u011bjovice",
1618 "\u010cesk\u00fd Krumlov",
1619 "D\u011b\u010d\u00edn",
1620 "Doma\u017elice",
1621 "Dub\u00ed",
1622 "Fr\u00fddek-M\u00edstek",
1623 "Havl\u00ed\u010dk\u016fv Brod",
1624 "Hodon\u00edn",
1625 "Hradec Kr\u00e1lov\u00e9",
1626 "Humpolec",
1627 "Cheb",
1628 "Chomutov",
1629 "Chrudim",
1630 "Jablonec nad Nisou",
1631 "Jesen\u00edk",
1632 "Ji\u010d\u00edn",
1633 "Jihlava",
1634 "Jind\u0159ich\u016fv Hradec",
1635 "Karlovy Vary",
1636 "Karvin\u00e1",
1637 "Kladno",
1638 "Klatovy",
1639 "Kol\u00edn",
1640 "Kosmonosy",
1641 "Krom\u011b\u0159\u00ed\u017e",
1642 "Kutn\u00e1 Hora",
1643 "Liberec",
1644 "Litom\u011b\u0159ice",
1645 "Louny",
1646 "Man\u011bt\u00edn",
1647 "M\u011bln\u00edk",
1648 "Mlad\u00e1 Boleslav",
1649 "Most",
1650 "N\u00e1chod",
1651 "Nov\u00fd Ji\u010d\u00edn",
1652 "Nymburk",
1653 "Olomouc",
1654 "Opava",
1655 "Or\u00e1\u010dov",
1656 "Ostrava",
1657 "Pardubice",
1658 "Pelh\u0159imov",
1659 "Pol\u017eice",
1660 "P\u00edsek",
1661 "Plze\u0148",
1662 "Praha",
1663 "Prachatice",
1664 "P\u0159erov",
1665 "P\u0159\u00edbram",
1666 "Prost\u011bjov",
1667 "Rakovn\u00edk",
1668 "Rokycany",
1669 "Rudn\u00e1",
1670 "Rychnov nad Kn\u011b\u017enou",
1671 "Semily",
1672 "Sokolov",
1673 "Strakonice",
1674 "St\u0159edokluky",
1675 "\u0160umperk",
1676 "Svitavy",
1677 "T\u00e1bor",
1678 "Tachov",
1679 "Teplice",
1680 "T\u0159eb\u00ed\u010d",
1681 "Trutnov",
1682 "Uhersk\u00e9 Hradi\u0161t\u011b",
1683 "\u00dast\u00ed nad Labem",
1684 "\u00dast\u00ed nad Orlic\u00ed",
1685 "Vset\u00edn",
1686 "Vy\u0161kov",
1687 "\u017d\u010f\u00e1r nad S\u00e1zavou",
1688 "Zl\u00edn",
1689 "Znojmo",
1690};
1691
1692
1693/* The advanced hyperintelligent Czech town names generator!
1694 * The tables and MakeCzechTownName() is (c) Petr Baudis 2005 (GPL'd)
1695 * Feel free to ask me about anything unclear or if you need help
1696 * with cloning this for your own language. */
1697
1698/* Sing., pl. */
1699enum CzechGender : uint8_t {
1700 CZG_SMASC,
1701 CZG_SFEM,
1702 CZG_SNEUT,
1703 CZG_PMASC,
1704 CZG_PFEM,
1705 CZG_PNEUT,
1706 /* Special for substantive stems - the ending chooses the gender. */
1707 CZG_FREE,
1708 /* Like CZG_FREE, but disallow CZG_SNEUT. */
1709 CZG_NFREE
1710};
1711
1712enum CzechPattern : uint8_t {
1713 CZP_JARNI,
1714 CZP_MLADY,
1715 CZP_PRIVL
1716};
1717
1718/* [CzechGender][CzechPattern] - suffixes for adjectives */
1719static const std::string_view _name_czech_patmod[][3] = {
1720 /* CZG_SMASC */ { "\u00ed", "\u00fd", "uv" },
1721 /* CZG_SFEM */ { "\u00ed", "\u00e1", "ova" },
1722 /* CZG_SNEUT */ { "\u00ed", "\u00e9", "ovo" },
1723 /* CZG_PMASC */ { "\u00ed", "\u00e9", "ovy" },
1724 /* CZG_PFEM */ { "\u00ed", "\u00e9", "ovy" },
1725 /* CZG_PNEUT */ { "\u00ed", "\u00e1", "ova" }
1726};
1727
1728/* This way the substantive can choose only some adjectives/endings:
1729 * At least one of these flags must be satisfied: */
1730enum class CzechAllowFlag : uint8_t {
1731 Short,
1732 Middle,
1733 Long,
1734};
1735
1737
1738static constexpr CzechAllowFlags CZA_ALL = {CzechAllowFlag::Short, CzechAllowFlag::Middle, CzechAllowFlag::Long};
1739
1740/* All these flags must be satisfied (in the stem->others direction): */
1741enum class CzechChooseFlag : uint8_t {
1742 Colour,
1743 Postfix, // Matched if postfix was inserted.
1744 NoPostfix, // Matched if no postfix was inserted.
1745};
1746
1748
1749static constexpr CzechChooseFlags CZC_ANY = {CzechChooseFlag::Colour, CzechChooseFlag::Postfix, CzechChooseFlag::NoPostfix};
1750
1752 CzechGender gender;
1753 CzechAllowFlags allow;
1754 CzechChooseFlags choose;
1755 std::string_view name;
1756};
1757
1759 CzechPattern pattern;
1760 CzechChooseFlags choose;
1761 std::string_view name;
1762};
1763
1764/* Some of items which should be common are doubled. */
1765static const CzechNameAdj _name_czech_adj[] = {
1766 { CZP_JARNI, CZC_ANY, "Horn" },
1767 { CZP_JARNI, CZC_ANY, "Horn" },
1768 { CZP_JARNI, CZC_ANY, "Doln" },
1769 { CZP_JARNI, CZC_ANY, "Doln" },
1770 { CZP_JARNI, CZC_ANY, "P\u0159edn" },
1771 { CZP_JARNI, CZC_ANY, "Zadn" },
1772 { CZP_JARNI, CZC_ANY, "Kosteln" },
1773 { CZP_JARNI, CZC_ANY, "Havran" },
1774 { CZP_JARNI, CZC_ANY, "\u0158\u00ed\u010dn" },
1775 { CZP_JARNI, CZC_ANY, "Jezern" },
1776 { CZP_MLADY, CZC_ANY, "Velk" },
1777 { CZP_MLADY, CZC_ANY, "Velk" },
1778 { CZP_MLADY, CZC_ANY, "Mal" },
1779 { CZP_MLADY, CZC_ANY, "Mal" },
1780 { CZP_MLADY, CZC_ANY, "Vysok" },
1781 { CZP_MLADY, CZC_ANY, "\u010cesk" },
1782 { CZP_MLADY, CZC_ANY, "Moravsk" },
1783 { CZP_MLADY, CZC_ANY, "Slov\u00e1ck" },
1784 { CZP_MLADY, CZC_ANY, "Slezsk" },
1785 { CZP_MLADY, CZC_ANY, "Uhersk" },
1786 { CZP_MLADY, CZC_ANY, "Star" },
1787 { CZP_MLADY, CZC_ANY, "Star" },
1788 { CZP_MLADY, CZC_ANY, "Nov" },
1789 { CZP_MLADY, CZC_ANY, "Nov" },
1790 { CZP_MLADY, CZC_ANY, "Mlad" },
1791 { CZP_MLADY, CZC_ANY, "Kr\u00e1lovsk" },
1792 { CZP_MLADY, CZC_ANY, "Kamenn" },
1793 { CZP_MLADY, CZC_ANY, "Cihlov" },
1794 { CZP_MLADY, CZC_ANY, "Divn" },
1795 { CZP_MLADY, CzechChooseFlag::Colour, "\u010cerven" },
1796 { CZP_MLADY, CzechChooseFlag::Colour, "\u010cerven" },
1797 { CZP_MLADY, CzechChooseFlag::Colour, "\u010cerven" },
1798 { CZP_MLADY, CzechChooseFlag::Colour, "Zelen" },
1799 { CZP_MLADY, CzechChooseFlag::Colour, "\u017dlut" },
1800 { CZP_MLADY, CzechChooseFlag::Colour, "Siv" },
1801 { CZP_MLADY, CzechChooseFlag::Colour, "\u0160ed" },
1802 { CZP_MLADY, CzechChooseFlag::Colour, "B\u00edl" },
1803 { CZP_MLADY, CzechChooseFlag::Colour, "B\u00edl" },
1804 { CZP_MLADY, CzechChooseFlag::Colour, "Modr" },
1805 { CZP_MLADY, CzechChooseFlag::Colour, "R\u016f\u017eov" },
1806 { CZP_MLADY, CzechChooseFlag::Colour, "\u010cern" },
1807 { CZP_PRIVL, CZC_ANY, "Kr\u00e1l" },
1808 { CZP_PRIVL, CZC_ANY, "Jan" },
1809 { CZP_PRIVL, CZC_ANY, "Karl" },
1810 { CZP_PRIVL, CZC_ANY, "Kry\u0161tof" },
1811 { CZP_PRIVL, CZC_ANY, "Ji\u0159\u00edk" },
1812 { CZP_PRIVL, CZC_ANY, "Petr" },
1813 { CZP_PRIVL, CZC_ANY, "Sud" },
1814};
1815
1816/* Considered a stem for choose/allow matching purposes. */
1817static const CzechNameSubst _name_czech_subst_full[] = {
1818 { CZG_SMASC, CZA_ALL, CzechChooseFlag::Colour, "Sedlec" },
1819 { CZG_SMASC, CZA_ALL, CzechChooseFlag::Colour, "Brod" },
1820 { CZG_SMASC, CZA_ALL, CzechChooseFlag::Colour, "Brod" },
1821 { CZG_SMASC, CZA_ALL, {}, "\u00daval" },
1822 { CZG_SMASC, CZA_ALL, CzechChooseFlag::Colour, "\u017d\u010f\u00e1r" },
1823 { CZG_SMASC, CZA_ALL, CzechChooseFlag::Colour, "Smrk" },
1824 { CZG_SFEM, CZA_ALL, CzechChooseFlag::Colour, "Hora" },
1825 { CZG_SFEM, CZA_ALL, CzechChooseFlag::Colour, "Lhota" },
1826 { CZG_SFEM, CZA_ALL, CzechChooseFlag::Colour, "Lhota" },
1827 { CZG_SFEM, CZA_ALL, CzechChooseFlag::Colour, "Hlava" },
1828 { CZG_SFEM, CZA_ALL, CzechChooseFlag::Colour, "L\u00edpa" },
1829 { CZG_SNEUT, CZA_ALL, CzechChooseFlag::Colour, "Pole" },
1830 { CZG_SNEUT, CZA_ALL, CzechChooseFlag::Colour, "\u00dadol\u00ed" },
1831 { CZG_PMASC, CZA_ALL, {}, "\u00davaly" },
1832 { CZG_PFEM, CZA_ALL, CzechChooseFlag::Colour, "Luka" },
1833 { CZG_PNEUT, CZA_ALL, CzechChooseFlag::Colour, "Pole" },
1834};
1835
1836/* TODO: More stems needed. --pasky */
1837static const CzechNameSubst _name_czech_subst_stem[] = {
1838 { CZG_SMASC, { CzechAllowFlag::Middle }, CzechChooseFlag::Colour, "Kostel" },
1839 { CZG_SMASC, { CzechAllowFlag::Middle }, CzechChooseFlag::Colour, "Kl\u00e1\u0161ter" },
1840 { CZG_SMASC, {CzechAllowFlag::Short }, CzechChooseFlag::Colour, "Lhot" },
1841 { CZG_SFEM, {CzechAllowFlag::Short }, CzechChooseFlag::Colour, "Lhot" },
1842 { CZG_SFEM, {CzechAllowFlag::Short }, CzechChooseFlag::Colour, "Hur" },
1843 { CZG_FREE, { CzechAllowFlag::Middle, CzechAllowFlag::Long}, {}, "Sedl" },
1844 { CZG_FREE, {CzechAllowFlag::Short, CzechAllowFlag::Middle, CzechAllowFlag::Long}, CzechChooseFlag::Colour, "Hrad" },
1845 { CZG_NFREE, { CzechAllowFlag::Middle }, {}, "Pras" },
1846 { CZG_NFREE, { CzechAllowFlag::Middle }, {}, "Ba\u017e" },
1847 { CZG_NFREE, { CzechAllowFlag::Middle }, {}, "Tes" },
1848 { CZG_NFREE, { CzechAllowFlag::Middle }, {}, "U\u017e" },
1849 { CZG_NFREE, { CzechAllowFlag::Middle, CzechAllowFlag::Long}, CzechChooseFlag::Postfix, "B\u0159" },
1850 { CZG_NFREE, { CzechAllowFlag::Middle, CzechAllowFlag::Long}, {}, "Vod" },
1851 { CZG_NFREE, { CzechAllowFlag::Middle, CzechAllowFlag::Long}, {}, "Jan" },
1852 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Prach" },
1853 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Kunr" },
1854 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Strak" },
1855 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "V\u00edt" },
1856 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Vy\u0161" },
1857 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "\u017dat" },
1858 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "\u017der" },
1859 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "St\u0159ed" },
1860 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Harv" },
1861 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Pruh" },
1862 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Tach" },
1863 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "P\u00edsn" },
1864 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Jin" },
1865 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Jes" },
1866 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Jar" },
1867 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Sok" },
1868 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Hod" },
1869 { CZG_NFREE, { CzechAllowFlag::Long}, {}, "Net" },
1870 { CZG_FREE, { CzechAllowFlag::Long}, {}, "Pra\u017e" },
1871 { CZG_FREE, { CzechAllowFlag::Long}, {}, "Nerat" },
1872 { CZG_FREE, { CzechAllowFlag::Long}, {}, "Kral" },
1873 { CZG_FREE, { CzechAllowFlag::Long}, {}, "Hut" },
1874 { CZG_FREE, { CzechAllowFlag::Long}, CzechChooseFlag::NoPostfix, "Pan" },
1875 { CZG_FREE, {CzechAllowFlag::Short, CzechAllowFlag::Middle, CzechAllowFlag::Long}, CzechChooseFlag::NoPostfix, "Odst\u0159ed" },
1876 { CZG_FREE, {CzechAllowFlag::Short, CzechAllowFlag::Middle, CzechAllowFlag::Long}, CzechChooseFlag::Colour, "Mrat" },
1877 { CZG_FREE, { CzechAllowFlag::Long}, CzechChooseFlag::Colour, "Hlav" },
1878 { CZG_FREE, {CzechAllowFlag::Short, CzechAllowFlag::Middle }, {}, "M\u011b\u0159" },
1879 { CZG_FREE, { CzechAllowFlag::Middle, CzechAllowFlag::Long}, {}, "Lip" },
1880};
1881
1882/* Optional postfix inserted between stem and ending. */
1883static const std::string_view _name_czech_subst_postfix[] = {
1884 "av", "an", "at",
1885 "ov", "on", "ot",
1886 "ev", "en", "et",
1887};
1888
1889/* This array must have the both neutral genders at the end! */
1890static const CzechNameSubst _name_czech_subst_ending[] = {
1891 { CZG_SMASC, {CzechAllowFlag::Short, CzechAllowFlag::Middle }, CZC_ANY, "ec" },
1892 { CZG_SMASC, {CzechAllowFlag::Short, CzechAllowFlag::Middle }, CZC_ANY, "\u00edn" },
1893 { CZG_SMASC, {CzechAllowFlag::Short, CzechAllowFlag::Middle, CzechAllowFlag::Long}, CZC_ANY, "ov" },
1894 { CZG_SMASC, {CzechAllowFlag::Short, CzechAllowFlag::Long}, CZC_ANY, "kov" },
1895 { CZG_SMASC, { CzechAllowFlag::Long}, CzechChooseFlag::Postfix, "\u00edn" },
1896 { CZG_SMASC, { CzechAllowFlag::Long}, CzechChooseFlag::Postfix, "n\u00edk" },
1897 { CZG_SMASC, { CzechAllowFlag::Long}, CZC_ANY, "burk" },
1898 { CZG_SFEM, {CzechAllowFlag::Short }, CZC_ANY, "ka" },
1899 { CZG_SFEM, { CzechAllowFlag::Middle }, CZC_ANY, "inka" },
1900 { CZG_SFEM, { CzechAllowFlag::Middle }, CZC_ANY, "n\u00e1" },
1901 { CZG_SFEM, { CzechAllowFlag::Long}, CZC_ANY, "ava" },
1902 { CZG_PMASC, { CzechAllowFlag::Long}, CzechChooseFlag::Postfix, "\u00edky" },
1903 { CZG_PMASC, { CzechAllowFlag::Long}, CZC_ANY, "upy" },
1904 { CZG_PMASC, { CzechAllowFlag::Long}, CZC_ANY, "olupy" },
1905 { CZG_PFEM, { CzechAllowFlag::Long}, CZC_ANY, "avy" },
1906 { CZG_PFEM, {CzechAllowFlag::Short, CzechAllowFlag::Middle, CzechAllowFlag::Long}, CZC_ANY, "ice" },
1907 { CZG_PFEM, {CzechAllowFlag::Short, CzechAllowFlag::Middle, CzechAllowFlag::Long}, CZC_ANY, "i\u010dky" },
1908 { CZG_PNEUT, {CzechAllowFlag::Short, CzechAllowFlag::Middle }, CZC_ANY, "na" },
1909 { CZG_SNEUT, {CzechAllowFlag::Short, CzechAllowFlag::Middle }, CZC_ANY, "no" },
1910 { CZG_SNEUT, { CzechAllowFlag::Long}, CZC_ANY, "i\u0161t\u011b" },
1911};
1912
1913static const std::string_view _name_czech_suffix[] = {
1914 "nad Cidlinou",
1915 "nad Dyj\u00ed",
1916 "nad Jihlavou",
1917 "nad Labem",
1918 "nad Lesy",
1919 "nad Moravou",
1920 "nad Nisou",
1921 "nad Odrou",
1922 "nad Ostravic\u00ed",
1923 "nad S\u00e1zavou",
1924 "nad Vltavou",
1925 "pod Prad\u011bdem",
1926 "pod Radho\u0161t\u011bm",
1927 "pod \u0158\u00edpem",
1928 "pod Sn\u011b\u017ekou",
1929 "pod \u0160pi\u010d\u00e1kem",
1930 "pod Sedlem",
1931 "v \u010cech\u00e1ch",
1932 "na Morav\u011b",
1933};
1934
1935
1936
1937static const std::string_view _name_romanian_real[] = {
1938 "Adjud",
1939 "Alba Iulia",
1940 "Alexandria",
1941 "Babadag",
1942 "Bac\u0103u",
1943 "Baia Mare",
1944 "B\u0103ile Herculane",
1945 "B\u0103ile\u0219ti",
1946 "B\u00e2rlad",
1947 "Bicaz",
1948 "Bistri\u021ba",
1949 "Blaj",
1950 "Borsec",
1951 "Boto\u0219ani",
1952 "Br\u0103ila",
1953 "Bra\u0219ov",
1954 "Bucure\u0219ti",
1955 "Buftea",
1956 "Buz\u0103u",
1957 "C\u0103l\u0103ra\u0219i",
1958 "Caransebe\u0219",
1959 "Cernavod\u0103",
1960 "Cluj-Napoca",
1961 "Constan\u021ba",
1962 "Covasna",
1963 "Craiova",
1964 "Dej",
1965 "Deva",
1966 "Dorohoi",
1967 "Drobeta-Turnu Severin",
1968 "Dr\u0103g\u0103\u0219ani",
1969 "F\u0103g\u0103ra\u0219",
1970 "F\u0103lticeni",
1971 "Fete\u0219ti",
1972 "Foc\u0219ani",
1973 "Gala\u021bi",
1974 "Gheorgheni",
1975 "Giurgiu",
1976 "H\u00e2r\u0219ova",
1977 "Hunedoara",
1978 "Hu\u0219i",
1979 "Ia\u0219i",
1980 "Isaccea",
1981 "Lugoj",
1982 "M\u0103cin",
1983 "Mangalia",
1984 "Medgidia",
1985 "Media\u0219",
1986 "Miercurea Ciuc",
1987 "Mizil",
1988 "Motru",
1989 "N\u0103s\u0103ud",
1990 "N\u0103vodari",
1991 "Odobe\u0219ti",
1992 "Olteni\u021ba",
1993 "One\u0219ti",
1994 "Oradea",
1995 "Or\u0219ova",
1996 "Petro\u0219ani",
1997 "Piatra Neam\u021b",
1998 "Pite\u0219ti",
1999 "Ploie\u0219ti",
2000 "Predeal",
2001 "R\u00e2mnicu V\u00e2lcea",
2002 "Reghin",
2003 "Re\u0219i\u021ba",
2004 "Roman",
2005 "Ro\u0219iorii de Vede",
2006 "Satu Mare",
2007 "Sebe\u0219",
2008 "Sf\u00e2ntu Gheorghe",
2009 "Sibiu",
2010 "Sighi\u0219oara",
2011 "Sinaia",
2012 "Slatina",
2013 "Slobozia",
2014 "Sovata",
2015 "Suceava",
2016 "Sulina",
2017 "\u021a\u0103nd\u0103rei",
2018 "T\u00e2rgovi\u0219te",
2019 "T\u00e2rgu Jiu",
2020 "T\u00e2rgu Mure\u0219",
2021 "Tecuci",
2022 "Timi\u0219oara",
2023 "Tulcea",
2024 "Turda",
2025 "Turnu M\u0103gurele",
2026 "Urziceni",
2027 "Vaslui",
2028 "Vatra Dornei",
2029 "Victoria",
2030 "Videle",
2031 "Zal\u0103u",
2032};
2033
2034static const std::string_view _name_slovak_real[] = {
2035 "Bratislava",
2036 "B\u00e1novce nad Bebravou",
2037 "Bansk\u00e1 Bystrica",
2038 "Bansk\u00e1 \u0160tiavnica",
2039 "Bardejov",
2040 "Brezno",
2041 "Brezova pod Bradlom",
2042 "Byt\u010da",
2043 "\u010cadca",
2044 "\u010cierna nad Tisou",
2045 "Detva",
2046 "Pre\u0161ov",
2047 "Dolny Kubin",
2048 "Spi\u0161sk\u00e1 Nov\u00e1 Ves",
2049 "Dunajsk\u00e1 Streda",
2050 "Gab\u010d\u00edikovo",
2051 "Galanta",
2052 "Gbely",
2053 "Gelnica",
2054 "Handlov\u00e1",
2055 "Hlohovec",
2056 "Hol\u00ed\u010d",
2057 "Humenn\u00e9",
2058 "Hurbanovo",
2059 "Kezmarok",
2060 "Kom\u00e1rno",
2061 "Ko\u0161ice",
2062 "Kremnica",
2063 "Krompachy",
2064 "Kuty",
2065 "Leopoldov",
2066 "Levo\u010da",
2067 "Liptovsk\u00fd Mikul\u00e1\u0161",
2068 "Lu\u010denec",
2069 "Malacky",
2070 "Martin",
2071 "Medzilaborce",
2072 "Michalovce",
2073 "Modra",
2074 "Myjava",
2075 "N\u00e1mestovo",
2076 "Nitra",
2077 "Nov\u00e1 Ba\u0148a",
2078 "Nov\u00e9 Mesto nad V\u00e1hom",
2079 "Nov\u00e9 Z\u00e1mky",
2080 "Partiz\u00e1nske",
2081 "Pezinok",
2082 "Pie\u0161\u0165any",
2083 "Polt\u00e1r",
2084 "Poprad",
2085 "Pova\u017esk\u00e1 Bystrica",
2086 "Prievidza",
2087 "P\u00fachov",
2088 "Rev\u00faca",
2089 "Rimavsk\u00e1 Sobota",
2090 "Ro\u017e\u0148ava",
2091 "Ru\u017eomberok",
2092 "Sabinov",
2093 "\u0160a\u013ea",
2094 "Senec",
2095 "Senica",
2096 "Sere\u010f",
2097 "Skalica",
2098 "Sl\u00e1dkovi\u00cdovo",
2099 "Smolenice",
2100 "Snina",
2101 "Star\u00e1 \u013dubov\u0148a",
2102 "Star\u00e1 Tur\u00e1",
2103 "Str\u00e1\u017eske",
2104 "Stropkov",
2105 "Stupava",
2106 "\u0160t\u00farovo",
2107 "\u0120ulekovo",
2108 "Topo\u013e\u010dany",
2109 "Trebi\u0161ov",
2110 "Tren\u010d\u00edn",
2111 "Trnava",
2112 "Tur\u010dianske Teplice",
2113 "Tvrdo\u0161\u00edn",
2114 "Vr\u00e1ble",
2115 "Vranov nad Top\u013eou",
2116 "Z\u00e1horsk\u00e1 Bystrica",
2117 "\u017ddiar",
2118 "\u013diar nad Hronom",
2119 "\u017dilina",
2120 "Zlat\u00e9 Moravce",
2121 "Zvolen",
2122};
2123
2124static const std::string_view _name_norwegian_1[] = {
2125 "Arna",
2126 "Aust",
2127 "Bj\u00f8rk",
2128 "Bj\u00f8rn",
2129 "Brand",
2130 "B\u00f8ver",
2131 "Drag",
2132 "Dr\u00f8",
2133 "Eids",
2134 "Egge",
2135 "Fager",
2136 "Finns",
2137 "Flat",
2138 "Foll",
2139 "Foss",
2140 "Fugle",
2141 "Furu",
2142 "Gaus",
2143 "Galte",
2144 "Geir",
2145 "Gl\u00f8s",
2146 "Gran",
2147 "Grind",
2148 "Grims",
2149 "Gr\u00f8n",
2150 "Gr\u00f8t",
2151 "Gulle",
2152 "Haka",
2153 "Hammer",
2154 "Haug",
2155 "Hol",
2156 "Hon",
2157 "Hop",
2158 "Hov",
2159 "Jess",
2160 "Kabel",
2161 "Kjerns",
2162 "Kjerring",
2163 "Knatte",
2164 "Krok",
2165 "K\u00f8y",
2166 "Lang",
2167 "Lauv",
2168 "Leir",
2169 "Lund",
2170 "Logn",
2171 "Lo",
2172 "Lyng",
2173 "L\u00f8n",
2174 "Mesna",
2175 "Mel",
2176 "Mo",
2177 "Nar",
2178 "Nitte",
2179 "Nord",
2180 "Odd",
2181 "Ola",
2182 "Otte",
2183 "Ran",
2184 "Rev",
2185 "Rog",
2186 "Roms",
2187 "Rosen",
2188 "Sand",
2189 "Sau",
2190 "Sel",
2191 "Sol",
2192 "Sjur",
2193 "Sk\u00e5r",
2194 "Sl\u00e5tt",
2195 "Stj\u00f8r",
2196 "Stor",
2197 "Svart",
2198 "Svens",
2199 "Svin",
2200 "Sylte",
2201 "Syn",
2202 "Tran",
2203 "Vass",
2204 "Ved",
2205 "Vest",
2206 "Vesle",
2207 "Vik",
2208 "V\u00e5g",
2209};
2210
2211static const std::string_view _name_norwegian_2[] = {
2212 "aker",
2213 "anger",
2214 "bakken",
2215 "bekk",
2216 "berg",
2217 "botn",
2218 "breen",
2219 "bu",
2220 "bugen",
2221 "by",
2222 "bygd",
2223 "b\u00f8",
2224 "dal",
2225 "egga",
2226 "eid",
2227 "elv",
2228 "enga",
2229 "foss",
2230 "fjell",
2231 "fjord",
2232 "foten",
2233 "gard",
2234 "grend",
2235 "hammer",
2236 "haug",
2237 "havn",
2238 "heim",
2239 "hella",
2240 "hovda",
2241 "h\u00f8a",
2242 "h\u00f8gda",
2243 "kampen",
2244 "kj\u00f8len",
2245 "kollen",
2246 "kroken",
2247 "land",
2248 "lia",
2249 "mark",
2250 "moen",
2251 "myr",
2252 "nes",
2253 "nuten",
2254 "osen",
2255 "rike",
2256 "rud",
2257 "sand",
2258 "set",
2259 "sj\u00f8en",
2260 "skogen",
2261 "slette",
2262 "snipa",
2263 "stad",
2264 "stua",
2265 "stulen",
2266 "sund",
2267 "svingen",
2268 "s\u00e6tra",
2269 "tinden",
2270 "tun",
2271 "vang",
2272 "vatn",
2273 "veid",
2274 "vik",
2275 "voll",
2276 "v\u00e5g",
2277 "um",
2278 "\u00e5sen",
2279};
2280
2281static const std::string_view _name_norwegian_real[] = {
2282 "Alta",
2283 "Arendal",
2284 "Askim",
2285 "Bergen",
2286 "Bod\u00f8",
2287 "Brevik",
2288 "Bryne",
2289 "Br\u00f8nn\u00f8ysund",
2290 "Drammen",
2291 "Dr\u00f8bak",
2292 "Egersund",
2293 "Elverum",
2294 "Farsund",
2295 "Fauske",
2296 "Finnsnes",
2297 "Flekkefjord",
2298 "Flora",
2299 "Fosnav\u00e5g",
2300 "Fredrikstad",
2301 "F\u00f8rde",
2302 "Gj\u00f8vik",
2303 "Grimstad",
2304 "Halden",
2305 "Hamar",
2306 "Hammerfest",
2307 "Harstad",
2308 "Haugesund",
2309 "Holmestrand",
2310 "Horten",
2311 "J\u00f8rpeland",
2312 "Kirkenes",
2313 "Kolvereid",
2314 "Kongsberg",
2315 "Kongsvinger",
2316 "Kopervik",
2317 "Krager\u00f8",
2318 "Kristiansand",
2319 "Kristiansund",
2320 "Langesund",
2321 "Larvik",
2322 "Leirvik",
2323 "Leknes",
2324 "Levanger",
2325 "Lillehammer",
2326 "Lillesand",
2327 "Lillestr\u00f8m",
2328 "Lyngdal",
2329 "L\u00f8renskog",
2330 "Mandal",
2331 "Mo i Rana",
2332 "Molde",
2333 "Mosj\u00f8en",
2334 "Moss",
2335 "Mysen",
2336 "M\u00e5l\u00f8y",
2337 "Namsos",
2338 "Narvik",
2339 "Notodden",
2340 "Odda",
2341 "Oslo",
2342 "Otta",
2343 "Porsgrunn",
2344 "Ringerike",
2345 "Ris\u00f8r",
2346 "Rjukan",
2347 "Sandefjord",
2348 "Sandnes",
2349 "Sandnessj\u00f8en",
2350 "Sandvika",
2351 "Sarpsborg",
2352 "Sauda",
2353 "Ski",
2354 "Skien",
2355 "Skudeneshavn",
2356 "Sortland",
2357 "Stathelle",
2358 "Stavanger",
2359 "Steinkjer",
2360 "Stj\u00f8rdal",
2361 "Stokmarknes",
2362 "Stord",
2363 "Svelvik",
2364 "Svolv\u00e6r",
2365 "Troms\u00f8",
2366 "Trondheim",
2367 "Tvedestrand",
2368 "T\u00f8nsberg",
2369 "Ulsteinvik",
2370 "Vads\u00f8",
2371 "Vard\u00f8",
2372 "Verdals\u00f8ra",
2373 "\u00c5krehamn",
2374 "\u00c5lesund",
2375 "\u00c5ndalsnes",
2376};
2377
2378static const std::string_view _name_hungarian_1[] = {
2379 "Nagy-",
2380 "Kis-",
2381 "Fels\u0151-",
2382 "Als\u00f3-",
2383 "\u00daj-",
2384};
2385
2386static const std::string_view _name_hungarian_2[] = {
2387 "Bodrog",
2388 "Dr\u00e1va",
2389 "Duna",
2390 "Hej\u0151",
2391 "Hern\u00e1d",
2392 "R\u00e1ba",
2393 "Saj\u00f3",
2394 "Szamos",
2395 "Tisza",
2396 "Zala",
2397 "Balaton",
2398 "Fert\u0151",
2399 "Bakony",
2400 "Cserh\u00e1t",
2401 "Bihar",
2402 "Hajd\u00fa",
2403 "J\u00e1sz",
2404 "Kun",
2405 "Magyar",
2406 "N\u00f3gr\u00e1d",
2407 "Ny\u00edr",
2408 "Somogy",
2409 "Sz\u00e9kely",
2410 "Buda",
2411 "Gy\u0151r",
2412 "Pest",
2413 "Feh\u00e9r",
2414 "Cser\u00e9p",
2415 "Erd\u0151",
2416 "Hegy",
2417 "Homok",
2418 "Mez\u0151",
2419 "Puszta",
2420 "S\u00e1r",
2421 "Cs\u00e1sz\u00e1r",
2422 "Herceg",
2423 "Kir\u00e1ly",
2424 "Nemes",
2425 "P\u00fcsp\u00f6k",
2426 "Szent",
2427 "Alm\u00e1s",
2428 "Szilv\u00e1s",
2429 "Agg",
2430 "Aranyos",
2431 "B\u00e9k\u00e9s",
2432 "Egyh\u00e1zas",
2433 "Gagy",
2434 "Heves",
2435 "Kapos",
2436 "T\u00e1pi\u00f3",
2437 "Torna",
2438 "Vas",
2439 "V\u00e1mos",
2440 "V\u00e1s\u00e1ros",
2441};
2442
2443static const std::string_view _name_hungarian_3[] = {
2444 "ap\u00e1ti",
2445 "b\u00e1ba",
2446 "bikk",
2447 "dob",
2448 "fa",
2449 "f\u00f6ld",
2450 "hegyes",
2451 "kak",
2452 "kereszt",
2453 "k\u00fcrt",
2454 "lad\u00e1ny",
2455 "m\u00e9rges",
2456 "szalonta",
2457 "telek",
2458 "vas",
2459 "v\u00f6lgy",
2460};
2461
2462static const std::string_view _name_hungarian_4[] = {
2463 "alja",
2464 "egyh\u00e1za",
2465 "h\u00e1za",
2466 "\u00far",
2467 "v\u00e1r",
2468};
2469
2470static const std::string_view _name_hungarian_real[] = {
2471 "Ajka",
2472 "Asz\u00f3d",
2473 "Badacsony",
2474 "Baja",
2475 "Budapest",
2476 "Debrecen",
2477 "Eger",
2478 "Fony\u00f3d",
2479 "G\u00f6d\u00f6ll\u0151",
2480 "Gy\u0151r",
2481 "Gyula",
2482 "Karcag",
2483 "Kecskem\u00e9t",
2484 "Keszthely",
2485 "Kisk\u00f6re",
2486 "Kocsord",
2487 "Kom\u00e1rom",
2488 "K\u0151szeg",
2489 "Mak\u00f3",
2490 "Moh\u00e1cs",
2491 "Miskolc",
2492 "\u00d3zd",
2493 "Paks",
2494 "P\u00e1pa",
2495 "P\u00e9cs",
2496 "Polg\u00e1r",
2497 "Sarkad",
2498 "Si\u00f3fok",
2499 "Szeged",
2500 "Szentes",
2501 "Szolnok",
2502 "Tihany",
2503 "Tokaj",
2504 "V\u00e1c",
2505 "Z\u00e1hony",
2506 "Zirc",
2507};
2508
2509static const std::string_view _name_swiss_real[] = {
2510 "Aarau",
2511 "Aesch",
2512 "Altdorf",
2513 "Arosa",
2514 "Appenzell",
2515 "Arbon",
2516 "Altst\u00e4tten",
2517 "Baar",
2518 "Baden",
2519 "Bellinzona",
2520 "Brig-Glis",
2521 "Bienne",
2522 "Bulle",
2523 "Binningen",
2524 "Burgdorf",
2525 "Bern",
2526 "Basel",
2527 "B\u00fclach",
2528 "Carouge",
2529 "Cham",
2530 "Chiasso",
2531 "Chur",
2532 "Davos",
2533 "Del\u00e9mont",
2534 "Dietikon",
2535 "D\u00fcbendorf",
2536 "Emmen",
2537 "Freienbach-Pf\u00e4ffikon",
2538 "Fribourg",
2539 "Frauenfeld",
2540 "Gen\u00e8ve",
2541 "Glarus",
2542 "Gossau",
2543 "Grenchen",
2544 "Herisau",
2545 "Horgen",
2546 "Horw",
2547 "Illnau-Effretikon",
2548 "Ittigen",
2549 "Jona",
2550 "Kriens",
2551 "Kloten",
2552 "K\u00f6niz",
2553 "Kreuzlingen",
2554 "K\u00fcsnacht",
2555 "Agen",
2556 "Lancy",
2557 "La Chaux-de-Fonds",
2558 "Lenzburg",
2559 "Lugano",
2560 "Langenthal",
2561 "Littau",
2562 "Le Locle",
2563 "La Neuveville",
2564 "Locarno",
2565 "Liestal",
2566 "La Tour-de-Peilz",
2567 "Lausanne",
2568 "Lyss",
2569 "Luzern",
2570 "Martigny",
2571 "M\u00fcnchenstein",
2572 "Meyrin",
2573 "Montreux",
2574 "Monthey",
2575 "Morges",
2576 "Murten",
2577 "Moutier",
2578 "Muttenz",
2579 "Neuch\u00e2tel",
2580 "Neuhausen am Rheinfall",
2581 "Nyon",
2582 "Olten",
2583 "Onex",
2584 "Opfikon",
2585 "Ostermundigen",
2586 "Payerne",
2587 "Peseux",
2588 "Prilly",
2589 "Pully",
2590 "Rapperswil",
2591 "Richterswil",
2592 "Regensdorf",
2593 "Rheinfelden",
2594 "Riehen",
2595 "Renens",
2596 "Romanshorn",
2597 "Rorschach",
2598 "Stans",
2599 "Schaffhausen",
2600 "Steffisburg",
2601 "St. Gallen",
2602 "Schlieren",
2603 "Sierre",
2604 "Solothurn",
2605 "St. Moritz",
2606 "Sion",
2607 "Spiez",
2608 "St\u00e4fa",
2609 "Sursee",
2610 "Schwyz",
2611 "Thalwil",
2612 "Th\u00f4nex",
2613 "Thun",
2614 "Uster",
2615 "Uzwil",
2616 "Vernier",
2617 "Volketswil",
2618 "Versoix",
2619 "Vevey",
2620 "W\u00e4denswil",
2621 "Wettingen",
2622 "Wil",
2623 "Wallisellen",
2624 "Winterthur",
2625 "Wohlen",
2626 "Worb",
2627 "Wetzikon",
2628 "Yverdon-les-Bains",
2629 "Zollikon",
2630 "Zofingen",
2631 "Z\u00fcrich",
2632 "Zug",
2633};
2634
2635static const std::string_view _name_danish_1[] = {
2636 "Gamle ",
2637 "Lille ",
2638 "Nye ",
2639 "Store ",
2640 "Kirke ",
2641 "N\u00f8rre ",
2642 "Vester ",
2643 "S\u00f8nder ",
2644 "\u00d8ster ",
2645 "Hvide ",
2646 "H\u00f8je ",
2647 "Kongens ",
2648};
2649
2650static const std::string_view _name_danish_2[] = {
2651 "Ager",
2652 "Alle",
2653 "Aske",
2654 "Balle",
2655 "Bede",
2656 "Birke",
2657 "Bjerring",
2658 "Bj\u00e6ver",
2659 "Blommens",
2660 "Blok",
2661 "Bolder",
2662 "Bred",
2663 "Charlotten",
2664 "Christians",
2665 "Danne",
2666 "Diana",
2667 "Es",
2668 "Fredens",
2669 "Frederiks",
2670 "Fugle",
2671 "F\u00e5re",
2672 "Gille",
2673 "Gis",
2674 "Givs",
2675 "Glams",
2676 "Glo",
2677 "Guld",
2678 "Had",
2679 "Haralds",
2680 "Hassel",
2681 "Hede",
2682 "Helle",
2683 "Hessel",
2684 "Hjorts",
2685 "Hol",
2686 "Horn",
2687 "Humle",
2688 "H\u00f8j",
2689 "H\u00f8r",
2690 "Is",
2691 "Jyde",
2692 "J\u00e6gers",
2693 "Karls",
2694 "Klov",
2695 "Kokke",
2696 "Kvist",
2697 "Lang",
2698 "Lange",
2699 "Mari",
2700 "Nord",
2701 "Ny",
2702 "Oks",
2703 "Ring",
2704 "R\u00f8de",
2705 "Rung",
2706 "R\u00f8r",
2707 "Rud",
2708 "Saks",
2709 "Salt",
2710 "Skam",
2711 "Silke",
2712 "Skod",
2713 "Sk\u00e6l",
2714 "Sk\u00e6r",
2715 "Sol",
2716 "Svend",
2717 "Svine",
2718 "Strand",
2719 "Stubbe",
2720 "Ting",
2721 "Tj\u00e6re",
2722 "Tore",
2723 "Uger",
2724 "Ulf",
2725 "Val",
2726 "Vand",
2727 "Vej",
2728 "Vor",
2729 "V\u00e6r",
2730 "\u00d8r",
2731 "\u00c5l",
2732};
2733
2734static const std::string_view _name_danish_3[] = {
2735 "basse",
2736 "borg",
2737 "berg",
2738 "bro",
2739 "by",
2740 "havn",
2741 "strup",
2742 "holm",
2743 "hus",
2744 "k\u00f8bing",
2745 "lund",
2746 "lunde",
2747 "sund",
2748 "ovre",
2749 "h\u00f8j",
2750 "dal",
2751 "sted",
2752 "sten",
2753 "l\u00f8se",
2754 "r\u00f8d",
2755 "magle",
2756 "s\u00f8",
2757 "bjerg",
2758 "b\u00e6k",
2759 "drup",
2760 "lev",
2761 "bo",
2762 "lyst",
2763 "feld",
2764 "skov",
2765};
2766
2767static const std::string_view _name_turkish_prefix[] = {
2768 "Ak\u00e7a",
2769 "Alt\u0131n",
2770 "Bah\u00e7e",
2771 "Boz",
2772 "B\u00fcy\u00fck",
2773 "\u00c7ay",
2774 "Do\u011fu",
2775 "Eski",
2776 "G\u00fczel",
2777 "K\u0131z\u0131l",
2778 "K\u00fc\u00e7\u00fck",
2779 "Orta",
2780 "Sar\u0131",
2781 "Sultan",
2782 "Ulu",
2783 "Yeni",
2784};
2785
2786static const std::string_view _name_turkish_middle[] = {
2787 "aga\u00e7",
2788 "ayva",
2789 "\u00e7am",
2790 "elma",
2791 "kurt",
2792 "pazar",
2793 "yal\u0131",
2794};
2795
2796static const std::string_view _name_turkish_suffix[] = {
2797 "dere",
2798 "hisar",
2799 "kale",
2800 "kaya",
2801 "kent",
2802 "k\u00f6y",
2803 "ova",
2804 "\u00f6z\u00fc",
2805 "\u00f6ren",
2806 "pazar",
2807 "saray",
2808 "tepe",
2809 "yer",
2810 "yurt",
2811};
2812
2813static const std::string_view _name_turkish_real[] = {
2814 "Adana",
2815 "Ad\u0131yaman",
2816 "Afyon",
2817 "A\u011fr\u0131",
2818 "Amasya",
2819 "Antalya",
2820 "Artvin",
2821 "Bal\u0131kesir",
2822 "Bilecik",
2823 "Bitlis",
2824 "Bolu",
2825 "Burdur",
2826 "Bursa",
2827 "\u00c7anakkale",
2828 "\u00c7ank\u0131r\u0131",
2829 "Denizli",
2830 "Diyarbak\u0131r",
2831 "Edirne",
2832 "Elaz\u0131\u011f",
2833 "Erzurum",
2834 "Eski\u015fehir",
2835 "Giresun",
2836 "G\u00fcm\u00fc\u015fhane",
2837 "Hatay",
2838 "Isparta",
2839 "\u0130\u00e7el",
2840 "\u0130stanbul",
2841 "\u0130zmir",
2842 "Kars",
2843 "Kastamonu",
2844 "Kayseri",
2845 "Kirklareli",
2846 "Kocaeli",
2847 "Konya",
2848 "K\u00fctahya",
2849 "Malatya",
2850 "Manisa",
2851 "Kahramanmara\u015f",
2852 "Mardin",
2853 "Mu\u011fla",
2854 "Mu\u015f",
2855 "Nev\u015fehir",
2856 "Ni\u011fde",
2857 "Rize",
2858 "Sakarya",
2859 "Samsun",
2860 "Siirt",
2861 "Sinop",
2862 "Sivas",
2863 "Trabzon",
2864 "\u015eanl\u0131urfa",
2865 "Van",
2866 "Yozgat",
2867 "Zonguldak",
2868 "Aksaray",
2869 "Bayburt",
2870 "Karaman",
2871 "\u015e\u0131rnak",
2872 "Bart\u0131n",
2873 "Ardahan",
2874 "I\u011fd\u0131r",
2875 "Yalova",
2876 "Karab\u00fck",
2877 "Osmaniye",
2878 "D\u00fczce",
2879};
2880
2881static const std::string_view _name_italian_real[] = {
2882 "Roma",
2883 "Milano",
2884 "Napoli",
2885 "Torino",
2886 "Venezia",
2887 "Firenze",
2888 "Palermo",
2889 "Genova",
2890 "Parma",
2891 "Bologna",
2892 "Bari",
2893 "Cagliari",
2894 "Sassari",
2895 "Pisa",
2896 "Aosta",
2897 "Brescia",
2898 "Verona",
2899 "Bolzano",
2900 "Padova",
2901 "Udine",
2902 "Trieste",
2903 "Livorno",
2904 "Ancona",
2905 "Perugia",
2906 "Pescara",
2907 "L'Aquila",
2908 "Campobasso",
2909 "Potenza",
2910 "Cosenza",
2911 "Reggio Calabria",
2912 "Catania",
2913 "Caltanisetta",
2914 "Agrigento",
2915 "La Spezia",
2916 "Modena",
2917 "Vicenza",
2918 "Mantova",
2919 "Cremona",
2920 "Piacenza",
2921 "Reggio Emilia",
2922 "Foggia",
2923 "Benevento",
2924 "Salerno",
2925 "Catanzaro",
2926 "Lecce",
2927 "Como",
2928 "Lecco",
2929 "Sondrio",
2930 "Trento",
2931 "Desenzano",
2932 "Cuneo",
2933 "Asti",
2934 "Lodi",
2935 "Novara",
2936 "Biella",
2937 "Vercelli",
2938 "Rieti",
2939 "Nuoro",
2940 "Oristano",
2941 "Matera",
2942 "Taranto",
2943 "Varese",
2944 "Bergamo",
2945 "Pavia",
2946 "Caserta",
2947 "Frosinone",
2948 "Latina",
2949 "Enna",
2950 "Ragusa",
2951 "Siracusa",
2952 "Pordenone",
2953 "Imperia",
2954 "Verbania",
2955 "Alessandria",
2956 "Messina",
2957 "Siena",
2958 "Arezzo",
2959 "Grosseto",
2960};
2961
2962static const std::string_view _name_italian_pref[] = {
2963 "Alpe ",
2964 "Borgo ",
2965 "Cascina ",
2966 "Castel ",
2967 "Fonte ",
2968 "Forte ",
2969 "Malga ",
2970 "Pieve ",
2971 "Poggio ",
2972 "Rocca ",
2973 "Villa ",
2974 "Villar ",
2975};
2976
2977static const std::string_view _name_italian_1m[] = {
2978 "Bel",
2979 "Borgo",
2980 "Bosco",
2981 "Campo",
2982 "Capo",
2983 "Casal",
2984 "Castel",
2985 "Colle",
2986 "Fiume",
2987 "Fonte",
2988 "Lago",
2989 "Mezzo",
2990 "Monte",
2991 "Mon",
2992 "Orto",
2993 "Passo",
2994 "Prato",
2995 "Poggio",
2996 "Ponte",
2997 "Pozzo",
2998 "Sasso",
2999 "Tra",
3000 "Tre",
3001 "Ver",
3002 "Vico",
3003};
3004
3005static const std::string_view _name_italian_1f[] = {
3006 "Acqua",
3007 "Bra",
3008 "Cala",
3009 "Casa",
3010 "Chiesa",
3011 "Citta",
3012 "Civita",
3013 "Corte",
3014 "Costa",
3015 "Croce",
3016 "Fontana",
3017 "Grotta",
3018 "Guardia",
3019 "Mezza",
3020 "Palma",
3021 "Pietra",
3022 "Ripa",
3023 "Rocca",
3024 "Serra",
3025 "Torre",
3026 "Val",
3027 "Valle",
3028 "Villa",
3029};
3030
3031static const std::string_view _name_italian_2[] = {
3032 "bell",
3033 "bianc",
3034 "cald",
3035 "chiar",
3036 "cort",
3037 "ferrat",
3038 "fier",
3039 "fredd",
3040 "gioios",
3041 "grec",
3042 "guzz",
3043 "lung",
3044 "long",
3045 "migli",
3046 "negr",
3047 "ner",
3048 "nov",
3049 "nuov",
3050 "ross",
3051 "rotond",
3052 "scur",
3053 "secc",
3054 "sett",
3055 "vecchi",
3056 "ventos",
3057 "vers",
3058 "viv",
3059};
3060
3061static const std::string_view _name_italian_2i[] = {
3062 "",
3063 "breve",
3064 "brevi",
3065 "chiari",
3066 "ferro",
3067 "fieschi",
3068 "fiore",
3069 "fonte",
3070 "forte",
3071 "gate",
3072 "leone",
3073 "maggiore",
3074 "minore",
3075 "mole",
3076 "monte",
3077 "poli",
3078 "scuri",
3079 "terra",
3080 "te",
3081 "torrione",
3082 "vento",
3083 "verde",
3084 "versiere",
3085};
3086
3087
3088static const std::string_view _name_italian_3[] = {
3089 " Marittimo",
3090 " Marittima",
3091 " del Capo",
3092 " del Monte",
3093 " di Sopra",
3094 " di Sotto",
3095 " sui Monti",
3096 " dei Marmi",
3097 " dei Sassi",
3098 " delle Fonti",
3099 " sui Prati",
3100 " a Mare",
3101 " Superiore",
3102 " Inferiore",
3103 " Terme",
3104 " Alta",
3105 " Bassa",
3106 " Brianza",
3107 " Vesuviano",
3108 " Scrivia",
3109 " Ticino",
3110};
3111
3112static const std::string_view _name_italian_river1[] = {
3113 " del",
3114 " sul",
3115 " al",
3116 " nel",
3117};
3118
3119static const std::string_view _name_italian_river2[] = {
3120 "l'Adda",
3121 "l'Adige",
3122 "le Alpi",
3123 "l'Arno",
3124 " Bormida",
3125 " Brenta",
3126 "la Dora Baltea",
3127 " Lambro",
3128 " Mincio",
3129 " Naviglio",
3130 "l'Oglio",
3131 "l'Olona",
3132 "l'Ombrone",
3133 " Panaro",
3134 " Piave",
3135 " Po",
3136 " Reno",
3137 " Scrivia",
3138 " Secchia",
3139 " Serio",
3140 " Tagliamento",
3141 " Tanaro",
3142 " Taro",
3143 " Ticino",
3144 " Tevere",
3145};
3146
3147static const std::string_view _name_catalan_real[] = {
3148 "Barcelona",
3149 "L'Hospitalet de Llobregat",
3150 "Cerdanyola",
3151 "Martorell",
3152 "Badalona",
3153 "Tarragona",
3154 "Lleida",
3155 "Girona",
3156 "Sabadell",
3157 "Terrassa",
3158 "Reus",
3159 "Valls",
3160 "Vic",
3161 "Vielha e Mijaran",
3162 "Amposta",
3163 "Tortosa",
3164 "Berga",
3165 "Olot",
3166 "Mollerussa",
3167 "Banyoles",
3168 "Figueres",
3169 "Balaguer",
3170 "Vilafranca del Pened\u00e8s",
3171 "La Seu d'Urgell",
3172 "El Pont de Suert",
3173 "Igualada",
3174 "Manresa",
3175 "Solsona",
3176 "Les Borges Blanques",
3177 "Tremp",
3178 "Sort",
3179 "Colera",
3180 "Portbou",
3181 "El Vendrell",
3182 "Falset",
3183 "Ripoll",
3184 "Cervera",
3185 "Gandesa",
3186 "Matar\u00f3",
3187 "Montblanc",
3188 "Vilanova i la Geltr\u00fa",
3189 "T\u00e0rrega",
3190 "Camprodon",
3191 "Campdev\u00e0nol",
3192 "Cambrils",
3193 "Begur",
3194 "Setcases",
3195 "Palafrugell",
3196 "Begues",
3197 "El Bruc",
3198 "Cadaqu\u00e9s",
3199 "Collbat\u00f3",
3200 "Cervell\u00f3",
3201 "Esparreguera",
3202 "Abrera",
3203 "Alp",
3204 "Das",
3205 "Cercs",
3206 "Manlleu",
3207 "El Masnou",
3208 "Molins de Rei",
3209 "Monistrol",
3210 "Rocallaura",
3211 "Rub\u00ed",
3212 "Ripollet",
3213 "Sitges",
3214 "Roses",
3215};
3216
3217static const std::string_view _name_catalan_pref[] = {
3218 "El Pont de ",
3219 "Parets de ",
3220 "Canet de ",
3221 "Castellar de ",
3222 "Corbera de ",
3223 "Arenys de ",
3224 "Calella de ",
3225 "La Seu de ",
3226 "La Bisbal de ",
3227 "Torroella de ",
3228 "Port de ",
3229 "Vilafranca de ",
3230 "Vilanova de ",
3231 "Caldes de ",
3232 "La Conca de ",
3233 "Olesa de ",
3234 "La Roca de ",
3235 "Sant Esteve de ",
3236 "Sant Andreu de ",
3237 "Sant Jordi de ",
3238 "Sant Joan de ",
3239 "Sant Feliu de ",
3240 "Sant Quirze de ",
3241 "Sant Sadurn\u00ed de ",
3242 "Santa Coloma de ",
3243 "Santa Margarida de ",
3244 "Santa Maria de ",
3245 "Sant Mart\u00ed de ",
3246 "Sant Pere de ",
3247 "Sant Juli\u00e0 de ",
3248 "Sant Vicen\u00e7 de ",
3249
3250};
3251
3252static const std::string_view _name_catalan_1m[] = {
3253 "Torrent",
3254 "Cami",
3255 "Mont",
3256 "Bell",
3257 "Puig",
3258 "Riu",
3259};
3260
3261static const std::string_view _name_catalan_1f[] = {
3262 "Pala",
3263 "Selva",
3264 "Vall",
3265 "Serra",
3266 "Torre",
3267 "Riba",
3268 "Cova",
3269 "Terra",
3270};
3271
3272static const std::string_view _name_catalan_2m[] = {
3273 "alt",
3274 "baix",
3275 "fosc",
3276 "pelat",
3277 "vent\u00f3s",
3278 "negre",
3279 "roig",
3280 "gr\u00eds",
3281};
3282
3283static const std::string_view _name_catalan_2f[] = {
3284 "baixa",
3285 "alta",
3286 "fosca",
3287 "clara",
3288 "negra",
3289 "roja",
3290 "grisa",
3291 "freda",
3292};
3293
3294static const std::string_view _name_catalan_3[] = {
3295 " Desp\u00ed",
3296 " Desvern",
3297 " del Cam\u00ed",
3298 " de Mar",
3299 " de Dalt",
3300 " de Baix",
3301 " del Vall\u00e8s",
3302 " de Bergued\u00e0",
3303 " de Conflent",
3304 " de la Plana",
3305};
3306
3307static const std::string_view _name_catalan_river1[] = {
3308 " d'Anoia",
3309 " de Ter",
3310 " de Llobregat",
3311 " d'Ebre",
3312 " de Segre",
3313 " de Francol\u00ed",
3314};