Lingo.dev CLI a localization API podporují dva způsoby lokalizace e-mailů: překlad souborů šablon při buildu, abyste mohli nasadit šablony pro každý jazyk, nebo překlad obsahu za běhu před odesláním. Obojí prochází přes nakonfigurovaný lokalizační engine, který automaticky použije pravidla glosáře, hlas značky a výběr modelu.
Vyberte si přístup#
| Přístup | Nejvhodnější pro | Jak to funguje |
|---|---|---|
| Build-time (CLI) | Soubory šablon – JSON řetězce pro React-email | Přeložte soubory v repozitáři a nasaďte šablony pro každý jazyk |
| Runtime (API) | Dynamický obsah, šablony renderované v ESP | Před odesláním zavolejte localization API a předejte přeložený obsah svému e-mailovému providerovi |
Který přístup zvolit?
Pokud máte překládatelný obsah e-mailů v repozitáři jako resource soubory, použijte přístup při buildu. Pokud se obsah e-mailů generuje dynamicky nebo je uložený u vašeho poskytovatele e-mailových služeb, použijte runtime přístup.
Co budete potřebovat#
Každý překlad prochází přes lokalizační engine — konfiguraci, která určuje, jaký model LLM, glosář, hlas značky a pravidla se použijí. Vytvořte si ho v dashboardu Lingo.dev a pak nainstalujte a autentizujte CLI:
npm install -g @lingo.dev/cli
lingo loginCLI vyžaduje Node 22+. V CI nastavte LINGO_API_KEY místo spouštění lingo login.
Lokalizace při buildu#
CLI překládá obsah e-mailů z JSON resource souborů. Vyčleňte překládatelný text do JSON, namiřte na něj CLI a získejte soubory pro jednotlivé jazyky vedle zdrojových souborů.
Šablony react-email jsou React komponenty, které se renderují do HTML. Vyčleňte přeložitelné řetězce do JSON resource souborů pomocí i18n knihovny, například react-i18next, a pak přeložte JSON soubory pomocí CLI.
Spusťte lingo init pro vygenerování konfigurace a lingo link pro připojení organizace a engine. Výsledný soubor .lingo/config.json vypadá takto:
{
"orgId": "org_abc123",
"engineId": "eng_abc123",
"sourceLocale": "en",
"targetLocales": ["es", "fr", "de", "ja"],
"files": [{ "pattern": "emails/locales/en.json" }]
}Jazyk je součástí cesty: CLI nahradí zdrojový jazyk ve vzoru každým cílovým jazykem, takže emails/locales/en.json vytvoří emails/locales/es.json, emails/locales/fr.json a další. Soubor .lingo/config.json commitněte do repozitáře.
Při prvním spuštění přeložte všechny jazyky, při dalších pak překládejte jen to, co se změnilo:
lingo push --backfill-missing # first run / new locale
lingo push # delta on later runsPři renderování předejte jazyk své e-mailové komponentě a načtěte odpovídající JSON soubor. Funkce react-email render() pak vytvoří HTML pro daný jazyk připravené k odeslání.
Kdykoli si chcete stáhnout výsledky z posledního push běhu, použijte lingo pull. Pokud chcete ověřit, že jsou překlady aktuální, aniž by se zapisovaly změny (například v CI), použijte lingo check.
Lokalizace za běhu#
Když je obsah e-mailů dynamický – personalizované notifikace, souhrny obsahu vytvořeného uživateli nebo marketingové texty uložené v CMS – přeložte ho za běhu před odesláním. Tento přístup vychází ze vzoru popsaného v průvodci Translation API.
async function sendLocalizedEmail(userId, templateId, content) {
const user = await db.users.findById(userId);
const response = await fetch("https://api.lingo.dev/process/localize", {
method: "POST",
headers: {
"X-API-Key": process.env.LINGODOTDEV_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
engineId: "eng_abc123",
sourceLocale: "en",
targetLocale: user.locale,
data: {
subject: content.subject,
preheader: content.preheader,
body: content.body,
},
}),
});
const { data } = await response.json();
await emailProvider.send({
to: user.email,
subject: data.subject,
html: renderTemplate(templateId, data),
});
}Osvědčené postupy#
| Oblast | Doporučení |
|---|---|
| Předměty e-mailů | Držte se pod 50 znaky. Pomocí glosáře uzamkněte názvy značek, aby se nepřekládaly. |
| Preview text | Překládejte ho odděleně od těla e-mailu – e-mailoví klienti ho zobrazují samostatně. |
| Hlas značky | Nastavte tone pro každý jazyk v lokalizačním engine. Marketingové e-maily v japonštině vyžadují jiný rejstřík než v němčině. |
| RTL jazyky | Otestujte vyrenderovaný výstup v e-mailových klientech pro arabštinu, hebrejštinu a perštinu. Zpracování HTML dir="rtl" se napříč klienty liší. |
| Uzamykání klíčů | Použijte locked keys pro URL, názvy produktů a právní identifikátory, které by se neměly překládat. |
