Necesito ayuda con las mejores prácticas para localizar aplicaciones asp mvc, Vi que Oxite tenía un método base denominado Localize en el BaseController, pero ¿la localización es una tarea para la vista o el controlador? ¿O debería usar archivos resx/o usar tablas db?¿Práctica de localización ASP.NET MVC?
Respuesta
Crear su propio asistente de HTML y lo utilizan como <%= Html.Resource("Name") %>
Los detalles están en blog puesto.
Para que todos lo sepan, los enlaces de Ihar posteriores ahora tienen un actualizar. Ver: http://blog.eworldui.net/post/2008/10/ASPNET-MVC-Simplified-Localization-via-ViewEngines.aspx –
El enlace actualizado tampoco funciona. :( – bradjive
¿Ya estoy usando una solución similar a esta, pero este tipo de solución no agrega una sobrecarga adicional en términos de rendimiento? – jsicary
Si la cadena a ser localizada es generada por la vista (por ejemplo, una etiqueta delante de un campo de texto), entonces su localización debe estar en la Vista.
Si la cadena es generada por el controlador, su localización debería estar allí también.
hay una buena solución para esto disponible here
este artículo cubre todos los aspectos de la localización asp.net mvc aplicación
MVC es realmente más sobre el uso de la visión correcta para el trabajo correcto. Poner todo en un archivo de recursos es extremadamente paintfull. Es bueno usar archivos de recursos para cosas pequeñas, pero para páginas más grandes como las páginas de descripción, es mejor tener una vista en cada cultura con mucho contenido. Por ejemplo, usando la siguiente estructura: ~/Views/es-US/Home/Index.aspx ~/Views/pt-BR/Home/Index.aspx o esta estructura: ~/Views/Home/Index.en -US.aspx ~/Vistas/Inicio/Index.en-US.aspx
leen el blog de cómo hacerlo: http://blog.oimae.com/2011/02/20/cultured-view-engine-for-mvc/
¿Por qué el -1 en esta respuesta? Hay [varios] (http: // afana. me/post/aspnet-mvc-internationalization.aspx) [reputable] (http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx) [examples] (http://brianreiter.org/2011/03/23/ simple-asp-net-mvc-globalization-with-graceful-fallback /) de este patrón y cuando está indicado. El que responde aquí tiene un punto: administrar el contenido de texto grande en .resx agrega algo de fricción, y puede tener diseño o tamaño impacto en una visión en gran medida textual. Esta es una compensación fundamental, como se ilustra en los enlaces – mcw0933
Por FAR la peor solución - nunca! Si necesita escalar a través de muchos idiomas y configuraciones regionales, esto se convierte en un gran desastre y es súper doloroso para el mantenimiento. Mejor enfoque es poner todo ff en un DB de localización, cargue el contenido requerido al inicio de la aplicación (no olvide un botón de actualización de caché en alguna página) + use algún tipo de interfaz/interfaz de navegador para editar las cadenas. Además, este sistema se adapta bien a un equipo de traductores y "mantenedores de contenido" (en su lugar, deberían estar al tanto de HTML/CSS/JS, al menos hasta un nivel en el que no destruyan cosas en el puntos de vista). – johngrinder
Desde esta una pregunta de un año y no sé el alcance de mi respuesta aquí. Recientemente me enfrenté a una situación como esta, es decir, necesito implementar la localización de diferentes idiomas en mi sitio de mvc.
Consideré usar el archivo Resource
. es muy fácil de implementar, pero el problema es que durante la fase de desarrollo, necesitamos especificar las cadenas localizadas. Entonces, si es un soporte multilingüe, necesitamos crear el archivo de recursos para cada idioma. Si el cliente quiere cambiar o agregar un nuevo idioma, es muy difícil y debemos proporcionar una compilación.
En segundo lugar considero el Satelite Assemblies
. También es similar a Resource, pero le da libertad para editar los ensamblajes y colocarlo nuevamente en la carpeta bin. Esto también requiere un gran esfuerzo para el cliente/desarrollador.
Tercero consideré almacenar en db. Este enfoque está bien y tenemos algún mecanismo para leer datos del servidor. Esto requiere un esfuerzo de una vez y el cliente no tiene ningún tipo de confianza.
puedo reemplazar una costumbre DisplayNameAttributre
y desde el constructor pasaré DB y obtener los datos que hacen
Sobre la base de su requerimiento debe mostrar la vista en su caso.
Administrador de recursos
/// <summary>
/// Extended display attribute which will handles the request
/// It will call every time when the property is rendered (return View() - from controller)
/// </summary>
public class ResourceManagerAttribute : DisplayNameAttribute
{
public ResourceManagerAttribute(string resourceKey, string resourceNameSpace = "")
: base(GetDisplayName(resourceKey, resourceNameSpace))
{ }
private static string GetDisplayName(string resourceKey, string resourceNameSpace = "")
{
// get the browser's prefered language.
string browserLanguage = HttpContext.Current.Request.UserLanguages.First();
// Get the locale data for that property and displays.
switch (browserLanguage)
{
case "en-US": return "Eng " + resourceKey;
// calls db based on resource key
case "hi": return "Hin " + resourceKey;
}
return "-- Not Implemented Now -- ";
}
modelo de vista
public class HomeViewModel
{
//calls the resource
[ResourceManager("MID")]
public int MID { get; set; }
[ResourceManager("Name")]
public string Name { get; set; }
[ResourceManager("Addess")]
public string Addess { get; set; }
}
Me gustaría ir mejor para la creación de un MetadataProvider costumbre y el uso de una convención para los modelos. Algo así como 1 archivo de recursos por espacio de nombres de modelo y una convención como ModelName.PropertyName -> value
Para validadores, botones comunes y un archivo de recursos.
Para las vistas de texto, en realidad estoy tratando de encontrar una buena manera. Tal vez un preprocesamiento de vista antes de la compilación y un Alcance personalizado para textos localizados, por lo que el preproceso puede crear el archivo de recursos para cada vista con el idioma predeterminado.
- 1. ASP.NET MVC pseudo-localización
- 2. ASP.NET MVC - TempData - Buena o mala práctica
- 3. Localización de sitios web ASP.NET MVC con GNU Gettext?
- 4. ASP.NET MVC4 validación discreto localización
- 5. Tiempo ASP.Net localización
- 6. ASP.NET MVC Globalización de vistas
- 7. ¿Es una mala práctica usar muchos viewmodels en asp.net mvc
- 8. ¿Práctica recomendada para la salida condicional en ASP.NET MVC?
- 9. ASP.NET MVC3 discreta localización de mensajes de validación jQuery
- 10. ASP.NET 4.0- Trabajador de fondo: mejor práctica
- 11. Localización de ASP.NET MVC 3 con DisplayAttribute y proveedor de recursos personalizado
- 12. ASP.NET: ¿localización explícita frente a implícita?
- 13. Localización ASP.NET con singular y plural
- 14. ¿Qué ventajas tiene utilizar la localización .resx para una aplicación ASP.NET MVC?
- 15. ASP.Net MVC personalizada autenticación
- 16. asp.net mvc - subcarpetas
- 17. Temas Asp.Net MVC, ¿cómo?
- 18. MVC Localización de la Carpeta de modelo predeterminada
- 19. ASP.NET MVC multihilo
- 20. ASP.NET MVC - ViewModels For Edit
- 21. ASP.Net MVC Cookies Mejores prácticas
- 22. ASP.NET MVC vs Spring MVC
- 23. Membresías de ASP.Net MVC
- 24. 404 páginas en ASP.NET MVC
- 25. ASP.NET MVC vs. ASP.NET 4.0
- 26. ASP.NET MVP vs ASP.NET MVC
- 27. ASP.Net MVC vs ASP.Net Formularios
- 28. asp.net mvc URLs multilenguaje/enrutamiento
- 29. Práctica recomendada para mantener una identificación de usuario (MVC)
- 30. Mejores prácticas para la localización de aplicaciones web ASP.NET
este es un buen enfoque http://stackoverflow.com/questions/381070/asp-net-mvc-localization-best-practice/12936708#12936708 – kbvishnu