aboutsummaryrefslogtreecommitdiffstats
path: root/library/intl/src/LocaleResolverTrait.php
diff options
context:
space:
mode:
Diffstat (limited to 'library/intl/src/LocaleResolverTrait.php')
-rw-r--r--library/intl/src/LocaleResolverTrait.php89
1 files changed, 0 insertions, 89 deletions
diff --git a/library/intl/src/LocaleResolverTrait.php b/library/intl/src/LocaleResolverTrait.php
deleted file mode 100644
index 21c463c7e..000000000
--- a/library/intl/src/LocaleResolverTrait.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-namespace CommerceGuys\Intl;
-
-use CommerceGuys\Intl\Exception\UnknownLocaleException;
-
-trait LocaleResolverTrait
-{
- /**
- * The path where per-locale definitions are stored.
- */
- protected $definitionPath;
-
- /**
- * Determines which locale should be used for loading definitions.
- *
- * If the "bs-Cyrl-BA" locale is requested, with an "en" fallback,
- * the system will try to find the definitions for:
- * 1) bs-Cyrl-BA
- * 2) bs-Cyrl
- * 3) bs
- * 4) en
- * The first locale for which a definition file is found, wins.
- * Otherwise, an exception is thrown.
- *
- * @param string $locale The desired locale (i.e. fr-FR).
- * @param string $fallbackLocale A fallback locale (i.e "en").
- *
- * @return string
- *
- * @throws UnknownLocaleException
- */
- protected function resolveLocale($locale = null, $fallbackLocale = null)
- {
- if (is_null($locale)) {
- // Use the default locale if none was provided.
- // @todo Provide a way to override this.
- $locale = 'en';
- }
- // Normalize the locale. Allows en_US to work the same as en-US, etc.
- $locale = str_replace('_', '-', $locale);
- // List all possible variants (i.e. en-US gives "en-US" and "en").
- $localeVariants = $this->getLocaleVariants($locale);
- // A fallback locale was provided, add it to the end of the chain.
- if (isset($fallbackLocale)) {
- $localeVariants[] = $fallbackLocale;
- }
-
- // Try to resolve a locale by finding a matching definition file.
- $resolvedLocale = null;
- foreach ($localeVariants as $localeVariant) {
- $path = $this->definitionPath . $localeVariant . '.json';
- if (file_exists($path)) {
- $resolvedLocale = $localeVariant;
- break;
- }
- }
- // No locale could be resolved, stop here.
- if (!$resolvedLocale) {
- throw new UnknownLocaleException($locale);
- }
-
- return $resolvedLocale;
- }
-
- /**
- * Returns all variants of a locale.
- *
- * For example, "bs-Cyrl-BA" has the following variants:
- * 1) bs-Cyrl-BA
- * 2) bs-Cyrl
- * 3) bs
- *
- * @param string $locale The locale (i.e. fr-FR).
- *
- * @return array An array of all variants of a locale.
- */
- protected function getLocaleVariants($locale)
- {
- $localeVariants = array();
- $localeParts = explode('-', $locale);
- while (!empty($localeParts)) {
- $localeVariants[] = implode('-', $localeParts);
- array_pop($localeParts);
- }
-
- return $localeVariants;
- }
-}