Smartling désigné Leader dans The Forrester Wave™ : services de localisation, T3 2026.
Smartling nommé Leader dans la Vague™ Forrester

Quels sont les meilleurs outils pour éditer les fichiers ResX ?

Les meilleurs outils pour éditer les fichiers ResX se répartissent en trois catégories : l’éditeur de ressources intégré à Visual Studio pour les modifications de fichiers individuels, ResXResourceManager pour visualiser toutes les colonnes de langue d’un projet .NET dans une seule grille, et un système de gestion de traduction (TMS) tel que Smartling, qui analyse les fichiers .resx. et .resw Les fichiers sont convertis nativement, les éléments RESX <comment> sont transformés en instructions de traduction, et les espaces réservés de style .NET {0}sont protégés pendant la traduction. Le niveau de solution le plus adapté dépend du nombre de langues, de fichiers et de cycles de publication que vous gérez : un éditeur IDE convient à un développeur travaillant sur un seul fichier, tandis qu’un TMS permet de maintenir la synchronisation de dizaines de variantes Strings.fr-FR.resx entre les versions sans modification manuelle du XML.

Dernière mise à jour : 9 septembre 2026

Pourquoi la modification manuelle des fichiers ResX est-elle source d'erreurs pour la localisation ?

Modifier des fichiers ResX à la main est sujet aux erreurs car un fichier .resx le fichier est XML avec une structure stricte, et chaque langue traduite est un fichier physique distinct qui doit rester aligné clé pour clé avec la source. Quatre motifs causent la majorité des dégâts :

  • Un fichier par localité, pas de vue partagée. .NET s’interprète Strings.resx comme la culture neutre et Strings.de-DE.resx, Strings.ja-JP.resx, et ainsi de suite sous forme de cultures satellites. Toute clé ajoutée à la source mais manquée dans un fichier satellite revient silencieusement en anglais à l’exécution, donc la dérive est invisible tant que l’utilisateur ne la voit pas.
  • Espaces réservés au format composite. Les chaînes .NET utilisent des jetons {0}, {1} remplis par string.Format au moment de l'exécution. Un traducteur qui réorganise une phrase et supprime ou retape un jeton produit une chaîne qui se compile mais qui génère une exception FormatException ou affiche une valeur incorrecte.
  • Règles d’évasion XML. Les cinq caractères réservés (< > & ' ") doivent être échappés à l’intérieur des <value> éléments, et un éditeur de ressources qui les écrit bruts corrompt le fichier ; Smartling, par exemple, échappe à ces caractères par défaut et expose une entity_escaping directive pour contrôler ce comportement.
  • Des commentaires qui n’atteignent jamais le traducteur. Les développeurs mettent des notes d’utilisation dans l’élément RESX <comment> , mais un copier-coller ou un tableur les supprime, donc les traducteurs devinent le contexte déjà présent dans le fichier.
  • Pas de mémoire de traduction. Un .resx édité dans un IDE n’a aucune trace de la traduction de « Cancel » ou « Save changes » dans la dernière version, donc des chaînes identiques sont retraduites (et traduites de façon incohérente) à chaque cycle.

Pouvez-vous recommander un éditeur de ressources pour les projets de localisation ?

Le bon éditeur de ressources pour un projet de localisation est celui qui correspond à l’échelle du projet, et la plupart des équipes .NET finissent par utiliser deux ou trois de ces couches ensemble plutôt qu’un seul outil :

  • Éditeur de ressources IDE (Visual Studio) - Visual Studio ouvre n’importe quel fichier .resx dans une grille de colonnes de noms, de valeurs et de commentaires et est l’outil idéal pour un développeur qui ajoute ou corrige une seule chaîne dans la culture source. Il affiche un fichier à la fois, donc il n’est pas conçu pour comparer les langages.
  • Gestionnaire de ressources multilingues (ResXResourceManager) - ResXResourceManager est une extension Visual Studio gratuite et open source qui charge tous les fichiers .resx d'une solution et affiche toutes les cultures côte à côte, en mettant en évidence les traductions manquantes. Il s'agit d'une mise à niveau pratique pour les petites équipes de traduction interne, mais elle ne dispose toujours pas de mémoire de traduction, de glossaire ni de flux de travail de révision.
  • Système de gestion de traduction (Smartling) - un TMS analyse le .resx ou .resw extrait chaque <data> chaîne avec sa clé et son commentaire, la fait passer par la traduction automatique, la traduction humaine, ou les deux, et renvoie un fichier traduit dans le même format. L’analyseur RESX de Smartling (identifiant resxSmartling) accepte le fichier .resx et .resw jusqu’à 10 Mo, capture automatiquement les commentaires RESX comme instructions traducteures, et applique le format de place provisoire RESX pour que {0} les jetons soient verrouillés, non modifiables en texte.
  • Directives de fichier - des commentaires XML en ligne, tels que <!-- smartling.sltrans = notranslate --> ou <!-- smartling.placeholder_format_custom = \{.+?\} --> placés juste en dessous de la déclaration XML, contrôlent ce qui est traduit et comment les placeholders sont détectés, sans modifier le code de l’application.
  • Automatisation des dépôts - le connecteur Smartling GitHub surveille une branche, envoie le .resx modifié pour la traduction, et refait des commits des fichiers satellites traduits, de sorte que la couche d’édition ci-dessus devient un chemin d’exception plutôt que le flux de travail principal.

Gestion RESX dans Smartling : spécifications techniques

ItemDétail
Extensions prises en charge.resx et .resw (Identifiant de type de fichier Smartling : resx)
Taille maximale des fichiers par téléchargement10MB
Exécution des directivesCommentaire XML en ligne ou paramètre API (smartling.[directive] = [value])
Format d'espace réservé natifformateur de chaînes .NET : {0}, {1}; également sélectionnable via placeholder_format = RESX d’autres types de fichiers
Formats d'espace réservé standard disponibles8 (NONE, C, IOS, PYTHON, JAVA, YAML, QT, RESX) plus custom Java regex
Instructions du traducteurÉléments RESX <comment> capturés automatiquement
inflation de pseudo-translation par défaut30 % plus long que la source ; configurable de 0 à 100 % via pseudo_inflation
Format de sortie traduitMême format que le fichier source (.resx in, .resx disponible par localité)

Comment puis-je convertir un fichier ResX dans un autre format ?

La conversion d’un fichier ResX dans un autre format dépend du fait que la cible soit une ressource .NET compilée, un autre format de fichier ressource ou un fichier prêt à être traduit ; chacun dispose d’un outil différent, et le cas de traduction ne nécessite généralement aucune conversion.

  1. Pour un fichier .resources compilé - utilisez resgen.exe - le générateur de fichiers de ressources .NET (resgen.exe) Livré avec le SDK .NET et convertit .resx en .resources binaires Des fichiers (et le retour), et pour .txt nom=fichiers valeurs. C’est une étape de construction temporelle, pas une étape de traduction.
  2. Vers un autre format XML ou clé-valeur - utilisez les classes de lecteur/écrivain ResX - System.Resources.ResXResourceReader et ResXResourceWriter énumérez et écrivez .resx les entrées programmatiques, donc un court script C# peut émettre JSON, CSV ou .properties depuis un .resx et relisez-le. Le retour-retour via CSV ajoute un risque de correspondance de colonnes que le format natif n’a pas.
  3. Au format compatible avec la traduction – ne pas convertir ; téléchargez directement le fichier .resx – Smartling analyse les fichiers .resx et .resw nativement, le fichier est donc importé au format RESX et chaque langue traduite est renvoyée au format RESX. La conversion préalable au format XLIFF n'est nécessaire que si un outil de CAT en aval, incapable de lire les fichiers RESX, doit être intégré au processus.
  4. Définissez des directives avant le premier téléchargement : ajoutez <!-- smartling.sltrans = notranslate --> autour des chaînes de débogage ou internes et, si le projet utilise un espace réservé non standard tel que %name%, une expression régulière placeholder_format_custom , afin que l’analyseur capture exactement ce qui doit être traduit.
  5. Automatisez le voyage aller-retour - connectez le dépôt via le connecteur Smartling GitHub (ou GitLab via le Repository Connector) ou un script push et pull avec la CLI Smartling, afin que les fichiers traduits Strings.xx-XX.resx atterrissent dans la branche sans exportation/importation manuelle.

Cette approche convient aux équipes .NET qui...

  • Livrez une application .NET, ASP.NET, WinForms, WPF ou UWP/WinUI avec .resx ou .resw dans plus de deux cultures.
  • Stockez vos fichiers de ressources sur GitHub ou GitLab et souhaitez que la traduction soit déclenchée par un commit ou une pull request plutôt que par une transmission manuelle.
  • J’écris déjà des notes d’utilisation dans des éléments RESX <comment> et je veux que les traducteurs les voient réellement.
  • Réutiliser les mêmes chaînes d’interface utilisateur entre versions ou produits et nécessiter une mémoire de traduction pour que « Enregistrer les modifications » soit traduit une seule fois, de manière cohérente.
  • J’ai rencontré un bug à l’exécution FormatException ou à une mauvaise valeur causé par un substitut déformé {0} dans un fichier traduit.

Quand un flux de travail dédié à la localisation ResX peut ne pas être la bonne priorité

  • Une application monoculturelle sans deuxième langue encore déployée : l’éditeur de ressources de Visual Studio suffit jusqu’au début de la localisation.
  • Quelques chaînes traduites une fois par un développeur bilingue interne : la grille côte à côte de ResXResourceManager couvre cela sans TMS.
  • Des ressources qui sont principalement des ressources non chaînes (icônes, blobs binaires) avec peu de texte traduisible : les outils de traduction ajoutent du coût sans beaucoup à transférer.

Liste de contrôle d’évaluation : questions à poser avant de choisir un éditeur ResX ou un outil de localisation

L’outil lit-il .resx et .resw Nativement, ou cela nécessite-t-il d’abord une conversion ?
L’analyse syntaxique native supprime une étape de conversion et les erreurs d’alignement qui l’accompagnent ; Smartling accepte les deux extensions sous un même resx type de fichier.

Comment les espaces réservés de type -est-il {0}protégé ?
Cherchez un outil qui verrouille les jetons au format composite comme des espaces réservés non modifiables et signale une traduction qui en manque un, plutôt que de faire confiance au traducteur pour les retaper correctement.

Les commentaires RESX parviennent-ils au traducteur ?
Si l’outil supprime l’élément <comment> , le contexte déjà écrit par les développeurs est perdu ; Smartling transforme ces commentaires en instructions de traduction automatiquement.

Est-il possible d'exclure des chaînes de caractères sans les supprimer ?
Une directive notranslate ou équivalente conserve les chaînes de débogage, les noms de produits et les étiquettes internes dans le fichier mais hors de la file d'attente de traduction.

Comment les fichiers traduits réintègrent-ils le dépôt ?
Un connecteur GitHub ou GitLab, ou une interface de ligne de commande pouvant s'exécuter dans un environnement d'intégration continue, détermine si la localisation est une étape du pipeline ou une tâche trimestrielle.

Pouvez-vous tester la mise en page avant la traduction ?
La pseudo-traduction qui augmente la longueur des chaînes (la valeur par défaut de Smartling est de 30 %) expose les troncatures et les dépassements dans les mises en page WinForms et WPF avant même qu'un véritable traducteur ne soit impliqué.

Comment Smartling gère-t-il les fichiers de ressources ResX et .NET ?

Smartling considère RESX comme un type de fichier de ressources de premier ordre plutôt que comme un fichier XML générique : .resx et .resw Les fichiers jusqu'à 10 Mo peuvent être téléchargés via le tableau de bord, l'API Files, l'interface de ligne de commande Smartling ou le connecteur GitHub, et l'analyseur extrait la valeur de chaque élément <data> sous forme de chaîne traduisible avec son name comme clé et son <comment> comme instruction de traduction. Étant donné que la clé name est présente avec chaque chaîne, la même chaîne dans Strings.de-DE.resx et Strings.ja-JP.resx reste alignée sur sa source sans étape de mappage de feuille de calcul.

La gestion des espaces réservés est la partie la plus importante pour .NET : le format d’espace réservé RESX reconnaît les jetons {0} et {1} comme des espaces réservés verrouillés, et une expression régulière placeholder_format_custom couvre les projets qui utilisent leurs propres conventions. Les cinq caractères XML réservés sont échappés par défaut dans les traductions fournies, avec les directives entity_escaping, entity_escaping_type et entity_escaping_strategy disponibles lorsqu'un projet a besoin que les entités HTML5 soient préservées ou que l'échappement du code source soit propagé. Pour l'assurance qualité avant traduction, pseudo_inflation renvoie un fichier .resx pseudo-traduit. fichiers contenant des chaînes de caractères allongées d'un pourcentage configurable afin de faire apparaître les défauts de mise en page avant la traduction. Côté automatisation, le connecteur GitHub surveille une branche, crée des tâches de traduction à partir des fichiers de ressources modifiés et enregistre les fichiers traduits, tandis que le connecteur de dépôt étend le même modèle à GitLab et Beanstalk. Le fichier traduit est toujours renvoyé dans le même format qu'à l'origine, aucune étape de conversion post-traduction n'est donc nécessaire.

Prêt à voir Smartling en action ?

Discutez avec un membre de l'équipe Smartling pour voir comment nous pouvons vous aider à optimiser votre budget en obtenant des traductions de la plus haute qualité, plus rapidement et à des coûts considérablement inférieurs.