Selasa, 15 Oktober 2013

Multi Language Page ASP.NET MVC part 1

Hai semua berjumpa lagi, dihari Idul Adha ini daripada bengong nungguin sate mateng mending kita coding :). pada kali ini saya akan menerangkan bagaimana cara mengganti bahasa pada halaman website sesuai dengan bahasa local (multi language) menggunakan asp.net mvc. 

Pertama-tama kita buat new ASP.NET MVC application seperti pada gambar dibawah.



Lalu kita pilih Internet Application dan razor sebaga view engine, jangan lupa un-checked create a unit test project, karena kita tidak akan membuat unit test pada tutorial kali ini.

Lalu akan muncul folder-folder seperti dibawah.


Untuk membuat multi language page, kita membutuhkan sebuah tempat untuk menyimpan template yang akan ditampilkan dihalaman website. template ini berupa sebuah file resource (.resx). untuk menambah resource tersebut, kita add folder App_GlobalResources. Klik kanan project -> add -> add ASP.Net Folder ->; App_GlobalResources, kemudian akan muncul folder seperti gambar dibawah


kemudian kita add resource file. klik kanan pada folder App_GlobalResources -> add -> Resources file beri nama Global untuk bahasa Inggris dan Global.Id untuk resources bahasa Indonesia


File resources tersebut adalah tempat kita menyimpan template untuk ditampilkan pada halaman website, Global untuk resource berbahasa Inggris, dan Global.Id untuk resource bahasa Indonesia. cara kerja resource ini seperti sebuah dictionary, yaiut mempunyai sebuah nama dan nilai (Name & Value).
Resource tersebut kita isi seperti gambar dibawah ini

Bahasa Inggris

Bahasa Indonesia
Untuk menampilkan resource tersebut kita ubah halaman Home/Index menjadi seperti ini


Lalu kita build dan running maka akan halaman website akan seperti ini


Tulisan yang digaris bawahi merupakan value dari resource file yang kita buat tadi. bagaimana cara merubah bahasa menjadi bahasa Indonesia. pertama-tama kita akan membuat sebuah Map.Route baru pada RouteConfig,cs yang memetakan url yang mengandung bahasa (lang). kita tambahkan sebelum default route

// Comment
   routes.MapRoute(
              "Localization", //route Name
              "{lang}/{contoller}/{action}/{id}", //URL with parameter
              new { controller = "Home", action = "Index", id = UrlParameter.Optional } //default parameter
              );

kemudian kita tambahkan satu buah class Attribute. kita beri nama Localization attribute,

public class LocalizationAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext.RouteData.Values["lang"] != null &&
                 !string.IsNullOrWhiteSpace(filterContext.RouteData.Values["lang"].ToString()))
            {
                // set the culture from the route data (url)
                var lang = filterContext.RouteData.Values["lang"].ToString();
                Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(lang);
            }
            else
            {
                // load the culture info from the cookie
                var cookie = filterContext.HttpContext.Request.Cookies["MultiLanguage.CurrentUICulture"];
                var langHeader = string.Empty;
                if (cookie != null)
                {
                    // set the culture by the cookie content
                    langHeader = cookie.Value;
                    Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(langHeader);
                }
                else
                {
                    // set the culture by the location if not speicified
                    langHeader = filterContext.HttpContext.Request.UserLanguages[0];
                    Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(langHeader);
                }
                // set the lang value into route data
                filterContext.RouteData.Values["lang"] = langHeader;
            }

            // save the location into cookie
            HttpCookie _cookie = new HttpCookie("MultiLanguage.CurrentUICulture", Thread.CurrentThread.CurrentUICulture.Name);
            _cookie.Expires = DateTime.Now.AddYears(1);
            filterContext.HttpContext.Response.SetCookie(_cookie);

            base.OnActionExecuting(filterContext);
        }
    }
Lalu kita tambahkan attribute tersebut pada action index di HomeController
[Localization]
        public ActionResult Index()
        {

            return View();
        }

Kita build dan voila halaman website kita berubah bahasa

Web Bahasa Inggris

Web Bahasa Indonesia

