Internacionalização (i18n) sem dores, expandida aos seus próprios horizontes sem gastar milhares de dólares.
Totalmente gratuito. Projetos ilimitados, todos os 48 idiomas, sem validade, nenhuma chave de licença necessária.
Projetos ilimitados. Todos os 48 idiomas. Sem validade.
- Todos os 48 idiomas, traduções ilimitadas
- O painel de controle, o servidor MCP, cada SDK
- Nada para comprar, nada para inserir além da sua chave de IA
O i18n agora é simples, você pode experimentá-lo. Não me importo de receber gorjeta por isso.
- Quando você sente isso
- Se você estiver a fim
- De 1 a 1 milhão de dólares, não mais
Pagamento seguro pela Stripe. Uma chave de licença chega à sua caixa de entrada — ela silencia o prompt de doação no painel.
O que você obtém
- Projetos ilimitados, todos os 48 idiomas, sem validade
- Traduções ilimitadas, sem limite de uso
- O painel de controle, o servidor MCP para seus agentes, cada SDK
- Um contêiner, um arquivo SQLite para fazer backup
- Uma licença verificada offline: seu servidor nunca liga para casa
- Cada atualização, para a vida: docker compose pull
O que você traz
- Uma máquina com Docker: um VPS de R$ 4 é suficiente
- Uma chave de API de IA (Mistral, OpenAI, Anthropic, Google ou qualquer provedor compatível com OpenAI). As traduções são executadas na sua própria conta, por alguns centavos por app
- Cinco minutos
O suporte é feito por e-mail, com o melhor esforço possível. Precisa de alguém disponível? Os planos hospedados são para você.
Como funciona
Instale, crie o administrador, cole sua chave de IA. Cada projeto é gratuito, para sempre.
Com ONCE — um servidor novo, um domínio, cinco minutos
curl -fsSL https://get.once.com | sh once # add an app: ghcr.io/ambroselli-io/i18n-keyless:latest, pick a host name # then open it: create the admin, paste your AI key on Settings # fully free, unlimited projects — donate if you want # ONCE does the domain, the TLS, the updates and the backups
Com o Docker Compose — qualquer máquina que executa o Docker
mkdir i18n-keyless && cd i18n-keyless curl -fsSL https://i18n-keyless.com/self-hosted/docker-compose.yml -o docker-compose.yml docker compose up -d # → http://localhost:1800: create the admin, paste your AI key on Settings # fully free, unlimited projects — donate if you want
Em seguida, aponte seu SDK para o seu servidor:
I18nKeyless.init({
API_KEY: "your-project-key",
API_URL: "https://i18n.example.com",
// …
});O guia completo: https://docs.i18n-keyless.com/docs/guides/self-hosting
Por que uma doação?
Porque você mesmo gerencia o VPS e a chave da API de IA. Não há motivo para eu cobrar uma assinatura de você. Eu também odeio assinaturas. Então, em vez disso: você decide quanto vale o software para você, e eu continuo a desenvolvê-lo.
A imagem é instalada gratuitamente e executa projetos ilimitados, em todos os idiomas e sem validade.
Perguntas antes de comprar? Escreva para nós
Configure o i18n, mantenha sua base de código limpa e entregue rapidamente
Existem vários PITA com as soluções atuais de i18n. As dores são tão grandes que você adia o i18n ao máximo possível.
Isso consome tempo que você deveria passar na praia
Configure o sistema de chaves: pelo menos 1 hora de tempo de desenvolvedor sênior
De um lado para o outro para cada nova chave: 1 minuto por chave, x500 chaves, x2 idiomas = 17 horas
Com o i18n-keyless, você não precisa se preocupar com o sistema de internacionalização. Você pode ir à praia e pedir um mojito.
Hoje, a maioria dos sistemas usa chaves para traduzir o texto
É doloroso gerar isso. É doloroso manter isso.
Quando você vê um texto no aplicativo e quer atualizá-lo, precisa encontrar a chave correspondente.
Com o i18n-keyless, você não precisa se preocupar com o sistema de i18n. Use seu cérebro para algo mais interessante.
Deixe as traduções para a IA
Com o sistema de chaves, você precisa gerenciar as traduções no aplicativo.
Caso contrário, seus usuários verão someheader.welcome.title em seu aplicativo.
Com o i18n-keyless, no pior cenário offline, você vê palavras reais não traduzidas. Em um ritmo normal, você não se importa nem um pouco com o sistema i18n. Basta escrever bons títulos, focar no marketing e obter vendas.
As bases de código são lindas... até que as chaves i18n sejam infectadas
Com o sistema de chaves, quando você lê o código e o conteúdo, você precisa ler as chaves, não a linguagem natural.
Às vezes você deve fazer um ajuste porque uma frase não está gramaticalmente correta. Mas você não sabe disso porque está lendo chaves.
Com o i18n-keyless, você não precisa se preocupar com o sistema de i18n. A base de código permanece bonita.
Servidor MCP para atender a todas as suas necessidades de internacionalização
Mais seis razões pelas quais o sistema é tão otimizado para codificação agentiva.
Nenhum nome para inventar
Uma chave é uma decisão de nomeação sem resposta correta. Dois agentes escrevem login.submit e auth.button.send para o mesmo botão. Sem chaves, não há decisão a tomar.
Um arquivo para editar, não vinte
Uma alteração baseada em chave afeta o componente e cada arquivo JSON de localização, e os agentes esquecem arquivos. Aqui, uma alteração de cópia é uma edição de um único arquivo.
Zero conflitos de mesclagem em frotas de agentes
Cinco agentes em cinco ramos editam todos o en.json: um conflito garantido. Não há arquivo compartilhado, então os worktrees e os agentes em segundo plano nunca colidem.
Barato em tokens
Para reutilizar uma chave, um agente deve carregar os arquivos de localização no contexto a cada edição. Os carregamentos sem chave não fazem nada: o texto está bem ali no componente.
Diferenças legíveis
O pull request mostra frases reais. Um humano ou um agente de revisão pode julgar a cópia sem precisar descobrir o que uma chave representa.
Uma regra no seu CLAUDE.md
Toda regra de i18n que você escreve é uma regra que o agente pode quebrar. Esta regra precisa de apenas uma linha — e a alternativa é o texto real, então um erro não mostrará a.b.c na tela.
A única regra de i18n que seu agente precisa
# CLAUDE.md Write the UI copy in English and wrap it in <T>…</T> from i18n-keyless-react. That is the whole i18n setup.
Seu agente pode operá-lo, não apenas escrevê-lo
Através do servidor MCP, o agente lista as traduções ausentes, lê uma, substitui uma ruim ou importa a cópia que você já tem — com seu próprio login OAuth, sem necessidade de colar uma chave.
Leia o guia do MCPLance globalmente desde o primeiro dia
Pare de adiar o i18n por causa da complexidade. Implemente em 5 minutos, não em dias. Mantenha sua velocidade de desenvolvimento como se o i18n não tivesse sido implementado.
- Implementação em 5 minutos. Não estou brincando.
Um simples objeto de configuração e você está pronto.
- Mantenha a velocidade de desenvolvimento
Codifique como se o i18n não tivesse sido implementado de forma alguma.
- Enviar para mercados globais
Não é necessário refatorar ao escalar para novos idiomas.
- SSR & SEO prontos
Funciona com Next.js, Remix, TanStack Start e Astro. Renderize no servidor qualquer idioma para mecanismos de busca — mesma configuração de 5 minutos.
Tradicional i18n
i18n-sem-chave
Não tem segredo para configurar
Apenas o objeto de configuração mais simples e você está pronto para ir global.
E ainda mais, seu agente irá configurá-lo para você.
1. Configuração Básica
import * as I18nKeyless from "i18n-keyless-react";
I18nKeyless.init({
API_KEY: "YOUR_API_KEY",
storage: window.localStorage,
languages: {
primary: "en",
supported: ["en", "fr"],
},
});2. Uso do Componente (Aqui React; o mesmo em Vue, Angular, Flutter, Swift e Kotlin)
import { I18nKeylessText } from "i18n-keyless-react";
// import { T } from "i18n-keyless-react"; // also works
// Just write in your primary language
<I18nKeylessText>
Welcome to our website
</I18nKeylessText>3. Uso do lado do servidor (aqui Node.js; a mesma chamada no Laravel, Rails, Python e Go)
import { awaitForTranslationOrFallbackToOriginal, type Lang } from 'i18n-keyless-node';
const title = await awaitForTranslationOrFallbackToOriginal('Come see my app!', user.lang as Lang);
const body = await awaitForTranslationOrFallbackToOriginal('So many new stuff!', user.lang as Lang);
await sendExpoPushNotification({ user, title, body });4. Para texto fora dos componentes
import { getTranslation } from "i18n-keyless-react";
export default function Navigation() {
return (
<HomeTabs.Navigator>
<HomeTabs.Screen
options={{ tabBarLabel: getTranslation("Welcome") }}
name="WELCOME"
/>
</HomeTabs.Navigator>
);
}5. Escolha seu SDK: uma linha de instalação, a mesma API em todo lugar
- React, React Native, Expo, Next.js, Remix, TanStack Start, Astronpm install i18n-keyless-react
- Vue, Nuxtnpm install i18n-keyless-vue
- Angularnpm install i18n-keyless-angular
- Plain HTML, Svelte, Alpine, htmx, one script tagnpm install i18n-keyless-browser
- Node.jsnpm install i18n-keyless-node
- Laravel, PHPcomposer require i18n-keyless/laravel
- Rails, Rubybundle add i18n-keyless-rails
- Flutter, Dartflutter pub add i18n_keyless
- Swift, iOS, macOS, VaporSwiftPM: arnaudambro/i18n-keyless-swift
- Kotlin, Android, Ktorio.github.arnaudambro:i18n-keyless-kotlin
- Python, Django, Flask, FastAPIpip install i18n-keyless
- Gogo get github.com/arnaudambro/i18n-keyless/ports/go/v3
Como funcionam as traduções
i18n-keyless é uma biblioteca, combinada com um serviço de API, que permite traduzir seu texto sem a necessidade de usar chaves.
Se a tradução não for encontrada, será feito um fetch assíncrono na API do I18nKeyless para obter a tradução por meio de uma chamada de API de IA.
Essa operação é geralmente feita no modo de desenvolvimento, enquanto você está codificando. Se você perdeu uma, na produção apenas o primeiro usuário que não tiver a tradução verá um problema, e em seguida ela ficará disponível instantaneamente para usuários em todo o mundo.
Sua listagem da loja em todos os idiomas, em cada lançamento
Cada atualização significa novas notas de lançamento, uma descrição e palavras-chave — para cada idioma, em ambas as lojas. É isso que te impede de adicionar idiomas. Não o aplicativo.
- Notas de lançamento para cada idioma, em uma chamada
Escreva a atualização uma vez. awaitForTranslation retorna-a em cada idioma que você vende e a configuração da sua loja alimenta para o EAS ou fastlane.
- 48 idiomas, mapeados para os slots da App Store
pt-BR e pt-PT são duas listas; en-GB, en-AU e en-CA são três. toAppStoreLocale coloca cada tradução no lugar certo.
- Corrija uma tradução ruim sem um lançamento
No aplicativo, uma substituição no painel de controle está ativa de uma vez — sem build de hotfix, sem avaliação da loja. Na lista, execute novamente o push.
- Não é precificado por palavra
Um tradutor cobra cerca de R$ 0,50 por palavra. 2.000 strings multiplicadas por 10 idiomas é um orçamento que um desenvolvedor solo não tem. Aqui as palavras não são contadas.
A receita completa para um app Expo
// store.config.js — EAS Metadata awaits an async config
const { init, awaitForTranslation, toAppStoreLocale } = require("i18n-keyless-node");
const LANGS = ["en", "fr", "de", "ja", "pt-BR"];
const DESCRIPTION = "Bibi translates your app while you sleep…";
module.exports = async () => {
init({ API_KEY: process.env.I18N_KEYLESS_KEY, languages: { primary: "en", supported: LANGS } });
const info = {};
for (const lang of LANGS) {
info[toAppStoreLocale(lang)] = {
title: await awaitForTranslation("Bibi", lang, { context: "App Store app name, 30 characters max" }),
subtitle: await awaitForTranslation("Keyless i18n", lang, { context: "App Store subtitle, 30 characters max" }),
description: await awaitForTranslation(DESCRIPTION, lang, { context: "App Store description" }),
};
}
return { configVersion: 0, apple: { info } };
};A mesma chamada escreve arquivos de metadados do fastlane para o Google Play. As letras maiúsculas são apenas indicativas: coloque o limite no contexto e verifique o comprimento antes de enviar.
Sandbox Interativo
Veja como o i18n-keyless funciona em tempo real
Abra um projeto StackBlitz ao vivo e editável para ver as traduções serem resolvidas enquanto você digita.
Por que eu construí isso
Eu sempre adiei a internacionalização até que meu cliente a quisesse tanto que não tive escolha. Odeio ler código com chaves de internacionalização dentro, e odeio manter arquivos JSON tanto quanto ver o quão caros são os fornecedores de traduções de internacionalização. Por isso tive que criar o meu próprio, e EU AMO ISSO. Todos os meus apps agora são internacionalizados por padrão.
Arnaud Ambroselli
Fundador do i18n-keyless
Perguntas frequentes
Preciso gerenciar arquivos de tradução?
Não. Não há arquivos JSON, nem etapa de extração de chaves, nem plugin de compilação. Você escreve suas frases no seu idioma de origem, o SDK envia para a API na primeira solicitação, a API traduz com IA, e toda solicitação subsequente é servida do cache. Seu código é a única fonte de verdade.
O que acontece quando eu altero o texto de origem?
O texto de origem é a chave. Ao mudá-lo, você obterá uma nova chave com uma tradução de IA fresca. A chave antiga simplesmente deixa de ser solicitada e o painel de controle a limpa após 30 dias sem uso. Corrigir um erro de digitação é igual: corrija-o no código, implemente e o novo texto será traduzido na primeira solicitação.
Quanto custa?
Auto-hospedado: completamente gratuito, projetos ilimitados, sem assinatura e sem limite de uso — instale a imagem Docker, use sua própria chave de IA. Gostou? Me dê uma gorjeta! Hospedado: um preço fixo por projeto por mês, com base em usuários ativos mensalmente — R$ 4 até 1.000, R$ 9 até 5.000, R$ 29 até 50.000, R$ 99 até 500.000 — cobrado mensalmente, cancelável a qualquer momento. Não há precificação por assento, por palavra ou por string em nenhum dos casos.
Posso exportar minhas traduções?
Sim. O painel de controle tem um botão "Exportar JSON" que baixa todas as traduções do seu projeto como um único arquivo JSON. A exportação inclui todas as linhas, não apenas as usadas nos últimos 30 dias, então é um backup completo. Não há bloqueio: seus dados estão sempre a um clique de distância.
Um mantenedor: o que acontece se o projeto parar?
Os SDKs são licenciados pela MIT e permanecem disponíveis no npm, PyPI, RubyGems e outros registros. O servidor é público sob a Elastic License 2.0 e o protocolo entre eles está documentado, então qualquer um pode executá-lo, fazer um fork ou escrever um servidor contra ele. Suas traduções permanecem em um único export JSON a qualquer momento. Se o serviço hospedado parar: os aplicativos instalados continuam servindo suas traduções em cache, um novo cliente retorna ao idioma de origem, e apontar o SDK para sua própria instância com API_URL restaura tudo. O que você perderia é a tradução por IA de novas strings no i18n-keyless.com — não seus dados nem seu aplicativo.
Leia a resposta completa, com o códigoAssista à Demonstração
Assista a este vídeo curto para ver o i18n-keyless em ação