Правильный способ загрузки переведенных данных Laravel 5.2

Я создаю свой первый многоязычный веб-сайт на Laravel.

Для переводов я использую этот пакет: laravel-localization.

В моей базе данных столбцы настроены следующим образом:

  • title (английское название)
  • title_nl (голландское название)
  • title_fr (французское название)

Я прочитал документацию по локализации laravel и таким образом настроил сообщения об ошибках. Но теперь я не понимаю, как правильно отображать разные языки для моих представлений.

Должен ли я сделать что-то вроде этого:

@if( LaravelLocalization::getCurrentLocale() == 'nl')
<p>{{$post->title_nl}}</p>

@elseif(LaravelLocalization::getCurrentLocale() == 'fr' )
 <p>{{$post->title_fr}}</p>

@else
  <p>{{$post->title}}</p>
 @endif

Это кажется чрезвычайно запутанным и неправильным способом справиться с этим, потому что расширение этого было бы кошмаром.

Или мне нужно использовать для этого встроенные функции локализации, например:

{{ trans('post.title') }}

Или это противоречит цели пакета, который я использую?


person Christophvh    schedule 30.05.2016    source источник
comment
Вы можете использовать только {{ trans('post.title') }}, суффиксы языка добавлять не нужно. Обнаруживать только lang @if( LaravelLocalization::getCurrentLocale() == 'nl') и т. Д.   -  person mcklayin    schedule 30.05.2016
comment
@mcklayin, значит, мне нужно загрузить свою модель в файл post.php для каждого языка? и перебирать поля в самом языковом файле?   -  person Christophvh    schedule 30.05.2016


Ответы (1)


Использование пары ключ-значение многомерных массивов

Добавляйте переводы в БД и при необходимости загружайте в массив

$language['word_key']="word";

сохраните ключевое слово в своем коде, поскольку он просто загружает переводы в массив на основе языка

в БД создайте 2 таблицы 1 для ключевых слов, которые являются основной таблицей, и другие для переводов, которые имеют внешний ключ таблицы ключевых слов

Напишите языковой класс, который может предоставить вам массив пары ключ => значение для использования в коде.

пример на простом php

echo $language['kw_hi'];

если вы работаете с английским языком, он печатает "Hi" на французском языке "Salut" код остается таким же, только изменения содержимого

{!! Form::label($dictionary['apo_add_subject'], $dictionary['apo_add_subject']) !!}

Над словарем есть ключевое слово apo_add_subject. Я создал таблицу с ключевыми словами id, keyword_name и идентификатором перевода второй таблицы, kw_id, языком, переводом, а затем на основе языка и модуля, я загружаю его в массив, используя средние значения, а затем перехожу к просмотру, где будет использоваться код, написанный выше.

Просто загрузите разные значения в массив, сохраняя те же ключевые слова

person fKnight    schedule 30.05.2016
comment
Я не совсем понимаю это решение. Можете ли вы привести пример из примера, который я привел в моем вводном сообщении? - person Christophvh; 30.05.2016