/** * @param string $value (eg. anglais (Royaume-Uni) (en_GB)) * * @return DisplayLocale */ public static function parse($value) { if (!preg_match('/^(.*) \\((\\w+)\\)$/', $value, $matches)) { throw new \InvalidArgumentException(sprintf('Unable to parse display locale "%s"', $value)); } $name = $matches[1]; $locale = Locale::parse($matches[2]); return new self($locale, $name); }
/** @inheritDoc */ public function translate($key, array $args = [], Locale $locale = null) { $locales = [$locale, $this->defaultLocale, Locale::parse('en')]; foreach ($locales as $locale) { if (!$locale) { continue; } $message = $this->messages->get($key, $locale); if ($message) { return $message->format($args); } } return $key; }
public function testFallsBackToLanguageIfTranslationForSpecifiedLanguageIsNotAvailable() { $messages = new ArrayMessageBundle(['en' => ['one' => 'one']]); $translator = new MessageTranslator(Locale::parse('en'), $messages); $this->assertEquals('one', $translator->translate('one', [], Locale::parse('es'))); }
/** * Returns the default locale. * * @return Locale */ public static function getDefault() { return Locale::parse(\Locale::getDefault()); }