我在index.php中有这个:
<?php include_once 'file.php' ?>
然后我有<html> some content </html>
我在file.php中有这个:
<?php
session_start();
header('Cache-control: private');
if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];
$_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 'de':
$lang_file = 'lang.de.php';
break;
case 'es':
$lang_file = 'lang.es.php';
break;
default:
$lang_file = 'lang.en.php';
}
include_once 'languages/'.$lang_file;
?>
我有3个文件,我的意思是lang.en.php等等......
它不起作用,我的页面是空的,没有文字,为什么?怎么了?
lang.en.php包含
<?php
$h1 ="HOME";
$h2 ="ABOUT US";
$h3 ="CONTACT";
$h4 ="FAQ";
$txt1 = "Here goes txt,Here goes txt,Here goes txt,Here goes txt,
Here goes txt,Here goes txt,Here goes txt,Here goes txt,
Here goes txt, Here goes txt,Here goes txt,Here goes txt.";
?>
我不知道这有什么问题......我应该改变什么? 有人能帮我吗。感谢。
答案 0 :(得分:1)
除了某些HTML之外,您不会打印任何内容。要查看lang.en.php文件中字符串的内容,您需要使用echo
语言结构输出它们。
<?php
echo $txt1;
?>
会输出:
Here goes txt,Here goes txt,Here goes txt,Here goes txt, Here goes txt,Here goes txt,Here goes txt,Here goes txt, Here goes txt, Here goes txt,Here goes txt,Here goes txt.
答案 1 :(得分:0)
当您使用正确的代码结构时,这些问题实际上永远不会发生:缩进控制结构,避难所控制器(逻辑)和视图(演示)。你在一个文件中混合了很多东西,这使你和其他人很难阅读和理解代码。请尝试编写可读性/可维护性的代码,即使您使用的是php。
答案 2 :(得分:0)
我测试了你的代码(它来自Bitrepository tutprial吧:)
好的,file.php
应该在你的function.php
中,如果有的话。{/ p>
我假设您有index.php
,它会从您的语言文件中回显这些变量,如:
echo $h1;
echo $h2;
echo $h3;
echo $txt1;
要更改语言,请参阅案例中指定的file.php
。如果你想要英语:
index.php?lang=en
index.php?lang=de
index.php?lang=es
等等。
轻松右\(^_^)/
检查bitrepository以获取更详细的教程。我还建议您使用define()
作为语言文件。
离。
define('TITLE', 'This is the title')
回应:
echo TITLE;
答案 3 :(得分:0)
您必须在lang.en.php,lang.ru.php ...
中定义数组lang.en.php
$lang = array();
$lang["PAGE_TITLE"] = "Some title";
$lang["MENU_HOME"] = "Home";
$lang["HOME_CONTENT"] = "Some content";
lang.ru.php
$lang = array();
$lang["PAGE_TITLE"] = "Russian title";
$lang["MENU_HOME"] = "Russian home";
$lang["HOME_CONTENT"] = "Russian content"; ...
然后,将其输出到您的页面中。
<?php echo $lang["PAGE_HOME"]; ?>
<?php echo $lang["MENU_HOME"]; ?>
<?php echo $lang["HOME_CONTENT"]; ?>
答案 4 :(得分:-1)
session_start()
需要位于文档的顶部。
会话必须在将某些内容发送到浏览器之前启动。