Sinatra i lokalizacja - sinatra-r18n
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 :-)