我的网站有以下语言切换算法:
en-EN,ru,lv
的内容,因此Chrome的默认语言似乎总是英文)。 lang
并请求所需的字符串文件(即/assets/includes/en-US/strings.php
); 当然,默认语言检测不是停止的原因 - 我需要手动语言切换器,如链接(LV | EN | RU)。那么,在用户点击所需的语言后,切换语言和覆盖会话变量的可能(也许是最好的)方式是什么?
答案 0 :(得分:2)
最好的方法是最简单的方法:)
$langs = array('LV', 'EN', 'RU');
<?php foreach ($langs as $lang): ?>
<a href="index.php?lang=<?=$lang;?>"> <?=$lang;?> </a>
<?php endforeach; ?>
因此,您可以让用户在此示例中通过GET更改lang。
将会话覆盖到已发送的请求:
<?php
if(in_array($_GET['lang'], $langs) {
$_SESSION['lang'] = $_GET['lang']; // to prevent user to change its session to something you don't want to
}
?>
之后,您只需与此会话进行互动即可显示内容。
如果您使用不同语言编写每个页面,则可以使用重定向: (但我想如何与你已经从自动语言检测中实现的语言进行交互的逻辑,但仍然......让我快速提出一些方法?)
<?php
if (isset($_SESSION['lang']) && $_SESSION['lang'] !== 'EN') {
header("Location: mysite.com/".$_SESSION['lang']."/index.php");
exit;
}
?>
或者,您可以使用翻译方法。
您的所有翻译都位于数据库的名称与$ langs数组相同的列下。
因此,您输出此特定列的内容:
SELECT lang_{$_SESSION['lang']} FROM translations WHERE string = '$string';