#reform

TILSeptember 13, 2019by Dmitry Voronov

How to use Rails translations for Reform attributes

If you use Reform for the form objects and want the translations in your Rails application to work as with ActiveRecord objects, then you can add ActiveModel::Translation module to the form class or base class and specify the method with the key to translations.

 class BaseForm < Reform::Form extend ActiveModel::Translation def self.i18n_scope :forms end end 
 class UserForm < BaseForm feature Coercion property :login property :change_password, virtual: true, type: Types::Form::Bool property :password property :password_confirmation validation do required(:login).filled end validation if: ->(_) { change_password } do required(:password).confirmation end end 

Set translations for form fields.

You can move them to a new file config/locales/forms.yml.

 en: forms: attributes: user_form: login: Enter login change_password: Change password? password: Enter password password_confirmation: Confirm password 

Now, translations will be used by the simple form or you can call them manually by UserForm.human_attribute_name.