Pređi na sadržaj

Fajlovi, formati i izvoz

Tekstovi projekta stižu kao fajlovi i odlaze kao fajlovi. Ova stranica govori o oba smera.

Podržani formati

heading.anchorLabel
FormatEkstenzijeŠta se čuva
JSON.jsonUgnežđivanje i nizovi; i18next množina (_one, _other…) postaje jedan segment sa oblicima množine
Flutter ARB.arb@key metapodaci postaju opis i upisuju se nazad u celosti; @@locale nije segment
YAML.yaml, .ymlUgnežđivanje, blok skalari, Rails jezički koren (en:), množina kao one:/other:
gettext.po, .potVrednosti prelomljene u više redova, msgctxt, msgid_plural sa msgstr[n], #. komentari, fuzzy
Android resursi.xml<string>, <plurals>, <string-array>, translatable="false", komentari, oznake
Apple strings.stringsKomentari kao opisi, escape sekvence, prazne vrednosti
Apple množina.stringsdictJedna promenljiva množine po ključu
Xcode String Catalog.xcstringsSvi jezici kataloga, komentari, stanja, varijacije množine
XLIFF.xliff, .xlf1.2 i 2.0: resname, beleške, maxwidth, translate="no", stanja
CSV.csvZaglavlje imenuje kolone: ključ, opis, najveća dužina, po jedna kolona za svaki jezik
Markdown.md, .mdxPo segment za svaki blok, uređuje se kao Markdown

Format se uzima iz ekstenzije, a fajl sa ekstenzijom koja nije na ovom spisku odbija se uz poruku koja nabraja dozvoljene. Fajl može imati najviše 10 MB; veći projekat se preseljava uvozom projekta.

Ugnežđene strukture postaju ključevi sa tačkom, pa ovaj fajl:

json
{ "home": { "title": "Zdravo", "cta": "Počni" } }

daje ključeve home.title i home.cta. Njih vaš kod traži, a izvoz upisuje fajl nazad ugnežđen, onako kako je stigao.

Ključ je jedinstven unutar svog fajla. I auth.json i home.json mogu imati title; jedan fajl ga ne može imati dvaput. Gettext unos sa kontekstom dobija ključ od konteksta i teksta zajedno, pa Open u meniju i Open na vratima ostaju dva segmenta.

Otpremanje izvornog fajla pravi po segment za svaki ključ u njemu. Ponovno otpremanje istog fajla — isto ime, isti folder — način je da pošaljete izmene:

  • Postojećem ključu se ažurira izvorni tekst.
  • Ključ kojeg više nema u fajlu uklanja se iz projekta, a vraća se sa svojim prevodima ako ga fajl ponovo sadrži.
  • Novi ključ se dodaje.
  • Redosled u fajlu postaje redosled segmenata, pa blok umetnut u sredinu ostaje u sredini umesto da skoči na kraj.
  • Opis, ograničenje dužine ili oznaka „ne prevodi se“ koje fajl nosi ostaju na segmentu.

Otpremanje se upisuje celo ili se ne upisuje uopšte.

Uvoz postojećih prevoda

heading.anchorLabel

Otpremite fajl sa zadatim ciljnim jezikom i on se čita kao prevodi, a ne kao izvor: vrednosti se po ključu vezuju za segmente jednog fajla i upisuju u taj jezik. Taj fajl je onaj koji izaberete, a inače onaj sa istim imenom u istom folderu, jedini fajl sa tim imenom ili onaj po kome je otpremanje nazvano — de.yml nalazi en.yml, values-de/strings.xml nalazi values/strings.xml, auth.json.xliff nalazi auth.json. Kada ništa od toga ne odluči, otpremanje se odbija umesto da se rasporedi po fajlovima koji dele ključ.

Status uvezenog prevoda dolazi iz fajla kada ga fajl ima: XLIFF jedinica označena sa final ili approved="yes" stiže odobrena, fuzzy gettext unos stiže na recenziju. Bez statusa novi prevod čeka recenziju. Prevod čiji se tekst promenio vraća se na recenziju čak i ako je bio odobren; isti tekst nikada ne gubi svoj status. Odobrene reči se broje prema kvoti plana, a otpremanje koje bi prešlo kvotu odbija se u celosti.

To je put za preseljenje iz drugog alata: prvo pošaljite izvorni fajl, pa po fajl za svaki jezik, ili preselite ceo projekat uvozom projekta.

Fajlovi žive u folderima unutar projekta, a fajl se identifikuje imenom i putanjom: locales/en.json i mobile/en.json su dva različita fajla.

  • Preimenovanje foldera jednom radnjom premešta sve fajlove ispod njega.
  • Spajanje duplikata čisti fajlove istog imena i putanje napravljene dvaput — čest ishod toga što su isti fajl poslala dva pipeline-a pre nego što je ijedan imao identifikator fajla.

Izvoz upisuje odobrene prevode nazad u fajl, u formatu i strukturi u kojima je fajl otpremljen: Android fajl se vraća kao Android resursi, Rails YAML pod jezikom koji ste tražili, ugnežđeni JSON ugnežđen.

ŠtaGde
Jedan fajl, jedan jezikKartica „Fajlovi“ → Izvoz, ili GET /v1/workspaces/{id}/segments/export?fileId=…
Svaki fajl na svakom jeziku kao ZIPKartica „Fajlovi“ → Izvezi sve, ili GET /v1/workspaces/{id}/segments/export-zip
Pravo u repozitorijumownlate pull ili integracija sa repozitorijumom
Kao paket za izvršavanjeIzdanja i OTA

Bez fajla, izvoz spaja ceo projekat u jedan fajl formata koji navedete (podrazumevano json). Fajlovi se uzimaju po redosledu putanje i imena, a ključ koji živi u više fajlova uzima vrednost iz poslednjeg od njih.

Segmenti sa oblicima množine upisuju se u sintaksi formata: i18next sufiksima u JSON-u, msgid_plural u gettext-u, <plurals> u Android resursima, varijacijom u .stringsdict i .xcstrings.

Dve opcije menjaju ono što završi u fajlu:

  • Zamena izvorom — prosledite izvorni jezik i neprevedeni ključevi se upisuju sa izvornim tekstom umesto da budu izostavljeni. Koristite kada bi nedostajući ključ srušio aplikaciju; isključite kada radije želite da vidite rupu.
  • Neprevodivi segmenti uvek se upisuju sa izvornim tekstom, šta god drugo tražili.