Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многоязыковой сайт - решения, Как хранить языковую информацию 
:(
    Опции темы
artfabrique
  Дата 9.1.2008, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Дизайн
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 5.2.2006
Где: СПб

Репутация: нет
Всего: 2



Собственно интересует вот что:
Например, нужно сделать, чтобы у каждого "текста" на сайте было несколько языковых версий.
Как рациональней и наименьшими затратами ресурсов этого достичь, если сайт пашет на PHP+MySQL?

Пока в голову приходит создание в базе своего рода таблицы словаря, тоесть, например, в каком либо месте (другой таблице) у нас есть поле типа TEXT или VARCHAR
и внем вместо самого текста будет указан лишь ID ряда из словаря с этим текстом, а в этом ряду в "словарной" таблице столько колонок, сколько у нас языков соответственно.
Ну и так далее (выбираем нужную колонку с языком и подставляем).
Не будет ли это "нагрузно" если у нас 100-200 замен происходит, причем тексты разного размера (как маленькие, так и громадные).
И случаем не упростит ли наличие такой "словарной" таблицы создания поискового индекса позже?

Буду благодарен за любые советы по теме.
--------------------
Я спасу мир! © ЙУХ 0000г.
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 9.1.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



artfabrique найди на phpinside.ru журнал №10 за 2005 год. В нем иметтся очень интересная тема - `Многоязычные приложения с использованием PHP и GetText` может поможет  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Sunvas
Дата 9.1.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



Советую завести отдельные "языковые" пхп файлы в которых хранить значения именованых строк. Например:
Код

define("begin","начало");

Несколько таких файлов для разных языков. Ну и инклудить по требованию. Тогда в ПХП скрипте нужно будет делать так:

Код

echo begin;



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
MoLeX
Дата 10.1.2008, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



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


artfabrique, заведи переменную lang=?. чтобы получилось следующее http://site/index.php?lang=en&la=lala.
потом получай значение этой переменной и из БД или еще откуда вытаскивай язык, если же набранно просто http://site/index.php то установи язык по умолчанию и баста... 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
KoLiZeI
Дата 10.1.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



А не проще использовать ещё одну таблицу для другого языка, в любом случае запросов к бд избежать не удастся, а так код   будет проще и понятней и скорость не изменится. Абсолютно идентичную таблицу, только на другом языке.

Это сообщение отредактировал(а) KoLiZeI - 10.1.2008, 10:50
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 10.1.2008, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



KoLiZeI тут можно использовать хоть что, хоть БД, файлы (начиная от .php и заканчивая более продвинутым способом .xml).  фсе зависит от идей и опыта программирования (ну и конечно лени  smile )


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
bars80080
Дата 10.1.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



вопрос был, что оптимальней, и насколько ресурсозатратен метод автора

мне кажется, что тут лучше комбинация
технический список слов (скажем статическую менюшку, "вперёд", "назад", "скачать") можно забить одним файлом:
ru.lang:
...
$word[34] = 'вперёд';
...

en.lang:
...
$word[34] = 'forward';
...
что-то в этом роде, а вот скажем новости, всё зависит от мощи поддержки:
если известно, что ну где-то >90% новостей будут иметь копию на другом языке, то лучше изначально сделать таблицу, где будут все эти поля: text_ru, text_en, coment_ru, coment_en...
а если копии будут не так часты (от случая к случаю), то может лучше будет новая таблица для другого языка
ну и синхронизирующий id на них
PM MAIL WWW   Вверх
MoLeX
Дата 10.1.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



ИМХО склоняюсь в сторону MySQL. Тем более она уже задействованна в проекте.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
artfabrique
  Дата 10.1.2008, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Дизайн
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 5.2.2006
Где: СПб

Репутация: нет
Всего: 2



Всем спасибо за советы!
Думаю выясню на краш-тесте что быстрее. Результаты суда пихну.

--------------------
Я спасу мир! © ЙУХ 0000г.
PM MAIL WWW ICQ   Вверх
gcc
Дата 31.5.2010, 13:52 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



я придумал такой вариант:

если этих значений $word[34] = 'вперёд'; будет порядка 2000 и текст будет занимать порядка 2-10Мб то это будет не красиво??

можно сделать, например, для каждой страниц файлы (всего страниц 30-50)
show.tpl.php 
Код

....
$show_tpl[34] = 'вперёд';
....

скриптом обновлять...

cделать таблицу с id и data

этот массив сериализировать в json и поставить в data с id который соответсвует show.tpl


а запрос минималистический будет 
Код
select data from lang where id=22


десериализируем с json в php 
Код

$array = json_decode($from_db_json);

php не будет тратить лишние ресурсы постоянно на инициализацию этого массива (если он не маленький), а будет все время очень быстро десериализовать

1) $array в smatry отправляется
2) или $from_db_json прямо на станицу в js и там распарсить













Это сообщение отредактировал(а) gcc - 31.5.2010, 13:57
PM WWW ICQ Skype GTalk Jabber   Вверх
MoLeX
Дата 1.6.2010, 06:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



gcc, ты на дату посмотри!


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
gcc
Дата 6.6.2010, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



MoLeX,  я видел, я хотел рассмотреть, предложить идею...

может быть это бессмысленно или не правильно?

  
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.