rebel
Гость
|
|
« : 06-09-2004 13:38 » |
|
Необходимо написать сайт с поддержкой 2-ух языков. Сайт намечается большой, поэтому переписывать каждую страницу на другой язык - это изврат, тем более, что второй язык, похоже, будет китайским. Каким образом можно реализовать эту затею? Я думал сделать чтение из файлов с выбранным языком. Я не знаю как это обычно делается ...поэтому прошу помощи.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #1 : 06-09-2004 14:16 » |
|
Писать на китайском все равно придется
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
rebel
Гость
|
|
« Ответ #2 : 06-09-2004 14:33 » |
|
Писать на китайском все равно придется Да нет, с этим решено. Человеку будет отправлен текст только на английском, потом он вернет на китайском. А вот как все это провернуть? Что лучше использовать, как поступить?!?!?!?!??! :?: :?: :?:
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #3 : 06-09-2004 15:50 » |
|
Если я правильно помню, в китайском текст пишется вертикально, хотя может для инета они на горизонтальное письмо перейдут... Вертикальный текст подразумевает (имхо) иную вёрстку страницы .
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
rebel
Гость
|
|
« Ответ #4 : 06-09-2004 17:48 » |
|
Если я правильно помню, в китайском текст пишется вертикально, хотя может для инета они на горизонтальное письмо перейдут... Вертикальный текст подразумевает (имхо) иную вёрстку страницы . Да не в том дело как пишется...как реализовать? Что, никто никогда такого не делал???
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #5 : 06-09-2004 19:00 » |
|
rebel, Я это делаю всегда так : Создаю отдельный файл на каждый язык. Например lang_eng.php , lang_ru.php Далее так : lang_en.php /******************/ $lng_arr['nickname'( = "Nick Name"; $lng_arr['name'( = "Your Name"; $lng_arr['mail'( = "Your e-mail address";
lang_ru.php /******************/ $lng_arr['nickname'( = "Никнейм"; $lng_arr['name'( = "Ваше имя"; $lng_arr['mail'( = "Адресс эл. почты";
index.php //сдесь любой другой файл, зависит от того как фреймворк продумаеш /********************/ <?php //делаю проверку на запрашиваемый язык if)!isset)$_GET['lng'(: || empty)$_GET['lng'(: || !is_string)$_GET['lng'(: || )strlen)$_GET['lng'(: > 2:: | require_once)"lang_ru.php":; // по умолчанию у нас русский " else | require_once)"lang_".$_GET['lng'(.".php":; "
//получили соответствующий язык. //теперь подставляем куда нам нужно print "<form action=\"".$_SERVER['PHP_SELF'(."\" method=\"POST\">"; print $lng_arr['nickname'(; //подставляем нужный нам текст print " { <input type=\"text\" value=\"\" name=\"nick\">"; print "</form>"; ?>
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
rebel
Гость
|
|
« Ответ #6 : 06-09-2004 19:28 » |
|
Спасибо, МОРОЗ. Я где-то так и предполагал. Только не знал чем пользоваться. Теперь нужно браться за PHP.
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #7 : 07-09-2004 04:29 » |
|
Спасибо, МОРОЗ. Я где-то так и предполагал. Только не знал чем пользоваться. Теперь нужно браться за PHP. Тоже самое можно реализовать и на АСП и на Перле и т.д.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #8 : 07-09-2004 06:32 » |
|
Лично я такой приём использовал:
В базе данных хранятся: пользователи, языки. Пользователь сам настраивает себе язык. Пользователи М:1 Языки. В базе данных хранится словарь надписей системы (терминов) и переводы терминов на каждый из язык. Языки 1:М Переводы М:1 Термины. Каждая страничка собирается из надписей-терминов, а через несложную функцию при генерации выводится на нужном текущему пользователю языке.
Для хранения текстов, думаю, добавить поле языка к каждому тексту в таблице, и организовать тот же эффект выбора по языку текущего пользователя.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #9 : 07-09-2004 06:52 » |
|
dimka, тоже вариант, но предложеный мной ИМХО практичней. 1. Может сделать и начинающий 2. Не требует базы данных(я допустим знаю людей, которые не хотят использовать БД и делают всё на файлах) 3. При желании можно написать несложный админский интерфейс с добавлением/удалением Для хранения текстов, думаю, добавить поле языка к каждому тексту в таблице, и организовать тот же эффект выбора по языку текущего пользователя. А вот так я делаю для хранения информации типа новостей, описаний и так далее. Ещё раз повторюсь, это моё ИМХО. Я лично всегда использую базу данных для хранения информации, но мультиязычность всегда реализовываю в файлах.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #10 : 07-09-2004 10:12 » |
|
зато не надо делать по много файлов одной страницы для каждого языка. На файлах хорошо, когда языков 2-3, а когда их 10 или переменное число?
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #11 : 07-09-2004 10:33 » |
|
зато не надо делать по много файлов одной страницы для каждого языка. На файлах хорошо, когда языков 2-3, а когда их 10 или переменное число? Ну я практически не встречал сайтов где используется больше 4 языков И за 5 лет моей работы в сфере электронной коммерции и сайтостроительства мне не приходилось писать больше чем для 4 языков
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #12 : 07-09-2004 16:01 » |
|
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
rebel
Гость
|
|
« Ответ #13 : 07-09-2004 19:16 » |
|
Я, вот, не знаю как поступить. Мне все равно придется писать базу данных, так может тогда и сделать пару табличек для языков?
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #14 : 08-09-2004 04:57 » |
|
dimka, ну я работаю в конторе поскромней rebel, это уже решать лично тебе
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
rebel
Гость
|
|
« Ответ #15 : 08-09-2004 07:48 » |
|
тут посоветовали использовать GNU Gettext. кно-нибудь с этим сталкивался?
Объясню в общем свою цель. Сайт будет педставлять продукцию двух стран. Вся продукция будет находиться в базе данных.Каждый продукт нужно будет иметь на трех разных языках. Вот тут опять вопрос: делать одну базу, но с полями, например, name_ru, name_en ... для трех языков. Или делать три базы для каждого языка отдельно? Получатся идентичные базы, но с разными названиями баз. Тогда при выборе языка в переменную записал бы имя базы, а потом подставлял бы его в запросе. Это был бы один алгоритм, а если все в одной базе, это нужно будет писать три алгоритма для одного, второго и третьего языка, т.к. имена полей разные.
Меня волнует удобство использования и дальнейшей модификации.
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #16 : 08-09-2004 09:39 » |
|
сколь я помню определение алгоритма с 1-го курса, хороший алгоритм - это в меру универсальный алгоритм. Т.е. в любом случае алгоритм один, а выбор и подстановка нужных полей - это уже другой алгоритм. Можно, конечно, колонками, но... - Лёлик, это же не эстетично! - Зато дёшево надёжно и практично!
Красиво будет, если к каждой таблице будет табличка переводов на языки или общая таблица переводов. Впрочем, добавить колонку в таблицу труда не составляет - была бы она должным образом заполнена при добавлении. В любом случае придётся заниматься синхронизацией разноязычных полей, хоть то разные базы, хоть одна общая. Если допустимы различия между языковыми версиями сайта, то разные базы. Если все изменения всегда вносятся синхронно, то можно и колонками. Ещё такой момент у меня был: в базе имелся default язык (в моём случае английский). Если перевода на какой-нибудь язык не существовало, то система выдавала надпись на default языке - мож пригодится идея.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
|