1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
declare(strict_types = 1); |
4
|
|
|
|
5
|
|
|
namespace DummyGenerator\Core; |
6
|
|
|
|
7
|
|
|
use DummyGenerator\Definitions\Extension\Awareness\RandomizerAwareExtensionInterface; |
8
|
|
|
use DummyGenerator\Definitions\Extension\Awareness\RandomizerAwareExtensionTrait; |
9
|
|
|
use DummyGenerator\Definitions\Extension\LanguageExtensionInterface; |
10
|
|
|
|
11
|
|
|
class Language implements LanguageExtensionInterface, RandomizerAwareExtensionInterface |
12
|
|
|
{ |
13
|
|
|
use RandomizerAwareExtensionTrait; |
14
|
|
|
|
15
|
|
|
/** @var string[] */ |
16
|
|
|
protected array $locales = [ |
17
|
|
|
'aa_DJ', 'aa_ER', 'aa_ET', |
18
|
|
|
'af_NA', 'af_ZA', 'ak_GH', |
19
|
|
|
'am_ET', 'ar_AE', 'ar_BH', 'ar_DZ', |
20
|
|
|
'ar_EG', 'ar_IQ', 'ar_JO', 'ar_KW', 'ar_LB', |
21
|
|
|
'ar_LY', 'ar_MA', 'ar_OM', 'ar_QA', 'ar_SA', |
22
|
|
|
'ar_SD', 'ar_SY', 'ar_TN', 'ar_YE', |
23
|
|
|
'as_IN', 'az_AZ', 'be_BY', |
24
|
|
|
'bg_BG', 'bn_BD', 'bn_IN', |
25
|
|
|
'bo_CN', 'bo_IN', 'bs_BA', |
26
|
|
|
'byn_ER', 'ca_ES', |
27
|
|
|
'cch_NG', 'cs_CZ', |
28
|
|
|
'cy_GB', 'da_DK', 'de_AT', |
29
|
|
|
'de_BE', 'de_CH', 'de_DE', 'de_LI', 'de_LU', |
30
|
|
|
'dv_MV', 'dz_BT', |
31
|
|
|
'ee_GH', 'ee_TG', 'el_CY', 'el_GR', |
32
|
|
|
'en_AS', 'en_AU', 'en_BE', 'en_BW', |
33
|
|
|
'en_BZ', 'en_CA', 'en_GB', 'en_GU', 'en_HK', |
34
|
|
|
'en_IE', 'en_IN', 'en_JM', 'en_MH', 'en_MP', |
35
|
|
|
'en_MT', 'en_NA', 'en_NZ', 'en_PH', 'en_PK', |
36
|
|
|
'en_SG', 'en_TT', 'en_UM', 'en_US', 'en_VI', |
37
|
|
|
'en_ZA', 'en_ZW', 'es_AR', |
38
|
|
|
'es_BO', 'es_CL', 'es_CO', 'es_CR', 'es_DO', |
39
|
|
|
'es_EC', 'es_ES', 'es_GT', 'es_HN', 'es_MX', |
40
|
|
|
'es_NI', 'es_PA', 'es_PE', 'es_PR', 'es_PY', |
41
|
|
|
'es_SV', 'es_US', 'es_UY', 'es_VE', |
42
|
|
|
'et_EE', 'eu_ES', 'fa_AF', |
43
|
|
|
'fa_IR', 'fi_FI', 'fil_PH', |
44
|
|
|
'fo_FO', 'fr_BE', 'fr_CA', |
45
|
|
|
'fr_CH', 'fr_FR', 'fr_LU', 'fr_MC', 'fr_SN', |
46
|
|
|
'fur_IT', 'ga_IE', |
47
|
|
|
'gaa_GH', 'gez_ER', 'gez_ET', |
48
|
|
|
'gl_ES', 'gsw_CH', 'gu_IN', |
49
|
|
|
'gv_GB', 'ha_GH', 'ha_NE', |
50
|
|
|
'ha_NG', 'ha_SD', 'haw_US', |
51
|
|
|
'he_IL', 'hi_IN', 'hr_HR', |
52
|
|
|
'hu_HU', 'hy_AM', |
53
|
|
|
'id_ID', 'ig_NG', |
54
|
|
|
'ii_CN', 'is_IS', |
55
|
|
|
'it_CH', 'it_IT', |
56
|
|
|
'ja_JP', 'ka_GE', 'kaj_NG', |
57
|
|
|
'kam_KE', 'kcg_NG', |
58
|
|
|
'kfo_CI', 'kk_KZ', 'kl_GL', |
59
|
|
|
'km_KH', 'kn_IN', |
60
|
|
|
'ko_KR', 'kok_IN', 'kpe_GN', |
61
|
|
|
'kpe_LR', 'ku_IQ', 'ku_IR', 'ku_SY', |
62
|
|
|
'ku_TR', 'kw_GB', 'ky_KG', |
63
|
|
|
'ln_CD', 'ln_CG', 'lo_LA', |
64
|
|
|
'lt_LT', 'lv_LV', |
65
|
|
|
'mk_MK', 'ml_IN', 'mn_CN', |
66
|
|
|
'mn_MN', 'mr_IN', |
67
|
|
|
'ms_BN', 'ms_MY', 'mt_MT', |
68
|
|
|
'my_MM', 'nb_NO', 'nds_DE', |
69
|
|
|
'ne_IN', 'ne_NP', 'nl_BE', |
70
|
|
|
'nl_NL', 'nn_NO', |
71
|
|
|
'nr_ZA', 'nso_ZA', 'ny_MW', |
72
|
|
|
'oc_FR', 'om_ET', 'om_KE', |
73
|
|
|
'or_IN', 'pa_IN', 'pa_PK', |
74
|
|
|
'pl_PL', 'ps_AF', |
75
|
|
|
'pt_BR', 'pt_PT', 'ro_MD', 'ro_RO', |
76
|
|
|
'ru_RU', 'ru_UA', 'rw_RW', |
77
|
|
|
'sa_IN', 'se_FI', 'se_NO', |
78
|
|
|
'sh_BA', 'sh_CS', 'sh_YU', |
79
|
|
|
'si_LK', 'sid_ET', 'sk_SK', |
80
|
|
|
'sl_SI', 'so_DJ', 'so_ET', |
81
|
|
|
'so_KE', 'so_SO', 'sq_AL', |
82
|
|
|
'sr_BA', 'sr_CS', 'sr_ME', 'sr_RS', 'sr_YU', |
83
|
|
|
'ss_SZ', 'ss_ZA', 'st_LS', |
84
|
|
|
'st_ZA', 'sv_FI', 'sv_SE', |
85
|
|
|
'sw_KE', 'sw_TZ', 'syr_SY', |
86
|
|
|
'ta_IN', 'te_IN', 'tg_TJ', |
87
|
|
|
'th_TH', 'ti_ER', 'ti_ET', |
88
|
|
|
'tig_ER', 'tn_ZA', |
89
|
|
|
'to_TO', 'tr_TR', |
90
|
|
|
'trv_TW', 'ts_ZA', 'tt_RU', |
91
|
|
|
'ug_CN', 'uk_UA', |
92
|
|
|
'ur_IN', 'ur_PK', 'uz_AF', 'uz_UZ', |
93
|
|
|
've_ZA', 'vi_VN', |
94
|
|
|
'wal_ET', 'wo_SN', 'xh_ZA', |
95
|
|
|
'yo_NG', 'zh_CN', 'zh_HK', |
96
|
|
|
'zh_MO', 'zh_SG', 'zh_TW', 'zu_ZA', |
97
|
|
|
]; |
98
|
|
|
|
99
|
|
|
/** |
100
|
|
|
* @var string[] |
101
|
|
|
* |
102
|
|
|
* @see https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes |
103
|
|
|
*/ |
104
|
|
|
protected array $languageCodes = [ |
105
|
|
|
'aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', |
106
|
|
|
'ay', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo', |
107
|
|
|
'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', |
108
|
|
|
'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', |
109
|
|
|
'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', |
110
|
|
|
'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', |
111
|
|
|
'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', |
112
|
|
|
'io', 'is', 'it', 'iu', 'ja', 'jv', 'ka', 'kg', 'ki', 'kj', |
113
|
|
|
'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ku', 'kv', 'kw', |
114
|
|
|
'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', |
115
|
|
|
'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mr', 'ms', 'mt', 'my', |
116
|
|
|
'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', |
117
|
|
|
'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', |
118
|
|
|
'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', |
119
|
|
|
'se', 'sg', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', |
120
|
|
|
'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', |
121
|
|
|
'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', |
122
|
|
|
'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', |
123
|
|
|
'yo', 'za', 'zh', 'zu', |
124
|
|
|
]; |
125
|
|
|
|
126
|
1 |
|
public function languageCode(): string |
127
|
|
|
{ |
128
|
1 |
|
return $this->randomizer->randomElement($this->languageCodes); |
129
|
|
|
} |
130
|
|
|
|
131
|
1 |
|
public function locale(): string |
132
|
|
|
{ |
133
|
1 |
|
return $this->randomizer->randomElement($this->locales); |
134
|
|
|
} |
135
|
|
|
} |
136
|
|
|
|