Internationalisation (i18n) en C# (.NET)
\nL'internationalisation (abrégée i18n — de l'anglais "internationalization", où 18 est le nombre de lettres entre le premier "i" et le dernier "n") est le processus de conception de logiciels permettant de les adapter à différentes langues, régions et particularités culturelles sans modifier le code source. Dans la plateforme .NET (C#), l'i18n est implémentée via les mécanismes de localisation et de globalisation, intégrés au cœur du framework.
\n\nConcepts clés de l'i18n dans .NET
\n- \n
- Globalisation — conception d'une application prenant en charge plusieurs cultures (par exemple, formatage des dates, nombres, devises). \n
- Localisation — adaptation de l'interface à une culture spécifique (traduction des textes, images, sons). \n
- Culture (Culture) — combinaison de la langue et des paramètres régionaux, désignée par un code comme
ru-RU,en-US,de-DE. \n - Fichiers de ressources (.resx) — fichiers XML contenant des paires "clé-valeur" pour chaque locale. \n
Comment fonctionne l'i18n en C# (.NET)
\nDans .NET, la localisation utilise des fichiers de ressources. Le fichier principal (par exemple, Strings.resx) contient les chaînes dans la langue par défaut (généralement l'anglais). Pour chaque langue supplémentaire, un fichier séparé est créé avec le suffixe du code de culture : Strings.ru.resx (russe), Strings.de.resx (allemand). Lors de la compilation, ces fichiers sont transformés en assemblys satellites, chargés en fonction de la culture actuelle du thread.
// Exemple de fichier de ressources (Strings.resx)\n// Key: HelloMessage, Value: "Hello, World!"\n// Strings.ru.resx\n// Key: HelloMessage, Value: "Привет, мир!"\n\n\nImplémentation pas à pas de la localisation dans une application console
\n- \n
- Créez un fichier de ressources dans le projet : clic droit sur le projet → Add → New Item → Resources File. Nommez-le
Strings.resx. \n - Ajoutez des chaînes : insérez la clé
Greetinget la valeurHello, user!. \n - Créez un fichier pour la langue russe :
Strings.ru.resxavec la même clé et la valeurПривет, пользователь!. \n - Écrivez le code pour définir la culture et obtenir la chaîne localisée : \n
using System.Globalization;\nusing System.Resources;\nusing System.Threading;\n\nclass Program\n{\n static void Main()\n {\n // Définit la culture russe\n Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU");\n Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");\n\n // Obtient le gestionnaire de ressources\n ResourceManager rm = new ResourceManager("YourNamespace.Strings", typeof(Program).Assembly);\n string greeting = rm.GetString("Greeting");\n\n Console.WriteLine(greeting); // Affiche : "Привет, пользователь!"\n }\n}\n\n\nLocalisation des applications web ASP.NET Core
\nDans ASP.NET Core, l'i18n est implémentée via un middleware et des services intégrés. Regardons un exemple de configuration pour MVC ou Razor Pages.
\n\n1. Configuration dans 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 Aussi dans la bibliothèque
Travailler avec les archives ZIP en PHP : ZipArchive et bibliothèques de compression
Génération de rapports PDF en Rust : bibliothèques et exemples pratiques
Travail avec les dates en JavaScript (Node.js) : bibliothèques populaires
Client Redis pour C++ : connexion, installation et exemples