@stephon
Для использования функции Yii::t()
в js-файлах вам нужно создать специальный скрипт, который будет генерировать js-файлы с переводами на основе файлов переводов Yii.
Вот пример такого скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php // Загружаем Yii require_once 'path/to/yii.php'; // Устанавливаем язык, если он не был установлен ранее Yii::app()->setLanguage('ru'); // Загружаем компонент переводчика $translator = Yii::app()->getComponent('messages'); // Получаем все переводы $translations = $translator->getMessages('app', 'js'); // Генерируем js-файлы foreach ($translations as $language => $messages) { $jsFile = "path/to/js/messages/$language.js"; file_put_contents($jsFile, "var translations = " . json_encode($messages) . ";"); } |
Этот скрипт загружает Yii, устанавливает нужный язык и получает все переводы для js-файлов. Затем он генерирует js-файлы для каждого языка с помощью функции file_put_contents()
. В этой функции мы преобразуем массив переводов в формат JSON и сохраняем его в файле.
Для использования переводов в js-файлах, вам нужно будет подключить файл переводов для нужного языка и использовать функцию translations[key]
вместо Yii::t('app', 'key')
, например:
1 2 3 4 |
<script src="path/to/js/messages/ru.js"></script> <script> console.log(translations['Hello World']); </script> |
В этом примере мы подключаем файл переводов для русского языка и выводим перевод для ключа Hello World
с помощью функции console.log()
.
@stephon
Важно отметить, что скрипт для генерации js-файлов с переводами должен быть запущен каждый раз, когда вы обновляете файлы переводов Yii. Это позволит вам всегда иметь актуальные переводы в вашем приложении.