Форум программистов, компьютерный форум, киберфорум
PHP: Laravel
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
-13 / 6 / 6
Регистрация: 04.08.2015
Сообщений: 622

Мультиязычность в Laravel

03.09.2023, 13:00. Показов 868. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вроде избитая тема, но решил ее поднять по причине того, что до этого момента мультязычность в Laravel использовал только для админки типа так
PHP
1
{{ trans('cruds.article.fields.title') }}
Языковые варианты находятся в соответствующих файлах в разных языковых папках в общей папке resources/lang
Но если выйти за пределы админки появляются статьи, которые находятся в базе данных. И как с этим быть если сайт мультиязычный?
Я полагаю, что в базе должны находиться статьи на разных языках. И не только статьи. Меню и т. п. Наверняка все должно быть в разных таблицах.
Посоветуйте пожалуйста оптимальный вариант размещения в базе данных мультиязычного контента и вариант его переключения.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.09.2023, 13:00
Ответы с готовыми решениями:

Как использовать на сервере Laravel внутри папки Laravel?
Внутри папки Laravel 7 на сервере Ubuntu 16.04 лежит папка с Laravel 7. Родительский проект работает прекрасно, и открывается по такой...

Installing laravel/laravel (v5.8.17) [ErrorException] mkdir(): Invalid path
Я только начинаю разбираться не судите строго. Пытаюсь установить laravel на XAMPPv3.2.4 командою "php composer.phar create-project...

Объединить laravel и Форум (Laravel + XenForo)
Здравствуйте! Суть: Есть магазин на Laravel и есть Форум на XenForo Нужно объединить профиль форума и магазина + сделать как...

5
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
03.09.2023, 22:21
articles
id created_at updated_at

article_descriptions
id article_id language_id title description keywords name content
0
-13 / 6 / 6
Регистрация: 04.08.2015
Сообщений: 622
04.09.2023, 19:51  [ТС]
Я правильно понял, что таблица articles будет одна (наверняка в ней можно добавить еще поле типа slug), а title description keywords name content будут в другой таблице на разных языках в зависимости от language_id?
В blade языки переключаются так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
        <li class="dropdown">
            <a href="#">
                {{ strtoupper(app()->getLocale()) }}<i class="bi bi-chevron-down"></i>
            </a>
            <ul>
                @foreach(config('panel.available_languages') as $langLocale => $langName)
                    <li>
                        <a class="dropdown-item" href="{{ url()->current() }}?change_language={{ $langLocale }}">{{ strtoupper($langLocale) }} ({{ $langName }})</a>
                    </li>
                @endforeach
            </ul>
        </li>
Немного не врубился , что должно быть в качестве language_id.
Видел варианты где запрос выглядит типа так
HTML5
1
2
http://... /ru/slug/id  
http://... /en/slug/id
В моем случае так
HTML5
1
2
http://laravelrednord/pages/deconectari-programate/1?change_language=en
http://laravelrednord/pages/deconectari-programate/1?change_language=ru
Пока не понял как должен работать механизм переключения контента с другим языком (другой language_id)
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
04.09.2023, 21:38
Цитата Сообщение от VlGuvin Посмотреть сообщение
таблица articles будет одна (наверняка в ней можно добавить еще поле типа slug)
Да, в неё закидываются все поля, которые не зависят от языка. В т.ч. slug.

Цитата Сообщение от VlGuvin Посмотреть сообщение
title description keywords name content будут в другой таблице на разных языках в зависимости от language_id?
Верно, для каждого языка создаётся отдельная запись.

Цитата Сообщение от VlGuvin Посмотреть сообщение
Немного не врубился , что должно быть в качестве language_id.
Создаёте отдельную таблицу с языками, и id языка записывается в language_id.

Можно, конечно, и просто строку ru/en туда записывать, но я всё же за нормализацию.

Цитата Сообщение от VlGuvin Посмотреть сообщение
как должен работать механизм переключения контента с другим языком
Получили язык из URL, запросили статью из базы с конкретным языком. Вроде всё просто, что у вас вызывает затруднения?
1
-13 / 6 / 6
Регистрация: 04.08.2015
Сообщений: 622
05.09.2023, 08:22  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Получили язык из URL, запросили статью из базы с конкретным языком. Вроде всё просто, что у вас вызывает затруднения?
У меня языки в админке переключаются так
HTML5
1
2
http://laravelrednord/pages/deconectari-programate/1?change_language=en
http://laravelrednord/pages/deconectari-programate/1?change_language=ru
В админке имеется механизм переключения который построен на trans типа так {{ trans('cruds.permission.title') }}
Тоесть если ?change_language=en то достается все из папки resources/en (картинка), где имеется нужный php типа cruds.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
...
return [
    'userManagement' => [
        'title'          => 'User management',
        'title_singular' => 'User management',
    ],    'permission' => [
        'title'          => 'Permissions',
        'title_singular' => 'Permission',
        'fields'         => [
            'id'                => 'ID',
            'id_helper'         => ' ',
            'title'             => 'Title',
            'title_helper'      => ' ',
            'created_at'        => 'Created at',
...
Если ?change_language=ru то все достается из папки resources/ru
Я так понимаю можно использовать этот механизм и для переключения языков вне админки. Тоесть если ?change_language=en
доставать рекорды из таблицы article_descriptions где в поле language_id записано en. Имеется ввиду, что в поле language_id нужно будет записывать техт типа en, ru.
Можно, конечно, и просто строку ru/en туда записывать, но я всё же за нормализацию.
Я тоже за нормализацию. Немного не врубаюсь как имея механизм типа ?change_language=en привязать его к полю language_id, где будут int (1, 2).
Миниатюры
Мультиязычность в Laravel  
0
 Аватар для sad67man
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
05.09.2023, 14:30
Цитата Сообщение от Jodah Посмотреть сообщение
Можно, конечно, и просто строку ru/en туда записывать, но я всё же за нормализацию.
ru/en - это естественный потенциальный ключ, вы его можете выбрать в качестве первичного ключа и это не нарушит нормализацию.

Добавлено через 1 час 25 минут
Цитата Сообщение от VlGuvin Посмотреть сообщение
Если ?change_language=ru то все достается из папки resources/ru
Выбранный язык должен куда-то сохраняться. Это можно делать на основе роутера, когда язык указывается в ссылке, типа
http://laravelrednord/en/pages... ogramate/1
можно сделать и на поддоменах, Так же можно сохранять в сессию, куки, передавать через заголовки и т.д.

1) У приложения по сути настройка, где указывается язык. И технически вы можете изменять эту настройку через какой-нибудь провайдер. И ссылка вида ?change_language=en - это действие, изменяющее язык, а чтоб получить текущий есть в вашем же примере app()->getLocale()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2023, 14:30
Помогаю со студенческими работами здесь

Мультиязычность
Здравствуйте, как прикрутить мультиязычность?бесплатно. qTranslate Plus не подходит для 4.2.4

WP и мультиязычность
Приветствую. Понадобилось мне сделать сайт на 2 языках, русском и немецком. Вот и задумался о сабже. Можно ли реализовать и если да то...

Мультиязычность
Добрый день дорогие форумчане, прошу помогите мне сделать мультиязычность на сайте, никак не могу придумать алгоритм, то есть логику,...

Мультиязычность
Кто с джумлой в кентах, покажите где я не прав. Вот мой файл templateDetails.xml &lt;?xml version=&quot;1.0&quot;...

Мультиязычность
У меня проблема такая! Есть код, но я его не могу никак оптимизировать(код не мною создан) мне нужно что бы язык менялся автоматически при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru