Каков наилучший способ обновления локали в Laravel при использовании Vue компонентов и Blade? - PullRequest
1 голос
/ 27 января 2020

Я пытаюсь создать проект Laravel, который запускает пользователя на странице, состоящей из Vue файлов компонентов, где я использую библиотеку i18n. js для перевода текста в компонентах и обновляется с помощью переключателя в моем заголовке. vue файл. Мне также нужно перенести эту локаль, когда пользователь идет на регистрацию, которая все в блейд-расширениях. php и использует Auth::routes();, предоставленный Laravel.

, который я ранее пытался создать куки в JavaScript в Vue компонентах, и у меня он есть, чтобы он мог распознать обновление в моем файле header.blade. php, однако это чисто costeti c и фактически не применяет правильную локаль к Конфигурация и использовать данные, хранящиеся в resources/lang/xx.

. Я задал предыдущий вопрос, где я мог обновить локаль сеанса через URL-адрес при нажатии на переключатель, который имитирует тот, что в заголовке. vue однако, это не смогло обновить повар ie, но изменил локаль, поэтому текст в блейд-файлах изменится. php, но не будет переведен в файлы vue.

Ссылки на код:

web. php - Устанавливает локаль сеанса, set cook ie возвращает зашифрованный и доступен только по URL

Route::get('locale/{locale}', function($locale){
    Session::put('locale', $locale);
    setcookie('locale', $locale, time()+(60*60*24*10));
    return redirect()->back();
});

Заголовок. vue - vue компонент это постоянный т через стандартное приложение

import i18n from '../../../lang/i18n';
export default{
  data(){
    lang: this.getLanguage()
  },
  methods:{
    switchLangauge(locale) {
      document.cookie = 'locale='+ locale;
      this.lang = locale;
      i18n.locale = locale;
    },
    getLanguag(){
      var x = document.cookie.split(';');
      for(var i = 0; i < x.length; i++){
        var key = x[i].split('=')[0].trim();
        if(key == "locale"){
          return x[i].split('=')[1].trim();
        }
      }
    }
  }
}

header.blade. php - заменяет vue компонент, когда пользователь хочет зарегистрироваться / войти в систему

<li>
  <div id="toggle">
    <div class="lang {{ $_COOKIE['locale'] == 'en' ? 'selected' : '' }}">
       <a class="{{ $_COOKIE['locale'] == 'en' ? 'selected' : '' }}" href="{{ url('locale/en') }}">EN</a>
    </div>
    <div class="lang {{ $_COOKIE['locale'] == 'cy' ? 'selected' : '' }}">
      <a class="{{ $_COOKIE['locale'] == 'cy' ? 'selected' : '' }}" href="{{ url('locale/cy') }}">CY</a>
    </div>
  </div>
</li>

Мне удалось найти https://laracasts.com/discuss/channels/tips/example-on-how-to-use-multiple-locales-in-your-laravel-5-website - это способ сделать то, что я хочу достичь в blade-сервере. php, но не похоже, что его можно будет использовать в vue файлах, и я не могу проверить код, потому что репо не работает.

Мой вопрос: существует ли правильный способ, позволяющий пользователю иметь возможность переключать свой выбор языка и поддерживать его, переходя от компонента vue к блейду. Страница php и тиски наоборот, с изменением текста в соответствии с выбранным языком в обоих типах файлов?

-EDIT- 27-01

Мне удалось найти статью об использовании переводов в vue. js с использованием поставщика услуг (https://dev.to/4unkur/how-to-use-laravel-translations-in-js-vue-files-ia) Является ли это единственным / наиболее эффективным способом достижения того, чего я хочу? Если я реализую это, единственная проблема, которую я вижу, это то, что я не смогу установить повара ie. Буду признателен за любую помощь.

-EDIT- 28-01

Я пытался создать поставщика услуг, однако, я получаю ошибку: ReflectionException Class encrypter does not exist, нашел решения, которые заявляют Мне нужно запустить php artisan key:generate, но я уже выполнил это, чтобы запустить проект, нужно ли его регенерировать или должен быть способ обойти это?

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