繁体   English   中英

在 cookie 中存储翻译数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM