Multilingual Website di ASP.net

Dahulu kala, untuk membuat website dengan beberapa bahasa, diperlukan waktu dan pengorbanan yang besar. Jika website bisa menampilkan 2 bahasa, maka satu page di duplikasi, dan diubah bahasanya. Sama persis, hanya beda tulisan dan bacaannya. Lalu bagaimana jika website tersebut support dengan 10 bahasa? Satu page dicopy 10 kali dan diubah dengan 10 bahasa yang berbeda. Bayangkan jika ada 10 page dalam satu website!? Selain waktu, jika ada perubahan di page asli akan sangat menyulitkan dalam updating. Di ASP.net untuk membuat website multibahasa, tidak perlu melakukan duplikasi page, tetapi memanfaatkan Localization/culture Info dan Resources. Mengenai Localization dan Resource secara detil silahkan baca di MSDN atau bertanya pada Google. Saya hanya membahas dasar-dasar membuat website multibahasa dengan memanfaatkan kedua fasilitas tersebut.

Resource ada dua macam, global dan local. Di contoh ini saya menggunakan global resources. Untuk membuat, tambahan ASP.net folder App_GlobalResources. Kemudian tambahkan file resources (.resx).

Sengaja saya buat sub folder biar mudah membedakannya

Pertama yang dibuat adalah resource default. Resource default ini yang akan dibaca pertama kali. Nama file untuk resource defaultĀ  adalah

[NamaResource].resx

Sedangkan resource lain, ditambahkan informasi culture pada nama filenya

[NamaResource].[CultureInfo].resx

Isi file resource tersebut, seperti gambar di bawah ini.

Kolom ‘Name’ merupakan key, kata kunci yang digunakan untuk memanggil value.

Penerapan
Menerapkan resource untuk teks statis, kita tinggal mengganti teks statis tersebut dengan sintak berikut

<%=Resources.[NamaResource].[Key]%>

Contoh:

<h1>TEKS JUDUL WEBSITE</h1>

diubah menjadi

<h1><%=Resources.Teks.TeksHeader%></h1>

Ketika dipilih bahasa inggris maka, resource akan membaca file Teks.en-US dan membaca value dari TeksHeader.

Untuk menerapkan resource di tool, misal button, sintaknya adalah

<%$Resources:[NamaResource], [Key]%>

Contoh:

<asp:Button ID="btCreate" runat="server" Text="<%$Resources:TeksTool, SignUpUser%>"
ToolTip="<%$Resources:TeksTool, SignUpUser_tooltip%>" />

atau kalau melalui code-behind

btCreate.Text = Resources.TeksTool.SignUpUser

Inisialisasi Culture
Secara default aplikasi akan menyesuaikan culture sesuai culture yang di set di browser. Seandainya culture dari browser tidak tersedia di aplikasi, maka culture default yang akan dijalankan oleh aplikasi. Akan lebih bagus jika pemilihan culture tidak bergantung pada browser, tapi ditentukan oleh pengguna sendiri. Misalnya dropdownlist atau radiobuttonlist yang menampilkan daftar culture yang tersedia di aplikasi, dan user bebas memilih culture yang diinginkan.

Di contoh berikut, asumsikan kita punya dropdownlist daftar bahasa dengan id ‘DdlBahasa’, ketika dropdown ini dipilih lakukan inisialisasi culture. code inisialisasi ditulis di dalam sub InitializeCulture()

Protected Overrides Sub InitializeCulture()
     If Request.Form("ddlbhs") IsNot Nothing Then
          Dim bhsDipilih As String = Request.Form("DdlBahasa")
          UICulture = Request.Form("DdlBahasa")
          Culture = Request.Form("DdlBahasa")
          Thread.CurrentThread.CurrentUICulture = New CultureInfo(bhsDipilih )
          Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(bhsDipilih )
     End If
   MyBase.InitializeCulture()
End Sub

PS: Ada perbedaan antara Culture dan UICulture. Culture digunakan untuk setting jam, tanggal, mata uang, angka dan lainnya yang berhubungan format sedangkan UICulture lebih pada tampilan. Antara Culture dan UICulture tidak harus diset sama. Misalnya jika kita membuat web jual beli, tentu kita tidak ingin apabila harga barang misal $2000, begitu user memilih bahasa indonesia harga barang menjadi IDR 2000. Jadi culture bisa diset static sedangkan UICulture diset auto.
Di webconfig, settingnya bisa dilakukan seperti ini

<system.web>
     ....
     <globalization culture="en-US" uiCulture="auto" />
</system.web>

atau di page directive

<%@ Page Culture="en-US" UICulture = "auto" %>

Sebagai referensi tambahan dan file contohnya anda bisa berkunjung ke Code Project, dengan mengklik disini dan disini. Atau silahkan bertanya pada Google.

Semoga membantu. Happy Coding.

About Yuniar

Penulis sekarang lebih banyak bekerja menggunakan teknologi Microsoft .NET secara umum dan TIDAK lagi menggunakan aplikasi MapXtreme.net dari MapInfo. Karena itu mohon maaf, jika pertanyaan-pertanyaan mengenai MapXtreme sudah tidak bisa saya jawab lagi.

Posted on 10 Desember 2009, in ASP.net and tagged , , . Bookmark the permalink. Tinggalkan komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: