С
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
Такое ощущение, что я борюсь с драгоценным камнем или пропускаю трюк.