|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
/* |
|
4
|
|
|
* This file is part of Respect/Validation. |
|
5
|
|
|
* |
|
6
|
|
|
* (c) Alexandre Gomes Gaigalas <[email protected]> |
|
7
|
|
|
* |
|
8
|
|
|
* For the full copyright and license information, please view the "LICENSE.md" |
|
9
|
|
|
* file that was distributed with this source code. |
|
10
|
|
|
*/ |
|
11
|
|
|
|
|
12
|
|
|
declare(strict_types=1); |
|
13
|
|
|
|
|
14
|
|
|
namespace Respect\Validation\Rules; |
|
15
|
|
|
|
|
16
|
|
|
use Respect\Validation\Exceptions\ComponentException; |
|
17
|
|
|
use function array_column; |
|
18
|
|
|
use function array_filter; |
|
19
|
|
|
use function array_search; |
|
20
|
|
|
|
|
21
|
|
|
/** |
|
22
|
|
|
* Validates whether the input is language code based on ISO 639. |
|
23
|
|
|
* |
|
24
|
|
|
* @author Danilo Benevides <[email protected]> |
|
25
|
|
|
* @author Emmerson <[email protected]> |
|
26
|
|
|
* @author Henrique Moody <[email protected]> |
|
27
|
|
|
*/ |
|
28
|
|
|
final class LanguageCode extends AbstractEnvelope |
|
29
|
|
|
{ |
|
30
|
|
|
public const ALPHA2 = 'alpha-2'; |
|
31
|
|
|
public const ALPHA3 = 'alpha-3'; |
|
32
|
|
|
public const AVAILABLE_SETS = [ |
|
33
|
|
|
self::ALPHA2, |
|
34
|
|
|
self::ALPHA3, |
|
35
|
|
|
]; |
|
36
|
|
|
|
|
37
|
|
|
/** |
|
38
|
|
|
* @see http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt |
|
39
|
|
|
* |
|
40
|
|
|
* @var array |
|
41
|
|
|
*/ |
|
42
|
|
|
public const LANGUAGE_CODES = [ |
|
43
|
|
|
['aa', 'aar'], // Afar |
|
44
|
|
|
['ab', 'abk'], // Abkhazian |
|
45
|
|
|
['', 'ace'], // Achinese |
|
46
|
|
|
['', 'ach'], // Acoli |
|
47
|
|
|
['', 'ada'], // Adangme |
|
48
|
|
|
['', 'ady'], // Adyghe; Adygei |
|
49
|
|
|
['', 'afa'], // Afro-asiatic languages |
|
50
|
|
|
['', 'afh'], // Afrihili |
|
51
|
|
|
['af', 'afr'], // Afrikaans |
|
52
|
|
|
['', 'ain'], // Ainu |
|
53
|
|
|
['ak', 'aka'], // Akan |
|
54
|
|
|
['', 'akk'], // Akkadian |
|
55
|
|
|
['sq', 'alb'], // Albanian |
|
56
|
|
|
['', 'ale'], // Aleut |
|
57
|
|
|
['', 'alg'], // Algonquian languages |
|
58
|
|
|
['', 'alt'], // Southern altai |
|
59
|
|
|
['am', 'amh'], // Amharic |
|
60
|
|
|
['', 'ang'], // English, old (ca.450-1100) |
|
61
|
|
|
['', 'anp'], // Angika |
|
62
|
|
|
['', 'apa'], // Apache languages |
|
63
|
|
|
['ar', 'ara'], // Arabic |
|
64
|
|
|
['', 'arc'], // Official aramaic (700-300 bce); Imperial aramaic (700-300 bce) |
|
65
|
|
|
['an', 'arg'], // Aragonese |
|
66
|
|
|
['hy', 'arm'], // Armenian |
|
67
|
|
|
['', 'arn'], // Mapudungun; Mapuche |
|
68
|
|
|
['', 'arp'], // Arapaho |
|
69
|
|
|
['', 'art'], // Artificial languages |
|
70
|
|
|
['', 'arw'], // Arawak |
|
71
|
|
|
['as', 'asm'], // Assamese |
|
72
|
|
|
['', 'ast'], // Asturian; Bable; Leonese; Asturleonese |
|
73
|
|
|
['', 'ath'], // Athapascan languages |
|
74
|
|
|
['', 'aus'], // Australian languages |
|
75
|
|
|
['av', 'ava'], // Avaric |
|
76
|
|
|
['ae', 'ave'], // Avestan |
|
77
|
|
|
['', 'awa'], // Awadhi |
|
78
|
|
|
['ay', 'aym'], // Aymara |
|
79
|
|
|
['az', 'aze'], // Azerbaijani |
|
80
|
|
|
['', 'bad'], // Banda languages |
|
81
|
|
|
['', 'bai'], // Bamileke languages |
|
82
|
|
|
['ba', 'bak'], // Bashkir |
|
83
|
|
|
['', 'bal'], // Baluchi |
|
84
|
|
|
['bm', 'bam'], // Bambara |
|
85
|
|
|
['', 'ban'], // Balinese |
|
86
|
|
|
['eu', 'baq'], // Basque |
|
87
|
|
|
['', 'bas'], // Basa |
|
88
|
|
|
['', 'bat'], // Baltic languages |
|
89
|
|
|
['', 'bej'], // Beja; Bedawiyet |
|
90
|
|
|
['be', 'bel'], // Belarusian |
|
91
|
|
|
['', 'bem'], // Bemba |
|
92
|
|
|
['bn', 'ben'], // Bengali |
|
93
|
|
|
['', 'ber'], // Berber languages |
|
94
|
|
|
['', 'bho'], // Bhojpuri |
|
95
|
|
|
['bh', 'bih'], // Bihari languages |
|
96
|
|
|
['', 'bik'], // Bikol |
|
97
|
|
|
['', 'bin'], // Bini; Edo |
|
98
|
|
|
['bi', 'bis'], // Bislama |
|
99
|
|
|
['', 'bla'], // Siksika |
|
100
|
|
|
['', 'bnt'], // Bantu (other) |
|
101
|
|
|
['bs', 'bos'], // Bosnian |
|
102
|
|
|
['', 'bra'], // Braj |
|
103
|
|
|
['br', 'bre'], // Breton |
|
104
|
|
|
['', 'btk'], // Batak languages |
|
105
|
|
|
['', 'bua'], // Buriat |
|
106
|
|
|
['', 'bug'], // Buginese |
|
107
|
|
|
['bg', 'bul'], // Bulgarian |
|
108
|
|
|
['my', 'bur'], // Burmese |
|
109
|
|
|
['', 'byn'], // Blin; Bilin |
|
110
|
|
|
['', 'cad'], // Caddo |
|
111
|
|
|
['', 'cai'], // Central american indian languages |
|
112
|
|
|
['', 'car'], // Galibi carib |
|
113
|
|
|
['ca', 'cat'], // Catalan; Valencian |
|
114
|
|
|
['', 'cau'], // Caucasian languages |
|
115
|
|
|
['', 'ceb'], // Cebuano |
|
116
|
|
|
['', 'cel'], // Celtic languages |
|
117
|
|
|
['ch', 'cha'], // Chamorro |
|
118
|
|
|
['', 'chb'], // Chibcha |
|
119
|
|
|
['ce', 'che'], // Chechen |
|
120
|
|
|
['', 'chg'], // Chagatai |
|
121
|
|
|
['zh', 'chi'], // Chinese |
|
122
|
|
|
['', 'chk'], // Chuukese |
|
123
|
|
|
['', 'chm'], // Mari |
|
124
|
|
|
['', 'chn'], // Chinook jargon |
|
125
|
|
|
['', 'cho'], // Choctaw |
|
126
|
|
|
['', 'chp'], // Chipewyan; Dene suline |
|
127
|
|
|
['', 'chr'], // Cherokee |
|
128
|
|
|
['cu', 'chu'], // Church slavic; Old slavonic; Church slavonic; Old bulgarian; Old church slavonic |
|
129
|
|
|
['cv', 'chv'], // Chuvash |
|
130
|
|
|
['', 'chy'], // Cheyenne |
|
131
|
|
|
['', 'cmc'], // Chamic languages |
|
132
|
|
|
['', 'cop'], // Coptic |
|
133
|
|
|
['kw', 'cor'], // Cornish |
|
134
|
|
|
['co', 'cos'], // Corsican |
|
135
|
|
|
['', 'cpe'], // Creoles and pidgins, english based |
|
136
|
|
|
['', 'cpf'], // Creoles and pidgins, french-based |
|
137
|
|
|
['', 'cpp'], // Creoles and pidgins, portuguese-based |
|
138
|
|
|
['cr', 'cre'], // Cree |
|
139
|
|
|
['', 'crh'], // Crimean tatar; Crimean turkish |
|
140
|
|
|
['', 'crp'], // Creoles and pidgins |
|
141
|
|
|
['', 'csb'], // Kashubian |
|
142
|
|
|
['', 'cus'], // Cushitic languages |
|
143
|
|
|
['cs', 'cze'], // Czech |
|
144
|
|
|
['', 'dak'], // Dakota |
|
145
|
|
|
['da', 'dan'], // Danish |
|
146
|
|
|
['', 'dar'], // Dargwa |
|
147
|
|
|
['', 'day'], // Land dayak languages |
|
148
|
|
|
['', 'del'], // Delaware |
|
149
|
|
|
['', 'den'], // Slave (athapascan) |
|
150
|
|
|
['', 'dgr'], // Dogrib |
|
151
|
|
|
['', 'din'], // Dinka |
|
152
|
|
|
['dv', 'div'], // Divehi; Dhivehi; Maldivian |
|
153
|
|
|
['', 'doi'], // Dogri |
|
154
|
|
|
['', 'dra'], // Dravidian languages |
|
155
|
|
|
['', 'dsb'], // Lower sorbian |
|
156
|
|
|
['', 'dua'], // Duala |
|
157
|
|
|
['', 'dum'], // Dutch, middle (ca.1050-1350) |
|
158
|
|
|
['nl', 'dut'], // Dutch; Flemish |
|
159
|
|
|
['', 'dyu'], // Dyula |
|
160
|
|
|
['dz', 'dzo'], // Dzongkha |
|
161
|
|
|
['', 'efi'], // Efik |
|
162
|
|
|
['', 'egy'], // Egyptian (ancient) |
|
163
|
|
|
['', 'eka'], // Ekajuk |
|
164
|
|
|
['', 'elx'], // Elamite |
|
165
|
|
|
['en', 'eng'], // English |
|
166
|
|
|
['', 'enm'], // English, middle (1100-1500) |
|
167
|
|
|
['eo', 'epo'], // Esperanto |
|
168
|
|
|
['et', 'est'], // Estonian |
|
169
|
|
|
['ee', 'ewe'], // Ewe |
|
170
|
|
|
['', 'ewo'], // Ewondo |
|
171
|
|
|
['', 'fan'], // Fang |
|
172
|
|
|
['fo', 'fao'], // Faroese |
|
173
|
|
|
['', 'fat'], // Fanti |
|
174
|
|
|
['fj', 'fij'], // Fijian |
|
175
|
|
|
['', 'fil'], // Filipino; Pilipino |
|
176
|
|
|
['fi', 'fin'], // Finnish |
|
177
|
|
|
['', 'fiu'], // Finno-ugrian languages |
|
178
|
|
|
['', 'fon'], // Fon |
|
179
|
|
|
['fr', 'fre'], // French |
|
180
|
|
|
['', 'frm'], // French, middle (ca.1400-1600) |
|
181
|
|
|
['', 'fro'], // French, old (842-ca.1400) |
|
182
|
|
|
['', 'frr'], // Northern frisian |
|
183
|
|
|
['', 'frs'], // Eastern frisian |
|
184
|
|
|
['fy', 'fry'], // Western frisian |
|
185
|
|
|
['ff', 'ful'], // Fulah |
|
186
|
|
|
['', 'fur'], // Friulian |
|
187
|
|
|
['', 'gaa'], // Ga |
|
188
|
|
|
['', 'gay'], // Gayo |
|
189
|
|
|
['', 'gba'], // Gbaya |
|
190
|
|
|
['', 'gem'], // Germanic languages |
|
191
|
|
|
['ka', 'geo'], // Georgian |
|
192
|
|
|
['de', 'ger'], // German |
|
193
|
|
|
['', 'gez'], // Geez |
|
194
|
|
|
['', 'gil'], // Gilbertese |
|
195
|
|
|
['gd', 'gla'], // Gaelic; Scottish gaelic |
|
196
|
|
|
['ga', 'gle'], // Irish |
|
197
|
|
|
['gl', 'glg'], // Galician |
|
198
|
|
|
['gv', 'glv'], // Manx |
|
199
|
|
|
['', 'gmh'], // German, middle high (ca.1050-1500) |
|
200
|
|
|
['', 'goh'], // German, old high (ca.750-1050) |
|
201
|
|
|
['', 'gon'], // Gondi |
|
202
|
|
|
['', 'gor'], // Gorontalo |
|
203
|
|
|
['', 'got'], // Gothic |
|
204
|
|
|
['', 'grb'], // Grebo |
|
205
|
|
|
['', 'grc'], // Greek, ancient (to 1453) |
|
206
|
|
|
['el', 'gre'], // Greek, modern (1453-) |
|
207
|
|
|
['gn', 'grn'], // Guarani |
|
208
|
|
|
['', 'gsw'], // Swiss german; Alemannic; Alsatian |
|
209
|
|
|
['gu', 'guj'], // Gujarati |
|
210
|
|
|
['', 'gwi'], // Gwich'in |
|
211
|
|
|
['', 'hai'], // Haida |
|
212
|
|
|
['ht', 'hat'], // Haitian; Haitian creole |
|
213
|
|
|
['ha', 'hau'], // Hausa |
|
214
|
|
|
['', 'haw'], // Hawaiian |
|
215
|
|
|
['he', 'heb'], // Hebrew |
|
216
|
|
|
['hz', 'her'], // Herero |
|
217
|
|
|
['', 'hil'], // Hiligaynon |
|
218
|
|
|
['', 'him'], // Himachali languages; Western pahari languages |
|
219
|
|
|
['hi', 'hin'], // Hindi |
|
220
|
|
|
['', 'hit'], // Hittite |
|
221
|
|
|
['', 'hmn'], // Hmong; Mong |
|
222
|
|
|
['ho', 'hmo'], // Hiri motu |
|
223
|
|
|
['hr', 'hrv'], // Croatian |
|
224
|
|
|
['', 'hsb'], // Upper sorbian |
|
225
|
|
|
['hu', 'hun'], // Hungarian |
|
226
|
|
|
['', 'hup'], // Hupa |
|
227
|
|
|
['', 'iba'], // Iban |
|
228
|
|
|
['ig', 'ibo'], // Igbo |
|
229
|
|
|
['is', 'ice'], // Icelandic |
|
230
|
|
|
['io', 'ido'], // Ido |
|
231
|
|
|
['ii', 'iii'], // Sichuan yi; Nuosu |
|
232
|
|
|
['', 'ijo'], // Ijo languages |
|
233
|
|
|
['iu', 'iku'], // Inuktitut |
|
234
|
|
|
['ie', 'ile'], // Interlingue; Occidental |
|
235
|
|
|
['', 'ilo'], // Iloko |
|
236
|
|
|
['ia', 'ina'], // Interlingua (international auxiliary language association) |
|
237
|
|
|
['', 'inc'], // Indic languages |
|
238
|
|
|
['id', 'ind'], // Indonesian |
|
239
|
|
|
['', 'ine'], // Indo-european languages |
|
240
|
|
|
['', 'inh'], // Ingush |
|
241
|
|
|
['ik', 'ipk'], // Inupiaq |
|
242
|
|
|
['', 'ira'], // Iranian languages |
|
243
|
|
|
['', 'iro'], // Iroquoian languages |
|
244
|
|
|
['it', 'ita'], // Italian |
|
245
|
|
|
['jv', 'jav'], // Javanese |
|
246
|
|
|
['', 'jbo'], // Lojban |
|
247
|
|
|
['ja', 'jpn'], // Japanese |
|
248
|
|
|
['', 'jpr'], // Judeo-persian |
|
249
|
|
|
['', 'jrb'], // Judeo-arabic |
|
250
|
|
|
['', 'kaa'], // Kara-kalpak |
|
251
|
|
|
['', 'kab'], // Kabyle |
|
252
|
|
|
['', 'kac'], // Kachin; Jingpho |
|
253
|
|
|
['kl', 'kal'], // Kalaallisut; Greenlandic |
|
254
|
|
|
['', 'kam'], // Kamba |
|
255
|
|
|
['kn', 'kan'], // Kannada |
|
256
|
|
|
['', 'kar'], // Karen languages |
|
257
|
|
|
['ks', 'kas'], // Kashmiri |
|
258
|
|
|
['kr', 'kau'], // Kanuri |
|
259
|
|
|
['', 'kaw'], // Kawi |
|
260
|
|
|
['kk', 'kaz'], // Kazakh |
|
261
|
|
|
['', 'kbd'], // Kabardian |
|
262
|
|
|
['', 'kha'], // Khasi |
|
263
|
|
|
['', 'khi'], // Khoisan languages |
|
264
|
|
|
['km', 'khm'], // Central khmer |
|
265
|
|
|
['', 'kho'], // Khotanese; Sakan |
|
266
|
|
|
['ki', 'kik'], // Kikuyu; Gikuyu |
|
267
|
|
|
['rw', 'kin'], // Kinyarwanda |
|
268
|
|
|
['ky', 'kir'], // Kirghiz; Kyrgyz |
|
269
|
|
|
['', 'kmb'], // Kimbundu |
|
270
|
|
|
['', 'kok'], // Konkani |
|
271
|
|
|
['kv', 'kom'], // Komi |
|
272
|
|
|
['kg', 'kon'], // Kongo |
|
273
|
|
|
['ko', 'kor'], // Korean |
|
274
|
|
|
['', 'kos'], // Kosraean |
|
275
|
|
|
['', 'kpe'], // Kpelle |
|
276
|
|
|
['', 'krc'], // Karachay-balkar |
|
277
|
|
|
['', 'krl'], // Karelian |
|
278
|
|
|
['', 'kro'], // Kru languages |
|
279
|
|
|
['', 'kru'], // Kurukh |
|
280
|
|
|
['kj', 'kua'], // Kuanyama; Kwanyama |
|
281
|
|
|
['', 'kum'], // Kumyk |
|
282
|
|
|
['ku', 'kur'], // Kurdish |
|
283
|
|
|
['', 'kut'], // Kutenai |
|
284
|
|
|
['', 'lad'], // Ladino |
|
285
|
|
|
['', 'lah'], // Lahnda |
|
286
|
|
|
['', 'lam'], // Lamba |
|
287
|
|
|
['lo', 'lao'], // Lao |
|
288
|
|
|
['la', 'lat'], // Latin |
|
289
|
|
|
['lv', 'lav'], // Latvian |
|
290
|
|
|
['', 'lez'], // Lezghian |
|
291
|
|
|
['li', 'lim'], // Limburgan; Limburger; Limburgish |
|
292
|
|
|
['ln', 'lin'], // Lingala |
|
293
|
|
|
['lt', 'lit'], // Lithuanian |
|
294
|
|
|
['', 'lol'], // Mongo |
|
295
|
|
|
['', 'loz'], // Lozi |
|
296
|
|
|
['lb', 'ltz'], // Luxembourgish; Letzeburgesch |
|
297
|
|
|
['', 'lua'], // Luba-lulua |
|
298
|
|
|
['lu', 'lub'], // Luba-katanga |
|
299
|
|
|
['lg', 'lug'], // Ganda |
|
300
|
|
|
['', 'lui'], // Luiseno |
|
301
|
|
|
['', 'lun'], // Lunda |
|
302
|
|
|
['', 'luo'], // Luo (kenya and tanzania) |
|
303
|
|
|
['', 'lus'], // Lushai |
|
304
|
|
|
['mk', 'mac'], // Macedonian |
|
305
|
|
|
['', 'mad'], // Madurese |
|
306
|
|
|
['', 'mag'], // Magahi |
|
307
|
|
|
['mh', 'mah'], // Marshallese |
|
308
|
|
|
['', 'mai'], // Maithili |
|
309
|
|
|
['', 'mak'], // Makasar |
|
310
|
|
|
['ml', 'mal'], // Malayalam |
|
311
|
|
|
['', 'man'], // Mandingo |
|
312
|
|
|
['mi', 'mao'], // Maori |
|
313
|
|
|
['', 'map'], // Austronesian languages |
|
314
|
|
|
['mr', 'mar'], // Marathi |
|
315
|
|
|
['', 'mas'], // Masai |
|
316
|
|
|
['ms', 'may'], // Malay |
|
317
|
|
|
['', 'mdf'], // Moksha |
|
318
|
|
|
['', 'mdr'], // Mandar |
|
319
|
|
|
['', 'men'], // Mende |
|
320
|
|
|
['', 'mga'], // Irish, middle (900-1200) |
|
321
|
|
|
['', 'mic'], // Mi'kmaq; Micmac |
|
322
|
|
|
['', 'min'], // Minangkabau |
|
323
|
|
|
['', 'mis'], // Uncoded languages |
|
324
|
|
|
['', 'mkh'], // Mon-khmer languages |
|
325
|
|
|
['mg', 'mlg'], // Malagasy |
|
326
|
|
|
['mt', 'mlt'], // Maltese |
|
327
|
|
|
['', 'mnc'], // Manchu |
|
328
|
|
|
['', 'mni'], // Manipuri |
|
329
|
|
|
['', 'mno'], // Manobo languages |
|
330
|
|
|
['', 'moh'], // Mohawk |
|
331
|
|
|
['mn', 'mon'], // Mongolian |
|
332
|
|
|
['', 'mos'], // Mossi |
|
333
|
|
|
['', 'mul'], // Multiple languages |
|
334
|
|
|
['', 'mun'], // Munda languages |
|
335
|
|
|
['', 'mus'], // Creek |
|
336
|
|
|
['', 'mwl'], // Mirandese |
|
337
|
|
|
['', 'mwr'], // Marwari |
|
338
|
|
|
['', 'myn'], // Mayan languages |
|
339
|
|
|
['', 'myv'], // Erzya |
|
340
|
|
|
['', 'nah'], // Nahuatl languages |
|
341
|
|
|
['', 'nai'], // North american indian languages |
|
342
|
|
|
['', 'nap'], // Neapolitan |
|
343
|
|
|
['na', 'nau'], // Nauru |
|
344
|
|
|
['nv', 'nav'], // Navajo; Navaho |
|
345
|
|
|
['nr', 'nbl'], // Ndebele, south; South ndebele |
|
346
|
|
|
['nd', 'nde'], // Ndebele, north; North ndebele |
|
347
|
|
|
['ng', 'ndo'], // Ndonga |
|
348
|
|
|
['', 'nds'], // Low german; Low saxon; German, low; Saxon, low |
|
349
|
|
|
['ne', 'nep'], // Nepali |
|
350
|
|
|
['', 'new'], // Nepal bhasa; Newari |
|
351
|
|
|
['', 'nia'], // Nias |
|
352
|
|
|
['', 'nic'], // Niger-kordofanian languages |
|
353
|
|
|
['', 'niu'], // Niuean |
|
354
|
|
|
['nn', 'nno'], // Norwegian nynorsk; Nynorsk, norwegian |
|
355
|
|
|
['nb', 'nob'], // Bokmål, norwegian; Norwegian bokmål |
|
356
|
|
|
['', 'nog'], // Nogai |
|
357
|
|
|
['', 'non'], // Norse, old |
|
358
|
|
|
['no', 'nor'], // Norwegian |
|
359
|
|
|
['', 'nqo'], // N'ko |
|
360
|
|
|
['', 'nso'], // Pedi; Sepedi; Northern sotho |
|
361
|
|
|
['', 'nub'], // Nubian languages |
|
362
|
|
|
['', 'nwc'], // Classical newari; Old newari; Classical nepal bhasa |
|
363
|
|
|
['ny', 'nya'], // Chichewa; Chewa; Nyanja |
|
364
|
|
|
['', 'nym'], // Nyamwezi |
|
365
|
|
|
['', 'nyn'], // Nyankole |
|
366
|
|
|
['', 'nyo'], // Nyoro |
|
367
|
|
|
['', 'nzi'], // Nzima |
|
368
|
|
|
['oc', 'oci'], // Occitan (post 1500); Provençal |
|
369
|
|
|
['oj', 'oji'], // Ojibwa |
|
370
|
|
|
['or', 'ori'], // Oriya |
|
371
|
|
|
['om', 'orm'], // Oromo |
|
372
|
|
|
['', 'osa'], // Osage |
|
373
|
|
|
['os', 'oss'], // Ossetian; Ossetic |
|
374
|
|
|
['', 'ota'], // Turkish, ottoman (1500-1928) |
|
375
|
|
|
['', 'oto'], // Otomian languages |
|
376
|
|
|
['', 'paa'], // Papuan languages |
|
377
|
|
|
['', 'pag'], // Pangasinan |
|
378
|
|
|
['', 'pal'], // Pahlavi |
|
379
|
|
|
['', 'pam'], // Pampanga; Kapampangan |
|
380
|
|
|
['pa', 'pan'], // Panjabi; Punjabi |
|
381
|
|
|
['', 'pap'], // Papiamento |
|
382
|
|
|
['', 'pau'], // Palauan |
|
383
|
|
|
['', 'peo'], // Persian, old (ca.600-400 b.c.) |
|
384
|
|
|
['fa', 'per'], // Persian |
|
385
|
|
|
['', 'phi'], // Philippine languages |
|
386
|
|
|
['', 'phn'], // Phoenician |
|
387
|
|
|
['pi', 'pli'], // Pali |
|
388
|
|
|
['pl', 'pol'], // Polish |
|
389
|
|
|
['', 'pon'], // Pohnpeian |
|
390
|
|
|
['pt', 'por'], // Portuguese |
|
391
|
|
|
['', 'pra'], // Prakrit languages |
|
392
|
|
|
['', 'pro'], // Provençal, old (to 1500) |
|
393
|
|
|
['ps', 'pus'], // Pushto; Pashto |
|
394
|
|
|
['', 'qaa-qtz'], // Reserved for local use |
|
395
|
|
|
['qu', 'que'], // Quechua |
|
396
|
|
|
['', 'raj'], // Rajasthani |
|
397
|
|
|
['', 'rap'], // Rapanui |
|
398
|
|
|
['', 'rar'], // Rarotongan; Cook islands maori |
|
399
|
|
|
['', 'roa'], // Romance languages |
|
400
|
|
|
['rm', 'roh'], // Romansh |
|
401
|
|
|
['', 'rom'], // Romany |
|
402
|
|
|
['ro', 'rum'], // Romanian; Moldavian; Moldovan |
|
403
|
|
|
['rn', 'run'], // Rundi |
|
404
|
|
|
['', 'rup'], // Aromanian; Arumanian; Macedo-romanian |
|
405
|
|
|
['ru', 'rus'], // Russian |
|
406
|
|
|
['', 'sad'], // Sandawe |
|
407
|
|
|
['sg', 'sag'], // Sango |
|
408
|
|
|
['', 'sah'], // Yakut |
|
409
|
|
|
['', 'sai'], // South american indian (other) |
|
410
|
|
|
['', 'sal'], // Salishan languages |
|
411
|
|
|
['', 'sam'], // Samaritan aramaic |
|
412
|
|
|
['sa', 'san'], // Sanskrit |
|
413
|
|
|
['', 'sas'], // Sasak |
|
414
|
|
|
['', 'sat'], // Santali |
|
415
|
|
|
['', 'scn'], // Sicilian |
|
416
|
|
|
['', 'sco'], // Scots |
|
417
|
|
|
['', 'sel'], // Selkup |
|
418
|
|
|
['', 'sem'], // Semitic languages |
|
419
|
|
|
['', 'sga'], // Irish, old (to 900) |
|
420
|
|
|
['', 'sgn'], // Sign languages |
|
421
|
|
|
['', 'shn'], // Shan |
|
422
|
|
|
['', 'sid'], // Sidamo |
|
423
|
|
|
['si', 'sin'], // Sinhala; Sinhalese |
|
424
|
|
|
['', 'sio'], // Siouan languages |
|
425
|
|
|
['', 'sit'], // Sino-tibetan languages |
|
426
|
|
|
['', 'sla'], // Slavic languages |
|
427
|
|
|
['sk', 'slo'], // Slovak |
|
428
|
|
|
['sl', 'slv'], // Slovenian |
|
429
|
|
|
['', 'sma'], // Southern sami |
|
430
|
|
|
['se', 'sme'], // Northern sami |
|
431
|
|
|
['', 'smi'], // Sami languages |
|
432
|
|
|
['', 'smj'], // Lule sami |
|
433
|
|
|
['', 'smn'], // Inari sami |
|
434
|
|
|
['sm', 'smo'], // Samoan |
|
435
|
|
|
['', 'sms'], // Skolt sami |
|
436
|
|
|
['sn', 'sna'], // Shona |
|
437
|
|
|
['sd', 'snd'], // Sindhi |
|
438
|
|
|
['', 'snk'], // Soninke |
|
439
|
|
|
['', 'sog'], // Sogdian |
|
440
|
|
|
['so', 'som'], // Somali |
|
441
|
|
|
['', 'son'], // Songhai languages |
|
442
|
|
|
['st', 'sot'], // Sotho, southern |
|
443
|
|
|
['es', 'spa'], // Spanish; Castilian |
|
444
|
|
|
['sc', 'srd'], // Sardinian |
|
445
|
|
|
['', 'srn'], // Sranan tongo |
|
446
|
|
|
['sr', 'srp'], // Serbian |
|
447
|
|
|
['', 'srr'], // Serer |
|
448
|
|
|
['', 'ssa'], // Nilo-saharan languages |
|
449
|
|
|
['ss', 'ssw'], // Swati |
|
450
|
|
|
['', 'suk'], // Sukuma |
|
451
|
|
|
['su', 'sun'], // Sundanese |
|
452
|
|
|
['', 'sus'], // Susu |
|
453
|
|
|
['', 'sux'], // Sumerian |
|
454
|
|
|
['sw', 'swa'], // Swahili |
|
455
|
|
|
['sv', 'swe'], // Swedish |
|
456
|
|
|
['', 'syc'], // Classical syriac |
|
457
|
|
|
['', 'syr'], // Syriac |
|
458
|
|
|
['ty', 'tah'], // Tahitian |
|
459
|
|
|
['', 'tai'], // Tai languages |
|
460
|
|
|
['ta', 'tam'], // Tamil |
|
461
|
|
|
['tt', 'tat'], // Tatar |
|
462
|
|
|
['te', 'tel'], // Telugu |
|
463
|
|
|
['', 'tem'], // Timne |
|
464
|
|
|
['', 'ter'], // Tereno |
|
465
|
|
|
['', 'tet'], // Tetum |
|
466
|
|
|
['tg', 'tgk'], // Tajik |
|
467
|
|
|
['tl', 'tgl'], // Tagalog |
|
468
|
|
|
['th', 'tha'], // Thai |
|
469
|
|
|
['bo', 'tib'], // Tibetan |
|
470
|
|
|
['', 'tig'], // Tigre |
|
471
|
|
|
['ti', 'tir'], // Tigrinya |
|
472
|
|
|
['', 'tiv'], // Tiv |
|
473
|
|
|
['', 'tkl'], // Tokelau |
|
474
|
|
|
['', 'tlh'], // Klingon; Tlhingan-hol |
|
475
|
|
|
['', 'tli'], // Tlingit |
|
476
|
|
|
['', 'tmh'], // Tamashek |
|
477
|
|
|
['', 'tog'], // Tonga (nyasa) |
|
478
|
|
|
['to', 'ton'], // Tonga (tonga islands) |
|
479
|
|
|
['', 'tpi'], // Tok pisin |
|
480
|
|
|
['', 'tsi'], // Tsimshian |
|
481
|
|
|
['tn', 'tsn'], // Tswana |
|
482
|
|
|
['ts', 'tso'], // Tsonga |
|
483
|
|
|
['tk', 'tuk'], // Turkmen |
|
484
|
|
|
['', 'tum'], // Tumbuka |
|
485
|
|
|
['', 'tup'], // Tupi languages |
|
486
|
|
|
['tr', 'tur'], // Turkish |
|
487
|
|
|
['', 'tut'], // Altaic languages |
|
488
|
|
|
['', 'tvl'], // Tuvalu |
|
489
|
|
|
['tw', 'twi'], // Twi |
|
490
|
|
|
['', 'tyv'], // Tuvinian |
|
491
|
|
|
['', 'udm'], // Udmurt |
|
492
|
|
|
['', 'uga'], // Ugaritic |
|
493
|
|
|
['ug', 'uig'], // Uighur; Uyghur |
|
494
|
|
|
['uk', 'ukr'], // Ukrainian |
|
495
|
|
|
['', 'umb'], // Umbundu |
|
496
|
|
|
['', 'und'], // Undetermined |
|
497
|
|
|
['ur', 'urd'], // Urdu |
|
498
|
|
|
['uz', 'uzb'], // Uzbek |
|
499
|
|
|
['', 'vai'], // Vai |
|
500
|
|
|
['ve', 'ven'], // Venda |
|
501
|
|
|
['vi', 'vie'], // Vietnamese |
|
502
|
|
|
['vo', 'vol'], // Volapük |
|
503
|
|
|
['', 'vot'], // Votic |
|
504
|
|
|
['', 'wak'], // Wakashan languages |
|
505
|
|
|
['', 'wal'], // Walamo |
|
506
|
|
|
['', 'war'], // Waray |
|
507
|
|
|
['', 'was'], // Washo |
|
508
|
|
|
['cy', 'wel'], // Welsh |
|
509
|
|
|
['', 'wen'], // Sorbian languages |
|
510
|
|
|
['wa', 'wln'], // Walloon |
|
511
|
|
|
['wo', 'wol'], // Wolof |
|
512
|
|
|
['', 'xal'], // Kalmyk; Oirat |
|
513
|
|
|
['xh', 'xho'], // Xhosa |
|
514
|
|
|
['', 'yao'], // Yao |
|
515
|
|
|
['', 'yap'], // Yapese |
|
516
|
|
|
['yi', 'yid'], // Yiddish |
|
517
|
|
|
['yo', 'yor'], // Yoruba |
|
518
|
|
|
['', 'ypk'], // Yupik languages |
|
519
|
|
|
['', 'zap'], // Zapotec |
|
520
|
|
|
['', 'zbl'], // Blissymbols; Blissymbolics; Bliss |
|
521
|
|
|
['', 'zen'], // Zenaga |
|
522
|
|
|
['', 'zgh'], // Standard moroccan tamazight |
|
523
|
|
|
['za', 'zha'], // Zhuang; Chuang |
|
524
|
|
|
['', 'znd'], // Zande languages |
|
525
|
|
|
['zu', 'zul'], // Zulu |
|
526
|
|
|
['', 'zun'], // Zuni |
|
527
|
|
|
['', 'zxx'], // No linguistic content; Not applicable |
|
528
|
|
|
['', 'zza'], // Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki |
|
529
|
|
|
]; |
|
530
|
|
|
|
|
531
|
|
|
/** |
|
532
|
|
|
* Initializes the rule defining the ISO 639 set. |
|
533
|
|
|
* |
|
534
|
|
|
* @param string $set |
|
535
|
|
|
* |
|
536
|
|
|
* @throws ComponentException |
|
537
|
|
|
*/ |
|
538
|
2 |
|
public function __construct(string $set = self::ALPHA2) |
|
539
|
|
|
{ |
|
540
|
2 |
|
$index = array_search($set, self::AVAILABLE_SETS, true); |
|
541
|
2 |
|
if (false === $index) { |
|
542
|
1 |
|
throw new ComponentException(sprintf('"%s" is not a valid language set for ISO 639', $set)); |
|
543
|
|
|
} |
|
544
|
|
|
|
|
545
|
1 |
|
parent::__construct(new In($this->getHaystack($index), true), ['set' => $set]); |
|
|
|
|
|
|
546
|
1 |
|
} |
|
547
|
|
|
|
|
548
|
1 |
|
private function getHaystack(int $index): array |
|
549
|
|
|
{ |
|
550
|
1 |
|
return array_filter(array_column(self::LANGUAGE_CODES, $index)); |
|
551
|
|
|
} |
|
552
|
|
|
} |
|
553
|
|
|
|