KWWidgets
vtkKWLanguage.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Module: $RCSfile: vtkKWLanguage.h,v $
4 
5  Copyright (c) Kitware, Inc.
6  All rights reserved.
7  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
8 
9  This software is distributed WITHOUT ANY WARRANTY; without even
10  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11  PURPOSE. See the above copyright notice for more information.
12 
13 =========================================================================*/
14 // .NAME vtkKWLanguage - language support.
15 // .SECTION Description
16 // vtkKWLanguage provides methods to refer to common languages, as well
17 // as set the current language.
18 
19 #ifndef __vtkKWLanguage_h
20 #define __vtkKWLanguage_h
21 
22 #include "vtkObject.h"
23 #include "vtkKWWidgets.h" // Needed for export symbols directives
24 
25 class KWWidgets_EXPORT vtkKWLanguage : public vtkObject
26 {
27 public:
28  static vtkKWLanguage* New();
29  vtkTypeRevisionMacro(vtkKWLanguage,vtkObject);
30  void PrintSelf(ostream& os, vtkIndent indent);
31 
32  // Description:
33  // List of languages IDs.
34  //BTX
35  enum
36  {
37  ABKHAZIAN = 0,
38  AFAR,
39  AFRIKAANS,
40  ALBANIAN,
41  AMHARIC,
42  ARABIC,
43  ARABIC_ALGERIA,
44  ARABIC_BAHRAIN,
45  ARABIC_EGYPT,
46  ARABIC_IRAQ,
47  ARABIC_JORDAN,
48  ARABIC_KUWAIT,
49  ARABIC_LEBANON,
50  ARABIC_LIBYA,
51  ARABIC_MOROCCO,
52  ARABIC_OMAN,
53  ARABIC_QATAR,
54  ARABIC_SAUDI_ARABIA,
55  ARABIC_SUDAN,
56  ARABIC_SYRIA,
57  ARABIC_TUNISIA,
58  ARABIC_UAE,
59  ARABIC_YEMEN,
60  ARMENIAN,
61  ASSAMESE,
62  AYMARA,
63  AZERI,
64  AZERI_CYRILLIC,
65  AZERI_LATIN,
66  BASHKIR,
67  BASQUE,
68  BELARUSIAN,
69  BENGALI,
70  BHUTANI,
71  BIHARI,
72  BISLAMA,
73  BRETON,
74  BULGARIAN,
75  BURMESE,
76  CAMBODIAN,
77  CATALAN,
78  CHINESE,
79  CHINESE_SIMPLIFIED,
80  CHINESE_TRADITIONAL,
81  CHINESE_HONGKONG,
82  CHINESE_MACAU,
83  CHINESE_SINGAPORE,
84  CHINESE_TAIWAN,
85  CORSICAN,
86  CROATIAN,
87  CZECH,
88  DANISH,
89  DUTCH,
90  DUTCH_BELGIAN,
91  ENGLISH,
92  ENGLISH_UK,
93  ENGLISH_US,
94  ENGLISH_AUSTRALIA,
95  ENGLISH_BELIZE,
96  ENGLISH_BOTSWANA,
97  ENGLISH_CANADA,
98  ENGLISH_CARIBBEAN,
99  ENGLISH_DENMARK,
100  ENGLISH_EIRE,
101  ENGLISH_JAMAICA,
102  ENGLISH_NEW_ZEALAND,
103  ENGLISH_PHILIPPINES,
104  ENGLISH_SOUTH_AFRICA,
105  ENGLISH_TRINIDAD,
106  ENGLISH_ZIMBABWE,
107  ESPERANTO,
108  ESTONIAN,
109  FAEROESE,
110  FARSI,
111  FIJI,
112  FINNISH,
113  FRENCH,
114  FRENCH_BELGIAN,
115  FRENCH_CANADIAN,
116  FRENCH_LUXEMBOURG,
117  FRENCH_MONACO,
118  FRENCH_SWISS,
119  FRISIAN,
120  GALICIAN,
121  GEORGIAN,
122  GERMAN,
123  GERMAN_AUSTRIAN,
124  GERMAN_BELGIUM,
125  GERMAN_LIECHTENSTEIN,
126  GERMAN_LUXEMBOURG,
127  GERMAN_SWISS,
128  GREEK,
129  GREENLANDIC,
130  GUARANI,
131  GUJARATI,
132  HAUSA,
133  HEBREW,
134  HINDI,
135  HUNGARIAN,
136  ICELANDIC,
137  INDONESIAN,
138  INTERLINGUA,
139  INTERLINGUE,
140  INUKTITUT,
141  INUPIAK,
142  IRISH,
143  ITALIAN,
144  ITALIAN_SWISS,
145  JAPANESE,
146  JAVANESE,
147  KANNADA,
148  KASHMIRI,
149  KASHMIRI_INDIA,
150  KAZAKH,
151  KERNEWEK,
152  KINYARWANDA,
153  KIRGHIZ,
154  KIRUNDI,
155  KONKANI,
156  KOREAN,
157  KURDISH,
158  LAOTHIAN,
159  LATIN,
160  LATVIAN,
161  LINGALA,
162  LITHUANIAN,
163  MACEDONIAN,
164  MALAGASY,
165  MALAY,
166  MALAYALAM,
167  MALAY_BRUNEI_DARUSSALAM,
168  MALAY_MALAYSIA,
169  MALTESE,
170  MANIPURI,
171  MAORI,
172  MARATHI,
173  MOLDAVIAN,
174  MONGOLIAN,
175  NAURU,
176  NEPALI,
177  NEPALI_INDIA,
178  NORWEGIAN_BOKMAL,
179  NORWEGIAN_NYNORSK,
180  OCCITAN,
181  ORIYA,
182  OROMO,
183  PASHTO,
184  POLISH,
185  PORTUGUESE,
186  PORTUGUESE_BRAZILIAN,
187  PUNJABI,
188  QUECHUA,
189  RHAETO_ROMANCE,
190  ROMANIAN,
191  RUSSIAN,
192  RUSSIAN_UKRAINE,
193  SAMOAN,
194  SANGHO,
195  SANSKRIT,
196  SCOTS_GAELIC,
197  SERBIAN,
198  SERBIAN_CYRILLIC,
199  SERBIAN_LATIN,
200  SERBO_CROATIAN,
201  SESOTHO,
202  SETSWANA,
203  SHONA,
204  SINDHI,
205  SINHALESE,
206  SISWATI,
207  SLOVAK,
208  SLOVENIAN,
209  SOMALI,
210  SPANISH,
211  SPANISH_ARGENTINA,
212  SPANISH_BOLIVIA,
213  SPANISH_CHILE,
214  SPANISH_COLOMBIA,
215  SPANISH_COSTA_RICA,
216  SPANISH_DOMINICAN_REPUBLIC,
217  SPANISH_ECUADOR,
218  SPANISH_EL_SALVADOR,
219  SPANISH_GUATEMALA,
220  SPANISH_HONDURAS,
221  SPANISH_MEXICAN,
222  SPANISH_MODERN,
223  SPANISH_NICARAGUA,
224  SPANISH_PANAMA,
225  SPANISH_PARAGUAY,
226  SPANISH_PERU,
227  SPANISH_PUERTO_RICO,
228  SPANISH_URUGUAY,
229  SPANISH_US,
230  SPANISH_VENEZUELA,
231  SUNDANESE,
232  SWAHILI,
233  SWEDISH,
234  SWEDISH_FINLAND,
235  TAGALOG,
236  TAJIK,
237  TAMIL,
238  TATAR,
239  TELUGU,
240  THAI,
241  TIBETAN,
242  TIGRINYA,
243  TONGA,
244  TSONGA,
245  TURKISH,
246  TURKMEN,
247  TWI,
248  UIGHUR,
249  UKRAINIAN,
250  URDU,
251  URDU_INDIA,
252  URDU_PAKISTAN,
253  UZBEK,
254  UZBEK_CYRILLIC,
255  UZBEK_LATIN,
256  VIETNAMESE,
257  VOLAPUK,
258  WELSH,
259  WOLOF,
260  XHOSA,
261  YIDDISH,
262  YORUBA,
263  ZHUANG,
264  ZULU,
265  UNKNOWN // should be the last one
266  };
267  //ETX
268 
269  // Description:
270  // Set/Get the current language. Setting the language is done by setting
271  // the LC_MESSAGES locale as well as setting the LC_MESSAGES environment
272  // variable. On Windows platform where LC_MESSAGES is not supported, a
273  // call to SetThreadLocale() will change the language accordingly.
274  static void SetCurrentLanguage(int lang);
275  static int GetCurrentLanguage();
276 
277  // Description:
278  // Get short English name of language (or NULL if unknown/error).
279  static const char* GetLanguageName(int lang);
280 
281  // Description:
282  // Get XPG syntax (language[_territory[.codeset]][@modifier]) from language.
283  // Return XPG description on success, NULL on error or if there is
284  // no known XPG syntax for this language ID.
285  static const char* GetXPGFromLanguage(int lang);
286 
287  // Description:
288  // Get language from XPG (language[_territory[.codeset]][@modifier]).
289  // Return language ID on success, vtkKWLanguage::UNKNOWN on error or if
290  // there is no known language ID for this XPG syntax.
291  static int GetLanguageFromXPG(const char *xpg);
292 
293  // Description:
294  // Get Win32 LANGID from language.
295  // Return the output of MAKELANGID using the primary and secondary
296  // language identifier corresponding to the language passed as parameter,
297  // or MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT) if no match was found.
298  // (note that MAKELANGID returns a WORD, which is cast here to an int
299  // for wrapping purposes).
300  static int GetWin32LANGIDFromLanguage(int lang);
301 
302  // Description:
303  // Get language from Win32 LANGID.
304  // Return the language id matching the Win32 primary and secondary language
305  // identifier that were output by MAKELANGID, or vtkKWLanguage::UNKNOWN on
306  // error or if there is no known language ID for this LANGID.
307  // (note that MAKELANGID returns a WORD, but it is accepted here as an int
308  // for wrapping purposes).
309  static int GetLanguageFromWin32LANGID(int win32langid);
310 
311 protected:
314 
315  // Description:
316  // Get language from XPG (language[_territory[.codeset]][@modifier]).
317  // Return language ID on success, vtkKWLanguage::UNKNOWN on error or if
318  // there is no known language ID for this XPG syntax.
319  // This is a stricter version GetLanguageFromXPG since it does not try
320  // to find the language if the territory was missing.
321  static int GetLanguageFromXPGStrict(const char *xpg);
322 
323 private:
324  vtkKWLanguage(const vtkKWLanguage&); // Not implemented
325  void operator=(const vtkKWLanguage&); // Not implemented
326 };
327 
328 #endif
329