14

ich versucht habe meinen Kopf herum zu wickeln, wie am besten Ressourcen-Dateien für mehrere Sprachen in MVC6 zu implementieren, aber aufgrund der Änderungen mit jedem Release hat mir ein wenig verwirrt darüber, wie sie tatsächlich umsetzen zu richtig. Was ist erforderlich und welche Einschränkungen gibt es?Erläuterungen zu Ressourcendateien in MVC6 RC1

Einige Artikel Ich habe betrachtet:

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/

Ich versuche, Ressourcen-Dateien einzurichten, so dass ich Englisch und Deutsch zur Verfügung meine Benutzer, die entweder auf Browsereinstellungen oder einer persönlichen Einstellung in ihrem Konto basieren würden.

Was wäre der beste Weg, um dies zu erreichen?

Vielen Dank im Voraus!

Edit:

So laut dem Artikel habe ich den folgenden Code Startup.cs hinzugefügt:

 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"))); 

dann im Ordner Ressourcen I neue resx Dateien mit Dateinamen erstellt:

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

  • „Views.Shared._LocalizationTest.de-DE.resx“

Und meine Teilansicht wie folgt aussieht:

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

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

Ich scheine immer noch etwas zu fehlen, wie ich bin immer „Teststring“ zu zeige anstelle von "Test String" für Englisch oder "Deutsch: Test String" (gemäß meiner Ressourcendateien).

Irgendwelche Ideen?

+0

Haben Sie etwas herausgefunden? Ich habe auch die ähnliche Art von Problem, siehe meine Frage: http://stackoverflow.com/questions/42712326/localizaion-using-resource-file-in-net-core-for-different-culture – Herin

+0

@RickAndMSFT Der Link ist gebrochen. – Marcel

+0

mein Artikel https://docs.microsoft.com/aspnet/core/fundamentals/localization – RickAndMSFT

Antwort

2

Der ASP.NET-Kern Standardansatz ist NICHT haben Sie Ihre Standard-Sprache Zeichenfolgen in einer Ressource-Datei, aber nur haben sie in Code verpackt. Sie könnten also die App mit englischen Strings schreiben, die in den Localizer eingepackt sind, und eine deutsche Ressourcendatei haben. Siehe meinen Artikel https://docs.microsoft.com/aspnet/core/fundamentals/localization

+4

Ist es wirklich so eine gute Idee sehen? Ich meine, es ist praktisch, wenn du mit einer kleinen App anfängst, aber ziemlich fehleranfällig für mich klingt. Ich meine, was ist, wenn Sie die Interpunktion in Ihrer Standardsprache zu ändern, dann werden Sie müssen den „Schlüssel“ in allen anderen Lokalisierungsdateien gehen und zu ersetzen, da sonst Ihre lokalisierte Variable wird nicht mehr in den anderen Lokalisierungsdateien gefunden werden? – Tseng

+0

Dieser Artikel hilft definitiv, aber ich habe ähnliche Gedanken wie Tseng. Zum Beispiel kann Englisch mein starker Anzug sein, Lokalisierung findet entfernt statt, aber die Standardsprache für die Seite sollte Deutsch sein. – Reosoul

+0

Ich stimme Reosoul zu. Im Moment versuche ich eine asp.net core mvc Website mit Standard-Spanisch und unterstütztem Englisch aufzubauen. Es funktioniert jedoch nicht mit Zeichenfolgen, die in Code eingebettet sind. Es zeigt immer die Strings aus den English.resx-Dateien. – SherleyDev

Verwandte Themen