71 lines
1.7 KiB
PHP
71 lines
1.7 KiB
PHP
<?php
|
|
session_start();
|
|
require_once __DIR__ . '/lang.php';
|
|
|
|
if (!isset($_SESSION['lang'])) {
|
|
$_SESSION['lang'] = 'en';
|
|
}
|
|
|
|
if (isset($_GET['lang'])) {
|
|
if ($_GET['lang'] === 'ar' || $_GET['lang'] === 'en') {
|
|
$_SESSION['lang'] = $_GET['lang'];
|
|
// Redirect to remove lang param
|
|
header("Location: " . strtok($_SERVER["REQUEST_URI"], '?'));
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function __($key) {
|
|
global $translations;
|
|
$lang = $_SESSION['lang'];
|
|
return $translations[$lang][$key] ?? $key;
|
|
}
|
|
|
|
function is_rtl() {
|
|
return $_SESSION['lang'] === 'ar';
|
|
}
|
|
|
|
function get_dir() {
|
|
return is_rtl() ? 'rtl' : 'ltr';
|
|
}
|
|
|
|
function get_lang_name() {
|
|
return $_SESSION['lang'] === 'ar' ? 'English' : 'العربية';
|
|
}
|
|
|
|
function get_lang_code() {
|
|
return $_SESSION['lang'] === 'ar' ? 'en' : 'ar';
|
|
}
|
|
|
|
function calculate_age($dob) {
|
|
if (empty($dob)) return '-';
|
|
try {
|
|
$birthDate = new DateTime($dob);
|
|
$today = new DateTime('today');
|
|
return $birthDate->diff($today)->y;
|
|
} catch (Exception $e) {
|
|
return '-';
|
|
}
|
|
}
|
|
|
|
if (!function_exists('mb_strimwidth')) {
|
|
function mb_strimwidth($string, $start, $width, $trimmarker = '...', $encoding = null) {
|
|
// Simple polyfill using substr
|
|
// 1. Handle start offset
|
|
$string = (string)$string;
|
|
if ($start > 0) {
|
|
$string = substr($string, $start);
|
|
}
|
|
|
|
// 2. Check length
|
|
if (strlen($string) <= $width) {
|
|
return $string;
|
|
}
|
|
|
|
// 3. Truncate
|
|
$targetLen = $width - strlen($trimmarker);
|
|
if ($targetLen < 0) $targetLen = 0;
|
|
|
|
return substr($string, 0, $targetLen) . $trimmarker;
|
|
}
|
|
} |