2

如果用户更改网站的语言,我正在尝试使用 javascript 更改 php 文件的包含路径。

我正在使用此代码来检查网站的语言是否为英语。

<script type="text/javascript">
        $(function() {
            var pathname = window.location.pathname;
            if (pathname.search('/en/') != -1){
                //I wanna insert the new path here
            }
        });
    </script>

然后我想改变包含功能

<?php include 'navigation.php'; ?>

<?php include 'navigation_en.php'; ?>

有谁知道如何使这项工作?还是我必须用 php 检查路径名才能更改 php 包含函数?

4

3 回答 3

3

您不能使用纯 javascript 执行此操作,因为 javascript 是在php 处理完成后执行的。你可以用纯 PHP 做同样的事情:

$uri = $_SERVER['REQUEST_URI'];
if(preg_match('/^\/en\//', $uri)) {
    include_once('include_en.php');
}
else {
    include_once('include.php');
}

此代码假定您的 URL 将采用以下形式http://www.mydomain.com/en/some/page.php

编辑:

由于此代码在 wordpress 中运行,$_SERVER['REQUEST_URI] 不会返回语言部分。感谢 OP,在 wordpress 中执行此操作的方法是:

$lang = get_bloginfo('language');
if(preg_match('/^\/en-/', $lang)) {
    include_once('include_en.php');
}
else {
    include_once('include.php');
}
于 2012-06-26T09:21:27.747 回答
1

您不能仅使用 JavaScript 来更改 PHP 中的变量。但你可以做一件事。<select>当标签的值发生变化时,您可以通过向服务器发出请求来使用 AJAX 查询。

$("select.language").change(function(){
    $.ajax({
        url: 'changeLang.php?lang=' + $(this).val(),
        success: function(data) {
            alert("Successfully set the language to " + data);
        }
    });
});

在后端 PHP 代码中,您可以这样做:

if(isset($_GET["lang"]))
    // Set the lang.
    die("English");
于 2012-06-26T09:20:45.793 回答
0

我相当肯定这是不可能的,因为 PHP 在发送到客户端之前会生成标记。另一种解决方案是使用 JavaScript 重新加载页面,并在 URL 中包含某种参数,然后告诉 PHP 要使用哪个包含标签。

于 2012-06-26T09:20:07.167 回答