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
arguments:
- "@request_stack"
- "@translator.default"
chill.main.twig.translatable_string:
class: Chill\MainBundle\Templating\TranslatableStringTwig

View File

@ -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 '';