my-homelab-configs/apps/website/lang_helper.php

36 lines
1020 B
PHP

<?php
$staticLangDir = __DIR__ . '/lang';
$runtimeLangDir = getenv('WEBSITE_LANG_WRITE_DIR') ?: null;
$langFiles = glob($staticLangDir . '/*.php') ?: [];
if ($runtimeLangDir && is_dir($runtimeLangDir)) {
$langFiles = array_merge($langFiles, glob($runtimeLangDir . '/*.php') ?: []);
}
$availableLangs = array_values(array_unique(array_map(
fn($f) => basename($f, '.php'),
$langFiles
)));
function getLang($supported) {
if (isset($_GET['lang']) && in_array($_GET['lang'], $supported)) {
return $_GET['lang'];
}
$browser = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? 'nah', 0, 2);
return in_array($browser, $supported) ? $browser : 'nah';
}
$lang = getLang($availableLangs);
$file = $runtimeLangDir ? "$runtimeLangDir/$lang.php" : '';
if (!$file || !file_exists($file)) {
$file = "$staticLangDir/$lang.php";
}
if (!file_exists($file)) {
$lang = 'nah';
$file = "$staticLangDir/nah.php";
}
$en = include "$staticLangDir/en.php";
$text = array_replace($en, include $file);