T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/soundstudiopro.com/private_html/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/soundstudiopro.com/private_html/includes/translations.php
<?php
/**
 * Translation System for SoundStudioPro
 * Supports English and French
 */

// Initialize session if not already started
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// Define available languages
define('AVAILABLE_LANGUAGES', ['en', 'fr']);
define('DEFAULT_LANGUAGE', 'en');

/**
 * Get current language from session or browser preference
 */
function getCurrentLanguage() {
    // Check if language is set in session
    if (isset($_SESSION['language']) && in_array($_SESSION['language'], AVAILABLE_LANGUAGES)) {
        return $_SESSION['language'];
    }
    
    // Check if language is set via GET parameter
    if (isset($_GET['lang']) && in_array($_GET['lang'], AVAILABLE_LANGUAGES)) {
        $_SESSION['language'] = $_GET['lang'];
        return $_GET['lang'];
    }
    
    // Try to detect from browser Accept-Language header
    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
        $browserLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
        if (in_array($browserLang, AVAILABLE_LANGUAGES)) {
            $_SESSION['language'] = $browserLang;
            return $browserLang;
        }
    }
    
    // Default to English
    $_SESSION['language'] = DEFAULT_LANGUAGE;
    return DEFAULT_LANGUAGE;
}

/**
 * Set language
 */
function setLanguage($lang) {
    if (in_array($lang, AVAILABLE_LANGUAGES)) {
        $_SESSION['language'] = $lang;
        return true;
    }
    return false;
}

/**
 * Load translation file
 */
function loadTranslations($lang) {
    static $translations = [];
    
    if (isset($translations[$lang])) {
        return $translations[$lang];
    }
    
    $translationFile = __DIR__ . '/../lang/' . $lang . '.php';
    
    if (file_exists($translationFile)) {
        $translations[$lang] = require $translationFile;
        return $translations[$lang];
    }
    
    // Fallback to English if translation file doesn't exist
    if ($lang !== DEFAULT_LANGUAGE) {
        $translationFile = __DIR__ . '/../lang/' . DEFAULT_LANGUAGE . '.php';
        if (file_exists($translationFile)) {
            $translations[$lang] = require $translationFile;
            return $translations[$lang];
        }
    }
    
    // Return empty array if no translation file exists
    return [];
}

/**
 * Translation function - main function to use throughout the site
 * Usage: t('key') or t('key', ['param' => 'value'])
 */
function t($key, $params = []) {
    $lang = getCurrentLanguage();
    $translations = loadTranslations($lang);
    
    // Get translation
    $translation = $translations[$key] ?? $key;
    
    // Replace parameters if provided
    if (!empty($params)) {
        foreach ($params as $paramKey => $paramValue) {
            $translation = str_replace(':' . $paramKey, $paramValue, $translation);
        }
    }
    
    return $translation;
}

/**
 * Echo translation (shorthand)
 */
function te($key, $params = []) {
    echo t($key, $params);
}

/**
 * Helper to fetch localized plan names with graceful fallback.
 */
function getPlanLabel($planKey, $defaultName = null) {
    $translationKey = 'plans.label.' . $planKey;
    $translated = t($translationKey);
    
    if ($translated === $translationKey) {
        if ($defaultName !== null) {
            return $defaultName;
        }
        $readable = str_replace('_', ' ', $planKey);
        return ucwords($readable);
    }
    
    return $translated;
}

/**
 * Helper to fetch localized plan target audience text.
 */
function getPlanAudienceLabel($planKey, $defaultDescription = null) {
    $translationKey = 'plans.target_audience.' . $planKey;
    $translated = t($translationKey);

    if ($translated === $translationKey) {
        if ($defaultDescription !== null) {
            return $defaultDescription;
        }
        return $translationKey;
    }

    return $translated;
}

/**
 * Get language name
 */
function getLanguageName($lang) {
    $names = [
        'en' => 'English',
        'fr' => 'Français'
    ];
    return $names[$lang] ?? $lang;
}

/**
 * Get language direction (for RTL support in future)
 */
function getLanguageDirection($lang = null) {
    if ($lang === null) {
        $lang = getCurrentLanguage();
    }
    return 'ltr'; // Both English and French are LTR
}


CasperSecurity Mini