Pređi na sadržaj

Izdanja i OTA

Izvoz je fajl koji komitujete. Izdanje je snimak koji vaša aplikacija preuzima. Izdanja služe da promenite prevod bez nove verzije aplikacije.

Pravljenje izdanja

heading.anchorLabel

Sa kartice Izdanja projekta, ili GraphQL mutacijom createRelease. Izdanje uzima odobrene prevode projekta onakve kakvi su u ovom trenutku i zamrzava ih.

PoljeZnačenje
versionDodeljuje se automatski, raste u okviru projekta
name, descriptionVaši, da kažete šta se promenilo
splitByFilesDa li je paket grupisan po fajlovima — vidite ispod
languagesKoji su jezici završili u paketu
segmentCountKoliko ključeva nosi najpuniji jezik

Unutra ulaze samo prevodi u statusu approved. Jezik koji niko nije dovršio pojavljuje se sa gotovim ključevima i ničim drugim, pa nedovršen jezik ne blokira izdanje — ali vredi pogledati napredak pre nego što ga napravite.

Podrazumevano je paket ravna mapa ključa u vrednost, po jedna mapa za svaki jezik, pri čemu izvorni jezik nosi izvorne tekstove:

{
"en": { "home.title": "Hello" },
"sr": { "home.title": "Zdravo" }
}

Sa splitByFiles, ključevi su grupisani po fajlu iz kog su došli:

{
"en": { "5f1c…": { "home.title": "Hello" } },
"sr": { "5f1c…": { "home.title": "Zdravo" } }
}

Ravan oblik koristite kada aplikacija učitava po jedan rečnik za svaki jezik, a podeljeni kada učitava jedan imenski prostor odjednom.

Segment sa oblicima množine nosi celu mapu oblika kao vrednost, pa množina preživljava izdanje netaknuta — zbog toga se za takve tekstove bira paket, a ne ravan izvoz.

Duplirani ključevi

heading.anchorLabel

U ravnom paketu isti ključ iz dva fajla može se pojaviti samo jednom. Kada se to desi, izdanje to zabeleži: ključ, fajlove iz kojih je došao i fajl iz kog je vrednost zaista uzeta — pobeđuje poslednji. Spisak se vraća uz izdanje i prikazuje u interfejsu.

Taj izveštaj vredi pročitati pri prvom izdanju projekta razloženog na mnogo fajlova. Ili preimenujte ključeve u sudaru, ili prebacite izdanje na splitByFiles pa sudar nestaje.

OTA distribucija

heading.anchorLabel

Svaki projekat ima jednu distribuciju: trajni pristupni ključ koji njegova izdanja servira preko HTTP-a bez autentifikacije.

Nađite ga u Izdanja → Distribucija, ili GraphQL upitom releaseDistribution. Ako ključ procuri, regenerišite ga — stari prestaje da radi odmah, a svim klijentima treba novi.

Krajnje tačke

heading.anchorLabel
GET https://api.ownlate.com/public/v1/ota/{accessKey}/manifest
GET https://api.ownlate.com/public/v1/ota/{accessKey}/bundles
GET https://api.ownlate.com/public/v1/ota/{accessKey}/bundles/{language}

Manifest je mali i jeftin za povremeno proveravanje:

{ "version": 7, "languages": ["en", "sr", "de"], "publishedAt": "2026-08-20T09:31:00Z" }

Krajnje tačke paketa vraćaju prevode, za sve jezike ili za jedan:

{
"version": 7,
"language": "sr",
"splitByFiles": false,
"publishedAt": "2026-08-20T09:31:00Z",
"translations": { "home.title": "Zdravo" }
}

Sve tri podrazumevano serviraju poslednje izdanje. Dodajte ?version=5 da se zakačite za starije — korisno kada stara verzija aplikacije očekuje ključeve kojih u tekućem izdanju više nema.

Odgovori nose ETag izveden iz verzije i vremena objave. Pošaljite If-None-Match i nepromenjeni paket odgovara sa 304 Not Modified bez tela. Paketi se komprimuju kada klijent kaže da to prihvata, a i komprimovani oblik se kešira.

Razuman klijent traži manifest pri pokretanju, poredi verziju sa sačuvanom i preuzima paket samo kada se razlikuju.