Tovább a tartalomhoz

Fájlok, formátumok és export

Egy projekt szövegei fájlként érkeznek és fájlként távoznak. Ez az oldal mindkét irányról szól.

FormátumKiterjesztésekMi marad meg
JSON.jsonBeágyazás és tömbök; az i18next többes számú alakjai (_one, _other…) egyetlen többes számú szegmenssé válnak
Flutter ARB.arbA @key metaadatokból leírás lesz, és egészében visszaíródnak; a @@locale nem szegmens
YAML.yaml, .ymlBeágyazás, blokkskalárok, Rails nyelvi gyökér (en:), többes szám one:/other: alakban
gettext.po, .potTöbb sorra tördelt értékek, msgctxt, msgid_plural és msgstr[n], #. megjegyzések, fuzzy
Android erőforrások.xml<string>, <plurals>, <string-array>, translatable="false", megjegyzések, jelölések
Apple strings.stringsMegjegyzések leírásként, escape-szekvenciák, üres értékek
Apple többes szám.stringsdictKulcsonként egy többes számú változó
Xcode String Catalog.xcstringsA katalógus minden nyelve, megjegyzések, állapotok, többes számú variációk
XLIFF.xliff, .xlf1.2 és 2.0: resname, jegyzetek, maxwidth, translate="no", állapotok
CSV.csvA fejléc nevezi meg az oszlopokat: kulcs, leírás, maximális hossz, nyelvenként egy oszlop
Markdown.md, .mdxBlokkonként egy szegmens, Markdownként szerkesztve

A formátum a kiterjesztésből adódik, és az a fájl, amelynek kiterjesztése nincs a listán, olyan üzenettel kerül elutasításra, amely felsorolja az elfogadottakat. Egy fájl legfeljebb 10 MB lehet; a nagyobb projekt projektimporttal költözik át.

A beágyazott szerkezetekből pontozott kulcsok lesznek, így ez a fájl:

json
{ "home": { "title": "Szia", "cta": "Kezdés" } }

a home.title és a home.cta kulcsot adja. Ezeket keresi a kódja, az export pedig beágyazva írja vissza a fájlt, úgy, ahogy érkezett.

A kulcs a saját fájlján belül egyedi. Az auth.json és a home.json is tartalmazhat title kulcsot; egy fájlban viszont kétszer nem szerepelhet. A kontextussal rendelkező gettext-bejegyzés kulcsa a kontextus és a szöveg együtt, így a menüben lévő Open és az ajtón lévő Open két szegmens marad.

A forrásfájl feltöltése minden kulcsához létrehoz egy szegmenst. Ugyanannak a fájlnak az ismételt feltöltése — azonos név, azonos mappa — a módja annak, hogy módosításokat küldjön:

  • A meglévő kulcs forrásszövege frissül.
  • Az a kulcs, amely már nincs a fájlban, törlődik a projektből, és a fordításaival együtt visszatér, ha a fájl újra tartalmazza.
  • Az új kulcs bekerül.
  • A fájl sorrendje lesz a szegmensek sorrendje, így a középre beszúrt blokk középen marad, nem ugrik a végére.
  • A fájlban szereplő leírás, hosszkorlát vagy „Nem fordítandó” jelölés megmarad a szegmensen.

A feltöltés vagy egészében íródik be, vagy egyáltalán nem.

Ha a feltöltéskor célnyelvet ad meg, a fájl fordításként, nem forrásként olvasódik be: az értékek kulcs alapján egyetlen fájl szegmenseihez párosulnak, és abba a nyelvbe íródnak. Ez az a fájl, amelyet kiválaszt, ennek híján az azonos nevű fájl ugyanabban a mappában, az egyetlen ilyen nevű fájl, vagy az, amelyről a feltöltés a nevét kapta — a de.yml megtalálja az en.yml-t, a values-de/strings.xml a values/strings.xml-t, az auth.json.xliff az auth.json-t. Ha ezek egyike sem dönti el, a feltöltés elutasításra kerül, ahelyett hogy szétoszlana a közös kulcsú fájlok között.

Az importált fordítás állapota a fájlból jön, ha a fájlban van ilyen: a final vagy approved="yes" jelölésű XLIFF-egység jóváhagyottként érkezik, a fuzzy gettext-bejegyzés lektorálásra. Állapot nélkül az új fordítás lektorálásra vár. Az a fordítás, amelynek a szövege megváltozott, akkor is visszakerül lektorálásra, ha jóvá volt hagyva; ugyanaz a szöveg soha nem veszíti el az állapotát. A jóváhagyott szavak beszámítanak a csomag szókeretébe, és az a feltöltés, amely túllépné a keretet, egészében elutasításra kerül.

Ez az útvonal egy másik eszközből való átköltözéshez: előbb küldje fel a forrásfájlt, aztán nyelvenként egy fájlt, vagy költöztesse át az egész projektet projektimporttal.

A fájlok mappákban élnek a projekten belül, és a fájlt a név és az útvonal azonosítja: a locales/en.json és a mobile/en.json két különböző fájl.

  • Egy mappa átnevezése egyetlen művelettel áthelyezi az alatta lévő összes fájlt.
  • Duplikátumok összevonása kitakarítja az azonos nevű és útvonalú, kétszer létrehozott fájlokat — ez gyakori eredménye annak, hogy ugyanazt a fájlt két pipeline töltötte fel, mielőtt bármelyiknek lett volna fájlazonosítója.

Az export a jóváhagyott fordításokat írja vissza fájlba, abban a formátumban és szerkezetben, amelyben a fájlt feltöltötték: az Android-fájl Android-erőforrásként jön vissza, a Rails YAML a kért nyelv alatt, a beágyazott JSON beágyazva.

MitHol
Egy fájl, egy nyelvFájlok lap → Exportálás, vagy GET /v1/workspaces/{id}/segments/export?fileId=…
Minden fájl minden nyelven ZIP-benFájlok lap → Összes exportálása, vagy GET /v1/workspaces/{id}/segments/export-zip
Egyenesen a repóbaownlate pull vagy egy repository-integráció
Futásidejű csomagkéntKiadások és OTA

Fájl nélkül az export az egész projektet egyetlen fájlba vonja össze, a megadott formátumban (alapból json). A fájlokat útvonal és név szerinti sorrendben veszi sorra, és a több fájlban is meglévő kulcs az utolsó fájlból kapja az értékét.

A többes számú alakokkal rendelkező szegmensek a formátum szintaxisában íródnak ki: JSON-ban i18next-utótagokkal, gettextben msgid_plural-lal, Android-erőforrásokban <plurals>-szal, .stringsdict és .xcstrings fájlokban variációként.

Két beállítás módosítja, mi kerül a fájlba:

  • Visszaesés a forrásra — adjon meg forrásnyelvet, és a lefordítatlan kulcsok a forrásszövegükkel íródnak ki ahelyett, hogy kimaradnának. Akkor használja, ha a hiányzó kulcs elrontaná az alkalmazást; hagyja ki, ha inkább látná a hiányt.
  • A nem fordítandó szegmensek mindig a forrásszövegükkel íródnak ki, bármit is kért egyébként.