Правильный способ загрузки переведенных данных Laravel 5.2
Я создаю свой первый многоязычный веб-сайт Laravel.
Для переводов я использую этот пакет: https://github.com/mcamara/laravel-localization.
В моей базе данных у меня есть столбцы, настроенные так:
- название (английское название)
- 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') }}
Или это разрушает цель пакета, который я использую?
1 ответ
Использование пары ключ-значение многомерных массивов
Добавлять переводы в БД и получать нагрузку в массиве при необходимости
$language['word_key']="word";
сохраняйте ключ слова в своем коде, так как он просто загружает переводы в массив на основе языка
в БД создайте 2 таблицы 1 для ключевых слов, которые являются первичной таблицей, и другие для переводов, которые имеют внешний ключ таблицы ключевых слов.
Напишите языковой класс, который может предоставить вам массив пар ключ => значение для использования в коде
пример на простом php
echo $language['kw_hi'];
если вы работаете с английским языком, он печатает "Привет" на французском "Салют", код остается тем же, только изменения содержимого
{!! Form::label($dictionary['apo_add_subject'], $dictionary['apo_add_subject']) !!}
Над словарем есть ключевое слово apo_add_subject. я создал таблицу с ключевыми словами id, имя-ключевого слова и идентификаторы перевода второй таблицы, kw_id, язык, перевод, затем на основе языка и модуля. Я загружаю его в массив, используя средние значения, и затем передаю, чтобы посмотреть, где будет использоваться код, написанный выше.
Просто загрузите разные значения в массив, сохраняя одинаковые ключевые слова.