Started massive refactoring, Removed halfmoon, Added new personnal common CSS, Site now runs at >5 fps on low-end

Update .gitignore, .htaccess, and 264 more files...
This commit is contained in:
2023-05-23 17:53:42 +02:00
parent e29987a7af
commit 8213ac8869
212 changed files with 2134 additions and 40548 deletions

8
commons/DOM/body-1.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
// Making sure the file is included and not accessed directly.
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
?>
<table class="container-root"><tr><td>

8
commons/DOM/body-2.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
// Making sure the file is included and not accessed directly.
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
?>
</td><td class="w-full h-full"><table class="w-full h-full"><tr><td>

8
commons/DOM/body-3.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
// Making sure the file is included and not accessed directly.
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
?>
</td></tr><tr class="h-full"><td class="h-full"><div class="fluid-container">

8
commons/DOM/body-4.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
// Making sure the file is included and not accessed directly.
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
?>
</div></td></tr></table></td></tr><tr><td colspan="2">

View File

@@ -1,8 +1,8 @@
<?php
// Making sure the file is included and not accessed directly.
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
header('HTTP/1.1 403 Forbidden');
die();
}
?>
<div id="body-overlay"></div>
</td></tr></table>

23
commons/DOM/footer.php Normal file
View File

@@ -0,0 +1,23 @@
<?php
// Making sure the file is included and not accessed directly.
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
include_once 'commons/langs.php';
?>
<footer class="d-flex flex-align-center w-full p-s py-xs">
<button id="sidebar-toggle-footer" class="p-xs border r-s t-size-10">
<i class="fa fa-bars px-xxs" aria-hidden="true"></i>
</button>
<p class="flex-fill t-center t-size-10 t-w-500 t-muted">
<a class="bland-link t-muted" href="<?php print(l10n_url_abs('/privacy/')); ?>">
<?php print(localize('footer.text.privacy')); ?>
</a>
</p>
<a href="<?php print(l10n_url_abs('/')); ?>">
<img id="logo-footer" src="/resources/NibblePoker/images/logos/v2_full_unshaded_original.svg"
alt="<?php echo(localize("footer.alt.logo")); ?>" draggable="false">
</a>
</footer>

33
commons/DOM/head.php Normal file
View File

@@ -0,0 +1,33 @@
<?php
// Making sure the file is included and not accessed directly.
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
?>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
<meta name="viewport" content="width=device-width" />
<!--<meta content="cache, store" http-equiv="Cache-Control">
<meta content="cache, store" http-equiv="Pragma">
<meta content="3600" http-equiv="Expires">-->
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="alternate icon" href="/favicon.ico">
<link rel="stylesheet" href="/resources/FontAwesomePro/5.15.3/css/all.min.css">
<link rel="stylesheet" href="/resources/NibblePoker/css/nibblepoker.min.css">
<?php
if($enable_waffle_iron) {
// Turns out you can't change an SVG's path fill if it's inside an IMG tag...
//echo("<link rel=\"stylesheet\" href=\"/resources/NibblePoker/css/waffle-day.min.css\">");
}
if($enable_code_highlight) {
echo('<link href="/resources/HighlightJS/11.6.0/styles/atom-one-dark.min.css" rel="stylesheet" />');
}
if($enable_glider) {
echo('<link href="/resources/GliderJs/1.7.6/glider.min.css" rel="stylesheet" />');
}
?>

18
commons/DOM/scripts.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
// Making sure the file is included and not accessed directly.
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
?>
<script src="/resources/NibblePoker/js/nibblepoker.min.js"></script>
<?php
if($enable_glider) {
echo('<script src="/resources/GliderJs/1.7.6/glider.min.js"></script>');
}
if($enable_code_highlight) {
echo('<script src="/resources/HighlightJS/11.6.0/highlight.min.js"></script>');
echo('<script src="/resources/HighlightJS/11.6.0/languages/csharp.min.js"></script>');
//echo('<script src="/resources/Azias/js/code-highlighter.js"></script>');
}
?>

59
commons/DOM/sidebar.php Normal file
View File

@@ -0,0 +1,59 @@
<?php
// Making sure the file is included and not accessed directly.
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
include_once 'commons/langs.php';
if(!isset($SIDEBAR_ID)) {
$SIDEBAR_ID = 'default';
}
function printSidebarEntry($url, $title, $icon) {
echo('<a class="bland-link" href="' . $url . '"><p class="t-size-18 t-w-500 py-xs sidebar-entry">');
echo('<i class="' . $icon . ' pr-xs t-size-12"></i><span class="t-size-12">' . $title . '</span></p></a>');
}
?>
<nav id="sidebar" class="sidebar p-m pt-l">
<!-- TODO: Active link, and set it from content for projects -->
<a href="<?php print(l10n_url_abs('/')); ?>" class="no-select">
<img id="logo-sidebar" src="/resources/NibblePoker/images/logos/v2_full_unshaded_original.svg"
alt="<?php echo(localize("sidebar.alt.logo")); ?>" draggable="false">
</a>
<p class="quantum t-logo-text mb-s mt-xs t-muted ucase">
N<span class="t-super-muted">ibble</span>P<span class="t-super-muted">oker</span>
</p>
<hr class="subtle">
<?php
printSidebarEntry(l10n_url_abs('/'), localize("sidebar.text.home"), "fad fa-home");
?>
<hr class="subtle">
<?php
printSidebarEntry(l10n_url_abs('/content/'), localize("sidebar.text.projects"), "fad fa-briefcase");
?>
<div class="ml-m">
<?php
printSidebarEntry(l10n_url_abs('/content/?tags=application'), localize("sidebar.text.applications"),"fad fa-browser");
printSidebarEntry(l10n_url_abs('/content/?tags=library'), localize("sidebar.text.libraries"), "fad fa-puzzle-piece");
printSidebarEntry(l10n_url_abs('/content/?tags=electronic'), localize("sidebar.text.electronics"), "fad fa-microchip");
?>
</div>
<hr class="subtle">
<?php
printSidebarEntry(l10n_url_abs('/links/'), localize("sidebar.text.links"), "fad fa-link");
?>
<div class="ml-m">
<?php
printSidebarEntry("https://files.nibblepoker.lu/", localize("sidebar.text.downloads"),"fad fa-download");
printSidebarEntry("https://git.nibblepoker.lu/", localize("sidebar.text.gitea"), "fad fa-code");
?>
</div>
<hr class="subtle">
<?php
printSidebarEntry(l10n_url_abs('/about/'), localize("sidebar.text.about"), "fad fa-user");
printSidebarEntry(l10n_url_abs('/contact/'), localize("sidebar.text.contact"),"fad fa-mailbox");
?>
</nav>

47
commons/DOM/utils.php Normal file
View File

@@ -0,0 +1,47 @@
<?php
// Making sure the file is included and not accessed directly.
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
$_npDomUtilsHeadingCount = 0;
/**
* Prints a standard heading container and its text with an optional anchor.
* @param $text string Text to be shown in the heading
* @param $iconId string|null
* @param $rightText string|null
* @param $anchorId string|null Anchor's ID if desired, `null` otherwise.
* @return void
*/
function makeMainHeader(string $text, ?string $iconId = null, ?string $rightText = null, ?string $anchorId = null): void {
global $_npDomUtilsHeadingCount;
if(!is_null($anchorId)) {
echo('<a class="bland-link" href="#' . $anchorId . '">');
}
echo('<div class="heading-main p-xs border r-s ' . ($_npDomUtilsHeadingCount > 0 ? "mt-l " : "") . 'bkgd-grid"><h2 class="t-w-500 t-size-14">');
// TODO: Add a simple and nicer divider.
if(!is_null($iconId)) {
echo('<i class="' . $iconId . ' t-size-12 t-muted"></i>');
}
echo($text);
if(!is_null($rightText)) {
echo('<span class="ml-auto t-muted t-size-10">' . $rightText . '</span>');
}
echo('</h2></div>');
if(!is_null($anchorId)) {
echo('</a>');
}
$_npDomUtilsHeadingCount++;
}
?>

View File

@@ -304,7 +304,7 @@ class ComposerContentMetadata {
'" class="content-tag">#' . $tag . '</a>');
}
} else {
$inner_html .= '<i>' . localize("error.content.data.no.tags") . '</i>';
$inner_html .= '<i>' . localize("content.error.message.data.no.tags") . '</i>';
}
$inner_html .= '</div></div></div>';
@@ -381,7 +381,7 @@ class ComposerContentMetadataArticle {
return new ComposerContentMetadataArticle(
key_exists("icon", $json_data) ? $json_data["icon"] : "fad fa-question",
key_exists("title", $json_data) ?
$json_data["title"] : '<i>'.localize("error.content.data.no.title").'</i>',
$json_data["title"] : '<i>'.localize("content.error.message.data.no.title").'</i>',
key_exists("subtitle", $json_data) ? $json_data["subtitle"] : '',
key_exists("tags", $json_data) ? $json_data["tags"] : [],
);

View File

@@ -9,4 +9,16 @@ $host_uri = "https://nibblepoker.lu";
$dir_commons = dirname(__FILE__);
$dir_root = realpath($dir_commons . "/../");
$dir_content = realpath($dir_commons . "/../" . "content/");
// Optional features
$enable_grids = false;
$enable_code_highlight = false;
$enable_glider = false;
// Easter-egg optional features
// > Belgium's independence day.
$enable_waffle_iron = date('m-d') === '07-21';
// Debugging stuff
$print_execution_timer = true;
?>

View File

@@ -6,8 +6,8 @@ if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
}
// Importing required scripts.
include_once 'langs.php';
include_once 'composer.php';
include_once 'commons/langs.php';
include_once 'commons/composer.php';
// Defining some options.
$PRINT_CONTENT_DEBUG_INFO_TEXT_ELEMENTS = true;
@@ -23,7 +23,7 @@ abstract class ContentDisplayType {
// Preparing default variables.
$requested_content_display_type = ContentDisplayType::NONE;
$content_has_error = false;
$content_error_message_key = "error.content.none";
$content_error_message_key = "content.error.message.none";
$content_error_message = "";
$requested_tags = array();
$raw_additional_tags = "";
@@ -49,7 +49,7 @@ if($requested_content_display_type == ContentDisplayType::SEARCH) {
// Checking the length to prevent bad requests
if(strlen($raw_additional_tags) > 256) {
$content_has_error = true;
$content_error_message_key = "error.content.tags.length";
$content_error_message_key = "content.error.message.tags.length";
goto content_end;
}
@@ -61,7 +61,7 @@ if($requested_content_display_type == ContentDisplayType::SEARCH) {
$requested_tags[] = $raw_additional_tags_exploded[$i];
} else {
$content_has_error = true;
$content_error_message_key = "error.content.tags.alphanumeric";
$content_error_message_key = "content.error.message.tags.alphanumeric";
goto content_end;
}
}
@@ -90,14 +90,14 @@ if($requested_content_display_type == ContentDisplayType::SEARCH) {
if(count($filtered_content_index_data) == 0) {
// No relevant article/page were found for the given tags.
$content_has_error = true;
$content_error_message_key = "error.content.detect.empty";
$content_error_message_key = "content.error.message.detect.empty";
goto content_end;
}
} else if($requested_content_display_type == ContentDisplayType::CONTENT) {
// Sanitizing the requested ID.
if(!ctype_alnum(str_replace("-", "", $content_requested_url_part))) {
$content_has_error = true;
$content_error_message_key = "error.content.id.alphanumeric";
$content_error_message_key = "content.error.message.id.alphanumeric";
goto content_end;
}
@@ -107,7 +107,7 @@ if($requested_content_display_type == ContentDisplayType::SEARCH) {
if(empty($content_file_path)) {
// File doesn't exist !
$content_has_error = true;
$content_error_message_key = "error.content.data.not.exist";
$content_error_message_key = "content.error.message.data.not.exist";
unset($content_file_path);
goto content_end;
} else {
@@ -115,7 +115,7 @@ if($requested_content_display_type == ContentDisplayType::SEARCH) {
if(is_null($content)) {
$content_has_error = true;
$content_error_message_key = "error.content.cannot.load";
$content_error_message_key = "content.error.message.cannot.load";
unset($content_file_path);
goto content_end;
}
@@ -140,6 +140,7 @@ function end_content_card() {
echo('</div>');
}
// FIXME: What is this, should it be removed ?
/*
switch($elementNode["type"]) {
case "image":

View File

@@ -1,28 +0,0 @@
<?php
// Making sure the file is included and not accessed directly.
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
?>
<nav class="navbar navbar-fixed-bottom">
<div class="navbar-content">
<div class="navbar-content">
<button id="button-sidebar" class="btn btn-action" type="button">
<i class="fa fa-bars" aria-hidden="true"></i><span class="sr-only">Sidebar</span>
</button>
</div>
</div>
<span class="ml-auto">
<div id="privacy-footer-link" class="text-muted ml-15">
<a href="<?php print(l10n_url_abs('/privacy/')); ?>" class="text-decoration-none">
<p class="text-muted font-weight-semi-bold"><?php print(localize('privacy.title')); ?></p>
</a>
</div>
</span>
<a href="<?php print(l10n_url_abs('/')); ?>" class="navbar-brand ml-auto">
<span class="navbar-brand ml-auto">
<img id="logo-footer" src="/resources/Azias/logos/v2_full_unshaded_original.svg" alt="logo" draggable="false">
</span>
</a>
</nav>

View File

@@ -1,30 +0,0 @@
<?php
// Making sure the file is included and not accessed directly.
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
?>
<div id="header-lang-menu" class="navbar-content ml-auto">
<div class="dropdown with-arrow">
<button class="btn" data-toggle="dropdown" type="button" id="navbar-lang-dropdown">
<i class="fad fa-language"></i><span class="hidden-xs-and-down">&nbsp;&nbsp;<?php print(localize("lang.menu.title")); ?></span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</button>
<div class="dropdown-menu dropdown-menu-right w-150" aria-labelledby="navbar-lang-dropdown">
<a href="<?php echo(l10n_url_switch('en')); ?>" class="dropdown-item">
<?php print(localize("lang.english")); ?>
</a>
<a href="<?php echo(l10n_url_switch('fr')); ?>" class="dropdown-item">
<?php print(localize("lang.french")); ?>
</a>
<!--<a href="<?php echo(l10n_url_switch('lb')); ?>" class="dropdown-item">
<?php print(localize("lang.luxembourgish")); ?>
</a>-->
<div class="dropdown-divider mt-5 mb-5"></div>
<a href="<?php echo(l10n_url_switch(NULL)); ?>" class="dropdown-item">
<?php print(localize("lang.automatic")); ?>
</a>
</div>
</div>
</div>

View File

@@ -1,29 +0,0 @@
<?php
// Making sure the file is included and not accessed directly.
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
?>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
<meta name="viewport" content="width=device-width" />
<meta content="cache, store" http-equiv="Cache-Control">
<meta content="cache, store" http-equiv="Pragma">
<meta content="3600" http-equiv="Expires">
<meta name="theme-color" content="#1D2023">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="alternate icon" href="/favicon.ico">
<link rel="stylesheet" href="/resources/HalfMoon/1.1.1/css/halfmoon-variables.min.css" />
<link rel="stylesheet" href="/resources/FontAwesomePro/5.15.3/css/all.min.css">
<link rel="stylesheet" href="/resources/Azias/css/nibblepoker.lu.min.css">
<?php
// Causes Chrome to bitch about the cross-origin header.
// <link rel="preload" href="/resources/Quantum/Quantum.otf" as="font">
// <link rel="preload" href="/resources/FontAwesomePro/5.15.3/webfonts/fa-duotone-900.woff2" as="font">
// <link rel="preload" href="/resources/FontAwesomePro/5.15.3/webfonts/fa-brands-400.woff2" as="font">
// <link rel="preload" href="/resources/FontAwesomePro/5.15.3/webfonts/fa-solid-900.woff2" as="font">
// <link rel="preload" href="/resources/Azias/imgs/3px-tile-0.1.png" as="image">
// <link rel="preload" href="/resources/Azias/imgs/3px-tile.png" as="image">
?>

View File

@@ -4,7 +4,7 @@ if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
include_once 'config.php';
include_once 'commons/config.php';
// This helper requires PHP 8 or newer !

View File

@@ -1,84 +0,0 @@
<?php
// Making sure the file is included and not accessed directly.
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
header('HTTP/1.1 403 Forbidden');
die();
}
include_once 'langs.php';
if(!isset($SIDEBAR_ID)) {
$SIDEBAR_ID = 'default';
}
?>
<div class="sidebar">
<div class="sidebar-menu font-weight-bold">
<a href="<?php print(l10n_url_abs('/')); ?>" class="sidebar-brand no-select">
<img id="logo-sidebar" src="/resources/Azias/logos/v2_full_unshaded_original.svg" alt="logo" draggable="false">
</a>
<h4 class="text-center quantum ucase font-size-28 text-muted">N<span class="text-super-muted">ibble</span> P<span class="text-super-muted">oker</span></h4>
<div class="sidebar-divider"></div>
<a id="sbl-home" href="<?php print(l10n_url_abs('/')); ?>" class="sidebar-link sidebar-link-with-icon<?php if($SIDEBAR_ID=="home"){echo(" active");} ?>">
<span class="sidebar-icon"><i class="fad fa-home" aria-hidden="true"></i></span>
<?php print(localize("home.title.nav")); ?>
</a>
<div class="sidebar-divider"></div>
<a id="sbl-programming" href="<?php print(l10n_url_abs('/content/')); ?>" class="sidebar-link sidebar-link-with-icon<?php if($SIDEBAR_ID=="blog"){echo(" active");} ?>">
<span class="sidebar-icon"><i class="fad fa-briefcase"></i></span>
<?php print(localize("programming.title.projects")); ?>
</a>
<div class="ml-20">
<a id="sbl-projects-apps" href="<?php print(l10n_url_abs('/content/?tags=application')); ?>" class="sidebar-link sidebar-link-with-icon">
<span class="sidebar-icon"><i class="fad fa-browser"></i></span>
<?php print(localize("programming.apps.title")); ?>
</a>
<a id="sbl-projects-apps" href="<?php print(l10n_url_abs('/content/?tags=library')); ?>" class="sidebar-link sidebar-link-with-icon">
<span class="sidebar-icon"><i class="fad fa-puzzle-piece"></i></span>
<?php print(localize("programming.library.title")); ?>
</a>
<a id="sbl-projects-tutorials" href="<?php print(l10n_url_abs('/content/?tags=game')); ?>" class="sidebar-link sidebar-link-with-icon">
<span class="sidebar-icon"><i class="fad fa-gamepad-alt"></i></span>
<?php print(localize("programming.games.title")); ?>
</a>
<!--<a id="sbl-projects-tutorials" href="<?php print(l10n_url_abs('/content/?tags=tutorial')); ?>" class="sidebar-link sidebar-link-with-icon">
<span class="sidebar-icon"><i class="fad fa-books"></i></span>
<?php print(localize("programming.tutorials.title")); ?>
</a>-->
<a id="sbl-projects-tools" href="<?php print(l10n_url_abs('/content/?tags=tool')); ?>" class="sidebar-link sidebar-link-with-icon">
<span class="sidebar-icon"><i class="fad fa-tools"></i></span>
<?php print(localize("programming.tools.title")); ?>
</a>
<div class="sidebar-divider"></div>
<a id="sbl-purebasic" href="<?php print(l10n_url_abs('/content/?tags=purebasic')); ?>" class="sidebar-link sidebar-link-with-icon">
<span class="sidebar-icon"><i class="fad fa-microchip"></i></span>
<?php print(localize("programming.purebasic.title")); ?>
</a>
<a id="sbl-python" href="<?php print(l10n_url_abs('/content/?tags=python')); ?>" class="sidebar-link sidebar-link-with-icon">
<span class="sidebar-icon"><i class="fab fa-python"></i></span>
<?php print(localize("programming.python.title")); ?>
</a>
<a id="sbl-docker" href="<?php print(l10n_url_abs('/content/?tags=docker')); ?>" class="sidebar-link sidebar-link-with-icon">
<span class="sidebar-icon"><i class="fab fa-docker"></i></span>
<?php print(localize("programming.docker.title")); ?>
</a>
<div class="sidebar-divider"></div>
<a id="sbl-projects-downloads" href="https://files.nibblepoker.lu/" class="sidebar-link sidebar-link-with-icon">
<span class="sidebar-icon"><i class="fad fa-download"></i></span>
<?php print(localize("programming.downloads.title")); ?>
</a>
<a id="sbl-projects-downloads" href="https://git.nibblepoker.lu/" class="sidebar-link sidebar-link-with-icon">
<span class="sidebar-icon"><i class="fad fa-code"></i></span>
<?php print(localize("programming.git.title")); ?>
</a>
</div>
<div class="sidebar-divider"></div>
<a id="sbl-links" href="<?php print(l10n_url_abs('/links/')); ?>" class="sidebar-link sidebar-link-with-icon<?php if($SIDEBAR_ID=="links"){echo(" active");} ?>">
<span class="sidebar-icon"><i class="fad fa-link"></i></span>
<?php print(localize("links.title")); ?>
</a>
<a id="sbl-contact" href="<?php print(l10n_url_abs('/contact/')); ?>" class="sidebar-link sidebar-link-with-icon<?php if($SIDEBAR_ID=="contact"){echo(" active");} ?>">
<span class="sidebar-icon"><i class="fad fa-mailbox"></i></span>
<?php print(localize("contact.title")); ?>
</a>
</div>
</div>

File diff suppressed because one or more lines are too long

View File

@@ -13,6 +13,9 @@ lang_data["_compile_date"] = datetime.utcnow().isoformat() + "Z"
for main_dir_entry in os.listdir("./"):
if main_dir_entry.startswith("_"):
continue
print("Checking ./{}".format(main_dir_entry))
if not os.path.isdir(os.path.join("./", main_dir_entry)):

View File

@@ -1,7 +0,0 @@
{
"about.biography.title": "Who am I ?",
"about.philosophy.title": "Projects philosophy",
"about.skills.title": "Skills",
"about.work.title": "Professional experiences",
"about.education.title": "TODO:SchoolAndEducation"
}

View File

@@ -0,0 +1,3 @@
{
}

View File

@@ -1,11 +0,0 @@
{
"contact.title": "Contact",
"contact.email.title": "Email",
"contact.email.name": "Sender's Name",
"contact.email.message": "Message",
"contact.twitter.button": "Compose DM to @NibblePoker on Twitter",
"contact.tox.main": "Main account:",
"contact.tox.secondary": "Backup account:",
"contact.tox.button.open": "Open in Tox Client",
"contact.tox.button.copy": "Copy to clipboard"
}

View File

@@ -0,0 +1,41 @@
{
"content.search.head.title": "Content search - NibblePoker",
"content.search.head.description": "TODO: description",
"content.search.og.title": "NibblePoker - Content search",
"content.search.og.description": "TODO: description",
"content.search.heading.main": "Search results",
"content.search.count.single": "result",
"content.search.count.multiple": "results",
"content.error.head.title": "Content error - NibblePoker",
"_content.error.head.description": "Done via the '$content_error_message' variable",
"content.error.og.title": "NibblePoker - Content error",
"_content.error.og.description": "Done via the '$content_error_message' variable",
"content.error.heading.main.search": "Search error",
"content.error.heading.main.content": "Content error",
"content.error.heading.main.fallback": "Unknown error",
"_": "Messages returned by 'commons/content.php'",
"content.error.message.none": "No explicit error was encountered.",
"content.error.message.tags.length": "The \"tags\" URL parameter is too long.",
"content.error.message.tags.alphanumeric": "One of the tags given in the \"tags\" URL parameter is not a valid alphanumeric string.",
"content.error.message.detect.empty": "No content could be found for the given tags.",
"content.error.message.id.alphanumeric": "The requested resource's ID isn't a valid alphanumeric string.",
"content.error.message.data.not.exist": "The requested content doesn't have an internal item file associated to it.",
"content.error.message.cannot.load": "The requested content couldn't be loaded on our end !",
"__": "Messages returned by 'commons/composer.php'",
"_content.error.message.data.no.tags": "No tags found !",
"_content.error.message.data.no.title": "No title found !",
"content.item.head.title.prefix": "",
"content.item.head.title.suffix": " - NibblePoker",
"content.item.og.title.prefix": "",
"content.item.og.title.suffix": " - NibblePoker",
"_content.header.title": "Homepage"
}

View File

@@ -0,0 +1,4 @@
{
"footer.text.privacy": "Privacy policy",
"footer.alt.logo": "Website's logo"
}

View File

@@ -1,6 +0,0 @@
{
"generic.button.close": "Close",
"generic.button.copy": "Copy to clipboard",
"generic.button.submit": "Submit",
"generic.button.reset": "Reset"
}

View File

@@ -1,8 +1,7 @@
{
"home.title.nav": "Home",
"home.title.header": "Homepage",
"home.intro.meta.description": "${home.intro.meta.description}",
"home.intro.title": "Welcome",
"home.intro.text.1": "This website contains a collection of my personal work through blog posts, software releases and other forms of media, all of which is accessible for free and under open-source friendly licenses.",
"home.intro.text.2": "If you wish to contact me, you can do so through the contact form linked in the sidebar or via the email address present on that page."
"home.head.title": "NibblePoker",
"home.head.description": "TODO: description",
"home.og.title": "NibblePoker",
"home.og.description": "TODO: description",
"home.header.title": "Homepage"
}

View File

@@ -1,7 +1,9 @@
{
"privacy.title": "Privacy policy",
"privacy.description": "Our privacy policy in a clear and easy to understand format.",
"privacy.head.title": "Privacy policy - NibblePoker",
"privacy.head.description": "Our privacy policy in a clear and easy to understand format.",
"privacy.og.title": "NibblePoker - Privacy Policy",
"privacy.og.description": "Our privacy policy in a clear and easy to understand format.",
"privacy.header.title": "Privacy policy",
"privacy.introduction.title": "Introduction",
"privacy.introduction.text.1": "This privacy policy is written in accordance with the 12th and 13th articles of the GDPR.",
@@ -9,7 +11,6 @@
"_privacy.data.title": "What data do we collect ?",
"_privacy.data.text.1": "This website, does not collect any personal data, be it through access logs, cookies or any third-party services.",
"_privacy.update.title": "Changes to our privacy policy",
"_privacy.update.text.1": "The content of this privacy policy was written and last updated on the 4th of December 2021.",
"_privacy.update.text.2": "In the event of a change to our privacy policy, you will be informed explicitly, and a copy of previous versions of the policy will be available on this page.",
@@ -36,6 +37,7 @@
"privacy.v2.data.end.5": "This process should normally never be triggered for regular traffic since most of the triggering actions are ones that should not be possible to accomplish through normal browsing.",
"privacy.v2.data.end.6": "However, this process isn't infallible and there is always an off chance that false positives may happen.",
"privacy.v2.update.title": "Changes to our privacy policy",
"privacy.v2.update.intro.1": "The content of this privacy policy was originally written on the 4th of December 2021 and was last updated on the 18th of March 2022.",
"privacy.v2.update.history.1.date": "2021/12/04",
"privacy.v2.update.history.1.desc.1": "Original version",

View File

@@ -1,109 +0,0 @@
{
"programming.title": "Programming",
"programming.title.projects": "Projects",
"programming.java.title": "Java",
"programming.purebasic.title": "PureBasic",
"programming.python.title": "Python",
"programming.others.title": "Others",
"programming.docker.title": "Docker",
"programming.apps.title": "Applications",
"programming.downloads.title": "Downloads",
"programming.git.title": "Git Repos.",
"programming.tutorials.title": "Tutorials",
"programming.tools.title": "Tools",
"programming.games.title": "Games & Mods",
"programming.library.title": "Libraries",
"electronics.title": "Electronics",
"electronics.iot.title": "IoT",
"electronics.experiments.title": "Experiments",
"electronics.ham.title": "HAM",
"links.title": "Links",
"links.visit.button": "Visit",
"about.title": "About",
"contact.description": "$contact.description",
"error.common.details.title": "Error details",
"error.4xx.title": "HTTP Client Error",
"error.4xx.text": "${error.4xx.text}",
"error.4xx.button.back": "Go back",
"error.403.title": "403 Error",
"error.403.description": "Access to the requested resource is forbidden !",
"error.403.explanation": "If this problem persists, you can contact us through avenues given on the <a href=\"/contact/\">Contact</a> page.",
"error.404.title": "404 Error",
"error.404.description": "The requested resource couldn't be found on the server !",
"error.404.explanation": "If this problem persists, you can contact us through avenues given on the <a href=\"/contact/\">Contact</a> page.",
"error.content.title.generic": "Content error",
"error.content.title.empty": "No content found",
"error.content.none": "No explicit error was encountered.",
"error.content.detect.category": "Failed to detect which category of content you requested.",
"error.content.detect.display": "Failed to detect if you requested the category's search page or a specific one.",
"error.content.detect.subtype": "Failed to detect the sub-type of content you requested.",
"error.content.detect.tags": "Failed to detect the basic tags for the content you requested.",
"error.content.detect.empty": "No content could be found for the given tags.",
"error.content.tags.length": "The \"tags\" URL parameter is too long.",
"error.content.tags.alphanumeric": "One of the tags given in the \"tags\" URL parameter is not a valid alphanumeric string.",
"error.content.detect.type": "The type of requested content couldn't be determined.",
"error.content.id.alphanumeric": "The requested resource's ID isn't a valid alphanumeric string.",
"error.content.data.not.exist": "The requested content doesn't have an internal item file associated to it.",
"error.content.data.no.title": "No title found !",
"error.content.data.no.description": "No description found !",
"error.content.data.no.tags": "No tags found !",
"error.content.data.no.parts": "No content parts were found for this content !",
"error.content.data.no.subpart": "No sub-element were found for this element !",
"error.content.data.part.unknown": "Unknown element: \"%s\" !",
"error.content.cannot.load": "The requested content couldn't be loaded !",
"content.title.error": "Error",
"content.title.content": "Content",
"content.title.search.header": "Search",
"content.title.search.card": "Content search",
"content.title.search.card.single": "Search result",
"content.title.search.card.multiple": "Search results",
"content.tags.requested": "Requested tags",
"content.search.count.single": "result",
"content.search.count.multiple": "results",
"content.fallback.content.commons.version.current": "Current version",
"content.fallback.content.commons.version.previous.single": "Previous version",
"content.fallback.content.commons.version.previous.multiple": "Previous versions",
"content.fallback.content.commons.version.old.single": "Old version",
"content.fallback.content.commons.version.old.multiple": "Old versions",
"content.fallback.content.commons.version.source": "Source code",
"content.fallback.content.commons.cpu": "CPU <span class=\"hidden-xs-and-down\">Architecture</span>",
"content.fallback.content.commons.cpu.responsive": "CPU <span class=\"hidden-xs-and-down\">Architecture</span>",
"content.fallback.content.commons.cpu.any": "Any architecture",
"content.fallback.content.commons.cpu.x64": "x64",
"content.fallback.content.commons.cpu.x86": "x86",
"content.fallback.content.commons.cpu.arm": "arm",
"content.fallback.content.commons.cpu.arm64": "arm64",
"content.fallback.content.commons.na.italic": "<i>N/A</i>",
"content.fallback.content.commons.na": "N/A",
"content.fallback.content.commons.lang": "Language",
"content.fallback.content.commons.download.single": "Download",
"content.fallback.content.commons.download.multiple": "Downloads",
"content.fallback.content.commons.version": "Version",
"content.fallback.content.commons.github": "GitHub Repository",
"content.fallback.content.commons.gitea": "Self-hosted Gitea Repository",
"content.fallback.content.commons.nuget": "Nuget Package",
"content.fallback.content.commons.license.mit.single": "MIT License",
"content.fallback.content.commons.lang.english": "English",
"content.fallback.content.commons.lang.french": "French",
"content.fallback.content.commons.lang.luxembourgish": "Luxembourgish",
"content.fallback.content.commons.lang.english.639-3": "English (eng)",
"content.fallback.content.commons.lang.french.639-3": "French (fra)",
"content.fallback.content.commons.lang.luxembourgish.639-3": "Luxembourgish (ltz)",
"content.default.head.title" : "No title found !",
"content.default.head.description" : "No description found !",
"content.default.opengraph.title" : "No title found !",
"content.default.opengraph.description" : "No description found !",
"downloads.title": "Downloads",
"downloads.description": "$downloads.description",
"downloads.title.header": "Downloads",
"downloads.intro.title": "Directory listing of: <i>/files/</i>",
"modal.title.debugging": "Debugging information"
}

View File

@@ -0,0 +1,13 @@
{
"sidebar.alt.logo": "Website's logo",
"sidebar.text.home": "Home",
"sidebar.text.projects": "Projects",
"sidebar.text.applications": "Applications",
"sidebar.text.libraries": "Libraries",
"sidebar.text.electronics": "Electronics",
"sidebar.text.links": "Links",
"sidebar.text.downloads": "Downloads",
"sidebar.text.gitea": "Git Repos.",
"sidebar.text.about": "About",
"sidebar.text.contact": "Contact"
}

View File

@@ -1,7 +0,0 @@
{
"about.biography.title": "Qui suis-je ?",
"about.philosophy.title": "Philosophie des projets",
"about.skills.title": "Compétences",
"about.work.title": "Parcours professionnel",
"about.education.title": "Éducation"
}

View File

@@ -0,0 +1,3 @@
{
}

View File

@@ -1,11 +0,0 @@
{
"contact.title": "Contact",
"contact.email.title": "Courriel",
"contact.email.name": "Nom de l'envoyeur",
"contact.email.message": "Message",
"contact.twitter.button": "Composer un message privé pour @NibblePoker sur Twitter",
"contact.tox.main": "Compte principal:",
"contact.tox.secondary": "Compte secondaire:",
"contact.tox.button.open": "Ouvrir dans un client Tox",
"contact.tox.button.copy": "Copier dans le presse-papier"
}

View File

@@ -0,0 +1,3 @@
{
}

View File

@@ -0,0 +1,4 @@
{
"footer.text.privacy": "Politique de confidentialité",
"footer.alt.logo": "Logo du site web"
}

View File

@@ -1,6 +0,0 @@
{
"generic.button.close": "Fermer",
"generic.button.copy": "Copier dans le presse-papier",
"generic.button.submit": "Envoyer",
"generic.button.reset": "Réinitialiser"
}

View File

@@ -1,8 +1,7 @@
{
"home.title.nav": "Accueil",
"home.title.header": "Page d'accueil",
"home.intro.meta.description": "${home.intro.meta.description}",
"home.intro.title": "Bienvenue",
"home.intro.text.1": "Ce site internet contient une collection de mon travail personnel dans le domaine de l'informatique, le tout étant rendu accessible par le biais d'articles de blog, ? et ?, le tout sous une licence ouverte et en open source.",
"home.intro.text.2": "Si vous désirez me contacter, vous pouvez le faire via le formulaire de contact dans la page prévu à cet effet qui est liée dans le menu latéral ou via l'adresse email présente sur cette page."
}
"home.head.title": "NibblePoker",
"home.head.description": "TODO: description",
"home.og.title": "NibblePoker",
"home.og.description": "TODO: description",
"home.header.title": "Page d'accueil"
}

View File

@@ -1,7 +1,9 @@
{
"privacy.title": "Politique de confidentialité",
"privacy.description": "Notre politique de confidentialité dans un format clair et compréhensible.",
"privacy.head.title": "Politique de confidentialité - NibblePoker",
"privacy.head.description": "Notre politique de confidentialité dans un format clair et compréhensible.",
"privacy.og.title": "NibblePoker - Politique de confidentialité",
"privacy.og.description": "Notre politique de confidentialité dans un format clair et compréhensible.",
"privacy.header.title": "Politique de confidentialité",
"privacy.introduction.title": "Introduction",
"privacy.introduction.text.1": "La politique de confidentialité ci-présente a été écrite en accord avec les articles 12 et 13 de la RGPD.",
@@ -36,6 +38,7 @@
"privacy.v2.data.end.5": "Ce processus n'est normalement jamais utilisé sur des requêtes provenant d'un trafic légitime dû au fait qu'il isole principalement les actions et requêtes qui ne devraient pas être possible sur ce site.",
"privacy.v2.data.end.6": "Cependant, ce processus n'est pas infaillible et il est toujours possible qu'une requête soit isolée par erreur.",
"privacy.v2.update.title": "Changements à notre politique de confidentialité",
"privacy.v2.update.intro.1": "Le contenu de notre politique de confidentialité a été originalement écrit et le 4 décembre 2021 modifié pour la dernière fois le 18 mars 2022.",
"privacy.v2.update.history.1.date": "2021/12/04",
"privacy.v2.update.history.1.desc.1": "Version originale",

View File

@@ -1,100 +0,0 @@
{
"programming.title": "Programmation",
"programming.title.projects": "Projets",
"programming.java.title": "Java",
"programming.purebasic.title": "PureBasic",
"programming.python.title": "Python",
"programming.others.title": "Autres",
"programming.docker.title": "Docker",
"programming.apps.title": "Applications",
"programming.downloads.title": "Téléchargements",
"programming.git.title": "Dépôts Git",
"programming.tutorials.title": "Tutoriels",
"programming.tools.title": "Outils",
"programming.games.title": "Jeux & Mods",
"programming.library.title": "Librairies",
"electronics.title": "Électronique",
"electronics.iot.title": "IoT",
"electronics.experiments.title": "Expériences",
"electronics.ham.title": "HAM",
"links.title": "Liens",
"links.visit.button": "Visiter",
"about.title": "À-propos",
"contact.description": "$contact.description",
"error.common.details.title": "Détails de l'erreur",
"error.4xx.title": "Erreur du client HTTP",
"error.4xx.text": "${error.4xx.text}",
"error.4xx.button.back": "Retourner en arrière",
"error.403.title": "Erreur 403",
"error.403.description": "L'accès à la ressource demandée est interdit !",
"error.403.explanation": "Si ce problème persiste, vous pouvez nous contacter via une des avenues données sur la page <a href=\"/contact/\">Contact</a>.",
"error.404.title": "Erreur 404",
"error.404.description": "La ressource demandée est introuvable sur le serveur !",
"error.404.explanation": "Si ce problème persiste, vous pouvez nous contacter via une des avenues données sur la page <a href=\"/contact/\">Contact</a>.",
"error.content.title.generic": "Erreur de contenu",
"error.content.title.empty": "Aucun contenu trouvé",
"error.content.none": "Aucune erreur n'a été détectée.",
"error.content.detect.category": "Impossibilité de détecter la catégorie de contenu demandée.",
"error.content.detect.display": "Impossibilité de détecter si une recherche ou page spécifique était demandée.",
"error.content.detect.subtype": "Impossibilité de détecter le sous-type de contenu demandé.",
"error.content.detect.tags": "Impossibilité de détecter les tags de base du contenu demandé.",
"error.content.detect.empty": "Aucun contenu en rapport avec les tags choisi n'as été trouvé.",
"error.content.tags.length": "Le paramètre d'URL \"tags\" est trop long.",
"error.content.tags.alphanumeric": "Un des tags donné dans le paramètre d'URL \"tags\" n'est pas une chaîne de texte alphanumérique valide.",
"error.content.detect.type": "Le type de contenu désiré n'as pas pu être détecté.",
"error.content.id.alphanumeric": "L'ID de la ressource demandée n'est pas une chaîne de texte alphanumérique valide.",
"error.content.data.not.exist": "Le contenu demandée n'a pas de fichier de rendu interne associé.",
"error.content.data.no.title": "Aucun titre trouvé !",
"error.content.data.no.description": "Aucune description trouvée !",
"error.content.data.no.tags": "Aucun tag trouvé !",
"error.content.data.no.parts": "Aucun élément à présenter n'a été trouvé !",
"error.content.data.no.subpart": "Aucun sous-élément n'a été trouvé pour cet élément !",
"error.content.data.part.unknown": "Élément inconnu: \"%s\" !",
"error.content.cannot.load": "Le contenu demandé n'a pas pu être chargé !",
"content.title.error": "Erreur de contenu",
"content.title.content": "Projets",
"content.title.search.header": "Recherche",
"content.title.search.card": "Recherche de contenu",
"content.title.search.card.single": "Résultat de recherche",
"content.title.search.card.multiple": "Résultats de recherche",
"content.tags.requested": "Tags demandés",
"content.search.count.single": "résultat",
"content.search.count.multiple": "résultats",
"content.fallback.content.commons.version.current": "Version actuelle",
"content.fallback.content.commons.version.previous.single": "Version précédente",
"content.fallback.content.commons.version.previous.multiple": "Versions précédentes",
"content.fallback.content.commons.version.old.single": "Ancienne version",
"content.fallback.content.commons.version.old.multiple": "Anciennes versions",
"content.fallback.content.commons.version.source": "Code source",
"content.fallback.content.commons.cpu": "Architecture de CPU",
"content.fallback.content.commons.cpu.any": "Indépendante",
"content.fallback.content.commons.cpu.x64": "x64",
"content.fallback.content.commons.cpu.x86": "x86",
"content.fallback.content.commons.cpu.arm": "arm",
"content.fallback.content.commons.cpu.arm64": "arm64",
"content.fallback.content.commons.na.italic": "<i>N/A</i>",
"content.fallback.content.commons.na": "N/A",
"content.fallback.content.commons.lang": "Langue",
"content.fallback.content.commons.download.single": "Téléchargement",
"content.fallback.content.commons.download.multiple": "Téléchargements",
"content.fallback.content.commons.version": "Version",
"content.fallback.content.commons.github": "Dépôt GitHub",
"content.fallback.content.commons.gitea": "Dépôt Gitea auto-hébergé",
"content.fallback.content.commons.nuget": "Packet Nuget",
"content.fallback.content.commons.license.mit.single": "License MIT",
"content.fallback.content.commons.lang.english": "Anglais",
"content.fallback.content.commons.lang.french": "Français",
"content.fallback.content.commons.lang.luxembourgish": "Luxembourgeois",
"content.default.head.title" : "Aucun titre trouvé !",
"content.default.head.description" : "Aucune description trouvée !",
"content.default.opengraph.title" : "Aucun titre trouvé !",
"content.default.opengraph.description" : "Aucune description trouvée !",
"modal.title.debugging": "Informations de débogage"
}

View File

@@ -0,0 +1,13 @@
{
"sidebar.alt.logo": "Logo du site web",
"sidebar.text.home": "Accueil",
"sidebar.text.projects": "Projets",
"sidebar.text.applications": "Applications",
"sidebar.text.libraries": "Librairies",
"sidebar.text.electronics": "Électronique",
"sidebar.text.links": "Liens",
"sidebar.text.downloads": "Téléchargements",
"sidebar.text.gitea": "Dépôts Git",
"sidebar.text.about": "À-propos",
"sidebar.text.contact": "Contact"
}

View File

@@ -1,4 +0,0 @@
{
"home.title.nav": "Doheem",
"home.intro.title": "Wëllkomm op <i>NibblePoker.lu</i> !"
}

View File

@@ -1,3 +0,0 @@
{
"lang.current": "Luxembourgish"
}