Kontinuerlig lokalisering: varje språk, vid varje merge.
Kontinuerlig lokalisering översätter nya och ändrade strängar i takt med att koden ändras, istället för i en separat fas före varje release. Varje språk är alltid redo att lanseras tillsammans med den kod som behöver det.
Vad är kontinuerlig lokalisering?
Kontinuerlig lokalisering är ett arbetssätt där nya och ändrade strängar skickas till översättning automatiskt så fort de ändras, och den översatta texten kommer tillbaka in i produkten utan att någon behöver schemalägga det.
Det finns ingen översättningsfas, eftersom översättningen aldrig slutar. En utvecklare mergear en sträng, översättningarna följer i samma flöde som koden, och en release väntar inte på någons fil.
Det är lokaliseringsdelen av continuous delivery. Ett team som mergear varje dag och lämnar över översättning varannan vecka har språk som ligger efter koden under större delen av varje månad. Kontinuerlig lokalisering minskar detta gap till längden av en körning.
Det betyder inte att maskinöversatt innehåll publiceras oläst. Du bestämmer vilka strängar som behöver en person, och en release kan endast innehålla det som har granskats.
Skillnaden ligger i när översättningen sker, inte vem som gör det.
| Vad som ändras | Batchöverlämning | Kontinuerlig |
|---|---|---|
| Sida vid sida | ||
| När översättningen sker | I en fas före varje lansering | När varje sträng ändras |
| Vad som startar det | Någon exporterar en fil | En push, en merge eller en innehållsändring |
| Storleken på varje del | Veckor av strängar på en gång | Strängarna i en ändring |
| Vad en lansering väntar på | Att filen kommer tillbaka | Granskning, för de strängar du markerat för det |
| En sen copy-ändring | Ännu en tur och retur | En omkörning av den nyckeln |
| Vad översättaren utgår från | Ett kalkylblad med strängar | Raden, med sina ordlistetermer, minnesmatchningar och skärmdumpar |
| Språk vid lansering | Stegvis, en våg efter en annan | Tillsammans, med funktionen |
- När översättningen sker
- I en fas före varje lansering
- Vad som startar det
- Någon exporterar en fil
- Storleken på varje del
- Veckor av strängar på en gång
- Vad en lansering väntar på
- Att filen kommer tillbaka
- En sen copy-ändring
- Ännu en tur och retur
- Vad översättaren utgår från
- Ett kalkylblad med strängar
- Språk vid lansering
- Stegvis, en våg efter en annan
- När översättningen sker
- När varje sträng ändras
- Vad som startar det
- En push, en merge eller en innehållsändring
- Storleken på varje del
- Strängarna i en ändring
- Vad en lansering väntar på
- Granskning, för de strängar du markerat för det
- En sen copy-ändring
- En omkörning av den nyckeln
- Vad översättaren utgår från
- Raden, med sina ordlistetermer, minnesmatchningar och skärmdumpar
- Språk vid lansering
- Tillsammans, med funktionen
Så fungerar kontinuerlig lokalisering
Följ en ny sträng genom loopen. Varje steg visar vad du faktiskt skulle se.
Ändringen når Transglot via CLI:t, GitHub Action eller appen på din Git-värd. Källfiler parsas i ett av 20 inbyggda format, och varje sträng jämförs med det projektet redan har. Endast nya och ändrade strängar går vidare.
En exakt träff från översättningsminnet fyller raden och kostar inga ord. Det som återstår skickas till Glossa med din ordlista, din stilguide och kontexten för den nyckeln.
Platshållare, pluralformer, ordlistetermer och längd kontrolleras på varje rad i varje körning. En trasig platshållare, en saknad pluralform eller en förbjuden ordlisteterm repareras en gång och kontrolleras igen. Om det misslyckas en andra gång nekas det och levereras inte. En rad som bara överskrider sin längd skrivs, och från Team-planen markeras den för granskning via automatiskt godkännande eller en QA-körning.
En körning skriver aldrig över en rad som en person har redigerat eller granskat. Om källtexten ändras senare behålls texten, körningen räknar raden och informerar dig, och från Team-planen väntar en föreslagen uppdatering bredvid för att någon ska acceptera den.
Git-apparna checkar in språkfiler till en synkroniseringsgren och håller en pull request uppdaterad. På GitHub, kommentera /translate på en pull request så hamnar filerna på den pull requestens egen gren. Eller publicera till CDN, så läser den live-produkten ändringen utan någon release alls.
Sex sätt kontinuerlig lokalisering kan gå fel, och vad som stoppar varje ett
En körning skriver över en persons arbete
Varje skrivare kontrollerar radens tillstånd först: en körning, en minnesträff och en push. En rad som en person har redigerat eller granskat står kvar, och körningen rapporterar den.
→fr, granskad, källan har just ändrats
✓behållen, räknad, rapporterad
En trasig sträng når produktion
Varje token som skickas in måste komma tillbaka ut. I ett ICU-projekt hålls ett meddelande som skulle kasta fel vid rendering borta från pull-förfrågan, kopplingen och CDN-bundeln, och körningen namnger det.
→{count, plural, one {# article}
✓utesluten ur filen, namngiven i körningen
Databasen fylls med bot-pullförfrågningar
En synkroniseringsgren och en pullförfrågan per databas. Två snabba pushar konvergerar mot den istället för att öppna en andra.
→#812 #815 #819 #823 l10n-uppdatering
✓#812 transglot/sync, uppdaterad på plats
En källredigering lämnar gamla översättningar efter sig
Varje målrads post registrerar källan den skrevs mot, så en ändrad sträng är känd som utdaterad i alla språk samtidigt, och endast den nyckeln körs igen.
→Spara blev Spara utkast. fr, de, ja säger fortfarande Spara
✓fr, de, ja körs igen för den där nyckeln
Varje körning debiterar hela projektet igen
En körning baseras på vad som ändrades. En oförändrad sträng skickas inte, en exakt minnesträff kostar inga ord, och en rad som en person äger nekas innan något spenderas.
→filen innehåller 48 000 ord
✓denna körning: 60 ord
En halvfärdig pull rensar en lokaliseringsfil
Om servern rapporterar inga poster för ett språk, vägrar pullen att skriva över en fil som har innehåll, och avslutas med kod 1 så att pipelinen stoppar där.
→pull: 0 poster för ja, filen innehåller 1 204
✓vägrar att skriva över locales/ja.json med en tom bundle
- run 4182 fr: platshållare saknas i utkastet, reparerad vid omförsök
- run 4182 de: 3 rader behållna, en person äger dem
- run 4182 ja: 41 rader från minne, 0 ord
- run 4183 ar: pluralform saknas efter omförsök, raden nekades
- pull skrivit locales/pt-BR.json
- sync transglot/sync uppdaterad, pullförfrågan #812
Alla tre ansluter till din databas. Skillnaden ligger i vad som händer när du mergar.
Hämtat från respektive företags egna sidor den 5 november 2026. Prisraden kommer från våra jämförelsesidor, länkade nedan, som visar planen och uträkningen. Priser och planer ändras, så kontrollera dem innan du bestämmer dig.
| Vad som händer | Transglot | Lokalise | Crowdin |
|---|---|---|---|
| En ny sträng sammanfogas | Översätts som standard Pushen startar körningen. En projektinställning stänger av den. | Översätts när du har konfigurerat det Automatiseringar är avstängda som standard vid skapande av nycklar och filimport. Ett arbetsflöde med ett AI-steg körs enligt sitt schema. | Översätts när du aktiverar det Under Inställningar, Auto-översättning, körs det sedan vid varje uppladdning. Git-synkroniseringen körs varje timme som standard. |
| En översättning klarar inte en kontroll | Reparerad en gång, sedan nekad För en trasig platshållare, pluralform eller förbjuden term, på varje rad i varje körning. En längdöverskridning skrivs. I ett ICU-projekt hålls en trasig rad borta från pull, kopplingarna och CDN:n. | En kontroll på fel-nivå stoppar en sparning i redigeraren Varje kontroll är inställd på Av, Varning eller Fel. | En kontroll på fel-nivå stoppar en sparning Varje kontroll är inställd på Varning eller Fel. |
| En person har redan redigerat raden | Körningen vägrar skriva den Det gör även en minnesmatchning och en push. Om källan ändras senare rapporterar körningen raden. | Automatiseringar fyller tomma värden som standard Ett tvingalternativ och en rensningsåtgärd skriver över fyllda värden. | Alternativ behåller mänskliga och godkända rader Ett alternativ för att ersätta alla finns också. |
| Pull-förfrågningar i ett aktivt repository | En gren, en pull-förfrågan Uppdateras på plats vid varje push. | En ny gren för varje pull-förfrågan Namngiven med en tidsstämpel. | En servicegren, synkroniserad varje timme Varje timme är standard, och intervallet kan ändras. |
| Vad planen räknar | Översatta ord, en gång per språk Exakta minnesträffar kostar inget. Att lagra en sträng kostar inget. | Bearbetade ord Både källspråket och målspråket räknas. | Hostade ord Ord att översätta, multiplicerat med antalet målspråk. |
| Vad som betalar för AI:n | Planens ord Det faktureras inte separat. | AI-ordkvoter beroende på plan Standard AI- och Pro AI-ord är egna rader i planen. | En separat balans, eller din egen nyckel Crowdins hanterade AI betalas med krediter, utanför prenumerationen. |
| Samma jobb: 5,000 strängar på 10 språk | $39 per månad Team, översättning ingår | $1,049 per månad Advanced (billed yearly) | $138 per månad Pro with 560K hosted words (billed monthly), AI tillkommer |
| GitHub, GitLab, Bitbucket, Azure Repos, ett CLI och en MCP-server | Alla Git-apparna börjar på Team-nivå och täcker molnversionerna. | Alla Integrationer finns på alla planer. | Alla Den täcker också Bitbucket Server. |
- En ny sträng sammanfogas
- Översätts som standardPushen startar körningen. En projektinställning stänger av den.
- En översättning klarar inte en kontroll
- Reparerad en gång, sedan nekadFör en trasig platshållare, pluralform eller förbjuden term, på varje rad i varje körning. En längdöverskridning skrivs. I ett ICU-projekt hålls en trasig rad borta från pull, kopplingarna och CDN:n.
- En person har redan redigerat raden
- Körningen vägrar skriva denDet gör även en minnesmatchning och en push. Om källan ändras senare rapporterar körningen raden.
- Pull-förfrågningar i ett aktivt repository
- En gren, en pull-förfråganUppdateras på plats vid varje push.
- Vad planen räknar
- Översatta ord, en gång per språkExakta minnesträffar kostar inget. Att lagra en sträng kostar inget.
- Vad som betalar för AI:n
- Planens ordDet faktureras inte separat.
- Samma jobb: 5,000 strängar på 10 språk
- $39 per månadTeam, översättning ingår
- GitHub, GitLab, Bitbucket, Azure Repos, ett CLI och en MCP-server
- AllaGit-apparna börjar på Team-nivå och täcker molnversionerna.
- En ny sträng sammanfogas
- Översätts när du har konfigurerat detAutomatiseringar är avstängda som standard vid skapande av nycklar och filimport. Ett arbetsflöde med ett AI-steg körs enligt sitt schema.
- En översättning klarar inte en kontroll
- En kontroll på fel-nivå stoppar en sparning i redigerarenVarje kontroll är inställd på Av, Varning eller Fel.
- En person har redan redigerat raden
- Automatiseringar fyller tomma värden som standardEtt tvingalternativ och en rensningsåtgärd skriver över fyllda värden.
- Pull-förfrågningar i ett aktivt repository
- En ny gren för varje pull-förfråganNamngiven med en tidsstämpel.
- Vad planen räknar
- Bearbetade ordBåde källspråket och målspråket räknas.
- Vad som betalar för AI:n
- AI-ordkvoter beroende på planStandard AI- och Pro AI-ord är egna rader i planen.
- Samma jobb: 5,000 strängar på 10 språk
- $1,049 per månadAdvanced (billed yearly)
- GitHub, GitLab, Bitbucket, Azure Repos, ett CLI och en MCP-server
- AllaIntegrationer finns på alla planer.
- En ny sträng sammanfogas
- Översätts när du aktiverar detUnder Inställningar, Auto-översättning, körs det sedan vid varje uppladdning. Git-synkroniseringen körs varje timme som standard.
- En översättning klarar inte en kontroll
- En kontroll på fel-nivå stoppar en sparningVarje kontroll är inställd på Varning eller Fel.
- En person har redan redigerat raden
- Alternativ behåller mänskliga och godkända raderEtt alternativ för att ersätta alla finns också.
- Pull-förfrågningar i ett aktivt repository
- En servicegren, synkroniserad varje timmeVarje timme är standard, och intervallet kan ändras.
- Vad planen räknar
- Hostade ordOrd att översätta, multiplicerat med antalet målspråk.
- Vad som betalar för AI:n
- En separat balans, eller din egen nyckelCrowdins hanterade AI betalas med krediter, utanför prenumerationen.
- Samma jobb: 5,000 strängar på 10 språk
- $138 per månadPro with 560K hosted words (billed monthly), AI tillkommer
- GitHub, GitLab, Bitbucket, Azure Repos, ett CLI och en MCP-server
- AllaDen täcker också Bitbucket Server.
Starta var dina strängar än finns. Varje ingång leder till samma pipeline.
Så här ställer du in kontinuerlig lokalisering
- 01
Hämta strängar ur koden
Varje användarvänlig sträng behöver en stabil nyckel i en lokaliseringsfil. Transglot läser 20 format, så behåll det du har.
jsonyamlxliffarb - 02
Anslut databiblioteket
Initieringskommandot hittar dina lokaliseringsfiler, loggar in dig via webbläsaren, laddar upp det du redan har och kör den första översättningen.
npx transglot@latest init - 03
Kör vid varje sammanslagning
Lägg till GitHub Action, anropa CLI från valfri annan CI eller installera appen för GitHub, GitLab, Bitbucket eller Azure Repos.
transglot push --wait - 04
Bestäm vad som kräver manuell hantering
Ställ in min_state till reviewed på en pull-regel och den filen innehåller endast strängar som en person har granskat. Lämna det avstängt och utkast publiceras.
min_state: reviewed
Vad det kostar att köra vid varje sammanslagning: orden som ändrades.
Ett ord är ett källord, räknat en gång per målspråk. En körning baseras på vad som ändrades, så en sammanslagning som berör tolv ord på fem språk räknas som sextio, oavsett projektets storlek.
Passar på Starter: $19/mo, 300,000 ord per månad.
Det är cirka 9% av kvoten.
Detta räknar endast översättning. Kvalitetskontroller, utkast för varumärkesröst och reparationer räknas också som ord, och exakta träffar från minnet kostar inget. CLI:n och GitHub Action börjar på Starter, och apparna för GitHub, GitLab, Bitbucket och Azure Repos börjar på Team.
Tre saker som kontinuerlig lokalisering inte löser
Strängar som fortfarande sitter fast i koden
En pipeline kan bara översätta det den kan läsa. Hårdkodade strängar och meningar som sätts ihop av delar måste åtgärdas först, och de är den vanligaste anledningen till att en lansering stannar.
Ingen som äger orden
Automatisering flyttar strängar. Den bestämmer inte vad din produkt kallar saker. Någon måste äga ordlistan, annars glider ett språk som ingen läser iväg utan att någon märker det.
Text som kräver omdöme
Juridisk text, prissättning och varumärkesbudskap förtjänar en människa. Skicka dem för granskning och håll dem borta från filerna som levereras tills någon har godkänt dem.
FAQ om kontinuerlig lokalisering
Frågorna teamen ställer innan de slår på det.
Vad är kontinuerlig lokalisering?
Hur skiljer sig kontinuerlig lokalisering från traditionell lokalisering?
Är kontinuerlig lokalisering detsamma som CI/CD?
Behöver jag en CI/CD-pipeline för kontinuerlig lokalisering?
Betyder kontinuerlig lokalisering att det inte finns någon mänsklig granskning?
Kan en automatiserad körning skriva över en översättares redigering?
Är kontinuerlig lokalisering värt det för ett litet team?
Hur stoppar jag en körning från att kosta mer än jag förväntar mig?
Fungerar det med GitLab, Bitbucket och Azure DevOps?
Kan jag göra kontinuerlig lokalisering utan Git?
Kan översättningar uppdateras utan en release?
Hur flyttar jag ett befintligt projekt?
41 kopplingar, redan byggda.
Anslut ett repository. Nästa merge sköter resten.
Ett kommando hittar dina språkfiler, loggar in dig via webbläsaren och kör den första översättningen.