Překlady a internacionalizace
Systém překladu je součástí šablonovacího enginu a integrován s databází překladu.
Syntaxe {S ...}
Prvek překladový řetězec (string). Zůstává zachován, jen je spouštěn až v konečné fázi parsování v metodě after(). Vše řeší core/Template/Translate.php.
{S Good Morning}
{S Testovací překladový | text}
Plurální překlady
Obohaceno o plurální překlady. Syntaxe s náhradami:
{$piv=3;$alcohol='zelenou';}
{S Vypil ## a ### piv|{$alcohol}|{$piv}}
##- běžná náhrada###- plurální varianta (počet)
Příklady
{S Vypil ## a ### piv|rum|8}
{S Běhám ## a mám již ### odběhnutých stovek|utramaratony|6}
PHP funkce translate()
Překlady je možné volat i z PHP skriptů:
<?php
use function Petrovo\I18n\translate;
translate('Download cropped image', LANG, 'backend');
translate('Vypil ## a ### piv|rum|8', LANG);
translate('Běhám ## a mám již ### odběhnutých stovek|utramaratony|6', LANG);
Sběr překladů
Překlady je možné sbírat jak na frontendu, tak na backendu. Tam je vhodné dodržet sběr, když jsou anglické (defaultní jazyk).
Konfigurace
V config/content.yaml:
# add texts for translation into DB
addTranslation: true
addAdminTranslation: false
Postup
- Sbírejte vždy nejlépe až na finálním výtvoru (během vývoje byste mohli sbírat nepotřebné texty)
- Sbírají se také texty volané z PHP pomocí funkce
translate() - Nasbírané překlady lze hromadně přeložit v administraci
Mezipaměť překladu
Do mezipaměti se dávají do jedné položky veškeré překladové texty pro daný jazyk a sekci. Klíč je tedy např. translations_frontend_cs pro frontend v češtině.
Díky mezipaměti se nemusí překlady načítat z databáze při každém požadavku.
Jazyky
Podporované jazyky jsou definovány v konfiguraci a jsou dostupné jako konstanta LANG v aplikaci.
Jazyk se určuje:
1. Z URL (jazykový prefix)
2. Z cookies
3. Z defaultního jazyka (DEFAULT_LANG)