class DefaultLocaleResolver in Commerce Core 8.2
Returns the locale based on the current language and country.
Hierarchy
- class \Drupal\commerce\Resolver\DefaultLocaleResolver implements LocaleResolverInterface
Expanded class hierarchy of DefaultLocaleResolver
1 file declares its use of DefaultLocaleResolver
- DefaultLocaleResolverTest.php in tests/
src/ Unit/ Resolver/ DefaultLocaleResolverTest.php
1 string reference to 'DefaultLocaleResolver'
1 service uses DefaultLocaleResolver
File
- src/
Resolver/ DefaultLocaleResolver.php, line 12
Namespace
Drupal\commerce\ResolverView source
class DefaultLocaleResolver implements LocaleResolverInterface {
/**
* The language manager.
*
* @var \Drupal\Core\Language\LanguageManagerInterface
*/
protected $languageManager;
/**
* The current country.
*
* @var \Drupal\commerce\CurrentCountryInterface
*/
protected $currentCountry;
/**
* Constructs a new DefaultLocaleResolver object.
*
* @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
* The language manager.
* @param \Drupal\commerce\CurrentCountryInterface $current_country
* The current country.
*/
public function __construct(LanguageManagerInterface $language_manager, CurrentCountryInterface $current_country) {
$this->languageManager = $language_manager;
$this->currentCountry = $current_country;
}
/**
* {@inheritdoc}
*/
public function resolve() {
// The getCurrentLanguage() fallback is a workaround for core bug #2684873.
$language = $this->languageManager
->getConfigOverrideLanguage() ?: $this->languageManager
->getCurrentLanguage();
$langcode = $language
->getId();
$langcode_parts = explode('-', $langcode);
if (count($langcode_parts) > 1 && strlen(end($langcode_parts)) == 2) {
// The current language already has a country component (e.g. 'pt-br'),
// it qualifies as a full locale.
$locale = $langcode;
}
elseif ($country = $this->currentCountry
->getCountry()) {
// Assemble the locale using the resolved country. This can result
// in non-existent combinations such as 'en-RS', it's up to the locale
// consumers (e.g. the number format repository) to perform fallback.
$locale = $langcode . '-' . $country;
}
else {
// Worst case scenario, the country is unknown.
$locale = $langcode;
}
return new Locale($locale);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DefaultLocaleResolver:: |
protected | property | The current country. | |
DefaultLocaleResolver:: |
protected | property | The language manager. | |
DefaultLocaleResolver:: |
public | function |
Resolves the locale. Overrides LocaleResolverInterface:: |
|
DefaultLocaleResolver:: |
public | function | Constructs a new DefaultLocaleResolver object. |