﻿
{"id":1192,"date":"2012-12-24T14:14:20","date_gmt":"2012-12-24T14:14:20","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=1192"},"modified":"2017-08-07T18:12:31","modified_gmt":"2017-08-07T18:12:31","slug":"asp-net-mvc-coklu-dil-fonksiyonlari-2","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-coklu-dil-fonksiyonlari-2\/","title":{"rendered":"Asp.NET MVC \u00c7oklu Dil Fonksiyonlar\u0131 \u2013 2"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bir \u00f6nceki, <a href=\"http:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-coklu-dil-fonksiyonlari\">Asp.NET MVC \u00c7oklu Dil Fonksiyonlar\u0131 \u2013 1<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131mda Asp.NET MVC&#8217;de \u00e7oklu dil fonksiyonlar\u0131na giri\u015f yapm\u0131\u015ft\u0131k.Varsay\u0131lan dil yap\u0131s\u0131na uygun olarak projemizi \u00e7al\u0131\u015ft\u0131r\u0131p yaz\u0131m\u0131z\u0131 tamamlam\u0131\u015ft\u0131k.Bu yaz\u0131m\u0131zda ise, projemizde T\u00fcrk\u00e7e, \u0130ngilizce ve Frans\u0131zca dillerinin yap\u0131s\u0131n\u0131 olu\u015fturup, yay\u0131nlamay\u0131 g\u00f6rece\u011fiz.<br \/>\n<!--more--><br \/>\n\u00d6nceki yaz\u0131m\u0131z\u0131n devam\u0131 olarak ayn\u0131 proje \u00fczerinde \u00e7al\u0131\u015faca\u011f\u0131z.<\/p>\n<p>Solution Explorer penceresinde projemizin son durumunu a\u015fa\u011f\u0131daki gibi g\u00f6rmekteyiz.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/Solution.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1194\" title=\"Solution\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/Solution.png\" alt=\"\" width=\"273\" height=\"211\" \/><\/a><br \/>\nProjemizin varsay\u0131lan dil yap\u0131s\u0131 &#8220;lang.resx&#8221; dosyas\u0131nda bulunmaktayd\u0131.\u015eimdi projemize, &#8220;lang.tr.resx&#8221; dosyas\u0131n\u0131 ekleyelim.Bu dosyada, projemizin T\u00fcrk\u00e7e dil yap\u0131s\u0131n\u0131 olu\u015fturaca\u011f\u0131z.Bir \u00f6nceki yaz\u0131mda Resource dosyalar\u0131n\u0131n nas\u0131l eklendi\u011finden bahsetmi\u015ftik ger\u00e7i ama burada yeniden \u00f6zetliyorum.<br \/>\n\u201cAdd_GlobalResources\u201d klas\u00f6r\u00fcne sa\u011f t\u0131klay\u0131p, \u201cAdd\u201d sekmesinden \u201cNew Item\u201d se\u00e7ene\u011fini se\u00e7elim.\u00c7\u0131kan pencereden \u201cResources File\u201d dosyas\u0131na t\u0131klayal\u0131m.Resource dosyam\u0131z\u0131n ad\u0131na &#8220;lang.tr.resx&#8221; yazal\u0131m ve &#8220;Add&#8221; butonunu i\u015faretliyelim.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/resource1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1195\" title=\"resource\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/resource1.png\" alt=\"\" width=\"1138\" height=\"128\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/resource1.png 1138w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/resource1-300x33.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/resource1-1024x115.png 1024w\" sizes=\"auto, (max-width: 1138px) 100vw, 1138px\" \/><\/a><br \/>\nResource dosyam\u0131zda &#8220;Name&#8221; alan\u0131na girdi\u011fimiz anahtar de\u011ferler, projedeki di\u011fer Resourceler ile ayn\u0131 olmas\u0131na dikkat edelim.Sonu\u00e7ta, se\u00e7ilen dil yap\u0131s\u0131na g\u00f6re, bu de\u011ferlere e\u015fde\u011fer olan terimler ekranda g\u00f6z\u00fckecektir.<\/p>\n<p>An\u0131msarsan\u0131z, &#8220;Localization&#8221; ismindeki attribute s\u0131n\u0131f\u0131m\u0131z i\u00e7inde bulunan &#8220;OnActionExecuting&#8221; metodunda, &#8220;<span style=\"font-size: x-small;\">filterContext.RouteData.Values[&#8220;lang&#8221;]<\/span>&#8221; koduyla adres \u00e7ubu\u011fundaki &#8220;lang&#8221; de\u011fi\u015fkeninin ta\u015f\u0131d\u0131\u011f\u0131 de\u011feri al\u0131yordu.Bu &#8220;lang&#8221; de\u011fi\u015fkenine bir de\u011fer g\u00f6ndermedi\u011fimiz zaman, &#8220;ResourceExtensions&#8221; isimdeki s\u0131n\u0131f\u0131m\u0131z i\u00e7inde bulunan &#8220;Language&#8221; metodumuz, uygulamam\u0131zda direkt &#8220;lang&#8221; ismindeki Resource dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131yordu.E\u011fer bu &#8220;lang&#8221; de\u011fi\u015fkenine &#8220;.tr&#8221; gibi bir de\u011fer g\u00f6nderirsek, &#8220;lang.tr&#8221; ismindeki Resource dosyas\u0131 \u00e7al\u0131\u015ft\u0131r\u0131lacakt\u0131r ve uygulamam\u0131z\u0131n dile &#8220;.tr&#8221; olacakt\u0131r.<\/p>\n<p>Ee haliyle biz uygulamam\u0131z\u0131n URL Routing sistemine, &#8220;lang&#8221; de\u011ferini tutan bir kal\u0131p olu\u015fturmal\u0131y\u0131z.<\/p>\n<p>Projemizin Global.asax dosyas\u0131na a\u015fa\u011f\u0131daki gibi bir metod olu\u015fturuyorum.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            routes.MapRoute(&quot;CokluDil&quot;,\r\n                &quot;{lang}\/{controller}\/{action}\/{id}&quot;,\r\n                new { controller = &quot;Home&quot;, action = &quot;Index&quot;, id = UrlParameter.Optional }\r\n                );\r\n<\/pre>\n<p>Bu i\u015flemi yapt\u0131ktan sonra projemizi ba\u015flat\u0131yoruz.&#8221;Home(Controller)&#8221; ismindeki Controller s\u0131n\u0131f\u0131m\u0131z\u0131n &#8220;Index&#8221; metodu \u00e7al\u0131\u015ft\u0131r\u0131l\u0131yor.(<span style=\"font-size: x-small;\">Bir \u00f6nceki yaz\u0131m\u0131zda bu Action metodu Localization attribute u ile i\u015faretlemi\u015f bulunmaktay\u0131z<\/span>)<\/p>\n<p>Taray\u0131c\u0131m\u0131z\u0131n adres \u00e7ubu\u011funa <strong><span style=\"font-size: x-small;\">&#8220;http:\/\/localhost:****\/tr\/Home&#8221;<\/span><\/strong> benzer bir URL yap\u0131s\u0131 girersek e\u011fer, uygulamam\u0131z\u0131n dil yap\u0131s\u0131n\u0131n T\u00fcrk\u00e7e oldu\u011funu g\u00f6receksiniz.<\/p>\n<p>Ayn\u0131 \u015fekilde, &#8220;lang.en.resx&#8221; dosyas\u0131 olu\u015fturup, anahtar de\u011ferler kar\u015f\u0131l\u0131\u011f\u0131 olarak \u0130ngilizce terimleri girelim ve ayn\u0131 i\u015flemleri yapal\u0131m.<\/p>\n<p><strong><span style=\"font-size: x-small;\">&#8220;http:\/\/localhost:****\/en\/Home&#8221;<\/span><\/strong> URL yap\u0131s\u0131n\u0131 giresek e\u011fer, uygulam\u0131m\u0131z\u0131n dili bu sefer \u0130ngilizce olacakt\u0131r.<\/p>\n<p>Bu yaz\u0131m\u0131nda sonuna gelmi\u015f bulunmaktay\u0131z.Biraz uzun ve karma\u015f\u0131k oldu\u011funun bende fark\u0131nday\u0131m ama elimden geldi\u011fi kadar anla\u015f\u0131l\u0131r bi\u00e7imde bu konuyu sizlere sunmaya \u00e7al\u0131\u015ft\u0131m.En az\u0131ndan uygulamam\u0131za \u00e7oklu dil yap\u0131s\u0131 olu\u015fturabilecek kadar bilgiler kazand\u0131k.Faydalanman\u0131z dile\u011fiyle..<\/p>\n<p>\u0130yi \u00e7al\u0131\u015fmalar..<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bir \u00f6nceki, Asp.NET MVC \u00c7oklu Dil Fonksiyonlar\u0131 \u2013 1 ba\u015fl\u0131kl\u0131 yaz\u0131mda Asp.NET MVC&#8217;de \u00e7oklu dil fonksiyonlar\u0131na giri\u015f yapm\u0131\u015ft\u0131k.Varsay\u0131lan dil yap\u0131s\u0131na uygun olarak projemizi \u00e7al\u0131\u015ft\u0131r\u0131p yaz\u0131m\u0131z\u0131 tamamlam\u0131\u015ft\u0131k.Bu yaz\u0131m\u0131zda ise, projemizde T\u00fcrk\u00e7e, \u0130ngilizce ve Frans\u0131zca dillerinin&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[320,315,316,317,319,318],"class_list":["post-1192","post","type-post","status-publish","format-standard","hentry","category-asp-net-mvc","tag-coklu-dil","tag-localization","tag-localizationwebformview","tag-localizationwebformviewengine","tag-resource","tag-resourceextensions"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=1192"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1192\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=1192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=1192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=1192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}