Интересует вопрос по поводу обустройства БД для мультязычного сайта. Хотел сделать так ______________ Таблица 1 Название табл. lang поле id (int),(key) поле url (255 символов),(уникальный) поле uk (bolean) поле ru (bolean) ______________ Таблица 2 Название табл. uk поле id (int),(key) поле lang.url (255 символов),(уникальный), связь с полем url из табл. lang поле tiitle (text) поле script (text) поле content (text) и т.д. ______________ Таблица 3 Название табл. ru поле id (int),(key) поле lang.url (255 символов),(уникальный), связь с полем url из табл. lang поле tiitle (text) поле script (text) поле content (text) и т.д. _______________ Пытался делать такой запрос (и кучу антологичных), ничего не вышло. Код (Text): $query = "SELECT * FROM lang, uk WHERE `url` = '/contact'"; Выдавало нужную строку из табл. lang и последнюю строку из табл. uk. MsQL Server version: 5.6.27-75.0-log phpmyadmin Информация о версии: 4.0.10.12
Берёшь и делаешь словарь, дядя. Просто для текста. Через константы или массив или класс, похеру. И всё.
И толку мне от этого словаря. Будет файл размером в косарь строк. А если хранить в БД, то и редактировать легче.
PHP: $text["uk"]["greetings"] = "Hellow dear"; $text["ru"]["greetings"] = "Привет"; $text["ua"]["greetings"] = "Денег нет"; --- Добавлено --- У тебя сайтик с большим кол-вом текста на разных языках ?
У меня есть 2 файла шаблона (ru, uk). И я в них из БД вставляю (title, description, style (если на данной страницы нужен особый стиль, который не вписан в общем файле), script (аналогично style), content (содержимое страницы вместе грубо говоря всё между <body>)) Да, и админку сделал для редактирования всех выше перечисленных ячеек из БД с визуальным редактором html (что бы человек с минимальными знаниями мог без проблем подправить текст). была БД по другому устроенна (Работает) но мне нравится структура.
Тогда я ошибся, но по твоей проблеме я бы посоветовал нормализировать это дело до до состояния Код (Text): tbl_langs id name tbl_urls id path tbl_text id lang_id url_id text params... --- Добавлено --- Связи там, ON DELETE CASCADE
Вроде суть уловил. Получается тут нельзя построить один запрос (Получить данные по нужной странице, нужного языка + узнать есть ли эта страница на других языках)
можно что угодно. Не нужно. Один запрос выбирает страницу. Эти данные будут жить в какой-то переменной. А другой запрос выбирает возможные языки, на которых эта страница доступна. Они будут жить в другой переменной. Не нужно пытаться все запросы впихнуть в один. Это можно, но по факту БД сделает всё равно несколько разных. Просто вернёт их в виде куска дерьма, с которым будет неудобно работать. --- Добавлено --- Это я про реляционную бд. А вот в хранилищах типа монго вполне можно получить сразу объект, в котором будет в одном из полей и целый массив языков. Но тут не факт, что удастся сделать это консистентно. Как я понимаю, такое решается тупо за счёт записывания в объект каждого перевода списка языков других переводов этой страницы. И потом надо вручную следить, чтобы ничего не распоолзлось.