1a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* Determine the current selected locale. 2b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o Copyright (C) 1995-1999, 2000-2004 Free Software Foundation, Inc. 3a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 4a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o This program is free software; you can redistribute it and/or modify it 5a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o under the terms of the GNU Library General Public License as published 6a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o by the Free Software Foundation; either version 2, or (at your option) 7a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o any later version. 8a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 9a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o This program is distributed in the hope that it will be useful, 10a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o but WITHOUT ANY WARRANTY; without even the implied warranty of 11a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o Library General Public License for more details. 13a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 14a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o You should have received a copy of the GNU Library General Public 15a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o License along with this program; if not, write to the Free Software 16a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 17a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o USA. */ 18a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 19a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* Written by Ulrich Drepper <drepper@gnu.org>, 1995. */ 20a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* Win32 code written by Tor Lillqvist <tml@iki.fi>. */ 21a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 22a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#ifdef HAVE_CONFIG_H 23a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# include <config.h> 24a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif 25a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 26a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#include <stdlib.h> 27a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#include <locale.h> 28a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 29a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#if defined _WIN32 || defined __WIN32__ 30a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# undef WIN32 /* avoid warning on mingw32 */ 31a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define WIN32 32a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif 33a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 34a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#ifdef WIN32 35a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define WIN32_LEAN_AND_MEAN 36a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# include <windows.h> 37b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o/* List of language codes, sorted by value: 38b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x01 LANG_ARABIC 39b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x02 LANG_BULGARIAN 40b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x03 LANG_CATALAN 41b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x04 LANG_CHINESE 42b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x05 LANG_CZECH 43b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x06 LANG_DANISH 44b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x07 LANG_GERMAN 45b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x08 LANG_GREEK 46b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x09 LANG_ENGLISH 47b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x0a LANG_SPANISH 48b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x0b LANG_FINNISH 49b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x0c LANG_FRENCH 50b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x0d LANG_HEBREW 51b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x0e LANG_HUNGARIAN 52b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x0f LANG_ICELANDIC 53b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x10 LANG_ITALIAN 54b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x11 LANG_JAPANESE 55b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x12 LANG_KOREAN 56b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x13 LANG_DUTCH 57b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x14 LANG_NORWEGIAN 58b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x15 LANG_POLISH 59b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x16 LANG_PORTUGUESE 60b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x17 LANG_RHAETO_ROMANCE 61b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x18 LANG_ROMANIAN 62b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x19 LANG_RUSSIAN 63b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x1a LANG_CROATIAN == LANG_SERBIAN 64b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x1b LANG_SLOVAK 65b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x1c LANG_ALBANIAN 66b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x1d LANG_SWEDISH 67b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x1e LANG_THAI 68b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x1f LANG_TURKISH 69b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x20 LANG_URDU 70b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x21 LANG_INDONESIAN 71b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x22 LANG_UKRAINIAN 72b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x23 LANG_BELARUSIAN 73b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x24 LANG_SLOVENIAN 74b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x25 LANG_ESTONIAN 75b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x26 LANG_LATVIAN 76b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x27 LANG_LITHUANIAN 77b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x28 LANG_TAJIK 78b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x29 LANG_FARSI 79b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x2a LANG_VIETNAMESE 80b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x2b LANG_ARMENIAN 81b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x2c LANG_AZERI 82b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x2d LANG_BASQUE 83b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x2e LANG_SORBIAN 84b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x2f LANG_MACEDONIAN 85b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x30 LANG_SUTU 86b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x31 LANG_TSONGA 87b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x32 LANG_TSWANA 88b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x33 LANG_VENDA 89b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x34 LANG_XHOSA 90b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x35 LANG_ZULU 91b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x36 LANG_AFRIKAANS 92b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x37 LANG_GEORGIAN 93b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x38 LANG_FAEROESE 94b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x39 LANG_HINDI 95b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x3a LANG_MALTESE 96b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x3b LANG_SAAMI 97b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x3c LANG_GAELIC 98b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x3d LANG_YIDDISH 99b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x3e LANG_MALAY 100b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x3f LANG_KAZAK 101b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x40 LANG_KYRGYZ 102b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x41 LANG_SWAHILI 103b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x42 LANG_TURKMEN 104b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x43 LANG_UZBEK 105b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x44 LANG_TATAR 106b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x45 LANG_BENGALI 107b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x46 LANG_PUNJABI 108b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x47 LANG_GUJARATI 109b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x48 LANG_ORIYA 110b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x49 LANG_TAMIL 111b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x4a LANG_TELUGU 112b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x4b LANG_KANNADA 113b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x4c LANG_MALAYALAM 114b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x4d LANG_ASSAMESE 115b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x4e LANG_MARATHI 116b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x4f LANG_SANSKRIT 117b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x50 LANG_MONGOLIAN 118b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x51 LANG_TIBETAN 119b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x52 LANG_WELSH 120b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x53 LANG_CAMBODIAN 121b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x54 LANG_LAO 122b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x55 LANG_BURMESE 123b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x56 LANG_GALICIAN 124b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x57 LANG_KONKANI 125b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x58 LANG_MANIPURI 126b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x59 LANG_SINDHI 127b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x5a LANG_SYRIAC 128b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x5b LANG_SINHALESE 129b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x5c LANG_CHEROKEE 130b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x5d LANG_INUKTITUT 131b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x5e LANG_AMHARIC 132b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x5f LANG_TAMAZIGHT 133b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x60 LANG_KASHMIRI 134b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x61 LANG_NEPALI 135b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x62 LANG_FRISIAN 136b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x63 LANG_PASHTO 137b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x64 LANG_TAGALOG 138b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x65 LANG_DIVEHI 139b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x66 LANG_EDO 140b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x67 LANG_FULFULDE 141b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x68 LANG_HAUSA 142b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x69 LANG_IBIBIO 143b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x6a LANG_YORUBA 144b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x70 LANG_IGBO 145b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x71 LANG_KANURI 146b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x72 LANG_OROMO 147b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x73 LANG_TIGRINYA 148b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x74 LANG_GUARANI 149b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x75 LANG_HAWAIIAN 150b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x76 LANG_LATIN 151b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x77 LANG_SOMALI 152b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x78 LANG_YI 153b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o 0x79 LANG_PAPIAMENTU 154b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o*/ 155a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* Mingw headers don't have latest language and sublanguage codes. */ 156a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_AFRIKAANS 157a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_AFRIKAANS 0x36 158a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 159a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_ALBANIAN 160a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_ALBANIAN 0x1c 161a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 162b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_AMHARIC 163b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_AMHARIC 0x5e 164b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 165a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_ARABIC 166a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_ARABIC 0x01 167a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 168a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_ARMENIAN 169a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_ARMENIAN 0x2b 170a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 171a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_ASSAMESE 172a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_ASSAMESE 0x4d 173a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 174a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_AZERI 175a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_AZERI 0x2c 176a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 177a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_BASQUE 178a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_BASQUE 0x2d 179a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 180a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_BELARUSIAN 181a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_BELARUSIAN 0x23 182a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 183a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_BENGALI 184a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_BENGALI 0x45 185a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 186b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_BURMESE 187b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_BURMESE 0x55 188b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 189b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_CAMBODIAN 190b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_CAMBODIAN 0x53 191b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 192a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_CATALAN 193a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_CATALAN 0x03 194a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 195b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_CHEROKEE 196b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_CHEROKEE 0x5c 197b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 198a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_DIVEHI 199a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_DIVEHI 0x65 200a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 201b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_EDO 202b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_EDO 0x66 203b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 204a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_ESTONIAN 205a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_ESTONIAN 0x25 206a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 207a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_FAEROESE 208a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_FAEROESE 0x38 209a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 210a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_FARSI 211a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_FARSI 0x29 212a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 213b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_FRISIAN 214b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_FRISIAN 0x62 215b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 216b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_FULFULDE 217b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_FULFULDE 0x67 218b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 219b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_GAELIC 220b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_GAELIC 0x3c 221b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 222a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_GALICIAN 223a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_GALICIAN 0x56 224a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 225a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_GEORGIAN 226a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_GEORGIAN 0x37 227a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 228b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_GUARANI 229b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_GUARANI 0x74 230b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 231a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_GUJARATI 232a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_GUJARATI 0x47 233a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 234b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_HAUSA 235b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_HAUSA 0x68 236b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 237b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_HAWAIIAN 238b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_HAWAIIAN 0x75 239b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 240a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_HEBREW 241a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_HEBREW 0x0d 242a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 243a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_HINDI 244a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_HINDI 0x39 245a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 246b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_IBIBIO 247b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_IBIBIO 0x69 248b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 249b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_IGBO 250b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_IGBO 0x70 251b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 252a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_INDONESIAN 253a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_INDONESIAN 0x21 254a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 255b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_INUKTITUT 256b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_INUKTITUT 0x5d 257b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 258a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_KANNADA 259a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_KANNADA 0x4b 260a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 261b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_KANURI 262b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_KANURI 0x71 263b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 264a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_KASHMIRI 265a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_KASHMIRI 0x60 266a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 267a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_KAZAK 268a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_KAZAK 0x3f 269a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 270a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_KONKANI 271a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_KONKANI 0x57 272a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 273a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_KYRGYZ 274a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_KYRGYZ 0x40 275a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 276b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_LAO 277b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_LAO 0x54 278b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 279b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_LATIN 280b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_LATIN 0x76 281b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 282a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_LATVIAN 283a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_LATVIAN 0x26 284a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 285a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_LITHUANIAN 286a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_LITHUANIAN 0x27 287a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 288a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_MACEDONIAN 289a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_MACEDONIAN 0x2f 290a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 291a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_MALAY 292a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_MALAY 0x3e 293a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 294a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_MALAYALAM 295a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_MALAYALAM 0x4c 296a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 297b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_MALTESE 298b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_MALTESE 0x3a 299b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 300a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_MANIPURI 301a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_MANIPURI 0x58 302a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 303a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_MARATHI 304a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_MARATHI 0x4e 305a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 306a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_MONGOLIAN 307a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_MONGOLIAN 0x50 308a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 309a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_NEPALI 310a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_NEPALI 0x61 311a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 312a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_ORIYA 313a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_ORIYA 0x48 314a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 315b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_OROMO 316b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_OROMO 0x72 317b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 318b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_PAPIAMENTU 319b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_PAPIAMENTU 0x79 320b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 321b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_PASHTO 322b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_PASHTO 0x63 323b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 324a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_PUNJABI 325a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_PUNJABI 0x46 326a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 327b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_RHAETO_ROMANCE 328b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_RHAETO_ROMANCE 0x17 329b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 330b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_SAAMI 331b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_SAAMI 0x3b 332b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 333a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_SANSKRIT 334a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_SANSKRIT 0x4f 335a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 336a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_SERBIAN 337a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_SERBIAN 0x1a 338a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 339a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_SINDHI 340a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_SINDHI 0x59 341a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 342b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_SINHALESE 343b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_SINHALESE 0x5b 344b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 345a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_SLOVAK 346a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_SLOVAK 0x1b 347a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 348b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_SOMALI 349b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_SOMALI 0x77 350b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 351a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_SORBIAN 352a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_SORBIAN 0x2e 353a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 354b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_SUTU 355b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_SUTU 0x30 356b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 357a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_SWAHILI 358a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_SWAHILI 0x41 359a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 360a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_SYRIAC 361a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_SYRIAC 0x5a 362a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 363b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_TAGALOG 364b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_TAGALOG 0x64 365b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 366b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_TAJIK 367b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_TAJIK 0x28 368b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 369b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_TAMAZIGHT 370b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_TAMAZIGHT 0x5f 371b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 372a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_TAMIL 373a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_TAMIL 0x49 374a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 375a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_TATAR 376a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_TATAR 0x44 377a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 378a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_TELUGU 379a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_TELUGU 0x4a 380a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 381a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_THAI 382a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_THAI 0x1e 383a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 384b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_TIBETAN 385b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_TIBETAN 0x51 386b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 387b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_TIGRINYA 388b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_TIGRINYA 0x73 389b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 390b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_TSONGA 391b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_TSONGA 0x31 392b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 393b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_TSWANA 394b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_TSWANA 0x32 395b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 396b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_TURKMEN 397b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_TURKMEN 0x42 398b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 399a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_UKRAINIAN 400a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_UKRAINIAN 0x22 401a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 402a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_URDU 403a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_URDU 0x20 404a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 405a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_UZBEK 406a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_UZBEK 0x43 407a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 408b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_VENDA 409b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_VENDA 0x33 410b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 411a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef LANG_VIETNAMESE 412a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define LANG_VIETNAMESE 0x2a 413a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 414b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_WELSH 415b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_WELSH 0x52 416b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 417b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_XHOSA 418b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_XHOSA 0x34 419b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 420b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_YI 421b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_YI 0x78 422b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 423b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_YIDDISH 424b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_YIDDISH 0x3d 425b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 426b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_YORUBA 427b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_YORUBA 0x6a 428b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 429b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef LANG_ZULU 430b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define LANG_ZULU 0x35 431b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 432a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_SAUDI_ARABIA 433a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 434a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 435a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_IRAQ 436a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_IRAQ 0x02 437a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 438a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_EGYPT 439a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_EGYPT 0x03 440a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 441a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_LIBYA 442a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_LIBYA 0x04 443a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 444a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_ALGERIA 445a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_ALGERIA 0x05 446a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 447a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_MOROCCO 448a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_MOROCCO 0x06 449a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 450a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_TUNISIA 451a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_TUNISIA 0x07 452a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 453a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_OMAN 454a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_OMAN 0x08 455a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 456a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_YEMEN 457a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_YEMEN 0x09 458a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 459a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_SYRIA 460a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_SYRIA 0x0a 461a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 462a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_JORDAN 463a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_JORDAN 0x0b 464a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 465a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_LEBANON 466a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_LEBANON 0x0c 467a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 468a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_KUWAIT 469a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_KUWAIT 0x0d 470a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 471a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_UAE 472a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_UAE 0x0e 473a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 474a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_BAHRAIN 475a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_BAHRAIN 0x0f 476a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 477a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ARABIC_QATAR 478a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ARABIC_QATAR 0x10 479a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 480a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_AZERI_LATIN 481a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_AZERI_LATIN 0x01 482a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 483a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_AZERI_CYRILLIC 484a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_AZERI_CYRILLIC 0x02 485a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 486b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_BENGALI_INDIA 487b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_BENGALI_INDIA 0x00 488b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 489b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_BENGALI_BANGLADESH 490b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_BENGALI_BANGLADESH 0x01 491b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 492a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_CHINESE_MACAU 493a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_CHINESE_MACAU 0x05 494a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 495a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA 496a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 497a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 498a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ENGLISH_JAMAICA 499a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ENGLISH_JAMAICA 0x08 500a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 501a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ENGLISH_CARIBBEAN 502a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ENGLISH_CARIBBEAN 0x09 503a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 504a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ENGLISH_BELIZE 505a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ENGLISH_BELIZE 0x0a 506a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 507a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ENGLISH_TRINIDAD 508a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ENGLISH_TRINIDAD 0x0b 509a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 510a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ENGLISH_ZIMBABWE 511a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ENGLISH_ZIMBABWE 0x0c 512a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 513a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_ENGLISH_PHILIPPINES 514a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_ENGLISH_PHILIPPINES 0x0d 515a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 516b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_ENGLISH_INDONESIA 517b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_ENGLISH_INDONESIA 0x0e 518b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 519b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_ENGLISH_HONGKONG 520b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_ENGLISH_HONGKONG 0x0f 521b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 522b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_ENGLISH_INDIA 523b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_ENGLISH_INDIA 0x10 524b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 525b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_ENGLISH_MALAYSIA 526b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_ENGLISH_MALAYSIA 0x11 527b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 528b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_ENGLISH_SINGAPORE 529b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_ENGLISH_SINGAPORE 0x12 530b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 531a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_FRENCH_LUXEMBOURG 532a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_FRENCH_LUXEMBOURG 0x05 533a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 534a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_FRENCH_MONACO 535a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_FRENCH_MONACO 0x06 536a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 537b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_FRENCH_WESTINDIES 538b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_FRENCH_WESTINDIES 0x07 539b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 540b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_FRENCH_REUNION 541b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_FRENCH_REUNION 0x08 542b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 543b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_FRENCH_CONGO 544b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_FRENCH_CONGO 0x09 545b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 546b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_FRENCH_SENEGAL 547b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_FRENCH_SENEGAL 0x0a 548b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 549b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_FRENCH_CAMEROON 550b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_FRENCH_CAMEROON 0x0b 551b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 552b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_FRENCH_COTEDIVOIRE 553b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c 554b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 555b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_FRENCH_MALI 556b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_FRENCH_MALI 0x0d 557b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 558b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_FRENCH_MOROCCO 559b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_FRENCH_MOROCCO 0x0e 560b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 561b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_FRENCH_HAITI 562b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_FRENCH_HAITI 0x0f 563b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 564a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_GERMAN_LUXEMBOURG 565a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_GERMAN_LUXEMBOURG 0x04 566a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 567a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_GERMAN_LIECHTENSTEIN 568a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 569a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 570a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_KASHMIRI_INDIA 571a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_KASHMIRI_INDIA 0x02 572a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 573a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_MALAY_MALAYSIA 574a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_MALAY_MALAYSIA 0x01 575a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 576a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM 577a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 578a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 579a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_NEPALI_INDIA 580a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_NEPALI_INDIA 0x02 581a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 582b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_PUNJABI_INDIA 583b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_PUNJABI_INDIA 0x00 584b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 585b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_PUNJABI_PAKISTAN 586b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_PUNJABI_PAKISTAN 0x01 587b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 588b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_ROMANIAN_ROMANIA 589b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_ROMANIAN_ROMANIA 0x00 590b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 591b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_ROMANIAN_MOLDOVA 592b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_ROMANIAN_MOLDOVA 0x01 593b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 594a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SERBIAN_LATIN 595a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SERBIAN_LATIN 0x02 596a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 597a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SERBIAN_CYRILLIC 598a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SERBIAN_CYRILLIC 0x03 599a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 600b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_SINDHI_INDIA 601b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_SINDHI_INDIA 0x00 602b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 603b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_SINDHI_PAKISTAN 604b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_SINDHI_PAKISTAN 0x01 605b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 606a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_GUATEMALA 607a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_GUATEMALA 0x04 608a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 609a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_COSTA_RICA 610a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_COSTA_RICA 0x05 611a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 612a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_PANAMA 613a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_PANAMA 0x06 614a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 615a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC 616a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 617a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 618a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_VENEZUELA 619a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_VENEZUELA 0x08 620a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 621a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_COLOMBIA 622a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_COLOMBIA 0x09 623a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 624a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_PERU 625a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_PERU 0x0a 626a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 627a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_ARGENTINA 628a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_ARGENTINA 0x0b 629a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 630a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_ECUADOR 631a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_ECUADOR 0x0c 632a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 633a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_CHILE 634a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_CHILE 0x0d 635a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 636a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_URUGUAY 637a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_URUGUAY 0x0e 638a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 639a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_PARAGUAY 640a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_PARAGUAY 0x0f 641a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 642a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_BOLIVIA 643a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_BOLIVIA 0x10 644a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 645a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_EL_SALVADOR 646a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_EL_SALVADOR 0x11 647a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 648a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_HONDURAS 649a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_HONDURAS 0x12 650a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 651a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_NICARAGUA 652a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_NICARAGUA 0x13 653a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 654a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SPANISH_PUERTO_RICO 655a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SPANISH_PUERTO_RICO 0x14 656a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 657a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_SWEDISH_FINLAND 658a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_SWEDISH_FINLAND 0x02 659a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 660b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_TAMAZIGHT_ARABIC 661b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_TAMAZIGHT_ARABIC 0x01 662b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 663b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_TAMAZIGHT_LATIN 664b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_TAMAZIGHT_LATIN 0x02 665b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 666b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_TIGRINYA_ETHIOPIA 667b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_TIGRINYA_ETHIOPIA 0x00 668b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 669b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# ifndef SUBLANG_TIGRINYA_ERITREA 670b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# define SUBLANG_TIGRINYA_ERITREA 0x01 671b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o# endif 672a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_URDU_PAKISTAN 673a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_URDU_PAKISTAN 0x01 674a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 675a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_URDU_INDIA 676a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_URDU_INDIA 0x02 677a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 678a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_UZBEK_LATIN 679a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_UZBEK_LATIN 0x01 680a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 681a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# ifndef SUBLANG_UZBEK_CYRILLIC 682a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define SUBLANG_UZBEK_CYRILLIC 0x02 683a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 684a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif 685a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 686a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* XPG3 defines the result of 'setlocale (category, NULL)' as: 687a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o "Directs 'setlocale()' to query 'category' and return the current 688a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o setting of 'local'." 689a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o However it does not specify the exact format. Neither do SUSV2 and 690a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o ISO C 99. So we can use this feature only on selected systems (e.g. 691a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o those using GNU C Library). */ 692a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2) 693a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# define HAVE_LOCALE_NULL 694a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif 695a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 696a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o/* Determine the current locale's name, and canonicalize it into XPG syntax 697a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o language[_territory[.codeset]][@modifier] 698a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o The codeset part in the result is not reliable; the locale_charset() 699a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o should be used for codeset information instead. 700a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o The result must not be freed; it is statically allocated. */ 701a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 702a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'oconst char * 703b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o_nl_locale_name (int category, const char *categoryname) 704a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o{ 705a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o const char *retval; 706a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 707a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#ifndef WIN32 708a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 709a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'. 710a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o On some systems this can be done by the 'setlocale' function itself. */ 711a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL 712a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o retval = setlocale (category, NULL); 713a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# else 714a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Setting of LC_ALL overwrites all other. */ 715a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o retval = getenv ("LC_ALL"); 716a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o if (retval == NULL || retval[0] == '\0') 717a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 718a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Next comes the name of the desired category. */ 719a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o retval = getenv (categoryname); 720a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o if (retval == NULL || retval[0] == '\0') 721a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 722a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Last possibility is the LANG environment variable. */ 723a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o retval = getenv ("LANG"); 724a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o if (retval == NULL || retval[0] == '\0') 725a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* We use C as the default domain. POSIX says this is 726a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o implementation defined. */ 727a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o retval = "C"; 728a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 729a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 730a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o# endif 731a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 732a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return retval; 733a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 734a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#else /* WIN32 */ 735a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 736a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Return an XPG style locale name language[_territory][@modifier]. 737a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o Don't even bother determining the codeset; it's not useful in this 738a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o context, because message catalogs are not specific to a single 739a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o codeset. */ 740a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 741a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o LCID lcid; 742a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o LANGID langid; 743a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o int primary, sub; 744a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 745a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Let the user override the system settings through environment 746a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o variables, as on POSIX systems. */ 747a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o retval = getenv ("LC_ALL"); 748a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o if (retval != NULL && retval[0] != '\0') 749a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return retval; 750a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o retval = getenv (categoryname); 751a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o if (retval != NULL && retval[0] != '\0') 752a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return retval; 753a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o retval = getenv ("LANG"); 754a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o if (retval != NULL && retval[0] != '\0') 755a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return retval; 756a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 757a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Use native Win32 API locale ID. */ 758a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o lcid = GetThreadLocale (); 759a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 760a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Strip off the sorting rules, keep only the language part. */ 761a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o langid = LANGIDFROMLCID (lcid); 762a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 763a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Split into language and territory part. */ 764a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o primary = PRIMARYLANGID (langid); 765a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o sub = SUBLANGID (langid); 766a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 767a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Dispatch on language. 768a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o See also http://www.unicode.org/unicode/onlinedat/languages.html . 769a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o For details about languages, see http://www.ethnologue.com/ . */ 770a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (primary) 771a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 772a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_AFRIKAANS: return "af_ZA"; 773a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_ALBANIAN: return "sq_AL"; 774b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_AMHARIC: return "am_ET"; 775a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_ARABIC: 776a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 777a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 778a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA"; 779a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_IRAQ: return "ar_IQ"; 780a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_EGYPT: return "ar_EG"; 781a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_LIBYA: return "ar_LY"; 782a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_ALGERIA: return "ar_DZ"; 783a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_MOROCCO: return "ar_MA"; 784a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_TUNISIA: return "ar_TN"; 785a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_OMAN: return "ar_OM"; 786a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_YEMEN: return "ar_YE"; 787a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_SYRIA: return "ar_SY"; 788a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_JORDAN: return "ar_JO"; 789a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_LEBANON: return "ar_LB"; 790a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_KUWAIT: return "ar_KW"; 791a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_UAE: return "ar_AE"; 792a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_BAHRAIN: return "ar_BH"; 793a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ARABIC_QATAR: return "ar_QA"; 794a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 795a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "ar"; 796a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_ARMENIAN: return "hy_AM"; 797a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_ASSAMESE: return "as_IN"; 798a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_AZERI: 799a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 800a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 801a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */ 802a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_AZERI_LATIN: return "az_AZ@latin"; 803a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic"; 804a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 805a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "az"; 806a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_BASQUE: 807a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */ 808a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_BELARUSIAN: return "be_BY"; 809b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_BENGALI: 810b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o switch (sub) 811b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o { 812b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_BENGALI_INDIA: return "bn_IN"; 813b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_BENGALI_BANGLADESH: return "bn_BD"; 814b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o } 815b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o return "bn"; 816a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_BULGARIAN: return "bg_BG"; 817b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_BURMESE: return "my_MM"; 818b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_CAMBODIAN: return "km_KH"; 819a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_CATALAN: return "ca_ES"; 820b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_CHEROKEE: return "chr_US"; 821a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_CHINESE: 822a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 823a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 824a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW"; 825a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN"; 826a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_CHINESE_HONGKONG: return "zh_HK"; 827a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_CHINESE_SINGAPORE: return "zh_SG"; 828a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_CHINESE_MACAU: return "zh_MO"; 829a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 830a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "zh"; 831a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN 832a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o * What used to be called Serbo-Croatian 833a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o * should really now be two separate 834a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o * languages because of political reasons. 835a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o * (Says tml, who knows nothing about Serbian 836a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o * or Croatian.) 837a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o * (I can feel those flames coming already.) 838a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o */ 839a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 840a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 841a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_DEFAULT: return "hr_HR"; 842b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_SERBIAN_LATIN: return "sr_CS"; 843b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic"; 844a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 845a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "hr"; 846a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_CZECH: return "cs_CZ"; 847a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_DANISH: return "da_DK"; 848b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_DIVEHI: return "dv_MV"; 849a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_DUTCH: 850a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 851a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 852a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_DUTCH: return "nl_NL"; 853a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE"; 854a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 855a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "nl"; 856b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_EDO: return "bin_NG"; 857a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_ENGLISH: 858a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 859a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 860a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought 861a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o * English was the language spoken in England. 862a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o * Oh well. 863a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o */ 864a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_US: return "en_US"; 865a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_UK: return "en_GB"; 866a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_AUS: return "en_AU"; 867a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_CAN: return "en_CA"; 868a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_NZ: return "en_NZ"; 869a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_EIRE: return "en_IE"; 870a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA"; 871a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_JAMAICA: return "en_JM"; 872a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */ 873a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_BELIZE: return "en_BZ"; 874a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_TRINIDAD: return "en_TT"; 875a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW"; 876a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH"; 877b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_ENGLISH_INDONESIA: return "en_ID"; 878b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_ENGLISH_HONGKONG: return "en_HK"; 879b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_ENGLISH_INDIA: return "en_IN"; 880b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_ENGLISH_MALAYSIA: return "en_MY"; 881b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_ENGLISH_SINGAPORE: return "en_SG"; 882a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 883a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "en"; 884a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_ESTONIAN: return "et_EE"; 885a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_FAEROESE: return "fo_FO"; 886a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_FARSI: return "fa_IR"; 887a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_FINNISH: return "fi_FI"; 888a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_FRENCH: 889a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 890a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 891a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_FRENCH: return "fr_FR"; 892a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE"; 893a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_FRENCH_CANADIAN: return "fr_CA"; 894a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_FRENCH_SWISS: return "fr_CH"; 895a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU"; 896a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_FRENCH_MONACO: return "fr_MC"; 897b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */ 898b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_FRENCH_REUNION: return "fr_RE"; 899b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_FRENCH_CONGO: return "fr_CG"; 900b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_FRENCH_SENEGAL: return "fr_SN"; 901b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_FRENCH_CAMEROON: return "fr_CM"; 902b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI"; 903b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_FRENCH_MALI: return "fr_ML"; 904b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_FRENCH_MOROCCO: return "fr_MA"; 905b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_FRENCH_HAITI: return "fr_HT"; 906a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 907a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "fr"; 908b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_FRISIAN: return "fy_NL"; 909b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_FULFULDE: 910b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */ 911b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o return "ff_NG"; 912b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_GAELIC: 913a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 914a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 915a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case 0x01: /* SCOTTISH */ return "gd_GB"; 916a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case 0x02: /* IRISH */ return "ga_IE"; 917a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 918a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "C"; 919a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_GALICIAN: return "gl_ES"; 920a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_GEORGIAN: return "ka_GE"; 921a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_GERMAN: 922a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 923a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 924a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_GERMAN: return "de_DE"; 925a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_GERMAN_SWISS: return "de_CH"; 926a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_GERMAN_AUSTRIAN: return "de_AT"; 927a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU"; 928a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI"; 929a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 930a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "de"; 931a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_GREEK: return "el_GR"; 932b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_GUARANI: return "gn_PY"; 933a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_GUJARATI: return "gu_IN"; 934b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_HAUSA: return "ha_NG"; 935b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_HAWAIIAN: 936a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers) 937a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o or Hawaii Creole English ("cpe_US", 600000 speakers)? */ 938a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "cpe_US"; 939a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_HEBREW: return "he_IL"; 940a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_HINDI: return "hi_IN"; 941a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_HUNGARIAN: return "hu_HU"; 942b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_IBIBIO: return "nic_NG"; 943a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_ICELANDIC: return "is_IS"; 944b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_IGBO: return "ig_NG"; 945a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_INDONESIAN: return "id_ID"; 946b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_INUKTITUT: return "iu_CA"; 947a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_ITALIAN: 948a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 949a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 950a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ITALIAN: return "it_IT"; 951a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_ITALIAN_SWISS: return "it_CH"; 952a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 953a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "it"; 954a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_JAPANESE: return "ja_JP"; 955a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_KANNADA: return "kn_IN"; 956b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_KANURI: return "kr_NG"; 957a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_KASHMIRI: 958a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 959a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 960a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_DEFAULT: return "ks_PK"; 961a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_KASHMIRI_INDIA: return "ks_IN"; 962a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 963a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "ks"; 964a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_KAZAK: return "kk_KZ"; 965a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_KONKANI: 966a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* FIXME: Adjust this when such locales appear on Unix. */ 967a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "kok_IN"; 968a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_KOREAN: return "ko_KR"; 969a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_KYRGYZ: return "ky_KG"; 970b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_LAO: return "lo_LA"; 971b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_LATIN: return "la_VA"; 972a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_LATVIAN: return "lv_LV"; 973a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_LITHUANIAN: return "lt_LT"; 974a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_MACEDONIAN: return "mk_MK"; 975a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_MALAY: 976a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 977a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 978a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_MALAY_MALAYSIA: return "ms_MY"; 979a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN"; 980a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 981a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "ms"; 982a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_MALAYALAM: return "ml_IN"; 983b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_MALTESE: return "mt_MT"; 984a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_MANIPURI: 985a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* FIXME: Adjust this when such locales appear on Unix. */ 986a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "mni_IN"; 987a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_MARATHI: return "mr_IN"; 988a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_MONGOLIAN: 989a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */ 990a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_NEPALI: 991a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 992a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 993a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_DEFAULT: return "ne_NP"; 994a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_NEPALI_INDIA: return "ne_IN"; 995a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 996a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "ne"; 997a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_NORWEGIAN: 998a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 999a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 1000a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO"; 1001a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO"; 1002a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 1003a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "no"; 1004a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_ORIYA: return "or_IN"; 1005b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_OROMO: return "om_ET"; 1006b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_PAPIAMENTU: return "pap_AN"; 1007b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_PASHTO: 1008a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */ 1009a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_POLISH: return "pl_PL"; 1010a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_PORTUGUESE: 1011a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 1012a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 1013a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_PORTUGUESE: return "pt_PT"; 1014a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT. 1015a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */ 1016a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR"; 1017a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 1018a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "pt"; 1019b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_PUNJABI: 1020b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o switch (sub) 1021b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o { 1022b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */ 1023b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */ 1024b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o } 1025b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o return "pa"; 1026b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_RHAETO_ROMANCE: return "rm_CH"; 1027b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_ROMANIAN: 1028b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o switch (sub) 1029b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o { 1030b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO"; 1031b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD"; 1032b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o } 1033b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o return "ro"; 1034a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_RUSSIAN: 1035b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */ 1036b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_SAAMI: /* actually Northern Sami */ return "se_NO"; 1037a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_SANSKRIT: return "sa_IN"; 1038b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_SINDHI: 1039b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o switch (sub) 1040b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o { 1041b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_SINDHI_INDIA: return "sd_IN"; 1042b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_SINDHI_PAKISTAN: return "sd_PK"; 1043b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o } 1044b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o return "sd"; 1045b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_SINHALESE: return "si_LK"; 1046a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_SLOVAK: return "sk_SK"; 1047a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_SLOVENIAN: return "sl_SI"; 1048b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_SOMALI: return "so_SO"; 1049a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_SORBIAN: 1050a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o /* FIXME: Adjust this when such locales appear on Unix. */ 1051a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "wen_DE"; 1052a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_SPANISH: 1053a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 1054a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 1055a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH: return "es_ES"; 1056a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_MEXICAN: return "es_MX"; 1057a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_MODERN: 1058a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "es_ES@modern"; /* not seen on Unix */ 1059a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_GUATEMALA: return "es_GT"; 1060a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_COSTA_RICA: return "es_CR"; 1061a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_PANAMA: return "es_PA"; 1062a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO"; 1063a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_VENEZUELA: return "es_VE"; 1064a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_COLOMBIA: return "es_CO"; 1065a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_PERU: return "es_PE"; 1066a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_ARGENTINA: return "es_AR"; 1067a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_ECUADOR: return "es_EC"; 1068a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_CHILE: return "es_CL"; 1069a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_URUGUAY: return "es_UY"; 1070a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_PARAGUAY: return "es_PY"; 1071a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_BOLIVIA: return "es_BO"; 1072a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV"; 1073a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_HONDURAS: return "es_HN"; 1074a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_NICARAGUA: return "es_NI"; 1075a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR"; 1076a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 1077a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "es"; 1078b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */ 1079a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_SWAHILI: return "sw_KE"; 1080a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_SWEDISH: 1081a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 1082a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 1083a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_DEFAULT: return "sv_SE"; 1084a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_SWEDISH_FINLAND: return "sv_FI"; 1085a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 1086a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "sv"; 1087a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */ 1088b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_TAGALOG: return "tl_PH"; 1089b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_TAJIK: return "tg_TJ"; 1090b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_TAMAZIGHT: 1091b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o switch (sub) 1092b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o { 1093b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o /* FIXME: Adjust this when Tamazight locales appear on Unix. */ 1094b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic"; 1095b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_TAMAZIGHT_LATIN: return "ber_MA@latin"; 1096b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o } 1097b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o return "ber_MA"; 1098a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_TAMIL: 1099a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */ 1100a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_TATAR: return "tt_RU"; 1101a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_TELUGU: return "te_IN"; 1102a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_THAI: return "th_TH"; 1103b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_TIBETAN: return "bo_CN"; 1104b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_TIGRINYA: 1105b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o switch (sub) 1106b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o { 1107b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET"; 1108b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_TIGRINYA_ERITREA: return "ti_ER"; 1109b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o } 1110b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o return "ti"; 1111b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_TSONGA: return "ts_ZA"; 1112b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_TSWANA: return "tn_BW"; 1113a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_TURKISH: return "tr_TR"; 1114b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_TURKMEN: return "tk_TM"; 1115a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_UKRAINIAN: return "uk_UA"; 1116a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_URDU: 1117a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 1118a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 1119a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_URDU_PAKISTAN: return "ur_PK"; 1120a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_URDU_INDIA: return "ur_IN"; 1121a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 1122a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "ur"; 1123a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_UZBEK: 1124a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o switch (sub) 1125a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o { 1126b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case SUBLANG_UZBEK_LATIN: return "uz_UZ"; 1127a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic"; 1128a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 1129a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o return "uz"; 1130b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_VENDA: return "ve_ZA"; 1131a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o case LANG_VIETNAMESE: return "vi_VN"; 1132b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_WELSH: return "cy_GB"; 1133b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_XHOSA: return "xh_ZA"; 1134b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_YI: return "sit_CN"; 1135b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_YIDDISH: return "yi_IL"; 1136b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_YORUBA: return "yo_NG"; 1137b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o case LANG_ZULU: return "zu_ZA"; 1138a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o default: return "C"; 1139a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o } 1140a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o 1141a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif 1142a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o} 1143