2 * Wine Message Compiler language and codepage support
4 * Copyright 2000 Bertho A. Stultiens (BS)
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
35 * MUST be sorting ascending on language ID
37 static const struct language languages
[] = {
39 {0x0000, 437, "Neutral", NULL
},
40 {0x0002, 866, "Bulgarian", NULL
},
41 {0x0003, 850, "Catalan", NULL
},
42 {0x0005, 852, "Czech", NULL
},
43 {0x0006, 850, "Danish", NULL
},
44 {0x0007, 850, "German", NULL
},
45 {0x0008, 737, "Greek", NULL
},
46 {0x0009, 437, "English", NULL
},
47 {0x000A, 850, "Spanish - Traditional Sort", NULL
},
48 {0x000B, 850, "Finnish", NULL
},
49 {0x000C, 850, "French", NULL
},
50 {0x000E, 852, "Hungarian", NULL
},
51 {0x000F, 850, "Icelandic", NULL
},
52 {0x0010, 850, "Italian", NULL
},
53 {0x0011, 932, "Japanese", NULL
},
54 {0x0012, 949, "Korean", NULL
},
55 {0x0013, 850, "Dutch", NULL
},
56 {0x0014, 850, "Norwegian (Bokmål)", NULL
},
57 {0x0015, 852, "Polish", NULL
},
58 {0x0016, 850, "Portuguese", NULL
},
59 {0x0018, 852, "Romanian", NULL
},
60 {0x0019, 866, "Russian", NULL
},
61 {0x001A, 852, "Serbian", NULL
},
62 {0x001B, 852, "Slovak", NULL
},
63 {0x001C, 852, "Albanian", NULL
},
64 {0x001D, 850, "Swedish", NULL
},
65 {0x001F, 857, "Turkish", NULL
},
66 {0x0021, 850, "Indonesian", NULL
},
67 {0x0022, 866, "Ukrainian", NULL
},
68 {0x0023, 866, "Belarusian", NULL
},
69 {0x0024, 852, "Slovene", NULL
},
70 {0x0025, 775, "Estonian", NULL
},
71 {0x0026, 775, "Latvian", NULL
},
72 {0x0027, 775, "Lithuanian", NULL
},
73 {0x002A,1258, "Vietnamese", NULL
},
74 {0x002D, 850, "Basque", NULL
},
75 {0x002F, 866, "Macedonian", NULL
},
76 {0x0036, 850, "Afrikaans", NULL
},
77 {0x0038, 852, "Faroese", NULL
},
78 {0x003C, 437, "Irish", NULL
},
79 {0x003E, 850, "Malay", NULL
},
80 {0x0402, 866, "Bulgarian", "Bulgaria"},
81 {0x0403, 850, "Catalan", "Spain"},
82 {0x0405, 852, "Czech", "Czech Republic"},
83 {0x0406, 850, "Danish", "Denmark"},
84 {0x0407, 850, "German", "Germany"},
85 {0x0408, 737, "Greek", "Greece"},
86 {0x0409, 437, "English", "United States"},
87 {0x040A, 850, "Spanish - Traditional Sort", "Spain"},
88 {0x040B, 850, "Finnish", "Finland"},
89 {0x040C, 850, "French", "France"},
90 {0x040E, 852, "Hungarian", "Hungary"},
91 {0x040F, 850, "Icelandic", "Iceland"},
92 {0x0410, 850, "Italian", "Italy"},
93 {0x0411, 932, "Japanese", "Japan"},
94 {0x0412, 949, "Korean", "Korea (south)"},
95 {0x0413, 850, "Dutch", "Netherlands"},
96 {0x0414, 850, "Norwegian (Bokmål)", "Norway"},
97 {0x0415, 852, "Polish", "Poland"},
98 {0x0416, 850, "Portuguese", "Brazil"},
99 {0x0418, 852, "Romanian", "Romania"},
100 {0x0419, 866, "Russian", "Russia"},
101 {0x041A, 852, "Croatian", "Croatia"},
102 {0x041B, 852, "Slovak", "Slovakia"},
103 {0x041C, 852, "Albanian", "Albania"},
104 {0x041D, 850, "Swedish", "Sweden"},
105 {0x041F, 857, "Turkish", "Turkey"},
106 {0x0421, 850, "Indonesian", "Indonesia"},
107 {0x0422, 866, "Ukrainian", "Ukraine"},
108 {0x0423, 866, "Belarusian", "Belarus"},
109 {0x0424, 852, "Slovene", "Slovenia"},
110 {0x0425, 775, "Estonian", "Estonia"},
111 {0x0426, 775, "Latvian", "Latvia"},
112 {0x0427, 775, "Lithuanian", "Lithuania"},
113 {0x042A,1258, "Vietnamese", "Vietnam"},
114 {0x042D, 850, "Basque", "Spain"},
115 {0x042F, 866, "Macedonian", "Former Yugoslav Republic of Macedonia"},
116 {0x0436, 850, "Afrikaans", "South Africa"},
117 {0x0438, 852, "Faroese", "Faroe Islands"},
118 {0x043C, 437, "Irish", "Ireland"},
119 {0x043E, 850, "Malay", "Malaysia"},
120 /* {0x048F, ?, "Esperanto", "<none>"},*/
121 {0x0804, 936, "Chinese (People's republic of China)", "People's republic of China"},
122 {0x0807, 850, "German", "Switzerland"},
123 {0x0809, 850, "English", "United Kingdom"},
124 {0x080A, 850, "Spanish", "Mexico"},
125 {0x080C, 850, "French", "Belgium"},
126 {0x0810, 850, "Italian", "Switzerland"},
127 {0x0813, 850, "Dutch", "Belgium"},
128 {0x0814, 850, "Norwegian (Nynorsk)", "Norway"},
129 {0x0816, 850, "Portuguese", "Portugal"},
130 {0x081A, 852, "Serbian (latin)", "Yugoslavia"},
131 {0x081D, 850, "Swedish (Finland)", "Finland"},
132 {0x0C07, 850, "German", "Austria"},
133 {0x0C09, 850, "English", "Australia"},
134 {0x0C0A, 850, "Spanish - International Sort", "Spain"},
135 {0x0C0C, 850, "French", "Canada"},
136 {0x0C1A, 855, "Serbian (Cyrillic)", "Serbia"},
137 {0x1007, 850, "German", "Luxembourg"},
138 {0x1009, 850, "English", "Canada"},
139 {0x100A, 850, "Spanish", "Guatemala"},
140 {0x100C, 850, "French", "Switzerland"},
141 {0x1407, 850, "German", "Liechtenstein"},
142 {0x1409, 850, "English", "New Zealand"},
143 {0x140A, 850, "Spanish", "Costa Rica"},
144 {0x140C, 850, "French", "Luxembourg"},
145 {0x1809, 850, "English", "Ireland"},
146 {0x180A, 850, "Spanish", "Panama"},
147 {0x1C09, 437, "English", "South Africa"},
148 {0x1C0A, 850, "Spanish", "Dominican Republic"},
149 {0x2009, 850, "English", "Jamaica"},
150 {0x200A, 850, "Spanish", "Venezuela"},
151 {0x2409, 850, "English", "Caribbean"},
152 {0x240A, 850, "Spanish", "Colombia"},
153 {0x2809, 850, "English", "Belize"},
154 {0x280A, 850, "Spanish", "Peru"},
155 {0x2C09, 437, "English", "Trinidad & Tobago"},
156 {0x2C0A, 850, "Spanish", "Argentina"},
157 {0x300A, 850, "Spanish", "Ecuador"},
158 {0x340A, 850, "Spanish", "Chile"},
159 {0x380A, 850, "Spanish", "Uruguay"},
160 {0x3C0A, 850, "Spanish", "Paraguay"},
161 {0x400A, 850, "Spanish", "Bolivia"},
162 {0x440A, 850, "Spanish", "El Salvador"},
163 {0x480A, 850, "Spanish", "Honduras"},
164 {0x4C0A, 850, "Spanish", "Nicaragua"},
165 {0x500A, 850, "Spanish", "Puerto Rico"}
168 void show_languages(void)
171 printf(" Code | DOS-cp | Language | Country\n");
172 printf("-------+--------+--------------+---------\n");
173 for(i
= 0; i
< ARRAY_SIZE(languages
); i
++)
174 printf("0x%04x | %5d | %-12s | %s\n",
178 languages
[i
].country
? languages
[i
].country
: "Neutral");
181 static int langcmp(const void *p1
, const void *p2
)
183 return *(const unsigned *)p1
- ((const struct language
*)p2
)->id
;
186 const struct language
*find_language(unsigned id
)
188 return (const struct language
*)bsearch(&id
, languages
, ARRAY_SIZE(languages
),
189 sizeof(languages
[0]), langcmp
);