Tłumaczenie aplikacji

Witajcie,

Napisalem prosty CMS, model podstrony, produktu, kategorii. Kazdy posiada atrybyty title oraz content.

Baza danych zostala wypelniona danymi poprzez panel administracyjny.

Klient sie obudzil ze potrzebuje aplikacje wielojezykowa, wiec za pomoca Globalize2 oraz http://github.com/tomash/easy_globalize2_accessors , oraz drobna modyfikacje formularzy w panelu administracyjnym, klient moze teraz korzystac z czterech jezykow.

Powyzsze modele dostaly dodatkowo atrybuty name_pl, name_de, name_en, name_ru

W zaleznosci od ustawionego locale, atrybut name odwoluje sie do powyzszych atrybutow.

Problem w tym ze nie wiem jak teraz sie moge odwolac do prawdziwego atrybuty name (tego w tabeli konkretnego modelu, ktory juz zostal zapisany w bazie wczesniej), zeby go latwo przeniesc do name_pl ?

Jak to najsprytniej rozwiazac ?

Pozdrowienia

Zgaduję ale:

model.attributes[:name]

może zadziała?

Tak jak Hubert napisał :slight_smile:
Inna sprawa że kiedy masz już translacje w Globalize2, to powinien mieć on wartość nil. No chyba że migrujesz.

ha, czyli strzał w 10-kę :wink:

No wlasnie migruje, z wersji jednojezykowej, gdzie mam w modelu uzupelnione name i description (tabela products) do wersji wielojezykowej, gdzie mam osobna tabele na tlumaczenia.
Moje pytanie brzmialo jak przeniesc dane z kolumny name tabeli products do tabeli z tlumaczeniami w ten sposob, aby po ustawieniu locales na :pl, po odpytaniu Product.first.name otrzymac to co bylo wprowadzone…

locale ustawiam na :pl,

Product.first.attributes
=> {“name”=>“super produkt”, “updated_at”=>Thu Apr 22 11:01:09 UTC 2010, “description”=>“super opis”, “created_at”=>Sat Apr 10 15:49:56 UTC 2010"}

Product.first.attributes[:name]
=> nil

Dzieki za wsparcie, ale jednak ten sposob nie dziala, chyba ze cos zle zrozumialem

Pozdrowienia

Spróbuj Product.first.name = Product.first['name']
U mnie działa :wink:

@GhandaL dziekuje, dziala

@Tomash Pasuje dodac jakas metode do pluginu, ktora zczesze tlumaczone atrybuty i uzupelni defaultowy jezyk z tabeli modelu, cos w stylu:

def migrate_translation(:attributes, :default_locale) self.name = self.attributes['name'] # w uproszczeniu self.save end
Kwestia czy lepiej zrobic to dla konkretnego obiektu, czy dla calej klasy.
Lepszym podejsciem wydaje mi sie dla konkretnego obiektu, najwyzej user sobie zapusci w petli, nie koniecznie musi chciec migrowac caly set obiektow.

Pozdrowienia