Payload CMS

Aktualizováno: před 3 týdny · 9 min čtení

Propojte svůj Payload CMS s lokalizačním enginem, vyberte kolekce a globals, které chcete zahrnout, a Lingo.dev přeloží jejich lokalizovaná pole do cílových jazyků a zapíše je zpět do Payloadu pod příslušný jazyk.

Funguje v projektech Payload 3 s aktivní lokalizací, které používají editor formátovaného textu Lexical. Starší editor Slate podporovaný není. Překládají se lokalizovaná pole text, textarea a richText. Všechno ostatní v dokumentu zůstává beze změny.

Payload CMS vyžaduje plán Enterprise. Pokud se na stránce Připojit zobrazuje Payload CMS není ve vašem tarifu, ozvěte se nám a my to dáme do pořádku.

Než začnete#

Potřebujete tři věci:

  • Payload 3 s nastavenou lokalizací. Ujistěte se, že váš zdrojový a cílový jazyk odpovídají jazykům v konfiguraci Payload.
  • Servisní uživatel s API klíčem. Ve své auth kolekci (obvykle useAPIKey: true) nastavte users, vytvořte uživatele pro Lingo.dev a v administraci Payloadu mu vygenerujte API klíč. Uživatel potřebuje oprávnění read a update ke každé kolekci a každému globalu, které chcete překládat.
  • Lokalizační engine. Jeho glosář, hlas značky a pravidla určují výslednou podobu překladů.

Kódy jazyků musí odpovídat konfiguraci Payload

Jazyky, které vyberete v Lingo.dev, se musí přesně shodovat s kódy pod localization.locales. Pokud má Payload en a de, vyberte angličtinu a němčinu, ne angličtinu (Spojené státy): en-US a en jsou různé jazyky. Jako zdrojový jazyk použijte svůj Payload defaultLocale, protože právě tento jazyk plugin sleduje kvůli změnám.

Připojte svou instanci Payload#

1

Otevřete integraci

Přejděte do Studio -> All integrations a na kartě Payload CMS klikněte na Připojit.

2

Zadejte údaje o své instanci

PoleCo zadat
AdresaKořenová URL vaší instance, např. https://cms.example.com. Pouze HTTPS
Ověřovací kolekceCollection, ke které patří API klíč vašeho servisního uživatele, obvykle users
API klíčAPI klíč servisního uživatele
Vlastní hlavičkyNepovinné. Odesílá se s každým požadavkem do vaší instance. Pro každou z nich klikněte na Add header nebo vložte řádek Name: value, který vyplní jeden řádek.

Klikněte na Verify instance. Lingo.dev před pokračováním ověří klíč vůči vaší instanci.

3

Vyberte, co chcete překládat

NastaveníCo dělá
NázevJak toto připojení pojmenovat, například Production nebo Staging, abyste jednotlivé instance snadno rozeznali
Collections and GlobalsPokud uživatel služby nemá oprávnění ke čtení a aktualizaci, položka je přeškrtnutá a nelze ji vybrat, dokud přístup nezíská
EngineLokalizační engine, jehož glosář, pravidla a hlas značky tyto překlady dodržují
Zdrojový jazykJazyk, ve kterém vaši editoři píšou. Použijte svůj Payload defaultLocale
Cílové jazykyJazyky, do kterých se má překládat
RežimPublish překládá jen publikované změny a překlady rovnou publikuje. Draft překládá i uložení konceptů a zapisuje překlady jako koncepty. Níže najdete srovnání konceptů a publikovaného obsahu

Klikněte na Připojit.

4

Nainstalujte plugin

V posledním kroku se zobrazí vaše Webhook URL. Zkopírujte si ji hned teď. Zobrazí se jen jednou. Uložte ji jako LINGO_WEBHOOK_URL ve svém prostředí Payload, potom nainstalujte plugin a přidejte ho do konfigurace:

bash
pnpm add @lingo.dev/payloadcms
ts
import { buildConfig } from "payload";
import { lingo } from "@lingo.dev/payloadcms";

export default buildConfig({
  // ...your collections, globals, and localization config
  plugins: [
    lingo({
      webhookUrl: process.env.LINGO_WEBHOOK_URL,
    }),
  ],
});

Klikněte na Done a potom znovu nasaďte Payload. Od této chvíle se každá změna publikovaná ve zdrojovém jazyce odešle do Lingo.dev k překladu.

Co plugin dělá

Přidá endpoint GET /api/lingo/schema, který Lingo.dev řekne, která vaše pole jsou lokalizovaný text, a hook, který upozorní Lingo.dev při změně dokumentu nebo globalu. Rozsah, jazyky a engine nastavujete v dashboardu, takže je můžete měnit bez nového nasazení. Když vynecháte webhookUrl, hook se přeskočí a každý překlad budete spouštět z dashboardu.

Vyberte, co se bude překládat#

