Подтвердить что ты не робот

Каков наилучший способ перевода литеральных строк JavaScript в активы Assetic?

Я использую Symfony2 для разработки приложения, которое должно быть переводимым. Приложение имеет Assetic, позволяющее минимизировать и объединять файлы *.js и *.css. Тем не менее, у меня есть плагин jQuery, который я написал, который имеет в нем буквальные строки. Например, рассмотрим следующий код:

   $('<p>Are you sure you want to proceed?</p>').dialog({
        buttons: {
            "Yes" : function() {
                // ...
            },
            "No" : function() {
                // ...
            }
        }
    });

В приведенном выше фрагменте "Вы уверены...", "Да" и "Нет" всегда будет английский, и я не могу использовать Twig templating в файле .js, чтобы перевести его, используя что-то вроде: { { "yes" | trans}}

То, что я хочу знать, - это лучший способ использовать Twig для использования встроенного механизма трансляции Symfony2, чтобы перевести литеральные строки в мои JS-скрипты.

Есть ли способ создать, например: myscript.js.twig файлы?

4b9b3361

Ответ 1

Есть ли способ создать, например: myscript.js.twig файлы?

Кажется, плохая идея.


Вы можете проверить https://github.com/willdurand/BazingaExposeTranslationBundle

или создать его самостоятельно, например включить это в свой шаблон:

<script type="text/javascript">
    var translations = {
       // ... 
       'yes' : {{ 'yes' | trans }},
       // ...
    }
</script>

то если ваш javascript файл включен непосредственно перед </body>, вы можете использовать в нем переменную translations.

Ответ 2

Я искал что-то, чтобы заставить twig.js работать с переводами, который кажется мне лучшим решением. Тем не менее поиск.

Тем временем я использую этот jsgettext, который является реализацией gettext в Javascript, Джошуа И. Миллером. Я загрузил обратно в github, поскольку исходное репо не работает.

<script language="javascript" src="/path/LC_MESSAGES/myDomain.json"></script>
<script language="javascript" src="/path/Gettext.js"></script>

Вы загружаете свои файлы перевода в DOM, и jsgettext может анализировать его:

function _(msgid) { return gt.gettext(msgid); }

alert(_("some string"));

Чтобы получить путь к вашим файлам перевода из Symfony, вам нужно будет сделать некоторое расширение php/twig вокруг службы Translator, но оно отлично работает, не дублируя ваши ресурсы перевода.