123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Locale\Stub;
- use Symfony\Component\Locale\Exception\NotImplementedException;
- use Symfony\Component\Locale\Exception\MethodNotImplementedException;
- /**
- * Provides a stub Locale for the 'en' locale.
- *
- * @author Eriksen Costa <eriksen.costa@infranology.com.br>
- */
- class StubLocale
- {
- const DEFAULT_LOCALE = null;
- /** Locale method constants */
- const ACTUAL_LOCALE = 0;
- const VALID_LOCALE = 1;
- /** Language tags constants */
- const LANG_TAG = 'language';
- const EXTLANG_TAG = 'extlang';
- const SCRIPT_TAG = 'script';
- const REGION_TAG = 'region';
- const VARIANT_TAG = 'variant';
- const GRANDFATHERED_LANG_TAG = 'grandfathered';
- const PRIVATE_TAG = 'private';
- /**
- * Caches the countries
- *
- * @var array
- */
- protected static $countries = array();
- /**
- * Caches the languages
- *
- * @var array
- */
- protected static $languages = array();
- /**
- * Caches the locales
- *
- * @var array
- */
- protected static $locales = array();
- /**
- * Caches the currencies
- *
- * @var array
- */
- protected static $currencies = array();
- /**
- * Caches the currencies names
- *
- * @var array
- */
- protected static $currenciesNames = array();
- /**
- * Returns the country names for a locale
- *
- * @param string $locale The locale to use for the country names
- *
- * @return array The country names with their codes as keys
- *
- * @throws InvalidArgumentException When the locale is different than 'en'
- */
- static public function getDisplayCountries($locale)
- {
- return self::getStubData($locale, 'countries', 'region');
- }
- /**
- * Returns all available country codes
- *
- * @return array The country codes
- */
- static public function getCountries()
- {
- return array_keys(self::getDisplayCountries(self::getDefault()));
- }
- /**
- * Returns the language names for a locale
- *
- * @param string $locale The locale to use for the language names
- *
- * @return array The language names with their codes as keys
- *
- * @throws InvalidArgumentException When the locale is different than 'en'
- */
- static public function getDisplayLanguages($locale)
- {
- return self::getStubData($locale, 'languages', 'lang');
- }
- /**
- * Returns all available language codes
- *
- * @return array The language codes
- */
- static public function getLanguages()
- {
- return array_keys(self::getDisplayLanguages(self::getDefault()));
- }
- /**
- * Returns the locale names for a locale
- *
- * @param string $locale The locale to use for the locale names
- *
- * @return array The locale names with their codes as keys
- *
- * @throws InvalidArgumentException When the locale is different than 'en'
- */
- static public function getDisplayLocales($locale)
- {
- return self::getStubData($locale, 'locales', 'names');
- }
- /**
- * Returns all available locale codes
- *
- * @return array The locale codes
- */
- static public function getLocales()
- {
- return array_keys(self::getDisplayLocales(self::getDefault()));
- }
- /**
- * Returns the currencies data
- *
- * @param string $locale
- *
- * @return array The currencies data
- */
- static public function getCurrenciesData($locale)
- {
- return self::getStubData($locale, 'currencies', 'curr');
- }
- /**
- * Returns the currencies names for a locale
- *
- * @param string $locale The locale to use for the currencies names
- *
- * @return array The currencies names with their codes as keys
- *
- * @throws InvalidArgumentException When the locale is different than 'en'
- */
- static public function getDisplayCurrencies($locale)
- {
- $currencies = self::getCurrenciesData($locale);
- if (!empty(self::$currenciesNames)) {
- return self::$currenciesNames;
- }
- foreach ($currencies as $code => $data) {
- self::$currenciesNames[$code] = $data['name'];
- }
- return self::$currenciesNames;
- }
- /**
- * Returns all available currencies codes
- *
- * @return array The currencies codes
- */
- static public function getCurrencies()
- {
- return array_keys(self::getCurrenciesData(self::getDefault()));
- }
- /**
- * Returns the best available locale based on HTTP "Accept-Language" header according to RFC 2616
- *
- * @param string $header The string containing the "Accept-Language" header value
- *
- * @return string The corresponding locale code
- *
- * @see http://www.php.net/manual/en/locale.acceptfromhttp.php
- *
- * @throws MethodNotImplementedException
- */
- static public function acceptFromHttp($header)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns a correctly ordered and delimited locale code
- *
- * @param array $subtags A keyed array where the keys identify the particular locale code subtag
- *
- * @return string The corresponding locale code
- *
- * @see http://www.php.net/manual/en/locale.composelocale.php
- *
- * @throws MethodNotImplementedException
- */
- static public function composeLocale(array $subtags)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Checks if a language tag filter matches with locale
- *
- * @param string $langtag The language tag to check
- * @param string $locale The language range to check against
- * @param Boolean $canonicalize
- *
- * @return string The corresponding locale code
- *
- * @see http://www.php.net/manual/en/locale.filtermatches.php
- *
- * @throws MethodNotImplementedException
- */
- static public function filterMatches($langtag, $locale, $canonicalize = false)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the variants for the input locale
- *
- * @param string $locale The locale to extract the variants from
- *
- * @return array The locale variants
- *
- * @see http://www.php.net/manual/en/locale.getallvariants.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getAllVariants($locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the default locale
- *
- * @return string The default locale code. Always returns 'en'
- *
- * @see http://www.php.net/manual/en/locale.getdefault.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getDefault()
- {
- return 'en';
- }
- /**
- * Returns the localized display name for the locale language
- *
- * @param string $locale The locale code to return the display language from
- * @param string $inLocale Optional format locale code to use to display the language name
- *
- * @return string The localized language display name
- *
- * @see http://www.php.net/manual/en/locale.getdisplaylanguage.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getDisplayLanguage($locale, $inLocale = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the localized display name for the locale
- *
- * @param string $locale The locale code to return the display locale name from
- * @param string $inLocale Optional format locale code to use to display the locale name
- *
- * @return string The localized locale display name
- *
- * @see http://www.php.net/manual/en/locale.getdisplayname.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getDisplayName($locale, $inLocale = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the localized display name for the locale region
- *
- * @param string $locale The locale code to return the display region from
- * @param string $inLocale Optional format locale code to use to display the region name
- *
- * @return string The localized region display name
- *
- * @see http://www.php.net/manual/en/locale.getdisplayregion.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getDisplayRegion($locale, $inLocale = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the localized display name for the locale script
- *
- * @param string $locale The locale code to return the display script from
- * @param string $inLocale Optional format locale code to use to display the script name
- *
- * @return string The localized script display name
- *
- * @see http://www.php.net/manual/en/locale.getdisplayscript.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getDisplayScript($locale, $inLocale = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the localized display name for the locale variant
- *
- * @param string $locale The locale code to return the display variant from
- * @param string $inLocale Optional format locale code to use to display the variant name
- *
- * @return string The localized variant display name
- *
- * @see http://www.php.net/manual/en/locale.getdisplayvariant.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getDisplayVariant($locale, $inLocale = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the keywords for the locale
- *
- * @param string $locale The locale code to extract the keywords from
- *
- * @return array Associative array with the extracted variants
- *
- * @see http://www.php.net/manual/en/locale.getkeywords.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getKeywords($locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the primary language for the locale
- *
- * @param string $locale The locale code to extract the language code from
- *
- * @return string|null The extracted language code or null in case of error
- *
- * @see http://www.php.net/manual/en/locale.getprimarylanguage.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getPrimaryLanguage($locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the region for the locale
- *
- * @param string $locale The locale code to extract the region code from
- *
- * @return string|null The extracted region code or null if not present
- *
- * @see http://www.php.net/manual/en/locale.getregion.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getRegion($locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the script for the locale
- *
- * @param string $locale The locale code to extract the script code from
- *
- * @return string|null The extracted script code or null if not present
- *
- * @see http://www.php.net/manual/en/locale.getscript.php
- *
- * @throws MethodNotImplementedException
- */
- static public function getScript($locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the closest language tag for the locale
- *
- * @param array $langtag A list of the language tags to compare to locale
- * @param string $locale The locale to use as the language range when matching
- * @param Boolean $canonicalize If true, the arguments will be converted to canonical form before matching
- * @param string $default The locale to use if no match is found
- *
- * @see http://www.php.net/manual/en/locale.lookup.php
- *
- * @throws RuntimeException When the intl extension is not loaded
- */
- static public function lookup(array $langtag, $locale, $canonicalize = false, $default = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns an associative array of locale identifier subtags
- *
- * @param string $locale The locale code to extract the subtag array from
- *
- * @return array Associative array with the extracted subtags
- *
- * @see http://www.php.net/manual/en/locale.parselocale.php
- *
- * @throws MethodNotImplementedException
- */
- static public function parseLocale($locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Sets the default runtime locale
- *
- * @param string $locale The locale code
- *
- * @return Boolean true on success or false on failure
- *
- * @see http://www.php.net/manual/en/locale.parselocale.php
- *
- * @throws MethodNotImplementedException
- */
- static public function setDefault($locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the stub ICU data
- *
- * @param string $locale The locale code
- * @param string $cacheVariable The name of a static attribute to cache the data to
- * @param string $stubDataDir The stub data directory name
- *
- * @return array
- *
- * @throws InvalidArgumentException When the locale is different than 'en'
- */
- static private function getStubData($locale, $cacheVariable, $stubDataDir)
- {
- if ('en' !== $locale) {
- throw new \InvalidArgumentException(sprintf('Only the \'en\' locale is supported. %s', NotImplementedException::INTL_INSTALL_MESSAGE));
- }
- if (empty(self::${$cacheVariable})) {
- self::${$cacheVariable} = include __DIR__.'/../Resources/data/stub/'.$stubDataDir.'/en.php';
- }
- return self::${$cacheVariable};
- }
- }
|