Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сайт на 2 языках
Форумы портала PHP.SU » » Вопросы новичков » Сайт на 2 языках

Страниц (3): [1] 2 3 »
 

1. pantela - 09 Октября, 2011 - 00:27:52 - перейти к сообщению
На фреймворке CodeIgniter стоит задача сделать в проекте 2 языка, восновном проект виде блога, как праивльно релизовать локализацию проекте. На сколько я знаю есть библиотека которая отвечается за локализацию, но структуру БД как сделать? Делать так: т.е. у меня таблица "материалы" и там етсь поле "Название", т.е. добавить ещё одно поле для второго языка? А если язывок будет больше, тогда столько же поле добавлять? Как то праивльно не лзя сделать.
спс.Ув.
2. DeepVarvar - 09 Октября, 2011 - 00:37:42 - перейти к сообщению
Нее, к самим документам никаких полей не надо добавлять.
Если админу будет надо - пусть создает страницу с англицким названием и текстом внутри и вкладывает её в РАЗДЕЛ английской версии сайта.
Создаст раздел с URL = "/en/" и туда все англицкие вкладывает.

Поддержку языков нужно делать на кнопках формы, алертах, варнингах, приветствиях...
3. pantela - 09 Октября, 2011 - 00:55:34 - перейти к сообщению
Хмм примерно понял о чём вы, но напр елси надо сделать перевод Разделов, категории, подкатегории, меню.... Растерялся
4. DeepVarvar - 09 Октября, 2011 - 01:18:17 - перейти к сообщению
Структура сайта - это дерево разделов.
Если нужно - пусть пишут и создают разделы на тех языках, на каких им надо.
Ваша задача - реализовать возможность создания разделов и страниц любой вложенности.
(Добавление)
Или вы меню и названия разделов хотите прописать "костылями" прямо в шаблоне?
Зачем тогда вообще взяли в руки CI, наверстали бы хтмл-статики..
----
Генерируйте все с учетом локали пользователя.
5. pantela - 09 Октября, 2011 - 01:26:59 - перейти к сообщению
Вот именно не очень понимаю по кокой структуре их держать, есть список категории на русском а надо что бы было и на англиском. так в таблице категории если не делать доп. поле для второго языка, тогда как можно по другому.

меню не костыто в шаблоне, он через запрос выводится с базы.
6. DeepVarvar - 09 Октября, 2011 - 14:13:47 - перейти к сообщению
pantela пишет:
он через запрос выводится с базы
Ну так пусть запросом выводит английское меню для английской версии, а русское для русской.
Нужны ДВЕ реальные копии всех страниц, одна русская, другая английская.
Причем русских страниц может быть другое кол-во.
Неужто я непонятно объясняю?
Генерируйте меню из тех названий разделов, которые нужны..
PHP:
скопировать код в буфер обмена
  1. $url = "/"; // ага, тащим русские разделы
  2. $menu = myGetMenuFunction($url);

PHP:
скопировать код в буфер обмена
  1. $url = "/en/"; // а тут английские
  2. $menu = myGetMenuFunction($url);

(Добавление)
/
--- раздел 1
--- раздел 2
--- раздел 3
--- --- подраздел 1 (от раздела 3)

--- en
--- --- part 1
--- --- part 2
--- --- part 3
--- --- --- subpart 1 (of part 3)
7. pantela - 09 Октября, 2011 - 17:53:09 - перейти к сообщению
это всё понятно, тут вопрос по тому что в одной таблице деражть и русс текст и англиский, или как понял, или иметь для каждого языка свою таблицу.
8. DeepVarvar - 09 Октября, 2011 - 18:51:43 - перейти к сообщению
В одной
9. Данил_123 - 09 Октября, 2011 - 19:02:59 - перейти к сообщению
1.Кинь файлы en версии кинь в /en/, и добавь в ru сайт тег
CODE (html):
скопировать код в буфер обмена
  1.  <a href="http://site.su/en/" title="en">

