I18n for model-specific Rails submit button

10,228

Solution 1

Those labels can be customized using I18n under the +helpers.submit+ key 
and using %{model} for translation interpolation:

  en:
    helpers:
      submit:
        create: "Create a %{model}"
        update: "Confirm changes to %{model}"

It also searches for a key specific to the given object:

  en:
    helpers:
      submit:
        post:
          create: "Add %{model}"

Source @ actionview/lib/action_view/helpers/form_helper.rb

Solution 2

If you use the i18n-debug gem, the rails server will print translations look-up attempts to the console, like:

[i18n-debug] en.helpers.submit.post.create => nil
Share:
10,228
Matt Huggins
Author by

Matt Huggins

Currently developing with Ruby (Rails) and Javascript (React/Redux). Variety of past & present experience includes mobile development (React Native, Android, Cordova), SQL, Java, PHP, C/C++, etc.

Updated on June 05, 2022

Comments

  • Matt Huggins
    Matt Huggins about 2 years

    I've found that Rails allows for generic i18n of submit buttons via the following in config/locales/en.yml:

    en:
      helpers:
        submit:
          create: "Create %{model}"
          submit: "Save %{model}"
          update: "Update %{model}"
    

    However, I'm looking to update the create value only for one specific model. I'd like the text to read as "Upload %{model}" or just "Upload". How can I make this change for just one model (e.g.: a Photo model)?

  • DannyB
    DannyB almost 9 years
    The rails-18n-debug gem this answer links to is nice, but deprecated and the author now recommends to use the alternative gem at github.com/fphilipe/i18n-debug