language system на прост php сайт

crystalline

Registered
здравейте
имам елементарен сайт писах на php и html/css.
използвам метода include и имам съвсем стандартен индекс
Код:
<?php
include("header.php");
?>


<?php
 switch($_GET['page'])
 {
  case "oage1": include('page1.php'); break;
  case "page2": include('page2.php'); break;
  case "page3": include('page3.php'); break;
  case "page4": include('page4.php'); break;
  case "page5": include('page5.php'); break;
  default: include('intro.php');
 }
?> 


<?php
include("footer.php");
?>

така всъщност зареждам само съдържанието на отделните страници, искам обаче да приложа система за смяна на езика (която в последствие ще се наложи да сменя 4 или повече езика).
ии понеже никога не съм работил правил такава с-ма си нямам и бъкел понятие как става номера...потърсих уроци по въпроса, но не намерих такива...ако има такита в сайта, но съм пропуснал да ги забележа се извинявам...

та...бих искам да ми дадете прост пример за сняма на езиците на сайта, т.е. language=fr, language=de, language=bg и т.н. и това да става за съответната страница (а не да се налага да слагам линкове като луд на всяка една страница...което си е жив суисайд).

благодаря предварително
поздрави 8)
 
Със сесия не става ли?

Всички файлове трябва да са ти с общ header.
Ползваш ли общ header за всички файлове?

Правиш няколко lang файла и после е достатъчно само веднъж
потребителя да смени езика и във всички файлове ще му подава
езика който си е избрал.
И.. да .
Точно както си го показал така трябва да бъде.

Към текущата страница пращаш едно:

?language=en и край.
Сменя езика за самата текуща и после вече няма нужда от GET данни натам.

Мога да ти дам пример за такъв сайт.
 
Ето ти две теми, в който е обсъждано това:

http://www.web-tourist.net/forum/viewtopic.php?t=4766&highlight=%E5%E7%E8%EA%E0

http://www.web-tourist.net/forum/viewtopic.php?t=2953&highlight=%E5%E7%E8%EA%E0

Във втората е написан код от админ
 
е ти си тръгнал по правилния подход ;) както и до сега
може с сесии
примерно фаил lang.php

<?php
session_start();
$lang=$_GET['lang'];
switch ($lang){
case en: $_SESSION['lang']='en';break;
case bg: $_SESSION['lang']='bg';break;
default: $_SESSION['lang']='bg';
}
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
?>

и слагаш 2 линка в случая lang.php?lang=bg lang.php?lang=en
така стартираш сесия с името на езика

и след това просто инклудваш фаил които съдържа применливи като всяка променлива отговаря на даден текст зависимо на бг или на ен

<?php
session_start();
if(isset ($_SESSION['lang'])){$_SESSION['lang']=$lang;}
switch ($lang){
case en: include('lang_en.php');break;
case bg; include('lang_bg.php');break;
default:include('lang_bg.php');exit();
}
?>
 
Ми и в двете теми нещо има не както трябва.
Даже сега си погледнах кода и е грешен.
Оправих го . :)

Погледни втората тема и виж дали нещо ще разбереш.


Ето още един код за същото.

<?
if (!isset ($_GET['lang']))
{
if(isset($_SESSION['lang'])){
$lang=$_SESSION['lang'];
}
else
{
$lang='bg';
}
}
else
{
$lang = $_GET['lang'];

}


