Polyglot
Uw app- en sitestringstrings in 43 talen, vertaald door uw eigen model en string voor string gecontroleerd.
- Linux or macOS
- Python 3.9+
- Local LLM
- 6 file formats

Wat het doet
Polyglot neemt de Engelse strings die je app en site al hebben en schrijft ze in tot 42 andere talen, in de bestanden en mappen die elk platform verwacht, met een model dat je zelf draait. Elke string komt gecontroleerd terug: als een placeholder, een tag of een naam die je behoudt verloren gaat, of als het antwoord niet in het schrift van de taal staat, wordt de string opnieuw opgevraagd, en een string die nog steeds faalt wordt weggelaten en gerapporteerd in plaats van gebroken te worden uitgeleverd.
- De formaten die je gebruikt. JSON-berichtbestanden (i18next, vue-i18n, next-intl, react-intl), Flutter ARB, Android strings.xml, Apple .strings, gettext .po en Markdown-documenten, geschreven naar values-de, de.lproj, app_de.arb of locale/de.
- String voor string gecontroleerd. %1$s, {name}, {{count}}, HTML-tags, regeleinden, URL's en je behouden namen moeten exact terugkomen; het juiste schrift, geen lege of uitlopende antwoorden, niets achtergelaten in het Engels.
- Echte meervoudsvormen. Russisch krijgt one, few, many en other, Arabisch zes vormen, Japans één vorm: Android plurals en ICU-berichten volgen de eigen regels van elke taal.
- Alleen wat veranderd is. Elke goede vertaling wordt onthouden, dus het bewerken van één Engelse string stuurt één string, niet het hele bestand.
- Jouw toon en jouw termen. Een productbeschrijving, een toon, namen die nooit vertaald mogen worden en een woordenlijst gaan mee in elk verzoek, en je commentaren reizen mee als notities.
- Jouw model, jouw machine. Elke OpenAI-compatible server: vLLM, llama.cpp, Ollama of LM Studio, of een gehoste API als je kiest. Geen kosten per woord.
Getest op een echt model
- Een echt model, zes formaten, vijf schriften: een voorbeeldapp met 70 strings in JSON, Flutter ARB, Android, Apple .strings, gettext en Markdown, naar Duits, Russisch, Japans, Arabisch en Spaans, met een open model van 27 miljard parameters op onze eigen machine: 346 van de 350 strings haalden hun controles bij binnenkomst, in 7,5 minuten op een drukke gedeelde server.
- De vier die niet slaagden waren fouten in onze controles, niet van het model: een Duitse leenwoord, een e-mailadres en een Japanse meervoudsmelding. We hebben de controles gerepareerd; de volgende run stuurde alleen die vier strings en schreef alle 350 in 45 seconden.
- Meervoudsvormen meteen goed: one, few, many en other voor Russisch, zes vormen voor Arabisch, één vorm voor Japans.
- Alle 42 talen: de 22 webstrings van het voorbeeld in elke taal die Polyglot kent, van Amhaars tot Chinees (traditioneel): 924 van de 924 strings vertaald, in 15 minuten.
- En wat controles niet zien: in het Khmer werd "You are offline" terugvertaald als "you are online". Het is foutloos Khmer, dus het kwam door de controle. Daarom vraagt de documentatie om een moedertaalspreker voor de belangrijkste strings.
Wat zit erin
De vertaler
Batches naar je model, controles, opnieuw proberen met de fout benoemd, een vertaalgeheugen, talen parallel.
Zes formaten
Lezers en schrijvers die de escapes, mappen en meervoudsregels van elk platform behouden.
De controles
Op zichzelf bruikbaar: controleer een vertaling die je al hebt tegen de Engelse bron.
Een voorbeeldapp
Een kleine app in alle zes formaten met de bijbehorende configuratie, om te proberen voordat je eigen project begint.
Vereisten
- Linux of macOS met Python 3.9 of nieuwer; niets te installeren via pip.
- Een OpenAI-compatible modelserver met een meertalig instructiemodel; het onze is een open model met 27 miljard parameters.
Goed om te weten
- De controles vangen op wat een app breekt, niet de verkeerde betekenis: laat een moedertaalspreker je productpagina, paywall en juridische tekst lezen.
- gettext meervoudsregels blijven in deze versie in het Engels.
- De snelheid is die van jouw model.
- De controles zijn gratis en open source: translation-checks op GitHub. De kit voegt de vertaler, de zes formaten, meervoudsvormen, het geheugen en een jaar updates toe.
From our field notes
Vragen
Welke talen?
Arabisch, Amhaars, Bulgaars, Tsjechisch, Duits, Grieks, Spaans, Perzisch, Fins, Filipijns, Frans, Schots-Gaelisch, Hebreeuws, Haïtiaans Creools, Hongaars, Armeens, Indonesisch, Italiaans, Japans, Khmer, Kannada, Koreaans, Macedonisch, Maleis, Nederlands, Noors, Oromo, Punjabi, Pools, Portugees (Brazilië), Roemeens, Russisch, Slowaaks, Sloveens, Servisch, Zweeds, Thai, Turks, Oekraïens, Vietnamees en Chinees, vereenvoudigd en traditioneel, vanuit het Engels.
Heeft het een GPU nodig?
Polyglot zelf niet; jouw modelserver bepaalt dit. Een klein model draait op een CPU, langzaam; een GPU maakt van een groot bestand in veel talen een kwestie van minuten.
Wat gebeurt er met een string die het model verkeerd doet?
De string wordt apart opnieuw opgevraagd, met de fout benoemd. Als het nog steeds mislukt, wordt de string weggelaten uit het bestand, zodat je app voor die ene string de Engelse tekst toont, en de run deze vermeldt met de reden. Er wordt niets kapot geschreven.
Kan ik een gehoste API gebruiken?
Ja: elke dienst met een OpenAI-compatible chat-endpoint. Zet de basis-URL en modelnaam in polyglot.json en de sleutel in een bestand.
Bijgewerkt: