# Field languages and scripts

A document prints what it says in one script or in several. A Greek passport
prints the holder's surname in Greek and again in Latin; a Kazakh one does the
same in Cyrillic and Latin. Each of those is a separate **reading**,
and every reading carries the language it was made in.

This page states where that language appears, how it is resolved, and every
identifier it can be resolved from.

## Where the language appears

| Key | Carries |
|---|---|
| `fields[].language` | The language name, for example `Greek`; `null` for the neutral Latin reading |
| `fields[].id` | `name@lcid` — the numeric identifier is the part after the `@` |

The response carries the same fact twice, deliberately. `language` is the name
the identifier resolves to, which is what a reader renders. The identifier
itself stays in the entry's `id`, so two readings of one field stay
distinguishable however their names are spelled.

```json
[
  { "id": "surname@0", "name": "surname", "value": "PARADEIGMA", "language": null },
  { "id": "surname@1032", "name": "surname", "value": "ΠΑΡΑΔΕΙΓΜΑ", "language": "Greek" }
]
```

## The neutral identifier

`0` is not a language. It is the neutral, transliterated Latin reading — the
value the engine merged across sources, spelled in the alphabet the
machine-readable zone uses.

It is reported as `language: null`, because the absence of a language is not a
language of its own. Its entries still carry the `@0` suffix in their id, so a
neutral reading and a national-script reading of one field never collide.

## The three steps that resolve it

The recognition engine reports a language as one of these integers and nothing
else. Resolving it narrows in three steps, and nothing is guessed at any of
them.

1. **The identifier itself.** A value present in the table below resolves to
   its language, its full name and its IETF tag. `1032` is Greek.
2. **The primary language.** Failing that, the low 10 bits of the value name a
   primary language, and the rest select a sublanguage — a region or a script.
   A sublanguage nobody has assigned still belongs to its language, and saying
   so is true. 135 primary languages are tabulated for this step.
3. **A literal.** When even the family is unknown, the answer is
   `Language 0x0ABC`, naming the identifier in the hexadecimal the reference is
   written in.

Step 3 exists because the alternative is worse. An identifier the code did not
know used to reach a reader as the bare integer it arrived as. A bare integer
is not a language, and cannot be looked up.

| Step | Example input | `language` |
|---|---|---|
| Exact | `1032` | `Greek` |
| Family | An unassigned sublanguage of `0x0009` | `English` |
| Literal | An identifier in no family | `Language 0x0ABC` |

## What the language is not

- **Not the language of the document.** It is the language of one reading of
  one field. A single document commonly produces readings in two.
- **Not a translation.** A national-script reading is what the document prints,
  and the Latin reading is what the engine transliterated. Neither was
  translated from the other.
- **Not a locale to format with.** The identifier's IETF tag is published below
  as reference, but the value in a result is the language alone.

## Every assigned identifier

418 identifiers, from the published [MS-LCID] reference as it stood on
2026-09-17. The table is generated from the same module the service resolves a
reading through, so a row here is a row the running service uses.

**Identifier** is the integer an entry's `id` ends with. **Language** is what
that entry's `language` reports. **Full name** is the identifier's own name in
the reference, which names the region as well. **IETF tag** is the BCP 47 tag of
the identifier.

