Language::locale()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
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