Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.11.2006, 09:37
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 1  
Ответить с цитированием
Chas
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
По умолчанию многоязыковая поддержка

здрям.
для тур-оператора делаю сайт, где должен быть довольно массивный каталог мест размещений. Проблема в том, что вся информация о местах размещений должна быть продублирована на нескольких языках.
Сделать сам интерфейс многоязыковым несложно. я сделал так. для каждой *.php странички есть несколько inc-файлов, каждый из которых содержит переменные вида
$lang['этот идентификатор']='заменяем на этот текст';
и в зависимости от выбранного языка интерфейса подключется нужный инклюд.
с каталогом мест размещений много сложнее. та много инфы, забиваемой вручную, неповторимой. Хочу сделать так.
Будет таблица langtypes(langID,langName) - список всех языков.
Будет таблица lang(textID,langID,val) - каждая строчка текста будет иметь свой textID. Для каждого textID может быть несколько val, каждый val со своим langID. Т.е. данные будут вида:

Таблица langtypes
(langID,langName)
1.........russian
2.........english

Таблица lang
(textID,langID,val)
1......1.............Алушта
1......2.............Alushta
2......1.............Пансионат расположен в горной местности
2......2.............Pansion placed in rocky region

Ну и соответсвенно все поля каталога мест размещений будут ссылаться на textID в таблице lang.

Что спросить хочу. Как вы вообще находите такой метод? Не будет ли проблем? Мест размещения шт
к 500 будет, по каждому штук 10 текстовых полей разной длины.
Как вы бы все организовали?
__________________
~
Never trouble trouble till trouble troubles you!

Старый 20.11.2006, 12:55
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 2  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
Можно сделать таблицу
`mystrings` (`id` INT, `str` TEXT);
и таблицу
`str_lang` (`string_id`, `lang_id`)
- это если к нормализации стремиться.

Можно под каждый язык сделал таблицу, а в таблице языков указать имя таблицы со строками для построения запросов.

Хотя и твой вариант вполне жизнеспособен.
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Старый 20.11.2006, 22:07
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 3  
Ответить с цитированием
Chas
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
нет, к нормализации я обычно не стремлюсь, если нормализция ведет к лишнему гемморою =)
просто на сайте 200+ человек, все будут постоянно обращаться к данным из этой таблички. меня это слегка пугает =)
вопрос. в моей таблице lang (textID,langID,val), какой тип данных лучше использовать для val?
varchar? просто char? text? размеры таблицы не сильно волнуют, лучше максимально быстрый доступ к искомому индексу.
__________________
~
Never trouble trouble till trouble troubles you!

Старый 21.11.2006, 06:05
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 4  
Ответить с цитированием
Chas
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
есть еще вопрос. он вообще по sql'ю, но запостю сюда, чтобы не плодить темы.

итак, есть таблица langtypes (langID,langName) и таблица lang(textID,langID,val).
Есть, например, записи.

Таблица langtypes
(langID,langName)
1.........russian
2.........english
3.........dutch

Таблица lang
(textID,langID,val)
1......1.............Алушта
1......2.............Alushta
2......1.............Пансионат расположен в горной местности
2......2.............Pansion placed in rocky region

Т.е. появился новый язык "dutch", но для него записей в lang нет.
Как составить запрос, который вывел бы все записи по одному textID но для всех langID, так, что если langID не существет, то val=null. Т.е., для
textID например 1 запрос выбрал:

1......1.............Алушта
1......2.............Alushta
1......3.............null

Я здесь не очень шарю. Попробовал
SELECT * FROM ta_langtypes
LEFT JOIN ta_lang ON ta_langtypes.id=ta_lang.langID WHERE textID=1;

основываясь на примере
Цитата:
SELECT table1.* FROM table1
LEFT JOIN table2 ON table1.id=table2.id
WHERE table2.id IS NULL;

This example finds all rows in table1 with an id value that is not present in table2 (that is, all rows in table1 with no corresponding row in table2).
но не катит. вывел только записи для существующих langID. Я так понимаю, проблема в двойном индексе?
__________________
~
Never trouble trouble till trouble troubles you!

Старый 21.11.2006, 13:23
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 5  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
varchar с фиксированной длинной индексируется лучше текста.
Что касается стремления к нормализации - подумай вот о чем: для каждого конкретного пользователя предпочитаемый язык ты определяешь 1 (один) раз за время его сеанса, соответственно дергать таблицу и включать дополнительное условие в КАЖДЫЙ запрос - накладно, не находишь ?
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Старый 21.11.2006, 17:03
rtm вне форума Посмотреть профиль Отправить личное сообщение для rtm Найти все сообщения от rtm
  № 6  
Ответить с цитированием
rtm

Регистрация: Nov 2006
Сообщений: 39
Лично я завел бы для каждого языка отдельную таблицу, это позволит разделить данные друг от друга (не мешать все языки в одной табилце) и размазать данные по таблицам (так как любой СУБД проще работать с небольшими таблицами, а в Вашем случае данных будет не мало).

Старый 21.11.2006, 22:39
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 7  
Ответить с цитированием
Chas
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
2Skubent:
читал доку, написано, что текст хранит в таблице первые 256 символов + инфу по длине текста, а остальной блок текста в скрытой табличке.

это мне удобно, потому что 1) куски текста меньше 256 символов хранятся как варчары и скорость доступа, я думаю будет на доли ниже 2) я не парюсь с более длинными кусками текста, а они есть

ну в общем со способом хранения я более-менее определился. уже написано за ночь предыдущую много текста довольно, поэтому менять не буду.в конце концов, если или когда появятся тормоза, можно будет стянуть дополнительную деньгу с заказчика за "модернизацию и отптимизацию" ;-)

Спасибо большое за помощь в этом вопросе.

я там чуть выше описал проблему с запросом. я ее решил правда запросом UNION, но на хостере 3.23 мускуль, он их не потдерживает.
пришлось вручную таблицы клеить в пхп. но я мож дурак, и запрос совсем другой должен быть =/
__________________
~
Never trouble trouble till trouble troubles you!

Старый 22.11.2006, 13:01
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 8  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
Нет, надо пинать хостера на смену мускля, уже 5-ка имеет место быть в стэйблах

И все таки подумай, надо ли тебе все языки в одну таблицу пихать.
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Старый 27.11.2006, 02:18
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 9  
Ответить с цитированием
Chas
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
хостер гад пинать себя не дает, аргументируя тем, что у него на сервере докуя виртуальных хостов и баз.
еще у него, гада, пхп 4ка, блин.
а хмл парсер, который я использовал, появился только в пятерке. $%#.
вот думал завернуть функции парсера в свой класс, поленился =(
теперь с этим кодом... сексом заниматься =(
__________________
~
Never trouble trouble till trouble troubles you!

Старый 27.11.2006, 12:28
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 10  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
Chas, виртуальные сервера сейчас вроде не очень дорого предлагают
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:38.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.