🦖 O překladech TYPO3 - Jak zajistit, aby vaše webové stránky mluvily všemi dino-jazyky
TYPO3 je mohutná bestie systému CMS - silná, škálovatelná a chytřejší než průměrný velociraptor. A co je ještě lepší? Umí řvát ve více jazycích! V tomto článku vás provedeme zkamenělou džunglí překladů TYPO3. 🦕🌍
V ekosystému TYPO3 existují dva druhy překládaného obsahu:
- Statické řetězce – Představte si je jako zkameněliny pohřbené v kódu: popisky tlačítek, texty v patičce, backendové popisky.
- Databázvové záznamy – Jedná se o dynamické dinosaury: obsahové prvky, stránky, novinky atd.
🦴 Překlad statických řetězců - Kronika XLF
Abyste mohli začít, budete potřebovat soubor XLF - efektní soubor založený na XML, který obsahuje kouzla vašeho jazyka. Umístěte jej do svého rozšíření takto:
EXT:extension_name/Resources/Private/Language/locallang.xlf
Chcete přidat němčinu? Stačí předpona jako: de.locallang.xlf
Takto může vypadat váš standardní soubor locallang.xlf
(rawr!):
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" product-name="extension_name">
<body>
<trans-unit id="page.header">
<source>Header</source>
</trans-unit>
<trans-unit id="page.footer">
<source>Footer</source>
</trans-unit>
</body>
</file>
</xliff>
A nyní německá verze (alias Dino-Deutsch 🦕🇩🇪):
<xliff version="1.0">
<file source-language="en" target-language="de" datatype="plaintext" original="messages" product-name="extension_name">
<body>
<trans-unit id="page.header">
<source>Header</source>
<target>Kopfzeile</target>
</trans-unit>
<trans-unit id="page.footer">
<source>Footer</source>
<target>Fußzeile</target>
</trans-unit>
</body>
</file>
</xliff>
Chcete-li je použít v šablonách Fluid, použijte mocný ViewHelper f:translate
:
<f:translate key="page.header" />
<f:translate key="page.header" extensionName="extension_name" />
<f:translate key="LLL:EXT:extension_name/Resources/Private/Language/locallang.xlf:page.header" />
Chcete dynamické překlady s argumenty? Třeba:
<source>Přečíst více o %s</source>
Pak použijte:
<f:translate key="page.readmore" arguments="{0: 'Proč je TYPO3 T-Rexcelentní CMS'}" />
A v PHP:
\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate(
'page.readmore',
'extension_name',
['Proč je TYPO3 T-Rexcelentní CMS']
);
🧠 Backend a překlady třetích stran - Crowdin
Přemýšleli jste někdy o tom, jak je možné, že základní a oblíbená rozšíření jsou přeložena do tolika jazyků? Je to proto, že používají překladatelskou platformu Crowdin, kde pomáhá celá komunita dinosaurů.
Lidé navrhují překlady, korektoři je schvalují a TYPO3 je v pravidelných vydáních doplňuje.
Chcete-li získat balíčky překladů:
- 🦖 Jděte do Správcovské nástroje → Údržba → Manage Language Packs
- 🦕 Zvolte si jazyk nebo jazykový balíček a klikněte na "Download"
🛠️ Co když Crowdin neumí váš dino-dialekt?
Bez obav! Proto jsme vytvořili rozšíření hd_translator. Umožňuje přepisovat a upravovat překlady přímo v backendu TYPO3 jako překladatelský T-Rex v obchodě s porcelánem.
Mezi další možnosti přepisu patří např:
TypoScript
plugin.tx_extensionname._LOCAL_LANG.de.page.readmore = Mehr über %s lesen
PHP Override
$GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']['EXT:extension_name/Resources/Private/Language/locallang.xlf'][] = '/var/www/html/translations/locallang.xlf';
🧬 Překlad záznamů z databáze - Vícejazyčná DNA
Nejprve je třeba aktivovat požadované jazyky:
- 🌐 Jdi do Správa stránek → Stránky
- Klini na záložku → Jazyky → A přidej nový jazyk
🦕 Překlad stránek a obsahu
Na stránku nelze vložit obsah, když v požadovaném jazyce tato stránka neexistuje. První krok: přeložte ji!
- Otevřete modul Stránka
- Jestliže překlad stránky chybí, nabídne se možnost “Vytvořit nový překlad této stránky”
- Vyberte jazyk z nabídnutého seznamu
Nyní můžete přepínat jazyky pomocí výběru na horním panelu nástrojů.
Chcete-li přeložit prvky obsahu, můžete použít tlačítko Přeložit nad každým sloupcem jazyka. Tím se spustí průvodce, který vám umožní vybrat prvky k překladu.
TYPO3 podporuje:
- Volný režim – Každý jazyk je svým vlastním dinosaurem
- Propojený režim – Jeden dinosaurus, mnoho jazyků
- Smíšený režim – Teorie chaosu potvrzena 🦖🌀
🧾 Překlad vlastních záznamů v modulu Záznamy
- Přejděte do modulu Záznamy
- Otevřete složku
- Ujistěte se, že je přeložena také samotná složka
- Otevřte jeden záznam
- V horní čísti se zobrazí přepínač pro dostupné překlady nebo „[NOVÝ]“ pro nové záznamy.
💡 Bonusový trik: Na kartě Jazyk záznamu nastavte jazyk na Všechny jazyky, aby se zobrazoval bez ohledu na jazyk webu.
🦴 Můj jazyk v šablonách nefunguje!
Ujisti se, že máš jazyk nadefinovaný (týká se to pouze neobvyklých jazyků):
$GLOBALS['TYPO3_CONF_VARS']['SYS']['localization']['locales']['user']['us'] = 'English US';
🦖 Co definuje předponu us. nebo de.?
Ve tvém config.yaml
se podívej po:
typo3Language: us
🦕 Mohu nastavit jiný název souboru nebo cestu k souboru pro překlad?
EXT:extension_name/Resources/Private/Language/
, you're not stuck there.Můžete použít i jiný název souboru - jen vězte, že pokud se odchýlíte od souboru locallang.xlf, budete muset v šablonách nebo kódu PHP zadat celou cestu. locallang.xlf je považován za výchozí alfa soubor, takže jej TYPO3 automaticky rozpozná. Pokud se od něj odchýlíte, budete muset zvíře navádět něčím jako:
<f:translate key="LLL:EXT:extension_name/Resources/Private/Language/my_custom_file.xlf:page.header" />
Takže ano - přejmenujte se, přemístěte se, zdivočte. Prostě zanechte za sebou pořádnou překladatelskou stopu, kterou TYPO3 bude sledovat. 🦴💬