[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Локализация данных
Joker
В общем вопрос следующий, кто нибудь сталкивался с локализацией сайта, речь идет не каких названий кнопочек или самого интерфейса, что сделать давольно таки просто (хотя есть ОООООЧень большие грабли в этом, так что вопрос лучше изучать заранее), а именно о данных к примеру:

новость имеет минимум 2 текстовых параметра: заголовок и непосредственно текст.

как это хранить в бд? чтоб и идентификатор оставался один и тот же, у разных переводов, и при этом запросы в бд летали.

На данный момент рассматриваю следующую структуры:

таблицы:
news (id,public,....)
news_ru(news_id,title,text)
news_en(news_id,title,text)

но это простейший пример и в нем уже надо джойнить что есть плохо, кто то сталкивался? поиски пока что не привели к каким то вразумительным результатам.
forza
У нас похоже сделано в 1-ом проекте.
Есть Н-ое кол-во таблиц, news_ru, news_en ... news_hu
Делается запрос вида: SELECT * FROM news_{$lg} WHERE ID = 20;
и все работает, удобно.

_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
T1grOK
Не вижу в твоем варианте ничего страшного. Выборка из двух таблиц-какие проблемы?!
Можно еще так сделать, чтоб не плодить таблицы.
news (id,public,....)
news_lang(news_id,lang,title,text)

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Valick
Цитата
и в нем уже надо джойнить что есть плохо

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

_____________
Стимулятор ~yoomoney - 41001303250491
Joker
тем что оч сложный сайт и требования 200млн просмотром в сутки держать не напрягаясь, при это автокомплиты поисковые группы динамично подсвечивание. вывести само обьявление это фигня, 2-5 запросов в в бд сохраняем в файл и и забыли, проблемма это поиски)
Valick
Цитата
требования 200млн просмотром в сутки

это как-то меня должно было напугать?
Цитата
вывести само обьявление это фигня, 2-5 запросов в в бд сохраняем в файл

2-5 запросов на одно объявление, да еще и сохранять куда-то?
вот тут уже страшно smile.gif
Цитата
проблемма это поиски

это я прекрасно понимаю, поиск это в любом случае нагрузка, но JOIN тут при чем?



_____________
Стимулятор ~yoomoney - 41001303250491
killer8080
а если исрользовать составной ключ? Что то типа такого
CREATE TABLE `news` (
`id` int NOT NULL AUTO_INCREMENT ,
`lang` varchar( 2 ) NOT NULL ,
`title` varchar( 100 ) NOT NULL ,
`text` text NOT NULL ,
UNIQUE KEY ( `id` , `lang` )
)
Valick
killer8080, а смысл? отказаться от автоинкремента? как тогда уникальнонумеровать будем?
одной таблицей тут не обойтись полюбому, есть вариант конечно, не нравится он мне smile.gif

_____________
Стимулятор ~yoomoney - 41001303250491
killer8080
Цитата (Valick @ 14.01.2013 - 15:52)
killer8080, а смысл? отказаться от автоинкремента?

С чего ты взял? Посмотри внимательней на структуру таблицы wink.gif
Valick
Цитата
С чего ты взял?

с условия ТЗ, id новости русской и английской версии должны быть одинаковы

_____________
Стимулятор ~yoomoney - 41001303250491
killer8080
Цитата (Valick @ 14.01.2013 - 16:51)
id новости русской и английской версии должны быть одинаковы

они и будут одинаковые, вот смотри
DROP TABLE IF EXISTS `news`;
CREATE TABLE `news` (
`id` int NOT NULL AUTO_INCREMENT ,
`lang` varchar( 2 ) NOT NULL ,
`title` varchar( 100 ) NOT NULL ,
`text` text NOT NULL ,
UNIQUE KEY ( `id` , `lang` )
);


INSERT INTO `news` (`lang`, `title`, `text`) VALUES
('ru', 'заголовк 1', 'новость 1'),
(
'ru', 'заголовк 2', 'новость 2'),
(
'ru', 'заголовк 3', 'новость 3'),
(
'ru', 'заголовк 4', 'новость 4'),
(
'ru', 'заголовк 5', 'новость 5');

INSERT INTO `news` (`id`, `lang`, `title`, `text`) VALUES
(1, 'en', 'title 1', 'news 1'),
(
2, 'en', 'title 2', 'news 2'),
(
3, 'en', 'title 3', 'news 3'),
(
4, 'en', 'title 4', 'news 4'),
(
5, 'en', 'title 5', 'news 5');
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.