Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Многоязычие на сайте  (Прочитано 16645 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rebel
Гость
« : 06-09-2004 13:38 » 

Необходимо написать сайт с поддержкой 2-ух языков. Сайт намечается большой, поэтому переписывать каждую страницу на другой язык - это изврат, тем более, что второй язык, похоже, будет китайским. Каким образом можно реализовать эту затею?

Я думал сделать чтение из файлов с выбранным языком.
Я не знаю как это обычно делается  Вот такой я вот ...поэтому прошу помощи.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 06-09-2004 14:16 » 

Писать на китайском все равно придется
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
rebel
Гость
« Ответ #2 : 06-09-2004 14:33 » 

Цитата: Sla
Писать на китайском все равно придется

Да нет, с этим решено. Человеку будет отправлен текст только на английском, потом он вернет на китайском. А вот как все это провернуть? Что лучше использовать, как поступить?!?!?!?!??! :?:  :?:  :?:   Вот такой я вот
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 06-09-2004 15:50 » 

Если я правильно помню, в китайском текст пишется вертикально, хотя может для инета они на горизонтальное письмо перейдут... Вертикальный текст подразумевает (имхо) иную вёрстку страницы  Я шокирован! .
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
rebel
Гость
« Ответ #4 : 06-09-2004 17:48 » 

Цитата: dimka
Если я правильно помню, в китайском текст пишется вертикально, хотя может для инета они на горизонтальное письмо перейдут... Вертикальный текст подразумевает (имхо) иную вёрстку страницы  Я шокирован! .

Да не в том дело как пишется...как реализовать?

Что, никто никогда такого не делал??? Я шокирован!
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #7 : 07-09-2004 04:29 » 

Цитата: rebel
Спасибо, МОРОЗ. Я где-то так и предполагал. Только не знал чем пользоваться. Теперь нужно браться за PHP.


Тоже самое можно реализовать и на АСП и на Перле и т.д. Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 07-09-2004 06:32 » 

Лично я такой приём использовал:

В базе данных хранятся: пользователи, языки. Пользователь сам настраивает себе язык. Пользователи М:1 Языки.
В базе данных хранится словарь надписей системы (терминов) и переводы терминов на каждый из язык.  Языки 1:М Переводы М:1 Термины.
Каждая страничка собирается из надписей-терминов, а через несложную функцию при генерации выводится на нужном текущему пользователю языке.

Для хранения текстов, думаю, добавить поле языка к каждому тексту в таблице, и организовать тот же эффект выбора по языку текущего пользователя.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #9 : 07-09-2004 06:52 » 

dimka,  тоже вариант, но предложеный мной ИМХО практичней.

1. Может сделать и начинающий
2. Не требует базы данных(я допустим знаю людей, которые не хотят использовать БД и делают всё на файлах)
3. При желании можно написать несложный админский интерфейс с добавлением/удалением

Цитата
Для хранения текстов, думаю, добавить поле языка к каждому тексту в таблице, и организовать тот же эффект выбора по языку текущего пользователя.


А вот так я делаю для хранения информации типа новостей, описаний и так далее.

Ещё раз повторюсь, это моё ИМХО. Я лично всегда использую базу данных для хранения информации, но мультиязычность всегда реализовываю в файлах.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 07-09-2004 10:12 » 

зато не надо делать по много файлов одной страницы для каждого языка. На файлах хорошо, когда языков 2-3, а когда их 10 или переменное число?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #11 : 07-09-2004 10:33 » 

Цитата: dimka
зато не надо делать по много файлов одной страницы для каждого языка. На файлах хорошо, когда языков 2-3, а когда их 10 или переменное число?


Ну я практически не встречал сайтов где используется больше 4 языков Улыбаюсь И за 5 лет моей работы в сфере электронной коммерции и сайтостроительства мне не приходилось писать больше чем для 4 языков Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 07-09-2004 16:01 » 

MOPO3, www.microsoft.com Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
rebel
Гость
« Ответ #13 : 07-09-2004 19:16 » 

Я, вот, не знаю как поступить. Мне все равно придется писать базу данных, так может тогда и сделать пару табличек для языков?
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 08-09-2004 09:39 » 

сколь я помню определение алгоритма с 1-го курса, хороший алгоритм - это в меру универсальный алгоритм. Т.е. в любом случае алгоритм один, а выбор и подстановка нужных полей - это уже другой алгоритм. Можно, конечно, колонками, но...
Цитата

- Лёлик, это же не эстетично!
- Зато дёшево надёжно и практично!

Улыбаюсь
Красиво будет, если к каждой таблице будет табличка переводов на языки или общая таблица переводов. Впрочем, добавить колонку в таблицу труда не составляет - была бы она должным образом заполнена при добавлении.

В любом случае придётся заниматься синхронизацией разноязычных полей, хоть то разные базы, хоть одна общая.

Если допустимы различия между языковыми версиями сайта, то разные базы. Если все изменения всегда вносятся синхронно, то можно и колонками.

Ещё такой момент у меня был: в базе имелся default язык (в моём случае английский). Если перевода на какой-нибудь язык не существовало, то система выдавала надпись на default языке - мож пригодится идея.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines