вот хтмл код
<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
Файл english.php
Файл test.php
Файл 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 написал(а):
Спасибо большое! Вы мне очень помогли!