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

56 komentar :

Febby marli 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

bola online mengatakan...

semoga artikelnya bisa bermanfaat bagi yang lain bola online

agen bola mengatakan...

manteb artikelnya, bisa buat belajar nih dan ilmu bertambah :D agen bola

piala dunia 2014 mengatakan...

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

supri santoso mengatakan...

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

supri santoso mengatakan...

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

supri santoso mengatakan...

Terima kasih atas postingan yang bermanfaat.
foto bugil

supri santoso mengatakan...

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

supri santoso mengatakan...

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

supri santoso mengatakan...

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

supri santoso mengatakan...

Blog Anda sangat penting bagi semua orang, teruslah berbagi.
sbobet

supri santoso mengatakan...

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

supri santoso mengatakan...

saya terkesan, saya harus mengatakan ini kepada anda.
judi bola online

supri santoso mengatakan...

Postingan yang sangat bagus, saya setuju dengan Anda 100%!
poker online

protov vertana 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.

protov vertana mengatakan...

KONTES SEO
saya terkesan, saya harus mengatakan ini kepada anda.

protov vertana mengatakan...

BOKEP INDO

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

protov vertana mengatakan...

nagapoker.biz

Blog Anda sangat penting bagi semua orang, teruslah berbagi.

protov vertana mengatakan...

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

protov vertana mengatakan...

PREDIKSI TOGEL

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

protov vertana mengatakan...

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

protov vertana mengatakan...

DEWA TANGKAS

Terima kasih atas postingan yang bermanfaat.

protov vertana mengatakan...

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

Rully YustafNugroho mengatakan...

Postingan yang sangat bagus, saya setuju dengan Anda 100%!
vegas88.asia

Rully YustafNugroho mengatakan...

Blog Anda sangat penting bagi semua orang, teruslah berbagi.
bokeps

Rully YustafNugroho mengatakan...

Terima kasih telah berbagi informasi yang benar-benar membantu.
vipbet88.biz

Rully YustafNugroho mengatakan...

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

Rully YustafNugroho mengatakan...

saya terkesan, saya harus mengatakan ini kepada anda.
Nagatogel

Rully YustafNugroho mengatakan...

blog yang bagus dan informatif
Film Porno

Rully YustafNugroho mengatakan...

Teruslah berbagi ide sampai masa mendatang
golf.dynamicsentosa.com

Rully YustafNugroho mengatakan...

saya senang sudah tiba disini.
Bokep Indo

Rully YustafNugroho mengatakan...

Anda memiliki postingan yang sangat berguna. Terima kasih telah berbagi ...
Bokep Indonesia

Rully YustafNugroho mengatakan...

Terima kasih atas postingan yang bermanfaat.
Poker Online

Bagus Santoso mengatakan...

Postingan yang sangat bagus, saya setuju dengan Anda 100%!

agen bola

Bagus Santoso mengatakan...

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.

agen bola terpercaya

Bagus Santoso mengatakan...

saya terkesan, saya harus mengatakan ini kepada anda.

judi bola

Bagus Santoso mengatakan...

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

taruhan bola

Bagus Santoso mengatakan...

Blog Anda sangat penting bagi semua orang, teruslah berbagi.

prediksi bola

Bagus Santoso mengatakan...

bolatangkas

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

Bagus Santoso mengatakan...

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

agen sbobet

Bagus Santoso mengatakan...

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

kasino indonesia

Bagus Santoso mengatakan...

Terima kasih atas postingan yang bermanfaat.

air asia

Bagus Santoso mengatakan...

Saya menemukan banyak pengetahuan setelah mengunjungi postingan Anda terima kasih atas informasinya.

Jual Tas

mas join 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


Agen Judi Online mengatakan...

I am truly inspired by this online journal! Extremely clear clarification of issues is given and it is open to every living soul. I have perused your post, truly you have given this extraordinary informative data about it. Agen Judi Bola


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...

Ayo Taruhan Bola Dan Jangan Lupa Kunjungi Link Dibawah Ini!!!
http://fs88bet.org
http://fs88bet.net
http://fs88bet.biz
http://fs88bet.info
http://fs88bet.asia

Anonim mengatakan...

http://tangkasnet9.com/

Hendry Priyatno mengatakan...

maaf linknya rusak, tolong infonya

thx

muhammad ridwan mengatakan...

link baru

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

pakar seo mengatakan...

thanks gan.

Bandar Bola mengatakan...

People often say that motivation doesn't last. Well, neither does bathing - that's why we recommend it daily.
i really like it. Thankyou
Judi Online, Ilmu Judi

Diana Sari mengatakan...

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

michael angelo rosal mengatakan...

An impressive share! I've just forwarded this onto a co-worker who has been doing a little homework on this. And he actually ordered me dinner due to the fact that I found it for him... lol. So allow me to reword this.... Thanks for the meal!! But yeah, thanks for spending some time to discuss this issue here on your internet site. Pls visit us at taruhan bola online