MailingList


 « Return to Thread: Globalize and ActionMailer?

Re: Translates foreign keys

by ginger72 :: Rate this Message:

Reply to Author | View in Thread

I see, different status per language. In this case, one way you can  
do this is

class Page < ActiveRecord::Base
        self.keep_translations_in_model = true
        translates :status
....
end

Make sure that you put the same label in your status field no matter  
which locale/lanaguage, say

Locale.switch_locale('en') do
        page.status = 'active'   # or 'inactive' in your base language, here  
English
end

Locale.switch_locale('de') do
        page.status = 'active'  # or 'inactive'
end

and finally when you need to display the status use the .t directive

        page.status.t

Hope this helps?

Greetings,
Juergen

On Jun 6, 2008, at 9:51 AM, Mattias Bodlund wrote:

> Yes - so far so good - but the page still have the same status.
>
> Lets say we have two Statuses: active and inactive. Then we have a  
> Page that should be active in english but inactive in german.
>
> mattias
>
> On 06/06/2008, at 14.44, Jürgen Feßlmeier wrote:
>
>>
>> Hi Matthias,
>>
>> Sure, but i would approach it differently. Say your Status model  
>> looks like this:
>>
>> class Status < ActiveRecord::Base
>> translates :name
>> end
>>
>>> class Page < ActiveRecord::Base
>>> # translates :status_id
>>>   belongs_to :status
>>
>> # add method to display the page status
>> def status_display
>> self.status ? self.status.name : '-'
>> end
>>
>>
>>> end
>>>
>>
>>
>> Mind you this is quite slow as every time you call status_display  
>> a query is sent of the DB, worse case if you are not using  
>> Globalize in table translations. In my view what may be better is  
>> to have a status field string field in pages model and have it  
>> translated using .t, like:
>>
>> page.status.to_s.t
>>
>> Anyway, hope this helps?
>>
>> Greetings,
>> Juergen
>>
>>
>> On Jun 6, 2008, at 9:27 AM, Mattias Bodlund wrote:
>>
>>> Can you also translate foreign keys/relations with Globalize.  
>>> Lets say we have a Page with different statuses in different  
>>> languages.
>>>
>>> Lets say we have Page that belongs_to Status.
>>>
>>> class Page < ActiveRecord::Base
>>> translates :status_id
>>>   belongs_to :status
>>> end
>>>
>>> I get an error trying this:
>>> undefined method `direction=' for 2:Fixnum
>>>
>>> mattias
>>>
>>>
>>
>>
>


 « Return to Thread: Globalize and ActionMailer?