【问题标题】:staying on the current page when changing language更改语言时停留在当前页面
【发布时间】:2019-08-18 10:56:51
【问题描述】:

我正在为我的网站设置一个语言切换器,但实际的切换器有问题,它总是带回主页 (index.php)。 :-s 很烦人

我是一个完整的 php 新手,并且一直在 youtube 上关注本教程:https://www.youtube.com/watch?v=cgvDMUrQ3vA

我正在尝试在多页网站上实现它。实际的语言交换就像一个魅力,似乎在整个页面中保留了设置的语言,但切换机制并没有,因为它使用静态链接来加载 index.php + 新语言属性,将访问者不可避免地带回主页而不是重新加载当前页面。

<?php echo $lang['lang-selector-href']  /* set the <a> tag src="index+lang='x'" */ ?>
<?php echo $lang['lang-selector-switch'] /* display language to be set */  ?>
</a> 

我正在使用 2 个类似的文件(en.php 和 fr.php),其中包含一个数组来存储翻译后的内容

zh.php:

<?php
$lang = array(
   "lang-selector-href" => "<a href='index.php?lang=fr'>",
   "lang-selector-switch" => "Français (French)",
...
...

);
?>

fr.php:

<?php
$lang = array(
  "lang-selector-href" => "<a href='index.php?lang=en'>",
  "lang-selector-switch" => "English (anglais)",
...
...

);
?>

问题: 我怎样才能将链接更改为:

<a href='current-page.php?lang=fr'> Français (French) </a>

或:

<a href='current-page.php?lang=en'> English </a>

根据设置的语言?

这是我的 config.php 文件

<?php
session_start();

// if no language selected go for english
if (!isset($_SESSION['lang']))
    $_SESSION['lang'] = "en";


else if (isset($_GET['lang']) && $_SESSION['lang'] != $_GET['lang'] && !empty($_GET['lang'])) {
    if ($_GET['lang'] == "en")
        $_SESSION['lang'] = "en";
    else if ($_GET['lang'] == "fr")
        $_SESSION['lang'] = "fr";
}

// load content
require_once "content/languages/" . $_SESSION['lang'] . ".php";

?>

对不起,如果这听起来很基本,我敢肯定它是但找不到一个简单的答案可以工作...... 谢谢!

【问题讨论】:

  • 您可以从那些链接中删除 index.php,留下 "&lt;a href='?lang=fr'&gt;" 等(注意:这也会删除此 URL 的任何其他 GET 参数)
  • 也许可以试试 js 解决方案? stackoverflow.com/questions/53021813/…
  • @kerbholz 它确实有效!虽然我没有为此 URL 使用任何其他 GET 参数,但这里的凹痕似乎是一个问题。太简单!谢谢你
  • 没问题,很高兴它有效

标签: php


【解决方案1】:

在 html 中制作下拉列表,其中选项的语言值如下所示,

    <select onchange="callSomeFunc()">
       <option value="fr">French</option>
       <option value="en">English</option>
    </select>

在更改下拉列表时,您需要调用将所选语言值设置为 php $_SESSION. 的函数

【讨论】:

  • 如果没有callSomeFunc() 的代码,这并不能解决或帮助解决 OP 问题。
猜你喜欢
  • 1970-01-01
  • 2020-08-27
  • 2016-12-12
  • 2011-07-17
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
相关资源
最近更新 更多