keskiviikko 11. marraskuuta 2015

Applikaation kääntäminen eri kielille - i18n

Olen tehnyt applikaationi tekstit tähän asti suoraan suomeksi. Rails tukee applikaation lokalisointia eli koodissa käytetään tekstien "koodinimiä", joille löytyy erikieliset käännökset eri tiedostoista.

Törmäsin käännöksien tarpeellisuuteen, kun lisäsin applikaatioon käyttäjähallinnan devise-gemin avulla, ja se olikin englanninkielinen.

Deviseen oli olemassa käännökset, mutta pitkän ja turhauttavan taistelun jälkeen selvisi, ettei koodeissa ole käytetty näitä tekstien "koodinimiä", joten eiväthän ne käänny vaikka mitä tekisi.

Käännökseen tarvitaan seuraavat:

Gemfile
gem 'rails-i18n'

config\application.rb 
class Application < Rails::Application sisälle laitetaan

    I18n.config.enforce_available_locales = false
    config.i18n.default_locale = :fi
    I18n.locale = config.i18n.locale = config.i18n.default_locale


config\locales
yml-tiedostoja:
devise.en.yml
devise.fi.yml
en.yml
fi.yml

Koodissa käännettävä teksti laitetaan esim. näin:

<h2><%= t('devise.passwords.forgot_your_passwd') %></h2>

Silloin käännöstä haetaan locales-hakemiston tiedostoista hierarkiasta

devise:
  passwords:
     forgot_your_passwd: 'teksti joka siihen tuleekaan'