Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вариант сайта на другом языке


Автор: Varlenka 1.3.2004, 00:05
Здравствуйте!

А подскажите, пожалуйста, каким наиболее быстрым и безболезненным методом можно сделать вариант сайта еще на другом языке? В смысле на английском, например.

Я поставила 2 ссылки: рус и анг.
И каждый раз, перед тем, как вывести текст, проверяю соответствующую переменную, равна она "rus" или "eng" - такой текст и вывожу. Но это занимает много времени в смысле перекройки кода, а мне нужно все как можно быстрее.

Посоветуйте, пожалуйста, есть ли еще какие-то варианты?


Пасиба

Автор: IZ@TOP 1.3.2004, 00:08
А как ты данные хранишь на русском/английском? Если в базе, то се просто, делаешь ?lang=ru, если ru значит приписываем к имени таблиц которых данные ...$lang."_mysite... и то же с конфигоами и меню...

Автор: Vaulter 1.3.2004, 00:08
Varlenka
все строки запихать в константы и в файлы lang_ru.php и lang_eng.php

инклудишь соотвествующий файл - константы определяются нужными строками.
в коде вставляешь константы...

Автор: Varlenka 1.3.2004, 00:10
Цитата(Iz @ 1.3.2004, 00:08)
А как ты данные хранишь на русском/английском? Если в базе, то се просто, делаешь ?lang=ru, если ru значит приписываем к имени таблиц которых данные ...$lang."_mysite... и то же с конфигоами и меню...

withstupid.gif

Iz@top, ничего не поняла biggrin.gif
Можно поконкретнее?


Спасибо

Автор: Varlenka 1.3.2004, 00:14
Цитата(Vaulter @ 1.3.2004, 00:08)
Varlenka
все строки запихать в константы и в файлы lang_ru.php и lang_eng.php

инклудишь соотвествующий файл - константы определяются нужными строками.
в коде вставляешь константы...

То есть проверяю ?($lang="eng") и включаю lang_ru.php, а иначе включаю другой файл?


Или сделать кучу констант, которые различаются типо $a_eng и $a_rus?

Автор: IZ@TOP 1.3.2004, 00:31
Цитата
То есть проверяю ?($lang="eng") и включаю lang_ru.php, а иначе включаю другой файл?
Какая проницательная smile.gif

А я по поводу базы данных, где все тексты храниться будут? Или все будет из двух - трех файлов?

Автор: Sardar 1.3.2004, 00:33
Цитата
Или сделать кучу констант, которые различаются типо $a_eng и $a_rus?

Нет. Старый проверенный способ: передаешь со страницей параметр ?lang=...
Далее код:
Код
switch($_GET['lang']) { //switch что бы безопасно было
case "ru": include($lang_dir."lang_ru.php");
case "en": include($lang_dir."lang_en.php");
default: include($lang_dir."lang_en.php");
}

В файле lang_(..).php содежитсяассоциативный массив:
Код
$lang['welcome']="Добро пожаловать";
$lang['back']="Назад";
...

После этого используешь везде по коду $lang['name'].

Автор: IZ@TOP 1.3.2004, 00:45
Sardar, во, во ... это мы и имели ввиду wink.gif

Автор: Varlenka 1.3.2004, 01:14
Круто, блин!

Спасибо всем за советы!!!


smile.gif

Автор: Varlenka 1.3.2004, 01:15
Цитата(Iz @ 1.3.2004, 00:31)
Цитата
То есть проверяю ?($lang="eng") и включаю lang_ru.php, а иначе включаю другой файл?
Какая проницательная smile.gif

А я по поводу базы данных, где все тексты храниться будут? Или все будет из двух - трех файлов?

А тексты не будут в базе данных храниться thumbs-up.gif

Автор: Varlenka 1.3.2004, 18:46
Цитата(Sardar @ 1.3.2004, 00:33)
Цитата
Старый проверенный способ: передаешь со страницей параметр ?lang=...




Возникли проблемы.
Что значит передавать с страницей параметр? С сессией?

Автор: Sardar 1.3.2004, 19:13
Передаешь аргумент к странице методом GET - _http://www.my.site?argument=znachenie[&argument2=znachenie|&argument_bez_znachenija_te_true]

В коде используешь через $_GET['argument'].

Вообщето это азы...

Автор: Varlenka 1.3.2004, 19:23
Цитата(Sardar @ 1.3.2004, 19:13)
Передаешь аргумент к странице методом GET - _http://www.my.site?argument=znachenie[&argument2=znachenie|&argument_bez_znachenija_te_true]

В коде используешь через $_GET['argument'].

Вообщето это азы...

Нее, ну а если мне надо поменять язык уже на первой странице.

Автор: Guest 1.3.2004, 20:02
Неплохо бы определить язык пользователя:
Код

$tmp=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
$tmppos=strpos($tmp,';');
$ulang=explode(',',substr($tmp,0,(($tmppos>0)? $tmppos: strlen($tmp))); //языки в ISO639 (ru,en,fr...)


Автор: Sardar 1.3.2004, 20:04
Я так и не понял почему я сам посебе "отлогиниваюсь" - достает меня этот баг форума bored.gif .
Предидущий пост мой.

Автор: Wowa 2.3.2004, 02:16
Цитата
Я так и не понял почему я сам посебе "отлогиниваюсь" - достает меня этот баг форума

вероятно из-за того, что у тебя с куками на компе не все в порядке. Попробуй почистить. А вообще это должно в "Обсуждение форума" пойти.

Автор: Raptus Melanholicus 2.3.2004, 22:18
Ну а хранить lang всё-таки проще в сессии.
Меня тоже этот вопрос интересует, я сейчас работаю над подобной задачей.
Решил держать ВСЕ тексты в БД.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)