if ($lang=='bg')
{
$_SESSION['lang'] = 'bg';
require(bulgarian.php');
}
else
{
$_SESSION['lang'] = 'en';
require(english.php');
}

$_SESSION['lang']=$lang;

?>


Ето ти и демо: http://palomita.com
 
хъх...момчета благодаря ви много, ноо не го чатнах...може ли един нагледен пример с два файла ? :<shy>:

защото аз вземах примера на mute...имам файл lang.php, но не можах да разбера какво се има предвид - да инклудна файл, които има променливи с този код...ии наистина бих се помолил за едно примерче

благодаря предварително
поздрави [/list]
 
<?php
$lang = $_GET['lang']; // Показваме от каде да се вземе стойноста на lang в случея това е от линка
if (empty($lang)) // Проверяваме дали променливата lang е празна ако е празна ще се изпълни това в долните скоби
{
include ("lang/bg.php"); // ако променливата lang е празна то тогава ще се инклудне bg ланга или по точно казано езика по дефаулт
}else
{
include ("lang/$lang.php"); // а тук вече ако има някакав език който е задеден него инклудваме не е зле да си направиш проверка дали езика съществува и ако да тогава да инклудва
}
?>
 
ето примера
<?php
session_start();
if(isset ($_SESSION['lang'])){$_SESSION['lang']=$lang;}
switch ($lang){
case en: include('lang_en.php');break;
case bg; include('lang_bg.php');break;
default:include('lang_bg.php');exit();
}
?>

ако $lang съдържа bg то инклудва фаила lang_bg.php
а самия файл съдържа примерно
$title="Това е моя сайт";
$slogan="Слогана на сайта";

а в файла lang_en.php примерно е така
$title="This is my web site";
$slogan="Your slogan here";

така правиш 2 файла с еднакви променливи в единия да са на Бг в другия на ЕН

а в самия файл примерни индекс.пхп
ги ползваш така
<title><?php echo $title; ?></title>
<h3><?php echo $slogan; ?></h3>

надявам се да съм обяснил добре
 
mute, благодаря ти...убеден съм че си обяснил добре, но както досега много кратно се е доказвало...аз съм си тъп.не успях да го подкарам.
водя се по написаното от теб...

ето този код по според мен трябва да влезе в кода на страницата ми. така ли е ?

Код:
<?php
session_start();
if(isset ($_SESSION['lang'])){$_SESSION['lang']=$lang;}
switch ($lang){
case en: include('en.php');break;
case bg; include('bg.php');break;
default:include('bg.php');exit();
}
?>

поправете ме - къде трябва да поставя този код ? в team.php (примерно) ?

иначе другите ми файлове са както следва от поста на mute

en.php
Код:
<?php
$title="This is my web site";
$slogan="Your slogan here";
?>

bg.php
Код:
<?php
$title="Това е моя сайт";
$slogan="Слогана на сайта"; 
?>

ии този код...предназначене за индекса, само дето не ми е ясно как трябва да излежда ?
Код:
<title><?php echo $title; ?></title>
<h3><?php echo $slogan; ?></h3>

ама никак не ми е ясно
в общи линии благодаря на всички, но аз май не успях да попия нищо...в резултат на което съвсем безочливо, нахално и нагло ще помоля някой да ми прати файловете с по два реда текст на различните езици...мисля че бих се оправил...ако не пак ще ви изтормозя...
интересно, че намерих няколко други скрипта, но и тях не успях да подкарам.

поздрави
 
да но си забравил и следняи файл
първо пиши session_start(); в началото на всеки документ така че да се създава сесия даже наи добре си го направи това в един файл и си го инклуд-ни в всички страници
<?php
session_start();
if(isset ($_SESSION['lang'])){$_SESSION['lang']=$lang;}
switch ($lang){
case en: include('en.php');break;
case bg; include('bg.php');break;
default:include('bg.php');exit();
}
?>

другото което липсва е скрипта с които стартирташ сесията
примерно е lang.php

<?php
session_start();
$lang=$_GET['lang'];
switch ($lang){
case en: $_SESSION['lang']='en';break;
case bg: $_SESSION['lang']='bg';break;
default: $_SESSION['lang']='bg';
}
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
?>

в страницата си слагаш
<a href=lang.php?lang=en >ENGLISH</a>
<a href=lang.php?lang=bg >BG</a>

това е нети трябват други скриптове
при натискане на някои от тези линкове ще се създаде сесия която съдържа БГ или ЕН
след това скрипта ще те пренасочи към страницата откадето си натиснал линковете.
 
mute, мерси

поради каква причина това нещо ми протестира за старта на сесията

Код:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\xampp\htdocs\xampp\lang\lang\sesion.php:1) in C:\Program Files\xampp\htdocs\xampp\lang\lang\sesion.php on line 1

два пъти го изписва...интересно защо...
 
нз каде си го сложил но сесията трябва да се стартира още на вторият ред на файла
или първият след <?php
 
Сложи session_start() най отгоре над всичко.

Не може преди него да слагаш html код .


Правилно:

Код:
<? session_start(); ?>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Неправилно:

Код:
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<? session_start(); ?>
 
всъщност в скрипта които сам дал сесията се инклудва от файл
странното е че на хостинга неправи проблеми на на апачето на компа излзиа тази грешла
 
Aз какво направих:
1.свалих това дето е дал муте
2.Показваше ми глеша в сесион.пхп
3.Едитнах го на

Код:
<?php 
session_start(); 
if(isset ($_SESSION['lang'])){$_SESSION['lang']=$lang;} 
switch ($lang){ 
case en: include('en.php');break; 
case bg; include('bg.php');break; 
} 
?>
4.Сега въпроса е как да текста да излиза на Бг и Ен това е ?!? :?:
 

Back
Горе