add language fallback to translatable string

refs #332
This commit is contained in:
Julien Fastré 2015-02-05 16:43:25 +01:00
parent caaab740a9
commit ab8c565ff3
2 changed files with 12 additions and 4 deletions

View File

@ -42,6 +42,7 @@ services:
class: Chill\MainBundle\Templating\TranslatableStringHelper class: Chill\MainBundle\Templating\TranslatableStringHelper
arguments: arguments:
- "@request_stack" - "@request_stack"
- "@translator.default"
chill.main.twig.translatable_string: chill.main.twig.translatable_string:
class: Chill\MainBundle\Templating\TranslatableStringTwig class: Chill\MainBundle\Templating\TranslatableStringTwig

View File

@ -22,6 +22,7 @@
namespace Chill\MainBundle\Templating; namespace Chill\MainBundle\Templating;
use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Translation\Translator;
/** /**
* *
@ -38,9 +39,12 @@ class TranslatableStringHelper
*/ */
private $requestStack; private $requestStack;
public function __construct(RequestStack $requestStack) private $fallbackLocales;
public function __construct(RequestStack $requestStack, Translator $translator)
{ {
$this->requestStack = $requestStack; $this->requestStack = $requestStack;
$this->fallbackLocales = $translator->getFallbackLocales();
} }
/** /**
@ -64,13 +68,16 @@ class TranslatableStringHelper
if (isset($translatableStrings[$language])) { if (isset($translatableStrings[$language])) {
return $translatableStrings[$language]; return $translatableStrings[$language];
} else { } else {
foreach ($translatableStrings as $string) { foreach ($this->fallbackLocales as $locale) {
if (!empty($string)) { if (array_key_exists($locale, $translatableStrings)) {
return $string;
return $translatableStrings[$locale];
} }
} }
} }
return ''; return '';