Ooops...
[mono.git] / mcs / class / I18N / Common / Handlers.cs
1 /*
2  * Handlers.cs - Implementation of the "I18N.Common.Handlers" class.
3  *
4  * Copyright (c) 2002  Southern Storm Software, Pty Ltd
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining
7  * a copy of this software and associated documentation files (the "Software"),
8  * to deal in the Software without restriction, including without limitation
9  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10  * and/or sell copies of the Software, and to permit persons to whom the
11  * Software is furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included
14  * in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22  * OTHER DEALINGS IN THE SOFTWARE.
23  */
24
25 namespace I18N.Common
26 {
27
28 using System;
29 using System.Collections;
30
31 // This class provides an internal list of handlers, for runtime
32 // engines that do not implement the altered "GetFile" semantics.
33 // The list must be kept up to date manually.
34
35 public sealed class Handlers
36 {
37     public static readonly String[] List = {
38         "I18N.CJK.CP932",
39         "I18N.CJK.CP936",
40         "I18N.CJK.CP949",
41         "I18N.CJK.CP950",
42         "I18N.CJK.CP50221",
43         "I18N.CJK.CP51932",
44         "I18N.CJK.ENCbig5",
45         "I18N.CJK.ENCgb2312",
46         "I18N.CJK.ENCshift_jis",
47         "I18N.CJK.ENCiso_2022_jp",
48         "I18N.CJK.ENCeuc_jp",
49         "I18N.CJK.ENCuhc",
50         "I18N.CJK.ENCgb18030",
51         "I18N.CJK.GB18030Encoding",
52         "I18N.MidEast.CP1254",
53         "I18N.MidEast.ENCwindows_1254",
54         "I18N.MidEast.CP1255",
55         "I18N.MidEast.ENCwindows_1255",
56         "I18N.MidEast.CP1256",
57         "I18N.MidEast.ENCwindows_1256",
58         "I18N.MidEast.CP28596",
59         "I18N.MidEast.ENCiso_8859_6",
60         "I18N.MidEast.CP28598",
61         "I18N.MidEast.ENCiso_8859_8",
62         "I18N.MidEast.CP28599",
63         "I18N.MidEast.ENCiso_8859_9",
64         "I18N.MidEast.CP38598",
65         "I18N.MidEast.ENCwindows_38598",
66         "I18N.Other.CP1251",
67         "I18N.Other.ENCwindows_1251",
68         "I18N.Other.CP1257",
69         "I18N.Other.ENCwindows_1257",
70         "I18N.Other.CP1258",
71         "I18N.Other.ENCwindows_1258",
72         "I18N.Other.CP20866",
73         "I18N.Other.ENCkoi8_r",
74         "I18N.Other.CP21866",
75         "I18N.Other.ENCkoi8_u",
76         "I18N.Other.CP28594",
77         "I18N.Other.ENCiso_8859_4",
78         "I18N.Other.CP28595",
79         "I18N.Other.ENCiso_8859_5",
80         "I18N.Other.ISCIIEncoding",
81         "I18N.Other.CP57002",
82         "I18N.Other.CP57003",
83         "I18N.Other.CP57004",
84         "I18N.Other.CP57005",
85         "I18N.Other.CP57006",
86         "I18N.Other.CP57007",
87         "I18N.Other.CP57008",
88         "I18N.Other.CP57009",
89         "I18N.Other.CP57010",
90         "I18N.Other.CP57011",
91         "I18N.Other.ENCx_iscii_de",
92         "I18N.Other.ENCx_iscii_be",
93         "I18N.Other.ENCx_iscii_ta",
94         "I18N.Other.ENCx_iscii_te",
95         "I18N.Other.ENCx_iscii_as",
96         "I18N.Other.ENCx_iscii_or",
97         "I18N.Other.ENCx_iscii_ka",
98         "I18N.Other.ENCx_iscii_ma",
99         "I18N.Other.ENCx_iscii_gu",
100         "I18N.Other.ENCx_iscii_pa",
101         "I18N.Other.CP874",
102         "I18N.Other.ENCwindows_874",
103         "I18N.Rare.CP1026",
104         "I18N.Rare.ENCibm1026",
105         "I18N.Rare.CP1047",
106         "I18N.Rare.ENCibm1047",
107         "I18N.Rare.CP1140",
108         "I18N.Rare.ENCibm01140",
109         "I18N.Rare.CP1141",
110         "I18N.Rare.ENCibm01141",
111         "I18N.Rare.CP1142",
112         "I18N.Rare.ENCibm01142",
113         "I18N.Rare.CP1143",
114         "I18N.Rare.ENCibm01143",
115         "I18N.Rare.CP1144",
116         "I18N.Rare.ENCibm1144",
117         "I18N.Rare.CP1145",
118         "I18N.Rare.ENCibm1145",
119         "I18N.Rare.CP1146",
120         "I18N.Rare.ENCibm1146",
121         "I18N.Rare.CP1147",
122         "I18N.Rare.ENCibm1147",
123         "I18N.Rare.CP1148",
124         "I18N.Rare.ENCibm1148",
125         "I18N.Rare.CP1149",
126         "I18N.Rare.ENCibm1149",
127         "I18N.Rare.CP20273",
128         "I18N.Rare.ENCibm273",
129         "I18N.Rare.CP20277",
130         "I18N.Rare.ENCibm277",
131         "I18N.Rare.CP20278",
132         "I18N.Rare.ENCibm278",
133         "I18N.Rare.CP20280",
134         "I18N.Rare.ENCibm280",
135         "I18N.Rare.CP20284",
136         "I18N.Rare.ENCibm284",
137         "I18N.Rare.CP20285",
138         "I18N.Rare.ENCibm285",
139         "I18N.Rare.CP20290",
140         "I18N.Rare.ENCibm290",
141         "I18N.Rare.CP20297",
142         "I18N.Rare.ENCibm297",
143         "I18N.Rare.CP20420",
144         "I18N.Rare.ENCibm420",
145         "I18N.Rare.CP20424",
146         "I18N.Rare.ENCibm424",
147         "I18N.Rare.CP20871",
148         "I18N.Rare.ENCibm871",
149         "I18N.Rare.CP21025",
150         "I18N.Rare.ENCibm1025",
151         "I18N.Rare.CP37",
152         "I18N.Rare.ENCibm037",
153         "I18N.Rare.CP500",
154         "I18N.Rare.ENCibm500",
155         "I18N.Rare.CP708",
156         "I18N.Rare.ENCasmo_708",
157         "I18N.Rare.CP852",
158         "I18N.Rare.ENCibm852",
159         "I18N.Rare.CP855",
160         "I18N.Rare.ENCibm855",
161         "I18N.Rare.CP857",
162         "I18N.Rare.ENCibm857",
163         "I18N.Rare.CP858",
164         "I18N.Rare.ENCibm00858",
165         "I18N.Rare.CP862",
166         "I18N.Rare.ENCibm862",
167         "I18N.Rare.CP864",
168         "I18N.Rare.ENCibm864",
169         "I18N.Rare.CP866",
170         "I18N.Rare.ENCibm866",
171         "I18N.Rare.CP869",
172         "I18N.Rare.ENCibm869",
173         "I18N.Rare.CP870",
174         "I18N.Rare.ENCibm870",
175         "I18N.Rare.CP875",
176         "I18N.Rare.ENCibm875",
177         "I18N.West.CP10000",
178         "I18N.West.ENCmacintosh",
179         "I18N.West.CP10079",
180         "I18N.West.ENCx_mac_icelandic",
181         "I18N.West.CP1250",
182         "I18N.West.ENCwindows_1250",
183         "I18N.West.CP1252",
184         "I18N.West.ENCwindows_1252",
185         "I18N.West.CP1253",
186         "I18N.West.ENCwindows_1253",
187         "I18N.West.CP28592",
188         "I18N.West.ENCiso_8859_2",
189         "I18N.West.CP28593",
190         "I18N.West.ENCiso_8859_3",
191         "I18N.West.CP28597",
192         "I18N.West.ENCiso_8859_7",
193         "I18N.West.CP28605",
194         "I18N.West.ENCiso_8859_15",
195         "I18N.West.CP437",
196         "I18N.West.ENCibm437",
197         "I18N.West.CP850",
198         "I18N.West.ENCibm850",
199         "I18N.West.CP860",
200         "I18N.West.ENCibm860",
201         "I18N.West.CP861",
202         "I18N.West.ENCibm861",
203         "I18N.West.CP863",
204         "I18N.West.ENCibm863",
205         "I18N.West.CP865",
206         "I18N.West.ENCibm865"
207     };
208         
209         static Hashtable aliases;
210         public static string GetAlias (string name)
211         {
212                 if (aliases == null)
213                         BuildHash ();
214
215                 return aliases [name] as string;
216         }
217
218         static void BuildHash ()
219         {
220                 aliases = new Hashtable (new CaseInsensitiveHashCodeProvider (),
221                                          new CaseInsensitiveComparer ());
222
223                 aliases.Add ("arabic", "iso_8859_6");
224                 aliases.Add ("csISOLatinArabic", "iso_8859_6");
225                 aliases.Add ("ECMA_114", "iso_8859_6");
226                 aliases.Add ("ISO_8859_6:1987", "iso_8859_6");
227                 aliases.Add ("iso_ir_127", "iso_8859_6");
228
229                 aliases.Add ("cp1256" ,"windows_1256");
230
231                 aliases.Add ("csISOLatin4", "iso_8859_4");
232                 aliases.Add ("ISO_8859_4:1988", "iso_8859_4");
233                 aliases.Add ("iso_ir_110", "iso_8859_4");
234                 aliases.Add ("l4", "iso_8859_4");
235                 aliases.Add ("latin4", "iso_8859_4");
236
237                 aliases.Add ("cp852" ,"ibm852");
238
239                 aliases.Add ("csISOLatin2", "iso_8859_2");
240                 aliases.Add ("iso_8859_2:1987", "iso_8859_2");
241                 aliases.Add ("iso8859_2", "iso_8859_2");
242                 aliases.Add ("iso_ir_101", "iso_8859_2");
243                 aliases.Add ("l2", "iso_8859_2");
244                 aliases.Add ("latin2", "iso_8859_2");
245
246                 aliases.Add ("x-cp1250", "windows_1250");
247
248                 aliases.Add ("chinese", "gb2312");
249                 aliases.Add ("CN-GB", "gb2312");
250                 aliases.Add ("csGB2312", "gb2312");
251                 aliases.Add ("csGB231280", "gb2312");
252                 aliases.Add ("csISO58GB231280", "gb2312");
253                 aliases.Add ("GB_2312_80", "gb2312");
254                 aliases.Add ("GB231280", "gb2312");
255                 aliases.Add ("GB2312_80", "gb2312");
256                 aliases.Add ("GBK", "gb2312");
257                 aliases.Add ("iso_ir_58", "gb2312");
258
259                 aliases.Add ("cn-big5", "big5");
260                 aliases.Add ("csbig5", "big5");
261                 aliases.Add ("x-x-big5", "big5");
262
263                 aliases.Add ("cp866", "ibm866");
264
265                 aliases.Add ("csISOLatin5", "iso_8859_5");
266                 aliases.Add ("csISOLatinCyrillic", "iso_8859_5");
267                 aliases.Add ("cyrillic", "iso_8859_5");
268                 aliases.Add ("ISO_8859_5:1988", "iso_8859_5");
269                 aliases.Add ("iso_ir_144", "iso_8859_5");
270                 aliases.Add ("l5", "iso_8859_5");
271
272                 aliases.Add ("csKOI8R", "koi8_r");
273                 aliases.Add ("koi", "koi8_r");
274                 aliases.Add ("koi8", "koi8_r");
275                 aliases.Add ("koi8r", "koi8_r");
276
277                 aliases.Add ("koi8ru", "koi8_u");
278
279                 aliases.Add ("x-cp1251", "windows_1251");
280
281                 aliases.Add ("csISOLatinGreek", "iso_8859_7");
282                 aliases.Add ("ECMA_118", "iso_8859_7");
283                 aliases.Add ("ELOT_928", "iso_8859_7");
284                 aliases.Add ("greek", "iso_8859_7");
285                 aliases.Add ("greek8", "iso_8859_7");
286                 aliases.Add ("ISO_8859_7:1987", "iso_8859_7");
287                 aliases.Add ("iso_ir_126", "iso_8859_7");
288
289                 aliases.Add ("csISOLatinHebrew", "iso_8859_8");
290                 aliases.Add ("hebrew", "iso_8859_8");
291                 aliases.Add ("ISO_8859_8:1988", "iso_8859_8");
292                 aliases.Add ("iso_ir_138", "iso_8859_8");
293
294                 aliases.Add ("csShiftJIS", "shift_jis");
295                 aliases.Add ("csWindows31J", "shift_jis");
296                 aliases.Add ("ms_Kanji", "shift_jis");
297                 aliases.Add ("shift-jis", "shift_jis");
298                 aliases.Add ("x-ms-cp932", "shift_jis");
299                 aliases.Add ("x-sjis", "shift_jis");
300
301                 aliases.Add ("csISOLatin3", "iso_8859_3");
302                 aliases.Add ("ISO_8859_3:1988", "iso_8859_3");
303                 aliases.Add ("iso_ir_109", "iso_8859_3");
304                 aliases.Add ("l3", "iso_8859_3");
305                 aliases.Add ("latin3", "iso_8859_3");
306
307                 aliases.Add ("csISOLatin9", "iso_8859_15");
308                 aliases.Add ("l9", "iso_8859_15");
309                 aliases.Add ("latin9", "iso_8859_15");
310
311                 aliases.Add ("cp437", "ibm437");
312                 aliases.Add ("csPC8", "ibm437");
313                 aliases.Add ("CodePage437", "ibm437");
314
315                 aliases.Add ("DOS_874", "windows_874");
316                 aliases.Add ("iso_8859_11", "windows_874");
317                 aliases.Add ("TIS_620", "windows_874");
318         }
319
320         
321 }; // class Handlers
322
323 }; // namespace I18N.Common