Internationalisierung (i18n) in C# (.NET): Vollständige Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Internationalisierung (i18n) in C# (.NET): Vollständige Anleitung



Internationalisierung (oft abgekürzt i18n – vom englischen „internationalization“, wo zwischen dem ersten Buchstaben 'i' und dem letzten 'n' 18 Zeichen stehen) ist der Prozess der Softwareentwicklung, bei dem die Software so gestaltet wird, dass sie leicht an verschiedene Sprachen und regionale Standards angepasst werden kann, ohne Änderungen am Quellcode vorzunehmen. Im Ökosystem C# (.NET) ist die Internationalisierung eine integrierte und leistungsstarke Funktion, die es Entwicklern ermöglicht, wirklich mehrsprachige Anwendungen zu erstellen.



In diesem Artikel werden wir im Detail betrachten, wie i18n in .NET (einschließlich .NET Core, .NET 5/6/7/8 und .NET Framework) implementiert wird. Sie lernen die wichtigsten Konzepte kennen – Kulturen, Ressourcendateien (RESX), Lokalisierung von Zeichenfolgen, Bildern und Datenformatierung.



Grundlegende Konzepte



Bevor wir zum Code übergehen, ist es wichtig, zwei Schlüsselbegriffe zu verstehen:

  • Globalisierung (Globalization): Der Prozess der Entwicklung einer Anwendung, die lokalisierte Schnittstellen und regionale Daten für Benutzer aus verschiedenen Kulturen unterstützt. In .NET wird dies durch die Klassen CultureInfo und RegionInfo erreicht.
  • Lokalisierung (Localization): Der Prozess der Anpassung einer bereits globalisierten Anwendung an eine bestimmte Sprache/Region (z. B. Übersetzung von Texten, Anpassung von Datums- und Währungsformaten).


.NET verwendet Kulturen (Cultures), die im Format Sprache-Region angegeben werden (z. B. ru-RU – Russisch (Russland), en-US – Englisch (USA), de-DE – Deutsch (Deutschland)).



Schritt 1: Erstellen von Ressourcendateien (.resx)



Die wichtigste Methode zum Speichern lokalisierter Zeichenfolgen in .NET sind Ressourcendateien (.resx). Es handelt sich um XML-Dateien, die in die Assembly kompiliert werden.



Betrachten wir ein Beispiel. Erstellen wir Dateien für die Sprachen Russisch und Englisch:



  1. Resources.resx – Standard-Ressourcendatei (normalerweise auf Englisch).
  2. Resources.ru.resx – Datei für die russische Sprache.
  3. Resources.de.resx – Datei für die deutsche Sprache.


In jeder Datei fügen wir Zeichenfolgenressourcen mit denselben Namen, aber unterschiedlichen Werten hinzu:



Resources.resx (Standardsprache – en-US):

Name: GreetingWert: Hello, World!

Name: WelcomeMessageWert: Welcome to our application!


Resources.ru.resx (Russisch):

Name: GreetingWert: Привет, мир!

Name: WelcomeMessageWert: Добро пожаловать в наше приложение!


Schritt 2: Zugriff auf Ressourcen im C#-Code



.NET generiert automatisch eine stark typisierte Klasse für den Zugriff auf Ressourcen. Angenommen, die Dateien befinden sich im Ordner Resources des Projekts. Dann sieht der Zugriff wie folgt aus:



using System;using System.Globalization;using System.Threading;

class Program{ static void Main(string[] args) { // Kultur für den aktuellen Thread festlegen Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU"); Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");

// Lokalisierte Zeichenfolgen abrufen string greeting = Resources.Messages.Greeting; string welcome = Resources.Messages.WelcomeMessage;

Console.WriteLine(greeting); // Ausgabe: Привет, мир! Console.WriteLine(welcome); // Ausgabe: Добро пожаловать в наше приложение! }}


Beachten Sie: Resources.Messages ist eine automatisch generierte Klasse, die auf dem Namen Ihrer RESX-Datei basiert (wenn die Datei Messages.resx heißt).



Schritt 3: Lokalisierung in ASP.NET Core



In Webanwendungen mit ASP.NET Core ist der Prozess

Empfehlungen