src/Enum/Language.php line 17

  1. <?php
  2. namespace App\Enum;
  3. use ApiPlatform\Metadata\ApiResource,
  4.     ApiPlatform\Metadata\GetCollection,
  5.     ApiPlatform\Metadata\Get;
  6. #[ApiResource(
  7.     description'Languages',
  8.     normalizationContext: ['groups' => ['read']],
  9.     operations: [
  10.         new GetCollection(providerself::class . '::getCases'),
  11.         new Get(providerself::class . '::getCase')
  12.     ],
  13.     extraProperties: ['standard_put' => false],
  14. )]
  15. enum Languagestring
  16. {
  17.     use ResourceTrait;
  18.     // ISO 639-1
  19.     case PL 'pl'// Polish
  20.     case EN 'en'// English
  21.     case FR 'fr'// French
  22.     case AA 'aa'// Afar
  23.     case AF 'af'// Afrikaans
  24.     case AR 'ar'// Arabic
  25.     case HY 'hy'// Armenian
  26.     case SQ 'sq'// Albanian
  27.     case AZ 'az'// Azerbaijani
  28.     case EU 'eu'// Basque
  29.     case BE 'be'// Belarusian
  30.     case BN 'bn'// Bengali
  31.     case BS 'bs'// Bosnian
  32.     case BG 'bg'// Bulgarian
  33.     case MY 'my'// Burmese
  34.     case CA 'ca'// Catalan
  35.     case ZH 'zh'// Chinese
  36.     case HR 'hr'// Croatian
  37.     case CS 'cs'// Czech
  38.     case DA 'da'// Danish
  39.     case DV 'dv'// Dhivehi
  40.     case NL 'nl'// Dutch
  41.     case DZ 'dz'// Dzongkha
  42.     case ET 'et'// Estonian
  43.     case FO 'fo'// Faeroese
  44.     case FA 'fa'// Farsi (Persian)
  45.     case FI 'fi'// Finnish
  46.     case FIL 'fil'// Filipino
  47.     case GD 'gd'// Gaelic
  48.     case KA 'ka'// Georgian
  49.     case DE 'de'// German
  50.     case EL 'el'// Greek
  51.     case HE 'he'// Hebrew
  52.     case HI 'hi'// Hindi
  53.     case HU 'hu'// Hungarian
  54.     case IS 'is'// Icelandic
  55.     case ID 'id'// Indonesian
  56.     case GA 'ga'// Irish
  57.     case IT 'it'// Italian
  58.     case JA 'ja'// Japanese
  59.     case KK 'kk'// Kazakh
  60.     case KM 'km'// Khmer
  61.     case KO 'ko'// Korean
  62.     case KU 'ku'// Kurdish
  63.     case KY 'ky'// Kyrgyz
  64.     case LA 'la'// Latin
  65.     case LO 'lo'// Lao
  66.     case LV 'lv'// Latvian
  67.     case LT 'lt'// Lithuanian
  68.     case MK 'mk'// Macedonian
  69.     case ML 'ml'// Malayalam
  70.     case MS 'ms'// Malay
  71.     case MT 'mt'// Maltese
  72.     case MN 'mn'// Mongolian
  73.     case CN 'cn'// Montenegrin
  74.     case NE 'ne'// Nepali
  75.     case NO 'no'// Norwegian
  76.     case PS 'ps'// Pashto
  77.     case PT 'pt'// Portuguese
  78.     case PA 'pa'// Punjabi
  79.     case RM 'rm'// Rhaeto-Romanic
  80.     case RO 'ro'// Romanian
  81.     case RU 'ru'// Russian
  82.     case SR 'sr'// Serbian
  83.     case SI 'si'// Sinhala
  84.     case SK 'sk'// Slovak
  85.     case SL 'sl'// Slovenian
  86.     case SB 'sb'// Sorbian
  87.     case ST 'st'// Sotho
  88.     case ES 'es'// Spanish
  89.     case SV 'sv'// Swedish
  90.     case TG 'tg'// Tajik
  91.     case TH 'th'// Thai
  92.     case TI 'ti'// Tigrinya
  93.     case TS 'ts'// Tsonga
  94.     case TN 'tn'// Tswana
  95.     case TR 'tr'// Turkish
  96.     case TK 'tk'// Turkmen
  97.     case TVL 'tvl'// Tuvalu
  98.     case UA 'ua'// Ukrainian
  99.     case UR 'ur'// Urdu
  100.     case UZ 'uz'// Uzbek
  101.     case VE 've'// Venda
  102.     case VI 'vi'// Vietnamese
  103.     case CY 'cy'// Welsh
  104.     case XH 'xh'// Xhosa
  105.     case JI 'ji'// Yiddish
  106.     case ZU 'zu'// Zulu
  107.     const TITLES = [
  108.         'pl' => 'Polish',
  109.         'en' => 'English',
  110.         'fr' => 'French',
  111.         'aa' => 'Afar',
  112.         'af' => 'Afrikaans',
  113.         'ar' => 'Arabic',
  114.         'hy' => 'Armenian',
  115.         'sq' => 'Albanian',
  116.         'az' => 'Azerbaijani',
  117.         'eu' => 'Basque',
  118.         'be' => 'Belarusian',
  119.         'bn' => 'Bengali',
  120.         'bs' => 'Bosnian',
  121.         'bg' => 'Bulgarian',
  122.         'my' => 'Burmese',
  123.         'ca' => 'Catalan',
  124.         'zh' => 'Chinese',
  125.         'hr' => 'Croatian',
  126.         'cs' => 'Czech',
  127.         'da' => 'Danish',
  128.         'dv' => 'Dhivehi',
  129.         'nl' => 'Dutch',
  130.         'dz' => 'Dzongkha',
  131.         'et' => 'Estonian',
  132.         'fo' => 'Faeroese',
  133.         'fa' => 'Farsi (Persian)',
  134.         'fi' => 'Finnish',
  135.         'fil' => 'Filipino',
  136.         'gd' => 'Gaelic',
  137.         'ka' => 'Georgian',
  138.         'de' => 'German',
  139.         'el' => 'Greek',
  140.         'he' => 'Hebrew',
  141.         'hi' => 'Hindi',
  142.         'hu' => 'Hungarian',
  143.         'is' => 'Icelandic',
  144.         'id' => 'Indonesian',
  145.         'ga' => 'Irish',
  146.         'it' => 'Italian',
  147.         'ja' => 'Japanese',
  148.         'kk' => 'Kazakh',
  149.         'km' => 'Khmer',
  150.         'ko' => 'Korean',
  151.         'ku' => 'Kurdish',
  152.         'ky' => 'Kyrgyz',
  153.         'la' => 'Latin',
  154.         'lo' => 'Lao',
  155.         'lv' => 'Latvian',
  156.         'lt' => 'Lithuanian',
  157.         'mk' => 'Macedonian',
  158.         'ml' => 'Malayalam',
  159.         'ms' => 'Malay',
  160.         'mt' => 'Maltese',
  161.         'mn' => 'Mongolian',
  162.         'cn' => 'Montenegrin',
  163.         'ne' => 'Nepali',
  164.         'no' => 'Norwegian',
  165.         'ps' => 'Pashto',
  166.         'pt' => 'Portuguese',
  167.         'pa' => 'Punjabi',
  168.         'rm' => 'Rhaeto-Romanic',
  169.         'ro' => 'Romanian',
  170.         'ru' => 'Russian',
  171.         'sr' => 'Serbian',
  172.         'si' => 'Sinhala',
  173.         'sk' => 'Slovak',
  174.         'sl' => 'Slovenian',
  175.         'sb' => 'Sorbian',
  176.         'st' => 'Sotho',
  177.         'es' => 'Spanish',
  178.         'sv' => 'Swedish',
  179.         'tg' => 'Tajik',
  180.         'th' => 'Thai',
  181.         'ti' => 'Tigrinya',
  182.         'ts' => 'Tsonga',
  183.         'tn' => 'Tswana',
  184.         'tr' => 'Turkish',
  185.         'tk' => 'Turkmen',
  186.         'tvl' => 'Tuvalu',
  187.         'ua' => 'Ukrainian',
  188.         'ur' => 'Urdu',
  189.         'uz' => 'Uzbek',
  190.         've' => 'Venda',
  191.         'vi' => 'Vietnamese',
  192.         'cy' => 'Welsh',
  193.         'xh' => 'Xhosa',
  194.         'ji' => 'Yiddish',
  195.         'zu' => 'Zulu',
  196.     ];
  197.     public const DEFAULT_SITE = [self::PLself::EN];
  198.     public const DEFAULT_JOURNAL = [self::EN];
  199.     public const DEFAULT_LANDING = [self::PLself::EN];
  200.     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';
  201.     public function getLanguageCode(): string
  202.     {
  203.         return match ($this) {
  204.             self::UA => 'uk',
  205.             self::SB => 'wen',
  206.             self::CN => 'cnr',
  207.             default => $this->value,
  208.         };
  209.     }
  210. }