Domande frequenti
Tutto ciò che devi sapere su i18n-keyless prima di iniziare.
Devo gestire i file di traduzione?
No. Non ci sono file JSON, non ci sono passaggi di estrazione delle chiavi e nessun plugin di build-time. Scrivi le tue frasi nella tua lingua di origine, l'SDK le invia all'API alla prima richiesta, l'API le traduce con l'IA e ogni richiesta successiva viene servita dalla cache. Il tuo codice è l'unica fonte di verità.
Cosa succede quando modifico il testo di origine?
Il testo di origine è la chiave. Cambiandolo otterrai una nuova chiave con una traduzione AI fresca. La chiave vecchia semplicemente smette di essere richiesta e la dashboard la rimuove dopo 30 giorni di inattività. Anche la correzione di un refuso funziona allo stesso modo: correggilo nel codice, distribuiscilo e il nuovo testo verrà tradotto alla prima richiesta.
Quanto costa?
Self-hosted: completamente gratuito, progetti illimitati, senza abbonamento e senza limiti d'uso — installa l'immagine Docker, usa la tua chiave AI. Ti piace? Lasciami un tip! Hosted: un prezzo fisso per progetto al mese, in base agli utenti attivi mensilmente — 4 € fino a 1.000, 9 € fino a 5.000, 29 € fino a 50.000, 99 € fino a 500.000 — addebitato mensilmente, annullabile in qualsiasi momento. Non c'è alcuna tariffazione per posto, per parola o per stringa in entrambi i casi.
Posso esportare le mie traduzioni?
Sì. La dashboard ha un pulsante "Esporta JSON" che scarica tutte le traduzioni del tuo progetto come un singolo file JSON. L'esportazione include tutte le righe, non solo quelle utilizzate negli ultimi 30 giorni, quindi è un backup completo. Non c'è alcun vincolo: i tuoi dati sono sempre a un clic di distanza.
Quali framework supporta?
React, React Native, Vue, Svelte, Vanilla JS, Node.js, Ruby on Rails, Python, Go, Swift e Kotlin. Ogni SDK funziona allo stesso modo: avvolgi il tuo testo in una chiamata di traduzione e l'API restituisce la traduzione per la lingua corrente. Gli SDK server sono thread-safe e memorizzano le traduzioni nella cache in memoria.
Quante lingue sono supportate?
48 lingue, incluse varianti regionali come zh-Hans / zh-Hant, en / en-GB, fr / fr-CA, pt / pt-BR e es / es-MX. L'arabo, l'ebraico e l'urdu sono nella lista, quindi funzionano anche le lingue da destra a sinistra. Aggiungere una nuova lingua al tuo progetto è un clic nella dashboard.
Funziona con il rendering lato server?
Sì. L'SDK Node.js utilizza AsyncLocalStorage in modo che i tuoi loader, le funzioni head e i componenti server possano tradurre senza un provider React. Sul lato client, il provider React idrata dall'HTML renderizzato lato server. Nella documentazione ci sono guide passo-passo per Next.js, Nuxt e TanStack Start.
Rallenta la mia app?
La prima volta che viene richiesta una nuova stringa, l'API chiama il modello AI — circa mezzo secondo per una stringa UI breve, di più per un paragrafo. Ogni richiesta successiva viene servita dal database, che è un normale cache hit. L'SDK inoltre memorizza le traduzioni localmente, quindi gli utenti che tornano non vedono alcun ritardo di rete. Se dieci utenti richiedono la stessa stringa contemporaneamente, viene effettuata una sola chiamata all'AI.
Cosa succede se il servizio va giù?
Ogni SDK memorizza le traduzioni localmente — in localStorage sul web, in AsyncStorage sui dispositivi mobili e in memoria sul server. Se l'API non è raggiungibile, l'SDK fornisce le traduzioni memorizzate. I tuoi utenti vedono l'ultima traduzione nota, mai una stringa vuota. Quando l'API torna disponibile, l'SDK si aggiorna silenziosamente.
Quale provider di intelligenza artificiale utilizza?
Sono supportati cinque provider: Mistral, OpenAI, Anthropic, Google e qualsiasi endpoint compatibile con OpenAI come Ollama, Groq o Together. L'operatore seleziona il provider e il modello dal dashboard o dall'ambiente. Il valore predefinito su i18n-keyless.com è Mistral. Gli utenti auto-ospitati possono eseguire Ollama localmente e non inviare nulla a terze parti.
Posso sovrascrivere una traduzione AI?
Sì. Fai clic su qualsiasi cella nella dashboard, digita il testo corretto e salva. La correzione è permanente: l'API non sovrascrive mai un valore impostato manualmente. Puoi anche sovrascrivere le traduzioni tramite l'API o tramite il server MCP, quindi un agente di codifica AI può correggere una traduzione per te.
Posso migrare da i18next o da un'altra libreria?
Sì. Nella documentazione è presente una guida alla migrazione passo-passo per i18next, react-intl e Lokalise. L'API ha un endpoint di migrazione che importa le tue traduzioni esistenti una alla volta, senza chiamate all'IA né addebiti. Il server MCP ha lo stesso strumento, quindi un agente AI può eseguire la migrazione per te.
C'è un piano gratuito?
La versione self-hosted è completamente gratuita con progetti illimitati — installa l'immagine Docker, utilizza la tua chiave AI personale e conserva i tuoi dati sul tuo server. Nessun limite di tempo, nessuna restrizione di funzionalità. Il piano hosted parte da 4 euro al mese per progetto se preferisci non gestire un server.
Il codice sorgente è disponibile?
Il server, la dashboard e l'immagine Docker sono pubblicati su GitHub con licenza Elastic 2.0. Puoi leggere ogni riga, eseguire il codice e modificarlo. Gli SDK — React, Vue, Node, Rails e gli altri — sono con licenza MIT. L'unica restrizione: non puoi offrire il software come servizio ospitato a terze parti.
Un maintainer: cosa succede se il progetto si ferma?
Gli SDK sono sotto licenza MIT e rimangono disponibili su npm, PyPI, RubyGems e altri registri. Il server è pubblico sotto la licenza Elastic 2.0 e il protocollo tra loro è documentato, quindi chiunque può eseguirlo, forkarlo o scrivere un server contro di esso. Le tue traduzioni rimangono in un'unica esportazione JSON in qualsiasi momento. Se il servizio ospitato si ferma: le app installate continuano a servire le loro traduzioni memorizzate nella cache, un nuovo client torna alla lingua di origine, e indirizzando l'SDK alla tua istanza con API_URL tutto viene ripristinato. Quello che perderesti è la traduzione AI di nuove stringhe su i18n-keyless.com — non i tuoi dati né la tua app.
Leggi la risposta completa, con il codiceIl contesto non è solo una chiave travestita?
No. Una chiave è obbligatoria per ogni stringa, deve essere univoca e risiede in uno spazio dei nomi globale che gestisci manualmente. Un contesto è opzionale, applicato alle poche stringhe il cui significato è ambiguo — "Close" per chiudere la finestra o "close" per distanza — e descrive il significato, non nomina la stringa. La maggior parte delle stringhe non ne ha. Il testo originale rimane il riferimento per la ricerca, con o senza contesto; due testi identici con due contesti sono semplicemente due righe.
Leggi la risposta completa, con il codicePosso rivedere la copia in una pull request?
Sì. La stringa di origine è nel codice, quindi ogni cambiamento di formulazione è una differenza che il revisore legge nella pull request in linguaggio piano piuttosto che in un nome di chiave. Ciò che non è in git è la traduzione nelle altre lingue: risiede nel database, come avviene con qualsiasi piattaforma di traduzione, e la si revisiona nella dashboard, dove un contrassegno "revisionato" per cella separa ciò che una persona ha controllato da ciò che ha scritto l'IA, o nell'esportazione JSON.
Leggi la risposta completa, con il codicePerché non Tolgee, che è anche open source?
Tolgee è una piattaforma di traduzione basata su chiavi sotto licenza Apache 2.0, con editing in contesto, contesto screenshot e memoria di traduzione; se desideri queste funzionalità o traduttori nel processo, è una buona scelta. i18n-keyless non ha chiavi, non ha file di localizzazione, la traduzione tramite AI è attiva per impostazione predefinita con una sovrascrittura manuale che l'AI non riscrive mai, un server sotto licenza Elastic 2.0 con SDK MIT, e un'immagine self-hosted che gira su SQLite in un singolo container. Per una correzione in contesto, scatta uno screenshot e forniscilo a un agente AI collegato al server MCP: trova la stringa e sovrascrive la traduzione. La pagina di confronto nella documentazione mostra i prezzi affiancati.
Leggi la risposta completa, con il codiceSelf-hosted o abbonamento: quale?
Auto-ospitato: la stessa immagine Docker sul tuo server, completamente gratuita con progetti illimitati, con la tua chiave AI e i tuoi dati a casa. Ti piace? Lasciami una mancia! Abbonamento: lo gestiamo noi, gli aggiornamenti sono automatici, un prezzo fisso a partire da 4 € al mese per progetto. Scegli l'abbonamento se preferisci non gestire un server.
Leggi la risposta completa, con il codiceCome gestisco valori dinamici come nomi o conteggi?
Usa l'opzione di sostituzione. Scrivi la frase con un segnaposto — "Ciao {name}, hai {count} elementi" — e passa i valori al momento del rendering con replace: { "{name}": userName, "{count}": String(n) }. L'IA vede il segnaposto e lo mantiene in ogni traduzione. L'SDK sostituisce il valore al runtime.
Come gestisco i plurali?
Scrivi una forma con {count} in cui inserire il numero e passa il numero come count. L'API memorizza un messaggio plurale ICU per lingua con esattamente le forme di cui la lingua ha bisogno — due in francese, quattro in russo, sei in arabo — verificate tramite Intl.PluralRules, e lo SDK seleziona quella giusta. Aggiungi i numeri ordinali per i ranghi (1st, 2nd). Non scrivi mai tu stesso i rami.
Leggi la risposta completa, con il codiceCome gestisco i generi?
Passa il valore in select — select={{ gender: "femminile" }} — e il modello scrive una variante per valore, in ogni lingua, tenendo conto delle esigenze linguistiche. I valori sono identificatori di un insieme chiuso, al massimo 10 per variabile e 2 variabili per frase; un select e un count possono essere combinati. I valori aperti come un nome rimangono una sostituzione.
Leggi la risposta completa, con il codiceCome formato le date, i numeri e le valute?
L'SDK non li formatta, lo fa il tuo runtime. Usa Intl.DateTimeFormat e Intl.NumberFormat con la lingua corrente dell'SDK, quindi inserisci il risultato nella frase con replace. Una frase, una traduzione, il formato corretto in ogni lingua.
Leggi la risposta completa, con il codicePosso personalizzare il prompt di traduzione?
No, e non devi farlo. Il prompt legge il tuo contesto per ogni chiave: è qui che si definiscono tono, pubblico e significato, ed è ciò che fa sì che la stessa parola venga tradotta diversamente in due contesti diversi. E qualsiasi traduzione può essere sovrascritta manualmente nella dashboard; l'API non sovrascrive mai ciò che hai scritto.
Leggi la risposta completa, con il codiceHa un server MCP per agenti di codifica AI?
Sì. L'API è anche un server MCP con autenticazione OAuth 2.1. Un agente AI può elencare le traduzioni, tradurre stringhe, sovrascrivere valori, importare traduzioni esistenti e gestire i membri del progetto — le stesse operazioni che un umano esegue nella dashboard. Collegalo da Claude Code, Cursor, Windsurf o qualsiasi client compatibile con MCP.
Posso usarlo per stringhe di backend e email?
Sì. Gli SDK di Node.js, Ruby on Rails, Python e Go vengono eseguiti sul server. Traduci un oggetto email, un messaggio di errore o una notifica push nello stesso modo in cui traduci una stringa dell'interfaccia utente. Gli SDK lato server memorizzano le traduzioni nella cache in memoria e le aggiornano in background, quindi non aggiungono latenza alla tua richiesta.
Può lavorare sull'intero mio team alle traduzioni?
Sì. Aggiungi membri del team a un progetto dalla dashboard o tramite l'API. Ogni membro può visualizzare tutte le traduzioni, sovrascrivere qualsiasi valore e aggiungere lingue. Gli amministratori creano progetti e gestiscono i membri. Non c'è una tariffazione per posto: aggiungi quante persone ti servono.
Come posso correggere un refuso?
Il testo di origine è la chiave. Se correggi un refuso nel testo di origine, ottieni una nuova chiave con una nuova traduzione; la vecchia stringa semplicemente smette di essere richiesta e la dashboard la pulisce automaticamente dopo 30 giorni di inattività. Un refuso in una traduzione: modifica la cella nella dashboard e la correzione è permanente.
Leggi la risposta completa, con il codice