Cukup sekian tutorial kali ini. tutorial ini masih ada lanjutanya loh, jadi tunggu post berikutnya

untuk source codenya bisa di-download disini

24 komentar :

Unknown mengatakan...

Infonya bermanfaat..
Mampir ke blog saya juga ya gan, ada banyak tips-tips ASP.NET MVC . Untuk yang mau tau manfaatnya mengembangkan website ASP.NET MVC baca aja ni artikel ini ..
http://blog.jaringanhosting.com/index.php/asp-net-mvc-hosting-jaringahosting-com-manfaat-mengembangkan-website-asp-net-mvc/
Semoga bermanfaat 

web hosting mengatakan...

info yang manarik :) web hosting

piala dunia 2014 mengatakan...

terima kasih banyak infonya banyak membantu :>) piala dunia 2014

Unknown mengatakan...

Anda memiliki postingan yang sangat berguna. Terima kasih telah berbagi ...
jasa pembuatan website

Unknown mengatakan...

king88.asia

Saya selalu menjelajahi Internet untuk informasi baru dan belajar apapun yang saya bisa, dan

dengan berbuat demikian saya kadang-kadang meninggalkan komentar di blog. saya tidak

melakukannya untuk tujuan SEO , tetapi untuk belajar hal-hal baru.

Unknown mengatakan...

BOKEP INDO

Sangat jarang saya menemukan sebuah blog yang informatif dan menghibur seperti ini.

Unknown mengatakan...

nagapoker.biz

Blog Anda sangat penting bagi semua orang, teruslah berbagi.

Unknown mengatakan...

npselalu.com
saya harus mengatakan bahwa secara keseluruhan saya benar-benar terkesan dengan blog ini.

Unknown mengatakan...

PREDIKSI TOGEL

blog yang bagus dan informatif, yang berisi semua informasi dan juga memiliki dampak yang
besar pada teknologi baru.

Unknown mengatakan...

SBOBET01
Teruslah berbagi ide sampai masa mendatang .pada dasarnya apa yang saya cari sudah saya
temukan disini, dan saya senang sudah tiba disini.

Unknown mengatakan...

DEWA TANGKAS

Terima kasih atas postingan yang bermanfaat.

Unknown mengatakan...

BANDAR BOLA
Di mana lagi orang bisa mendapatkan jenis informasi sedemikian cara yang sempurna untuk menulis? kalau bukan dari blog ini :)

Unknown mengatakan...

Sangat jarang saya menemukan sebuah blog yang informatif dan menghibur seperti ini.
Togel

Unknown mengatakan...

bolatangkas

saya harus mengatakan bahwa secara keseluruhan saya benar-benar terkesan dengan blog ini.

Unknown mengatakan...

blog yang bagus dan informatif, yang berisi semua informasi dan juga memiliki dampak yang
besar pada teknologi baru.

agen sbobet

Unknown mengatakan...

I agree with you. This post is truly inspiring. I like your post and everything you share with us is current and very informative, I want to bookmark the page so I can return here from you that you have done a fantastic job. Agen Bola Terpercaya


DOMINOQQ mengatakan...

mantap this blog...good luck

bandar domino online

Agen Bola Terpercaya mengatakan...

Great post! I?m just starting out in community management/marketing media and trying to learn how to do it well - resources like this article are incredibly helpful. As our company is based in the US, it?s all a bit new to us. The example above is something that I worry about as well, how to show your own genuine enthusiasm and share the fact that your product is useful in that case.

Also visit our website : Agen Judi Online

Anonim mengatakan...

http://tangkasnet9.com/

Unknown mengatakan...

maaf linknya rusak, tolong infonya

thx

ridwanf mengatakan...

link baru

https://www.dropbox.com/s/aadi0iuz196dn53/MultiLanguage.rar?dl=0

pakar seo mengatakan...

thanks gan.

Unknown mengatakan...

thanks for share you info ..
lotere indonesia
togel indonesia
toto indonesia

Paito Sgp mengatakan...

thank you for all the information that has been conveyed here, hopefully it can be useful.