14

Ho cercato di capire come implementare i file di risorse per più lingue in MVC6, ma a causa delle modifiche apportate a ogni rilascio mi sono un po 'confuso su come implementarli effettivamente propriamente. Cosa è richiesto e quali sono i vincoli?Informazioni sui file di risorse in MVC6 RC1

Alcuni articoli che ho guardato:

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

MVC 6 : how to use RESX files?

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

che sto cercando di creare file di risorse in modo da avere inglese e tedesco a disposizione i miei utenti, che potrebbero essere basati sulle impostazioni del browser o su un'impostazione personale all'interno del proprio account.

Quale sarebbe il modo migliore per raggiungere questo obiettivo?

Grazie in anticipo!

Edit:

Così come per l'articolo, ho aggiunto il seguente codice per 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"))); 

Poi all'interno della cartella Risorse ho creato nuovi resx con i nomi di file:

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

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

E la mia vista parziale sembra:

@using Microsoft.AspNet.Localization 
@using Microsoft.AspNet.Mvc.Localization 
@inject IViewLocalizer Localizer 

<div> 
    @Localizer["TestString"] 
</div> 

ho ancora sembrano essere manca qualcosa come sto ottenendo "TestString" per mostra invece di "Test String" per l'inglese o "Tedesco: Test String" (come per i miei file di risorse).

Qualche idea?

+0

Hai capito qualcosa? Ho anche il tipo di problema simile, vedi la mia domanda: http://stackoverflow.com/questions/42712326/localizaion-using-resource-file-in-net-core-for-different-culture – Herin

+0

@RickAndMSFT Il link è rotto. – Marcel

+0

Vedere il mio articolo https://docs.microsoft.com/aspnet/core/fundamentals/localization – RickAndMSFT

risposta

2

L'approccio predefinito di base di ASP.NET è NON avere le stringhe di lingua predefinite in un file di risorse, ma semplicemente averli avvolti nel codice. Quindi è possibile scrivere l'app utilizzando stringhe inglesi avvolte nel localizzatore e disporre di un file di risorse tedesco. Vedi il mio articolo https://docs.microsoft.com/aspnet/core/fundamentals/localization

+4

È davvero una buona idea? Voglio dire, è comodo quando inizi con una piccola app, ma suona piuttosto a rischio di errori. Voglio dire, cosa succede se si modifica la punteggiatura nella lingua predefinita, quindi si dovrà andare a sostituire la "chiave" in tutti gli altri file di localizzazione perché altrimenti la variabile localizzata non verrà più trovata negli altri file di localizzazione? – Tseng

+0

Questo articolo aiuta sicuramente ma ho pensieri simili a Tseng. Ad esempio, l'inglese potrebbe essere il mio punto di forza, la localizzazione avviene da remoto, tuttavia la lingua predefinita per il sito dovrebbe essere il tedesco. – Reosoul

+0

Sono d'accordo con Reosoul. In questo momento sto provando a creare un sito Web mvc asp.net con spagnolo predefinito e inglese supportato. Tuttavia, non funziona con le stringhe avvolte nel codice. Mostra sempre le stringhe dai file English.resx. – SherleyDev