Globalization menyiapkan mekanisme format; localization melengkapi dengan isi: teks antarmuka yang diterjemahkan per bahasa. Konsep intinya adalah resolusi pesan berjenjang. Pengguna dengan culture en-GB sebaiknya menerima pesan bahasa Inggris generik, bukan culture default aplikasi; pengguna dengan culture yang belum diterjemahkan sebaiknya menerima bahasa fallback yang sudah kita tetapkan. Untuk aplikasi besar, .NET menyediakan ResourceManager dengan berkas resource per culture; mekanisme resolusinya mengikuti pola yang sama dengan contoh ini.
Tabel Pesan dan Rantai Fallback #
Kita memodelkan resolusi tersebut dengan kamus berisi kunci bahasa:
private static readonly Dictionary<string, string> Pesan = new()
{
["id"] = "Terima kasih telah berbelanja",
["en"] = "Thank you for your purchase",
[""] = "Thank you for your purchase"
};
private static string PilihPesan(CultureInfo culture)
{
if (Pesan.TryGetValue(culture.Name, out string exact))
{
return exact;
}
if (Pesan.TryGetValue(culture.TwoLetterISOLanguageName, out string bahasa))
{
return bahasa;
}
return Pesan[""];
}Menguji Tiga Culture #
Console.WriteLine(PilihPesan(CultureInfo.GetCultureInfo("id-ID")));
Console.WriteLine(PilihPesan(CultureInfo.GetCultureInfo("en-GB")));
Console.WriteLine(PilihPesan(CultureInfo.GetCultureInfo("ja-JP")));Output yang Dihasilkan:
Terima kasih telah berbelanja
Thank you for your purchase
Thank you for your purchaseMari kita telusuri ketiga pemanggilan:
- id-ID: kunci
id-IDtidak ada di kamus, laluTwoLetterISOLanguageNamemenghasilkaniddan menemukan pesan bahasa Indonesia. - en-GB: varian regional Inggris juga tidak ada sebagai kunci, sehingga jatuh ke bahasa dasar
en; pengguna tetap melihat terjemahan yang wajar. - ja-JP: tidak ada terjemahan bahasa Jepang sama sekali, sehingga rantai berakhir di kunci
""sebagai fallback default aplikasi.
Pada aplikasi nyata, tabel kamus ini digantikan berkas resource .resx yang dikompilasi menjadi satelit per culture, dan ResourceManager melakukan rantai pencarian yang sama: culture persis, culture induk, lalu resource netral. Prinsip yang tetap sama di kedua pendekatan adalah menaruh seluruh kalimat dalam kunci yang bermakna, bukan menyambung potongan kata, karena urutan kata antar bahasa tidak bisa dipastikan sama.