Stránka připojení má čtyři karty: Collections, Globals, Spuštění workflow a Nastavení.

Rozsah se nastavuje pro každou kolekci a každé globální nastavení zvlášť. Karty Collections a Globals vypisují vše, co vaše instance nabízí, po jednom řádku, včetně informace o tom, kdy proběhla poslední synchronizace. Každý řádek má přepínač Sync: zapněte ho a od té chvíle budou zahrnuté všechny dokumenty v dané kolekci nebo dané globální nastavení. Změna se uloží okamžitě po přepnutí a projeví se při dalším spuštění bez nutnosti nového nasazení. Přepínač v záhlaví tabulky zapíná nebo vypíná Sync pro celý seznam.

Řádek označený no read + update je uzamčený: uživatel služby nemá oprávnění ke čtení a aktualizaci, takže ho nelze přeložit. Řádek označený not localized yet má vypnutý Sync.

Jazyky, engine a režim změníte na kartě Nastavení.

Uvnitř dokumentu určuje, co se přeloží, konfigurace polí v Payload:

PolePřekládá se
Pole text, textarea a richText označená jako localized: trueAno
Stejné typy polí uvnitř lokalizovaného group, array, blocks nebo tabsAno
Blocks a inline blocks vložené do rich textuAno, jejich textová pole podle stejných pravidel
select, radio, checkbox, number, date, relationship, upload, json, code, email, pointNe
Pole, která nejsou lokalizovaná a nemají žádný lokalizovaný nadřazený prvekNe
id, blockType, blockNameNe

Formátovaný text se překládá jako strom Lexical. Zachová se formátování, odkazy, nahrané soubory i struktura bloků a nahradí se pouze text uvnitř. Věta rozdělená tučným písmem nebo odkazem se přeloží jako jedna věta.

Chcete-li pole zahrnout do rozsahu, označte ho v Payloadu jako localized: true a znovu nasaďte aplikaci. Při dalším běhu se zahrne.

Synchronizace a nový překlad#

Automatická spuštění. Když je v pluginu nastavené webhookUrl, každé uložení dokumentu nebo globálního nastavení ve zdrojovém jazyce odešle oznámení do Lingo.dev. Uložení provedená v krátkém časovém okně se sloučí do jednoho spuštění. Uložení v jiných jazycích, uložení konceptů (pokud připojení není v režimu Draft) a obsah mimo váš rozsah se ignorují.

Ruční spuštění. Dvě tlačítka, dvě různé úlohy:

TlačítkoCo děláKdy ho použít
SyncPřeloží jen to, co se od posledního běhu změniloDoplnění obsahu po připojení nebo opakování po chybě
RetranslateZnovu přeloží vše v rozsahu od začátkuPo změně glosáře, hlasu značky nebo pravidel vašeho enginu

Obě najdete v záhlaví stránky, kde pokrývají vše se zapnutým Sync. Retranslate ze záhlaví vás nejdřív požádá o potvrzení. Pokud chcete spustit jen některé kolekce nebo globální nastavení, zaškrtněte jejich řádky: zobrazí se Queue sync (N) a Queue retranslation (N) a budou platit jen pro tyto řádky. Řádek lze zaškrtnout až po zapnutí jeho přepínače Sync.

Při připojení se nic nepřekládá. Pokud chcete přeložit obsah, který už máte, klikněte v záhlaví stránky na Sync. Přidání cílového jazyka později funguje stejně: doplní ho další Sync.

Pro jedno připojení může současně běžet jen jedno spuštění. Další požadavky se zařadí do fronty a spustí se postupně.

Retranslate přepíše ruční úpravy

Retranslate znovu vygeneruje každé přeložené pole ve svém rozsahu, včetně překladů, které váš tým v Payloadu upravil ručně. Sync znovu vygeneruje jen pole, jejichž zdrojový text se změnil, takže ruční úpravy jinde zůstanou zachované.

Sledujte běh#

Karta Spuštění workflow zobrazuje všechna spuštění: kdy začala, co je spustilo (Webhook nebo Manual, potom Sync nebo Retranslate), které jazyky zahrnovala, jak dlouho trvala a jaký mají stav. Spuštění ve frontě nebo právě běžící spuštění má tlačítko Stop. Otevřením řádku zobrazíte výsledek pro jednotlivé jazyky.

StavVýznam
Ve frontěČeká na běh před sebou
ProbíháZpracovává se
DokončenoVšechny překlady byly zapsány zpět
AktuálníOd posledního běhu se v rozsahu nic nezměnilo. Nejde o chybu
Nezdařilo seSpuštění bylo zastaveno. Důvod je uvedený na řádku spuštění
ZrušenoZastavil ho někdo z vašeho týmu

Neúspěšné spuštění zachová vše, co už se stihlo zapsat. Chybová zpráva vypíše dokumenty, které se nezapsaly, a při dalším Sync se jejich zápis zkusí znovu. Dokument, který editor během běhu uložil, se přeskočí a zpracuje při dalším spuštění.

