Forum Webscript.Ru

Программирование => PHP => Тема начата: zonder от 06 Марта 2003, 20:54:00

Название: многоязыковый интерфейс сайта
Отправлено: zonder от 06 Марта 2003, 20:54:00
Не подскажите какие есть способы организации многоязыкового интерфейса сайта (алгоритмы, структуры и т.п.)

Спасибо
Название: многоязыковый интерфейс сайта
Отправлено: AliMamed от 06 Марта 2003, 20:55:42
все сообщения в переменные и в отдельный файл для каждого языка.
Название: многоязыковый интерфейс сайта
Отправлено: zonder от 06 Марта 2003, 21:07:55
что за сообщения ?
Название: многоязыковый интерфейс сайта
Отправлено: AliMamed от 06 Марта 2003, 21:15:23
сообщения интерфейса - текст, который выводится пользователю.

т.е. есть у тебя:
index.php
echo "Hello, world!\\n";
?>

вместо него делаешь:
index.phpif($lang=="ru"){
   include("language_ru.php");
}else{
   include("language_en.php");
}
echo $lang_hello_world."\\n";
?>language_ru.php
$lang_hello_world="Привет мир!";
?>language_en.php$lang_hello_world="Hello world!";
?>
Название: многоязыковый интерфейс сайта
Отправлено: Макс от 06 Марта 2003, 22:39:58
как альтернатива:
http://www.php.net/gettext
Название: многоязыковый интерфейс сайта
Отправлено: zonder от 06 Марта 2003, 23:08:06
это то ясно
это как говрится в лоб решение
а более систематизированного решения нет случайно ?

или на основе этого,.......руские файлы в одну папку, англицкие - вдругую\\ и в зависимости от языка вытаскивать те или иные файлы ?
Название: многоязыковый интерфейс сайта
Отправлено: Xander от 06 Марта 2003, 23:49:01
zonder
еще тут глянь: http://forums.webscript.ru/showthread.php?s=&threadid=10908&msgnum=12
Название: многоязыковый интерфейс сайта
Отправлено: Макс от 07 Марта 2003, 01:27:31
zonder
вообще задача делится на 2 пункта:
 1. организация мультиязычного контента
 2. организация мультиязычного интерфейса.

Что касается первого, тут все зависит от того как ты свой контент храниш. Например если в БД то обычно достаточно добавить поле language и все.
Насчет интерфейса, то тут возможно использовать :
 - хранение фраз в массиве/переменных/константах (как AliMamed тебе подсказал)
 - gettext (я так понимаю, ты с ним не захотел разбираться)
 - разные шаблоны для разных версий
 - тупо сделать несколько папок ru/ en/ и в каждой свой
скрипт со своим переводом
 - кто-то еще предлагал использовать xml для этого (логика там идентична методу AliMamed-а)

Других методов я не знаю.
Название: многоязыковый интерфейс сайта
Отправлено: USE от 07 Марта 2003, 10:56:40
есть решение - все данные в базу и в зависимости от запрашиваемого языка показывать контент на русском, английском, немецком и т.д., конечно надо чтобы контент на всех языках существовал.

кстати, как поступают когда вся инфа в базе, а контент не идентичен, т.е. на одном языке те страницы есть, а на другом нету? просто интересно ;-)
Название: многоязыковый интерфейс сайта
Отправлено: FreeSpace от 10 Марта 2003, 00:00:32
USE
1. Ничего не делают. Там, где контент не обновлен, показывается старый контент.
2. Вешают пометку "outdated" (просрочено) где-то сверху страницы или в заголовке дальше как в п1.
3. Перебрасывают на тот язык (обычно английский), который наверняка обновлен.
А что вообще по-твоему можно делать в этом случае? :)
Название: многоязыковый интерфейс сайта
Отправлено: Макс от 10 Марта 2003, 00:39:42
Цитировать
кстати, как поступают когда вся инфа в базе, а контент не идентичен, т.е. на одном языке те страницы есть, а на другом нету? просто интересно
ссылки на страницы скриптом строить. И скрипт должен проверять какие страницы есть на этом языке и только на них показывать ссылки
Название: многоязыковый интерфейс сайта
Отправлено: zonder от 10 Марта 2003, 16:50:58
а может кто нибудь пояснить, что такое gettext
Название: многоязыковый интерфейс сайта
Отправлено: Макс от 10 Марта 2003, 17:33:04
это программа, разработанная как раз для того чтобы позволить разработчикам ПО легко делать мультиязыячные интерфейсы в своих программах.
Что касается gettext+php то есть несколько статей на популярных забугорных сайтах по php (ссылки не помню) ну и та ссылка что я выше давал.
Название: многоязыковый интерфейс сайта
Отправлено: zonder от 10 Марта 2003, 18:21:02
А про использование gettext+php нет статей по русски ?
Название: многоязыковый интерфейс сайта
Отправлено: Макс от 10 Марта 2003, 21:47:03
Конечно нет =)
Название: многоязыковый интерфейс сайта
Отправлено: FreeSpace от 10 Марта 2003, 21:56:31
Слушайте, а давайте напишем! :)
Название: многоязыковый интерфейс сайта
Отправлено: Oak от 11 Марта 2003, 15:40:20
да ну - gettext уж слишком в лом + завязан на английский (или любой другой) 1н язык в качествеве базового.

А вот как по нормальному сделать.

Я то делал в проекте одном. Там была одна php-ка, 3 файла с контентом ("text.ru/en/uk") и еще файлик с переменными типа "заголовок" под каждый язык - отдельно, потому как по нему еще и карта сайта строилась.

а включал - include("text."+$lang)  , конечно if(file_exists ...

просто и работает.
Данные брались
1) из coockie
2) из URL-ки if($lang) $lang -> coockie
3) из настроек броузера
Название: многоязыковый интерфейс сайта
Отправлено: Макс от 11 Марта 2003, 22:05:30
Oak
Цитировать
завязан на английский (или любой другой) 1н язык в качествеве базового.
немного не понял. Ты про:
 echo _(\'Строка, которая будет переведена\');

Вообще я gettext предложил как альтернативу (имхо довольно удобную) методу олписанному AliMamed-ом и Oak-ом

Есть кстати еще pear::I18N хотя имхо он неудобен по сравнению с другими описываемыми здесь методами.