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.
Támogatott formátumok
Szekció neve “Támogatott formátumok”| Formátum | Kiterjesztések | Mi marad meg |
|---|---|---|
| JSON | .json | Beá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 | .arb | A @key metaadatokból leírás lesz, és egészében visszaíródnak; a @@locale nem szegmens |
| YAML | .yaml, .yml | Beágyazás, blokkskalárok, Rails nyelvi gyökér (en:), többes szám one:/other: alakban |
| gettext | .po, .pot | Tö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 | .strings | Megjegyzések leírásként, escape-szekvenciák, üres értékek |
| Apple többes szám | .stringsdict | Kulcsonként egy többes számú változó |
| Xcode String Catalog | .xcstrings | A katalógus minden nyelve, megjegyzések, állapotok, többes számú variációk |
| XLIFF | .xliff, .xlf | 1.2 és 2.0: resname, jegyzetek, maxwidth, translate="no", állapotok |
| CSV | .csv | A fejléc nevezi meg az oszlopokat: kulcs, leírás, maximális hossz, nyelvenként egy oszlop |
| Markdown | .md, .mdx | Blokkonké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:
{ "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.
Feltöltés
Szekció neve “Feltöltés”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.
Meglévő fordítások importálása
Szekció neve “Meglévő fordítások importálása”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.
Mappák
Szekció neve “Mappák”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.
Exportálás
Szekció neve “Exportálás”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.
| Mit | Hol |
|---|---|
| Egy fájl, egy nyelv | Fájlok lap → Exportálás, vagy GET /v1/workspaces/{id}/segments/export?fileId=… |
| Minden fájl minden nyelven ZIP-ben | Fájlok lap → Összes exportálása, vagy GET /v1/workspaces/{id}/segments/export-zip |
| Egyenesen a repóba | ownlate pull vagy egy repository-integráció |
| Futásidejű csomagként | Kiadá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.