2009-01-15 12 views
36

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 archivos resx globales es que son una clase, y se puede llamar a las frases como se llama a las propiedades de una clase:Recurso global vs. Recurso local en ASP.NET

Resource.UI.iNotFound

Así que estaba pensando - ¿por qué tener archivos resx locales en absoluto? ¿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, sólo que no sé lo que es ....

Respuesta

47

Seguí buscando pautas, y encontramos este en MSDN:

La elección entre lo global y archivos de recursos local

Se puede usar cualquier combinación de archivos globales y locales de recursos en el Web aplicación. Generalmente, 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 se escriben con fuerza para cuando desee acceder a los archivos mediante programación.

Sin embargo, los archivos de recursos globales pueden agrandarse, 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 de pero en un solo archivo de recursos.

Los archivos de recursos locales hacen que sea más fácil administrar recursos para una sola ASP.NET Página web. Pero no puede compartir recursos entre páginas. Además, puede crear muchos archivos de recursos locales , si tiene muchas páginas que deben estar localizadas en muchos idiomas . Si los sitios son grandes con muchas carpetas e idiomas, los recursos locales pueden expandir rápidamente el número de ensamblados en el dominio de aplicación .

Cuando se 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 provoca una recompilación de recursos , pero la aplicación ASP.NET se reiniciará.

Parece que el equipo de programación realmente tiene que sopesar los pros y contras de cada método y elegir lo que es bueno para ellos.

14

Joe90 - Tengo que decir que en mi experiencia, no estoy de acuerdo que la gestión una gran cantidad de archivos de recursos locales diseminados por todo el proyecto es 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, comenzar con un archivo de recursos local y luego moverlo a un archivo de recursos global si se hizo 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.

estoy adivinando la comparación/recompensa es que los archivos de recursos locales sólo requieren una recompilación del archivo que se refieren, mientras que cambiar un archivo de recursos global parece requerir una recompilación de todo el sitio web - con una inherente pérdida del estado de la sesión, etc., por lo que es necesario desconectar el sitio durante la actualización para estar seguro.

7

Tengo un equipo de desarrollo de al menos 10 desarrolladores en un solo producto y estamos utilizando 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. (Yo soy un desarrollador.)

¡Un experto en idiomas debe editar el archivo resx y bloquearlo para los desarrolladores!

+2

+1 para el último comentario. –

2

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 tanto o tan poco como desee, como Sí, No, BTN_OK, BTN_Cancel, QTN_AreYouSure, etc. mediante la 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 concentrarse 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.

+1

Gracias por su respuesta. Pero todavía no entendí de ello _por qué_ un archivo de Recursos globales es mejor que Local. –

Cuestiones relacionadas