ben

OMÜ , Bilgisayar Mühendisliği, 13'

10 Ocak 2016 Pazar

i18n translate

  Railsde i18n gemi ile sabit yazılarımızı sayfanın dileine göre değiştirebiliriz. Örnek olarak movie modelimiz uzerinde dili değiştirip yazıların değişmesini sağlayalım

eklememiz gereken Gem:

gem 'rails-i18n', '~> 4.0.0'
$ bundle


config/application.rb

module Project
  class Application < Rails::Application
      config.i18n.default_locale = :tr
  end
end

controller/application_controller.rb

    before_action :set_locale

   def set_locale
    pl = params[:locale]
    I18n.locale = pl || I18n.locale
   end

config/en.yml oluşturalım

    en:
       welcome: "welcome"

config/tr.yml oluşturalım

    tr:
       welcome: "Hoşgeldiniz"

yml dosyalarında girintiler önemli, üst sınıflardan alt sınıflara gecmek gibi..


view/application_html.erb

Daha önceden eklediğimiz navbarın sağ üst köşesine dropdwn ile dil seçeneklerini ekleyelim:


<ul class="nav navbar-nav navbar-right">
          <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
              <%if I18n.locale==:en  %> <%= image_tag("en.png",size: "30x20")%>
              <%else%>
              <%= image_tag("tr.png",size: "30x20")%>
              <%end%>

               <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><%= link_to image_tag("en.png", alt: "English")+"  "+"English", locale: "en" %></li>
                <li><%= link_to image_tag("tr.png", alt: "Turkish")+"  "+"Türkçe", locale: "tr" %> </li>
           
               </ul>
          </li>

      </ul>

navbarımızda bu şekilde görünmeli



Projemizin assets/images altında iki ulkenin bayrağı belirtilen isimlerde olmalı, internetten indirip bu kalsör altına yerleştirin

index.html.erb sayfasına hoşgeldiniz yazdıralım

<h3> <%=t("welcome")%></h3>

eğer yml dosyamız

 tr:
    welcome:
       index: "hoşgeldiniz"   olsaydı( alt sınıflarında ) . ile devam ederdik

<h3> <%=t("welcome.index")%></h3>


İngilizceyi sectiğimizde:







Türkçeyi sectiğimizde



Diğer alanlarıda bu şekilde  tek tek yazmamız gerekiyor. Bu gem sabit sayfa yazılarını değiştiriyor. veri modelinden gelen verileri dile göre ayarlamak için Globalize yazısına bakın