796ffd98cebcc0a2cf46151b6809935969b9dda7
[reactos.git] / reactos / tools / wmc / lang.c
1 /*
2 * Wine Message Compiler language and codepage support
3 *
4 * Copyright 2000 Bertho A. Stultiens (BS)
5 *
6 */
7 #include <windows.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <string.h>
11 #include <assert.h>
12
13 #include "wmc.h"
14 #include "lang.h"
15
16
17 /*
18 * Languages supported
19 *
20 * MUST be sorting ascending on language ID
21 */
22 static const language_t languages[] = {
23
24 {0x0402, 866, 1251, "Bulgarian", "Bulgaria"},
25 {0x0403, 850, 1252, "Catalan", "Spain"},
26 {0x0405, 852, 1250, "Czech", "Czech Republic"},
27 {0x0406, 850, 1252, "Danish", "Denmark"},
28 {0x0407, 850, 1252, "German", "Germany"},
29 {0x0408, 737, 1253, "Greek", "Greece"},
30 {0x0409, 437, 1252, "English", "United States"},
31 {0x040A, 850, 1252, "Spanish - Traditional Sort", "Spain"},
32 {0x040B, 850, 1252, "Finnish", "Finland"},
33 {0x040C, 850, 1252, "French", "France"},
34 {0x040E, 852, 1250, "Hungarian", "Hungary"},
35 {0x040F, 850, 1252, "Icelandic", "Iceland"},
36 {0x0410, 850, 1252, "Italian", "Italy"},
37 {0x0411, 932, 932, "Japanese", "Japan"},
38 {0x0412, 949, 949, "Korean", "Korea (south)"},
39 {0x0413, 850, 1252, "Dutch", "Netherlands"},
40 {0x0414, 850, 1252, "Norwegian (Bokmål)", "Norway"},
41 {0x0415, 852, 1250, "Polish", "Poland"},
42 {0x0416, 850, 1252, "Portuguese", "Brazil"},
43 {0x0418, 852, 1250, "Romanian", "Romania"},
44 {0x0419, 866, 1251, "Russian", "Russia"},
45 {0x041A, 852, 1250, "Croatian", "Croatia"},
46 {0x041B, 852, 1250, "Slovak", "Slovakia"},
47 {0x041C, 852, 1250, "Albanian", "Albania"},
48 {0x041D, 850, 1252, "Swedish", "Sweden"},
49 {0x041F, 857, 1254, "Turkish", "Turkey"},
50 {0x0421, 850, 1252, "Indonesian", "Indonesia"},
51 {0x0422, 866, 1251, "Ukrainian", "Ukraine"},
52 {0x0423, 866, 1251, "Belarusian", "Belarus"},
53 {0x0424, 852, 1250, "Slovene", "Slovenia"},
54 {0x0425, 775, 1257, "Estonian", "Estonia"},
55 {0x0426, 775, 1257, "Latvian", "Latvia"},
56 {0x0427, 775, 1257, "Lithuanian", "Lithuania"},
57 /* {0x042A, ?, ?, "Vietnamese", "Vietnam"},*/
58 {0x042D, 850, 1252, "Basque", "Spain"},
59 {0x042F, 866, 1251, "Macedonian", "Former Yugoslav Republic of Macedonia"},
60 {0x0436, 850, 1252, "Afrikaans", "South Africa"},
61 /* {0x0438, 852, 1252, "Faroese", "Faroe Islands"}, FIXME: Not sure about codepages */
62 {0x043C, 437, 1252, "Irish", "Ireland"},
63 /* {0x048F, ?, ?, "Esperanto", "<none>"},*/
64 /* {0x0804, ?, ?, "Chinese (People's replublic of China)", People's republic of China"},*/
65 {0x0807, 850, 1252, "German", "Switzerland"},
66 {0x0809, 850, 1252, "English", "United Kingdom"},
67 {0x080A, 850, 1252, "Spanish", "Mexico"},
68 {0x080C, 850, 1252, "French", "Belgium"},
69 {0x0810, 850, 1252, "Italian", "Switzerland"},
70 {0x0813, 850, 1252, "Dutch", "Belgium"},
71 {0x0814, 850, 1252, "Norwegian (Nynorsk)", "Norway"},
72 {0x0816, 850, 1252, "Portuguese", "Portugal"},
73 /* {0x081A, ?, ?, "Serbian (latin)", "Yugoslavia"},*/
74 {0x081D, 850, 1252, "Swedish (Finland)", "Finland"},
75 {0x0C07, 850, 1252, "German", "Austria"},
76 {0x0C09, 850, 1252, "English", "Australia"},
77 {0x0C0A, 850, 1252, "Spanish - International Sort", "Spain"},
78 {0x0C0C, 850, 1252, "French", "Canada"},
79 {0x0C1A, 855, 1251, "Serbian (Cyrillic)", "Serbia"},
80 {0x1007, 850, 1252, "German", "Luxembourg"},
81 {0x1009, 850, 1252, "English", "Canada"},
82 {0x100A, 850, 1252, "Spanish", "Guatemala"},
83 {0x100C, 850, 1252, "French", "Switzerland"},
84 {0x1407, 850, 1252, "German", "Liechtenstein"},
85 {0x1409, 850, 1252, "English", "New Zealand"},
86 {0x140A, 850, 1252, "Spanish", "Costa Rica"},
87 {0x140C, 850, 1252, "French", "Luxembourg"},
88 {0x1809, 850, 1252, "English", "Ireland"},
89 {0x180A, 850, 1252, "Spanish", "Panama"},
90 {0x1C09, 437, 1252, "English", "South Africa"},
91 {0x1C0A, 850, 1252, "Spanish", "Dominican Republic"},
92 {0x2009, 850, 1252, "English", "Jamaica"},
93 {0x200A, 850, 1252, "Spanish", "Venezuela"},
94 {0x2409, 850, 1252, "English", "Caribbean"},
95 {0x240A, 850, 1252, "Spanish", "Colombia"},
96 {0x2809, 850, 1252, "English", "Belize"},
97 {0x280A, 850, 1252, "Spanish", "Peru"},
98 {0x2C09, 437, 1252, "English", "Trinidad & Tobago"},
99 {0x2C0A, 850, 1252, "Spanish", "Argentina"},
100 {0x300A, 850, 1252, "Spanish", "Ecuador"},
101 {0x340A, 850, 1252, "Spanish", "Chile"},
102 {0x380A, 850, 1252, "Spanish", "Uruguay"},
103 {0x3C0A, 850, 1252, "Spanish", "Paraguay"},
104 {0x400A, 850, 1252, "Spanish", "Bolivia"},
105 {0x440A, 850, 1252, "Spanish", "El Salvador"},
106 {0x480A, 850, 1252, "Spanish", "Honduras"},
107 {0x4C0A, 850, 1252, "Spanish", "Nicaragua"},
108 {0x500A, 850, 1252, "Spanish", "Puerto Rico"}
109 };
110
111 #define NLAN (sizeof(languages)/sizeof(languages[0]))
112
113 void show_languages(void)
114 {
115 int i;
116 printf(" Code | DOS-cp | WIN-cp | Language | Country\n");
117 printf("-------+--------+--------+--------------+---------\n");
118 for(i = 0; i < NLAN; i++)
119 printf("0x%04x | %5d | %5d | %-12s | %s\n",
120 languages[i].id,
121 languages[i].doscp,
122 languages[i].wincp,
123 languages[i].name,
124 languages[i].country);
125 }
126
127 static int langcmp(const void *p1, const void *p2)
128 {
129 return *(unsigned *)p1 - ((language_t *)p2)->id;
130 }
131
132 const language_t *find_language(unsigned id)
133 {
134 return (const language_t *)bsearch(&id, languages, NLAN, sizeof(languages[0]), langcmp);
135 }
136
137 void show_codepages(void)
138 {
139 #if 0
140 unsigned i;
141 const union cptable *cpp;
142 printf("Codepages:\n");
143 for(i = 0; (cpp = cp_enum_table(i)); i++)
144 {
145 printf("%-5d %s\n", cpp->info.codepage, cpp->info.name);
146 }
147 #endif
148 }
149
150 #if 0
151 const union cptable *find_codepage(int id)
152 {
153 return cp_get_table(id);
154 }
155 #endif