Przygladnalem sie Globalize i musze powiedziec ok - dziala, ale … bardziej przemowilo do mnie lekkie rozwiazanie opisane tutaj: Ruby on Rails i18n revisited - zwlaszcza, ze instalacja jest banalna: script/plugin install localization
A teraz pytanie: Gdzie trzymac informacje o jezyku (lub ogolniej jakakolwiek informacje z requestu na request)?
- Cookies
Bezproblemowo.
class ApplicationController < ActionController::Base
before_filter :set_locale
def set_locale
Localization.lang = cookies[:_locale]
end
end
Dodatkowo plus, ze jezeli klient powroci na strone a cookie nie wygasnie to dostanie poprzednie ustawienia. No i wszystkie sprawy typu remember me w ten sposob dzialaja. Minus oczywiscie jak ktos ma wylaczone cookies. No i co zrobic gdy aplikacjia ma tez obslugiwac urzadzenia mobilne?
- Session
Bezproblemowo, ale po co session (jesli chodzi o jave to zostalem nauczony, ze stworzenie sesji jest kosztowne i nalezy dopoki sie da bez niej obywac). Z drugiej strony skoro juz istnieje … ale sesja jest w Rails trzymana w pliku, w bazie albo na serwerze DRb i czy dostawanie sie tam co request po stringa ma sens? Jezeli sesja juz istnieje i cos w niej juz trzymam to czy jest zawsze ladowana w calosci czy cos w rodzaju lazy czyli na zadanie?
Tak przy okazji to znalazlem porownanie Session Container Performance in Ruby on Rails i zastanawia mnie wydajnosc PStore gdy systemem plikow jest reiserfs - czy ktos zna odpowiedz?
-
Jako parametr i pomieszac z routes np. /pl/controller/action/
Troche przekombinowane. Czy jest sens skoro sesje w Rails i tak sa cookie-based?
Tutaj dochodzi jeszcze sprawa ajaxa: link_to_remote i pobieranie lokalizowanych danych. Czy nie bedzie z tym problemu? -
Pole hidden?
w Tapestry mozna poprzez DataSqueezer serializowac prostsze obiekty do query parameter lub pola hidden i unikac HttpSession w ten sposob. Nigdy tego nie stosowalem ale moge sobie wyobrazic sytuacje gdy ma to sens.
Ktore podejscie jest optymalne pod wzgledem wydajnosci i/lub uniwersalnosci? Ja sklaniam sie do Cookies.
Bylbym wdzieczny za opinie bardziej oswieconych forumowiczow