Internationalisierung (i18n) in C# (.NET)
\nInternationalisierung (abgekürzt i18n – vom englischen "internationalization", wobei 18 die Anzahl der Buchstaben zwischen dem ersten "i" und dem letzten "n" ist) ist der Prozess des Softwareentwurfs, der es ermöglicht, Software an verschiedene Sprachen, Regionen und kulturelle Besonderheiten anzupassen, ohne Änderungen am Quellcode vorzunehmen. In der .NET-Plattform (C#) wird i18n durch die Mechanismen der Lokalisierung und Globalisierung implementiert, die in den Kern des Frameworks integriert sind.
\n\nGrundlegende Konzepte von i18n in .NET
\n- \n
- Globalisierung – Entwurf einer Anwendung unter Berücksichtigung der Unterstützung mehrerer Kulturen (z. B. Formatierung von Datumsangaben, Zahlen, Währungen). \n
- Lokalisierung – Anpassung der Benutzeroberfläche an eine bestimmte Kultur (Übersetzung von Texten, Bildern, Tönen). \n
- Kultur (Culture) – Kombination aus Sprache und regionalen Einstellungen, gekennzeichnet durch einen Code wie
ru-RU,en-US,de-DE. \n - Ressourcendateien (.resx) – XML-Dateien, die Schlüssel-Wert-Paare für jedes Gebietsschema enthalten. \n
Wie funktioniert i18n in C# (.NET)
\nIn .NET werden für die Lokalisierung Ressourcendateien verwendet. Die Hauptdatei (z. B. Strings.resx) enthält Zeichenfolgen in der Standardsprache (normalerweise Englisch). Für jede zusätzliche Sprache wird eine separate Datei mit dem Suffix des Kulturcodes erstellt: Strings.ru.resx (Russisch), Strings.de.resx (Deutsch). Bei der Kompilierung werden diese Dateien in Satellitenassemblys umgewandelt, die abhängig von der aktuellen Kultur des Threads geladen werden.
// Beispiel einer Ressourcendatei (Strings.resx)\n// Key: HelloMessage, Value: "Hello, World!"\n// Strings.ru.resx\n// Key: HelloMessage, Value: "Привет, мир!"\n\n\nSchrittweise Implementierung der Lokalisierung in einer Konsolenanwendung
\n- \n
- Erstellen Sie eine Ressourcendatei im Projekt: Rechtsklick auf das Projekt → Hinzufügen → Neues Element → Ressourcendatei. Nennen Sie sie
Strings.resx. \n - Fügen Sie Zeichenfolgen hinzu: Fügen Sie den Schlüssel
Greetingund den WertHello, user!ein. \n - Erstellen Sie eine Datei für die russische Sprache:
Strings.ru.resxmit demselben Schlüssel und dem WertПривет, пользователь!. \n - Schreiben Sie den Code zum Festlegen der Kultur und Abrufen der lokalisierten Zeichenfolge: \n
using System.Globalization;\nusing System.Resources;\nusing System.Threading;\n\nclass Program\n{\n static void Main()\n {\n // Russische Kultur festlegen\n Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU");\n Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");\n\n // Ressourcen-Manager abrufen\n ResourceManager rm = new ResourceManager("YourNamespace.Strings", typeof(Program).Assembly);\n string greeting = rm.GetString("Greeting");\n\n Console.WriteLine(greeting); // Gibt aus: "Привет, пользователь!"\n }\n}\n\n\nLokalisierung von ASP.NET Core Webanwendungen
\nIn ASP.NET Core wird i18n durch Middleware und integrierte Dienste implementiert. Betrachten wir ein Beispiel für die Konfiguration für MVC oder Razor Pages.
\n\n1. Konfiguration in Program.cs
\nusing Microsoft.AspNetCore.Localization;\nusing System.Globalization;\n\nvar builder = WebApplication.CreateBuilder(args);\n\nbuilder.Services.AddLocalization(options => options.ResourcesPath = "Resources");\nbuilder.Services.AddControllersWithViews()\n .AddViewLocalization()\n .AddDataAnnotationsLocalization();\n\nvar app = builder.Build();\n\nvar supportedCultures = new[] { new CultureInfo("en-US"), new CultureInfo("ru-RU") };\napp.UseRequestLocalization(new RequestLocalizationOptions\n{\n DefaultRequestCulture = new RequestCulture("en-US"),\n SupportedCultures = supportedCultures,\n SupportedUICultures = supportedCul Auch in der Bibliothek
cron für Go: Vollständige Anleitung mit Beispielen
WireMock.Net für C# (.NET): Vollständiges Tutorial & Anleitung
Redis-Client für PHP: Predis und PhpRedis – Verbindung und Beispiele
Reaktive Programmierung in JavaScript (Node.js): die Bibliothek RxJS
Geolokalisierung und Karten in C++: Überblick über Bibliotheken und Werkzeuge