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
|
|
|
namespace Respect\Validation\Rules; |
13
|
|
|
|
14
|
|
|
use Respect\Validation\Exceptions\ComponentException; |
15
|
|
|
|
16
|
|
|
/** |
17
|
|
|
* Validates languages in ISO 639. |
18
|
|
|
*/ |
19
|
|
|
class LanguageCode extends AbstractRule |
20
|
|
|
{ |
21
|
|
|
const ALPHA2 = 'alpha-2'; |
22
|
|
|
const ALPHA3 = 'alpha-3'; |
23
|
|
|
|
24
|
|
|
/** |
25
|
|
|
* @link http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt |
26
|
|
|
* |
27
|
|
|
* @var array |
28
|
|
|
*/ |
29
|
|
|
protected $languageCodeList = [ |
30
|
|
|
['AA', 'AAR'], // AFAR |
31
|
|
|
['AB', 'ABK'], // ABKHAZIAN |
32
|
|
|
['', 'ACE'], // ACHINESE |
33
|
|
|
['', 'ACH'], // ACOLI |
34
|
|
|
['', 'ADA'], // ADANGME |
35
|
|
|
['', 'ADY'], // ADYGHE; ADYGEI |
36
|
|
|
['', 'AFA'], // AFRO-ASIATIC LANGUAGES |
37
|
|
|
['', 'AFH'], // AFRIHILI |
38
|
|
|
['AF', 'AFR'], // AFRIKAANS |
39
|
|
|
['', 'AIN'], // AINU |
40
|
|
|
['AK', 'AKA'], // AKAN |
41
|
|
|
['', 'AKK'], // AKKADIAN |
42
|
|
|
['SQ', 'ALB'], // ALBANIAN |
43
|
|
|
['', 'ALE'], // ALEUT |
44
|
|
|
['', 'ALG'], // ALGONQUIAN LANGUAGES |
45
|
|
|
['', 'ALT'], // SOUTHERN ALTAI |
46
|
|
|
['AM', 'AMH'], // AMHARIC |
47
|
|
|
['', 'ANG'], // ENGLISH, OLD (CA.450-1100) |
48
|
|
|
['', 'ANP'], // ANGIKA |
49
|
|
|
['', 'APA'], // APACHE LANGUAGES |
50
|
|
|
['AR', 'ARA'], // ARABIC |
51
|
|
|
['', 'ARC'], // OFFICIAL ARAMAIC (700-300 BCE); IMPERIAL ARAMAIC (700-300 BCE) |
52
|
|
|
['AN', 'ARG'], // ARAGONESE |
53
|
|
|
['HY', 'ARM'], // ARMENIAN |
54
|
|
|
['', 'ARN'], // MAPUDUNGUN; MAPUCHE |
55
|
|
|
['', 'ARP'], // ARAPAHO |
56
|
|
|
['', 'ART'], // ARTIFICIAL LANGUAGES |
57
|
|
|
['', 'ARW'], // ARAWAK |
58
|
|
|
['AS', 'ASM'], // ASSAMESE |
59
|
|
|
['', 'AST'], // ASTURIAN; BABLE; LEONESE; ASTURLEONESE |
60
|
|
|
['', 'ATH'], // ATHAPASCAN LANGUAGES |
61
|
|
|
['', 'AUS'], // AUSTRALIAN LANGUAGES |
62
|
|
|
['AV', 'AVA'], // AVARIC |
63
|
|
|
['AE', 'AVE'], // AVESTAN |
64
|
|
|
['', 'AWA'], // AWADHI |
65
|
|
|
['AY', 'AYM'], // AYMARA |
66
|
|
|
['AZ', 'AZE'], // AZERBAIJANI |
67
|
|
|
['', 'BAD'], // BANDA LANGUAGES |
68
|
|
|
['', 'BAI'], // BAMILEKE LANGUAGES |
69
|
|
|
['BA', 'BAK'], // BASHKIR |
70
|
|
|
['', 'BAL'], // BALUCHI |
71
|
|
|
['BM', 'BAM'], // BAMBARA |
72
|
|
|
['', 'BAN'], // BALINESE |
73
|
|
|
['EU', 'BAQ'], // BASQUE |
74
|
|
|
['', 'BAS'], // BASA |
75
|
|
|
['', 'BAT'], // BALTIC LANGUAGES |
76
|
|
|
['', 'BEJ'], // BEJA; BEDAWIYET |
77
|
|
|
['BE', 'BEL'], // BELARUSIAN |
78
|
|
|
['', 'BEM'], // BEMBA |
79
|
|
|
['BN', 'BEN'], // BENGALI |
80
|
|
|
['', 'BER'], // BERBER LANGUAGES |
81
|
|
|
['', 'BHO'], // BHOJPURI |
82
|
|
|
['BH', 'BIH'], // BIHARI LANGUAGES |
83
|
|
|
['', 'BIK'], // BIKOL |
84
|
|
|
['', 'BIN'], // BINI; EDO |
85
|
|
|
['BI', 'BIS'], // BISLAMA |
86
|
|
|
['', 'BLA'], // SIKSIKA |
87
|
|
|
['', 'BNT'], // BANTU (OTHER) |
88
|
|
|
['BS', 'BOS'], // BOSNIAN |
89
|
|
|
['', 'BRA'], // BRAJ |
90
|
|
|
['BR', 'BRE'], // BRETON |
91
|
|
|
['', 'BTK'], // BATAK LANGUAGES |
92
|
|
|
['', 'BUA'], // BURIAT |
93
|
|
|
['', 'BUG'], // BUGINESE |
94
|
|
|
['BG', 'BUL'], // BULGARIAN |
95
|
|
|
['MY', 'BUR'], // BURMESE |
96
|
|
|
['', 'BYN'], // BLIN; BILIN |
97
|
|
|
['', 'CAD'], // CADDO |
98
|
|
|
['', 'CAI'], // CENTRAL AMERICAN INDIAN LANGUAGES |
99
|
|
|
['', 'CAR'], // GALIBI CARIB |
100
|
|
|
['CA', 'CAT'], // CATALAN; VALENCIAN |
101
|
|
|
['', 'CAU'], // CAUCASIAN LANGUAGES |
102
|
|
|
['', 'CEB'], // CEBUANO |
103
|
|
|
['', 'CEL'], // CELTIC LANGUAGES |
104
|
|
|
['CH', 'CHA'], // CHAMORRO |
105
|
|
|
['', 'CHB'], // CHIBCHA |
106
|
|
|
['CE', 'CHE'], // CHECHEN |
107
|
|
|
['', 'CHG'], // CHAGATAI |
108
|
|
|
['ZH', 'CHI'], // CHINESE |
109
|
|
|
['', 'CHK'], // CHUUKESE |
110
|
|
|
['', 'CHM'], // MARI |
111
|
|
|
['', 'CHN'], // CHINOOK JARGON |
112
|
|
|
['', 'CHO'], // CHOCTAW |
113
|
|
|
['', 'CHP'], // CHIPEWYAN; DENE SULINE |
114
|
|
|
['', 'CHR'], // CHEROKEE |
115
|
|
|
['CU', 'CHU'], // CHURCH SLAVIC; OLD SLAVONIC; CHURCH SLAVONIC; OLD BULGARIAN; OLD CHURCH SLAVONIC |
116
|
|
|
['CV', 'CHV'], // CHUVASH |
117
|
|
|
['', 'CHY'], // CHEYENNE |
118
|
|
|
['', 'CMC'], // CHAMIC LANGUAGES |
119
|
|
|
['', 'COP'], // COPTIC |
120
|
|
|
['KW', 'COR'], // CORNISH |
121
|
|
|
['CO', 'COS'], // CORSICAN |
122
|
|
|
['', 'CPE'], // CREOLES AND PIDGINS, ENGLISH BASED |
123
|
|
|
['', 'CPF'], // CREOLES AND PIDGINS, FRENCH-BASED |
124
|
|
|
['', 'CPP'], // CREOLES AND PIDGINS, PORTUGUESE-BASED |
125
|
|
|
['CR', 'CRE'], // CREE |
126
|
|
|
['', 'CRH'], // CRIMEAN TATAR; CRIMEAN TURKISH |
127
|
|
|
['', 'CRP'], // CREOLES AND PIDGINS |
128
|
|
|
['', 'CSB'], // KASHUBIAN |
129
|
|
|
['', 'CUS'], // CUSHITIC LANGUAGES |
130
|
|
|
['CS', 'CZE'], // CZECH |
131
|
|
|
['', 'DAK'], // DAKOTA |
132
|
|
|
['DA', 'DAN'], // DANISH |
133
|
|
|
['', 'DAR'], // DARGWA |
134
|
|
|
['', 'DAY'], // LAND DAYAK LANGUAGES |
135
|
|
|
['', 'DEL'], // DELAWARE |
136
|
|
|
['', 'DEN'], // SLAVE (ATHAPASCAN) |
137
|
|
|
['', 'DGR'], // DOGRIB |
138
|
|
|
['', 'DIN'], // DINKA |
139
|
|
|
['DV', 'DIV'], // DIVEHI; DHIVEHI; MALDIVIAN |
140
|
|
|
['', 'DOI'], // DOGRI |
141
|
|
|
['', 'DRA'], // DRAVIDIAN LANGUAGES |
142
|
|
|
['', 'DSB'], // LOWER SORBIAN |
143
|
|
|
['', 'DUA'], // DUALA |
144
|
|
|
['', 'DUM'], // DUTCH, MIDDLE (CA.1050-1350) |
145
|
|
|
['NL', 'DUT'], // DUTCH; FLEMISH |
146
|
|
|
['', 'DYU'], // DYULA |
147
|
|
|
['DZ', 'DZO'], // DZONGKHA |
148
|
|
|
['', 'EFI'], // EFIK |
149
|
|
|
['', 'EGY'], // EGYPTIAN (ANCIENT) |
150
|
|
|
['', 'EKA'], // EKAJUK |
151
|
|
|
['', 'ELX'], // ELAMITE |
152
|
|
|
['EN', 'ENG'], // ENGLISH |
153
|
|
|
['', 'ENM'], // ENGLISH, MIDDLE (1100-1500) |
154
|
|
|
['EO', 'EPO'], // ESPERANTO |
155
|
|
|
['ET', 'EST'], // ESTONIAN |
156
|
|
|
['EE', 'EWE'], // EWE |
157
|
|
|
['', 'EWO'], // EWONDO |
158
|
|
|
['', 'FAN'], // FANG |
159
|
|
|
['FO', 'FAO'], // FAROESE |
160
|
|
|
['', 'FAT'], // FANTI |
161
|
|
|
['FJ', 'FIJ'], // FIJIAN |
162
|
|
|
['', 'FIL'], // FILIPINO; PILIPINO |
163
|
|
|
['FI', 'FIN'], // FINNISH |
164
|
|
|
['', 'FIU'], // FINNO-UGRIAN LANGUAGES |
165
|
|
|
['', 'FON'], // FON |
166
|
|
|
['FR', 'FRE'], // FRENCH |
167
|
|
|
['', 'FRM'], // FRENCH, MIDDLE (CA.1400-1600) |
168
|
|
|
['', 'FRO'], // FRENCH, OLD (842-CA.1400) |
169
|
|
|
['', 'FRR'], // NORTHERN FRISIAN |
170
|
|
|
['', 'FRS'], // EASTERN FRISIAN |
171
|
|
|
['FY', 'FRY'], // WESTERN FRISIAN |
172
|
|
|
['FF', 'FUL'], // FULAH |
173
|
|
|
['', 'FUR'], // FRIULIAN |
174
|
|
|
['', 'GAA'], // GA |
175
|
|
|
['', 'GAY'], // GAYO |
176
|
|
|
['', 'GBA'], // GBAYA |
177
|
|
|
['', 'GEM'], // GERMANIC LANGUAGES |
178
|
|
|
['KA', 'GEO'], // GEORGIAN |
179
|
|
|
['DE', 'GER'], // GERMAN |
180
|
|
|
['', 'GEZ'], // GEEZ |
181
|
|
|
['', 'GIL'], // GILBERTESE |
182
|
|
|
['GD', 'GLA'], // GAELIC; SCOTTISH GAELIC |
183
|
|
|
['GA', 'GLE'], // IRISH |
184
|
|
|
['GL', 'GLG'], // GALICIAN |
185
|
|
|
['GV', 'GLV'], // MANX |
186
|
|
|
['', 'GMH'], // GERMAN, MIDDLE HIGH (CA.1050-1500) |
187
|
|
|
['', 'GOH'], // GERMAN, OLD HIGH (CA.750-1050) |
188
|
|
|
['', 'GON'], // GONDI |
189
|
|
|
['', 'GOR'], // GORONTALO |
190
|
|
|
['', 'GOT'], // GOTHIC |
191
|
|
|
['', 'GRB'], // GREBO |
192
|
|
|
['', 'GRC'], // GREEK, ANCIENT (TO 1453) |
193
|
|
|
['EL', 'GRE'], // GREEK, MODERN (1453-) |
194
|
|
|
['GN', 'GRN'], // GUARANI |
195
|
|
|
['', 'GSW'], // SWISS GERMAN; ALEMANNIC; ALSATIAN |
196
|
|
|
['GU', 'GUJ'], // GUJARATI |
197
|
|
|
['', 'GWI'], // GWICH'IN |
198
|
|
|
['', 'HAI'], // HAIDA |
199
|
|
|
['HT', 'HAT'], // HAITIAN; HAITIAN CREOLE |
200
|
|
|
['HA', 'HAU'], // HAUSA |
201
|
|
|
['', 'HAW'], // HAWAIIAN |
202
|
|
|
['HE', 'HEB'], // HEBREW |
203
|
|
|
['HZ', 'HER'], // HERERO |
204
|
|
|
['', 'HIL'], // HILIGAYNON |
205
|
|
|
['', 'HIM'], // HIMACHALI LANGUAGES; WESTERN PAHARI LANGUAGES |
206
|
|
|
['HI', 'HIN'], // HINDI |
207
|
|
|
['', 'HIT'], // HITTITE |
208
|
|
|
['', 'HMN'], // HMONG; MONG |
209
|
|
|
['HO', 'HMO'], // HIRI MOTU |
210
|
|
|
['HR', 'HRV'], // CROATIAN |
211
|
|
|
['', 'HSB'], // UPPER SORBIAN |
212
|
|
|
['HU', 'HUN'], // HUNGARIAN |
213
|
|
|
['', 'HUP'], // HUPA |
214
|
|
|
['', 'IBA'], // IBAN |
215
|
|
|
['IG', 'IBO'], // IGBO |
216
|
|
|
['IS', 'ICE'], // ICELANDIC |
217
|
|
|
['IO', 'IDO'], // IDO |
218
|
|
|
['II', 'III'], // SICHUAN YI; NUOSU |
219
|
|
|
['', 'IJO'], // IJO LANGUAGES |
220
|
|
|
['IU', 'IKU'], // INUKTITUT |
221
|
|
|
['IE', 'ILE'], // INTERLINGUE; OCCIDENTAL |
222
|
|
|
['', 'ILO'], // ILOKO |
223
|
|
|
['IA', 'INA'], // INTERLINGUA (INTERNATIONAL AUXILIARY LANGUAGE ASSOCIATION) |
224
|
|
|
['', 'INC'], // INDIC LANGUAGES |
225
|
|
|
['ID', 'IND'], // INDONESIAN |
226
|
|
|
['', 'INE'], // INDO-EUROPEAN LANGUAGES |
227
|
|
|
['', 'INH'], // INGUSH |
228
|
|
|
['IK', 'IPK'], // INUPIAQ |
229
|
|
|
['', 'IRA'], // IRANIAN LANGUAGES |
230
|
|
|
['', 'IRO'], // IROQUOIAN LANGUAGES |
231
|
|
|
['IT', 'ITA'], // ITALIAN |
232
|
|
|
['JV', 'JAV'], // JAVANESE |
233
|
|
|
['', 'JBO'], // LOJBAN |
234
|
|
|
['JA', 'JPN'], // JAPANESE |
235
|
|
|
['', 'JPR'], // JUDEO-PERSIAN |
236
|
|
|
['', 'JRB'], // JUDEO-ARABIC |
237
|
|
|
['', 'KAA'], // KARA-KALPAK |
238
|
|
|
['', 'KAB'], // KABYLE |
239
|
|
|
['', 'KAC'], // KACHIN; JINGPHO |
240
|
|
|
['KL', 'KAL'], // KALAALLISUT; GREENLANDIC |
241
|
|
|
['', 'KAM'], // KAMBA |
242
|
|
|
['KN', 'KAN'], // KANNADA |
243
|
|
|
['', 'KAR'], // KAREN LANGUAGES |
244
|
|
|
['KS', 'KAS'], // KASHMIRI |
245
|
|
|
['KR', 'KAU'], // KANURI |
246
|
|
|
['', 'KAW'], // KAWI |
247
|
|
|
['KK', 'KAZ'], // KAZAKH |
248
|
|
|
['', 'KBD'], // KABARDIAN |
249
|
|
|
['', 'KHA'], // KHASI |
250
|
|
|
['', 'KHI'], // KHOISAN LANGUAGES |
251
|
|
|
['KM', 'KHM'], // CENTRAL KHMER |
252
|
|
|
['', 'KHO'], // KHOTANESE; SAKAN |
253
|
|
|
['KI', 'KIK'], // KIKUYU; GIKUYU |
254
|
|
|
['RW', 'KIN'], // KINYARWANDA |
255
|
|
|
['KY', 'KIR'], // KIRGHIZ; KYRGYZ |
256
|
|
|
['', 'KMB'], // KIMBUNDU |
257
|
|
|
['', 'KOK'], // KONKANI |
258
|
|
|
['KV', 'KOM'], // KOMI |
259
|
|
|
['KG', 'KON'], // KONGO |
260
|
|
|
['KO', 'KOR'], // KOREAN |
261
|
|
|
['', 'KOS'], // KOSRAEAN |
262
|
|
|
['', 'KPE'], // KPELLE |
263
|
|
|
['', 'KRC'], // KARACHAY-BALKAR |
264
|
|
|
['', 'KRL'], // KARELIAN |
265
|
|
|
['', 'KRO'], // KRU LANGUAGES |
266
|
|
|
['', 'KRU'], // KURUKH |
267
|
|
|
['KJ', 'KUA'], // KUANYAMA; KWANYAMA |
268
|
|
|
['', 'KUM'], // KUMYK |
269
|
|
|
['KU', 'KUR'], // KURDISH |
270
|
|
|
['', 'KUT'], // KUTENAI |
271
|
|
|
['', 'LAD'], // LADINO |
272
|
|
|
['', 'LAH'], // LAHNDA |
273
|
|
|
['', 'LAM'], // LAMBA |
274
|
|
|
['LO', 'LAO'], // LAO |
275
|
|
|
['LA', 'LAT'], // LATIN |
276
|
|
|
['LV', 'LAV'], // LATVIAN |
277
|
|
|
['', 'LEZ'], // LEZGHIAN |
278
|
|
|
['LI', 'LIM'], // LIMBURGAN; LIMBURGER; LIMBURGISH |
279
|
|
|
['LN', 'LIN'], // LINGALA |
280
|
|
|
['LT', 'LIT'], // LITHUANIAN |
281
|
|
|
['', 'LOL'], // MONGO |
282
|
|
|
['', 'LOZ'], // LOZI |
283
|
|
|
['LB', 'LTZ'], // LUXEMBOURGISH; LETZEBURGESCH |
284
|
|
|
['', 'LUA'], // LUBA-LULUA |
285
|
|
|
['LU', 'LUB'], // LUBA-KATANGA |
286
|
|
|
['LG', 'LUG'], // GANDA |
287
|
|
|
['', 'LUI'], // LUISENO |
288
|
|
|
['', 'LUN'], // LUNDA |
289
|
|
|
['', 'LUO'], // LUO (KENYA AND TANZANIA) |
290
|
|
|
['', 'LUS'], // LUSHAI |
291
|
|
|
['MK', 'MAC'], // MACEDONIAN |
292
|
|
|
['', 'MAD'], // MADURESE |
293
|
|
|
['', 'MAG'], // MAGAHI |
294
|
|
|
['MH', 'MAH'], // MARSHALLESE |
295
|
|
|
['', 'MAI'], // MAITHILI |
296
|
|
|
['', 'MAK'], // MAKASAR |
297
|
|
|
['ML', 'MAL'], // MALAYALAM |
298
|
|
|
['', 'MAN'], // MANDINGO |
299
|
|
|
['MI', 'MAO'], // MAORI |
300
|
|
|
['', 'MAP'], // AUSTRONESIAN LANGUAGES |
301
|
|
|
['MR', 'MAR'], // MARATHI |
302
|
|
|
['', 'MAS'], // MASAI |
303
|
|
|
['MS', 'MAY'], // MALAY |
304
|
|
|
['', 'MDF'], // MOKSHA |
305
|
|
|
['', 'MDR'], // MANDAR |
306
|
|
|
['', 'MEN'], // MENDE |
307
|
|
|
['', 'MGA'], // IRISH, MIDDLE (900-1200) |
308
|
|
|
['', 'MIC'], // MI'KMAQ; MICMAC |
309
|
|
|
['', 'MIN'], // MINANGKABAU |
310
|
|
|
['', 'MIS'], // UNCODED LANGUAGES |
311
|
|
|
['', 'MKH'], // MON-KHMER LANGUAGES |
312
|
|
|
['MG', 'MLG'], // MALAGASY |
313
|
|
|
['MT', 'MLT'], // MALTESE |
314
|
|
|
['', 'MNC'], // MANCHU |
315
|
|
|
['', 'MNI'], // MANIPURI |
316
|
|
|
['', 'MNO'], // MANOBO LANGUAGES |
317
|
|
|
['', 'MOH'], // MOHAWK |
318
|
|
|
['MN', 'MON'], // MONGOLIAN |
319
|
|
|
['', 'MOS'], // MOSSI |
320
|
|
|
['', 'MUL'], // MULTIPLE LANGUAGES |
321
|
|
|
['', 'MUN'], // MUNDA LANGUAGES |
322
|
|
|
['', 'MUS'], // CREEK |
323
|
|
|
['', 'MWL'], // MIRANDESE |
324
|
|
|
['', 'MWR'], // MARWARI |
325
|
|
|
['', 'MYN'], // MAYAN LANGUAGES |
326
|
|
|
['', 'MYV'], // ERZYA |
327
|
|
|
['', 'NAH'], // NAHUATL LANGUAGES |
328
|
|
|
['', 'NAI'], // NORTH AMERICAN INDIAN LANGUAGES |
329
|
|
|
['', 'NAP'], // NEAPOLITAN |
330
|
|
|
['NA', 'NAU'], // NAURU |
331
|
|
|
['NV', 'NAV'], // NAVAJO; NAVAHO |
332
|
|
|
['NR', 'NBL'], // NDEBELE, SOUTH; SOUTH NDEBELE |
333
|
|
|
['ND', 'NDE'], // NDEBELE, NORTH; NORTH NDEBELE |
334
|
|
|
['NG', 'NDO'], // NDONGA |
335
|
|
|
['', 'NDS'], // LOW GERMAN; LOW SAXON; GERMAN, LOW; SAXON, LOW |
336
|
|
|
['NE', 'NEP'], // NEPALI |
337
|
|
|
['', 'NEW'], // NEPAL BHASA; NEWARI |
338
|
|
|
['', 'NIA'], // NIAS |
339
|
|
|
['', 'NIC'], // NIGER-KORDOFANIAN LANGUAGES |
340
|
|
|
['', 'NIU'], // NIUEAN |
341
|
|
|
['NN', 'NNO'], // NORWEGIAN NYNORSK; NYNORSK, NORWEGIAN |
342
|
|
|
['NB', 'NOB'], // BOKMÅL, NORWEGIAN; NORWEGIAN BOKMÅL |
343
|
|
|
['', 'NOG'], // NOGAI |
344
|
|
|
['', 'NON'], // NORSE, OLD |
345
|
|
|
['NO', 'NOR'], // NORWEGIAN |
346
|
|
|
['', 'NQO'], // N'KO |
347
|
|
|
['', 'NSO'], // PEDI; SEPEDI; NORTHERN SOTHO |
348
|
|
|
['', 'NUB'], // NUBIAN LANGUAGES |
349
|
|
|
['', 'NWC'], // CLASSICAL NEWARI; OLD NEWARI; CLASSICAL NEPAL BHASA |
350
|
|
|
['NY', 'NYA'], // CHICHEWA; CHEWA; NYANJA |
351
|
|
|
['', 'NYM'], // NYAMWEZI |
352
|
|
|
['', 'NYN'], // NYANKOLE |
353
|
|
|
['', 'NYO'], // NYORO |
354
|
|
|
['', 'NZI'], // NZIMA |
355
|
|
|
['OC', 'OCI'], // OCCITAN (POST 1500); PROVENÇAL |
356
|
|
|
['OJ', 'OJI'], // OJIBWA |
357
|
|
|
['OR', 'ORI'], // ORIYA |
358
|
|
|
['OM', 'ORM'], // OROMO |
359
|
|
|
['', 'OSA'], // OSAGE |
360
|
|
|
['OS', 'OSS'], // OSSETIAN; OSSETIC |
361
|
|
|
['', 'OTA'], // TURKISH, OTTOMAN (1500-1928) |
362
|
|
|
['', 'OTO'], // OTOMIAN LANGUAGES |
363
|
|
|
['', 'PAA'], // PAPUAN LANGUAGES |
364
|
|
|
['', 'PAG'], // PANGASINAN |
365
|
|
|
['', 'PAL'], // PAHLAVI |
366
|
|
|
['', 'PAM'], // PAMPANGA; KAPAMPANGAN |
367
|
|
|
['PA', 'PAN'], // PANJABI; PUNJABI |
368
|
|
|
['', 'PAP'], // PAPIAMENTO |
369
|
|
|
['', 'PAU'], // PALAUAN |
370
|
|
|
['', 'PEO'], // PERSIAN, OLD (CA.600-400 B.C.) |
371
|
|
|
['FA', 'PER'], // PERSIAN |
372
|
|
|
['', 'PHI'], // PHILIPPINE LANGUAGES |
373
|
|
|
['', 'PHN'], // PHOENICIAN |
374
|
|
|
['PI', 'PLI'], // PALI |
375
|
|
|
['PL', 'POL'], // POLISH |
376
|
|
|
['', 'PON'], // POHNPEIAN |
377
|
|
|
['PT', 'POR'], // PORTUGUESE |
378
|
|
|
['', 'PRA'], // PRAKRIT LANGUAGES |
379
|
|
|
['', 'PRO'], // PROVENÇAL, OLD (TO 1500) |
380
|
|
|
['PS', 'PUS'], // PUSHTO; PASHTO |
381
|
|
|
['', 'QAA-QTZ'], // RESERVED FOR LOCAL USE |
382
|
|
|
['QU', 'QUE'], // QUECHUA |
383
|
|
|
['', 'RAJ'], // RAJASTHANI |
384
|
|
|
['', 'RAP'], // RAPANUI |
385
|
|
|
['', 'RAR'], // RAROTONGAN; COOK ISLANDS MAORI |
386
|
|
|
['', 'ROA'], // ROMANCE LANGUAGES |
387
|
|
|
['RM', 'ROH'], // ROMANSH |
388
|
|
|
['', 'ROM'], // ROMANY |
389
|
|
|
['RO', 'RUM'], // ROMANIAN; MOLDAVIAN; MOLDOVAN |
390
|
|
|
['RN', 'RUN'], // RUNDI |
391
|
|
|
['', 'RUP'], // AROMANIAN; ARUMANIAN; MACEDO-ROMANIAN |
392
|
|
|
['RU', 'RUS'], // RUSSIAN |
393
|
|
|
['', 'SAD'], // SANDAWE |
394
|
|
|
['SG', 'SAG'], // SANGO |
395
|
|
|
['', 'SAH'], // YAKUT |
396
|
|
|
['', 'SAI'], // SOUTH AMERICAN INDIAN (OTHER) |
397
|
|
|
['', 'SAL'], // SALISHAN LANGUAGES |
398
|
|
|
['', 'SAM'], // SAMARITAN ARAMAIC |
399
|
|
|
['SA', 'SAN'], // SANSKRIT |
400
|
|
|
['', 'SAS'], // SASAK |
401
|
|
|
['', 'SAT'], // SANTALI |
402
|
|
|
['', 'SCN'], // SICILIAN |
403
|
|
|
['', 'SCO'], // SCOTS |
404
|
|
|
['', 'SEL'], // SELKUP |
405
|
|
|
['', 'SEM'], // SEMITIC LANGUAGES |
406
|
|
|
['', 'SGA'], // IRISH, OLD (TO 900) |
407
|
|
|
['', 'SGN'], // SIGN LANGUAGES |
408
|
|
|
['', 'SHN'], // SHAN |
409
|
|
|
['', 'SID'], // SIDAMO |
410
|
|
|
['SI', 'SIN'], // SINHALA; SINHALESE |
411
|
|
|
['', 'SIO'], // SIOUAN LANGUAGES |
412
|
|
|
['', 'SIT'], // SINO-TIBETAN LANGUAGES |
413
|
|
|
['', 'SLA'], // SLAVIC LANGUAGES |
414
|
|
|
['SK', 'SLO'], // SLOVAK |
415
|
|
|
['SL', 'SLV'], // SLOVENIAN |
416
|
|
|
['', 'SMA'], // SOUTHERN SAMI |
417
|
|
|
['SE', 'SME'], // NORTHERN SAMI |
418
|
|
|
['', 'SMI'], // SAMI LANGUAGES |
419
|
|
|
['', 'SMJ'], // LULE SAMI |
420
|
|
|
['', 'SMN'], // INARI SAMI |
421
|
|
|
['SM', 'SMO'], // SAMOAN |
422
|
|
|
['', 'SMS'], // SKOLT SAMI |
423
|
|
|
['SN', 'SNA'], // SHONA |
424
|
|
|
['SD', 'SND'], // SINDHI |
425
|
|
|
['', 'SNK'], // SONINKE |
426
|
|
|
['', 'SOG'], // SOGDIAN |
427
|
|
|
['SO', 'SOM'], // SOMALI |
428
|
|
|
['', 'SON'], // SONGHAI LANGUAGES |
429
|
|
|
['ST', 'SOT'], // SOTHO, SOUTHERN |
430
|
|
|
['ES', 'SPA'], // SPANISH; CASTILIAN |
431
|
|
|
['SC', 'SRD'], // SARDINIAN |
432
|
|
|
['', 'SRN'], // SRANAN TONGO |
433
|
|
|
['SR', 'SRP'], // SERBIAN |
434
|
|
|
['', 'SRR'], // SERER |
435
|
|
|
['', 'SSA'], // NILO-SAHARAN LANGUAGES |
436
|
|
|
['SS', 'SSW'], // SWATI |
437
|
|
|
['', 'SUK'], // SUKUMA |
438
|
|
|
['SU', 'SUN'], // SUNDANESE |
439
|
|
|
['', 'SUS'], // SUSU |
440
|
|
|
['', 'SUX'], // SUMERIAN |
441
|
|
|
['SW', 'SWA'], // SWAHILI |
442
|
|
|
['SV', 'SWE'], // SWEDISH |
443
|
|
|
['', 'SYC'], // CLASSICAL SYRIAC |
444
|
|
|
['', 'SYR'], // SYRIAC |
445
|
|
|
['TY', 'TAH'], // TAHITIAN |
446
|
|
|
['', 'TAI'], // TAI LANGUAGES |
447
|
|
|
['TA', 'TAM'], // TAMIL |
448
|
|
|
['TT', 'TAT'], // TATAR |
449
|
|
|
['TE', 'TEL'], // TELUGU |
450
|
|
|
['', 'TEM'], // TIMNE |
451
|
|
|
['', 'TER'], // TERENO |
452
|
|
|
['', 'TET'], // TETUM |
453
|
|
|
['TG', 'TGK'], // TAJIK |
454
|
|
|
['TL', 'TGL'], // TAGALOG |
455
|
|
|
['TH', 'THA'], // THAI |
456
|
|
|
['BO', 'TIB'], // TIBETAN |
457
|
|
|
['', 'TIG'], // TIGRE |
458
|
|
|
['TI', 'TIR'], // TIGRINYA |
459
|
|
|
['', 'TIV'], // TIV |
460
|
|
|
['', 'TKL'], // TOKELAU |
461
|
|
|
['', 'TLH'], // KLINGON; TLHINGAN-HOL |
462
|
|
|
['', 'TLI'], // TLINGIT |
463
|
|
|
['', 'TMH'], // TAMASHEK |
464
|
|
|
['', 'TOG'], // TONGA (NYASA) |
465
|
|
|
['TO', 'TON'], // TONGA (TONGA ISLANDS) |
466
|
|
|
['', 'TPI'], // TOK PISIN |
467
|
|
|
['', 'TSI'], // TSIMSHIAN |
468
|
|
|
['TN', 'TSN'], // TSWANA |
469
|
|
|
['TS', 'TSO'], // TSONGA |
470
|
|
|
['TK', 'TUK'], // TURKMEN |
471
|
|
|
['', 'TUM'], // TUMBUKA |
472
|
|
|
['', 'TUP'], // TUPI LANGUAGES |
473
|
|
|
['TR', 'TUR'], // TURKISH |
474
|
|
|
['', 'TUT'], // ALTAIC LANGUAGES |
475
|
|
|
['', 'TVL'], // TUVALU |
476
|
|
|
['TW', 'TWI'], // TWI |
477
|
|
|
['', 'TYV'], // TUVINIAN |
478
|
|
|
['', 'UDM'], // UDMURT |
479
|
|
|
['', 'UGA'], // UGARITIC |
480
|
|
|
['UG', 'UIG'], // UIGHUR; UYGHUR |
481
|
|
|
['UK', 'UKR'], // UKRAINIAN |
482
|
|
|
['', 'UMB'], // UMBUNDU |
483
|
|
|
['', 'UND'], // UNDETERMINED |
484
|
|
|
['UR', 'URD'], // URDU |
485
|
|
|
['UZ', 'UZB'], // UZBEK |
486
|
|
|
['', 'VAI'], // VAI |
487
|
|
|
['VE', 'VEN'], // VENDA |
488
|
|
|
['VI', 'VIE'], // VIETNAMESE |
489
|
|
|
['VO', 'VOL'], // VOLAPÜK |
490
|
|
|
['', 'VOT'], // VOTIC |
491
|
|
|
['', 'WAK'], // WAKASHAN LANGUAGES |
492
|
|
|
['', 'WAL'], // WALAMO |
493
|
|
|
['', 'WAR'], // WARAY |
494
|
|
|
['', 'WAS'], // WASHO |
495
|
|
|
['CY', 'WEL'], // WELSH |
496
|
|
|
['', 'WEN'], // SORBIAN LANGUAGES |
497
|
|
|
['WA', 'WLN'], // WALLOON |
498
|
|
|
['WO', 'WOL'], // WOLOF |
499
|
|
|
['', 'XAL'], // KALMYK; OIRAT |
500
|
|
|
['XH', 'XHO'], // XHOSA |
501
|
|
|
['', 'YAO'], // YAO |
502
|
|
|
['', 'YAP'], // YAPESE |
503
|
|
|
['YI', 'YID'], // YIDDISH |
504
|
|
|
['YO', 'YOR'], // YORUBA |
505
|
|
|
['', 'YPK'], // YUPIK LANGUAGES |
506
|
|
|
['', 'ZAP'], // ZAPOTEC |
507
|
|
|
['', 'ZBL'], // BLISSYMBOLS; BLISSYMBOLICS; BLISS |
508
|
|
|
['', 'ZEN'], // ZENAGA |
509
|
|
|
['', 'ZGH'], // STANDARD MOROCCAN TAMAZIGHT |
510
|
|
|
['ZA', 'ZHA'], // ZHUANG; CHUANG |
511
|
|
|
['', 'ZND'], // ZANDE LANGUAGES |
512
|
|
|
['ZU', 'ZUL'], // ZULU |
513
|
|
|
['', 'ZUN'], // ZUNI |
514
|
|
|
['', 'ZXX'], // NO LINGUISTIC CONTENT; NOT APPLICABLE |
515
|
|
|
['', 'ZZA'], // ZAZA; DIMILI; DIMLI; KIRDKI; KIRMANJKI; ZAZAKI |
516
|
|
|
]; |
517
|
|
|
|
518
|
|
|
public $set; |
519
|
|
|
public $index; |
520
|
|
|
|
521
|
2 |
|
public function __construct($set = self::ALPHA2) |
522
|
|
|
{ |
523
|
2 |
|
$index = array_search($set, self::getAvailableSets(), true); |
524
|
|
|
|
525
|
2 |
|
if (false === $index) { |
526
|
|
|
throw new ComponentException(sprintf('"%s" is not a valid language set for ISO 639', $set)); |
527
|
|
|
} |
528
|
|
|
|
529
|
2 |
|
$this->set = $set; |
530
|
2 |
|
$this->index = $index; |
531
|
2 |
|
} |
532
|
|
|
|
533
|
2 |
|
public static function getAvailableSets() |
534
|
|
|
{ |
535
|
|
|
return [ |
536
|
2 |
|
self::ALPHA2, |
537
|
2 |
|
self::ALPHA3, |
538
|
|
|
]; |
539
|
|
|
} |
540
|
|
|
|
541
|
12 |
|
private function getLanguageCodeList($index) |
542
|
|
|
{ |
543
|
12 |
|
$languageList = []; |
544
|
|
|
|
545
|
12 |
|
foreach ($this->languageCodeList as $language) { |
546
|
12 |
|
$languageList[] = $language[$index]; |
547
|
|
|
} |
548
|
|
|
|
549
|
12 |
|
return $languageList; |
550
|
|
|
} |
551
|
|
|
|
552
|
16 |
|
public function validate($input) |
553
|
|
|
{ |
554
|
16 |
|
if (!is_string($input) || '' === $input) { |
555
|
4 |
|
return false; |
556
|
|
|
} |
557
|
|
|
|
558
|
12 |
|
return in_array( |
559
|
12 |
|
mb_strtoupper($input), |
560
|
12 |
|
$this->getLanguageCodeList($this->index), |
561
|
12 |
|
true |
562
|
|
|
); |
563
|
|
|
} |
564
|
|
|
} |
565
|
|
|
|