切换语言时保持在当前页面的HTML代码


HTML code to stay at the current page when switching language

我正在写这个网站,它在窗口顶部有一个导航栏,上面有一个切换列表,你可以选择你使用的语言来浏览这个网站。

我设法编写了语言切换按钮的代码,下面是代码:

<li class="dropdown ' . (in_array($currentFile,$servicesArr)?'active':'') . '">
<a class="dropdown-toggle">
    <img src="assets/images/flags/cn.png" width="16" height="11" alt="CN 語言" /> [CN] 简体中文<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu">
     <li><a href="index.php">
          <img src="assets/images/flags/hk.png" width="16" height="11" alt="CN 語言" /> [HK] 繁體中文</a>
     </li>
     <li><a href="#">
         <img src="assets/images/flags/us.png" width="16" height="11" alt="EN Language" /> [US] English</a>
     </li>
 </ul>
</li>

那么,我的问题是:根据我的代码,每次我改变一种语言,链接将采取到该语言的索引页,但如果我不是在我的当前语言的索引页?比如说,如果我正在查看英文的index-en/job.php,现在我想切换到中文,而不是在点击切换按钮后切换到index-cn,我想切换到index-cn/job.php。我该怎么做呢?

提前感谢!

您使用了php标记,所以我猜这是一个PHP文件。您可以使用PHP动态地用其他语言的相应页面填充href属性。

  1. 获取当前URL和语言
  2. 计算其他语言的匹配url。
  3. 在链接的href属性中插入匹配的url。
代码:

<?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: 'cn' => 'index-cn/job.php'
$langs = [
    'en'=>preg_replace("/$lang/",'index-en',$path,1),
    'cn'=>preg_replace("/$lang/",'index-cn',$path,1),
    ...
];
?>
<ul class="dropdown-menu">
    <li><a href="<?= $langs['cn']?>">
            <img src="assets/images/flags/hk.png" width="16" 
                      height="11" alt="CN 語言" /> [HK] 繁體中文</a>
    </li>
    <li><a href="<?= $langs['en']?>">
            <img src="assets/images/flags/us.png" width="16" 
                      height="11" alt="EN Language" /> [US] English</a>
    </li>
</ul>