2014-11-24 5 views
0

Я делаю сайт для развлекательной компании. Поскольку мы работаем для многих иностранцев, я попытался сделать сайт многоязычным. Однако, когда я тестировал все это, текст возвращался как пустой. Я думаю, что проблема заключается в файле common.php, но я не уверен. Я использовал common.php у парня, который сделал почти то же самое.Как я могу заставить свою функцию включения работать?

У меня есть весь сайт на одной странице (index.php), и пользователь переходит с помощью функции слайдера js в следующий раздел. Сценарий перевода должен работать следующим образом: файл common.php включен в мой index.php. Он проверяет, какой язык используется пользователем. Затем common.php СЛЕДУЕТ загружать соответствующий файл словаря в index.php. Но это не так ...

Любая помощь в том, как получить мой переведенный текст, загруженный на веб-сайт, будет действительно оценен!

<?php 
/* 
------------------ 
Taal: Nederlands 
------------------ 
*/ 

$lang = array(); 

// Menu 

$lang['MENU_FOTO'] = 'Fotogalerij'; 
$lang['MENU_INFO'] = 'Over ons'; 
$lang['MENU_AGENDA'] = 'Koncerten'; 
$lang['MENU_CONTACT'] = 'Contact'; 
?> 

Раздел заголовка в моем index.php

<header> 
    <div class="sticky-nav"> 
     <a id="mobile-nav" class="menu-nav" href="#menu-nav"></a> 

     <div id="logo"> 
      <a id="goUp" href="#home-slider" title="Entertainment">Home</a> 
     </div> 

     <nav id="menu"> 
      <ul id="menu-nav"> 

       <li><a href="#foto"><?php echo $lang['MENU_FOTO']; ?></a></li> 
       <li><a href="#work"><?php echo $lang['MENU_INFO']; ?></a></li> 
       <li><a href="#about"><?php echo $lang['MENU_AGENDA']; ?></a></li> 
       <li><a href="#contact"><?php echo $lang['MENU_CONTACT']; ?></a></li> 
      </ul> 
     </nav> 

    </div> 
</header> 

И в common.php

<?php 
session_start(); 
header('Cache-control: private'); 

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 = 'nl'; 
} 

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

    case 'ba': 
    $lang_file = 'bosnisch.php'; 
    break; 

include_once .$lang_file; 
?> 

EDIT

теперь я даже пытался включить один из языковых файлов прямо в index.php. Но теперь я очень смущен, потому что это не сработало!

+1

Не знаю, как заставить его работать, но Koncerten с C не является K – Naruto

+0

Являются ли ваши языковые файлы в том же каталоге, что и ваш скрипт? – Konstantin

+0

Вы проверили, заполнено ли '$ _GET'? Как насчет '$ _SESSION'? –

ответ

0
include_once($lang_file); 

это функция не конструкция

+0

К сожалению, вы правы. Я изменил его, но это не имело никакого значения. –

+2

На самом деле это _is_ a конструкция, а не функция, поэтому вам не понадобится(). – luator

+0

@luator работает в обоих направлениях, 'include_once $ file;' или 'include_once ($ file);' это то же самое. Я предпочитаю с() – Refilon

1

Попробуйте закрыть команду переключения.

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

    case 'ba': 
    $lang_file = 'bosnisch.php'; 
    break; 
} // close switch 

include_once $lang_file; 
+0

Пробовал, не успел ... –

+0

Я пытаюсь включить код, и он работает на моем компьютере. Поэтому я думаю, что проблема заключается не в inlude_once. Если у меня есть другая идея, я отправлю новый ответ. – doydoy44

0

Я нашел его. Проблема не заключалась в кодировании php. По какой-то причине настройки моего сервера Apache были перепутаны, и он не читал никаких php, только html. Таким образом, он фактически показал веб-сайт, как будто вы загрузили все это с вашего компьютера, а не с сервера.

В любом случае, спасибо за усилия!

Смежные вопросы