Hoppa till innehåll

i18n nyckel diff

Jämför två lokaliserings-JSON-filer och lista översättningsnycklarna som saknas i varje.

Inmatning
JSON B (översatt fil)
Utmatning

i18n nyckel diff

Klistra in din baslokaliseringsfil som JSON A och den översatta filen som JSON B, och det här verktyget plattar ut båda till nyckelsökvägar med punktnoter - "nav.home", "errors.notFound" - och rapporterar sedan exakt var de avviker. Den är byggd för det ögonblick en översättningsfil hamnar bakom sin källa: en ny skärm skickar en handfull strängar, någon redigerar den engelska kopian direkt, eller en lokal översatts för flera månader sedan och aldrig återbesöks.

Välj vad du vill rapportera: nycklar saknas från B (läggs till i källan men har aldrig översatts), nycklar som saknas från A (överblivna strängar en funktion som sedan tagits bort) eller båda på en gång. Ett fjärde läge, "oöversatt", listar nycklar som finns i båda filerna med byte-identiska värden - en stark signal som en sträng kopierades över snarare än översatt, eftersom en riktig översättning bara matchar källan av en slump. Kapslade objekt går rekursivt oavsett hur djupt filen går; arrayer jämförs som hela värden snarare än indexerade till, eftersom verkliga lokaliseringsfiler kapslar genom objekt och behandlar arrayer som ogenomskinliga data (pluralformer, ordnade listor), inte genom numrerade nycklar.

Utdata kommer som en vanlig lista, en sökväg per rad eller som JSON, redo att matas in i ett skript eller en CI-kontroll som misslyckas med en build när översättningar driver. Sammanställningen ovanför utgången visar alltid hela bilden oavsett vilket rapportläge som är valt - hur många nycklar är i A, hur många är i B och hur många som saknas på båda sidor - så att du kan fånga driften med en blick innan du läser detaljerna. Ogiltig JSON i någon av filerna rapporteras med namnet, med citation av parserns eget meddelande, så att du omedelbart vet vilken fil du ska fixa.

Allt körs lokalt i din webbläsare: båda filerna analyseras och jämförs på din enhet och laddas aldrig upp någonstans, vilket spelar roll eftersom lokaliseringsfiler ofta har outgivna funktionsnamn och intern terminologi innan en lansering. Använd den för att granska en översättares pull-begäran, granska en lokalitet före en release eller hitta varje sträng som en refactor tyst tappade.

FAQ

Vad räknas som en "nyckel" för jämförelse?
Varje bladvärde i JSON, adresserat av dess fullständiga punktbana — ett kapslat objekt som {"nav":{"home":"Home"}} producerar nyckeln "nav.home". Matriser jämförs som hela värden, inte uppdelade i indexerade nycklar.
Vad upptäcker "oöversatt"-läget egentligen?
Nycklar som finns i båda filerna med identiskt värde. Den flaggar sannolikt oöversatta strängar, men ett kort värde som är legitimt detsamma på båda språken (ett varumärke, ett nummer) kommer också att dyka upp - behandla det som ett led att kontrollera, inte en garanterad miss.
Vad händer om en nyckel innehåller ett objekt i en fil och en vanlig sträng i den andra?
Varje sida är tillplattad oberoende, så att oöverensstämmelse ytor naturligt: objektets egna kapslade nycklar visas som saknade på strängsidan och strängens nyckel visas som saknad på objektsidan.
Finns det en gräns för filstorlek?
Ingen fast gräns utöver 10 MB utdatalock som de flesta verktyg delar. Bearbetningen körs på din enhet, så även stora kataloger med tusentals nycklar jämförs på millisekunder.
Laddas mina lokaliseringsfiler upp någonstans?
Nej. Både JSON A och JSON B analyseras och jämförs helt i din webbläsare – ingen av filerna lämnar din enhet.