2005-09-25 Atsushi Enomoto <atsushi@ximian.com>
[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.CP50220",
43         "I18N.CJK.CP50221",
44         "I18N.CJK.CP50222",
45         "I18N.CJK.CP51932",
46         "I18N.CJK.CP54936",
47         "I18N.CJK.ENCbig5",
48         "I18N.CJK.ENCgb2312",
49         "I18N.CJK.ENCshift_jis",
50         "I18N.CJK.ENCiso_2022_jp",
51         "I18N.CJK.ENCeuc_jp",
52         "I18N.CJK.ENCuhc",
53         "I18N.CJK.ENCgb18030",
54         "I18N.MidEast.CP1254",
55         "I18N.MidEast.ENCwindows_1254",
56         "I18N.MidEast.CP1255",
57         "I18N.MidEast.ENCwindows_1255",
58         "I18N.MidEast.CP1256",
59         "I18N.MidEast.ENCwindows_1256",
60         "I18N.MidEast.CP28596",
61         "I18N.MidEast.ENCiso_8859_6",
62         "I18N.MidEast.CP28598",
63         "I18N.MidEast.ENCiso_8859_8",
64         "I18N.MidEast.CP28599",
65         "I18N.MidEast.ENCiso_8859_9",
66         "I18N.MidEast.CP38598",
67         "I18N.MidEast.ENCwindows_38598",
68         "I18N.Other.CP1251",
69         "I18N.Other.ENCwindows_1251",
70         "I18N.Other.CP1257",
71         "I18N.Other.ENCwindows_1257",
72         "I18N.Other.CP1258",
73         "I18N.Other.ENCwindows_1258",
74         "I18N.Other.CP20866",
75         "I18N.Other.ENCkoi8_r",
76         "I18N.Other.CP21866",
77         "I18N.Other.ENCkoi8_u",
78         "I18N.Other.CP28594",
79         "I18N.Other.ENCiso_8859_4",
80         "I18N.Other.CP28595",
81         "I18N.Other.ENCiso_8859_5",
82         "I18N.Other.ISCIIEncoding",
83         "I18N.Other.CP57002",
84         "I18N.Other.CP57003",
85         "I18N.Other.CP57004",
86         "I18N.Other.CP57005",
87         "I18N.Other.CP57006",
88         "I18N.Other.CP57007",
89         "I18N.Other.CP57008",
90         "I18N.Other.CP57009",
91         "I18N.Other.CP57010",
92         "I18N.Other.CP57011",
93         "I18N.Other.ENCx_iscii_de",
94         "I18N.Other.ENCx_iscii_be",
95         "I18N.Other.ENCx_iscii_ta",
96         "I18N.Other.ENCx_iscii_te",
97         "I18N.Other.ENCx_iscii_as",
98         "I18N.Other.ENCx_iscii_or",
99         "I18N.Other.ENCx_iscii_ka",
100         "I18N.Other.ENCx_iscii_ma",
101         "I18N.Other.ENCx_iscii_gu",
102         "I18N.Other.ENCx_iscii_pa",
103         "I18N.Other.CP874",
104         "I18N.Other.ENCwindows_874",
105         "I18N.Rare.CP1026",
106         "I18N.Rare.ENCibm1026",
107         "I18N.Rare.CP1047",
108         "I18N.Rare.ENCibm1047",
109         "I18N.Rare.CP1140",
110         "I18N.Rare.ENCibm01140",
111         "I18N.Rare.CP1141",
112         "I18N.Rare.ENCibm01141",
113         "I18N.Rare.CP1142",
114         "I18N.Rare.ENCibm01142",
115         "I18N.Rare.CP1143",
116         "I18N.Rare.ENCibm01143",
117         "I18N.Rare.CP1144",
118         "I18N.Rare.ENCibm1144",
119         "I18N.Rare.CP1145",
120         "I18N.Rare.ENCibm1145",
121         "I18N.Rare.CP1146",
122         "I18N.Rare.ENCibm1146",
123         "I18N.Rare.CP1147",
124         "I18N.Rare.ENCibm1147",
125         "I18N.Rare.CP1148",
126         "I18N.Rare.ENCibm1148",
127         "I18N.Rare.CP1149",
128         "I18N.Rare.ENCibm1149",
129         "I18N.Rare.CP20273",
130         "I18N.Rare.ENCibm273",
131         "I18N.Rare.CP20277",
132         "I18N.Rare.ENCibm277",
133         "I18N.Rare.CP20278",
134         "I18N.Rare.ENCibm278",
135         "I18N.Rare.CP20280",
136         "I18N.Rare.ENCibm280",
137         "I18N.Rare.CP20284",
138         "I18N.Rare.ENCibm284",
139         "I18N.Rare.CP20285",
140         "I18N.Rare.ENCibm285",
141         "I18N.Rare.CP20290",
142         "I18N.Rare.ENCibm290",
143         "I18N.Rare.CP20297",
144         "I18N.Rare.ENCibm297",
145         "I18N.Rare.CP20420",
146         "I18N.Rare.ENCibm420",
147         "I18N.Rare.CP20424",
148         "I18N.Rare.ENCibm424",
149         "I18N.Rare.CP20871",
150         "I18N.Rare.ENCibm871",
151         "I18N.Rare.CP21025",
152         "I18N.Rare.ENCibm1025",
153         "I18N.Rare.CP37",
154         "I18N.Rare.ENCibm037",
155         "I18N.Rare.CP500",
156         "I18N.Rare.ENCibm500",
157         "I18N.Rare.CP708",
158         "I18N.Rare.ENCasmo_708",
159         "I18N.Rare.CP852",
160         "I18N.Rare.ENCibm852",
161         "I18N.Rare.CP855",
162         "I18N.Rare.ENCibm855",
163         "I18N.Rare.CP857",
164         "I18N.Rare.ENCibm857",
165         "I18N.Rare.CP858",
166         "I18N.Rare.ENCibm00858",
167         "I18N.Rare.CP862",
168         "I18N.Rare.ENCibm862",
169         "I18N.Rare.CP864",
170         "I18N.Rare.ENCibm864",
171         "I18N.Rare.CP866",
172         "I18N.Rare.ENCibm866",
173         "I18N.Rare.CP869",
174         "I18N.Rare.ENCibm869",
175         "I18N.Rare.CP870",
176         "I18N.Rare.ENCibm870",
177         "I18N.Rare.CP875",
178         "I18N.Rare.ENCibm875",
179         "I18N.West.CP10000",
180         "I18N.West.ENCmacintosh",
181         "I18N.West.CP10079",
182         "I18N.West.ENCx_mac_icelandic",
183         "I18N.West.CP1250",
184         "I18N.West.ENCwindows_1250",
185         "I18N.West.CP1252",
186         "I18N.West.ENCwindows_1252",
187         "I18N.West.CP1253",
188         "I18N.West.ENCwindows_1253",
189         "I18N.West.CP28592",
190         "I18N.West.ENCiso_8859_2",
191         "I18N.West.CP28593",
192         "I18N.West.ENCiso_8859_3",
193         "I18N.West.CP28597",
194         "I18N.West.ENCiso_8859_7",
195         "I18N.West.CP28605",
196         "I18N.West.ENCiso_8859_15",
197         "I18N.West.CP437",
198         "I18N.West.ENCibm437",
199         "I18N.West.CP850",
200         "I18N.West.ENCibm850",
201         "I18N.West.CP860",
202         "I18N.West.ENCibm860",
203         "I18N.West.CP861",
204         "I18N.West.ENCibm861",
205         "I18N.West.CP863",
206         "I18N.West.ENCibm863",
207         "I18N.West.CP865",
208         "I18N.West.ENCibm865"
209     };
210         
211         static Hashtable aliases;
212         public static string GetAlias (string name)
213         {
214                 if (aliases == null)
215                         BuildHash ();
216
217                 return aliases [name] as string;
218         }
219
220         static void BuildHash ()
221         {
222                 aliases = new Hashtable (new CaseInsensitiveHashCodeProvider (),
223                                          new CaseInsensitiveComparer ());
224
225                 aliases.Add ("arabic", "iso_8859_6");
226                 aliases.Add ("csISOLatinArabic", "iso_8859_6");
227                 aliases.Add ("ECMA_114", "iso_8859_6");
228                 aliases.Add ("ISO_8859_6:1987", "iso_8859_6");
229                 aliases.Add ("iso_ir_127", "iso_8859_6");
230
231                 aliases.Add ("cp1256" ,"windows_1256");
232
233                 aliases.Add ("csISOLatin4", "iso_8859_4");
234                 aliases.Add ("ISO_8859_4:1988", "iso_8859_4");
235                 aliases.Add ("iso_ir_110", "iso_8859_4");
236                 aliases.Add ("l4", "iso_8859_4");
237                 aliases.Add ("latin4", "iso_8859_4");
238
239                 aliases.Add ("cp852" ,"ibm852");
240
241                 aliases.Add ("csISOLatin2", "iso_8859_2");
242                 aliases.Add ("iso_8859_2:1987", "iso_8859_2");
243                 aliases.Add ("iso8859_2", "iso_8859_2");
244                 aliases.Add ("iso_ir_101", "iso_8859_2");
245                 aliases.Add ("l2", "iso_8859_2");
246                 aliases.Add ("latin2", "iso_8859_2");
247
248                 aliases.Add ("x-cp1250", "windows_1250");
249
250                 aliases.Add ("chinese", "gb2312");
251                 aliases.Add ("CN-GB", "gb2312");
252                 aliases.Add ("csGB2312", "gb2312");
253                 aliases.Add ("csGB231280", "gb2312");
254                 aliases.Add ("csISO58GB231280", "gb2312");
255                 aliases.Add ("GB_2312_80", "gb2312");
256                 aliases.Add ("GB231280", "gb2312");
257                 aliases.Add ("GB2312_80", "gb2312");
258                 aliases.Add ("GBK", "gb2312");
259                 aliases.Add ("iso_ir_58", "gb2312");
260
261                 aliases.Add ("cn-big5", "big5");
262                 aliases.Add ("csbig5", "big5");
263                 aliases.Add ("x-x-big5", "big5");
264
265                 aliases.Add ("cp866", "ibm866");
266
267                 aliases.Add ("csISOLatin5", "iso_8859_5");
268                 aliases.Add ("csISOLatinCyrillic", "iso_8859_5");
269                 aliases.Add ("cyrillic", "iso_8859_5");
270                 aliases.Add ("ISO_8859_5:1988", "iso_8859_5");
271                 aliases.Add ("iso_ir_144", "iso_8859_5");
272                 aliases.Add ("l5", "iso_8859_5");
273
274                 aliases.Add ("csKOI8R", "koi8_r");
275                 aliases.Add ("koi", "koi8_r");
276                 aliases.Add ("koi8", "koi8_r");
277                 aliases.Add ("koi8r", "koi8_r");
278
279                 aliases.Add ("koi8ru", "koi8_u");
280
281                 aliases.Add ("x-cp1251", "windows_1251");
282
283                 aliases.Add ("csISOLatinGreek", "iso_8859_7");
284                 aliases.Add ("ECMA_118", "iso_8859_7");
285                 aliases.Add ("ELOT_928", "iso_8859_7");
286                 aliases.Add ("greek", "iso_8859_7");
287                 aliases.Add ("greek8", "iso_8859_7");
288                 aliases.Add ("ISO_8859_7:1987", "iso_8859_7");
289                 aliases.Add ("iso_ir_126", "iso_8859_7");
290
291                 aliases.Add ("csISOLatinHebrew", "iso_8859_8");
292                 aliases.Add ("hebrew", "iso_8859_8");
293                 aliases.Add ("ISO_8859_8:1988", "iso_8859_8");
294                 aliases.Add ("iso_ir_138", "iso_8859_8");
295
296                 aliases.Add ("csShiftJIS", "shift_jis");
297                 aliases.Add ("csWindows31J", "shift_jis");
298                 aliases.Add ("ms_Kanji", "shift_jis");
299                 aliases.Add ("shift-jis", "shift_jis");
300                 aliases.Add ("x-ms-cp932", "shift_jis");
301                 aliases.Add ("x-sjis", "shift_jis");
302
303                 aliases.Add ("csISOLatin3", "iso_8859_3");
304                 aliases.Add ("ISO_8859_3:1988", "iso_8859_3");
305                 aliases.Add ("iso_ir_109", "iso_8859_3");
306                 aliases.Add ("l3", "iso_8859_3");
307                 aliases.Add ("latin3", "iso_8859_3");
308
309                 aliases.Add ("csISOLatin9", "iso_8859_15");
310                 aliases.Add ("l9", "iso_8859_15");
311                 aliases.Add ("latin9", "iso_8859_15");
312
313                 aliases.Add ("cp437", "ibm437");
314                 aliases.Add ("csPC8", "ibm437");
315                 aliases.Add ("CodePage437", "ibm437");
316
317                 aliases.Add ("DOS_874", "windows_874");
318                 aliases.Add ("iso_8859_11", "windows_874");
319                 aliases.Add ("TIS_620", "windows_874");
320         }
321
322         
323 }; // class Handlers
324
325 }; // namespace I18N.Common