✨ 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 //
|
// DEPENDENCIES //
|
||||||
// used extensions
|
// used extensions
|
||||||
static::$ext[] = "excuse";
|
static::$ext[] = "project";
|
||||||
|
static::$ext[] = "lang";
|
||||||
|
static::$ext[] = "request";
|
||||||
|
static::$ext[] = "url";
|
||||||
|
|
||||||
|
|
||||||
// ROUTES //
|
// ROUTES //
|
||||||
@ -16,6 +19,7 @@
|
|||||||
|
|
||||||
// pages
|
// pages
|
||||||
static::$route["thi-hub.de"] = [
|
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
|
<?php
|
||||||
declare(strict_types = 1);
|
declare(strict_types = 1);
|
||||||
namespace Kimendisch\Thi_Hub;
|
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