src/Enum/Language.php line 17
<?php
namespace App\Enum;
use ApiPlatform\Metadata\ApiResource,
ApiPlatform\Metadata\GetCollection,
ApiPlatform\Metadata\Get;
#[ApiResource(
description: 'Languages',
normalizationContext: ['groups' => ['read']],
operations: [
new GetCollection(provider: self::class . '::getCases'),
new Get(provider: self::class . '::getCase')
],
extraProperties: ['standard_put' => false],
)]
enum Language: string
{
use ResourceTrait;
// ISO 639-1
case PL = 'pl'; // Polish
case EN = 'en'; // English
case FR = 'fr'; // French
case AA = 'aa'; // Afar
case AF = 'af'; // Afrikaans
case AR = 'ar'; // Arabic
case HY = 'hy'; // Armenian
case SQ = 'sq'; // Albanian
case AZ = 'az'; // Azerbaijani
case EU = 'eu'; // Basque
case BE = 'be'; // Belarusian
case BN = 'bn'; // Bengali
case BS = 'bs'; // Bosnian
case BG = 'bg'; // Bulgarian
case MY = 'my'; // Burmese
case CA = 'ca'; // Catalan
case ZH = 'zh'; // Chinese
case HR = 'hr'; // Croatian
case CS = 'cs'; // Czech
case DA = 'da'; // Danish
case DV = 'dv'; // Dhivehi
case NL = 'nl'; // Dutch
case DZ = 'dz'; // Dzongkha
case ET = 'et'; // Estonian
case FO = 'fo'; // Faeroese
case FA = 'fa'; // Farsi (Persian)
case FI = 'fi'; // Finnish
case FIL = 'fil'; // Filipino
case GD = 'gd'; // Gaelic
case KA = 'ka'; // Georgian
case DE = 'de'; // German
case EL = 'el'; // Greek
case HE = 'he'; // Hebrew
case HI = 'hi'; // Hindi
case HU = 'hu'; // Hungarian
case IS = 'is'; // Icelandic
case ID = 'id'; // Indonesian
case GA = 'ga'; // Irish
case IT = 'it'; // Italian
case JA = 'ja'; // Japanese
case KK = 'kk'; // Kazakh
case KM = 'km'; // Khmer
case KO = 'ko'; // Korean
case KU = 'ku'; // Kurdish
case KY = 'ky'; // Kyrgyz
case LA = 'la'; // Latin
case LO = 'lo'; // Lao
case LV = 'lv'; // Latvian
case LT = 'lt'; // Lithuanian
case MK = 'mk'; // Macedonian
case ML = 'ml'; // Malayalam
case MS = 'ms'; // Malay
case MT = 'mt'; // Maltese
case MN = 'mn'; // Mongolian
case CN = 'cn'; // Montenegrin
case NE = 'ne'; // Nepali
case NO = 'no'; // Norwegian
case PS = 'ps'; // Pashto
case PT = 'pt'; // Portuguese
case PA = 'pa'; // Punjabi
case RM = 'rm'; // Rhaeto-Romanic
case RO = 'ro'; // Romanian
case RU = 'ru'; // Russian
case SR = 'sr'; // Serbian
case SI = 'si'; // Sinhala
case SK = 'sk'; // Slovak
case SL = 'sl'; // Slovenian
case SB = 'sb'; // Sorbian
case ST = 'st'; // Sotho
case ES = 'es'; // Spanish
case SV = 'sv'; // Swedish
case TG = 'tg'; // Tajik
case TH = 'th'; // Thai
case TI = 'ti'; // Tigrinya
case TS = 'ts'; // Tsonga
case TN = 'tn'; // Tswana
case TR = 'tr'; // Turkish
case TK = 'tk'; // Turkmen
case TVL = 'tvl'; // Tuvalu
case UA = 'ua'; // Ukrainian
case UR = 'ur'; // Urdu
case UZ = 'uz'; // Uzbek
case VE = 've'; // Venda
case VI = 'vi'; // Vietnamese
case CY = 'cy'; // Welsh
case XH = 'xh'; // Xhosa
case JI = 'ji'; // Yiddish
case ZU = 'zu'; // Zulu
const TITLES = [
'pl' => 'Polish',
'en' => 'English',
'fr' => 'French',
'aa' => 'Afar',
'af' => 'Afrikaans',
'ar' => 'Arabic',
'hy' => 'Armenian',
'sq' => 'Albanian',
'az' => 'Azerbaijani',
'eu' => 'Basque',
'be' => 'Belarusian',
'bn' => 'Bengali',
'bs' => 'Bosnian',
'bg' => 'Bulgarian',
'my' => 'Burmese',
'ca' => 'Catalan',
'zh' => 'Chinese',
'hr' => 'Croatian',
'cs' => 'Czech',
'da' => 'Danish',
'dv' => 'Dhivehi',
'nl' => 'Dutch',
'dz' => 'Dzongkha',
'et' => 'Estonian',
'fo' => 'Faeroese',
'fa' => 'Farsi (Persian)',
'fi' => 'Finnish',
'fil' => 'Filipino',
'gd' => 'Gaelic',
'ka' => 'Georgian',
'de' => 'German',
'el' => 'Greek',
'he' => 'Hebrew',
'hi' => 'Hindi',
'hu' => 'Hungarian',
'is' => 'Icelandic',
'id' => 'Indonesian',
'ga' => 'Irish',
'it' => 'Italian',
'ja' => 'Japanese',
'kk' => 'Kazakh',
'km' => 'Khmer',
'ko' => 'Korean',
'ku' => 'Kurdish',
'ky' => 'Kyrgyz',
'la' => 'Latin',
'lo' => 'Lao',
'lv' => 'Latvian',
'lt' => 'Lithuanian',
'mk' => 'Macedonian',
'ml' => 'Malayalam',
'ms' => 'Malay',
'mt' => 'Maltese',
'mn' => 'Mongolian',
'cn' => 'Montenegrin',
'ne' => 'Nepali',
'no' => 'Norwegian',
'ps' => 'Pashto',
'pt' => 'Portuguese',
'pa' => 'Punjabi',
'rm' => 'Rhaeto-Romanic',
'ro' => 'Romanian',
'ru' => 'Russian',
'sr' => 'Serbian',
'si' => 'Sinhala',
'sk' => 'Slovak',
'sl' => 'Slovenian',
'sb' => 'Sorbian',
'st' => 'Sotho',
'es' => 'Spanish',
'sv' => 'Swedish',
'tg' => 'Tajik',
'th' => 'Thai',
'ti' => 'Tigrinya',
'ts' => 'Tsonga',
'tn' => 'Tswana',
'tr' => 'Turkish',
'tk' => 'Turkmen',
'tvl' => 'Tuvalu',
'ua' => 'Ukrainian',
'ur' => 'Urdu',
'uz' => 'Uzbek',
've' => 'Venda',
'vi' => 'Vietnamese',
'cy' => 'Welsh',
'xh' => 'Xhosa',
'ji' => 'Yiddish',
'zu' => 'Zulu',
];
public const DEFAULT_SITE = [self::PL, self::EN];
public const DEFAULT_JOURNAL = [self::EN];
public const DEFAULT_LANDING = [self::PL, self::EN];
public const ROUTES_REQUIREMENTS = 'en|fr|aa|af|ar|hy|sq|az|eu|be|bn|bs|bg|my|ca|zh|hr|cs|da|dv|nl|dz|et|fo|fa|fi|fil|gd|ka|de|el|he|hi|hu|is|id|ga|it|ja|kk|km|ko|ku|ky|la|lo|lv|lt|mk|ml|ms|mt|mn|cn|ne|no|ps|pt|pa|rm|ro|ru|sr|si|sk|sl|sb|st|es|sv|tg|th|ti|ts|tn|tr|tk|tvl|ua|ur|uz|ve|vi|cy|xh|ji|zu';
public function getLanguageCode(): string
{
return match ($this) {
self::UA => 'uk',
self::SB => 'wen',
self::CN => 'cnr',
default => $this->value,
};
}
}