Pregunta

Tengo una aplicación web integrado en asp.net, que utiliza archivos de recursos para soportar múltiples idiomas. El problema que tengo es que sólo puedo añadir un nuevo archivo de idioma en Visual Studio, y tengo que reconstruir toda la aplicación para tener un nuevo lenguaje incluido. Después de buscar en la red me he dado cuenta que la compilación de los archivos de recursos se puede hacer en el compilador .NET. He utilizado los siguientes comandos:

Resgen.exe / compilación langfile.en.resx

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

El archivo se copia en la carpeta del sitio web, pero no funciona. Es decir, cuando selecciono el nuevo idioma desde la página web, las cuerdas se cargan desde el archivo de recursos predeterminado. Si creo el archivo de recursos en VS, funciona bien. He comprobado el tamaño de las dos archivos dll, el generado por VS y el compilado por mí mismo, y tienen el mismo tamaño, pero el compilado no funciona. Sólo se me ocurre que tal vez tendría que utilizar algunos otros parámetros en los comandos anteriores, pero no se sabe muy bien.

Cualquier ayuda es muy apreciada.

¿Fue útil?

Solución

Puede lograr lo que quiere escribiendo su propio generador de expresiones en lugar de utilizar la versión incorporada de recursos y tire de la información de una base de datos o XML. Básicamente a escribir su propia clase que hereda de System.Web.Compilation.ExpressionBuilder y luego registrarla en Web.config como esto:

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

y luego se puede hacer referencia a ella como recursos normales:

<%$ CustomResources:Section, Key %>

Puede encontrar algunos artículos en este aquí y aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top