Kam se překlady zapisují#

Každý překlad se zapisuje do stejného dokumentu nebo globálu pod svým cílovým jazykem podle vlastního lokalizačního modelu Payload. Zapisují se jen přeložená pole. Všechna ostatní pole zůstávají beze změny. Zápis probíhá pod servisním uživatelem a nespustí nové spuštění.

Existující překlady se zachovávají. Při první synchronizaci dokumentu zůstane vše, co už cílový jazyk obsahuje, na místě, a přeloží se jen chybějící pole. Pole, které stále obsahuje výchozí hodnotu Payloadu, se považuje za chybějící. Pomocí Retranslate nahradíte existující překlady.

Koncepty vs. publikované#

V režimu Publish spouštějí běh jen publikované změny a překlady se publikují hned po zapsání. Payload publikuje celý dokument, takže se s překladem zveřejní i všechny nepublikované úpravy konceptu v něm.

V režimu Draft spouštějí běh i uložení konceptů. Lingo.dev načte nejnovější koncept zdroje a zapíše každý překlad jako koncept. Pro vaše čtenáře se nic nezmění, dokud někdo překlad v Payload nepublikuje. Tento režim použijte při vyhodnocování kvality překladu nebo když překlady procházejí kontrolou.

Režim můžete později změnit na kartě Nastavení.

Správa připojení#

Nastavení#

Karta Nastavení zobrazuje instanci, ze které připojení čte, které kolekce a globální nastavení mají zapnutý Sync a zda je připojení Working nebo Cannot be reached. Umožňuje změnit název, zdrojový jazyk, cílové jazyky, engine a režim. Každá změna zachová webhook URL, takže není potřeba nové nasazení.

Adresa a API klíč se nastavují při vytvoření připojení a později je už nelze změnit. Pokud chcete Lingo.dev nasměrovat na jinou adresu nebo jiný klíč, připojení odpojte a vytvořte znovu.

Odpojení#

Možnost Disconnect dole na kartě Nastavení zastaví, aby Lingo.dev z instance četl a zapisoval do ní. Tím se odstraní připojení, jeho historie spuštění i záznam o tom, co už bylo přeloženo. Překlady, které už byly v Payload zapsané, zůstanou zachované. Potom ze své konfigurace odeberte LINGO_WEBHOOK_URL nebo plugin.

Po opětovném připojení dostanete novou webhook URL

Nové připojení dostane novou webhook URL, takže než budou automatické běhy znovu fungovat, aktualizujte LINGO_WEBHOOK_URL a proveďte nové nasazení. První synchronizace znovu načte každý dokument v rozsahu, ponechá překlady, které už Payload má, a doplní chybějící místa.

Omezení#

LimitDetail
Verze PayloaduPayload 3 s nakonfigurovanou lokalizací
Typy políPole text, textarea a richText (pouze Lexical) označená jako localized
RozsahCelé kolekce a globály. Bez možnosti výběru jednotlivých polí
PřipojeníNěkolik na organizaci, jedna pro každou Payload instanci
Souběžné běhyJedna na připojení
AdresaPouze HTTPS

Řešení potíží#

Připojení selže se zprávou „Payload rejected the API key“. Zkontrolujte klíč, slug auth kolekce a také to, že je na této kolekci zapnuté useAPIKey.

Kolekce nebo globální nastavení zobrazuje „no read + update“. Udělte uživateli služby oprávnění ke čtení a aktualizaci v konfiguraci přístupu dané kolekce a potom stránku připojení znovu načtěte. Přepínač Sync na řádku se odemkne.

První běh selže se zprávou „The Lingo plugin isn't installed“. Přidejte @lingo.dev/payloadcms do plugins ve své Payload konfiguraci a znovu nasaďte aplikaci. Připojení funguje i bez pluginu, synchronizace ale ne.

Publikování v Payload nespustí běh. Zkontrolujte, že je nastavené LINGO_WEBHOOK_URL, že je nakonfigurované localization, že kolekce nebo globální nastavení spadá do rozsahu, že uložení proběhlo ve zdrojovém jazyce a že šlo o publikování, ne o koncept, pokud připojení není v režimu Draft.

Pole se nepřekládá. Není u něj ani u žádného nadřazeného prvku nastavené localized: true, nebo nejde o pole typu text, textarea nebo richText.

Karta Nastavení zobrazuje připojení jako Cannot be reached. Zkontrolujte, že instance běží, že je klíč stále platný a že všechny hlavičky brány stále fungují. Adresu ani klíč nelze u existujícího připojení upravit, takže pokud se některý z nich změnil, připojení odpojte, znovu ho vytvořte a aktualizujte LINGO_WEBHOOK_URL novou webhook URL.

Další kroky#