Traduire les fichiers de ressources .NET .resx
Un fichier .resx mélange du texte avec des icônes et d'autres ressources typées dans un seul XML. KAERIS ne traduit que les chaînes, laisse le reste octet par octet, et vérifie les éléments de format {0}.
KAERIS a traduit cette page et vérifié chaque ligne en la retraduisant. Un locuteur natif ne l'a pas encore revue. Original anglais
Comment un fichier .resx est construit
Une balise XML <root> avec des entrées <data name="…"><value>…</value></data>. Une entrée avec un attribut type ou mimetype (une icône, une image) n'est pas du texte. Les noms comme SaveButton.Text sont des propriétés de contrôle de 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>
Ce à quoi il faut faire attention dans les traductions .resx
Les entrées typées ne sont pas du texte
L'entrée
AppIcondans l'exécution réelle ci-dessous est une référence de fichier. Elle est copiée dans la sortie telle quelle et jamais envoyée pour traduction.Éléments de format
{0}dansstring.Formatdoit revenir ; dans l'exécution réelle ci-dessous, les deux sont revenus, et un élément manquant aurait été signalé.Les clés ne sont pas du texte
Les noms tels que
SaveButton.Textsont des propriétés de contrôle de WinForms. Ce sont des clés : elles sont conservées telles quelles, jamais traduites.Les commentaires restent dans la source
Les éléments
<comment>ne sont pas reportés dans le fichier traduit. Gardez les notes pour les traducteurs dans la ressource source.
Une vraie exécution : traduite en allemand et vérifiée
Une exécution réelle, le 27 octobre 2026, rien édité à la main : kaeris translate Strings.resx --langs de avec kaeris 0.2.35, 2,6 secondes, modèle openai/gpt-4.1-mini (le modèle de secours du service a répondu à cette tâche). Ci-dessous, le fichier allemand qu'il a écrit et ce que kaeris check en dit.
<?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
Ce que KAERIS en fait
Uniquement les chaînes
Les entrées typées et binaires sont préservées telles quelles, comme dans l'exécution réelle ci-dessus : l'entrée
AppIconest revenue inchangée.DTD et entités refusées
Les fichiers avec une déclaration DOCTYPE ou d'entité sont rejetés avant l'analyse, une protection partagée avec XLIFF et Android XML.
Vérification gratuite pour ce format
La vérification gratuite sur la page /check lit ce format et s'exécute sans clé ni compte. La commande terminal
kaeris checkla lit aussi : elle prend les 13 formats depuis kaeris 0.2.35, avec les mêmes règles et rien n'est envoyé ailleurs.
Exécutez-le en trois étapes
Installer le CLI
Exécutez
pip install kaeris.Traduire le fichier de ressources
Exécutez
kaeris translate Resources/Strings.resx --langs de,ja.Vérifier le résultat
Téléversez la source et le .resx traduit sur la page de vérification gratuite.
pip install kaeris kaeris translate Resources/Strings.resx --langs de,ja --verify
Questions
Les icônes et autres ressources typées sont-elles modifiées ?
Non. Les entrées avec un attribut type ou mimetype sont conservées telles quelles.
Les éléments sont-ils conservés ?
Non : le fichier traduit est écrit sans eux. Votre fichier source les conserve.
Est-ce gratuit ?
Oui, sans compte : 10 000 caractères par fichier et jusqu'à 8 langues par exécution. Une clé API gratuite augmente la limite de fichiers à 50 000 caractères. La licence à vie est de 79 $ une fois, sur votre propre clé OpenRouter ; les plans mensuels commencent à 19 $. Tarifs
Puis-je l'exécuter depuis le terminal ou en CI ?
Oui. pip install kaeris, puis kaeris translate Resources/Strings.resx --langs de,ja. Le GitHub Action exécute la même traduction dans une pull request. Docs CLI · GitHub Action
Continuer
Référence CLI · Référence Check · Traduire dans le navigateur · Vérification gratuite · Convertir les formats · Localisation fictive
Autres formats : JSON · YAML · .po · ARB · XLIFF · .strings · .xcstrings · .properties · CSV · Markdown · Fluent · Android XML