1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144 |
- <?php
- declare(strict_types=1);
- /**
- * This file is part of the Carbon package.
- *
- * (c) Brian Nesbitt <brian@nesbot.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Tests\Carbon;
- use Carbon\Carbon;
- use Carbon\Exceptions\InvalidTimeZoneException;
- use Carbon\Exceptions\OutOfRangeException;
- use DateTime;
- use DateTimeZone;
- use InvalidArgumentException;
- use Tests\AbstractTestCase;
- class CreateTest extends AbstractTestCase
- {
- public function testCreateReturnsDatingInstance()
- {
- $d = Carbon::create();
- $this->assertInstanceOfCarbon($d);
- }
- public function testCreateWithDefaults()
- {
- $d = Carbon::create();
- $this->assertSame($d->getTimestamp(), Carbon::create('0000-01-01 00:00:00')->getTimestamp());
- }
- public function testCreateWithNull()
- {
- $d = Carbon::create(null, null, null, null, null, null);
- $this->assertSame($d->getTimestamp(), Carbon::now()->getTimestamp());
- }
- public function testCreateWithYear()
- {
- $d = Carbon::create(2012);
- $this->assertSame(2012, $d->year);
- }
- public function testCreateHandlesNegativeYear()
- {
- $c = Carbon::create(-1, 10, 12, 1, 2, 3);
- $this->assertCarbon($c, -1, 10, 12, 1, 2, 3);
- }
- public function testCreateHandlesFiveDigitsPositiveYears()
- {
- $c = Carbon::create(999999999, 10, 12, 1, 2, 3);
- $this->assertCarbon($c, 999999999, 10, 12, 1, 2, 3);
- }
- public function testCreateHandlesFiveDigitsNegativeYears()
- {
- $c = Carbon::create(-999999999, 10, 12, 1, 2, 3);
- $this->assertCarbon($c, -999999999, 10, 12, 1, 2, 3);
- }
- public function testCreateWithMonth()
- {
- $d = Carbon::create(null, 3);
- $this->assertSame(3, $d->month);
- }
- public function testCreateWithInvalidMonth()
- {
- $this->expectExceptionObject(new InvalidArgumentException(
- 'month must be between 0 and 99, -5 given'
- ));
- Carbon::create(null, -5);
- }
- public function testOutOfRangeException()
- {
- /** @var OutOfRangeException $error */
- $error = null;
- try {
- Carbon::create(null, -5);
- } catch (OutOfRangeException $exception) {
- $error = $exception;
- }
- $this->assertInstanceOf(OutOfRangeException::class, $error);
- $this->assertSame('month', $error->getUnit());
- $this->assertSame(-5, $error->getValue());
- $this->assertSame(0, $error->getMin());
- $this->assertSame(99, $error->getMax());
- }
- public function testCreateWithInvalidMonthNonStrictMode()
- {
- Carbon::useStrictMode(false);
- $this->assertFalse(Carbon::isStrictModeEnabled());
- $this->assertFalse(Carbon::create(null, -5));
- Carbon::useStrictMode(true);
- $this->assertTrue(Carbon::isStrictModeEnabled());
- }
- public function testCreateMonthWraps()
- {
- $d = Carbon::create(2011, 0, 1, 0, 0, 0);
- $this->assertCarbon($d, 2010, 12, 1, 0, 0, 0);
- }
- public function testCreateWithDay()
- {
- $d = Carbon::create(null, null, 21);
- $this->assertSame(21, $d->day);
- }
- public function testCreateWithInvalidDay()
- {
- $this->expectExceptionObject(new InvalidArgumentException(
- 'day must be between 0 and 99, -4 given'
- ));
- Carbon::create(null, null, -4);
- }
- public function testCreateDayWraps()
- {
- $d = Carbon::create(2011, 1, 40, 0, 0, 0);
- $this->assertCarbon($d, 2011, 2, 9, 0, 0, 0);
- }
- public function testCreateWithHourAndDefaultMinSecToZero()
- {
- $d = Carbon::create(null, null, null, 14);
- $this->assertSame(14, $d->hour);
- $this->assertSame(0, $d->minute);
- $this->assertSame(0, $d->second);
- }
- public function testCreateWithInvalidHour()
- {
- $this->expectExceptionObject(new InvalidArgumentException(
- 'hour must be between 0 and 99, -1 given'
- ));
- Carbon::create(null, null, null, -1);
- }
- public function testCreateHourWraps()
- {
- $d = Carbon::create(2011, 1, 1, 24, 0, 0);
- $this->assertCarbon($d, 2011, 1, 2, 0, 0, 0);
- }
- public function testCreateWithMinute()
- {
- $d = Carbon::create(null, null, null, null, 58);
- $this->assertSame(58, $d->minute);
- }
- public function testCreateWithInvalidMinute()
- {
- $this->expectExceptionObject(new InvalidArgumentException(
- 'minute must be between 0 and 99, -2 given'
- ));
- Carbon::create(2011, 1, 1, 0, -2, 0);
- }
- public function testCreateMinuteWraps()
- {
- $d = Carbon::create(2011, 1, 1, 0, 62, 0);
- $this->assertCarbon($d, 2011, 1, 1, 1, 2, 0);
- }
- public function testCreateWithSecond()
- {
- $d = Carbon::create(null, null, null, null, null, 59);
- $this->assertSame(59, $d->second);
- }
- public function testCreateWithInvalidSecond()
- {
- $this->expectExceptionObject(new InvalidArgumentException(
- 'second must be between 0 and 99, -2 given'
- ));
- Carbon::create(null, null, null, null, null, -2);
- }
- public function testCreateSecondsWrap()
- {
- $d = Carbon::create(2012, 1, 1, 0, 0, 61);
- $this->assertCarbon($d, 2012, 1, 1, 0, 1, 1);
- }
- public function testCreateWithDateTimeZone()
- {
- $d = Carbon::create(2012, 1, 1, 0, 0, 0, new DateTimeZone('Europe/London'));
- $this->assertCarbon($d, 2012, 1, 1, 0, 0, 0);
- $this->assertSame('Europe/London', $d->tzName);
- }
- public function testCreateWithTimeZoneString()
- {
- $d = Carbon::create(2012, 1, 1, 0, 0, 0, 'Europe/London');
- $this->assertCarbon($d, 2012, 1, 1, 0, 0, 0);
- $this->assertSame('Europe/London', $d->tzName);
- }
- public function testMake()
- {
- $this->assertCarbon(Carbon::make('2017-01-05'), 2017, 1, 5, 0, 0, 0);
- $this->assertCarbon(Carbon::make(new DateTime('2017-01-05')), 2017, 1, 5, 0, 0, 0);
- $this->assertCarbon(Carbon::make(new Carbon('2017-01-05')), 2017, 1, 5, 0, 0, 0);
- $this->assertNull(Carbon::make(3));
- }
- public function testCreateWithInvalidTimezoneOffset()
- {
- $this->expectExceptionObject(new InvalidTimeZoneException(
- 'Absolute timezone offset cannot be greater than 100.'
- ));
- Carbon::createFromDate(2000, 1, 1, -28236);
- }
- public function testCreateWithValidTimezoneOffset()
- {
- $dt = Carbon::createFromDate(2000, 1, 1, -4);
- $this->assertSame('America/New_York', $dt->tzName);
- $dt = Carbon::createFromDate(2000, 1, 1, '-4');
- $this->assertSame('-04:00', $dt->tzName);
- }
- public function testParseFromLocale()
- {
- $dateToday = Carbon::parseFromLocale('now', 'en');
- $dateTest = Carbon::parseFromLocale('à l\'instant', 'fr');
- $this->assertSame($dateToday->format('Y-m-d H:i:s'), $dateTest->format('Y-m-d H:i:s'));
- $dateToday = Carbon::parseFromLocale('today', 'en');
- $dateTest = Carbon::parseFromLocale('Aujourd\'hui', 'fr');
- $this->assertSame($dateToday->format('Y-m-d'), $dateTest->format('Y-m-d'));
- $dateTest = Carbon::parseFromLocale('Aujourd\'hui à 19:34', 'fr');
- $this->assertSame($dateToday->format('Y-m-d').' 19:34', $dateTest->format('Y-m-d H:i'));
- $dateTest = Carbon::parseFromLocale('Heute', 'de');
- $this->assertSame($dateToday->format('Y-m-d'), $dateTest->format('Y-m-d'));
- $dateTest = Carbon::parseFromLocale('Heute um 19:34', 'de');
- $this->assertSame($dateToday->format('Y-m-d').' 19:34', $dateTest->format('Y-m-d H:i'));
- $date = date('Y-m-d', strtotime($dateToday.' + 1 days'));
- $dateTest = Carbon::parseFromLocale('demain', 'fr');
- $this->assertSame($date, $dateTest->format('Y-m-d'));
- $date = date('Y-m-d', strtotime($dateToday.' + 2 days'));
- $dateTest = Carbon::parseFromLocale('après-demain', 'fr');
- $this->assertSame($date, $dateTest->format('Y-m-d'));
- $date = date('Y-m-d', strtotime($dateToday.' - 1 days'));
- $dateTest = Carbon::parseFromLocale('hier', 'fr');
- $this->assertSame($date, $dateTest->format('Y-m-d'));
- $date = date('Y-m-d', strtotime($dateToday.' - 2 days'));
- $dateTest = Carbon::parseFromLocale('avant-hier', 'fr');
- $this->assertSame($date, $dateTest->format('Y-m-d'));
- $date = Carbon::parseFromLocale('23 Okt 2019', 'de');
- $this->assertSame('Wednesday, October 23, 2019 12:00 AM America/Toronto', $date->isoFormat('LLLL zz'));
- $date = Carbon::parseFromLocale('23 Okt 2019', 'de', 'Europe/Berlin')->locale('de');
- $this->assertSame('Mittwoch, 23. Oktober 2019 00:00 Europe/Berlin', $date->isoFormat('LLLL zz'));
- $date = Carbon::parseFromLocale('23 červenec 2019', 'cs');
- $this->assertSame('2019-07-23', $date->format('Y-m-d'));
- $date = Carbon::parseFromLocale('23 červen 2019', 'cs');
- $this->assertSame('2019-06-23', $date->format('Y-m-d'));
- Carbon::setTestNow('2021-01-26 15:45:13');
- $date = Carbon::parseFromLocale('завтра', 'ru');
- $this->assertSame('2021-01-27 00:00:00', $date->format('Y-m-d H:i:s'));
- }
- /**
- * @dataProvider \Tests\Carbon\CreateTest::dataForLocales
- *
- * @group localization
- */
- public function testParseFromLocaleForEachLocale($locale)
- {
- $expectedDate = Carbon::parse('today 4:26');
- $date = Carbon::parseFromLocale($expectedDate->locale($locale)->calendar(), $locale);
- $this->assertSame($expectedDate->format('Y-m-d H:i'), $date->format('Y-m-d H:i'));
- }
- public function testParseFromLocaleWithDefaultLocale()
- {
- Carbon::setLocale('fr');
- $date = Carbon::parseFromLocale('Dimanche');
- $this->assertSame('dimanche', $date->dayName);
- $date = Carbon::parseFromLocale('Lundi');
- $this->assertSame('lundi', $date->dayName);
- $date = Carbon::parseFromLocale('à l’instant');
- $this->assertEquals(Carbon::now(), $date);
- $date = Carbon::parseFromLocale('après-demain');
- $this->assertEquals(Carbon::today()->addDays(2), $date);
- }
- public function testCreateFromLocaleFormat()
- {
- $date = Carbon::createFromLocaleFormat('Y M d H,i,s', 'zh_CN', '2019 四月 4 12,04,21');
- $this->assertSame('Thursday, April 4, 2019 12:04 PM America/Toronto', $date->isoFormat('LLLL zz'));
- $date = Carbon::createFromLocaleFormat('Y M d H,i,s', 'zh_TW', '2019 四月 4 12,04,21', 'Asia/Shanghai')->locale('zh');
- $this->assertSame('2019年4月4日星期四 中午 12点04分 Asia/Shanghai', $date->isoFormat('LLLL zz'));
- $this->assertSame(
- '2022-12-05 America/Mexico_City',
- Carbon::createFromLocaleFormat('d * F * Y', 'es', '05 de diciembre de 2022', 'America/Mexico_City')
- ->format('Y-m-d e')
- );
- $this->assertSame(
- '2022-12-05 America/Mexico_City',
- Carbon::createFromLocaleFormat('d \of F \of Y', 'es', '05 de diciembre de 2022', 'America/Mexico_City')
- ->format('Y-m-d e')
- );
- $this->assertSame(
- '2022-12-05 America/Mexico_City',
- Carbon::createFromLocaleFormat('d \o\f F \o\f Y', 'es', '05 de diciembre de 2022', 'America/Mexico_City')
- ->format('Y-m-d e')
- );
- $this->assertSame(
- '2022-12-05 America/Mexico_City',
- Carbon::createFromLocaleFormat('d \d\e F \d\e Y', 'es', '05 de diciembre de 2022', 'America/Mexico_City')
- ->format('Y-m-d e')
- );
- $this->assertSame(
- '2022-12-05 America/Mexico_City',
- Carbon::createFromLocaleFormat('d \n\o\t F \n\o\t Y', 'es', '05 not diciembre not 2022', 'America/Mexico_City')
- ->format('Y-m-d e')
- );
- }
- public function testCreateFromIsoFormat()
- {
- $date = Carbon::createFromIsoFormat('!YYYYY MMMM D', '2019 April 4');
- $this->assertSame('Thursday, April 4, 2019 12:00 AM America/Toronto', $date->isoFormat('LLLL zz'));
- }
- public function testCreateFromIsoFormatException()
- {
- $this->expectExceptionObject(new InvalidArgumentException(
- 'Format wo not supported for creation.'
- ));
- Carbon::createFromIsoFormat('YY D wo', '2019 April 4');
- }
- public function testCreateFromLocaleIsoFormat()
- {
- $date = Carbon::createFromLocaleIsoFormat('YYYY MMMM D HH,mm,ss', 'zh_TW', '2019 四月 4 12,04,21');
- $this->assertSame('Thursday, April 4, 2019 12:04 PM America/Toronto', $date->isoFormat('LLLL zz'));
- $date = Carbon::createFromLocaleIsoFormat('LLL zz', 'zh', '2019年4月4日 下午 2点04分 Asia/Shanghai');
- $this->assertSame('Thursday, April 4, 2019 2:04 PM Asia/Shanghai', $date->isoFormat('LLLL zz'));
- $this->assertSame('2019年4月4日星期四 下午 2点04分 Asia/Shanghai', $date->locale('zh')->isoFormat('LLLL zz'));
- $date = Carbon::createFromLocaleIsoFormat('llll', 'fr_CA', 'mar. 24 juil. 2018 08:34');
- $this->assertSame('2018-07-24 08:34', $date->format('Y-m-d H:i'));
- }
- public static function dataForLocales(): array
- {
- $locales = [
- 'aa_ER',
- 'aa_ER@saaho',
- 'aa_ET',
- 'af',
- 'af_NA',
- 'af_ZA',
- 'agq',
- 'agr',
- 'agr_PE',
- 'ak',
- 'ak_GH',
- 'am',
- 'am_ET',
- 'an',
- 'an_ES',
- 'anp',
- 'anp_IN',
- 'ar',
- 'ar_AE',
- 'ar_BH',
- 'ar_DJ',
- 'ar_DZ',
- 'ar_EG',
- 'ar_EH',
- 'ar_ER',
- 'ar_IL',
- 'ar_IN',
- 'ar_IQ',
- 'ar_JO',
- 'ar_KM',
- 'ar_KW',
- 'ar_LB',
- 'ar_LY',
- 'ar_MA',
- 'ar_MR',
- 'ar_OM',
- 'ar_PS',
- 'ar_QA',
- 'ar_SA',
- 'ar_SD',
- 'ar_SO',
- 'ar_SS',
- 'ar_SY',
- 'ar_Shakl',
- 'ar_TD',
- 'ar_TN',
- 'ar_YE',
- 'as',
- 'as_IN',
- 'asa',
- 'ast',
- 'ast_ES',
- 'ayc',
- 'ayc_PE',
- 'az',
- 'az_AZ',
- 'az_Cyrl',
- 'az_Latn',
- 'bas',
- 'be',
- 'be_BY',
- 'bem',
- 'bem_ZM',
- 'ber',
- 'ber_DZ',
- 'ber_MA',
- 'bez',
- 'bg',
- 'bg_BG',
- 'bhb',
- 'bhb_IN',
- 'bho',
- 'bho_IN',
- 'bi',
- 'bi_VU',
- 'bm',
- 'bo_IN',
- 'br',
- 'br_FR',
- 'brx',
- 'brx_IN',
- 'bs',
- 'bs_BA',
- 'bs_Cyrl',
- 'bs_Latn',
- 'ca',
- 'ca_AD',
- 'ca_ES',
- 'ca_ES_Valencia',
- 'ca_FR',
- 'ca_IT',
- 'ccp',
- 'ccp_IN',
- 'ce',
- 'ce_RU',
- 'cgg',
- 'chr',
- 'chr_US',
- 'cmn',
- 'cmn_TW',
- 'crh',
- 'crh_UA',
- 'cu',
- 'cy',
- 'cy_GB',
- 'da',
- 'da_DK',
- 'da_GL',
- 'dav',
- 'dje',
- 'doi',
- 'doi_IN',
- 'dsb',
- 'dsb_DE',
- 'dua',
- 'dv',
- 'dv_MV',
- 'dyo',
- 'dz',
- 'dz_BT',
- 'ebu',
- 'ee_TG',
- 'el',
- 'el_CY',
- 'el_GR',
- 'en',
- 'en_001',
- 'en_150',
- 'en_AG',
- 'en_AI',
- 'en_AS',
- 'en_AT',
- 'en_AU',
- 'en_BB',
- 'en_BE',
- 'en_BI',
- 'en_BM',
- 'en_BS',
- 'en_BW',
- 'en_BZ',
- 'en_CA',
- 'en_CC',
- 'en_CH',
- 'en_CK',
- 'en_CM',
- 'en_CX',
- 'en_CY',
- 'en_DE',
- 'en_DG',
- 'en_DK',
- 'en_DM',
- 'en_ER',
- 'en_FI',
- 'en_FJ',
- 'en_FK',
- 'en_FM',
- 'en_GB',
- 'en_GD',
- 'en_GG',
- 'en_GH',
- 'en_GI',
- 'en_GM',
- 'en_GU',
- 'en_GY',
- 'en_HK',
- 'en_IE',
- 'en_IL',
- 'en_IM',
- 'en_IN',
- 'en_IO',
- 'en_ISO',
- 'en_JE',
- 'en_JM',
- 'en_KE',
- 'en_KI',
- 'en_KN',
- 'en_KY',
- 'en_LC',
- 'en_LR',
- 'en_LS',
- 'en_MG',
- 'en_MH',
- 'en_MO',
- 'en_MP',
- 'en_MS',
- 'en_MT',
- 'en_MU',
- 'en_MW',
- 'en_MY',
- 'en_NA',
- 'en_NF',
- 'en_NG',
- 'en_NL',
- 'en_NR',
- 'en_NU',
- 'en_NZ',
- 'en_PG',
- 'en_PH',
- 'en_PK',
- 'en_PN',
- 'en_PR',
- 'en_PW',
- 'en_RW',
- 'en_SB',
- 'en_SC',
- 'en_SD',
- 'en_SE',
- 'en_SG',
- 'en_SH',
- 'en_SI',
- 'en_SL',
- 'en_SS',
- 'en_SX',
- 'en_SZ',
- 'en_TC',
- 'en_TK',
- 'en_TO',
- 'en_TT',
- 'en_TV',
- 'en_TZ',
- 'en_UG',
- 'en_UM',
- 'en_US',
- 'en_US_Posix',
- 'en_VC',
- 'en_VG',
- 'en_VI',
- 'en_VU',
- 'en_WS',
- 'en_ZA',
- 'en_ZM',
- 'en_ZW',
- 'eo',
- 'es',
- 'es_419',
- 'es_AR',
- 'es_BO',
- 'es_BR',
- 'es_BZ',
- 'es_CL',
- 'es_CO',
- 'es_CR',
- 'es_CU',
- 'es_DO',
- 'es_EA',
- 'es_EC',
- 'es_ES',
- 'es_GQ',
- 'es_GT',
- 'es_HN',
- 'es_IC',
- 'es_MX',
- 'es_NI',
- 'es_PA',
- 'es_PE',
- 'es_PH',
- 'es_PR',
- 'es_PY',
- 'es_SV',
- 'es_US',
- 'es_UY',
- 'es_VE',
- 'et',
- 'et_EE',
- 'ewo',
- 'ff',
- 'ff_CM',
- 'ff_GN',
- 'ff_MR',
- 'ff_SN',
- 'fil',
- 'fil_PH',
- 'fo',
- 'fo_DK',
- 'fo_FO',
- 'fr',
- 'fr_BE',
- 'fr_BF',
- 'fr_BI',
- 'fr_BJ',
- 'fr_BL',
- 'fr_CA',
- 'fr_CD',
- 'fr_CF',
- 'fr_CG',
- 'fr_CH',
- 'fr_CI',
- 'fr_CM',
- 'fr_DJ',
- 'fr_DZ',
- 'fr_FR',
- 'fr_GA',
- 'fr_GF',
- 'fr_GN',
- 'fr_GP',
- 'fr_GQ',
- 'fr_HT',
- 'fr_KM',
- 'fr_LU',
- 'fr_MA',
- 'fr_MC',
- 'fr_MF',
- 'fr_MG',
- 'fr_ML',
- 'fr_MQ',
- 'fr_MR',
- 'fr_MU',
- 'fr_NC',
- 'fr_NE',
- 'fr_PF',
- 'fr_PM',
- 'fr_RE',
- 'fr_RW',
- 'fr_SC',
- 'fr_SN',
- 'fr_SY',
- 'fr_TD',
- 'fr_TG',
- 'fr_TN',
- 'fr_VU',
- 'fr_WF',
- 'fr_YT',
- 'fy',
- 'fy_NL',
- 'ga',
- 'ga_IE',
- 'gd',
- 'gd_GB',
- 'gez',
- 'gez_ER',
- 'gez_ET',
- 'gl',
- 'gl_ES',
- 'guz',
- 'gv',
- 'gv_GB',
- 'ha',
- 'ha_GH',
- 'ha_NE',
- 'ha_NG',
- 'hak',
- 'hak_TW',
- 'haw',
- 'he',
- 'he_IL',
- 'hif',
- 'hif_FJ',
- 'hne',
- 'hne_IN',
- 'hr',
- 'hr_BA',
- 'hr_HR',
- 'hsb',
- 'hsb_DE',
- 'ht',
- 'ht_HT',
- 'hy',
- 'hy_AM',
- 'ia',
- 'ia_FR',
- 'id',
- 'id_ID',
- 'ig',
- 'ig_NG',
- 'ii',
- 'ik',
- 'ik_CA',
- 'in',
- 'it',
- 'it_CH',
- 'it_IT',
- 'it_SM',
- 'it_VA',
- 'iu',
- 'iu_CA',
- 'iw',
- 'ja',
- 'ja_JP',
- 'jgo',
- 'jmc',
- 'jv',
- 'kab',
- 'kab_DZ',
- 'kam',
- 'kde',
- 'kea',
- 'khq',
- 'ki',
- 'kk',
- 'kk_KZ',
- 'kkj',
- 'kl',
- 'kl_GL',
- 'kln',
- 'km',
- 'km_KH',
- 'kok',
- 'kok_IN',
- 'ks',
- 'ks_IN',
- 'ks_IN@devanagari',
- 'ksb',
- 'ksf',
- 'ksh',
- 'kw',
- 'kw_GB',
- 'ky',
- 'ky_KG',
- 'lag',
- 'lg',
- 'lg_UG',
- 'li',
- 'li_NL',
- 'lij',
- 'lij_IT',
- 'lkt',
- 'ln',
- 'ln_AO',
- 'ln_CD',
- 'ln_CF',
- 'ln_CG',
- 'lo',
- 'lo_LA',
- 'lrc',
- 'lrc_IQ',
- 'lt',
- 'lt_LT',
- 'lu',
- 'luo',
- 'luy',
- 'lzh',
- 'lzh_TW',
- 'mag',
- 'mag_IN',
- 'mai',
- 'mai_IN',
- 'mas',
- 'mas_TZ',
- 'mer',
- 'mfe',
- 'mfe_MU',
- 'mg',
- 'mg_MG',
- 'mgh',
- 'mgo',
- 'mhr',
- 'mhr_RU',
- 'mi',
- 'mi_NZ',
- 'miq',
- 'miq_NI',
- 'mjw',
- 'mjw_IN',
- 'mk',
- 'mk_MK',
- 'mni',
- 'mni_IN',
- 'mo',
- 'ms',
- 'ms_BN',
- 'ms_MY',
- 'ms_SG',
- 'mt',
- 'mt_MT',
- 'mua',
- 'mzn',
- 'nan',
- 'nan_TW',
- 'nan_TW@latin',
- 'naq',
- 'nb',
- 'nb_NO',
- 'nb_SJ',
- 'nd',
- 'nds',
- 'nds_DE',
- 'nds_NL',
- 'ne_IN',
- 'nhn',
- 'nhn_MX',
- 'niu',
- 'niu_NU',
- 'nl',
- 'nl_AW',
- 'nl_BE',
- 'nl_BQ',
- 'nl_CW',
- 'nl_NL',
- 'nl_SR',
- 'nl_SX',
- 'nmg',
- 'nn',
- 'nn_NO',
- 'nnh',
- 'no',
- 'nr',
- 'nr_ZA',
- 'nso',
- 'nso_ZA',
- 'nus',
- 'nyn',
- 'oc',
- 'oc_FR',
- 'om',
- 'om_ET',
- 'om_KE',
- 'os',
- 'os_RU',
- 'pa_Arab',
- 'pa_Guru',
- 'pl',
- 'pl_PL',
- 'prg',
- 'pt',
- 'pt_AO',
- 'pt_BR',
- 'pt_CH',
- 'pt_CV',
- 'pt_GQ',
- 'pt_GW',
- 'pt_LU',
- 'pt_MO',
- 'pt_MZ',
- 'pt_PT',
- 'pt_ST',
- 'pt_TL',
- 'qu',
- 'qu_BO',
- 'qu_EC',
- 'quz',
- 'quz_PE',
- 'raj',
- 'raj_IN',
- 'rm',
- 'rn',
- 'ro',
- 'ro_MD',
- 'ro_RO',
- 'rof',
- 'ru',
- 'ru_BY',
- 'ru_KG',
- 'ru_KZ',
- 'ru_MD',
- 'ru_RU',
- 'ru_UA',
- 'rw',
- 'rw_RW',
- 'rwk',
- 'sa',
- 'sa_IN',
- 'sah',
- 'sah_RU',
- 'saq',
- 'sat',
- 'sat_IN',
- 'sbp',
- 'sd',
- 'sd_IN',
- 'sd_IN@devanagari',
- 'se',
- 'se_FI',
- 'se_NO',
- 'se_SE',
- 'seh',
- 'ses',
- 'sg',
- 'sgs',
- 'sgs_LT',
- 'shi',
- 'shi_Latn',
- 'shi_Tfng',
- 'shn',
- 'shn_MM',
- 'shs',
- 'shs_CA',
- 'sid',
- 'sid_ET',
- 'sl',
- 'sl_SI',
- 'sm',
- 'sm_WS',
- 'smn',
- 'sn',
- 'so',
- 'so_DJ',
- 'so_ET',
- 'so_KE',
- 'so_SO',
- 'sq',
- 'sq_AL',
- 'sq_MK',
- 'sq_XK',
- 'sr',
- 'sr_Cyrl',
- 'sr_Cyrl_BA',
- 'sr_Cyrl_ME',
- 'sr_Cyrl_XK',
- 'sr_Latn',
- 'sr_Latn_BA',
- 'sr_Latn_ME',
- 'sr_Latn_XK',
- 'sr_ME',
- 'sr_RS',
- 'sr_RS@latin',
- 'ss',
- 'ss_ZA',
- 'st',
- 'st_ZA',
- 'sv',
- 'sv_AX',
- 'sv_FI',
- 'sv_SE',
- 'sw',
- 'sw_CD',
- 'sw_KE',
- 'sw_TZ',
- 'sw_UG',
- 'szl',
- 'szl_PL',
- 'ta',
- 'ta_IN',
- 'ta_LK',
- 'tcy',
- 'tcy_IN',
- 'teo',
- 'teo_KE',
- 'tet',
- 'tg',
- 'tg_TJ',
- 'th',
- 'th_TH',
- 'the',
- 'the_NP',
- 'ti',
- 'ti_ER',
- 'ti_ET',
- 'tk',
- 'tk_TM',
- 'tlh',
- 'tn',
- 'tn_ZA',
- 'to',
- 'to_TO',
- 'tpi',
- 'tpi_PG',
- 'tr',
- 'tr_TR',
- 'ts',
- 'ts_ZA',
- 'tt_RU@iqtelif',
- 'twq',
- 'tzl',
- 'tzm',
- 'tzm_Latn',
- 'ug',
- 'ug_CN',
- 'uk',
- 'uk_UA',
- 'unm',
- 'unm_US',
- 'ur',
- 'ur_IN',
- 'ur_PK',
- 'uz_Arab',
- 'vai',
- 'vai_Vaii',
- 've',
- 've_ZA',
- 'vi',
- 'vi_VN',
- 'vo',
- 'vun',
- 'wa',
- 'wa_BE',
- 'wae',
- 'wae_CH',
- 'wal',
- 'wal_ET',
- 'xh',
- 'xh_ZA',
- 'xog',
- 'yav',
- 'yi',
- 'yi_US',
- 'yo',
- 'yo_BJ',
- 'yo_NG',
- 'yue',
- 'yue_HK',
- 'yue_Hans',
- 'yue_Hant',
- 'yuw',
- 'yuw_PG',
- 'zh',
- 'zh_CN',
- 'zh_HK',
- 'zh_Hans',
- 'zh_Hans_HK',
- 'zh_Hans_MO',
- 'zh_Hans_SG',
- 'zh_Hant',
- 'zh_Hant_HK',
- 'zh_Hant_MO',
- 'zh_Hant_TW',
- 'zh_MO',
- 'zh_SG',
- 'zh_TW',
- 'zh_YUE',
- 'zu',
- 'zu_ZA',
- ];
- return array_combine(
- $locales,
- array_map(
- static function (string $locale) {
- return [$locale];
- },
- $locales
- )
- );
- }
- }
|