Страница 1 из 1

êîä íà php äëÿ âûáîðà ÿçûêà

Добавлено: Пн апр 03, 2006 21:56
danutzzu
â ïðèíöèïå ïðîáëåìó ðåøèë, íî íå íðàâèòñÿ.

xî÷ó ÷òîá þçåð íå ðåãèñòðèðóÿñü ñìîã ïîìåíÿòü ÿçûê ñàéòà. ïðîñòî íóæíî ÷òîá êîãäà þçåð íàæèìàåò íà ëèíê ñ íóæíûì ÿçûêîì ïîÿâèëàñü ñòðàíèöà íà ñîîòâåòñòâóåùåì ÿçûêå. ôóíêöèè âñå íàïèñàíû, âñå åñòü, íóæíà òîëüêî ýëåãàíòíàÿ ðåàëèçàöèÿ ïðîáëåìû.

ïîêà ÷òî ÿ óñòàíàâëèâàþ êóêèñ ñ ÿçûêîì äëÿ þçåðà, íî ýôåêò äîñòèãàåòñüÿ òîëüêî ïðè âòîðîì ðåôðåøå ñòðàíèöû - òàêîâà îñîáåííîñòü ôóíêöèè set_cookie. ïîñëå òîãî êàê âûçûâàþ ôóíêöèþ ñ set_cookie, îòäàþ ìåòàòàã ðåôðåø è ñòðàíèöà ïåðåçàãðóæàåòñÿ ÷åðåç ñåêóíäó ñ íóæíû ÿçûêîì.

òàê âîò, ìîæíî ëè ñäåëàòü êàê-òî ÷òîá ïðàâèëüíûé ÿçûê áûë ïðè ïåðâîé æå çàãðóçêå ïî êëèêó íà ëèíê ñ ÿçûêîì?

Добавлено: Вт апр 04, 2006 02:46
shmalex
Может JavaScript поможет? на клик определяешь кукис и делаешь рефрешь. :?

Добавлено: Вт апр 04, 2006 03:07
danutzzu
ìíå íóæíî íà êëèê ïîìåíÿòü çíà÷åíèå êóêèñà è ñðàçó åãî ñ÷èòàòü, äî òîãî êàê íà÷àòü îòîáðàæàòü õòìë, ïîñêîëüêó âñå ôóíêöèè èñïîëüçóþùèå çíà÷åíèå ÿçûêà áåðóò åãî èç êóêèñà

ìîæíî ïðèâÿçàòü ÿçûê ê ñåññèè, à íå ê êóêèñàì, íî òîãäà êàê ÿ ïîíÿë èç ìàíóàëà íàäî ïåðåäåâàòü SID sessii ñî òðàíèöû íà òðàíèöó

Добавлено: Вт апр 04, 2006 19:07
Ваганыч
но тогда как я понял из мануала надо передевать SID sessii со траницы на траницу
Да, но тебя это не должно напрягать, этим занимается сервер без твоего участия, тебе надо только стартовать сессию на странице. Ну и зарегестрировать в сессии имя переменной, в которой будет храниться метка языка.

Добавлено: Вт апр 04, 2006 20:29
BIOHAZARD
Куки работают только после повторной загрузке (странно если бы было по другому)
У тебя должен быть конфиг файл со всеми языковыми настройками .после того как
юзер нажимает линк ты снова загружаеш тот же сайт но с другим конфигом.
if($lang==en) include "config_en.php";
else include "config_ru.php";

Добавлено: Вт апр 04, 2006 20:53
danutzzu
Âàãàíû÷,
ïîïðîáóþ

BIOHAZARD,
â ýòîì è ñîñòîèò ïðîáëåìà, ÷òîá ïîäêëþ÷èòü ÿçûê èç êóêèñîâ íàäî äâà ðàçà çàãðóæàòü ñòðàíèöó à
if($lang==en) include "config_en.php";
else include "config_ru.php";
òû íå óêàçàë îòêóäà áåðåøü ïåðåìåííóþ $lang

Добавлено: Ср апр 05, 2006 07:13
BIOHAZARD
danutzzu,
Ну блин вы даёте. Ты перегружаеш страницу только первый раз . lang=en; - должна быть записана на клиенте.Когда клиент заходит , ты ее получаеш
$_REQUEST['lang']; ну и дальше по сценарию.

