I18n позволит вам сделать это, манипулируя атрибутом I18n.locale (т.е. методами get / set):
>> helper.t('hello_world')
=> "Hello you"
>> I18n.locale = :de
=> :de
>> helper.t('hello_world')
=> "Guten Tag"
>> I18n.locale = :en
=> :en
>> helper.t('hello_world')
=> "Hello you"
Я не знаю, будет ли это делать то, что вы хотите, хотя. Вы имеете в виду, что если кто-то редактирует объект / запись, когда локаль: de, а другой редактирует тот же объект / запись, а локаль: en, тогда эти два значения не перезаписывают друг друга, а вместо этого сохраняются в разных полях?