¿Cuáles son las mejores herramientas para editar archivos ResX?
Las mejores herramientas para editar archivos ResX se dividen en tres niveles: el editor de recursos integrado de Visual Studio para la edición de un solo archivo, ResXResourceManager para ver todas las columnas lingüísticas de un proyecto de.NET en una cuadrícula y un sistema de gestión de traducciones (TMS) como Smartling, que analiza .resx y .resw archiva de forma nativa, convierte los elementos del comentario > de RESX <<comment> en instrucciones del traductor y protege {0}los marcadores de posición al estilo .NET durante la traducción. El nivel que se ajuste depende del número de idiomas, archivos y ciclos de lanzamiento que gestione: un editor IDE funciona para un desarrollador que toca un archivo, mientras que un TMS es lo que mantiene sincronizadas docenas de variantes de cadenas. fr-FR.resx en todas las versiones sin editar XML a mano.
Última revisión: 9 de septiembre de 2026
¿Por qué editar archivos ResX a mano es propenso a errores para la localización?
Editar archivos ResX a mano es propenso a errores porque un .resx el archivo es XML con una estructura estricta y cada idioma traducido es un archivo físico independiente que debe permanecer alineado clave por clave con el origen. Cuatro patrones causan la mayoría del daño:
- Un archivo por localización, sin vista compartida. .NET se
Strings.resxinterpreta como la cultura neutral yStrings.de-DE.resx,Strings.ja-JP.resx, y así sucesivamente como culturas satélite. Cualquier clave añadida al código fuente pero que se pierda en un archivo satelital vuelve silenciosamente al inglés en tiempo de ejecución, por lo que la deriva es invisible hasta que el usuario la ve. - Marcadores de posición en formato compuesto. Las cadenas de.NET utilizan
{0},{1}fichas rellenadas porString.formaten tiempo de ejecución. Un traductor que reordena una frase y elimina o vuelve a escribir un token produce una cadena que se compila, pero lanza unaFormatExceptiono imprime un valor incorrecto. - Reglas de escape XML. Los cinco caracteres reservados (< > y '") deben evadirse dentro de
<value>los elementos, y un editor de recursos que los escribe en bruto corrompe el archivo; Smartling, por ejemplo, escapa de estos por defecto y expone unaentity_escapingdirectiva para controlar ese comportamiento. - Comentarios que nunca llegan al traductor. Los desarrolladores ponen notas de uso en el elemento RESX
<comment>, pero un flujo de trabajo copiado-pegado o de hoja de cálculo las elimina, así que los traductores adivinan el contexto que ya existía en el archivo. - Sin memoria de traducción. Un .resx editado en un IDE no tiene registro de cómo se tradujo "Cancelar" o "Guardar cambios" en la última versión, por lo que cadenas idénticas se retraducen (y traducen de forma inconsistente) cada ciclo.
¿Puedes recomendarme un editor de recursos para proyectos de localización?
El editor de recursos adecuado para un proyecto de localización es aquel que coincide con la escala del proyecto, y la mayoría de los equipos de .NET acaban usando dos o tres de estas capas juntas en lugar de una sola herramienta:
- Editor de recursos del IDE (Visual Studio) - Visual Studio abre cualquier .resx en una cuadrícula de nombres, valores y columnas de comentarios, y es la herramienta adecuada para un desarrollador que añade o arregla una sola cadena en la cultura fuente. Muestra un archivo a la vez, así que no está diseñado para comparar lenguajes.
- Gestor de recursos multilingüe (ResxResourceManager): ResxResourceManager es una extensión gratuita de Visual Studio de código abierto que carga todos los .resx de una solución y muestra todas las culturas una al lado de la otra, destacando las traducciones que faltan. Es la mejora práctica para equipos pequeños que traducen internamente, pero todavía no tiene memoria de traducción, glosario ni flujo de trabajo de revisión.
- Sistema de gestión de traducción (Smartling): un TMS analiza el .resx o .resw extrae cada
<data>cadena con su clave y comentario, la enruta por traducción automática, traducción humana o ambas, y devuelve un archivo traducido en el mismo formato. El analizador RESX de Smartling (identificadorresxSmartling) acepta .resx y .resw archivos de hasta 10MB, captura automáticamente los comentarios RESX como instrucciones del traductor y aplica el formato de marcador RESX para que{0}los tokens queden bloqueados, no sea texto editable. - Directivas de archivo : comentarios XML en línea, como
<!-- smartling.sltrans = notranslate -->o<!-- smartling.placeholder_format_custom = \{.+?\} -->colocados justo debajo de la declaración XML, controlan qué se traduce y cómo se detectan los marcadores de posición, sin cambiar el código de la aplicación. - Automatización de repositorios : el Smartling GitHub Connector vigila una rama y envía el .resx modificado para traducción, y vuelve a hacer commit de los archivos satélite traducidos, de modo que la capa de edición anterior se convierte en una ruta de excepción en lugar del flujo de trabajo principal.
Manejo RESX en Smartling: especificaciones técnicas
| Item | Detalle |
|---|---|
| Extensiones compatibles | .resx y .resw (Identificador de tipo de archivo Smartling: resx) |
| Tamaño máximo de archivo por subida | 10MB |
| Entrega de directivas | Comentario XML en línea o parámetro API (smartling.[directive] = [value]) |
| Formato de marcador de posición nativo | Formateador de cadenas .NET: {0}, {1}; también seleccionable mediante placeholder_format = RESX otros tipos de archivo |
| Formatos de marcadores de posición estándar disponibles | 8 (NONE, C, IOS, PYTHON, JAVA, YAML, QT, RESX) plus custom Java regex |
| Instrucciones del traductor | Elementos RESX <comment> capturados automáticamente |
| Inflación por defecto en la pseudotraducción | Un 30% más que la fuente; configurable del 0 al 100% mediante pseudo_inflation |
| Formato de salida traducido | Mismo formato que el archivo fuente (.resx in, .resx disponible por localidad) |
¿Cómo puedo convertir un archivo ResX a otro formato?
La conversión de un archivo ResX a otro formato depende de si el destino es un recurso de.NET compilado, un formato de archivo de recursos diferente o un archivo listo para la traducción; cada uno tiene una herramienta diferente y el caso de traducción normalmente no necesita ninguna conversión.
- Para un archivo .resources compilado, usa resgen.exe - el Generador de Archivos de Recursos .NET (
resgen.exe) Incluye el SDK .NET y convierte .resx en .resources binarios archivos (y de vuelta), y para ser .txt nombre=archivos de valor. Esto es un paso de construcción, no de traducción. - A otro formato XML o clave-valor - usa las clases lectores/escritoras ResX -
System.Resources.ResXResourceReaderyResXResourceWriterenumera y escribe .resx entradas programáticas, por lo que un script corto en C# puede emitir JSON, CSV o .properties desde un .resx y lo lee de nuevo. El recorrido a través de CSV añade un riesgo de mapeo de columnas que el formato nativo no tiene. - A un formato preparado para el traductor: no convierta, suba el .resx directamente - Smartling analiza .resx y .resw de forma nativa, por lo que el archivo entra como RESX y cada configuración regional traducida vuelve como RESX. La conversión primero a XLIFF solo es necesaria si una herramienta CAT descendente que no pueda leer RESX debe estar en proceso.
- Fije las directivas antes de la primera subida: ¡añada
<!-- smartling.sltrans = notranslate -->en torno a cadenas internas o de depuración y, si el proyecto utiliza un marcador de posición no estándar, como%name%, una expresión regularplaceholder_format_custom, para que el analizador capture exactamente lo que debe traducirse. - Automatiza el viaje de ida y vuelta : conecta el repositorio a través del Smartling GitHub Connector (o GitLab mediante el Repository Connector) o script
pushypullcon la CLI Smartling, así los archivos traducidosStrings.xx-XX.resxllegan a la rama sin necesidad de exportación/importación manual.
Este enfoque se adapta a los equipos .NET que...
- Enviar una aplicación .NET, ASP.NET, WinForms, WPF o UWP/WinUI con .resx o .resw archivos en más de dos culturas.
- Guarda archivos de recursos en GitHub o GitLab y quieres que la traducción se active mediante un commit o pull request en lugar de una transferencia manual.
- Ya escribo notas de uso en elementos RESX
<comment>y quiero que los traductores las vean realmente. - Reutiliza las mismas cadenas de interfaz en versiones o productos y necesitas memoria de traducción para que "Guardar los cambios" se traduzca una vez, de forma consistente.
- Me he encontrado con un error en tiempo
FormatExceptionde ejecución o con un valor incorrecto causado por un marcador de{0}posición deformado en un archivo traducido.
Cuando un flujo de trabajo dedicado de localización de ResX puede no ser la prioridad adecuada
- Se ha enviado una aplicación para una sola cultura sin un segundo idioma: el editor de recursos de Visual Studio es suficiente hasta que comience la localización.
- Un puñado de cadenas traducidas una vez por un desarrollador bilingüe interno: la cuadrícula lado a lado de ResXResourceManager cubre esto sin un TMS.
- Recursos que en su mayoría son activos que no son cadenas (iconos, manchas binarias) con poco texto traducible: las herramientas de traducción aumentan los costes sin mucho que traducir.
Lista de verificación de evaluación: preguntas que debes hacer antes de elegir un editor de ResX o una herramienta de localización
¿La herramienta lee .resx y .resw de forma nativa, ¿o requiere primero la conversión?
El análisis nativo elimina un paso de conversión y los errores de alineación que conlleva; Smartling acepta ambas extensiones bajo un solo resx tipo de archivo.
¿Cómo se protegen {0}los marcadores de posición tipo -?
Busca una herramienta que bloquee los tokens en formato compuesto como marcadores de posición no editables y marque una traducción que no tenga uno, en lugar de confiar en que el traductor los reescriba correctamente.
¿Los comentarios de RESX llegan al traductor?
Si la herramienta elimina el <comment> elemento, se pierde el contexto que los desarrolladores ya escribieron; Smartling convierte automáticamente esos comentarios en instrucciones del traductor.
¿Puede excluir cadenas sin eliminarlas?
Una directiva o equivalente notranslate mantiene las cadenas de depuración, nombres de productos y etiquetas internas en el archivo pero fuera de la cola de traducción.
¿Cómo vuelven los archivos traducidos al repositorio?
Un conector de GitHub o GitLab, o una CLI que pueda ejecutarse en CI, decide si la localización es un proceso o una tarea trimestral.
¿Puedes probar el diseño antes de que termines la traducción?
La pseudo-traducción que infla la longitud de la cadena (el valor por defecto de Smartling es el 30%) expone truncamientos y desbordamientos en los layouts de WinForms y WPF antes de que intervenga un traductor real.
¿Cómo gestiona Smartling los archivos de recursos de ResX y .NET?
Smartling trata RESX como un tipo de archivo de recurso de primera clase en lugar de un XML genérico: .resx y .resw archivos de hasta 10MB suben a través del panel de control, la API de archivos, la CLI Smartling o el GitHub Connector, y el analizador extrae el valor de cada <data> elemento como cadena traducible con its name como clave y its <comment> como instrucción traductora. Porque la name tecla viaja con cada cadena, la misma cadena entra Strings.de-DE.resx y Strings.ja-JP.resx permanece alineada con su fuente sin un paso de mapeo de hoja de cálculo.
El manejo de marcadores de posición es la parte que más importa para .NET: el formato de marcador de posición de RESX reconoce {0} un {1} token como marcadores bloqueados, y un placeholder_format_custom regex cubre proyectos que usan sus propias convenciones. Los cinco caracteres XML reservados se evaden en las traducciones entregadas por defecto, con entity_escaping, entity_escaping_type, y entity_escaping_strategy directivas disponibles cuando un proyecto necesita que se preserven las entidades HTML5 o que se propague el escape de fuente. Para el control de calidad previo a la traducción, pseudo_inflation devuelve .resx pseudo-traducido archivos con cadenas alargadas en un porcentaje configurable para que los defectos de diseño salgan a la luz antes de que se gasten en traducciones. En el lado de la automatización, el Conector de GitHub supervisa una rama, crea trabajos de traducción a partir de archivos de recursos modificados y devuelve los archivos traducidos, y el Conector de Repositorio extiende el mismo patrón a GitLab y Beanstalk. El archivo traducido siempre vuelve en el mismo formato en el que se entró, así que no es necesario pasar por la conversión post-traducción.
Preguntas relacionadas
- ¿Cómo puedo localizar el contenido XML para diferentes idiomas?
- ¿Cómo implementas correctamente la localización en JSON?
- ¿Cuáles son las mejores herramientas para convertir archivos CSV para localización?
- ¿Cuáles son las restricciones más comunes a la hora de traducir el texto de la interfaz de usuario?
¿Listo para ver a Smartling en acción?
Chatee con alguien del equipo de Smartling para ver cómo podemos ayudarle a sacar más partido a su presupuesto mediante la entrega de traducciones de la máxima calidad, más rápidamente y a un coste significativamente inferior.