¿Qué ventajas tiene el uso de la localización .resx para una aplicación ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/609324

  •  03-07-2019
  •  | 
  •  

Pregunta

Hay una serie de preguntas en este sitio relacionadas con cómo acceder a los archivos RESX en una aplicación ASP.NET MVC y mejores prácticas de usarlos.

Sin embargo, después de leer (por primera vez podría agregar) el MSDN artículo sobre recursos Me pregunto si hay alguna ventaja de usar archivos RESX ya que no voy a usar controles de servidor. Hay toda esta charla de localización 'implícita' y 'explícita' pero no me voy a beneficiar de eso con MVC.

Finalmente, mi aplicación necesitará recursos de cadena para botones y elementos de menú y también elementos HTML mucho más largos para contenido misceláneo más largo. Me gustaría usar un CMS para los elementos más largos porque estoy bastante seguro de que no quiero pegarlos en un archivo RESX.

¿Hay alguna razón convincente para usar o no usar los recursos ASP.NET en una aplicación nueva . Voy a suponer que cualquier mejora MVC futura o RESX funcionará en armonía juntas, pero por ahora solo estoy obteniendo un IDictionary glorificado por lo que puedo ver.

¿Debo proceder con RESX o buscar en otro lado? ¿Debería considerar un CMS para los tipos de recursos para los que RESX está diseñado?

Cualquier lección aprendida sería apreciada.

¿Fue útil?

Solución

Hay un par de ventajas en la infraestructura RESX:

  • no tiene que cargar los recursos adecuados por idioma. Una vez que se establece la configuración regional del subproceso, el CLr se encarga de encontrar el ensamblado apropiado y cargar los recursos.
  • es fácil pasar los recursos específicos de la localidad para localizaciones a terceros.
  • existe un mecanismo de reserva predeterminado para los recursos no localizados.

También hay una desventaja particular en el enfoque RESX:

  • es difícil soportar el modelo de traducción donde los usuarios traducen sus recursos por usted.

Me gustaría explicar un poco sobre este último punto. Tomemos, por ejemplo, el modelo de traducción de Facebook. Facebook tiene una forma bastante simple para que las personas proporcionen y voten las traducciones de varios recursos. Si se almacenan en una base de datos, sería posible usarlos después del proceso editorial adecuado sin reconstruir y volver a implementar la aplicación. Con el modelo RESX, los ensamblados de recursos deberán reconstruirse y volver a implementarse, lo que podría tener un costo lo suficientemente alto según el proceso de implementación.

Por lo tanto, antes de decidir qué proceso de localización usar, analizaría la decisión de quién va a hacer la localización y cuál será el proceso de implementación de los recursos localizados después de que la aplicación principal ya esté implementada.

EDITAR: olvidé mencionar que estas consideraciones son ortogonales a la elección del marco ASP.NET (MVC o WebForms).

Otros consejos

Yo diría " yes " ;, los archivos resx siguen siendo una buena opción para nuevas aplicaciones. No creo que ASP.NET MVC en particular cambie nada sobre el almacenamiento de sus cadenas.

Lo bueno de usar recursos es

  • son bastante fáciles de administrar
  • localizar su sitio es una tarea mucho más fácil que sin recursos (y enfatizo mucho más fácil)
  • puede reemplazar el almacén de recursos en cualquier momento porque los recursos usan el modelo de proveedor. Puede cambiar los archivos resx para las entradas de db sin cambiar la implementación de su sitio.

Recomiendo archivos de recursos para " cadenas de sitio " que son diferentes a los grandes bloques de datos que puede editar con frecuencia. Entonces, para una recomendación completa, diría que use archivos de recursos (resx para comenzar) para botones, etiquetas, etc., y un CMS para el contenido carnoso.

Si va a usar Resx y no usará los Controles del servidor como lo está en MVC, ¿por qué no extender los métodos de MVC Helper para que pueda crear etiquetas y texto localizados? Luego simplemente llame al texto desde el recurso en el método auxiliar.

p. '<% = Html.CultureLabel (" ResouceId ")% >'

o '<% = Html.CultureButton (" Nombre ", " ResouceId " ;, HtmlButtonType.Button)% >'

Solo un pensamiento.

También gestionar la globalización de un sitio es MUCHO más fácil con resx para el texto.

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