<?php
declare(strict_types=1);
/**************************************************************************************
*
* Catalyst PHP Framework
* PHP Version 8.3 (Required).
*
* @package Catalyst
* @subpackage Public
* @see https://github.com/arcanisgk/catalyst
*
* @author Walter Nuñez (arcanisgk/original founder) <[email protected]>
* @copyright 2023 - 2025
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
*
* @note This program is distributed in the hope that it will be useful
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE.
*
* @category Framework
* @filesource
*
* @link https://catalyst.dock Local development URL
*
*/
use Catalyst\Framework\Core\Translation\TranslationManager;
if (!function_exists('t')) {
/**
* Get a translation by key
*
* Shorthand function for accessing translations.
*
* @param string $key Translation key (format: group.item or group.subgroup.item)
* @param array $replacements Values to replace placeholders
* @param string|null $language Language code (defaults to current language)
* @return string Translated text
*/
function t(string $key, array $replacements = [], ?string $language = null): string
{
try {
return TranslationManager::getInstance()->get($key, $replacements, $language);
} catch (Exception $e) {
// Log this error if we're in development mode
if (IS_DEVELOPMENT) {
error_log("Translation error: {$e->getMessage()}");
}
// Return the key as fallback
return $key;
}
}
}
if (!function_exists('trans')) {
/**
* Get a translation by key
*
* Alias for t() function with a more descriptive name.
*
* @param string $key Translation key (format: group.item or group.subgroup.item)
* @param array $replacements Values to replace placeholders
* @param string|null $language Language code (defaults to current language)
* @return string Translated text
*/
function trans(string $key, array $replacements = [], ?string $language = null): string
{
return t($key, $replacements, $language);
}
}
if (!function_exists('trans_choice')) {
/**
* Get a translation with pluralization based on count
*
* @param string $key Translation key base
* @param int $count Count for determining pluralization
* @param array $replacements Values to replace placeholders
* @param string|null $language Language code (defaults to current language)
* @return string Translated text
*/
function trans_choice(string $key, int $count, array $replacements = [], ?string $language = null): string
{
try {
return TranslationManager::getInstance()->choice($key, $count, $replacements, $language);
} catch (Exception $e) {
// Log this error if we're in development mode
if (IS_DEVELOPMENT) {
error_log("Translation choice error: {$e->getMessage()}");
}
// Return the key as fallback
return $key;
}
}
}
if (!function_exists('has_translation')) {
/**
* Check if a translation exists
*
* @param string $key Translation key
* @param string|null $language Language code (defaults to current language)
* @return bool True if translation exists
*/
function has_translation(string $key, ?string $language = null): bool
{
try {
return TranslationManager::getInstance()->has($key, $language);
} catch (Exception $e) {
// Log this error if we're in development mode
if (IS_DEVELOPMENT) {
error_log("Translation check error: {$e->getMessage()}");
}
return false;
}
}
}
if (!function_exists('current_language')) {
/**
* Get the current language
*
* @return string Current language code
*/
function current_language(): string
{
try {
return TranslationManager::getInstance()->getLanguage();
} catch (Exception $e) {
// Log this error if we're in development mode
if (IS_DEVELOPMENT) {
error_log("Current language error: {$e->getMessage()}");
}
// Return default language as fallback
return defined('DEF_LANG') ? DEF_LANG : 'en';
}
}
}
if (!function_exists('available_languages')) {
/**
* Get all available languages
*
* @return array Array of language codes
*/
function available_languages(): array
{
try {
return TranslationManager::getInstance()->getAvailableLanguages();
} catch (Exception $e) {
// Log this error if we're in development mode
if (IS_DEVELOPMENT) {
error_log("Available languages error: {$e->getMessage()}");
}
return ['en']; // Return at least English as fallback
}
}
}
if (!function_exists('set_language')) {
/**
* Set the current language
*
* @param string $language Language code
* @return bool Success status
*/
function set_language(string $language): bool
{
try {
TranslationManager::getInstance()->setLanguage($language);
// Update session if available
if (session_status() === PHP_SESSION_ACTIVE) {
$_SESSION['language'] = $language;
}
return true;
} catch (Exception $e) {
// Log this error if we're in development mode
if (IS_DEVELOPMENT) {
error_log("Set language error: {$e->getMessage()}");
}
return false;
}
}
}
if (!function_exists('__')) {
/**
* Get a translation by key (alias for t())
*
* This is a common shorthand in many frameworks.
*
* @param string $key Translation key (format: group.item or group.subgroup.item)
* @param array $replacements Values to replace placeholders
* @param string|null $language Language code (defaults to current language)
* @return string Translated text
*/
function __(string $key, array $replacements = [], ?string $language = null): string
{
return t($key, $replacements, $language);
}
}
|