Globalization (G11N): The process of making an app support different languages and regions.

Localization (L10N): The process of customizing a globalized app for specific languages and regions


Step 1: Make the App's Content Localizable

Purpose:

To allow the app to support different languages by externalizing user-facing strings into resource files.

Actions:


🔹 Path 1: Resource Files in the Same Project (Simple Case)

Sample Code (Program.cs):

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");

builder.Services.AddControllersWithViews()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();

// example for using localization with data annotation
 public class ProductDTO
 {
     public Guid? Id { get; set; }

     [Required(ErrorMessageResourceType = typeof(SharedResource), ErrorMessageResourceName = "ProductNameRequired")]
     [StringLength(100, ErrorMessageResourceType = typeof(SharedResource), ErrorMessageResourceName = "ProductNameMaxLength")]
     public string Name { get; set; }

     [StringLength(500, ErrorMessageResourceType = typeof(SharedResource), ErrorMessageResourceName = "DescriptionMaxLength")]
     public string Description { get; set; }

     [Required(ErrorMessageResourceType = typeof(SharedResource), ErrorMessageResourceName = "PriceRequired")]
     [Range(0.01, 1000000, ErrorMessageResourceType = typeof(SharedResource), ErrorMessageResourceName = "PriceRange")]
     public double Price { get; set; }
 }

Explanation: