Prezentare generală
Aplicațiile Twenty sunt create în engleză: șirurile din sursă și din manifest sunt textul sursă în engleză,en este localizarea sursă din care traduci din, iar
orice localizare lăsată netradusă revine implicit la aceasta.
Aplicația ta are două tipuri de text traducibil și ambele trec prin același
catalog locales/:
- Etichete de manifest — nume de obiecte și câmpuri, titluri de vizualizări, elemente de meniu și alte șiruri declarate în metadatele aplicației tale.
- Șiruri de caractere ale componentelor front-end — textul din interfața utilizator pe care îl redau componentele React front-end.
Marcarea șirurilor din componentele front-end
Importă ajutătoarele de traducere dintwenty-sdk/front-component:
Când să utilizați ce
Trans— text static în JSX. Folosește proprietățilemessageșivaluespentru interpolare, ca înTrans message="Hi {name}" values={{ name }}; interpolarea direct în elementele copil nu poate fi extrasă static.useTranslate().t— șiruri dinamice în interiorul unei componente. Se rerandează când utilizatorul schimbă limba. Preferați această opțiune în interiorul funcției render.t(...)(importat direct) — traducere imediată utilizabilă oriunde, inclusiv în gestionarele de evenimente, funcțiile utilitare și domeniul modulului — nu doar în interiorul funcției render.msg(...)— un descriptor cu evaluare întârziată pentru șiruri declarate ca date (constante, configurare). Rezolvați-l mai târziu cut(descriptor).
Context
Transmitețicontext pentru a dezambigua șirurile sursă identice care se traduc
în mod diferit:
"\<context>": { "\<message>": "\<translation>" }. Etichetele din manifest sunt
contextuale prin construcție — fiecare poartă rolul de metadată pe care îl joacă
(objectMetadata.labelSingular, fieldMetadata.label, view.name, …), astfel încât
același cuvânt poate fi tradus diferit ca nume de obiect și ca nume de vizualizare.
Extragerea și traducerea
Rulați comanda de extragere din directorul aplicației dvs.:t()/msg()/Trans
din sursa front-component în locales/\<locale>.json, indexate după
șirul sursă. Completați traducerile:
{name} sunt înlocuiți în timpul execuției — păstrați-i în
traducere. Orice șir lăsat gol revine la textul sursă.
Cum rulează
twenty app build compilează cataloagele și servește limba potrivită pentru
utilizatorul curent: etichetele manifestului sunt rezolvate pe partea de server, iar
cataloagele componentelor front-end sunt incluse în fiecare pachet de componente. În timpul execuției, o componentă citește
setarea regională din contextul său de execuție (limba curentă a gazdei) și rezolvă
fiecare șir în raport cu catalogul său, revenind la sursă atunci când lipsește o traducere. Schimbarea limbii în gazdă reafișează în timp real șirurile Trans și
useTranslate().t.
Etichetele manifestului sunt compilate la fiecare sincronizare — twenty app build, twenty app apply
și monitorizarea continuă twenty app dev deopotrivă — astfel încât editarea unui fișier de localizare și
sincronizarea sunt suficiente pentru a vedea textul nou. Cataloagele componentelor front-end sunt incluse în
fiecare pachet de componente la momentul compilării, astfel încât modificarea unuia dintre acestea înseamnă totuși
rerularea twenty app build (și redeployarea).
Preluarea traducerilor
twenty app pull scrie traducerile publicate ale unei aplicații înapoi în
locales/. Un catalog publicat este indexat după ID-ul mesajului, astfel încât preluarea recuperează
forma lizibilă numai pentru șirurile a căror sursă o poate vedea: etichetele
metadatelor pe care le-a preluat și șirurile t()/msg()/Trans ale componentelor front-end
prezente în proiect. Toate celelalte sunt păstrate ca atare în
locales/compiled/\<locale>.json, indexate după ID-ul mesajului. Procesul de build îmbină acele
fișiere în catalog (o intrare din locales/\<locale>.json are prioritate față de una
compilată cu același id), twenty app translations extract le lasă neatinse,
iar fiecare pull le rescrie, astfel încât se micșorează pe măsură ce mai mult din codul sursă al aplicației ajunge
în arbore. Nu le editați manual; traduceți în locales/\<locale>.json.
Un proiect fără un folder locales/ nu indică nimic despre traduceri, astfel încât o
sincronizare din acesta lasă neatinse toate traducerile deja publicate de aplicație. Pentru a elimina intenționat
traducerile publicate, păstrați folderul și ștergeți fișierele de setări regionale
din el: un folder locales/ care nu compilează într-o setare regională este o declarație
explicită, iar sincronizarea elimină corespunzător.
Elementele text copil ale Trans pot acoperi mai multe linii — spațiile albe sunt comprimate în
același mod în care JSX le comprimă, astfel încât ambele variante sunt extrase cu cheia Welcome back: