mirror of https://github.com/byecorps/id.git
I really dont like this but I will fix it later
This commit is contained in:
parent
ea29820334
commit
f61c97744c
17
api.php
17
api.php
|
@ -8,6 +8,23 @@ $routes = [
|
||||||
exit();
|
exit();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'i11n' => function () {
|
||||||
|
global $path;
|
||||||
|
return match ($path[2]) {
|
||||||
|
'languages' => [
|
||||||
|
"response" => [
|
||||||
|
'success' => true,
|
||||||
|
'status_code' => 200
|
||||||
|
],
|
||||||
|
'body' => [
|
||||||
|
'current' => $_SESSION['lang'],
|
||||||
|
'languages' => LANGAUGES
|
||||||
|
]
|
||||||
|
],
|
||||||
|
default => 404,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
'status' => function () {
|
'status' => function () {
|
||||||
http_response_code(200);
|
http_response_code(200);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,33 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
const LANGAUGES = [
|
||||||
|
[
|
||||||
|
"code" => 'en',
|
||||||
|
"name" => "English (Traditional)",
|
||||||
|
"flag" => "uk"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'code' => 'en_US',
|
||||||
|
"name" => 'English (Simplified)',
|
||||||
|
'flag' => 'usa'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'code' => 'en_UWU',
|
||||||
|
'name' => 'Cute English',
|
||||||
|
'flag' => 'owo'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'code' => 'ga',
|
||||||
|
'name' => 'Irish',
|
||||||
|
'flag' => 'ie'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'code' => 'nb_NO',
|
||||||
|
'name' => 'Norwegian Bokmål',
|
||||||
|
'flag' => 'no'
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
function get_string($key="generic.generic", $substitutes=[]) {
|
function get_string($key="generic.generic", $substitutes=[]) {
|
||||||
global $LANG;
|
global $LANG;
|
||||||
|
|
||||||
|
@ -27,6 +55,27 @@ function get_string($key="generic.generic", $substitutes=[]) {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_language_code_based_on_browser_locale(): string
|
||||||
|
{
|
||||||
|
$locale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
||||||
|
|
||||||
|
$locales = [ // Converts locale to its respective language.
|
||||||
|
'en_GB' => 'en',
|
||||||
|
'en_IE' => 'en',
|
||||||
|
'en' => 'en',
|
||||||
|
];
|
||||||
|
|
||||||
|
if (array_key_exists($locale, $locales)) {
|
||||||
|
return $locales[$locale];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (str_starts_with("en", $locale)) {
|
||||||
|
return "en";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $locale;
|
||||||
|
}
|
||||||
|
|
||||||
function patch_lang($lang="en"): void
|
function patch_lang($lang="en"): void
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
40
index.php
40
index.php
|
@ -25,11 +25,19 @@ require_once 'common/strings.php';
|
||||||
require_once 'common/account_utils.php';
|
require_once 'common/account_utils.php';
|
||||||
require_once 'common/database.php';
|
require_once 'common/database.php';
|
||||||
|
|
||||||
|
|
||||||
// Starts the session
|
// Starts the session
|
||||||
// TODO: write this to use the database to work across more than one server (e.g. don't use PHP sessions)
|
// TODO: write this to use the database to work across more than one server (e.g. don't use PHP sessions)
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
|
if (empty($_SESSION)) {
|
||||||
|
$_SESSION['auth'] = false;
|
||||||
|
$_SESSION['id'] = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($_SESSION['lang'])) {
|
||||||
|
$_SESSION['lang'] = get_language_code_based_on_browser_locale();
|
||||||
|
}
|
||||||
|
|
||||||
$user = null;
|
$user = null;
|
||||||
|
|
||||||
if ($_SESSION['auth']) {
|
if ($_SESSION['auth']) {
|
||||||
|
@ -61,6 +69,14 @@ if (str_ends_with($path_raw, '/') && $path_raw != '/') {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If there's a 'lang' query param, change the language!
|
||||||
|
if (array_key_exists('lang', $query)) {
|
||||||
|
$_SESSION['lang'] = $query['lang'];
|
||||||
|
}
|
||||||
|
|
||||||
|
patch_lang($_SESSION['lang']);
|
||||||
|
|
||||||
|
|
||||||
$routes = [
|
$routes = [
|
||||||
'' => function () { require 'views/home.php'; },
|
'' => function () { require 'views/home.php'; },
|
||||||
'api' => function () {
|
'api' => function () {
|
||||||
|
@ -85,6 +101,17 @@ $routes = [
|
||||||
}
|
}
|
||||||
exit();
|
exit();
|
||||||
},
|
},
|
||||||
|
'dashboard' => function () {
|
||||||
|
global $user;
|
||||||
|
requires_auth();
|
||||||
|
|
||||||
|
if (isset($path[2])) {
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
|
||||||
|
require 'views/dashboard.php';
|
||||||
|
return 200;
|
||||||
|
},
|
||||||
'profile' => function () {
|
'profile' => function () {
|
||||||
global $path, $user, $profile_owner; // don't forget this lol
|
global $path, $user, $profile_owner; // don't forget this lol
|
||||||
|
|
||||||
|
@ -101,15 +128,8 @@ $routes = [
|
||||||
require 'views/profile.php';
|
require 'views/profile.php';
|
||||||
return 200;
|
return 200;
|
||||||
},
|
},
|
||||||
'dashboard' => function () {
|
'settings' => function () {
|
||||||
requires_auth();
|
require 'views/settings.php';
|
||||||
|
|
||||||
if (isset($path[2])) {
|
|
||||||
return 404;
|
|
||||||
}
|
|
||||||
|
|
||||||
require 'views/dashboard.php';
|
|
||||||
return 200;
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
const select = document.createElement('select');
|
||||||
|
const script = document.scripts[document.scripts.length - 1];
|
||||||
|
|
||||||
|
const langs_req = fetch('/api/i11n/languages')
|
||||||
|
.then(async data => {
|
||||||
|
return await data.json();
|
||||||
|
})
|
||||||
|
.then(async json => {
|
||||||
|
console.log(json)
|
||||||
|
for (const lang of json.body.languages) {
|
||||||
|
console.log(lang)
|
||||||
|
let new_opt = document.createElement('option');
|
||||||
|
new_opt.value = lang.code;
|
||||||
|
new_opt.innerText = lang.name;
|
||||||
|
select.appendChild(new_opt);
|
||||||
|
}
|
||||||
|
|
||||||
|
select.value = json.body.current;
|
||||||
|
|
||||||
|
script.parentElement.insertBefore(select, script);
|
||||||
|
})
|
||||||
|
|
||||||
|
let separator = (window.location.href.indexOf("?")===-1)?"?":"&";
|
||||||
|
|
||||||
|
select.onchange = function () {
|
||||||
|
window.location.href = window.location.href + separator + `lang=${select.value}`;
|
||||||
|
}
|
2
strings
2
strings
|
@ -1 +1 @@
|
||||||
Subproject commit 919271adb8e055d09f08898b812f9e641f693543
|
Subproject commit d9131afc20afc0bb4205990bb34f8c455ae81f8d
|
Loading…
Reference in New Issue