✨ lang selection (fix #7)
This commit is contained in:
parent
7a491122d1
commit
442da207d2
28
init.php
Normal file
28
init.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
namespace Kimendisch\Thi_Hub;
|
||||
use Flake\Lang;
|
||||
use Flake\Lang_Dict;
|
||||
|
||||
// DATA CLASS FOR STORING GLOBAL DATA //
|
||||
class Data {
|
||||
/**
|
||||
* @var string $lang Lang code for current client.
|
||||
*/
|
||||
public static string $lang;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @var Lang $lang_object Lang object for current client.
|
||||
*/
|
||||
public static Lang $lang_object;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @var Lang_Dict $dict Dict object for current client.
|
||||
*/
|
||||
public static Lang_Dict $dict;
|
||||
}
|
||||
?>
|
8
meta.php
8
meta.php
@ -5,7 +5,10 @@
|
||||
|
||||
// DEPENDENCIES //
|
||||
// used extensions
|
||||
static::$ext[] = "excuse";
|
||||
static::$ext[] = "project";
|
||||
static::$ext[] = "lang";
|
||||
static::$ext[] = "request";
|
||||
static::$ext[] = "url";
|
||||
|
||||
|
||||
// ROUTES //
|
||||
@ -16,6 +19,7 @@
|
||||
|
||||
// pages
|
||||
static::$route["thi-hub.de"] = [
|
||||
["path" => "", "target" => "page/start"]
|
||||
["path" => "", "target" => "page/start"],
|
||||
["path" => ":lang", "target" => "page/start"],
|
||||
];
|
||||
?>
|
||||
|
41
page/lang_autoselect.php
Normal file
41
page/lang_autoselect.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?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_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");
|
||||
?>
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
namespace Kimendisch\Thi_Hub;
|
||||
use Flake\Excuse;
|
||||
|
||||
Excuse::show("service_unavailable");
|
||||
// AUTOSELECT LANGUAGE //
|
||||
require("./page/lang_autoselect.php");
|
||||
?>
|
||||
|
8
page/strings.php
Normal file
8
page/strings.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
declare(strict_types = 1);
|
||||
namespace Kimendisch\Thi_Hub;
|
||||
|
||||
$dict->define([
|
||||
|
||||
]);
|
||||
?>
|
Loading…
Reference in New Issue
Block a user