hxlang.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:20k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35.  /***************************************************************************
  36.  
  37.  Abstraction:
  38.  Contains a listing of ISO-639 compliant langauge tags and their
  39.  equivalent LanguageID. Language & sub-language contants are defined
  40.  in "olenls.h", and this file maps langIDs to ISO-639 compliant tags.
  41.  THIS IS A STATIC LIBRARY, no need to instantiate objects from this
  42.  class.
  43.  This class defines a static array mapping ISO-639 language tags
  44.  language IDs. LangIDs are a 16bit number composing of a primary
  45.  langauge and a sub-language. For instance, the lang French-Canadian
  46.  would have a primary language of "French" and a sub-lang of
  47.  "Canadian". See "olenls.h" for more details on langIDs.
  48.  **************************************************************************
  49.  
  50.  To use this class, if you have a languageID and want to get it's
  51.  ISO-639 tag:
  52.      LANGID SomeLangID = MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH_GIBBERISH)
  53.      UINT16 nIndex = CHXLang::FindClosest( SomeLangID )
  54.  Now, since "LANG_FRENCH/SUBLANG_FRENCH_GIBBERISH" doesn't exist,
  55.  the FindClosest() function will return the closest matching language, 
  56.  mainly, French (LANG_FRENCH, SUBLANG_NEUTRAL).
  57.  If French didn't exist, then the function returns -1 as the index. If
  58.  we used "FindExact()" in the above example, we'd get -1 returned
  59.  since "LANG_FRENCH/SUBLANG_FRENCH_GIBBERISH" doesn't exist.
  60.  GetCount() returns the # of languages in the database.
  61.  A langauge index goes from 0 to GetCount()-1.
  62.  Once we have the index, we can get the ISO-639 tag using:
  63.      const char* szISOtag = CHXLang::GetISO639( nIndex );
  64.  
  65.  NULL is returned if the index is out-of-range. You can iterate all
  66.  the langauges in the database with:
  67.      for(UINT16 nIdx=0; nIdx < CHXLang::GetCount(); nIdx++)
  68.      {
  69.          printf("%d = %s n", nIdx, CHXLang::GetISO639(nIdx);
  70.      }
  71.  */
  72. #ifndef _RPLANG_H_
  73. #define _RPLANG_H_
  74. #ifdef _WINDOWS
  75. #   include <windows.h>
  76. #endif
  77. #include "hxtypes.h"
  78. #ifndef LANG_ENGLISH
  79. #define LANG_ENGLISH                     0x09
  80. #endif
  81. #ifndef SUBLANG_ENGLISH_US
  82. #define SUBLANG_ENGLISH_US               0x01
  83. #endif
  84. //We need to define a MAKELCID and MAKELANGID for non windows systems.
  85. #ifndef MAKELCID
  86. #define MAKELCID(a) ((UINT32)(((UINT8)(a)) | (((UINT32)((UINT8)(0))) << 16)))
  87. #endif
  88. #ifndef MAKELANGID
  89. #define MAKELANGID(a, b) ((((UINT8)(b))<<10) | (UINT8)(a))
  90. #endif
  91. #ifndef LANG_ARMENIAN
  92. #define LANG_ARMENIAN                    0x2b
  93. #endif
  94. #ifndef LANG_ASSAMESE
  95. #define LANG_ASSAMESE                    0x4d
  96. #endif
  97. #ifndef LANG_AZERI
  98. #define LANG_AZERI                       0x2c
  99. #endif
  100. #ifndef SUBLANG_AZERI_LATIN
  101. #define SUBLANG_AZERI_LATIN              0x01    // Azeri (Latin)
  102. #endif
  103. #ifndef SUBLANG_AZERI_CYRILLIC
  104. #define SUBLANG_AZERI_CYRILLIC           0x02    // Azeri (Cyrillic)
  105. #endif
  106. #ifndef LANG_BASQUE
  107. #define LANG_BASQUE                      0x2d
  108. #endif
  109. #ifndef LANG_BELARUSIAN
  110. #define LANG_BELARUSIAN                  0x23
  111. #endif
  112. #ifndef LANG_BENGALI
  113. #define LANG_BENGALI                     0x45
  114. #endif
  115. #ifndef SUBLANG_CHINESE_MACAU
  116. #define SUBLANG_CHINESE_MACAU            0x05    // Chinese (Macau)
  117. #endif
  118. #ifndef SUBLANG_ENGLISH_PHILIPPINES
  119. #define SUBLANG_ENGLISH_PHILIPPINES      0x0d    // English (Philippines)
  120. #endif
  121. #ifndef SUBLANG_ENGLISH_ZIMBABWE
  122. #define SUBLANG_ENGLISH_ZIMBABWE         0x0c    // English (Zimbabwe)
  123. #endif
  124. #ifndef LANG_FARSI
  125. #define LANG_FARSI                       0x29
  126. #endif
  127. #ifndef SUBLANG_FRENCH_MONACO
  128. #define SUBLANG_FRENCH_MONACO            0x06    // French (Monaco)
  129. #endif
  130. #ifndef LANG_MACEDONIAN
  131. #define LANG_MACEDONIAN                  0x2f
  132. #endif
  133. #ifndef LANG_GEORGIAN
  134. #define LANG_GEORGIAN                    0x37
  135. #endif
  136. #ifndef LANG_GUJARATI
  137. #define LANG_GUJARATI                    0x47
  138. #endif
  139. #ifndef LANG_HINDI
  140. #define LANG_HINDI                       0x39
  141. #endif
  142. #ifndef LANG_KANNADA
  143. #define LANG_KANNADA                     0x4b
  144. #endif
  145. #ifndef LANG_KAZAK
  146. #define LANG_KAZAK                       0x3f
  147. #endif
  148. #ifndef LANG_MALAY
  149. #define LANG_MALAY                       0x3e
  150. #endif
  151. #ifndef LANG_MALAYALAM
  152. #define LANG_MALAYALAM                   0x4c
  153. #endif
  154. #ifndef SUBLANG_MALAY_MALAYSIA
  155. #define SUBLANG_MALAY_MALAYSIA           0x01    // Malay (Malaysia)
  156. #endif
  157. #ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM
  158. #define SUBLANG_MALAY_BRUNEI_DARUSSALAM  0x02    // Malay (Brunei Darussalam)
  159. #endif
  160. #ifndef LANG_MARATHI
  161. #define LANG_MARATHI                     0x4e
  162. #endif
  163. #ifndef LANG_NEPALI
  164. #define LANG_NEPALI                      0x61
  165. #endif
  166. #ifndef LANG_ORIYA
  167. #define LANG_ORIYA                       0x48
  168. #endif
  169. #ifndef LANG_PUNJABI
  170. #define LANG_PUNJABI                     0x46
  171. #endif
  172. #ifndef LANG_SANSKRIT
  173. #define LANG_SANSKRIT                    0x4f
  174. #endif
  175. #ifndef LANG_SWAHILI
  176. #define LANG_SWAHILI                     0x41
  177. #endif
  178. #ifndef LANG_TAMIL
  179. #define LANG_TAMIL                       0x49
  180. #endif
  181. #ifndef LANG_TATAR
  182. #define LANG_TATAR                       0x44
  183. #endif
  184. #ifndef LANG_TELUGU
  185. #define LANG_TELUGU                      0x4a
  186. #endif
  187. #ifndef LANG_UZBEK
  188. #define LANG_UZBEK                       0x43
  189. #endif
  190. #ifndef SUBLANG_UZBEK_LATIN
  191. #define SUBLANG_UZBEK_LATIN              0x01    // Uzbek (Latin)
  192. #endif
  193. #ifndef SUBLANG_UZBEK_CYRILLIC
  194. #define SUBLANG_UZBEK_CYRILLIC           0x02    // Uzbek (Cyrillic)
  195. #endif
  196. #ifndef SUBLANG_SERBO_CROATIAN_LATIN
  197. #define SUBLANG_SERBO_CROATIAN_LATIN     0x01    /* Croato-Serbian (Latin) */
  198. #endif
  199. #ifndef LANG_URDU
  200. #define LANG_URDU                        0x20
  201. #endif
  202. typedef struct _HXLangMapping
  203.             {
  204.                 const char* szISO639;
  205.                 UINT16      nLangID;
  206.             } HXLangMapping;
  207.         
  208. class CHXLang
  209. {
  210. public:
  211.     // Given a languageID (defined in olenls.h), this returns the
  212.     // index of the exact language, or -1 if not found.
  213.     static INT16    FindExact(UINT16 nLangID);
  214.     static INT16    FindExact(const char* szISO639);
  215.     // Given a languageID (defined in olenls.h), this returns the
  216.     // index of the closest matching language, or -1
  217.     static INT16    FindClosest(UINT16 nLangID);
  218.     // Given an index from 0 to GetCount()-1 ...
  219.     static const char*  GetISO639(INT16 nIndex);
  220.     static UINT16   GetLangID(INT16 nIndex);
  221.     // Returns the # of langauges in the static database
  222.     static INT16    GetCount();
  223.     static BOOL IsValidIndex(INT16 nIdx) { return(nIdx>=0 && nIdx<GetCount()); }
  224.     
  225. private:
  226.     static const HXLangMapping Languages[];
  227. };
  228. #endif
  229. /*
  230.  
  231. "Afrikaans",                MAKELANGID(LANG_AFRIKAANS,SUBLANG_NEUTRAL)
  232. "Albanian",                 MAKELANGID(LANG_ALBANIAN,SUBLANG_NEUTRAL)
  233. "Arabic",                   MAKELANGID(LANG_ARABIC,SUBLANG_NEUTRAL)
  234. "Arabic-Algeria",           MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_ALGERIA)
  235. "Arabic-Bahrain",           MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_BAHRAIN)
  236. "Arabic-Egypt",             MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_EGYPT)
  237. "Arabic-Iraq",              MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_IRAQ)
  238. "Arabic-Jordan",            MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_JORDAN)                
  239. "Arabic-Kuwait",            MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_KUWAIT)                
  240. "Arabic-Lebanon",           MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_LEBANON)               
  241. "Arabic-Libya",             MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_LIBYA)                 
  242. "Arabic-Morocco",           MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_MOROCCO)               
  243. "Arabic-Oman",              MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_OMAN)                  
  244. "Arabic-Qatar",             MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_QATAR)                 
  245. "Arabic-Saudi Arabia",      MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_SAUDI_ARABIA)
  246. "Arabic-Syria",             MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_SYRIA)                 
  247. "Arabic-Tunisia",           MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_TUNISIA)               
  248. "Arabic-UAE",               MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_UAE)                   
  249. "Arabic-Yemen",             MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_YEMEN)                 
  250. "Basque",                   MAKELANGID(LANG_BASQUE,SUBLANG_NEUTRAL)                      
  251. "Bulgarian",                MAKELANGID(LANG_BULGARIAN,SUBLANG_NEUTRAL)                   
  252. "Catalan",                  MAKELANGID(LANG_CATALAN,SUBLANG_NEUTRAL)
  253. "Chinese",                     MAKELANGID(LANG_CHINESE,SUBLANG_NEUTRAL)
  254. "Chinese-China",            MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED)          
  255. "Chinese-Hong Kong",        MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_HONGKONG)  
  256. "Chinese-Singapore",        MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SINGAPORE)           
  257. "Chinese-Taiwan",           MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_TRADITIONAL)         
  258. "Croatian",                    MAKELANGID(LANG_CROATIAN,SUBLANG_NEUTRAL)
  259. "Czech",                       MAKELANGID(LANG_CZECH,SUBLANG_NEUTRAL)
  260. "Danish",                      MAKELANGID(LANG_DANISH,SUBLANG_NEUTRAL)                      
  261. "Dutch",                       MAKELANGID(LANG_DUTCH,SUBLANG_NEUTRAL)                       
  262. "Dutch-Belgian",            MAKELANGID(LANG_DUTCH,SUBLANG_DUTCH_BELGIAN)                 
  263. "English",                     MAKELANGID(LANG_ENGLISH,SUBLANG_NEUTRAL)                     
  264. "English-Australia",        MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_AUS)                 
  265. "English-Belize",           MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_BELIZE)              
  266. "English-Canada",           MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_CAN)                 
  267. "English-Caribbean",        MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_CARIBBEAN)           
  268. "English-Irish",            MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_EIRE)                
  269. "English-Jamaica",          MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_JAMAICA)             
  270. "English-New Zealand",      MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_NZ)        
  271. "English-South Africa",     MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_SOUTH_AFRICA)
  272. "English-Trinidad",         MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_TRINIDAD)            
  273. "English-UK",               MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_UK)                  
  274. "English-US",               MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US)                  
  275. "Estonian",                    MAKELANGID(LANG_ESTONIAN,SUBLANG_NEUTRAL)                    
  276. "Faroese",                     MAKELANGID(LANG_FAEROESE,SUBLANG_NEUTRAL)                    
  277. "Finnish",                     MAKELANGID(LANG_FINNISH,SUBLANG_NEUTRAL)                     
  278. "French",                  MAKELANGID(LANG_FRENCH,SUBLANG_NEUTRAL)                      
  279. "French-Belgian",           MAKELANGID(LANG_FRENCH,SUBLANG_FRENCH_BELGIAN)               
  280. "French-Canadian",          MAKELANGID(LANG_FRENCH,SUBLANG_FRENCH_CANADIAN)              
  281. "French-Luxembourg",    MAKELANGID(LANG_FRENCH,SUBLANG_FRENCH_LUXEMBOURG)            
  282. "French-Swiss",         MAKELANGID(LANG_FRENCH,SUBLANG_FRENCH_SWISS)                 
  283. "German",                  MAKELANGID(LANG_GERMAN,SUBLANG_NEUTRAL)                      
  284. "German-Austrian",      MAKELANGID(LANG_GERMAN,SUBLANG_GERMAN_AUSTRIAN)              
  285. "German-Liechtenstein", MAKELANGID(LANG_GERMAN,SUBLANG_GERMAN_LIECHTENSTEIN)         
  286. "German-Luxembourg",    MAKELANGID(LANG_GERMAN,SUBLANG_GERMAN_LUXEMBOURG)            
  287. "German-Swiss",         MAKELANGID(LANG_GERMAN,SUBLANG_GERMAN_SWISS)                 
  288. "Greek",                   MAKELANGID(LANG_GREEK,SUBLANG_NEUTRAL)                       
  289. "Hebrew",                  MAKELANGID(LANG_HEBREW,SUBLANG_NEUTRAL)                      
  290. "Hungarian",               MAKELANGID(LANG_HUNGARIAN,SUBLANG_NEUTRAL)                   
  291. "Icelandic",               MAKELANGID(LANG_ICELANDIC,SUBLANG_NEUTRAL)                   
  292. "Indonesian",              MAKELANGID(LANG_INDONESIAN,SUBLANG_NEUTRAL)                  
  293. "Italian",                 MAKELANGID(LANG_ITALIAN,SUBLANG_NEUTRAL)                     
  294. "Italian-Swiss",        MAKELANGID(LANG_ITALIAN,SUBLANG_ITALIAN_SWISS)               
  295. "Japanese",                MAKELANGID(LANG_JAPANESE,SUBLANG_NEUTRAL)                    
  296. "Korean",                  MAKELANGID(LANG_KOREAN,SUBLANG_NEUTRAL)                      
  297. "Korean-Johab",         MAKELANGID(LANG_KOREAN,SUBLANG_KOREAN_JOHAB)                 
  298. "Latvian",                 MAKELANGID(LANG_LATVIAN,SUBLANG_NEUTRAL)                     
  299. "Lithuanian",              MAKELANGID(LANG_LITHUANIAN,SUBLANG_NEUTRAL)                  
  300. "Norwegian",               MAKELANGID(LANG_NORWEGIAN,SUBLANG_NEUTRAL)                   
  301. "Polish",                  MAKELANGID(LANG_POLISH,SUBLANG_NEUTRAL)                      
  302. "Portuguese",              MAKELANGID(LANG_PORTUGUESE,SUBLANG_NEUTRAL)                  
  303. "Portuguese-Brazilian", MAKELANGID(LANG_PORTUGUESE,SUBLANG_PORTUGUESE_BRAZILIAN)     
  304. "Romanian",                MAKELANGID(LANG_ROMANIAN,SUBLANG_NEUTRAL)                    
  305. "Russian",                 MAKELANGID(LANG_RUSSIAN,SUBLANG_NEUTRAL)                     
  306. "Serbian",                 MAKELANGID(LANG_SERBIAN,SUBLANG_SERBIAN_CYRILLIC)                     
  307. "Slovak",                  MAKELANGID(LANG_SLOVAK,SUBLANG_NEUTRAL)                      
  308. "Slovenian",               MAKELANGID(LANG_SLOVENIAN,SUBLANG_NEUTRAL)                   
  309. "Spanish",                 MAKELANGID(LANG_SPANISH,SUBLANG_NEUTRAL)                     
  310. "Spanish-Argentina",    MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_ARGENTINA)                                                  
  311. "Spanish-Bolivia",      MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_BOLIVIA  )                                                  
  312. "Spanish-Chile",        MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_CHILE    )                                                  
  313. "Spanish-Colombia",     MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_COLOMBIA )                                                  
  314. "Spanish-Costa Rica",   MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_COSTA_RICA)
  315. "Spanish-Dominican Republic",MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_DOMINICAN_R)
  316. "Spanish-Ecuador",      MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_ECUADOR  )                                                  
  317. "Spanish-El Salvador",  MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_EL_SALVADOR)       
  318. "Spanish-Guatemala",    MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_GUATEMALA  )                                                  
  319. "Spanish-Honduras",     MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_HONDURAS )                                                  
  320. "Spanish-Mexican",      MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_MEXICAN    )                                                  
  321. "Spanish-Modern",       MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_MODERN     )                                                  
  322. "Spanish-Nicaragua",    MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_NICARAGUA)                                                  
  323. "Spanish-Panama",       MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_PANAMA     )                                                  
  324. "Spanish-Paraguay",     MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_PARAGUAY )                                                  
  325. "Spanish-Peru",         MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_PERU     )                                                  
  326. "Spanish-Puerto Rico",  MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_PUERTO_RICO)       
  327. "Spanish-Uruguay",      MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_URUGUAY  )                                                  
  328. "Spanish-Venezvela",    MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH_VENEZUELA)                                                  
  329. "Swedish",                 MAKELANGID(LANG_SWEDISH,SUBLANG_NEUTRAL)                     
  330. "Swedish-Finland",      MAKELANGID(LANG_SWEDISH,SUBLANG_SWEDISH_FINLAND)
  331. "Thai",                    MAKELANGID(LANG_THAI,SUBLANG_NEUTRAL)                        
  332. "Turkish",                 MAKELANGID(LANG_TURKISH,SUBLANG_NEUTRAL)                     
  333. "Ukrainian",               MAKELANGID(LANG_UKRAINIAN,SUBLANG_NEUTRAL)                   
  334. "Vietnamese",              MAKELANGID(LANG_VIETNAMESE,SUBLANG_NEUTRAL)                  
  335. */
  336. // These are known languages that we don't have lang ID's for, so for now
  337. // they aren't included in our master list.
  338. // "mk","Macedonian",                                                        
  339. // "mg","Malagasy",                                                          
  340. // "ms","Malay",                                                             
  341. // "ml","Maltese",                                                           
  342. // "mi","Maori",                                                             
  343. // "mr","Marathi",                                                           
  344. // "mo","Moldavian",                                                         
  345. // "mn","Mongolian",                                                         
  346. // "na","Nauru",                                                             
  347. // "ne","Nepali",                                                            
  348. // "or","Oriya",                                                             
  349. // "om","Oromo",                                                             
  350. // "pa","Panjabi",                                                           
  351. // "fa","Persian",                                                           
  352. // "ps","Pushto",                                                            
  353. // "qu","Quechua",                                                           
  354. // "rn","Rundi",                                                             
  355. // "sm","Samoan",                                                            
  356. // "sg","Sango",                                                             
  357. // "sa","Sanskrit",                                                          
  358. // "sn","Shona",                                                             
  359. // "sd","Sindhi",                                                            
  360. // "si","Singhalese",                                                        
  361. // "ss","Siswant",                                                           
  362. // "so","Somali",                                                            
  363. // "st","Sotho, Southern",                                          
  364. // 
  365.