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