classes/i18n.md

i18n

Overview:

i18n provides internationalization with locale management, translation loading, and parameter substitution. Uses dot-notation keys and Text::render() for template variables.

Key behavior:

Public API:

Example:

// Load translations
i18n::load('en', 'lang/en.json');
i18n::load('es', 'lang/es.json');

// Or load from arrays
i18n::loadArray('en', [
    'user' => [
        'welcome' => 'Welcome, {{ name }}!',
        'logout'  => 'Sign out',
    ],
]);

// Set locale
i18n::locale('en');

// Translate
echo i18n::t('user.welcome', ['name' => 'Alice']);
// "Welcome, Alice!"

// Fallback
i18n::locale('fr');
i18n::fallback('en');
echo i18n::t('user.welcome', ['name' => 'Bob']);
// "Welcome, Bob!" (falls back to English)

Translation file format (JSON):

{
    "user": {
        "welcome": "Welcome, {{ name }}!",
        "logout": "Sign out"
    },
    "errors": {
        "not_found": "Page not found"
    }
}