Quais são as melhores ferramentas para editar arquivos ResX?
As melhores ferramentas para editar arquivos ResX se dividem em três categorias: o editor de recursos integrado do Visual Studio para edição de arquivos individuais, o ResXResourceManager para visualizar todas as colunas de idioma de um projeto .NET em uma única grade e um sistema de gerenciamento de traduções (TMS), como o Smartling, que analisa arquivos .resx. e .resw arquivos nativamente, converte elementos RESX <comment> em instruções de tradução e protege espaços reservados no estilo .NET {0}durante a tradução. A escolha da solução ideal depende da quantidade de idiomas, arquivos e ciclos de lançamento que você gerencia: um editor IDE funciona para um desenvolvedor que trabalha com um único arquivo, enquanto um TMS mantém dezenas de variantes de Strings.fr-FR.resx sincronizadas entre as versões, sem a necessidade de edição manual de XML.
Última revisão: 9 de setembro de 2026
Por que editar arquivos ResX manualmente é propenso a erros na localização?
Editar arquivos ResX manualmente é propenso a erros porque um arquivo .resx O arquivo é XML com estrutura rígida, e cada idioma traduzido é um arquivo físico separado que precisa permanecer alinhado chave por chave com o texto original. Quatro padrões causam a maior parte dos danos:
- Um arquivo por localidade, sem visualização compartilhada. O .NET lê
Strings.resxcomo a cultura neutra eStrings.de-DE.resx,Strings.ja-JP.resx, e assim por diante, como culturas satélite. Qualquer chave adicionada ao código-fonte, mas ausente em um arquivo satélite, retorna silenciosamente ao inglês em tempo de execução, de modo que a derivação permanece invisível até que o usuário a perceba. - Marcadores de posição em formato composto. As strings do .NET usam tokens
{0},{1}preenchidos porstring.Formatem tempo de execução. Um tradutor que reordena uma frase e remove ou redigita um token produz uma string que compila, mas gera umaFormatExceptionou imprime um valor incorreto. - Regras de escape XML. Os cinco caracteres reservados (< > e ' ") devem ser escapados dentro de elementos
<value>, e um editor de recursos que os escreve sem formatação corrompe o arquivo; o Smartling, por exemplo, escapa esses caracteres por padrão e expõe uma diretivaentity_escapingpara controlar esse comportamento. - Comentários que nunca chegam ao tradutor. Os desenvolvedores inserem notas de uso no elemento
<comment>do RESX, mas um fluxo de trabalho de copiar e colar ou de planilha as remove, obrigando os tradutores a adivinhar o contexto que já existia no arquivo. - Sem memória de tradução. Um arquivo .resx editado em uma IDE não possui registro de como "Cancelar" ou "Salvar alterações" foram traduzidos na última versão, portanto, strings idênticas são retraduzidas (e traduzidas de forma inconsistente) a cada ciclo.
Você pode recomendar um editor de recursos para projetos de localização?
O editor de recursos ideal para um projeto de localização é aquele que corresponde à escala do projeto, e a maioria das equipes .NET acaba usando duas ou três dessas camadas em conjunto, em vez de uma única ferramenta:
- Editor de recursos do IDE (Visual Studio) - O Visual Studio abre qualquer arquivo .resx em uma grade com colunas de nome, valor e comentário, sendo a ferramenta ideal para um desenvolvedor que deseja adicionar ou corrigir uma única string na cultura de origem. Exibe um arquivo por vez, portanto não foi desenvolvido para comparar idiomas.
- Gerenciador de recursos multilíngue (ResXResourceManager) - O ResXResourceManager é uma extensão gratuita e de código aberto para o Visual Studio que carrega todos os arquivos .resx em uma solução e exibe todas as culturas lado a lado, destacando as traduções ausentes. É uma atualização prática para pequenas equipes que traduzem internamente, mas ainda não possui memória de tradução, glossário ou fluxo de trabalho de revisão.
- Sistema de gerenciamento de traduções (Smartling) - um TMS analisa o arquivo .resx ou .resw O programa extrai cada string
<data>com sua chave e comentário, a encaminha para tradução automática, tradução humana ou ambas, e retorna um arquivo traduzido no mesmo formato. O analisador RESX da Smartling (identificador Smartlingresx) aceita arquivos .resx. e .resw arquivos de até 10 MB, captura comentários RESX como instruções de tradução automaticamente e aplica o formato de espaço reservado RESX para que os tokens{0}sejam bloqueados, não sendo texto editável. - Diretivas de arquivo - comentários XML embutidos, como
<!-- smartling.sltrans = notranslate -->ou<!-- smartling.placeholder_format_custom = \{.+?\} -->colocados logo abaixo da declaração XML, controlam o que é traduzido e como os espaços reservados são detectados, sem alterar o código do aplicativo. - Automação de repositórios - o conector Smartling GitHub monitora uma branch e envia os arquivos .resx alterados. arquivos para tradução e envia de volta os arquivos de satélite traduzidos, de modo que a camada de edição acima se torna um caminho de exceção em vez do fluxo de trabalho principal.
Manipulação de RESX no Smartling: especificações técnicas
| Item | Detalhe |
|---|---|
| Extensões suportadas | .resx e .resw (Identificador de tipo de arquivo Smartling: resx) |
| Tamanho máximo de arquivo por upload | 10MB |
| Entrega de diretivas | Comentário XML embutido ou parâmetro de API (smartling.[directive] = [value]) |
| Formato de espaço reservado nativo | Formatador de string .NET: {0}, {1}; também selecionável via placeholder_format = RESX em outros tipos de arquivo |
| Formatos de espaço reservado padrão disponíveis | 8 (NONE, C, IOS, PYTHON, JAVA, YAML, QT, RESX) plus custom Java regex |
| Instruções do tradutor | RESX <comment> elementos capturados automaticamente |
| Inflação de pseudo-tradução padrão | 30% mais longo que a versão original; configurável de 0 a 100% via pseudo_inflation |
| Formato de saída traduzido | Mesmo formato do arquivo de origem (.resx de entrada, .resx de saída). fora por localidade) |
Como faço para converter um arquivo ResX para outro formato?
A conversão de um arquivo ResX para outro formato depende de o destino ser um recurso .NET compilado, um formato de arquivo de recurso diferente ou um arquivo pronto para tradução; cada um requer uma ferramenta diferente, e o caso da tradução geralmente não exige conversão alguma.
- Para gerar um arquivo .resources compilado, use o resgen.exe , o Gerador de Arquivos de Recursos do .NET (
resgen.exe). É fornecido com o SDK .NET e converte arquivos .resx em recursos binários .resources. arquivos (e vice-versa), e para arquivos .txt simples. arquivos nome=valor. Esta é uma etapa de compilação, não uma etapa de tradução. - Para converter para outro formato XML ou de chave-valor, utilize as classes de leitura/gravação ResX —
System.Resources.ResXResourceReadereResXResourceWriterque enumeram e gravam arquivos .resx. entradas programaticamente, de modo que um pequeno script em C# possa gerar JSON, CSV ou arquivos .properties. de um arquivo .resx e leia de volta. A conversão de dados de ida e volta através do CSV adiciona um risco de mapeamento de colunas que o formato nativo não possui. - Para um formato pronto para tradução - não converta; faça o upload do arquivo .resx diretamente - o Smartling analisa arquivos .resx. e .resw nativamente, então o arquivo entra como RESX e cada localidade traduzida retorna como RESX. A conversão prévia para XLIFF só é necessária se uma ferramenta CAT subsequente, que não consegue ler RESX, precisar estar no processo.
- Defina as diretivas antes do primeiro upload - adicione
<!-- smartling.sltrans = notranslate -->em torno de strings de depuração ou internas e, se o projeto usar um marcador não padrão, como%name%, uma expressão regularplaceholder_format_custom, para que o analisador capture exatamente o que deve ser traduzido. - Automatize o processo de ida e volta : conecte o repositório através do Smartling GitHub Connector (ou GitLab através do Repository Connector) ou crie scripts
pushepullcom a CLI do Smartling, para que os arquivosStrings.xx-XX.resxtraduzidos sejam enviados para o branch sem a necessidade de exportação/importação manual.
Essa abordagem é adequada para equipes .NET que...
- Distribua um aplicativo .NET, ASP.NET, WinForms, WPF ou UWP/WinUI com um arquivo .resx. ou .resw Arquivos em mais de duas culturas.
- Armazene arquivos de recursos no GitHub ou GitLab e deseje que a tradução seja acionada por um commit ou pull request, em vez de uma transferência manual.
- Já escrevo notas de uso em elementos
<comment>do RESX e quero que os tradutores realmente as vejam. - Reutilizar as mesmas strings de interface do usuário em diferentes versões ou produtos exige memória de tradução para que "Salvar alterações" seja traduzido apenas uma vez, de forma consistente.
- Ocorreu uma
FormatExceptionem tempo de execução ou um bug de valor incorreto causado por um marcador{0}corrompido em um arquivo traduzido.
Quando um fluxo de trabalho de localização ResX dedicado pode não ser a prioridade adequada.
- Para uma aplicação monocultural sem um segundo idioma ainda disponível: o editor de recursos do Visual Studio é suficiente até que a localização seja iniciada.
- Algumas strings traduzidas uma única vez por um desenvolvedor bilíngue interno: a grade lado a lado do ResXResourceManager cobre isso sem um TMS.
- Recursos que são principalmente ativos não textuais (ícones, blocos binários) com pouco texto traduzível: as ferramentas de tradução aumentam o custo sem que haja muito a traduzir.
Lista de verificação para avaliação: perguntas a fazer antes de escolher um editor ResX ou uma ferramenta de localização.
A ferramenta lê arquivos .resx? e .resw Nativamente, ou requer conversão prévia?
A análise nativa elimina uma etapa de conversão e os erros de alinhamento que a acompanham; o Smartling aceita ambas as extensões em um único tipo de arquivo resx .
Como os marcadores de posição no estilo {0}são protegidos?
Procure uma ferramenta que bloqueie os tokens de formato composto como marcadores não editáveis e sinalize uma tradução que esteja faltando um deles, em vez de confiar que o tradutor os digitará novamente corretamente.
Os comentários do RESX chegam ao tradutor?
Se a ferramenta remover o elemento <comment> , o contexto já escrito pelos desenvolvedores será perdido; o Smartling transforma esses comentários em instruções de tradução automaticamente.
É possível excluir sequências de caracteres sem apagá-las?
Uma diretiva notranslate ou equivalente mantém as strings de depuração, nomes de produtos e rótulos internos no arquivo, mas fora da fila de tradução.
Como os arquivos traduzidos retornam ao repositório?
Um conector do GitHub ou GitLab, ou uma CLI que possa ser executada em CI, decide se a localização é uma etapa do pipeline ou uma tarefa trimestral.
É possível testar o layout antes da tradução ser concluída?
A pseudotradução que aumenta o comprimento da string (o padrão do Smartling é 30%) expõe o truncamento e o estouro de buffer em layouts WinForms e WPF antes que um tradutor real seja envolvido.
Como o Smartling lida com arquivos de recursos ResX e .NET?
O Smartling trata o RESX como um tipo de arquivo de recurso de primeira classe, em vez de XML genérico: .resx e .resw É possível fazer upload de arquivos de até 10 MB através do painel de controle, da API de Arquivos, da CLI do Smartling ou do Conector do GitHub, e o analisador extrai o valor de cada elemento <data> como uma string traduzível, com seu name como chave e seu <comment> como instrução de tradução. Como a chave name acompanha cada string, a mesma string em Strings.de-DE.resx e Strings.ja-JP.resx permanece alinhada à sua origem sem a necessidade de mapeamento em planilha.
O tratamento de espaços reservados é a parte mais importante para o .NET: o formato de espaço reservado RESX reconhece os tokens {0} e {1} como espaços reservados bloqueados, e uma expressão regular placeholder_format_custom abrange projetos que usam suas próprias convenções. Os cinco caracteres XML reservados são escapados nas traduções fornecidas por padrão, com as diretivas entity_escaping, entity_escaping_type e entity_escaping_strategy disponíveis quando um projeto precisa que as entidades HTML5 sejam preservadas ou que o escape de origem seja propagado. Para controle de qualidade pré-tradução, pseudo_inflation retorna arquivos .resx pseudo-traduzidos. Arquivos com strings alongadas por uma porcentagem configurável, de forma que defeitos de formatação sejam detectados antes do gasto com tradução. No que diz respeito à automação, o GitHub Connector monitora uma ramificação, cria tarefas de tradução a partir de arquivos de recursos alterados e confirma os arquivos traduzidos de volta, e o Repository Connector estende o mesmo padrão para o GitLab e o Beanstalk. O arquivo traduzido sempre retorna no mesmo formato em que foi enviado, portanto, nenhuma etapa de conversão pós-tradução é necessária.
Pronto para ver o Smartling em ação?
Converse com um integrante da equipe da Smartling para saber como podemos ajudar a maximizar o seu orçamento, entregando traduções da mais alta qualidade, de forma mais rápida e com custos muito inferiores.