Мультиязычный сайт работает на локальном хосте, а не в интернете - PullRequest
0 голосов
/ 13 февраля 2011

Я создал веб-сайт с 3 языками, и сайт работает нормально (localhost), но когда я загружаю его, по умолчанию используется язык EN, и всякий раз, когда я меняю язык в Интернете, скажем, с EN на FR, страница продолжаетсяэто lang в этом случае на FR и перенаправить меня на домашнюю страницу, а весь текст на сайте - на FR, это нормально, но после этого, когда я пытаюсь нажать, скажем, о нас, то сам по себе меняю обратно на язык по умолчанию, и покажи мне эту страницу (о нас), но по умолчанию lang ... Вот пример кода, как это выглядит ...

Это select.php, и я включаю этот файл на каждую страницу ...

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];

// register the session and set the cookie
$_SESSION['lang'] = $lang;

setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en';
}

switch ($lang) {
  case 'en':
  $lang_file = 'lang.en.php';
  break;

case 'fr':
  $lang_file = 'lang.fr.php';
  break;

case 'de':
  $lang_file = 'lang.de.php';
   break;

default:
  $lang_file = 'lang.en.php';

}

include_once 'lang/'.$lang_file;

Это lang.en.php ...

$lang = array();

// menu
$lang['txt1'] = 'Home';
$lang['txt2'] = 'About Us'; 
$lang['txt3'] = 'Services'; 
$lang['txt4'] = 'Contact';

То же самое для двух других языков ...

и я просто помещаю в index.php это ...

<ul>
    <li><a  href="index.php"><em><b><?php echo $lang['txt1'];?></b></em></a></li>
    <li><a  href="about.php"><em><b><?php echo $lang['txt2'];?></b></em></a></li>
    <li><a  href="services.php"><em><b><?php echo $lang['txt3'];?></b></em></a></li>
    <li><a  href="contact.php"><em><b><?php echo $lang['txt4'];?></b></em></a></li>
</ul>

Когда по умолчанию используется lang, я могу нормально перемещаться, я могу без проблем переходить на любую страницу, но проблема в том,когда я пытаюсь изменить сайт на другой язык (языки), скажем, я нахожусь на странице www.example.com/about.php и хочу видеть эту страницу наСкажем, FR, сайт перенаправит меня на www.example.com/index.php?lang=fr (это нормально), и тогда я смогу увидеть FR lang на сайте, но только на домашней странице, но когда я попытаюсь перейти наwww.example.com/about.php затем сайт вернул lang по умолчанию, в данном случае EN ...

Странно то, что этот скрипт прекрасно работает на localhost ...
Есть идеи почему?

Обновление:

OUTPUT:
Array ( [lang] => lang value to put in session [something_1] => something value to put in session )
Array ( [lang] => new lang value but not set in session [something_1] => something value to put in session )

<?php

session_start();
$lang = "lang value to put in session";
$something = "something value to put in session";
$_SESSION['lang'] = $lang;
$_SESSION['something_1'] = $something;
print_r($_SESSION);
$lang = "new lang value but not set in session";
$something = "new something value but not set in session";
print_r($_SESSION);

PHP не должен изменять второй массив

Array ( [lang] => lang value to put in session [something_1] => something value to put in session )
Array ( [lang] => new lang value but not set in session [something_1] => something value to put in session )

Он должен выглядеть так:

Array ( [lang] => lang value to put in session [something_1] => something value to put in session )
Array ( [lang] => lang value to put in session [something_1] => something value to put in session ) 

Любая идеяпочему?

1 Ответ

0 голосов
/ 13 февраля 2011
  • Убедитесь, что ваши файлы ничего не отражают перед настройкой сеанса
  • если вы сохраняете файлы в формате UTF, убедитесь, что это UTF без спецификации
  • отключить display_errorsin ini-файл. попробуйте ini_set('display_errors',false);

Надеюсь, это поможет, я сталкивался с этой проблемой много раз.

...