Pređi na sadržaj

Integracije

Integracija povezuje projekat — ili ceo radni prostor — sa nečim izvan Ownlate-a. Svaka se sastoji od provajdera, podešavanja i akreditiva, koji se šifruju pre čuvanja i nikada se ne vraćaju iz API-ja.

KategorijaProvajderi
Kontrola verzijaGitHub, GitLab
Mašinsko prevođenjeOpenAI, Anthropic, Mistral, DeepL, Google, Azure — vidite AI prevođenje
ObaveštenjaSlack, Microsoft Teams, Discord, Mattermost, Matrix, Telegram
Webhook-oviObični webhook

Upravljanje integracijom

heading.anchorLabel

Integracije žive na kartici Integracije projekta, a one za ceo prostor pod Radni prostor → Integracije.

RadnjaŠta radi
Testiraj pre čuvanjaProverava unete akreditive bez čuvanja
TestirajProverava sačuvanu integraciju
PauzirajZadržava podešavanja, ali zaustavlja rad
AktivirajVraća pauziranu u pogon
Dnevnici sinhronizacijeZapis svakog izvršavanja, red po red, sa ishodom

Opseg određuje domet. Integracija sa opsegom project služi jednom projektu, ona sa workspace dostupna je svim projektima prostora. Za mašinsko prevođenje projekat bez sopstvene koristi onu prostora. Za webhook-ove, oni na nivou prostora okidaju samo kada projekat nema sopstveni. Obaveštenja se isporučuju iz integracija na nivou projekta.

Sve što integracija uradi upisuje se u njen dnevnik sinhronizacije, uključujući neuspehe — pa se webhook koji nije stigao razlikuje od onog koji nije ni poslat.

Git: GitHub i GitLab

heading.anchorLabel

Integracija sa kontrolom verzija prima adresu repozitorijuma, granu (podrazumevano main) i pristupni token.

Sinhronizacija

heading.anchorLabel

Pri sinhronizaciji Ownlate čita ownlate.yml — ili ownlate.yaml — iz korena grane. To je isti fajl koji koristi CLI:

project_id: 00000000-0000-0000-0000-000000000000
files:
- source: locales/en.json
translation: locales/{lang}.json

Za svako mapiranje uzima izvorni fajl iz repozitorijuma i otprema ga, praveći i ažurirajući segmente tačno kao ručno otpremanje. Fajl naveden u konfiguraciji a odsutan iz repozitorijuma preskače se uz zabelešku u dnevniku; repozitorijum bez konfiguracije ne sinhronizuje ništa i to izričito kaže.

files[].translation mora sadržati {lang} — to je šablon po kom se prevedeni fajlovi upisuju nazad.

Sinhronizacija radi u pozadini. Pokrenite je ručno sa kartice integracija ili preko API-ja: PATCH /v1/workspaces/{workspaceId}/integrations/{id}/sync.

Pull request-ovi

heading.anchorLabel

Napravi PR radi u suprotnom smeru: Ownlate izvozi odobrene prevode za jezike koje izaberete, upisuje ih na putanje iz ownlate.yml, gura novu granu i otvara pull request — na GitLab-u merge request. U odgovoru stiže adresa, pa je pipeline može pokupiti.

Tokenu trebaju prava da čita repozitorijum, gurne granu i otvori pull request.

Šest odredišta u ćaskanju, svako oblikovano u stilu svoje platforme — Block Kit poruka na Slack-u, MessageCard na Teams-u i tako dalje.

ProvajderŠta traži
SlackIncoming webhook URL
Microsoft TeamsConnector URL
DiscordWebhook URL
MattermostWebhook URL
TelegramToken bota, ID ćaskanja
MatrixAdresa homeserver-a, ID sobe, pristupni token

Poruke nose ključ, jezik, izvorni tekst i novi prevod, uz vezu pravo na segment u Ownlate-u.

Webhook integracija prima adresu i opcioni tajni ključ, i na nju šalje JSON:

{
"event": "translation.approved",
"payload": {
"segmentId": "…",
"projectId": "…",
"workspaceId": "…",
"language": "de",
"key": "home.title",
"sourceText": "Hello",
"translationText": "Hallo",
"actorId": "…",
"authorId": "…",
"approvedAt": "2026-08-20T09:31:00Z"
},
"timestamp": "1787654321000"
}

Svaka isporuka nosi ova zaglavlja:

ZaglavljeSadržaj
X-Ownlate-EventIme događaja
X-Ownlate-TimestampMilisekunde od epohe, ista vrednost kao u telu
X-Ownlate-Signaturesha256=…, prisutno samo kada je tajni ključ postavljen

Provera potpisa

heading.anchorLabel

Potpis je HMAC-SHA256 nad vremenskom oznakom, tačkom i sirovim telom zahteva, sa vašim tajnim ključem:

const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(`${req.headers['x-ownlate-timestamp']}.${rawBody}`)
.digest('hex')

Uporedite ga sa X-Ownlate-Signature poređenjem u konstantnom vremenu i odbacite vremensku oznaku koja je prestara da bi bila verodostojna.

Obaveštenja i webhook-ovi reaguju na ovo:

DogađajKada
translation.submittedPrevod je poslat na recenziju
translation.reviewedRecenzent je označio prevod pregledanim
translation.approvedPrevod je odobren
translation.rejectedPrevod je odbijen
segment.createdU projekat je dodat novi segment

Podrazumevano integracija prima sve. Postavite filter događaja da suzite izbor — Slack kanal koji želi samo odobrenja, webhook kome su važni samo novi ključevi.