KWWidgets
|
00001 /*========================================================================= 00002 00003 Module: $RCSfile: vtkKWLanguage.h,v $ 00004 00005 Copyright (c) Kitware, Inc. 00006 All rights reserved. 00007 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00008 00009 This software is distributed WITHOUT ANY WARRANTY; without even 00010 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00011 PURPOSE. See the above copyright notice for more information. 00012 00013 =========================================================================*/ 00014 // .NAME vtkKWLanguage - language support. 00015 // .SECTION Description 00016 // vtkKWLanguage provides methods to refer to common languages, as well 00017 // as set the current language. 00018 00019 #ifndef __vtkKWLanguage_h 00020 #define __vtkKWLanguage_h 00021 00022 #include "vtkObject.h" 00023 #include "vtkKWWidgets.h" // Needed for export symbols directives 00024 00025 class KWWidgets_EXPORT vtkKWLanguage : public vtkObject 00026 { 00027 public: 00028 static vtkKWLanguage* New(); 00029 vtkTypeRevisionMacro(vtkKWLanguage,vtkObject); 00030 void PrintSelf(ostream& os, vtkIndent indent); 00031 00032 // Description: 00033 // List of languages IDs. 00034 //BTX 00035 enum 00036 { 00037 ABKHAZIAN = 0, 00038 AFAR, 00039 AFRIKAANS, 00040 ALBANIAN, 00041 AMHARIC, 00042 ARABIC, 00043 ARABIC_ALGERIA, 00044 ARABIC_BAHRAIN, 00045 ARABIC_EGYPT, 00046 ARABIC_IRAQ, 00047 ARABIC_JORDAN, 00048 ARABIC_KUWAIT, 00049 ARABIC_LEBANON, 00050 ARABIC_LIBYA, 00051 ARABIC_MOROCCO, 00052 ARABIC_OMAN, 00053 ARABIC_QATAR, 00054 ARABIC_SAUDI_ARABIA, 00055 ARABIC_SUDAN, 00056 ARABIC_SYRIA, 00057 ARABIC_TUNISIA, 00058 ARABIC_UAE, 00059 ARABIC_YEMEN, 00060 ARMENIAN, 00061 ASSAMESE, 00062 AYMARA, 00063 AZERI, 00064 AZERI_CYRILLIC, 00065 AZERI_LATIN, 00066 BASHKIR, 00067 BASQUE, 00068 BELARUSIAN, 00069 BENGALI, 00070 BHUTANI, 00071 BIHARI, 00072 BISLAMA, 00073 BRETON, 00074 BULGARIAN, 00075 BURMESE, 00076 CAMBODIAN, 00077 CATALAN, 00078 CHINESE, 00079 CHINESE_SIMPLIFIED, 00080 CHINESE_TRADITIONAL, 00081 CHINESE_HONGKONG, 00082 CHINESE_MACAU, 00083 CHINESE_SINGAPORE, 00084 CHINESE_TAIWAN, 00085 CORSICAN, 00086 CROATIAN, 00087 CZECH, 00088 DANISH, 00089 DUTCH, 00090 DUTCH_BELGIAN, 00091 ENGLISH, 00092 ENGLISH_UK, 00093 ENGLISH_US, 00094 ENGLISH_AUSTRALIA, 00095 ENGLISH_BELIZE, 00096 ENGLISH_BOTSWANA, 00097 ENGLISH_CANADA, 00098 ENGLISH_CARIBBEAN, 00099 ENGLISH_DENMARK, 00100 ENGLISH_EIRE, 00101 ENGLISH_JAMAICA, 00102 ENGLISH_NEW_ZEALAND, 00103 ENGLISH_PHILIPPINES, 00104 ENGLISH_SOUTH_AFRICA, 00105 ENGLISH_TRINIDAD, 00106 ENGLISH_ZIMBABWE, 00107 ESPERANTO, 00108 ESTONIAN, 00109 FAEROESE, 00110 FARSI, 00111 FIJI, 00112 FINNISH, 00113 FRENCH, 00114 FRENCH_BELGIAN, 00115 FRENCH_CANADIAN, 00116 FRENCH_LUXEMBOURG, 00117 FRENCH_MONACO, 00118 FRENCH_SWISS, 00119 FRISIAN, 00120 GALICIAN, 00121 GEORGIAN, 00122 GERMAN, 00123 GERMAN_AUSTRIAN, 00124 GERMAN_BELGIUM, 00125 GERMAN_LIECHTENSTEIN, 00126 GERMAN_LUXEMBOURG, 00127 GERMAN_SWISS, 00128 GREEK, 00129 GREENLANDIC, 00130 GUARANI, 00131 GUJARATI, 00132 HAUSA, 00133 HEBREW, 00134 HINDI, 00135 HUNGARIAN, 00136 ICELANDIC, 00137 INDONESIAN, 00138 INTERLINGUA, 00139 INTERLINGUE, 00140 INUKTITUT, 00141 INUPIAK, 00142 IRISH, 00143 ITALIAN, 00144 ITALIAN_SWISS, 00145 JAPANESE, 00146 JAVANESE, 00147 KANNADA, 00148 KASHMIRI, 00149 KASHMIRI_INDIA, 00150 KAZAKH, 00151 KERNEWEK, 00152 KINYARWANDA, 00153 KIRGHIZ, 00154 KIRUNDI, 00155 KONKANI, 00156 KOREAN, 00157 KURDISH, 00158 LAOTHIAN, 00159 LATIN, 00160 LATVIAN, 00161 LINGALA, 00162 LITHUANIAN, 00163 MACEDONIAN, 00164 MALAGASY, 00165 MALAY, 00166 MALAYALAM, 00167 MALAY_BRUNEI_DARUSSALAM, 00168 MALAY_MALAYSIA, 00169 MALTESE, 00170 MANIPURI, 00171 MAORI, 00172 MARATHI, 00173 MOLDAVIAN, 00174 MONGOLIAN, 00175 NAURU, 00176 NEPALI, 00177 NEPALI_INDIA, 00178 NORWEGIAN_BOKMAL, 00179 NORWEGIAN_NYNORSK, 00180 OCCITAN, 00181 ORIYA, 00182 OROMO, 00183 PASHTO, 00184 POLISH, 00185 PORTUGUESE, 00186 PORTUGUESE_BRAZILIAN, 00187 PUNJABI, 00188 QUECHUA, 00189 RHAETO_ROMANCE, 00190 ROMANIAN, 00191 RUSSIAN, 00192 RUSSIAN_UKRAINE, 00193 SAMOAN, 00194 SANGHO, 00195 SANSKRIT, 00196 SCOTS_GAELIC, 00197 SERBIAN, 00198 SERBIAN_CYRILLIC, 00199 SERBIAN_LATIN, 00200 SERBO_CROATIAN, 00201 SESOTHO, 00202 SETSWANA, 00203 SHONA, 00204 SINDHI, 00205 SINHALESE, 00206 SISWATI, 00207 SLOVAK, 00208 SLOVENIAN, 00209 SOMALI, 00210 SPANISH, 00211 SPANISH_ARGENTINA, 00212 SPANISH_BOLIVIA, 00213 SPANISH_CHILE, 00214 SPANISH_COLOMBIA, 00215 SPANISH_COSTA_RICA, 00216 SPANISH_DOMINICAN_REPUBLIC, 00217 SPANISH_ECUADOR, 00218 SPANISH_EL_SALVADOR, 00219 SPANISH_GUATEMALA, 00220 SPANISH_HONDURAS, 00221 SPANISH_MEXICAN, 00222 SPANISH_MODERN, 00223 SPANISH_NICARAGUA, 00224 SPANISH_PANAMA, 00225 SPANISH_PARAGUAY, 00226 SPANISH_PERU, 00227 SPANISH_PUERTO_RICO, 00228 SPANISH_URUGUAY, 00229 SPANISH_US, 00230 SPANISH_VENEZUELA, 00231 SUNDANESE, 00232 SWAHILI, 00233 SWEDISH, 00234 SWEDISH_FINLAND, 00235 TAGALOG, 00236 TAJIK, 00237 TAMIL, 00238 TATAR, 00239 TELUGU, 00240 THAI, 00241 TIBETAN, 00242 TIGRINYA, 00243 TONGA, 00244 TSONGA, 00245 TURKISH, 00246 TURKMEN, 00247 TWI, 00248 UIGHUR, 00249 UKRAINIAN, 00250 URDU, 00251 URDU_INDIA, 00252 URDU_PAKISTAN, 00253 UZBEK, 00254 UZBEK_CYRILLIC, 00255 UZBEK_LATIN, 00256 VIETNAMESE, 00257 VOLAPUK, 00258 WELSH, 00259 WOLOF, 00260 XHOSA, 00261 YIDDISH, 00262 YORUBA, 00263 ZHUANG, 00264 ZULU, 00265 UNKNOWN // should be the last one 00266 }; 00267 //ETX 00268 00269 // Description: 00270 // Set/Get the current language. Setting the language is done by setting 00271 // the LC_MESSAGES locale as well as setting the LC_MESSAGES environment 00272 // variable. On Windows platform where LC_MESSAGES is not supported, a 00273 // call to SetThreadLocale() will change the language accordingly. 00274 static void SetCurrentLanguage(int lang); 00275 static int GetCurrentLanguage(); 00276 00277 // Description: 00278 // Get short English name of language (or NULL if unknown/error). 00279 static const char* GetLanguageName(int lang); 00280 00281 // Description: 00282 // Get XPG syntax (language[_territory[.codeset]][@modifier]) from language. 00283 // Return XPG description on success, NULL on error or if there is 00284 // no known XPG syntax for this language ID. 00285 static const char* GetXPGFromLanguage(int lang); 00286 00287 // Description: 00288 // Get language from XPG (language[_territory[.codeset]][@modifier]). 00289 // Return language ID on success, vtkKWLanguage::UNKNOWN on error or if 00290 // there is no known language ID for this XPG syntax. 00291 static int GetLanguageFromXPG(const char *xpg); 00292 00293 // Description: 00294 // Get Win32 LANGID from language. 00295 // Return the output of MAKELANGID using the primary and secondary 00296 // language identifier corresponding to the language passed as parameter, 00297 // or MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT) if no match was found. 00298 // (note that MAKELANGID returns a WORD, which is cast here to an int 00299 // for wrapping purposes). 00300 static int GetWin32LANGIDFromLanguage(int lang); 00301 00302 // Description: 00303 // Get language from Win32 LANGID. 00304 // Return the language id matching the Win32 primary and secondary language 00305 // identifier that were output by MAKELANGID, or vtkKWLanguage::UNKNOWN on 00306 // error or if there is no known language ID for this LANGID. 00307 // (note that MAKELANGID returns a WORD, but it is accepted here as an int 00308 // for wrapping purposes). 00309 static int GetLanguageFromWin32LANGID(int win32langid); 00310 00311 protected: 00312 vtkKWLanguage() {}; 00313 ~vtkKWLanguage() {}; 00314 00315 // Description: 00316 // Get language from XPG (language[_territory[.codeset]][@modifier]). 00317 // Return language ID on success, vtkKWLanguage::UNKNOWN on error or if 00318 // there is no known language ID for this XPG syntax. 00319 // This is a stricter version GetLanguageFromXPG since it does not try 00320 // to find the language if the territory was missing. 00321 static int GetLanguageFromXPGStrict(const char *xpg); 00322 00323 private: 00324 vtkKWLanguage(const vtkKWLanguage&); // Not implemented 00325 void operator=(const vtkKWLanguage&); // Not implemented 00326 }; 00327 00328 #endif 00329