J'ai configuré les cultures en fonction de mes points de vue et du changement de culture dans un contrôleur, mais je n'arrive pas à trouver comment savoir quelle culture je suis en train d'utiliser dans un contrôleur. Je recherche par exemple:
public class HomeController : Controller {
public async Task<IActionResult> Index()
{
// Something like the next line
var requestCulture = GetRequestedCulture()
return View();
}
}
Merci pour votre aide
La réponse était sur l'objet Request, voici le code:
public async Task<IActionResult> Index() {
// Retrieves the requested culture
var rqf = Request.HttpContext.Features.Get<IRequestCultureFeature>();
// Culture contains the information of the requested culture
var culture = rqf.RequestCulture.Culture;
return View();
}
JohnnysAce répond fonctionne. Si vous voulez juste un moyen facile d’obtenir la culture actuelle, cela se fait comme toujours en .net:
CultureInfo uiCultureInfo = Thread.CurrentThread.CurrentUICulture;
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
Si vous souhaitez utiliser IRequestCultureFeature (voir la réponse de JohnnyAces; en raison de l'injection de dépendance et d'une meilleure testabilité), vous devez configurer les éléments dans Startup.cs. Microsoft a fourni un exemple ici https://github.com/aspnet/Entropy/blob/2fcbabef58c2c21845848c35e9d5e5f89b19adc5/samples/Localization.StarterWeb/Startup.cs
Ce code fonctionne pour obtenir la culture actuelle dans le contrôleur principal asp:
public string GetCulture() => $"CurrentCulture:{CultureInfo.CurrentCulture.Name}, CurrentUICulture:{CultureInfo.CurrentUICulture.Name}";