Globalise3 с запасными вариантами, но без предварительного заполнения формы с резервным переводом - PullRequest
2 голосов
/ 29 октября 2011

С

config.i18n.fallbacks = { :fr => :en }

и

class Thing < ActiveRecord::Base
  translates :name
end

и

I18n.local = :en

и

Thing.create! :name => 'broken'

Есть ли в любом случае препятствие Globalize3 возвращать 'неработающий' для имени, когда локаль установлена ​​в: fr?

Мне нужны запасные варианты, но я не хочу, чтобы моя французская форма была заполнена английским переводом.

Я не хочу многоязычную форму. Я не хочу ставить перед каждым именем атрибута _en. Я просто хочу сказать globalize вернуть пустой перевод.

Я надеялся

thing(:fr)

или что-то подобное существовало бы.

Я пробовал все виды хакерских атак - пытался временно отключить резервные копии, пока форма заполнена и т. Д. Я мог написать форму сам (я использую Formtastic) или вложить перевод, но мне кажется, что я что-то упустил .

Простите, если я не смог передать, но это 5:30 утра.

У кого-нибудь есть указатели?


Обновление

Похоже, что Globalize3 автоматически создает перевод для текущей локали, если она не существует. Поскольку значения для каждого из них равны нулю, они отступают. Если я провожу их цикл и устанавливаю их все в пустую строку, прежде чем моя форма получит к ним доступ, я получу желаемый эффект.

Я использую унаследованные ресурсы, поэтому мой экземпляр модели называется ресурсом. Я помещаю это в помощник и запускаю его до заполнения формы:

if resource.respond_to?(:translations) && request[:action] == 'edit'
  resource.translated_attribute_names.each do |attribute_name|
    resource[attribute_name] = '' unless resource.translation[attribute_name].present?
  end
end

Такое ощущение, что я сражаюсь с драгоценным камнем или пропускаю трюк.

...