我想为自己的语言制作文件夹。
作为示例,我有文件foo.php
。该文件还有英文版和荷兰版。
/english/foo.php
和/dutch/foo.php
目录中的两个文件与根文件夹中的文件完全相同。
在根文件夹root/foo.php
中我加载了一个变量$var
,该变量来自另一个名为root/scripts/bar.php
的文件和目录
root/scripts/bar.php
中的我确实使用了标题函数:
if ($pref_language == 'zu'){
$header = 'english'.$_SERVER['PHP_SELF'];
$var = "xyz";
}
header ("location: $header");
问题是,当我打开root/foo.php
时,标题函数应该正常工作,但$var
不会在该标题方向上初始化。当我打开源代码时,
<?php echo $var;?>
但是在查看没有标题的源代码时,将加载变量。
所以这对我来说有点奇怪。如果有人可以帮助我,我真的很感激。
非常感谢。
答案 0 :(得分:0)
使用header("location: $header");
将浏览器重定向到$header
,这不是您想要的。
您可以include($header);
(记录here或更多可能require
记录here),然后允许$header
中的文件使用定义的变量。
答案 1 :(得分:0)
您最好的方法是利用网络服务器中的重写规则将某些语言的URL请求定向到php文件可以使用的参数。 Apache中的一个示例可能如下所示:
RewriteEngine On
RewriteRule ^/?(english|dutch)/(.*)$ /$2?lang=$1 [L,QSA]
例如,会将/english/foo.php
的请求传递给/foo.php?lang=english
进行处理。
然后,您可以查看$_GET['lang']
以确定要使用的本地化。
这消除了进行任何浏览器重定向的需要,并为您提供了一种很好的方法,可以将$_GET['lang']
值动态地添加到您网站中的所有链接,以便为最终用户提供他们完全在英语内的外观网站(/english/*
)或荷兰网站(/dutch/*
)。