Est-il possible de sauvegarder toutes les traductions en regardant I18n.available_locales (ou peut-être un autre fichier de configuration Globalize) lorsque l'enregistrement principal est créé? J'utilise Globalize en combinaison avec Active Admin et j'ai créé une page personnalisée uniquement pour les traductions mais j'aimerais que la personne qui doit traduire sache quels sont les champs à traduire.Globalize rails: Enregistrer toutes les traductions en vérifiant I18n.available_locales
C'est ce que je fais maintenant (modèle de base) même si je n'en suis pas fier. Il semble être tordu pour aucune raison que j'ai essayé une solution plus simple qui semblait d'abord être valide, mais ils se sont avérés ne pas fonctionner.
after_save :add_empty_translations
def add_empty_translations
# if the class is translatable
if (self.class.translates?)
# get available locales
locales = I18n.available_locales.map do |l| l.to_s end
# get foreign key for translated table
foreign_key = "#{self.class.to_s.underscore}_id"
# get translated columns
translated_columns = self.class::Translation.column_names.select do |col|
!['id', 'created_at', 'updated_at', 'locale', "#{self.class.to_s.underscore}_id"].include? col
end
# save current locale
current_locale = I18n.locale
# foreach available locale check if column was difined by user
locales.each do |l|
I18n.locale = l
add_translation = true
translated_columns.each do |col|
add_translation = add_translation && self[col].nil?
end
if (add_translation)
payload = {}
payload[foreign_key] = self.id
payload['locale'] = l
self.class::Translation.create(payload)
end
end
#restore locale
I18n.locale = current_locale
end
end
Y a-t-il un moyen de le faire avec globaliser?