【问题标题】:Staying at the current page when switching language in PHP在 PHP 中切换语言时停留在当前页面
【发布时间】:2020-08-27 12:39:01
【问题描述】:

我希望用户可以在不更改当前页面的情况下通过单击语言链接来切换语言。

我找到了一个类似下面的代码。它可以工作但找不到页面,因为页面名称不同。例如:当我在“../en/about.php”页面更改语言时,它会转到“../tr/about.php”页面.应该去的页面是“../tr/hakkimizda.php”。

我该如何解决这个问题?

    <?php
//URL path. eg: index-en/job.php
$path = trim($_SERVER['REQUEST_URI'],'/');

//language from URL. eg: index-en
$lang = explode('/',$path)[0];

//Paths in other languages: eg: 'tr' => 'index-cn/job.php'
$langs = [
    'en'=>preg_replace("/$lang/",'../en',$path,1),
    'tr'=>preg_replace("/$lang/",'../tr',$path,1),
];
?>
<ul class="dropdown-menu">
    <li>
       <a href="<?= $langs['tr']?>">Türkçe</a>
    </li>
    <li>
       <a href="<?= $langs['en']?>">English</a>
    </li>
</ul>

【问题讨论】:

  • 你必须定义about应该重定向到hakkimizda。代码做了它应该做的事情,将en/something更改为tr/something
  • 我该怎么做?我不懂php语言
  • 我查看了链接,但没有帮助。
  • 使用:$_SERVER['PHP_SELF'];

标签: php html


【解决方案1】:

我不懂php语言,但我用javascript解决了这个问题。

解决方案:

<a class="nav-link" href="#" id="LangRedirect">English</a>

JavaScript

$("#LangRedirect").click(function LangRedirect(){
var lang,en,tr;
    lang=window.location.pathname;
    en="/en/";
    tr="/tr/";
switch (lang){
     // About
    case en+"about.php": location.assign(tr+"hakkimizda.php");
    break;
    case tr+"hakkimizda.php": location.assign(en+"about.php");
    break;
    default: window.location.pathname=(en+"404.php");
}});

【讨论】:

    【解决方案2】:

    您可以对每种语言使用全局arrays,并在您应该得到该路径的key 时将current path 搜索到相应的数组中。然后你可以使用另一种语言的数组来搜索这个key的路径,例如,你有:

    $EN = array('about' => 'about.php');
    $TR = array('about' => 'hakkimizda.php');
    

    第一:

    key 中搜索数组'about.php' 中的$EN

    那么:

    使用此key(即about)在$TR 中搜索相应条目。

    我建议,这些数组应该是global

    【讨论】:

    • 感谢您的回答。但我该怎么做呢?我不懂php语言:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多