1996.12.19 | Mark Davis | First version |
1997.04.14 | Mark Davis | Updates based on feedback from Michael Everson |
1997.07.08 | Mark Davis | Updates from K.D. Chang (Microsoft) |
2001.07.16 | Michael S. Kaplan | Updates from Microsoft and Apple for new languages |
2002.09.16 | Magda Danish | Updates from ISO 639-2 Change Notices |
The following is a draft list of language code correspondences between ISO codes, Microsoft codes, and Macintosh codes. (USMARC language and country codes are not included in this list).
The correspondences are not 1-1. Macintosh codes sometimes have two variants, depending on the script the language is written. In such cases, the script is indicated in parantheses in the name (where not clear from the name itself), with a one-letter abbreviation on the code. Similarly, Microsoft codes are sometimes not script-specific and in cases where a language is not really properly identified without this information, the script information appears as well.
Macintosh constants and codes are defined in enumerations in the Mac header file Script.h and Windows constants and codes are defined in the Platform SDK header file winnt.h. Note that many of the Microsoft codes have no "Windows Name" constant (these are marked "(no constant defined)" and refer to codes that have been reserved for the languages in question. For more information about the LCID (Locale ID) parameter (of which the PRIMARY_LANGID codes given below are merely a part), see the Microsoft Platform SDK docs.
Unfortunately, ISO codes are not stable, and have changed over time. There are currently three languages with multiple codes (for Hebrew, Indonesian, and Yiddish). So that you can communicate both with new and old software, one strategy is the following:
- When reading: always read and interpret both of the variants
- When writing: write the second, (oldest) one - marked with an asterisk - for legacy applications that cannot manage correctly the new standard code or for classes of applications for which you are not certain that they can use the new standard. All applications, file formats and protocols specified after 1995 should work with the new standard code (this will include all XML and HTML4.01 applications, and all applications that can use version 3.0 of the Unicode standard)
If you find an error in this information, please contact the Unicode office. Please note, however, that the Unicode Consortium does not own or maintain ISO 639 and neither bears responsibility for its contents nor has the ability to change them. Please do not contact the Unicode Consortium if the ISO 639 language names are not what you believe they should be. Similarly, the Unicode is not responsible for the names or codes used by Microsoft or Macintosh.
Language | ISO Code | Windows Name | Win Code | Mac Name | Mac Code |
---|---|---|---|---|---|
Abkhazian | ab | ||||
Afar | aa | ||||
Afrikaans | af | LANG_AFRIKAANS | 0x36 | langAfricaans | 141 |
Albanian | sq | LANG_ALBANIAN | 0x1c | langAlbanian | 36 |
Amharic | am | (no constant defined) | 0x5e | langAmharic | 85 |
Arabic | ar | LANG_ARABIC | 0x01 | langArabic | 12 |
Armenian | hy | LANG_ARMENIAN | 0x2b | langArmenian | 51 |
Assamese | as | LANG_ASSAMESE | 0x4d | langAssamese | 68 |
Aymara | ay | langAymara | 134 | ||
Azerbaijani | az | LANG_AZERI | 0x2c | langAzerbaijani(Cyrllic), langAzerbaijanAr(Arabic) | 49(C), 50(A) |
Bashkir | ba | ||||
Basque | eu | LANG_BASQUE | 0x2d | langBasque | 129 |
Bengali (Bangla) | bn | LANG_BENGALI | 0x45 | langBengali | 67 |
Bhutani | dz | langDzongkha | 137 | ||
Bihari | bh | ||||
Bislama | bi | ||||
Breton | br | langBreton | 142 | ||
Bulgarian | bg | LANG_BULGARIAN | 0x02 | langBulgarian | 44 |
Burmese | my | (no constant defined) | 0x55 | langBurmese | 77 |
Byelorussian (Belarusian) | be | LANG_BELARUSIAN | 0x23 | langByelorussian | 46 |
Cambodian | km | (no constant defined) | 0x53 | langKhmer | 78 |
Catalan | ca | LANG_CATALAN | 0x03 | langCatalan | 130 |
Cherokee | (no constant defined) | 0x5c | |||
Chewa | langChewa | 92 | |||
Chinese (Simplified) | zh | LANG_CHINESE (SUBLANG_CHINESE_SIMPLIFIED) | 0x04 (0x0804) | langSimpChinese | 33 |
Chinese (Traditional) | zh | LANG_CHINESE (SUBLANG_CHINESE_TRADITIONAL) | 0x04 (0x0404) | langTradChinese | 19 |
Corsican | co | ||||
Croatian | hr | LANG_CROATIAN | 0x1a | langCroatian | 18 |
Czech | cs | LANG_CZECH | 0x05 | langCzech | 38 |
Danish | da | LANG_DANISH | 0x06 | langDanish | 7 |
Divehi | LANG_DIVEHI | 0x65 | |||
Dutch | nl | LANG_DUTCH | 0x13 | langDutch | 4 |
Edo | (no constant defined) | 0x66 | |||
English | en | LANG_ENGLISH | 0x09 | langEnglish | 0 |
Esperanto | eo | langEsperanto | 94 | ||
Estonian | et | LANG_ESTONIAN | 0x25 | langEstonian | 27 |
Faeroese | fo | LANG_FAEROESE | 0x38 | langFaeroese | 30 |
Farsi | fa | LANG_FARSI | 0x29 | langFarsi, langPersian | 31 |
Fiji | fj | ||||
Finnish | fi | LANG_FINNISH | 0x0b | langFinnish | 13 |
Flemish | LANG_DUTCH (SUBLANG_DUTCH_BELGIAN) | 0x13 (0x0813) | langFlemish | 34 | |
French | fr | LANG_FRENCH | 0x0c | langFrench | 1 |
Frisian | fy | (no constant defined) | 0x62 | ||
Fulfulde | (no constant defined) | 0x67 | |||
Galician | gl | LANG_GALICIAN | 0x56 | langGalician | 140 |
Gaelic (Scottish) | gd | (no constant defined) | 0x3c (0x043c) | langScottishGaelic | 144 |
Gaelic (Manx) | gv | langManxGaelic | 145 | ||
Georgian | ka | LANG_GEORGIAN | 0x37 | langGeorgian | 52 |
German | de | LANG_GERMAN | 0x07 | langGerman | 2 |
Greek | el | LANG_GREEK | 0x08 | langGreek (monotonic), langGreekPoly (polytonic) | 14(m), 148(p) |
Greenlandic | kl | ||||
Guarani | gn | (no constant defined) | 0x74 | langGuarani | 133 |
Gujarati | gu | LANG_GUJARATI | 0x47 | langGujarati | 69 |
Hausa | ha | (no constant defined) | 0x68 | ||
Hawaiian | (no constant defined) | 0x75 | |||
Hebrew | he, iw* | LANG_HEBREW | 0x0d | langHebrew | 10 |
Hindi | hi | LANG_HINDI | 0x39 | langHindi | 21 |
Hungarian | hu | LANG_HUNGARIAN | 0x0e | langHungarian | 26 |
Ibibio | (no constant defined) | 0x69 | |||
Icelandic | is | LANG_ICELANDIC | 0x0f | langIcelandic | 15 |
Igbo | (no constant defined) | 0x70 | |||
Indonesian | id, in* | LANG_INDONESIAN | 0x21 | langIndonesian | 81 |
Interlingua | ia | ||||
Interlingue | ie | ||||
Inuktitut | iu | (no constant defined) | 0x5d | langInuktitut | 143 |
Inupiak | ik | ||||
Irish | ga | (no constant defined) | 0x3c (0x083c) | langIrishGaelic (normal), langIrishGaelicScr (dots above) | 35, 146 |
Italian | it | LANG_ITALIAN | 0x10 | langItalian | 3 |
Japanese | ja | LANG_JAPANESE | 0x11 | langJapanese | 11 |
Javanese | jv | langJavaneseRom | 138 | ||
Kannada | kn | LANG_KANNADA | 0x4b | langKannada | 73 |
Kanuri | (no constant defined) | 0x71 | |||
Kashmiri | ks | LANG_KASHMIRI | 0x60 | langKashmiri | 61 |
Kazakh | kk | LANG_KAZAK | 0x3f | langKazakh | 48 |
Kinyarwanda (Ruanda) | rw | langKiryarwanda (langRuanda) | 90 | ||
Kirghiz | ky | LANG_KYRGYZ | 0x40 | langKirghiz | 54 |
Kirundi (Rundi) | rn | langRundi | 91 | ||
Konkani | LANG_KONKANI | 0x57 | |||
Korean | ko | LANG_KOREAN | 0x12 | langKorean | 23 |
Kurdish | ku | langKurdish | 60 | ||
Laothian | lo | (no constant defined) | 0x54 | langLao | 79 |
Latin | la | (no constant defined) | 0x76 | langLatin | 131 |
Latvian (Lettish) | lv | LANG_LATVIAN | 0x26 | langLatvian | 28 |
Limburgish ( Limburger) | li | ||||
Lingala | ln | ||||
Lithuanian | lt | LANG_LITHUANIAN | 0x27 | langLithuanian | 24 |
Macedonian | mk | LANG_MACEDONIAN | 0x2f | langMacedonian | 43 |
Malagasy | mg | langMalagasy | 93 | ||
Malay | ms | LANG_MALAY | 0x3e | langMalayRoman(Latin), langMalayArabic(Arabic) | 83(L), 84(A) |
Malayalam | ml | LANG_MALAYALAM | 0x4c | langMalayalam | 72 |
LANG_MANIPURI | 0x58 | ||||
Maltese | mt | (no constant defined) | 0x3a | langMaltese | 16 |
Maori | mi | ||||
Marathi | mr | LANG_MARATHI | 0x4e | langMarathi | 66 |
Moldavian | mo | langMoldavian | 53 | ||
Mongolian | mn | LANG_MONGOLIAN | 0x50 | langMongolian(Mongolian), langMongolianCyr(Cyrillic) | 57(M), 58(C) |
Nauru | na | ||||
Nepali | ne | LANG_NEPALI | 0x61 | langNepali | 64 |
Norwegian | no | LANG_NORWEGIAN | 0x14 | langNorwegian | 9 |
Occitan | oc | ||||
Oriya | or | LANG_ORIYA | 0x48 | langOriya | 71 |
Oromo (Afan, Galla) | om | (no constant defined) | 0x72 | langOromo (langGalla) | 87 |
Papiamentu | (no constant defined) | 0x79 | |||
Pashto (Pushto) | ps | (no constant defined) | 0x63 | langPashto | 59 |
Polish | pl | LANG_POLISH | 0x15 | langPolish | 25 |
Portuguese | pt | LANG_PORTUGUESE | 0x16 | langPortuguese | 8 |
Punjabi | pa | LANG_PUNJABI | 0x46 | langPunjabi | 70 |
Quechua | qu | langQuechua | 132 | ||
Rhaeto-Romance | rm | (no constant defined) | 0x17 | ||
Romanian | ro | LANG_ROMANIAN | 0x18 | langRomanian | 37 |
Russian | ru | LANG_RUSSIAN | 0x19 | langRussian | 32 |
Sami (Lappish) | (no constant defined) | 0x3b | langSami (langLappish) | 29 | |
Samoan | sm | ||||
Sangro | sg | ||||
Sanskrit | sa | LANG_SANSKRIT | 0x4f | langSanskrit | 65 |
Serbian | sr | LANG_SERBIAN (SUBLANG_SERBIAN_LATIN or SUBLANG_SERBIAN_CYRILLIC) | 0x1a (0x081a or 0x0c1a) | langSerbian | 42 |
Serbo-Croatian | sh | ||||
Sesotho | st | ||||
Setswana | tn | ||||
Shona | sn | ||||
Sindhi | sd | LANG_SINDHI | 0x59 | langSindhi | 62 |
Sinhalese | si | (no constant defined) | 0x5b | langSinhalese | 76 |
Siswati | ss | ||||
Slovak | sk | LANG_SLOVAK | 0x1b | langSlovak | 39 |
Slovenian | sl | LANG_SLOVENIAN | 0x24 | langSlovenian | 40 |
Somali | so | (no constant defined) | 0x77 | langSomali | 88 |
Spanish | es | LANG_SPANISH | 0x0a | langSpanish | 6 |
Sundanese | su | langSundaneseRom | 139 | ||
Swahili (Kiswahili) | sw | LANG_SWAHILI | 0x41 | langSwahili | 89 |
Swedish | sv | LANG_SWEDISH | 0x1d | langSwedish | 5 |
Syriac | LANG_SYRIAC | 0x5a | |||
Tagalog | tl | (no constant defined) | 0x64 | langTagalog | 82 |
Tajik | tg | (no constant defined) | 0x28 | langTajiki | 55 |
Tamazight | (no constant defined) | 0x5f | |||
Tamil | ta | LANG_TAMIL | 0x49 | langTamil | 74 |
Tatar | tt | LANG_TATAR | 0x44 | langTatar | 135 |
Telugu | te | LANG_TELUGU | 0x4a | langTelugu | 75 |
Thai | th | LANG_THAI | 0x1e | langThai | 22 |
Tibetan | bo | (no constant defined) | 0x51 | langTibetan | 63 |
Tigrinya | ti | (no constant defined) | 0x73 | langTigrinya | 86 |
Tonga | to | langTongan | 147 | ||
Tsonga | ts | (no constant defined) | 0x31 | ||
Turkish | tr | LANG_TURKISH | 0x1f | langTurkish | 17 |
Turkmen | tk | (no constant defined) | 0x42 | langTurkmen | 56 |
Twi | tw | ||||
Uighur | ug | langUighur | 136 | ||
Ukrainian | uk | LANG_UKRAINIAN | 0x22 | langUkrainian | 45 |
Urdu | ur | LANG_URDU | 0x20 | langUrdu | 20 |
Uzbek | uz | LANG_UZBEK | 0x43 | langUzbek | 47 |
Venda | (no constant defined) | 0x33 | |||
Vietnamese | vi | LANG_VIETNAMESE | 0x2a | langVietnamese | 80 |
Volapük | vo | ||||
Welsh | cy | (no constant defined) | 0x52 | langWelsh | 128 |
Wolof | wo | ||||
Xhosa | xh | (no constant defined) | 0x34 | ||
Yi | (no constant defined) | 0x78 | |||
Yiddish | yi, ji* | (no constant defined) | 0x3d | langYiddish | 41 |
Yoruba | yo | (no constant defined) | 0x6a | ||
Zulu | zu | (no constant defined) | 0x35 |