diff --git a/Resources/config/services.yml b/Resources/config/services.yml
index e0719bf15..3a4766084 100644
--- a/Resources/config/services.yml
+++ b/Resources/config/services.yml
@@ -25,10 +25,19 @@ services:
- "%locale%"
tags:
- { name: form.type, alias: translatable_string }
+
+
chill.main.helper.translatable_string:
class: Chill\MainBundle\Templating\TranslatableStringHelper
arguments:
- "@request_stack"
+
+ chill.main.twig.translatable_string:
+ class: Chill\MainBundle\Templating\TranslatableStringTwig
+ calls:
+ - [ setContainer, ["@service_container"]]
+ tags:
+ - { name: twig.extension }
chill.main.form.type.select2choice:
class: Chill\MainBundle\Form\Type\Select2ChoiceType
diff --git a/Templating/TranslatableStringHelper.php b/Templating/TranslatableStringHelper.php
new file mode 100644
index 000000000..c94c295a0
--- /dev/null
+++ b/Templating/TranslatableStringHelper.php
@@ -0,0 +1,80 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+namespace Chill\MainBundle\Templating;
+
+use Symfony\Component\HttpFoundation\RequestStack;
+
+/**
+ *
+ * This helper helps to find the string in current locale from translatable_strings
+ *
+ * @author Julien Fastré
+ *
+ */
+class TranslatableStringHelper
+{
+ /**
+ *
+ * @var RequestStack
+ */
+ private $requestStack;
+
+ public function __construct(RequestStack $requestStack)
+ {
+ $this->requestStack = $requestStack;
+ }
+
+ /**
+ * return the string in current locale if it exists.
+ *
+ * If it does not exists; return the name in the first language available.
+ *
+ * Return a blank string if any strings are available.
+ * Return NULL if $translatableString is NULL
+ *
+ * @param array $translatableStrings
+ * @return string
+ */
+ public function localize(array $translatableStrings)
+ {
+ if (NULL === $translatableStrings) {
+ return NULL;
+ }
+
+ $language = $this->requestStack->getCurrentRequest()->getLocale();
+
+
+ if (isset($translatableStrings[$language])) {
+ return $translatableStrings[$language];
+ } else {
+ foreach ($translatableStrings as $string) {
+ if (!empty($string)) {
+ return $string;
+ }
+ }
+ }
+
+ return '';
+
+ }
+
+}
\ No newline at end of file
diff --git a/Templating/TranslatableStringTwig.php b/Templating/TranslatableStringTwig.php
new file mode 100644
index 000000000..ba58a412a
--- /dev/null
+++ b/Templating/TranslatableStringTwig.php
@@ -0,0 +1,32 @@
+container->get('chill.main.helper.translatable_string')
+ ->localize($translatableStrings);
+ }
+
+ public function getName()
+ {
+ return 'chill_main_localize';
+ }
+
+}
\ No newline at end of file