@MSAFT

Как перевести строку в VueJS из Laravel?

Доброго времени суток. Возникла такая проблема, использую в VueJS перевод строк через Laravel через такое вот API:
Route::get('/js/lang-js', function () {
        Cache::forget('lang-js');
        $strings = Cache::rememberForever('lang-js', function () {
        $lang = config('app.locale');

        $files   = glob(resource_path('lang/' . $lang . '/*.php'));
        $strings = [];

        foreach ($files as $file) {
            $name           = basename($file, '.php');
            $strings[$name] = require $file;
        }

        return $strings;
    });

    header('Content-Type: text/javascript');
    echo('window.i18n = ' . json_encode($strings) . ';');
    exit();
})->name('assets.lang');


В шаблоне прекрасно работает через:
{{ trans('translation_file.translation_caller') }}

А вот строки в самом коде таким способом перевести невозможно, как быть? Не прописывать же вот так:
if(document.getElementsByTagName("html")[0].getAttribute("lang") === 'ru') {
                    swal({
                        position: 'top-end',
                        type: 'success',
                        title: 'Добавлено в корзину', //строка которую надо перевести
                        showConfirmButton: false,
                        timer: 1500
                    })
                }
                else if(document.getElementsByTagName('html')[0].getAttribute("lang") === 'en') {
                    swal({
                        position: 'top-end',
                        type: 'success',
                        title: 'Added to cart',
                        showConfirmButton: false,
                        timer: 1500
                    })
                }


Хотелось бы как-то изящней. Может нужно использовать компоненты? У кого-то был подобный опыт?
  • Вопрос задан
  • 448 просмотров
Решения вопроса 1
Astatroth
@Astatroth
Я тут случайно
Такой велосипед уже есть: vue-i18n, и для Ларавел есть пакет для связки с vue-i18n.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Bjornsen
@Bjornsen
Happy coder
Можешь попробовать использовать этот подход - https://github.com/keeborg/laravel-js-simple-trans...
Все переводы генерятся в один файл с расширением .json а потом он используется кастомным классом. В итоге можешь использовать переводы из ларки с теми же ключами, например $t.__('translation_file.translation_caller'); Используемый язык автоматически определяется внутри класса, главное не забыть навесить lang="" атрибут на тег html, но это в ларке вроде бы есть из коробки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы