我想在不显示网址的情况下更改语言: http://myweb.com/?lan=AL 要么 http://myweb.com/about-us?lan=AL
如何在后台完成,而不是在url中显示。 这是下面的代码。
require('_inc_lang/lan_en.php');
require('_inc_lang/lan_al.php');
require('_inc_lang/lan_de.php');
if(!isset($_SESSION['lan'])){
session_start();
}
if(isset($_GET['lan'])){
$_SESSION['lan'] = $_GET['lan'];
}
$lan = isset($_SESSION['lan']) ? $_SESSION['lan'] : 'al';
switch ($lan) {
case 'al':
$TEXT = $TEXT_AL;
break;
case 'de':
$TEXT = $TEXT_DE;
break;
case 'en':
$TEXT = $TEXT_EN;
break;
}
答案 0 :(得分:2)
您可以根据浏览器语言
进行操作<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
case "de":
$TEXT = $TEXT_DE;
break;
case "en":
$TEXT = $TEXT_EN;
break;
case "al":
$TEXT = $TEXT_AL;
break;
default:
$TEXT = $TEXT_EN;
}
?>
答案 1 :(得分:1)
从GET更改为POST。
<form method="post">
..button/select/whatever have you
</form>
if(isset($_POST) && /* sanitise */)
$_SESSION['lan'] = $_POST['lan'];
代码需要整理,但你可以自己做:)这是你在寻找什么?
编辑: 绝对完全必须使用链接,否则你会爆炸?以下SO页面将神奇地向您展示如何!
答案 2 :(得分:1)
您已经将语言选择复制到会话中,因此如果在网址中找到它,则只需位置:到没有网址的版本:
if(isset($_GET['lan'])){
$_SESSION['lan'] = $_GET['lan'];
header("Location: ".$_SERVER['SCRIPT_URI']);
}
编辑:请注意我添加了变量$_SERVER['SCRIPT_URI']
而不是硬编码位置;现在它无论在何处被调用都会工作(SCRIPT_URI
将为您提供没有查询字符串的服务器/页面)