Добавлено: Чт апр 06, 2006 05:09
danutzzu
BIOHAZARD,

òàê íàäî ñíà÷àëà ïðîïèñàòü ïåðåìåííóþ ó êëèåíòà, ÿ ãîâîðþ ïðî òåx êòî ïåðâûé ðàç çàõîäèò

Добавлено: Чт апр 06, 2006 07:34
BIOHAZARD
значит так , последовательность действий.
1) человек первый раз заходит на сайт
2) ты можеш проверить откуда он пришел(IP адрес), по адресу узнаеш наш он или буржуй.
загружаеш соответственно ru. или en.
3)ты можеш не проверять адрес , а загрузить по умолчанию какойто язык.
4)человек видит что язык не в тему и жмет смену языка.
5)ты проверяеш есть ли у него твоя кука.Если нет устанавливаеш куку и одновременно нужный язык.
6)человек доволен.Ты тоже.

Добавлено: Чт апр 06, 2006 20:56
danutzzu
BIOHAZARD,
ÿ äåëàþ òî÷íî êàê òû ðàñïèñûâàåøü, è ó ìåíÿ âñå ïóòåì, ìåíÿ ëèøü íàïðèãàåò òî, ÷òî êîãäà ÷åëîâåê ìåíÿåò ÿçûê, òî íàäî äâà ðàçà çàãðóæàòü ñòðàíèöó - ñíà÷àëà ìåíÿåòñÿ êóêèñ, à ïîòîì âî âòîðîé ðàç óæå çàãðóæàåòñÿ íóæíûé ÿçûê

Добавлено: Чт апр 06, 2006 22:04
Ваганыч
danutzzu,
Кидай переменную с языком в сессию и не надо 10 раз перегружаться

Добавлено: Чт апр 06, 2006 23:29
danutzzu
Âàãàíû÷,

äà, ñ ñåññèÿìè âñå ðàáîòàåò êàê ÿ xî÷ó

Добавлено: Пт июн 23, 2006 23:10
Quber
Abisnite i mne cac ata ea sota ne poneal
if($lang==en) include "config_en.php";
else include "config_ru.php";
Toka ata cod??
Esli u minea fseo sidit v index.php ili home.php???

Добавлено: Пн июн 26, 2006 10:43
Rodger
Плин.
Какой хтмл?? :) Мы тут проя языки программирования выдачи контента говорим.
Пусть будет хоме.пхп.

У тебя все, что выводится должно быть зашить в переменные, например приветственное слово ты выводишь не напрямую открытым текстом из хоме.пхп, а примерно так

home.php:

.....
print $salutation_word;
...

или
print $vars['$lang']['salutation_word'];

Все эти переменные ты объявляешь в отдельных файлах, которые потом подключаешь директивой include или require

В первом случае (как и описано выше) ты должен иметь файлы, разделенные по языковому признаку (config_en.php, config_ru.php).
В этом файлах у тебя должна быть объявлена переменная примерно так:
$salutation_word="Всем привет!"; //(для русского)
$salutation_word="Hi all!"; //(для английского)

Во втором случае ты можешь сделать единый файл с объявлением массива текстов:
config.php:
$vars['rus']['salutation_word']="Всем привет!";
$vars['eng']['salutation_word']="Hi all!";


Примерно ясно??

Добавлено: Пн июн 26, 2006 19:52
Quber
A cacoi cod nada napisati v index stobi peresol c config i bral svoi eazik ??

Добавлено: Сб сен 16, 2006 17:45
Phoebe
в конце скрипта пропиши
header('Loaction: index.рhр');

после выполнения скрипта (как бы в фоновом режиме) у юзера сразу откроется главная страница уже с установками языка , вместо index.рhр ставь любой путь

Добавлено: Сб сен 16, 2006 20:34
Laur-Balaur
мдя... умно,умно... а расскажите мне, плиз, как спайдеры поисковиков будут определять какой язык грузить?

имхо, лучше версии разделять
/en/index.php?
/ru/index.php?

и ничего через ссесии гнать не нужно. далее все элементарно, ватсон.