From ab8c565ff36897549c97a3db736e067104abaca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Thu, 5 Feb 2015 16:43:25 +0100 Subject: [PATCH] add language fallback to translatable string refs #332 --- Resources/config/services.yml | 1 + Templating/TranslatableStringHelper.php | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Resources/config/services.yml b/Resources/config/services.yml index 122f72fd7..793c1f3da 100644 --- a/Resources/config/services.yml +++ b/Resources/config/services.yml @@ -42,6 +42,7 @@ services: class: Chill\MainBundle\Templating\TranslatableStringHelper arguments: - "@request_stack" + - "@translator.default" chill.main.twig.translatable_string: class: Chill\MainBundle\Templating\TranslatableStringTwig diff --git a/Templating/TranslatableStringHelper.php b/Templating/TranslatableStringHelper.php index c94c295a0..debfd74ed 100644 --- a/Templating/TranslatableStringHelper.php +++ b/Templating/TranslatableStringHelper.php @@ -22,6 +22,7 @@ namespace Chill\MainBundle\Templating; use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\Translation\Translator; /** * @@ -38,9 +39,12 @@ class TranslatableStringHelper */ private $requestStack; - public function __construct(RequestStack $requestStack) + private $fallbackLocales; + + public function __construct(RequestStack $requestStack, Translator $translator) { $this->requestStack = $requestStack; + $this->fallbackLocales = $translator->getFallbackLocales(); } /** @@ -64,13 +68,16 @@ class TranslatableStringHelper if (isset($translatableStrings[$language])) { + return $translatableStrings[$language]; } else { - foreach ($translatableStrings as $string) { - if (!empty($string)) { - return $string; + foreach ($this->fallbackLocales as $locale) { + if (array_key_exists($locale, $translatableStrings)) { + + return $translatableStrings[$locale]; } } + } return '';