Pergunta

Tenho uma aplicação web construída em asp.net, que usa arquivos de recursos para suportar vários idiomas. O problema que tenho é que eu só pode adicionar um novo arquivo de idioma no Visual Studio, e eu tenho que reconstruir toda a aplicação para ter uma nova linguagem incluído. Depois de pesquisar na net eu descobri que a compilação dos arquivos de recursos pode ser feito no compilador .net. Eu usei os seguintes comandos:

resgen.exe / compilação langfile.en.resx

Al.exe /out:en\App_GlobalResources.resources.dll / cultura: en / embedresource: langfile .en.resources

O arquivo é copiado para a pasta do site, mas ele não funciona. Quero dizer, quando eu selecionar o novo idioma a partir da página web, as cordas são carregados do arquivo de recurso padrão. Se eu criar o arquivo de recurso no VS, ele funciona bem. Eu verifiquei os tamanhos dos dois arquivos DLL, o gerado pelo VS eo compilado por mim mesmo, e eles têm o mesmo tamanho, mas a um compilado não funciona. Só posso pensar que talvez eu teria que usar alguns outros parâmetros nos comandos acima, mas eu realmente não sei.

Qualquer ajuda é muito apreciada.

Foi útil?

Solução

Você pode conseguir o que você quer escrever o seu próprio construtor de expressão em vez de usar a versão built-in recursos e puxar as informações do banco de dados ou arquivos XML. Basicamente você escrever sua própria classe herdando de System.Web.Compilation.ExpressionBuilder e registrá-lo no Web.config como esta:

<compilation>
  <expressionBuilders>
    <add expressionPrefix="CustomResources" type="CustomResourcesExpressionBuilder"/>
  </expressionBuilders>
</compilation>

e, em seguida, você pode fazer referência a ela como recursos normais:

<%$ CustomResources:Section, Key %>

Você pode encontrar alguns artigos sobre este aqui e aqui .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top