1*c3437056SNickeau<?php 2*c3437056SNickeau 3*c3437056SNickeau 4*c3437056SNickeaunamespace ComboStrap; 5*c3437056SNickeau 6*c3437056SNickeau 7*c3437056SNickeauclass Locale extends MetadataText 8*c3437056SNickeau{ 9*c3437056SNickeau 10*c3437056SNickeau const PROPERTY_NAME = "locale"; 11*c3437056SNickeau 12*c3437056SNickeau public static function createForPage(Page $page) 13*c3437056SNickeau { 14*c3437056SNickeau return (new Locale()) 15*c3437056SNickeau ->setResource($page); 16*c3437056SNickeau } 17*c3437056SNickeau 18*c3437056SNickeau public function getTab(): string 19*c3437056SNickeau { 20*c3437056SNickeau return MetaManagerForm::TAB_LANGUAGE_VALUE; 21*c3437056SNickeau } 22*c3437056SNickeau 23*c3437056SNickeau public function getDescription(): string 24*c3437056SNickeau { 25*c3437056SNickeau return "The locale define the language and the formatting of numbers and time for the page. It's generated from the language and region metadata."; 26*c3437056SNickeau } 27*c3437056SNickeau 28*c3437056SNickeau public function getLabel(): string 29*c3437056SNickeau { 30*c3437056SNickeau return "Locale"; 31*c3437056SNickeau } 32*c3437056SNickeau 33*c3437056SNickeau public function getValue(): ?string 34*c3437056SNickeau { 35*c3437056SNickeau 36*c3437056SNickeau $resourceCombo = $this->getResource(); 37*c3437056SNickeau if (!($resourceCombo instanceof Page)) { 38*c3437056SNickeau return null; 39*c3437056SNickeau } 40*c3437056SNickeau $lang = $resourceCombo->getLangOrDefault(); 41*c3437056SNickeau if (!empty($lang)) { 42*c3437056SNickeau 43*c3437056SNickeau $country = $resourceCombo->getRegionOrDefault(); 44*c3437056SNickeau if (empty($country)) { 45*c3437056SNickeau $country = $lang; 46*c3437056SNickeau } 47*c3437056SNickeau return $lang . "_" . strtoupper($country); 48*c3437056SNickeau } 49*c3437056SNickeau return null; 50*c3437056SNickeau } 51*c3437056SNickeau 52*c3437056SNickeau 53*c3437056SNickeau public static function getName(): string 54*c3437056SNickeau { 55*c3437056SNickeau return self::PROPERTY_NAME; 56*c3437056SNickeau } 57*c3437056SNickeau 58*c3437056SNickeau public function getPersistenceType(): string 59*c3437056SNickeau { 60*c3437056SNickeau return Metadata::DERIVED_METADATA; 61*c3437056SNickeau } 62*c3437056SNickeau 63*c3437056SNickeau public function getMutable(): bool 64*c3437056SNickeau { 65*c3437056SNickeau return false; 66*c3437056SNickeau } 67*c3437056SNickeau 68*c3437056SNickeau public function getDefaultValue(): ?string 69*c3437056SNickeau { 70*c3437056SNickeau /** 71*c3437056SNickeau * The value of {@link locale_get_default()} is with an underscore 72*c3437056SNickeau * We follow this lead 73*c3437056SNickeau */ 74*c3437056SNickeau return Site::getLocale("_"); 75*c3437056SNickeau } 76*c3437056SNickeau 77*c3437056SNickeau public function getCanonical(): string 78*c3437056SNickeau { 79*c3437056SNickeau return "locale"; 80*c3437056SNickeau } 81*c3437056SNickeau 82*c3437056SNickeau 83*c3437056SNickeau} 84