Language   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 123
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
eloc 105
dl 0
loc 123
ccs 4
cts 4
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A locale() 0 3 1
A languageCode() 0 3 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