resource net mvc istringlocalizer asp and localization asp.net-core asp.net-core-mvc resx asp.net-core-localization

localization - net - Descripción de los archivos de recursos en MVC6 RC1



mvc 5 resources localization (1)

El enfoque central por defecto de ASP.NET es NO tener las cadenas de idioma predeterminadas en un archivo de recursos, sino simplemente incluirlas en el código. Para poder escribir la aplicación usando cadenas en inglés envueltas en el localizador, y tener un archivo de recursos alemán. Ver mi artículo https://docs.microsoft.com/aspnet/core/fundamentals/localization

He estado tratando de entender cómo implementar mejor los archivos de recursos para varios idiomas en MVC6, pero debido a los cambios en cada versión me tiene un poco confundido sobre cómo implementarlos correctamente. ¿Qué se requiere y cuáles son las limitaciones?

Algunos artículos que he visto:

https://damienbod.com/2015/10/21/asp-net-5-mvc-6-localization/

MVC 6: ¿cómo usar los archivos RESX?

http://pratikvasani.github.io/archive/2015/12/25/MVC-6-localization-how-to/

Estoy intentando configurar archivos de recursos para que tenga inglés y alemán disponibles para mis usuarios, lo que se basaría en la configuración del navegador o en una configuración personal dentro de su cuenta.

¿Cuál sería la mejor manera de lograr esto?

¡Gracias por adelantado!

Editar:

Entonces, según el artículo, he agregado el siguiente código a Startup.cs:

services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddMvc() .AddViewLocalization(Microsoft.AspNet.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization(); var supportedCultures = new[] { new CultureInfo("de-DE"), new CultureInfo("en-US") }; //Set Default Localization Culture app.UseRequestLocalization(new RequestLocalizationOptions { SupportedCultures = supportedCultures, SupportedUICultures = supportedCultures }, new RequestCulture(new CultureInfo("en-US")));

Luego, dentro de la carpeta de Recursos creé nuevos archivos resx con nombres de archivo:

  • "Views.Shared._LocalizationTest.en-US.resx"

  • "Views.Shared._LocalizationTest.de-DE.resx"

Y mi vista parcial se ve así:

@using Microsoft.AspNet.Localization @using Microsoft.AspNet.Mvc.Localization @inject IViewLocalizer Localizer <div> @Localizer["TestString"] </div>

Todavía me falta algo, ya que estoy mostrando "TestString" para mostrar en lugar de "Test String" para inglés o "German: Test String" (según mis archivos de recursos).

¿Algunas ideas?