Blog jak widać już nie jest aktualizowany. I raczej nie będzie. Wisi sobie ot tak, ze względów historycznych :)

Sinatra i lokalizacja - sinatra-r18n

Krzysztof Rygielski | 2010-04-02 14:43 | Kategorie: Ruby, Sinatra

Lokalizowanie aplikacji webowych to dość popularne zjawisko. W Ruby on Rails od wersji chyba 2.0 lub ciut później możliwość internacjonalizacji została na stałe włączona do frameworku. Wcześniej było to osiągalne przy użyciu różnych zewnętrznych pluginów. Sinatra również dosponuje możliwością lokalizowania aplikacji.

Jest nam potrzebny gem sinatra-r18n

$ gem install sinatra-r18n

Następnie w katalogu naszej aplikacji tworzymy katalog i18n. Tam umieszczamy pliki językowe np. w formacie YAML. Przykładowa treść pliku en.yml może wyglądać następująco:

hello: "Hello world!"

Analogicznie np. pl.yml:

hello: "Witaj świecie!"

W głównym pliku aplikacji Sinatry dodajemy dołączenie gema sinatra-r18n:

require 'sinatra/r18n'

Następnie dodajemy kod metody get, która będzie przetwarzać określony widok w zależności od przekazanego locale, np:

get '/:locale' do
  erb :locale_test_view
end

W widoku views/locale_test_view.erb generujemy lokalizowaną treść następująco:

t.hello

Oczywiście to wywołanie otaczamy tagami czyli:

<%= t.hello %>

Wówczas po wejściu pod adres /en kod ten wygeneruje tekst "Hello world!" a pod /pl tekst "WItaj świecie!"

Możliwe jest wielowęzłowe rozbudowanie struktury plików YAML, np:

hello:
  normal: "Hello world!"
  pirate: "Argh.. Ahoy mate!"

Wówczas kod w widoku generujący ten tekst wygląda tak:

t.hello.normal # => "Hello world!"
t.hello.pirate # => "Argh.. Ahoy mate!"

Tak wygląda lokalizowanie Sinatry w dużym skrócie, oczywiście w przypadku nieskomplikowanej aplikacji. Jak widać, jest to bardzo proste :-)