istringlocalizer - Recurso global vs. recurso local en ASP.NET
resources c# resx (4)
Joe90: Tengo que decir que, en mi experiencia, no puedo aceptar que gestionar muchos archivos de recursos locales dispersos por todo el proyecto sea más fácil que administrar uno, un archivo de recursos global. No hay nada que detenga la repetición de las mismas traducciones una y otra vez, y son muy difíciles de rastrear. El acceso al archivo de recursos global es muy fácil de coordinar dentro de un equipo y varios usuarios pueden ver de un vistazo si su traducción requerida ya se ha realizado.
Comencé exactamente con la misma política que Lea, es decir, comencé con un archivo de recursos local y luego lo moví a un archivo de recursos global si se hacía referencia a él más de una vez. Esto pronto se convirtió en un montón de complicaciones para gestionar y desde entonces he pasado a utilizar archivos de recursos globales cada vez que lo hago.
No parece haber ninguna guía clara por parte de Microsoft sobre cuál es la mejor práctica, o incluso, cómo se implementan los dos métodos para que podamos adivinar.
Supongo que la comparación / recompensa es que los archivos de recursos locales solo requieren una recompilación del archivo con el que se relacionan, mientras que cambiar un archivo de recursos global parece requerir una recompilación de todo el sitio web, con una pérdida inherente del estado de la sesión, etc. por lo tanto, es necesario desconectar el sitio durante la actualización para estar seguro.
Usamos archivos resx para localizar nuestras aplicaciones web. Por lo general, creamos archivos resx locales (que se asignan a una página específica) cuando solo una página usa una determinada frase, y un archivo resx global cuando más de una página necesita la frase.
Pero lo bueno de los archivos resx globales es que son una clase, y puedes llamar a las frases como llamas propiedades de una clase:
Resource.UI.iNotFound
Así que estaba pensando, ¿por qué tener archivos resx locales? ¿Por qué no utilizar un archivo resx global para toda la aplicación y evitar así que los errores de tiempo de ejecución invoquen frases que no existen?
Estoy seguro de que hay una buena respuesta para eso, simplemente no sé lo que es ...
Tengo un equipo de desarrollo de al menos 10 desarrolladores en un solo producto y estamos usando un resx global para cada sitio.
El problema con la fusión de este gran archivo resx no debería ser un problema en mi opinión.
Si tienes 10 desarrolladores que establecen el idioma en el sitio, ¿cómo obtienes una manera uniforme de expresarse en el sitio? Los desarrolladores a menudo tienden a ser buenos en el código y no en la expresión gramatical. (Soy un desarrollador yo mismo)
¡Un experto en idiomas debería editar el archivo resx y bloquearlo para los desarrolladores!
Seguí buscando directrices y encontré esto en MSDN :
Elegir entre archivos de recursos locales y globales
Puede usar cualquier combinación de archivos de recursos locales y globales en la aplicación web. En general, agrega recursos a un archivo de recursos global cuando desea compartir los recursos entre páginas. Los recursos en los archivos de recursos globales también están fuertemente tipados para cuando desea acceder a los archivos mediante programación.
Sin embargo, los archivos de recursos globales pueden volverse grandes si almacena todos los recursos localizados en ellos. Los archivos de recursos globales también pueden ser más difíciles de administrar, si más de un desarrollador está trabajando en diferentes páginas pero en un único archivo de recursos.
Los archivos de recursos locales facilitan la administración de recursos para una sola página web de ASP.NET. Pero no puedes compartir recursos entre páginas. Además, puede crear muchos archivos de recursos locales si tiene muchas páginas que deben estar ubicadas en varios idiomas. Si los sitios son grandes con muchas carpetas e idiomas, los recursos locales pueden expandir rápidamente la cantidad de conjuntos en el dominio de la aplicación.
Cuando realiza un cambio en un archivo de recursos predeterminado, ya sea local o global, ASP.NET vuelve a compilar los recursos y reinicia la aplicación ASP.NET. Esto puede afectar el rendimiento general de su sitio. Si agrega archivos de recursos de satélite, no causa una recompilación de recursos, pero la aplicación ASP.NET se reiniciará.
Por lo tanto, parece que depende realmente del equipo de programación sopesar los pros y los contras de cada método y elegir lo que es bueno para ellos.
Un archivo de recursos globales es el mejor método para la traducción. La clave es usar una convención de nomenclatura, como las abreviaturas del nombre de la página para las primeras letras de un nombre de cadena para que pueda ubicar los recursos por página web fácilmente. Intentar reutilizar muchas frases en varias páginas causará más confusión para los traductores.
Puede definir frases de valor razonable tanto o tan poco como desee, como Sí, No, BTN_OK, BTN_Cancel, QTN_AreYouSure, etc. mediante el uso de una falta de convención de nomenclatura de página (sin abreviaturas de nombre de página para las primeras letras). La mayoría de sus líneas de RESX serán específicas para cada página y no debe centrarse en intentar reutilizar tanto como sea posible. Cambiar una frase en todo el archivo se puede hacer con cuidado en minutos utilizando el texto buscar / reemplazar cuando sea necesario.