|
|
|
| Как по легкому организовать мультиязычность?
Есть демо сайт -....http://www.gop.xeno.ru/real/ нужно 3 языка вся информация вводиться в основном через чекбоксы...
разными могут быть только названия ссылок/категорий и подкатегорий а также описание недвижимости и агента -краткое/расширенное..
Можно конечно кинуть сайт в 3 папки RUS... /ENG и /EST но может какую функцию применить чтоб конвертировала в базу в зависимости от языка и выводила (сжатый контент)
по выбранному языку или лучше префиксы поменять в таблицах где данные будут разные? | |
|
|
|
|
|
|
|
для: oppo
(14.10.2005 в 01:55)
| | Если информация хранится в БД, то можно завести по столбцу на каждый язык и выводить данные в зависимости от выбранных установок. Аналонично можно и с файлами: подключать файлы с соответствующими перфиксами. Но три папки - проще всего, так как нет гарантий что сайт для каждого языка будет абсолютно идентичен (у меня, например, за неделю до окончания работ заказчик решил что русская и английская версия будут различаться по структуре). Так что лучше от таких сюрпризов подстраховаться. | |
|
|
|
|
|
|
|
для: Loki
(14.10.2005 в 09:16)
| | Мне кажется лучше хранить се слова в отдельных файлах rus.php engl.php
В этих файлах массивы со всеми встречающимися словами. | |
|
|
|
|
|
|
|
для: cernos
(14.10.2005 в 09:33)
| | я считаю, что лучше в базе хранить, т.к. в текстовых файлах можно наделать много ошибок. я делала и трех-язычные сайты и сайты с неограниченным количеством языков. где админ сам добавлял нужный язык, а потом заполнял таблицы со словами на нем. уточнение - не по столбцу на каждый язык, а по строке. первый столбец в каждой таблице - lang, и потом выбирать строки, где lang= язык, выбранный пользователем и записанный в переменную сессии. при такой струкуре удобно и добавлять и удалять языковые версии. | |
|
|
|
|
|
|
|
для: elenaki
(14.10.2005 в 11:32)
| | Да, пожалуй так удобнее: столбцу хоть можно дать внятное название:) | |
|
|
|
|
|
|
|
для: elenaki
(14.10.2005 в 11:32)
| | Спасибо за ответы..Сайт использует MYSQL базу. То что в коде связано со статикой я заменил на констр. типа и вынес в russian.php констр. типа
DEFINE("_DELETE","Удалить");
|
Мне нравиться примеры elenaki этим http://softtime.ru/forum/read.php?id_forum=1&id_theme=302я как то попользовался...Как я понял это так
-------------------------------------------- ----------------------------------------------------
| CategoryID | CategoryName | | CategoryID | lang | CategoryName |
-------------------------------------------- ----------------------------------------------------
| 1 | For rent | ==========> | 1 | eng | For rent |
-------------------------------------------- --------------------------------------------------------
| 2 | For sale | ==========> | 1 | rus | Для продажи |
-------------------------------------------- --------------------------------------------------------
как в сессиях передать язык ?
..... еще нашел такую ссылку http://www.tonymarston.net/php-mysql/internationalisation.html | |
|
|
|
|
|
|
|
|
для: cheops
(14.10.2005 в 14:42)
| | спасибо ..кое- что взял Сделал переключение пока ...
$menu_lang = "<select name='newlangsel' onChange=\"self.location=this.options[this.selectedIndex].value;\" class=\"op\">\n";
$handle=opendir('languages');
while ($file = readdir($handle))
{
if (ereg("(.+)\.php", $file, $matches))
{
$langFound = $matches[1];
$languageslist .= "$langFound ";
}
}
|
Но с регулярными у мя слабенько почему если в папке languages появляется файл (в ходе исправлений языка)например не с расширением php -(russian.php) а russian.php.BAK
все равно он по ereg вытаскивается? | |
|
|
|
|
|
|
|
для: oppo
(14.10.2005 в 20:59)
| | Да, должен, так как нет ограничений на границу слова. | |
|
|
|
|
|
|
|
для: cheops
(15.10.2005 в 00:49)
| | я у себя сделал так: при первой загрузке страницы в сессию заноситься ru или eng и т.д., если тексты больше и храняться в БД то да, ту нужно создавать отдельные столбца в таблице для каждого языка, а если есть на странице короткие фразы или слова (чтоб не писать страницу с оформлением для каждого языка по отдельности) я использовал ини файл
lang_ru.ini:
; main menu:
1001 = Главная
1002 = Каталог
1003 = Форум
1004 = Чат
1005 = Обратная связь
; buttons
2006 = Отправить сообщение
2007 = Удалить сообщение
; e.t.c. ...
|
а потом парсил необходимый файл для выбранного языка с помощью функции parse_ini_file() в переменную и подставлял в нужные места... получилось мне кажеться достаточно удобно.. а если надо запомнить какой язык выбрал пользовател, просто записываю в плюшку (в куку). | |
|
|
|
|
|
|
|
для: localGhost
(15.10.2005 в 01:43)
| | всем спасибо (elenaki идею реализовал) таки добил ...http://www.uusmets.ee/ помучался правда с ссесиями (пробелы нельзя оставлять и вывод допускать в header ) .
==cheops Да, должен, так как нет ограничений на границу слова==
:) ага $ надо
if (ereg("(.+)\.php$", $file, $matches))
|
Надо бы придумать чтоб если по чебоксам проставить выбор всех языков то чтоб копировались данные парралельно для всех языков в MYSQL по insert или update (для легкости чтоб не делать ввод для каждого из языков) Но это больше для души чем кому то. | |
|
|
|