Search code examples
ruby-on-railsinternationalizationrails-i18n

I18n for model-specific Rails submit button


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)?


Solution

  • 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