Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Переключение языков / 12 сообщений из 12, страница 1 из 1
29.04.2012, 09:32:37
    #37776605
Терри
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
Есть файл dictionary. php с таким содержимым:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<?php
session_start();

switch ($lng) {
    case "eng":
$n_1="English";
$n_2="Russian";
$n_3="News";
$n_4="Service";
$n_5="Home";
$n_6="Contact";
$n_7="Name";
$n_8="Comment";
$n_9="Address";
$n_10="Questions";
    break;
    
    case "rus": 
$n_1="Английский";
$n_2="Русский";
$n_3="Новости";
$n_4="Сервис";
$n_5="Главная";
$n_6="Контакт";
$n_7="Имя";
$n_8="Комментарий";
$n_9="Адрес";
$n_10="Вопросы";
    break;
}

?>




В header.php переключаю языки.
Код: php
1.
2.
3.
    
<a href="index.php?lang=eng">ENG</a> 
<a href="index.php?lang=rus" >RUS</a>




В index.php

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
session_start();
$lang=isset($_GET["lang"])?$_GET["lang"]:"";
$dlng = "rus";
if(!$lang) {
    $lng = $dlng;
} else {
    $lng=$lang;
}  
require_once "dictionary.php";




В header.php и остальных файлах произвожу проверку $lang.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
session_start();
$lang=isset($_GET["lang"])?$_GET["lang"]:"";
$dlng = "rus";
if(!$lang) {
    $lng = $dlng;
} else {
    $lng=$lang;
}  




Переключение в шапке нормально происходит, но когда хочу вызвать какую-то страницу, то то что указано по умолчанию, на том языке и видно, то есть значение для $lang фактически теряется и пустым становится.

Как мне заставить $lang оставить то значение, которое было указано при нажатии на один из пунктов в header.php?

Надеюсь, сумела объяснить ситуацию.
...
Рейтинг: 0 / 0
29.04.2012, 09:52:39
    #37776607
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
А с чего бы ему быть не пустым, если в вы в гет не передаете значение?
...
Рейтинг: 0 / 0
29.04.2012, 09:53:00
    #37776608
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
и session_start зачем в каждом скрипте?
...
Рейтинг: 0 / 0
29.04.2012, 09:55:49
    #37776609
Терри
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
Hett,

Я думала, что уже всё передано. А что еще надо добавить?

Забыла в начале темы указать [PHP].
...
Рейтинг: 0 / 0
29.04.2012, 10:07:45
    #37776611
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
Либо вы каждый раз указываете lang=eng в запросе, либо сохраняете в сессии значение.

dictionary. php
Что это за бред? Сделайте 2 файла с массивами

Например английский
Код: php
1.
2.
3.
$lang['n_1']="English";
$lang['n_2']="Russian";
....



И русский таким же образом и делайте include нужного файла в зависимости от того, какой нужен язык.
...
Рейтинг: 0 / 0
29.04.2012, 10:42:00
    #37776621
Терри
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
Hett,

Создала 2 отдельных файлов rus.php и eng.php .

В header.php записала следующее.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?php
$lang=isset($_GET["lang"])?$_GET["lang"]:"";

switch ($lang) {

case "rus":
    include "rus.php";
    break;    
case "eng":
    include "eng.php";
break;
Default: 
    include "eng.php";
}
?>



Осталось только та же проблема, не видит $lang . Как надо сохранить в сессии? Я еще не очень лажу с сессиями, запуталась.
...
Рейтинг: 0 / 0
29.04.2012, 11:11:35
    #37776631
Терри
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
В header.php заменила на:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$lang=isset($_GET["lang"])?$_GET["lang"]:"";

$dlng = "rus";

switch ($lang) {

case "rus":
    include "rus.php";
    break;    
case "eng":
    include "eng.php";
break;
Default: 
    $lang=$dlng;
    include "eng.php";
}

$_SESSION["s_lang"]=$lang; 




В остальных добавила такую строчку:

Код: php
1.
    $lang=isset($_SESSION["s_lang"])?$_SESSION["s_lang"]:"";  



Что делаю не так?
...
Рейтинг: 0 / 0
29.04.2012, 11:15:26
    #37776633
Терри
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
<a href="index.php?hide=catalog">CATALOG</a>

Например, при нажатии на эту ссылку, в вызванном окне слова на нужный язык не поменялись.
...
Рейтинг: 0 / 0
29.04.2012, 11:22:12
    #37776636
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
странная у вас логика
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$lang=isset($_SESSION["lang"])? $_SESSION["lang"]:"eng";

switch ($lang) {

case "rus":
    include "rus.php";
    break;    
default:
    include "eng.php";
}



Меняем язык так:
Код: php
1.
if(isset($_GET['lang'])) $_SESSION['lang'] = $_GET['lang'];
...
Рейтинг: 0 / 0
29.04.2012, 11:37:49
    #37776646
Терри
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
Hett,

Получилось, от неожиданности даже растерялась немного ... :)

Я пока не очень во всем разбираюсь и немного путаюсь, со временем привыкну. Сейчас внимательно посмотрю на код, что сделано.

Огромное спасибо за помощь.
...
Рейтинг: 0 / 0
29.04.2012, 12:41:11
    #37776684
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
Приходите еще
...
Рейтинг: 0 / 0
29.04.2012, 12:56:06
    #37776692
Терри
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение языков
Hett,

Зайду обязательно, у меня еще будут "сложные" для меня вопросы ........... :)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Переключение языков / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]