Переводы текста на javascript Magento 2
-
12-12-2019 - |
Вопрос
[ПРАВИТЬ]
Это устарело.Перевод больше не выполняется, как описано ниже
[/ПРАВИТЬ]
В 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
Таким образом, вы можете изменить зависимость на собственного поставщика данных или перехватить эту зависимость, чтобы добавить собственные переводы, или добавить собственный блок этого типа с собственным поставщиком данных.