[英]Storing translation array in cookie
我将翻译文本保存在 PHP 个文件中,如下所示:
en.php:
$translation = [
"home" => [
"title" => "Home",
],
"contact" => [
"title" => "Contact",
],
];
return json_encode($translation);
我想将这个数组保存在 cookie 中,以便在整个网站上使用它,而不是在用户每次访问页面时都包含它。
所以在 header.php 中:
if(!isset($_COOKIE['translation']) && !isset($_GET['lang'])){
$translation = require_once('en.php');
setcookie('translation', $translation, time()+86400, '/');
$_COOKIE['translation'] = $translation;
}elseif(isset($_GET['lang'])){
$translation = require_once($_GET['lang'] . '.php');
setcookie('translation', $translation, time()+86400, '/');
$_COOKIE['translation'] = $translation;
}
$decode = json_decode($_COOKIE['translation']);
echo $decode->home->title;
但是我收到错误This site can't be reached ERR_INVALID_RESPONSE
尝试以下操作:
删除return json_encode($translation);
在 en.php
然后在 header.php 中:
if (! isset($_COOKIE['translation']) && ! isset($_GET['lang'])) {
require_once('en.php');
$jsonEncodedTranslation = json_encode($translation);
setcookie('translation', $jsonEncodedTranslation, time() + 86400, '/');
$_COOKIE['translation'] = $jsonEncodedTranslation;
} elseif(isset($_GET['lang'])) {
require_once($_GET['lang'].'.php'); // this looks evil btw
$jsonEncodedTranslation = json_encode($translation);
setcookie('translation', $jsonEncodedTranslation, time() + 86400, '/');
$_COOKIE['translation'] = $jsonEncodedTranslation;
}
$decode = json_decode($_COOKIE['translation']);
echo $decode->home->title;
附带一提,这看起来是一个糟糕的实现。 大多数网站都会在每个页面上包含一个翻译文件,这完全没问题,因为这可能是最快的解决方案。 另一方面,您在每个页面上进行编码/解码,并强制客户端在每个请求中发送大量 http 标头 (Cookie)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.