0

我想为自己的语言制作文件夹。

作为一个例子,我有文件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;?>

但是当查看源代码而不带标题时,将加载变量。

所以这对我来说有点奇怪。如果有人可以帮助我,我真的很感激。

多谢。

4

2 回答 2

0

使用header("location: $header");将浏览器重定向到$header,这不是您想要的。

您可以include($header);在此处记录或更可能在此处require记录)然后允许文件使用定义的变量。$header

看起来您真正想做的是国际化,并且在 PHP 中有很好的工具可以做到这一点,例如 Twig(这里)或 Smarty(这里

于 2012-12-12T23:58:11.173 回答
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/*)。

于 2012-12-13T00:05:31.297 回答