|
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
|
|
|
public function __construct($set = self::ALPHA2) |
|
522
|
|
|
{ |
|
523
|
|
|
$index = array_search($set, self::getAvailableSets(), true); |
|
524
|
|
|
|
|
525
|
|
|
if (false === $index) { |
|
526
|
|
|
throw new ComponentException(sprintf('"%s" is not a valid language set for ISO 639', $set)); |
|
527
|
|
|
} |
|
528
|
|
|
|
|
529
|
|
|
$this->set = $set; |
|
530
|
|
|
$this->index = $index; |
|
531
|
|
|
} |
|
532
|
|
|
|
|
533
|
|
|
public static function getAvailableSets() |
|
534
|
|
|
{ |
|
535
|
|
|
return [ |
|
536
|
|
|
self::ALPHA2, |
|
537
|
|
|
self::ALPHA3, |
|
538
|
|
|
]; |
|
539
|
|
|
} |
|
540
|
|
|
|
|
541
|
10 |
|
private function getLanguageCodeList($index) |
|
542
|
|
|
{ |
|
543
|
10 |
|
$languageList = []; |
|
544
|
|
|
|
|
545
|
10 |
|
foreach ($this->languageCodeList as $language) { |
|
546
|
10 |
|
$languageList[] = $language[$index]; |
|
547
|
|
|
} |
|
548
|
|
|
|
|
549
|
10 |
|
return $languageList; |
|
550
|
|
|
} |
|
551
|
|
|
|
|
552
|
14 |
|
public function validate($input) |
|
553
|
|
|
{ |
|
554
|
14 |
|
if (!is_string($input) || '' === $input) { |
|
555
|
4 |
|
return false; |
|
556
|
|
|
} |
|
557
|
|
|
|
|
558
|
10 |
|
return in_array( |
|
559
|
10 |
|
mb_strtoupper($input), |
|
560
|
10 |
|
$this->getLanguageCodeList($this->index), |
|
561
|
10 |
|
true |
|
562
|
|
|
); |
|
563
|
|
|
} |
|
564
|
|
|
} |
|
565
|
|
|
|