Heim > Artikel > Backend-Entwicklung > Detaillierte Einführung in den Beispielcode für die mehrsprachige Implementierung des Asp.Net Core MVC-Projekts
In diesem Artikel wird hauptsächlich die Asp.Net Core MVC-Projektimplementierung Mehrsprachigkeit (Globalisierung/Lokalisierung) vorgestellt Es hat einen gewissen Referenzwert.
Ich habe kürzlich eine mehrsprachige Funktion für ein Razor MVC-Projekt implementiert. was auch immer. Der endgültige Effekt besteht darin, die Sprache der gesamten Website mit einem Klick zu ändern und während der Entwicklung nur einen Satz Seiten zu schreiben.
Kommen wir zum Punkt
Zuerst müssen wir eine CultureConfigurer-Klasse erstellen, um Lokalisierungsressourcen zu verwalten und den Link „Übersetzung“ zu vervollständigen:
Hier habe ich verwendet Statische -Klasse und dann die Init()-Methode ausführen, wenn das MVC-Projekt StartUp tatsächlich etwas dumm ist. Natürlich können Sie auch zuerst eine Schnittstelle schreiben und dann Abhängigkeitsinjektion um einen Singleton zu erstellen.
using System.Collections.Generic; using System.IO; using System.Reflection; using Newtonsoft.Json; namespace Localization { public enum Culture { Cn, En } public static class CultureConfigurer { private static Dictionary<string, string> _enDictionary; private static Dictionary<string, string> _cnDictionary; public static void Init() { var assembly = Assembly.Load(new AssemblyName("Localization")); var resourceNames = assembly.GetManifestResourceNames(); foreach (var resourceName in resourceNames) { if (resourceName.EndsWith("en-US.json") || resourceName.EndsWith("zh-CN.json")) { using (var stream = assembly.GetManifestResourceStream(resourceName)) { if (stream != null) { using (StreamReader reader = new StreamReader(stream)) { var content = reader.ReadToEnd(); Dictionary<string, string> localizationDictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(content); if (resourceName.EndsWith("en-US.json")) { _enDictionary = localizationDictionary; } else { _cnDictionary = localizationDictionary; } } } } } } } public static string GetValue(string key, Culture culture) { switch (culture) { case (Culture.Cn): { if (_cnDictionary.ContainsKey(key)) { return _cnDictionary[key]; } else { return $"[{key}]"; } } case (Culture.En): { if (_enDictionary.ContainsKey(key)) { return _enDictionary[key]; } else { return $"[{key}]"; } } default: { return $"[{key}]"; } } } } }Ein paar Punkte müssen hier beachtet werden: 1. Die Enum-Klasse Culture wird verwendet, um die zu implementierende Sprache darzustellen. Hier habe ich einfach Chinesisch und Englisch implementiert (I Verstehe die anderen nicht) ), die entsprechende CultureConfigurer-Klasse hat zwei Wörterbuch in Chinesisch und Englisch 2. Verwenden Sie Assembly.Load, um die Assembly zu laden, der Parameter ist Ihr eigener Assemblyname, ich habe gerade einen hier geschrieben 3. Ich habe die JSON-Datei als Ressourcendatei ausgewählt, auch um den Aufruf in js zu erleichtern. Natürlich können Sie auch 4. Wenn ich die Get 5. Ressourcendateien können an einer beliebigen Stelle in der Assembly erstellt werden. Wenn Ihr Projekt über eine project.json-Datei verfügt, fügen Sie diese in den buildOptions hinzu. Passen Sie den Pfad entsprechend Ihrem eigenen Dateispeicherort an
"embed": { "include": [ "Localization/SourceFiles/*.json" ] }Wenn es sich um VS2017 handelt, handelt es sich um eine CSPROJ-Datei. Klicken Sie dann mit der rechten Maustaste auf die hinzuzufügende Ressourcendatei, wählen Sie „ An diesem Punkt haben wir die Kernklasse geschrieben, um die Lokalisierung zu implementieren. Wir müssen das Problem lösen, wie es auf der Seite angezeigt wird:Erstellen Sie eine neue Klasse MyRazorPage
using System; using Microsoft.AspNetCore.Mvc.Razor; using Localization; namespace MVC.Views { public abstract class MyRazorPage<TModel> : RazorPage<TModel> { public virtual string L(string source) { var value = Context.Request.Cookies["culture"]; Culture c; if (string.IsNullOrEmpty(value) || !Enum.TryParse(value, out c)) { c = Culture.Cn; } return CultureConfigurer.GetValue(source, c); } } }Beachten Sie, dass es sich bei dieser Klasse um ein
handelt abstrakte Klasse und erbt RazorPagebc26e2d35896972142bded266172216c Suchen Sie dann die Datei _ViewImports.cshtml im Ordner „Views“ und fügen Sie darin eine Zeile „@inherits MVC.Views.MyRazorPagebc26e2d35896972142bded266172216c“ hinzu, damit alle Ihre RazorPages die MyRazorPage-Klasse erben, was bedeutet, dass Sie die Methode selbst schreiben können verwenden möchten und Sie können es direkt in cshtml aufrufen. Hier habe ich eine L-Methode geschrieben und die GetValue-Methode von CultureConfigurer aufgerufen. Dann muss der zu übersetzende Text auf der Seite nur noch wie @L("Open") geschrieben werden.
Wie Sie sehen, speichere ich die Benutzersprache in Cookie und jeder kann hier seine eigenen Implementierungsmethoden haben. Meine Implementierungsmethode ist sehr einfach. Wenn der Benutzer die Sprache wechselt, greift er auf eine Schnittstelle zu, ändert das Cookie, das die Sprache darstellt, und aktualisiert dann die Seite.Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Beispielcode für die mehrsprachige Implementierung des Asp.Net Core MVC-Projekts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!