[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переключения языка списком
bboyb-rock
Всем привет! Возникла такая проблема, при переключении языка выбирается только второй из списка и не ставится по умолчанию
вот хтмл код

<form name="Lang_form" method="post" action="index.php">
<select
onChange="lang_form()" name="new_language">
{section name=i loop=$lang_list}
<option value="{$smarty.section.i.index}">{$lang_list[i]->description}</option>
{/section}
</select>
</form>


Вот lang list
<?php
class
Language
{
var $description;
var $filename;
var $template;
}
if ( $_SESSION["current_language"] == 0){
$lang_list = array();

$lang_list[0] = new Language();
$lang_list[0]->description = "English";
$lang_list[0]->filename = "english.php";
$lang_list[0]->template_path = "./templates/tmpl1/";

$lang_list[1] = new Language();
$lang_list[1]->description = "Русский";
$lang_list[1]->filename = "russian.php";
$lang_list[1]->template_path = "./templates/tmpl1/";
}
else {
$lang_list = array();

$lang_list[0] = new Language();
$lang_list[0]->description = "Русский";
$lang_list[0]->filename = "russian.php";
$lang_list[0]->template_path = "./templates/tmpl1/";

$lang_list[1] = new Language();
$lang_list[1]->description = "English";
$lang_list[1]->filename = "english.php";
$lang_list[1]->template_path = "./templates/tmpl1/";

}
?>

Вот Php код

if (isset($_POST["new_language"]))
{
$_SESSION["current_language"] = $_POST["new_language"];
}
if (!isset($_SESSION["current_language"]) ||
$_SESSION["current_language"] < 0 || $_SESSION["current_language"] > count($lang_list))
$_SESSION["current_language"] = 0;
if (isset($lang_list[$_SESSION["current_language"]]) && file_exists("./languages/".$lang_list[$_SESSION["current_language"]]->filename))
include("./languages/".$lang_list[$_SESSION["current_language"]]->filename);
else
{
die("<font color=black><b>ERROR: Couldn't find language file!</b></font>");
}




Спустя 18 часов, 4 минуты, 3 секунды (15.05.2011 - 16:13) bboyb-rock написал(а):
Рябята подскажите пожалуйста

Спустя 32 минуты, 39 секунд (15.05.2011 - 16:46) T1grOK написал(а):
Хе-хе. Ну и логика. В первом случае у вас русский язык имеет индекс 0, во втором один, английский в свою очередь наоборот, а учитывая условие получается замкнутый круг. создаете один раз ланг лист:

$lang_list = array();

$lang_list[0] = new Language();
$lang_list[0]->description = "English";
$lang_list[0]->filename = "english.php";
$lang_list[0]->template_path = "./templates/tmpl1/";

$lang_list[1] = new Language();
$lang_list[1]->description = "Русский";
$lang_list[1]->filename = "russian.php";
$lang_list[1]->template_path = "./templates/tmpl1/";

а в форму передаете переменную какая указывает какой язык выбран

$smarty->assign('active_lang', $lang);

а форма будет выглядеть так:

<form name="Lang_form" method="post" action="index.php">
<
select onChange="lang_form()" name="new_language">
{section name=i loop=$lang_list}
<option value="{$smarty.section.i.index}" {if $smarty.section.i.index == $active_lang} selected {/if}>{$lang_list[i]->description}</option>
{/section}
</select>
</
form>

Спустя 6 часов, 27 минут, 12 секунд (15.05.2011 - 23:13) bboyb-rock написал(а):
Вы бы не моглиподсказать куда вставить $smarty->assign('active_lang', $lang);?
Я так понимаю надо сделать что то такое

$lang = $_SESSION["current_language"];
$smarty->assign('active_lang', $lang);

Спустя 8 часов, 57 минут, 54 секунды (16.05.2011 - 08:11) T1grOK написал(а):
Да, что то такое.

Спустя 1 час, 41 минута, 30 секунд (16.05.2011 - 09:52) bboyb-rock написал(а):
Сделал как Вы сказали теперь язык совсем некликается, переход не осуществляется

<?
if (isset($_POST["new_language"]))
{
$_SESSION["current_language"] = $_POST["new_language"];
}
if (!isset($_SESSION["current_language"]) ||
$_SESSION["current_language"] < 0 || $_SESSION["current_language"] > count($lang_list))
$_SESSION["current_language"] = 0;
if (isset($lang_list[$_SESSION["current_language"]]) && file_exists("./languages/".$lang_list[$_SESSION["current_language"]]->filename))
include("./languages/".$lang_list[$_SESSION["current_language"]]->filename);
else
{
die("<font color=black><b>ERROR: Couldn't find language file!</b></font>");
}
$lang = $_SESSION["current_language"];
$smarty->assign('active_lang', $lang);
?>

Спустя 3 часа, 8 минут, 25 секунд (16.05.2011 - 13:01) T1grOK написал(а):
Значит, что то не правильно делаете. Учитесь отлаживать свой код. Вот я протестировал аналогичный код, только без использования смарти, так как нету его под рукой. С использованием смарти будет оличаться только парой строк - установка значения, и вывод на экран:

Файл russian.php

$caption = "Русский";


Файл english.php

$caption = "english";


Файл test.php

<?php
class
Language
{
var $description;
var $filename;
var $template;
}

session_start();

$lang_list = array();

$lang_list[0] = new Language();
$lang_list[0]->description = "English";
$lang_list[0]->filename = "english.php";
$lang_list[0]->template_path = "./templates/tmpl1/";

$lang_list[1] = new Language();
$lang_list[1]->description = "Русский";
$lang_list[1]->filename = "russian.php";
$lang_list[1]->template_path = "./templates/tmpl1/";

if (isset($_POST["new_language"])){
$_SESSION["current_language"] = $_POST["new_language"];
}

if (!isset($_SESSION["current_language"]) ||
$_SESSION["current_language"] < 0 ||
$_SESSION["current_language"] > count($lang_list)-1){

$_SESSION["current_language"] = 0;

}

if (isset($lang_list[$_SESSION["current_language"]]) AND file_exists("languages/".$lang_list[$_SESSION["current_language"]]->filename)){

include("languages/".$lang_list[$_SESSION["current_language"]]->filename);

}else{
echo "<font color=black><b>ERROR: Couldn't find language file!</b></font>";
}


$active_lang = $_SESSION["current_language"];

?>
<?
echo $caption?>
<form id="Lang_form" name="Lang_form" method="post" action="test.php">
<
select onChange="document.Lang_form.submit()" name="new_language">
<? foreach ($lang_list as $key=>$value): ?>
<option value="<? echo $key ?>" <? if ($key == $active_lang):?> selected <? endif ?>><? echo $value->description?></option>
<? endforeach ?>
</select>
</
form>

Спустя 2 часа, 27 минут, 13 секунд (16.05.2011 - 15:28) bboyb-rock написал(а):
Спасибо большое! Вы мне очень помогли!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.