| Identifier | Hexadecimal | Language | Full name | IETF tag |
|---|---|---|---|---|
| 1 | `0x0001` | Arabic | Arabic | `ar` |
| 2 | `0x0002` | Bulgarian | Bulgarian | `bg` |
| 3 | `0x0003` | Catalan | Catalan | `ca` |
| 4 | `0x0004` | Chinese (Simplified) | Chinese (Simplified) | `zh-Hans` |
| 5 | `0x0005` | Czech | Czech | `cs` |
| 6 | `0x0006` | Danish | Danish | `da` |
| 7 | `0x0007` | German | German | `de` |
| 8 | `0x0008` | Greek | Greek | `el` |
| 9 | `0x0009` | English | English | `en` |
| 10 | `0x000A` | Spanish | Spanish | `es` |
| 11 | `0x000B` | Finnish | Finnish | `fi` |
| 12 | `0x000C` | French | French | `fr` |
| 13 | `0x000D` | Hebrew | Hebrew | `he` |
| 14 | `0x000E` | Hungarian | Hungarian | `hu` |
| 15 | `0x000F` | Icelandic | Icelandic | `is` |
| 16 | `0x0010` | Italian | Italian | `it` |
| 17 | `0x0011` | Japanese | Japanese | `ja` |
| 18 | `0x0012` | Korean | Korean | `ko` |
| 19 | `0x0013` | Dutch | Dutch | `nl` |
| 20 | `0x0014` | Norwegian (Bokmal) | Norwegian (Bokmal) | `no` |
| 21 | `0x0015` | Polish | Polish | `pl` |
| 22 | `0x0016` | Portuguese | Portuguese | `pt` |
| 23 | `0x0017` | Romansh | Romansh | `rm` |
| 24 | `0x0018` | Romanian | Romanian | `ro` |
| 25 | `0x0019` | Russian | Russian | `ru` |
| 26 | `0x001A` | Croatian | Croatian | `hr` |
| 27 | `0x001B` | Slovak | Slovak | `sk` |
| 28 | `0x001C` | Albanian | Albanian | `sq` |
| 29 | `0x001D` | Swedish | Swedish | `sv` |
| 30 | `0x001E` | Thai | Thai | `th` |
| 31 | `0x001F` | Turkish | Turkish | `tr` |
| 32 | `0x0020` | Urdu | Urdu | `ur` |
| 33 | `0x0021` | Indonesian | Indonesian | `id` |
| 34 | `0x0022` | Ukrainian | Ukrainian | `uk` |
| 35 | `0x0023` | Belarusian | Belarusian | `be` |
| 36 | `0x0024` | Slovenian | Slovenian | `sl` |
| 37 | `0x0025` | Estonian | Estonian | `et` |
| 38 | `0x0026` | Latvian | Latvian | `lv` |
| 39 | `0x0027` | Lithuanian | Lithuanian | `lt` |
| 40 | `0x0028` | Tajik (Cyrillic) | Tajik (Cyrillic) | `tg` |
| 41 | `0x0029` | Persian | Persian | `fa` |
| 42 | `0x002A` | Vietnamese | Vietnamese | `vi` |
| 43 | `0x002B` | Armenian | Armenian | `hy` |
| 44 | `0x002C` | Azerbaijani (Latin) | Azerbaijani (Latin) | `az` |
| 45 | `0x002D` | Basque | Basque | `eu` |
| 46 | `0x002E` | Upper Sorbian | Upper Sorbian | `hsb` |
| 47 | `0x002F` | Macedonian | Macedonian | `mk` |
| 48 | `0x0030` | Sotho | Sotho | `st` |
| 49 | `0x0031` | Tsonga | Tsonga | `ts` |
| 50 | `0x0032` | Setswana | Setswana | `tn` |
| 51 | `0x0033` | Venda | Venda | `ve` |
| 52 | `0x0034` | Xhosa | Xhosa | `xh` |
| 53 | `0x0035` | Zulu | Zulu | `zu` |
| 54 | `0x0036` | Afrikaans | Afrikaans | `af` |
| 55 | `0x0037` | Georgian | Georgian | `ka` |
| 56 | `0x0038` | Faroese | Faroese | `fo` |
| 57 | `0x0039` | Hindi | Hindi | `hi` |
| 58 | `0x003A` | Maltese | Maltese | `mt` |
| 59 | `0x003B` | Sami (Northern) | Sami (Northern) | `se` |
| 60 | `0x003C` | Irish | Irish | `ga` |
| 62 | `0x003E` | Malay | Malay | `ms` |
| 63 | `0x003F` | Kazakh | Kazakh | `kk` |
| 64 | `0x0040` | Kyrgyz | Kyrgyz | `ky` |
| 65 | `0x0041` | Kiswahili | Kiswahili | `sw` |
| 66 | `0x0042` | Turkmen | Turkmen | `tk` |
| 67 | `0x0043` | Uzbek (Latin) | Uzbek (Latin) | `uz` |
| 68 | `0x0044` | Tatar | Tatar | `tt` |
| 69 | `0x0045` | Bangla | Bangla | `bn` |
| 70 | `0x0046` | Punjabi | Punjabi | `pa` |
| 71 | `0x0047` | Gujarati | Gujarati | `gu` |
| 72 | `0x0048` | Odia | Odia | `or` |
| 73 | `0x0049` | Tamil | Tamil | `ta` |
| 74 | `0x004A` | Telugu | Telugu | `te` |
| 75 | `0x004B` | Kannada | Kannada | `kn` |
| 76 | `0x004C` | Malayalam | Malayalam | `ml` |
| 77 | `0x004D` | Assamese | Assamese | `as` |
| 78 | `0x004E` | Marathi | Marathi | `mr` |
| 79 | `0x004F` | Sanskrit | Sanskrit | `sa` |
| 80 | `0x0050` | Mongolian (Cyrillic) | Mongolian (Cyrillic) | `mn` |
| 81 | `0x0051` | Tibetan | Tibetan | `bo` |
| 82 | `0x0052` | Welsh | Welsh | `cy` |
| 83 | `0x0053` | Khmer | Khmer | `km` |
| 84 | `0x0054` | Lao | Lao | `lo` |
| 85 | `0x0055` | Burmese | Burmese | `my` |
| 86 | `0x0056` | Galician | Galician | `gl` |
| 87 | `0x0057` | Konkani | Konkani | `kok` |
| 89 | `0x0059` | Sindhi | Sindhi | `sd` |
| 90 | `0x005A` | Syriac | Syriac | `syr` |
| 91 | `0x005B` | Sinhala | Sinhala | `si` |
| 92 | `0x005C` | Cherokee | Cherokee | `chr` |
| 93 | `0x005D` | Inuktitut (Latin) | Inuktitut (Latin) | `iu` |
| 94 | `0x005E` | Amharic | Amharic | `am` |
| 95 | `0x005F` | Tamazight (Latin) | Tamazight (Latin) | `tzm` |
| 96 | `0x0060` | Kashmiri | Kashmiri | `ks` |
| 97 | `0x0061` | Nepali | Nepali | `ne` |
| 98 | `0x0062` | Frisian | Frisian | `fy` |
| 99 | `0x0063` | Pashto | Pashto | `ps` |
| 100 | `0x0064` | Filipino | Filipino | `fil` |
| 101 | `0x0065` | Divehi | Divehi | `dv` |
| 103 | `0x0067` | Fulah | Fulah | `ff` |
| 104 | `0x0068` | Hausa (Latin) | Hausa (Latin) | `ha` |
| 106 | `0x006A` | Yoruba | Yoruba | `yo` |
| 107 | `0x006B` | Quechua | Quechua | `quz` |
| 108 | `0x006C` | Sesotho sa Leboa | Sesotho sa Leboa | `nso` |
| 109 | `0x006D` | Bashkir | Bashkir | `ba` |
| 110 | `0x006E` | Luxembourgish | Luxembourgish | `lb` |
| 111 | `0x006F` | Greenlandic | Greenlandic | `kl` |
| 112 | `0x0070` | Igbo | Igbo | `ig` |
| 114 | `0x0072` | Oromo | Oromo | `om` |
| 115 | `0x0073` | Tigrinya | Tigrinya | `ti` |
| 116 | `0x0074` | Guarani | Guarani | `gn` |
| 117 | `0x0075` | Hawaiian | Hawaiian | `haw` |
| 119 | `0x0077` | Somali | Somali | `so` |
| 120 | `0x0078` | Yi | Yi | `ii` |
| 122 | `0x007A` | Mapudungun | Mapudungun | `arn` |
| 124 | `0x007C` | Mohawk | Mohawk | `moh` |
| 126 | `0x007E` | Breton | Breton | `br` |
| 128 | `0x0080` | Uyghur | Uyghur | `ug` |
| 129 | `0x0081` | Maori | Maori | `mi` |
| 130 | `0x0082` | Occitan | Occitan | `oc` |
| 131 | `0x0083` | Corsican | Corsican | `co` |
| 132 | `0x0084` | Alsatian | Alsatian | `gsw` |
| 133 | `0x0085` | Sakha | Sakha | `sah` |
| 134 | `0x0086` | K'iche | K'iche | `quc` |
| 135 | `0x0087` | Kinyarwanda | Kinyarwanda | `rw` |
| 136 | `0x0088` | Wolof | Wolof | `wo` |
| 140 | `0x008C` | Dari | Dari | `prs` |
| 145 | `0x0091` | Scottish Gaelic | Scottish Gaelic | `gd` |
| 146 | `0x0092` | Central Kurdish | Central Kurdish | `ku` |
| 1025 | `0x0401` | Arabic | Arabic (Saudi Arabia) | `ar-SA` |
| 1026 | `0x0402` | Bulgarian | Bulgarian (Bulgaria) | `bg-BG` |
| 1027 | `0x0403` | Catalan | Catalan (Spain) | `ca-ES` |
| 1028 | `0x0404` | Chinese (Traditional) | Chinese (Traditional) (Taiwan) | `zh-TW` |
| 1029 | `0x0405` | Czech | Czech (Czech Republic) | `cs-CZ` |
| 1030 | `0x0406` | Danish | Danish (Denmark) | `da-DK` |
| 1031 | `0x0407` | German | German (Germany) | `de-DE` |
| 1032 | `0x0408` | Greek | Greek (Greece) | `el-GR` |
| 1033 | `0x0409` | English | English (United States) | `en-US` |
| 1034 | `0x040A` | Spanish | Spanish (Spain) | `es-ES_tradnl` |
| 1035 | `0x040B` | Finnish | Finnish (Finland) | `fi-FI` |
| 1036 | `0x040C` | French | French (France) | `fr-FR` |
| 1037 | `0x040D` | Hebrew | Hebrew (Israel) | `he-IL` |
| 1038 | `0x040E` | Hungarian | Hungarian (Hungary) | `hu-HU` |
| 1039 | `0x040F` | Icelandic | Icelandic (Iceland) | `is-IS` |
| 1040 | `0x0410` | Italian | Italian (Italy) | `it-IT` |
| 1041 | `0x0411` | Japanese | Japanese (Japan) | `ja-JP` |
| 1042 | `0x0412` | Korean | Korean (Korea) | `ko-KR` |
| 1043 | `0x0413` | Dutch | Dutch (Netherlands) | `nl-NL` |
| 1044 | `0x0414` | Norwegian (Bokmal) | Norwegian (Bokmal) (Norway) | `nb-NO` |
| 1045 | `0x0415` | Polish | Polish (Poland) | `pl-PL` |
| 1046 | `0x0416` | Portuguese | Portuguese (Brazil) | `pt-BR` |
| 1047 | `0x0417` | Romansh | Romansh (Switzerland) | `rm-CH` |
| 1048 | `0x0418` | Romanian | Romanian (Romania) | `ro-RO` |
| 1049 | `0x0419` | Russian | Russian (Russia) | `ru-RU` |
| 1050 | `0x041A` | Croatian | Croatian (Croatia) | `hr-HR` |
| 1051 | `0x041B` | Slovak | Slovak (Slovakia) | `sk-SK` |
| 1052 | `0x041C` | Albanian | Albanian (Albania) | `sq-AL` |
| 1053 | `0x041D` | Swedish | Swedish (Sweden) | `sv-SE` |
| 1054 | `0x041E` | Thai | Thai (Thailand) | `th-TH` |
| 1055 | `0x041F` | Turkish | Turkish (Turkey) | `tr-TR` |
| 1056 | `0x0420` | Urdu | Urdu (Islamic Republic of Pakistan) | `ur-PK` |
| 1057 | `0x0421` | Indonesian | Indonesian (Indonesia) | `id-ID` |
| 1058 | `0x0422` | Ukrainian | Ukrainian (Ukraine) | `uk-UA` |
| 1059 | `0x0423` | Belarusian | Belarusian (Belarus) | `be-BY` |
| 1060 | `0x0424` | Slovenian | Slovenian (Slovenia) | `sl-SI` |
| 1061 | `0x0425` | Estonian | Estonian (Estonia) | `et-EE` |
| 1062 | `0x0426` | Latvian | Latvian (Latvia) | `lv-LV` |
| 1063 | `0x0427` | Lithuanian | Lithuanian (Lithuania) | `lt-LT` |
| 1064 | `0x0428` | Tajik (Cyrillic) | Tajik (Cyrillic) (Tajikistan) | `tg-Cyrl-TJ` |
| 1065 | `0x0429` | Persian | Persian (Iran) | `fa-IR` |
| 1066 | `0x042A` | Vietnamese | Vietnamese (Vietnam) | `vi-VN` |
| 1067 | `0x042B` | Armenian | Armenian (Armenia) | `hy-AM` |
| 1068 | `0x042C` | Azerbaijani (Latin) | Azerbaijani (Latin) (Azerbaijan) | `az-Latn-AZ` |
| 1069 | `0x042D` | Basque | Basque (Spain) | `eu-ES` |
| 1070 | `0x042E` | Upper Sorbian | Upper Sorbian (Germany) | `hsb-DE` |
| 1071 | `0x042F` | Macedonian | Macedonian (North Macedonia) | `mk-MK` |
| 1072 | `0x0430` | Sotho | Sotho (South Africa) | `st-ZA` |
| 1073 | `0x0431` | Tsonga | Tsonga (South Africa) | `ts-ZA` |
| 1074 | `0x0432` | Setswana | Setswana (South Africa) | `tn-ZA` |
| 1075 | `0x0433` | Venda | Venda (South Africa) | `ve-ZA` |
| 1076 | `0x0434` | Xhosa | Xhosa (South Africa) | `xh-ZA` |
| 1077 | `0x0435` | Zulu | Zulu (South Africa) | `zu-ZA` |
| 1078 | `0x0436` | Afrikaans | Afrikaans (South Africa) | `af-ZA` |
| 1079 | `0x0437` | Georgian | Georgian (Georgia) | `ka-GE` |
| 1080 | `0x0438` | Faroese | Faroese (Faroe Islands) | `fo-FO` |
| 1081 | `0x0439` | Hindi | Hindi (India) | `hi-IN` |
| 1082 | `0x043A` | Maltese | Maltese (Malta) | `mt-MT` |
| 1083 | `0x043B` | Sami (Northern) | Sami (Northern) (Norway) | `se-NO` |
| 1085 | `0x043D` | Yiddish | Yiddish (World) | `yi-001` |
| 1086 | `0x043E` | Malay | Malay (Malaysia) | `ms-MY` |
| 1087 | `0x043F` | Kazakh | Kazakh (Kazakhstan) | `kk-KZ` |
| 1088 | `0x0440` | Kyrgyz | Kyrgyz (Kyrgyzstan) | `ky-KG` |
| 1089 | `0x0441` | Kiswahili | Kiswahili (Kenya) | `sw-KE` |
| 1090 | `0x0442` | Turkmen | Turkmen (Turkmenistan) | `tk-TM` |
| 1091 | `0x0443` | Uzbek (Latin) | Uzbek (Latin) (Uzbekistan) | `uz-Latn-UZ` |
| 1092 | `0x0444` | Tatar | Tatar (Russia) | `tt-RU` |
| 1093 | `0x0445` | Bangla | Bangla (India) | `bn-IN` |
| 1094 | `0x0446` | Punjabi | Punjabi (India) | `pa-IN` |
| 1095 | `0x0447` | Gujarati | Gujarati (India) | `gu-IN` |
| 1096 | `0x0448` | Odia | Odia (India) | `or-IN` |
| 1097 | `0x0449` | Tamil | Tamil (India) | `ta-IN` |
| 1098 | `0x044A` | Telugu | Telugu (India) | `te-IN` |
| 1099 | `0x044B` | Kannada | Kannada (India) | `kn-IN` |
| 1100 | `0x044C` | Malayalam | Malayalam (India) | `ml-IN` |
| 1101 | `0x044D` | Assamese | Assamese (India) | `as-IN` |
| 1102 | `0x044E` | Marathi | Marathi (India) | `mr-IN` |
| 1103 | `0x044F` | Sanskrit | Sanskrit (India) | `sa-IN` |
| 1104 | `0x0450` | Mongolian (Cyrillic) | Mongolian (Cyrillic) (Mongolia) | `mn-MN` |
| 1105 | `0x0451` | Tibetan | Tibetan (People's Republic of China) | `bo-CN` |
| 1106 | `0x0452` | Welsh | Welsh (United Kingdom) | `cy-GB` |
| 1107 | `0x0453` | Khmer | Khmer (Cambodia) | `km-KH` |
| 1108 | `0x0454` | Lao | Lao (Lao P.D.R.) | `lo-LA` |
| 1109 | `0x0455` | Burmese | Burmese (Myanmar) | `my-MM` |
| 1110 | `0x0456` | Galician | Galician (Spain) | `gl-ES` |
| 1111 | `0x0457` | Konkani | Konkani (India) | `kok-IN` |
| 1114 | `0x045A` | Syriac | Syriac (Syria) | `syr-SY` |
| 1115 | `0x045B` | Sinhala | Sinhala (Sri Lanka) | `si-LK` |
| 1116 | `0x045C` | Cherokee | Cherokee (United States) | `chr-Cher-US` |
| 1117 | `0x045D` | Inuktitut (Syllabics) | Inuktitut (Syllabics) (Canada) | `iu-Cans-CA` |
| 1118 | `0x045E` | Amharic | Amharic (Ethiopia) | `am-ET` |
| 1119 | `0x045F` | Central Atlas Tamazight (Arabic) | Central Atlas Tamazight (Arabic) (Morocco) | `tzm-Arab-MA` |
| 1120 | `0x0460` | Kashmiri | Kashmiri (Perso-Arabic) | `ks-Arab` |
| 1121 | `0x0461` | Nepali | Nepali (Nepal) | `ne-NP` |
| 1122 | `0x0462` | Frisian | Frisian (Netherlands) | `fy-NL` |
| 1123 | `0x0463` | Pashto | Pashto (Afghanistan) | `ps-AF` |
| 1124 | `0x0464` | Filipino | Filipino (Philippines) | `fil-PH` |
| 1125 | `0x0465` | Divehi | Divehi (Maldives) | `dv-MV` |
| 1127 | `0x0467` | Fulah | Fulah (Nigeria) | `ff-NG` |
| 1128 | `0x0468` | Hausa (Latin) | Hausa (Latin) (Nigeria) | `ha-Latn-NG` |
| 1130 | `0x046A` | Yoruba | Yoruba (Nigeria) | `yo-NG` |
| 1131 | `0x046B` | Quechua | Quechua (Bolivia) | `quz-BO` |
| 1132 | `0x046C` | Sesotho sa Leboa | Sesotho sa Leboa (South Africa) | `nso-ZA` |
| 1133 | `0x046D` | Bashkir | Bashkir (Russia) | `ba-RU` |
| 1134 | `0x046E` | Luxembourgish | Luxembourgish (Luxembourg) | `lb-LU` |
| 1135 | `0x046F` | Greenlandic | Greenlandic (Greenland) | `kl-GL` |
| 1136 | `0x0470` | Igbo | Igbo (Nigeria) | `ig-NG` |
| 1137 | `0x0471` | Kanuri (Latin) | Kanuri (Latin) (Nigeria) | `kr-Latn-NG` |
| 1138 | `0x0472` | Oromo | Oromo (Ethiopia) | `om-ET` |
| 1139 | `0x0473` | Tigrinya | Tigrinya (Ethiopia) | `ti-ET` |
| 1140 | `0x0474` | Guarani | Guarani (Paraguay) | `gn-PY` |
| 1141 | `0x0475` | Hawaiian | Hawaiian (United States) | `haw-US` |
| 1142 | `0x0476` | Latin | Latin (Vatican City) | `la-VA` |
| 1143 | `0x0477` | Somali | Somali (Somalia) | `so-SO` |
| 1144 | `0x0478` | Yi | Yi (People's Republic of China) | `ii-CN` |
| 1146 | `0x047A` | Mapudungun | Mapudungun (Chile) | `arn-CL` |
| 1148 | `0x047C` | Mohawk | Mohawk (Canada) | `moh-CA` |
| 1150 | `0x047E` | Breton | Breton (France) | `br-FR` |
| 1152 | `0x0480` | Uyghur | Uyghur (People's Republic of China) | `ug-CN` |
| 1153 | `0x0481` | Maori | Maori (New Zealand) | `mi-NZ` |
| 1154 | `0x0482` | Occitan | Occitan (France) | `oc-FR` |
| 1155 | `0x0483` | Corsican | Corsican (France) | `co-FR` |
| 1156 | `0x0484` | Alsatian | Alsatian (France) | `gsw-FR` |
| 1157 | `0x0485` | Sakha | Sakha (Russia) | `sah-RU` |
| 1158 | `0x0486` | K'iche | K'iche (Guatemala) | `quc-Latn-GT` |
| 1159 | `0x0487` | Kinyarwanda | Kinyarwanda (Rwanda) | `rw-RW` |
| 1160 | `0x0488` | Wolof | Wolof (Senegal) | `wo-SN` |
| 1164 | `0x048C` | Dari | Dari (Afghanistan) | `prs-AF` |
| 1169 | `0x0491` | Scottish Gaelic | Scottish Gaelic (United Kingdom) | `gd-GB` |
| 1170 | `0x0492` | Central Kurdish | Central Kurdish (Iraq) | `ku-Arab-IQ` |
| 1281 | `0x0501` | Pseudo Language | Pseudo Language (Pseudo locale used for localization testing) | `qps-ploc` |
| 1534 | `0x05FE` | Pseudo Language | Pseudo Language (Pseudo locale for east Asian/complex script localization testing) | `qps-ploca` |
| 2049 | `0x0801` | Arabic | Arabic (Iraq) | `ar-IQ` |
| 2051 | `0x0803` | Valencian | Valencian (Spain) | `ca-ES-valencia` |
| 2052 | `0x0804` | Chinese (Simplified) | Chinese (Simplified) (People's Republic of China) | `zh-CN` |
| 2055 | `0x0807` | German | German (Switzerland) | `de-CH` |
| 2057 | `0x0809` | English | English (United Kingdom) | `en-GB` |
| 2058 | `0x080A` | Spanish | Spanish (Mexico) | `es-MX` |
| 2060 | `0x080C` | French | French (Belgium) | `fr-BE` |
| 2064 | `0x0810` | Italian | Italian (Switzerland) | `it-CH` |
| 2067 | `0x0813` | Dutch | Dutch (Belgium) | `nl-BE` |
| 2068 | `0x0814` | Norwegian (Nynorsk) | Norwegian (Nynorsk) (Norway) | `nn-NO` |
| 2070 | `0x0816` | Portuguese | Portuguese (Portugal) | `pt-PT` |
| 2072 | `0x0818` | Romanian | Romanian (Moldova) | `ro-MD` |
| 2073 | `0x0819` | Russian | Russian (Moldova) | `ru-MD` |
| 2074 | `0x081A` | Serbian (Latin) | Serbian (Latin) (Serbia and Montenegro (Former)) | `sr-Latn-CS` |
| 2077 | `0x081D` | Swedish | Swedish (Finland) | `sv-FI` |
| 2080 | `0x0820` | Urdu | Urdu (India) | `ur-IN` |
| 2092 | `0x082C` | Azerbaijani (Cyrillic) | Azerbaijani (Cyrillic) (Azerbaijan) | `az-Cyrl-AZ` |
| 2094 | `0x082E` | Lower Sorbian | Lower Sorbian (Germany) | `dsb-DE` |
| 2098 | `0x0832` | Setswana | Setswana (Botswana) | `tn-BW` |
| 2107 | `0x083B` | Sami (Northern) | Sami (Northern) (Sweden) | `se-SE` |
| 2108 | `0x083C` | Irish | Irish (Ireland) | `ga-IE` |
| 2110 | `0x083E` | Malay | Malay (Brunei Darussalam) | `ms-BN` |
| 2115 | `0x0843` | Uzbek (Cyrillic) | Uzbek (Cyrillic) (Uzbekistan) | `uz-Cyrl-UZ` |
| 2117 | `0x0845` | Bangla | Bangla (Bangladesh) | `bn-BD` |
| 2118 | `0x0846` | Punjabi | Punjabi (Islamic Republic of Pakistan) | `pa-Arab-PK` |
| 2121 | `0x0849` | Tamil | Tamil (Sri Lanka) | `ta-LK` |
| 2128 | `0x0850` | Mongolian (Traditional Mongolian) | Mongolian (Traditional Mongolian) (People's Republic of China) | `mn-Mong-CN` |
| 2137 | `0x0859` | Sindhi | Sindhi (Islamic Republic of Pakistan) | `sd-Arab-PK` |
| 2141 | `0x085D` | Inuktitut (Latin) | Inuktitut (Latin) (Canada) | `iu-Latn-CA` |
| 2143 | `0x085F` | Tamazight (Latin) | Tamazight (Latin) (Algeria) | `tzm-Latn-DZ` |
| 2144 | `0x0860` | Kashmiri (Devanagari) | Kashmiri (Devanagari) (India) | `ks-Deva-IN` |
| 2145 | `0x0861` | Nepali | Nepali (India) | `ne-IN` |
| 2151 | `0x0867` | Fulah | Fulah (Senegal) | `ff-Latn-SN` |
| 2155 | `0x086B` | Quechua | Quechua (Ecuador) | `quz-EC` |
| 2163 | `0x0873` | Tigrinya | Tigrinya (Eritrea) | `ti-ER` |
| 2559 | `0x09FF` | Pseudo Language | Pseudo Language (Pseudo locale used for localization testing of mirrored locales) | `qps-plocm` |
| 3073 | `0x0C01` | Arabic | Arabic (Egypt) | `ar-EG` |
| 3076 | `0x0C04` | Chinese (Traditional) | Chinese (Traditional) (Hong Kong S.A.R.) | `zh-HK` |
| 3079 | `0x0C07` | German | German (Austria) | `de-AT` |
| 3081 | `0x0C09` | English | English (Australia) | `en-AU` |
| 3082 | `0x0C0A` | Spanish | Spanish (Spain) | `es-ES` |
| 3084 | `0x0C0C` | French | French (Canada) | `fr-CA` |
| 3098 | `0x0C1A` | Serbian (Cyrillic) | Serbian (Cyrillic) (Serbia and Montenegro (Former)) | `sr-Cyrl-CS` |
| 3131 | `0x0C3B` | Sami (Northern) | Sami (Northern) (Finland) | `se-FI` |
| 3152 | `0x0C50` | Mongolian (Traditional Mongolian) | Mongolian (Traditional Mongolian) (Mongolia) | `mn-Mong-MN` |
| 3153 | `0x0C51` | Dzongkha | Dzongkha (Bhutan) | `dz-BT` |
| 3179 | `0x0C6B` | Quechua | Quechua (Peru) | `quz-PE` |
| 4097 | `0x1001` | Arabic | Arabic (Libya) | `ar-LY` |
| 4100 | `0x1004` | Chinese (Simplified) | Chinese (Simplified) (Singapore) | `zh-SG` |
| 4103 | `0x1007` | German | German (Luxembourg) | `de-LU` |
| 4105 | `0x1009` | English | English (Canada) | `en-CA` |
| 4106 | `0x100A` | Spanish | Spanish (Guatemala) | `es-GT` |
| 4108 | `0x100C` | French | French (Switzerland) | `fr-CH` |
| 4122 | `0x101A` | Croatian (Latin) | Croatian (Latin) (Bosnia and Herzegovina) | `hr-BA` |
| 4155 | `0x103B` | Sami (Lule) | Sami (Lule) (Norway) | `smj-NO` |
| 5121 | `0x1401` | Arabic | Arabic (Algeria) | `ar-DZ` |
| 5124 | `0x1404` | Chinese (Traditional) | Chinese (Traditional) (Macao S.A.R.) | `zh-MO` |
| 5127 | `0x1407` | German | German (Liechtenstein) | `de-LI` |
| 5129 | `0x1409` | English | English (New Zealand) | `en-NZ` |
| 5130 | `0x140A` | Spanish | Spanish (Costa Rica) | `es-CR` |
| 5132 | `0x140C` | French | French (Luxembourg) | `fr-LU` |
| 5146 | `0x141A` | Bosnian (Latin) | Bosnian (Latin) (Bosnia and Herzegovina) | `bs-Latn-BA` |
| 5179 | `0x143B` | Sami (Lule) | Sami (Lule) (Sweden) | `smj-SE` |
| 6145 | `0x1801` | Arabic | Arabic (Morocco) | `ar-MA` |
| 6153 | `0x1809` | English | English (Ireland) | `en-IE` |
| 6154 | `0x180A` | Spanish | Spanish (Panama) | `es-PA` |
| 6156 | `0x180C` | French | French (Principality of Monaco) | `fr-MC` |
| 6170 | `0x181A` | Serbian (Latin) | Serbian (Latin) (Bosnia and Herzegovina) | `sr-Latn-BA` |
| 6203 | `0x183B` | Sami (Southern) | Sami (Southern) (Norway) | `sma-NO` |
| 7169 | `0x1C01` | Arabic | Arabic (Tunisia) | `ar-TN` |
| 7177 | `0x1C09` | English | English (South Africa) | `en-ZA` |
| 7178 | `0x1C0A` | Spanish | Spanish (Dominican Republic) | `es-DO` |
| 7180 | `0x1C0C` | French | French (Caribbean) | `fr-029` |
| 7194 | `0x1C1A` | Serbian (Cyrillic) | Serbian (Cyrillic) (Bosnia and Herzegovina) | `sr-Cyrl-BA` |
| 7227 | `0x1C3B` | Sami (Southern) | Sami (Southern) (Sweden) | `sma-SE` |
| 8193 | `0x2001` | Arabic | Arabic (Oman) | `ar-OM` |
| 8201 | `0x2009` | English | English (Jamaica) | `en-JM` |
| 8202 | `0x200A` | Spanish | Spanish (Bolivarian Republic of Venezuela) | `es-VE` |
| 8204 | `0x200C` | French | French (Reunion) | `fr-RE` |
| 8218 | `0x201A` | Bosnian (Cyrillic) | Bosnian (Cyrillic) (Bosnia and Herzegovina) | `bs-Cyrl-BA` |
| 8251 | `0x203B` | Sami (Skolt) | Sami (Skolt) (Finland) | `sms-FI` |
| 9217 | `0x2401` | Arabic | Arabic (Yemen) | `ar-YE` |
| 9225 | `0x2409` | English | English (Caribbean) | `en-029` |
| 9226 | `0x240A` | Spanish | Spanish (Colombia) | `es-CO` |
| 9228 | `0x240C` | French | French (Congo, DRC) | `fr-CD` |
| 9242 | `0x241A` | Serbian (Latin) | Serbian (Latin) (Serbia) | `sr-Latn-RS` |
| 9275 | `0x243B` | Sami (Inari) | Sami (Inari) (Finland) | `smn-FI` |
| 10241 | `0x2801` | Arabic | Arabic (Syria) | `ar-SY` |
| 10249 | `0x2809` | English | English (Belize) | `en-BZ` |
| 10250 | `0x280A` | Spanish | Spanish (Peru) | `es-PE` |
| 10252 | `0x280C` | French | French (Senegal) | `fr-SN` |
| 10266 | `0x281A` | Serbian (Cyrillic) | Serbian (Cyrillic) (Serbia) | `sr-Cyrl-RS` |
| 11265 | `0x2C01` | Arabic | Arabic (Jordan) | `ar-JO` |
| 11273 | `0x2C09` | English | English (Trinidad and Tobago) | `en-TT` |
| 11274 | `0x2C0A` | Spanish | Spanish (Argentina) | `es-AR` |
| 11276 | `0x2C0C` | French | French (Cameroon) | `fr-CM` |
| 11290 | `0x2C1A` | Serbian (Latin) | Serbian (Latin) (Montenegro) | `sr-Latn-ME` |
| 12289 | `0x3001` | Arabic | Arabic (Lebanon) | `ar-LB` |
| 12297 | `0x3009` | English | English (Zimbabwe) | `en-ZW` |
| 12298 | `0x300A` | Spanish | Spanish (Ecuador) | `es-EC` |
| 12300 | `0x300C` | French | French (Côte d'Ivoire) | `fr-CI` |
| 12314 | `0x301A` | Serbian (Cyrillic) | Serbian (Cyrillic) (Montenegro) | `sr-Cyrl-ME` |
| 13313 | `0x3401` | Arabic | Arabic (Kuwait) | `ar-KW` |
| 13321 | `0x3409` | English | English (Republic of the Philippines) | `en-PH` |
| 13322 | `0x340A` | Spanish | Spanish (Chile) | `es-CL` |
| 13324 | `0x340C` | French | French (Mali) | `fr-ML` |
| 14337 | `0x3801` | Arabic | Arabic (U.A.E.) | `ar-AE` |
| 14346 | `0x380A` | Spanish | Spanish (Uruguay) | `es-UY` |
| 14348 | `0x380C` | French | French (Morocco) | `fr-MA` |
| 15361 | `0x3C01` | Arabic | Arabic (Bahrain) | `ar-BH` |
| 15369 | `0x3C09` | English | English (Hong Kong) | `en-HK` |
| 15370 | `0x3C0A` | Spanish | Spanish (Paraguay) | `es-PY` |
| 15372 | `0x3C0C` | French | French (Haiti) | `fr-HT` |
| 16385 | `0x4001` | Arabic | Arabic (Qatar) | `ar-QA` |
| 16393 | `0x4009` | English | English (India) | `en-IN` |
| 16394 | `0x400A` | Spanish | Spanish (Bolivia) | `es-BO` |
| 17417 | `0x4409` | English | English (Malaysia) | `en-MY` |
| 17418 | `0x440A` | Spanish | Spanish (El Salvador) | `es-SV` |
| 18441 | `0x4809` | English | English (Singapore) | `en-SG` |
| 18442 | `0x480A` | Spanish | Spanish (Honduras) | `es-HN` |
| 19465 | `0x4C09` | English | English (United Arab Emirates) | `en-AE` |
| 19466 | `0x4C0A` | Spanish | Spanish (Nicaragua) | `es-NI` |
| 20490 | `0x500A` | Spanish | Spanish (Puerto Rico) | `es-PR` |
| 21514 | `0x540A` | Spanish | Spanish (United States) | `es-US` |
| 22538 | `0x580A` | Spanish | Spanish (Latin America) | `es-419` |
| 23562 | `0x5C0A` | Spanish | Spanish (Cuba) | `es-CU` |
| 25626 | `0x641A` | Bosnian (Cyrillic) | Bosnian (Cyrillic) | `bs-Cyrl` |
| 26650 | `0x681A` | Bosnian (Latin) | Bosnian (Latin) | `bs-Latn` |
| 27674 | `0x6C1A` | Serbian (Cyrillic) | Serbian (Cyrillic) | `sr-Cyrl` |
| 28698 | `0x701A` | Serbian (Latin) | Serbian (Latin) | `sr-Latn` |
| 28731 | `0x703B` | Sami (Inari) | Sami (Inari) | `smn` |
| 29740 | `0x742C` | Azerbaijani (Cyrillic) | Azerbaijani (Cyrillic) | `az-Cyrl` |
| 29755 | `0x743B` | Sami (Skolt) | Sami (Skolt) | `sms` |
| 30724 | `0x7804` | Chinese (Simplified) | Chinese (Simplified) | `zh` |
| 30740 | `0x7814` | Norwegian (Nynorsk) | Norwegian (Nynorsk) | `nn` |
| 30746 | `0x781A` | Bosnian (Latin) | Bosnian (Latin) | `bs` |
| 30764 | `0x782C` | Azerbaijani (Latin) | Azerbaijani (Latin) | `az-Latn` |
| 30779 | `0x783B` | Sami (Southern) | Sami (Southern) | `sma` |
| 30787 | `0x7843` | Uzbek (Cyrillic) | Uzbek (Cyrillic) | `uz-Cyrl` |
| 30800 | `0x7850` | Mongolian (Cyrillic) | Mongolian (Cyrillic) | `mn-Cyrl` |
| 30813 | `0x785D` | Inuktitut (Syllabics) | Inuktitut (Syllabics) | `iu-Cans` |
| 31748 | `0x7C04` | Chinese (Traditional) | Chinese (Traditional) | `zh-Hant` |
| 31764 | `0x7C14` | Norwegian (Bokmal) | Norwegian (Bokmal) | `nb` |
| 31770 | `0x7C1A` | Serbian (Latin) | Serbian (Latin) | `sr` |
| 31784 | `0x7C28` | Tajik (Cyrillic) | Tajik (Cyrillic) | `tg-Cyrl` |
| 31790 | `0x7C2E` | Lower Sorbian | Lower Sorbian | `dsb` |
| 31803 | `0x7C3B` | Sami (Lule) | Sami (Lule) | `smj` |
| 31811 | `0x7C43` | Uzbek (Latin) | Uzbek (Latin) | `uz-Latn` |
| 31814 | `0x7C46` | Punjabi | Punjabi | `pa-Arab` |
| 31824 | `0x7C50` | Mongolian (Traditional Mongolian) | Mongolian (Traditional Mongolian) | `mn-Mong` |
| 31833 | `0x7C59` | Sindhi | Sindhi | `sd-Arab` |
| 31836 | `0x7C5C` | Cherokee | Cherokee | `chr-Cher` |
| 31837 | `0x7C5D` | Inuktitut (Latin) | Inuktitut (Latin) | `iu-Latn` |
| 31839 | `0x7C5F` | Tamazight (Latin) | Tamazight (Latin) | `tzm-Latn` |
| 31847 | `0x7C67` | Fulah (Latin) | Fulah (Latin) | `ff-Latn` |
| 31848 | `0x7C68` | Hausa (Latin) | Hausa (Latin) | `ha-Latn` |
| 31890 | `0x7C92` | Central Kurdish | Central Kurdish | `ku-Arab` |

## The value a language selects

The language on an entry decides which spelling its `value` carries.

| `language` | `value` |
|---|---|
| `null` | The merged Latin value: the transliterated spelling |
| A language name | The national-script spelling, as printed |

A reading whose national-script spelling matches its transliterated one — a
document printed only in Latin — produces one entry, not two.

## The identifiers a document most often carries

Nothing restricts which identifier appears on which document. The pairs below
are the ones a European or Central Asian travel document commonly produces
beside its Latin reading.

| Script on the page | Identifier | `language` |
|---|---|---|
| Greek | 1032 | `Greek` |
| Cyrillic, Bulgarian | 1026 | `Bulgarian` |
| Cyrillic, Kazakh | 1087 | `Kazakh` |
| Cyrillic, Serbian | 3098 | `Serbian (Cyrillic)` |
| Arabic, Egypt | 3073 | `Arabic` |
| Hebrew | 1037 | `Hebrew` |
| Georgian | 1079 | `Georgian` |
| Armenian | 1067 | `Armenian` |

A reading in any of them appears beside the neutral one, not instead of it. A
consumer that wants the Latin spelling reads the entry whose `language` is
`null`; one that wants the printed spelling reads the entry that names a
language.