И наоборот..
2.Ну или через селект
CODE (html):
скопировать код в буфер обмена
  1. <select name="lang">
  2. <option value=1>en
  3. <option value=2>ru
  4. </select>
и php:
PHP:
скопировать код в буфер обмена
  1. if($_POST['lang']==1) include_once("/en/index.php");
  2. else include_once("/ru/index.php");
Ну дальше понятно
10. DeepVarvar - 09 Октября, 2011 - 20:48:49 - перейти к сообщению
Данил_123 пишет:
кинь в /en/

А если будет 20 языков?
Данил_123 пишет:
Ну дальше понятно

Что вам ничего не понятно..
11. pantela - 11 Октября, 2011 - 02:16:30 - перейти к сообщению
Некоторые мне говорять делать много таблиц и в каждой таблице держи записи (материалы) по языкам, некоторые говорят все записи (материлалы) держать в одной таблице и по полю определять какому языку относится материал.

Вот и запутался на что делать склоноть на материалы или на таблицы. Однако

Как вобще правильно сконструиктировать БД под мультиязыковый сайт.
12. DeepVarvar - 11 Октября, 2011 - 02:43:35 - перейти к сообщению
Все просто.
Есть таблица с документами.
id,parent,name,link,h1,menu,full
(айди,айди родителя, имя в меню, ссылка на документ,h1 заголовок,к какому меню относится, текст страницы)

Не важно сколько языков будет на сайте.
Создаете раздел (документ) с ссылкой = "/" и в него кладете все документы на русском.
Создаете раздел (документ) с ссылкой = "/en/" и в него кладете все документы на английском.
Создаете раздел (документ) с ссылкой = "/china/" и в него кладете все документы на китайском.

Выводите языковые ссылки на эти разделы и все.
Кто как и какими статьями будет эти разделы заполнять - не ваше дело.
Захотят - еще один раздел на французском добавят.

А сам язык интерфейса (кнопок, приветствий, действий, системных сообщений) пусть юзеры выбирают руками (куки/сессии) или в профиле.

Вам всего лишь нужно реализовать дерево документов.
(Добавление)
Как много в этом "всего лишь"... Подмигивание
13. pantela - 11 Октября, 2011 - 14:27:47 - перейти к сообщению
Причём тут дерево Однако Когда у меня вопрос стоит о том как всё информацию хранить в БД. Хм т.е.
Напр. таблица материалов 3 варианата я вижу
1. id | title_rus | title_eng | text_rus | text_eng - т.е. вывод будет взависимости от поля title_rus или title_eng - Но при этом у нас много полей в таблице будет

2. id | title | text - т.е. пол ID записи будет определятся какому языку относиться язык - Но при этом у нас записей будет в таблице

3. id | title | text и ID | items_id | lang - т.е. 2 таблицы будет и вторая таблица будет опеределять какому языку отнести даную запист, а определение будет по полю items_id, - Но тут будет одинаковое количество записей и п в одной таблице и в другой, и по JOIN Будет связка

4. id | title_rus| text_rus и id | title_eng | text_eng - т.е. 2 таблицы и каждый язык отвечает за свою таблицу - Но при этом у нас будет много таблиц, но все записи будут по папкам языков.

Так какой вариант выбрать, или я не все перечислил ещё Однако Сайт на 2 языках плонируется, восновном будут много материалов, тут какая нагрузка будет у кого сомжите по порядку перечислить виде %, + какой вариант более гибкий потом при доп. доработках проекта.
Дайте пожалуйсто ответ коректный нуббу, не решусь как делать.

спс.Ув.
14. DeepVarvar - 11 Октября, 2011 - 16:09:35 - перейти к сообщению
Я опускаю руки...
15. pantela - 11 Октября, 2011 - 17:28:09 - перейти к сообщению
Ну просто обясни и дай ответ на мои примерах какие плусы и минусы у этих вариантов, и % нагрузки какой ~ если между ними сравнить.

 

Powered by ExBB FM 1.0 RC1