123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- <?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\Intl\Locale;
- use Symfony\Component\Intl\Exception\MethodNotImplementedException;
- /**
- * Replacement for PHP's native {@link \Locale} class.
- *
- * The only methods supported in this class are `getDefault` and `canonicalize`.
- * All other methods will throw an exception when used.
- *
- * @author Eriksen Costa <eriksen.costa@infranology.com.br>
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @internal
- */
- abstract class Locale
- {
- public const DEFAULT_LOCALE = null;
- /* Locale method constants */
- public const ACTUAL_LOCALE = 0;
- public const VALID_LOCALE = 1;
- /* Language tags constants */
- public const LANG_TAG = 'language';
- public const EXTLANG_TAG = 'extlang';
- public const SCRIPT_TAG = 'script';
- public const REGION_TAG = 'region';
- public const VARIANT_TAG = 'variant';
- public const GRANDFATHERED_LANG_TAG = 'grandfathered';
- public const PRIVATE_TAG = 'private';
- /**
- * Not supported. 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 https://php.net/locale.acceptfromhttp
- *
- * @throws MethodNotImplementedException
- */
- public static function acceptFromHttp(string $header)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns a canonicalized locale string.
- *
- * This polyfill doesn't implement the full-spec algorithm. It only
- * canonicalizes locale strings handled by the `LocaleBundle` class.
- *
- * @return string
- */
- public static function canonicalize(string $locale)
- {
- if ('' === $locale || '.' === $locale[0]) {
- return self::getDefault();
- }
- if (!preg_match('/^([a-z]{2})[-_]([a-z]{2})(?:([a-z]{2})(?:[-_]([a-z]{2}))?)?(?:\..*)?$/i', $locale, $m)) {
- return $locale;
- }
- if (!empty($m[4])) {
- return strtolower($m[1]).'_'.ucfirst(strtolower($m[2].$m[3])).'_'.strtoupper($m[4]);
- }
- if (!empty($m[3])) {
- return strtolower($m[1]).'_'.ucfirst(strtolower($m[2].$m[3]));
- }
- return strtolower($m[1]).'_'.strtoupper($m[2]);
- }
- /**
- * Not supported. 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 https://php.net/locale.composelocale
- *
- * @throws MethodNotImplementedException
- */
- public static function composeLocale(array $subtags)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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
- *
- * @return string The corresponding locale code
- *
- * @see https://php.net/locale.filtermatches
- *
- * @throws MethodNotImplementedException
- */
- public static function filterMatches(string $langtag, string $locale, bool $canonicalize = false)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. Returns the variants for the input locale.
- *
- * @param string $locale The locale to extract the variants from
- *
- * @return array The locale variants
- *
- * @see https://php.net/locale.getallvariants
- *
- * @throws MethodNotImplementedException
- */
- public static function getAllVariants(string $locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Returns the default locale.
- *
- * @return string The default locale code. Always returns 'en'
- *
- * @see https://php.net/locale.getdefault
- */
- public static function getDefault()
- {
- return 'en';
- }
- /**
- * Not supported. 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 https://php.net/locale.getdisplaylanguage
- *
- * @throws MethodNotImplementedException
- */
- public static function getDisplayLanguage(string $locale, string $inLocale = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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 https://php.net/locale.getdisplayname
- *
- * @throws MethodNotImplementedException
- */
- public static function getDisplayName(string $locale, string $inLocale = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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 https://php.net/locale.getdisplayregion
- *
- * @throws MethodNotImplementedException
- */
- public static function getDisplayRegion(string $locale, string $inLocale = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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 https://php.net/locale.getdisplayscript
- *
- * @throws MethodNotImplementedException
- */
- public static function getDisplayScript(string $locale, string $inLocale = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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 https://php.net/locale.getdisplayvariant
- *
- * @throws MethodNotImplementedException
- */
- public static function getDisplayVariant(string $locale, string $inLocale = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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 https://php.net/locale.getkeywords
- *
- * @throws MethodNotImplementedException
- */
- public static function getKeywords(string $locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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 https://php.net/locale.getprimarylanguage
- *
- * @throws MethodNotImplementedException
- */
- public static function getPrimaryLanguage(string $locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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 https://php.net/locale.getregion
- *
- * @throws MethodNotImplementedException
- */
- public static function getRegion(string $locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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 https://php.net/locale.getscript
- *
- * @throws MethodNotImplementedException
- */
- public static function getScript(string $locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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 bool $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 https://php.net/locale.lookup
- *
- * @throws MethodNotImplementedException
- */
- public static function lookup(array $langtag, string $locale, bool $canonicalize = false, string $default = null)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. 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 https://php.net/locale.parselocale
- *
- * @throws MethodNotImplementedException
- */
- public static function parseLocale(string $locale)
- {
- throw new MethodNotImplementedException(__METHOD__);
- }
- /**
- * Not supported. Sets the default runtime locale.
- *
- * @return bool true on success or false on failure
- *
- * @see https://php.net/locale.setdefault
- *
- * @throws MethodNotImplementedException
- */
- public static function setDefault(string $locale)
- {
- if ('en' !== $locale) {
- throw new MethodNotImplementedException(__METHOD__);
- }
- return true;
- }
- }
|