Каков наилучший способ перевода литеральных строк 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 файлы?
Ответы
Ответ 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, но оно отлично работает, не дублируя ваши ресурсы перевода.