Skip to content

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

  1. Sbírejte vždy nejlépe až na finálním výtvoru (během vývoje byste mohli sbírat nepotřebné texty)
  2. Sbírají se také texty volané z PHP pomocí funkce translate()
  3. 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)