php - 如何在多语言网站上缓存用户的首选语言?
问题描述
大家好!我目前正在为我的个人网站实现多语言。到目前为止,我已经创建了两个 php 文件,其中包含用于德语和英语翻译的数组,然后使用require_once("")
-method 在我的网站上根据所选语言加载它们。在用户更改语言以使用正确的翻译重新加载内容后,我需要重新加载网站。但是在重新加载页面后,选择当然会被重置。我现在的问题是:如何缓存所选语言?
解决方案
您可以使用会话(或常规 cookie)并存储您的语言代码(或您在选择期间使用的任何标识符)。
$_SESSION['loc'] = 'en-us';
然后您可以检查该会话变量。
if(isset($_SESSION['loc']) && $_SESSION['loc'] === 'en-us'){
//English
} else {
//Other language, or language not selected
}
您可能也想获取基于浏览器的语言,您可以像这样缓存它:
$lang = strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
$accepting = ['en', 'ge'];
$code = in_array($lang, $accepting) ? $lang : 'en';
$_SESSION['localization'] = $code; //Or a regular cookie
推荐阅读
- javascript - 根据文件名激活引导导航栏项目?
- python - 查找另一行是否存在列元素的组合
- ruby-on-rails-5 - 覆盖 Rails 生成器以将 date_select 更改为 date_field
- javascript - 跟踪嵌入 html 元素的 URL 更改
- angular - ContactListComponent.html:1 ERROR 错误:未找到 ContactComponent 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?
- javascript - 如何创建具有水平和垂直滚动条的固定列的基于 div 的表?
- javascript - 是否可以在不使用事件的情况下检查 CSS 转换是否完成?
- nservicebus - Nsb:每个处理程序后的自定义行为
- azure - 仅允许公共访问 Azure 应用程序的 1 个端点
- forms - 序言规则将单词的单数形式更改为复数形式