v1.3.0
AtheraStudio SyncDrop
- <?php
- declare(strict_types=1);
-
- defined('SD_BOOT') || exit;
-
- const SD_LANGS = ['pl' => 'Polski', 'en' => 'English', 'de' => 'Deutsch'];
-
- function sd_lang(): string
- {
- static $lang = null;
- if ($lang !== null) return $lang;
- $cookie = (string)($_COOKIE['syncdrop_lang'] ?? '');
- if (isset(SD_LANGS[$cookie])) return $lang = $cookie;
- $env = sd_env();
- if ($env && isset(SD_LANGS[(string)($env['SD_LANG'] ?? '')])) return $lang = (string)$env['SD_LANG'];
- $accept = strtolower((string)($_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? ''));
- foreach (explode(',', $accept) as $part) {
- $code = substr(trim(explode(';', $part)[0]), 0, 2);
- if (isset(SD_LANGS[$code])) return $lang = $code;
- }
- return $lang = 'en';
- }
-
- function sd_set_lang(string $lang): void
- {
- if (!isset(SD_LANGS[$lang])) return;
- setcookie('syncdrop_lang', $lang, [
- 'expires' => time() + 31536000,
- 'path' => '/',
- 'secure' => sd_https(),
- 'httponly' => true,
- 'samesite' => 'Strict',
- ]);
- }
-
- function sd_strings(string $lang): array
- {
- static $cache = [];
- if (!isset($cache[$lang])) {
- $file = SD_ROOT . '/translate/' . $lang . '.php';
- $cache[$lang] = is_file($file) ? (array)require $file : [];
- }
- return $cache[$lang];
- }
-
- function t(string $key, array $vars = []): string
- {
- $text = sd_strings(sd_lang())[$key] ?? sd_strings('en')[$key] ?? $key;
- foreach ($vars as $name => $value) $text = str_replace('{' . $name . '}', (string)$value, $text);
- return $text;
- }
-