thi-hub.de/page/lang_autoselect.php
2024-02-25 19:13:50 +01:00

56 lines
1.4 KiB
PHP

<?php
declare(strict_types = 1);
namespace Kimendisch\Thi_Hub;
use Flake\Project;
use Flake\Lang;
use Flake\Lang_Dict;
use Flake\Request;
use Flake\Url;
use Flake\Url_redirect;
// MAYBE REDIRECT //
// get selected language
$param_lang = Project::param("lang");
// validate
if(!in_array($param_lang, ["de", "en"])){
// try to find best language
unset($_GET["lang"]);
if(isset($_COOKIE[Lang::COOKIE_NAME])) unset($_COOKIE[Lang::COOKIE_NAME]);
$lang = new Lang(list: ["de", "en"], default: "de");
// redirect
$path_raw = Request::path_raw();
if($param_lang !== null) $path_raw = array_splice($path_raw, 1);
array_unshift($path_raw, $lang->get());
$path_raw_full = implode("/", $path_raw);
Url_redirect::path_modify($path_raw_full);
}
// LANGUAGE MANAGER //
// hack: fake get param from url path
$_GET["lang"] = $param_lang;
// initialize
Data::$lang_object = new Lang(list: ["de", "en"], default: "de");
Data::$lang = Data::$lang_object->get();
// load dict
Data::$dict = new Lang_Dict(Data::$lang_object);
require("./page/strings.php");
// BUILD ALTERNATE LANGUAGE URLS //
// get content path
$content_path_raw = Request::path_raw();
$content_path_raw = array_splice($content_path_raw, 1);
// prepend lang codes
foreach(["de", "en"] as $one_lang_code){
$path_raw = $content_path_raw;
array_unshift($path_raw, $one_lang_code);
Data::$alternate[$one_lang_code] = Url::path_modify(implode("/", $path_raw));
}
?>