Traduz arquivos de recursos .resx do .NET
Um arquivo .resx mistura texto com ícones e outros recursos tipados em um único XML. KAERIS traduz apenas as strings, deixa o resto byte a byte, e verifica os itens de formato {0}.
KAERIS traduziu esta página e verificou cada linha traduzindo-a de volta. Um falante nativo ainda não revisou. Original em inglês
Como um arquivo .resx é construído
Um <root> XML com entradas <data name="…"><value>…</value></data>. Uma entrada com um atributo type ou mimetype (um ícone, uma imagem) não é texto. Nomes como SaveButton.Text são propriedades de controle do WinForms.
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="resmimetype"><value>text/microsoft-resx</value></resheader>
<data name="WelcomeMessage" xml:space="preserve">
<value>Welcome back, {0}!</value>
<comment>{0} is the user's first name</comment>
</data>
<data name="ItemsInCart" xml:space="preserve">
<value>You have {0} items in your cart.</value>
</data>
<data name="SaveButton.Text" xml:space="preserve">
<value>Save and close</value>
</data>
<data name="AppIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\app.ico;System.Drawing.Icon, System.Drawing</value>
</data>
</root>
O que observar nas traduções de .resx
Entradas tipadas não são texto
A entrada
AppIconna execução real abaixo é uma referência de arquivo. Ela é copiada para a saída sem modificações e nunca enviada para tradução.Itens de formato
{0}emstring.Formatdeve ser preservado; na execução real abaixo ambos foram, e um item ausente seria reportado.Chaves não são texto
Nomes como
SaveButton.Textsão propriedades de controle do WinForms. Elas são chaves: mantidas como escritas, nunca traduzidas.Comentários permanecem na origem
Elementos
<comment>não são levados para o arquivo traduzido. Mantenha notas para tradutores no recurso de origem.
Uma execução real: traduzido para Alemão e verificado
Uma execução real, 27 de outubro de 2026, nada editado manualmente: kaeris translate Strings.resx --langs de com kaeris 0.2.35, 2.6 segundos, modelo openai/gpt-4.1-mini (o modelo de fallback do serviço respondeu a este trabalho). Abaixo, o arquivo alemão que ele escreveu e o que kaeris check diz sobre ele.
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="WelcomeMessage" xml:space="preserve">
<value>Willkommen zurück, {0}!</value>
</data>
<data name="ItemsInCart" xml:space="preserve">
<value>Sie haben {0} Artikel in Ihrem Warenkorb.</value>
</data>
<data name="SaveButton.Text" xml:space="preserve">
<value>Speichern und schließen</value>
</data>
<data name="AppIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\app.ico;System.Drawing.Icon, System.Drawing</value>
</data>
</root>
$ kaeris check --source Strings.resx --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
O que o KAERIS faz com isso
Apenas strings
Entradas tipadas e binárias são preservadas literalmente, como na execução real acima: a entrada
AppIconretornou inalterada.DTD e entidades recusados
Arquivos com declaração DOCTYPE ou entidade são rejeitados antes da análise, uma proteção compartilhada com XLIFF e Android XML.
Verificação gratuita para este formato
A verificação gratuita em /check lê este formato e executa sem chave ou conta. O comando de terminal
kaeris checktambém o lê: ele aceita todos os 13 formatos desde kaeris 0.2.35, com as mesmas regras e nada enviado para lugar nenhum.
Execute em três etapas
Instale o CLI
Execute
pip install kaeris.Traduzir o arquivo de recursos
Execute
kaeris translate Resources/Strings.resx --langs de,ja.Verificar o resultado
Faça o upload da origem e do .resx traduzido na página de verificação gratuita.
pip install kaeris kaeris translate Resources/Strings.resx --langs de,ja --verify
Perguntas
Ícones e outros recursos tipados são tocados?
Não. Entradas com atributo type ou mimetype são mantidas literalmente.
Elementos são mantidos?
Não: o arquivo traduzido é gravado sem eles. Seu arquivo de origem os mantém.
É gratuito?
Sim, sem conta: 10.000 caracteres por arquivo e até 8 idiomas por execução. Uma chave API gratuita eleva o limite para 50.000 caracteres. A licença vitalícia custa $79 uma vez, usando sua própria chave OpenRouter; planos mensais começam em $19. Preços
Posso rodar pelo terminal ou em CI?
Sim. pip install kaeris, então kaeris translate Resources/Strings.resx --langs de,ja. O GitHub Action executa a mesma tradução em um pull request. Docs da CLI · GitHub Action
Continue
Referência do CLI · Referência de verificação · Traduzir no navegador · Verificação gratuita · Converter formatos · Pseudo-localização
Outros formatos: JSON · YAML · .po · ARB · XLIFF · .strings · .xcstrings · .properties · CSV · Markdown · Fluent · Android XML