Вопрос

[ПРАВИТЬ]
Это устарело.Перевод больше не выполняется, как описано ниже
[/ПРАВИТЬ]
В Magento 1 переводимые тексты, необходимые на javascript, были добавлены в jstranslate.xml файл в etc папке модуля, и они были автоматически добавлены в объект translator js.
Как я могу добавить переводимые тексты для использования в javascript в Magento 2?
Я нашел, как использовать текстовые переводы в Magento 2, но я не знаю, как добавлять новые.

Вот пример того, как их использовать:

alert($.mage.__('Text to translate here'));
Это было полезно?

Решение

ОК.Я нашел решение, но мне оно кажется уродливым.
В дескрипторе макета нужной мне страницы я добавляю это:

<referenceContainer name="after.body.start">
    <block class="Magento\Framework\View\Element\Template" name="some-name-here" template="[Namespace]_[Module]::translate.phtml"/>
</referenceContainer>

затем создайте шаблон translate.phtml в [Namespace]/[Module]/view/[frontend|adminhtml]/templates с таким содержанием:

<?php
$_data = array(
    'Text one to translate' => __('Text one to translate'),
    'Text two to translate' => __('Text two to translate'),
);
?>
<script type="text/javascript">
    require(["jquery","mage/translate"], function($){
        $.mage.translate.add(<?php echo Zend_Json::encode($_data) ?>)
    });
</script>

Я действительно надеюсь, что есть другой способ сделать это.

Другие советы

По умолчанию src для переводов во внешнем интерфейсе выглядит так:/app/code/Magento/Translation/view/base/templates/translate.phtml

указывая на этот блок /app/code/Magento/Translation/Block/Js.php

у которого это есть как поставщик данных /app/code/Magento/Translation/Model/Js/DataProvider.php

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top