如何切换页面的语言并保持在页面的滚动位置?


How can I switch the language of my page and stay at the scrolled position of the page?

我想切换页面语言。

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX
if(isSet($_GET['lang'])) {
    $lang = $_GET['lang'];
    // register the session and set the cookie
    $_SESSION['lang'] = $lang;
    setcookie("lang", $lang, time() + (3600 * 24 * 30));
} else if(isSet($_SESSION['lang'])) {
    $lang = $_SESSION['lang'];
} else if(isSet($_COOKIE['lang'])) {
    $lang = $_COOKIE['lang'];
} else {
    $lang = 'en';
}
switch ($lang) {
    case 'en':
        $lang_file = 'lang.en.php';
        break;
    case 'de':
        $lang_file = 'lang.de.php';
        break;
    default:
        $lang_file = 'lang.de.php';
}
include_once 'languages/' . $lang_file;
?>

如果我点击例如"English"…

  <a href="index.php?lang=en">English</a>
  <a href="index.php?lang=de">German</a>

…我的英文页面是这样加载的:

www.mypage.php?lang=en

我的问题是:当我向下滚动页面,然后点击另一种语言,页面加载在顶部的位置。但我希望页面保持在滚动位置。(实际上,当我只是刷新页面,然后我的页面保持在滚动位置)

您可以使用像这样的唯一id在span中使用英语和德语

<a href="index.php?lang=en#unique_id_for_english"><span id="unique_id_for_english">English<span></a>
<a href="index.php?lang=de#unique_id_for_german"><span id="unique_id_for_german">German<span></a>

你必须使用

 event.preventDefault();

在你的a标签上,这样它将停止默认的重新加载,导致页面刷新到顶部。

例如

$('a').click(function () {
     event.preventDefault();
});