Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 05.01.2017 14:22:22

Локализация БД в laravel

Как можно правильно локализовать базу в laravel, если будет несколько языков и возможно, что в дальнейшем еще будет добавляться языки?

Изменено alexs (05.01.2017 14:25:58)

Не в сети

#2 05.01.2017 16:24:42

Re: Локализация БД в laravel

многоязычность – сложная и непростая тема, есть множество вариантов решений, множество способов. всё определяется решаемыми задачами и имеющимися навыками, с чем уже есть опыт работы. можно хранить языковые строки в отдельной таблице (id, language, text) и для многоязычных полей просто хранить идентификатор строки, можно иметь поле языка в самой таблице и иметь независимый контент на разных языках (опционально – связывать через связь «перевод для»), можно иметь полностью разные сайты с одной структурой но разным контентом и хранить записи в разных таблицах (posts_ru, posts_en и так далее), в постгресе можно хранить многоязычные строки в jsonb вида {"en":"text","ru":"текст"} и использовать в запросах json-специфичные операции

гораздо более сложный вопрос – как в этом случае индексировать данные для выборок, потому что при достаточном количестве записей и нагрузке на сервер, запросы сканирующие весь датасет убьют всю производительность. для json-полей сложно делать индексы (исключение – GIN-индексы постгреса), тексты в отдельной таблице вообще нормально не проиндексируешь, что-то можно вынести в редис, что-то в эластиксёрч или сфинкс, но в любом случае всё получается довольно сложно

надо хорошо понимать задачу и думать как лучше в каждом конкретном случае

Не в сети

#3 12.01.2017 18:54:36

Re: Локализация БД в laravel

А вот ещё подскажу, - комплексное решение, которое я уже использовал в виде большой системы управления.
часть I-я:
таблица, как и говорил constb - "id"|"lang"|"text"
часть II-я, сложная:
таблица из I-й части, но храним там контент на trans() -хелпера. то есть "1"|"ru"|"app.keyA.keyB"
все переводы при этом хранятся в ресурсе локализаций. resources/lang

Возможно поможет кому-то в проектировании.

Не в сети

#4 22.01.2017 16:10:08

Re: Локализация БД в laravel

Можно посмотреть вот этот пакет dimsav/laravel-translatable

Не в сети

Подвал раздела