Каков наилучший способ перевода буквенных строк JavaScript в ресурсы Assetic? - PullRequest
15 голосов
/ 04 августа 2011

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

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

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

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

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

Ответы [ 2 ]

29 голосов
/ 05 августа 2011

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

Это кажется плохой идеей.

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

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

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

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

0 голосов
/ 11 февраля 2017

Я искал что-то, чтобы заставил 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 для службы переводов, но оно прекрасно работает без дублирования ваших ресурсов перевода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...