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

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

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

Author24 — интернет-сервис помощи студентам
Вроде избитая тема, но решил ее поднять по причине того, что до этого момента мультязычность в 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
3887 / 3227 / 1351
Регистрация: 01.08.2012
Сообщений: 10,880
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
Сообщений: 568
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
3887 / 3227 / 1351
Регистрация: 01.08.2012
Сообщений: 10,880
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
Сообщений: 568
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
2481 / 1406 / 665
Регистрация: 23.08.2015
Сообщений: 3,546
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
Ответ Создать тему
Новые блоги и статьи
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
Линейное решение нелинейной задачи. Формулы от LM по моему решению пока не проверял. В итоговой её формуле видно её заблуждение.
Hrethgir 10.04.2025
В продолжение Эта LM дала ответ похожий на нормальный. В комментриях мой комментарий - похоже она ошиблась с выведением итоговой формулы, но остальные проверю. Assistant qwen2. 5-14b-instruct . . . .
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
Линейное решение не линейной задачи (емкость вычислений в сравнении с традиционными решениями пока не определена).
Hrethgir 10.04.2025
В рамках предстоящих вычислений пришлось (да, я тоже знаю про корень числа, и про степеня, и прочие теоремы, но. . . ) найти способ нахождения отношения двух углов. . . .
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
TypeScript vs JavaScript: Отличия и когда что использовать
Reangularity 09.04.2025
JavaScript появился в 1995 году как творение Брендана Эйха и быстро стал основой интерактивности в вебе. За свою историю он прошел путь от простого языка для манипуляций с DOM до полноценной. . .
Подключение Kafka к Elasticsearch
Codd 09.04.2025
Apache Kafka и Elasticsearch — две мощные технологии, которые при совместном использовании создают эффективную платформу для обработки и анализа данных в реальном времени. Kafka, выступая в роли. . .
Реализации таймеров в Unity
GameUnited 09.04.2025
Время — важный ресурс любой игры. Разработка качественных игровых механик невозможна без грамотного управления временем, а таймеры выступают ключевым инструментом этого управления. Представьте себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер