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
|
|
|
|