Internationalization

Tapestry uses the standard Rails Internationalization (I18N) API.

Not every page has been converted yet to use the I18N API. Patches are welcome. Translations to new languages are also welcome!

Setting the default locale for an installation

In the config/config.yml file, make sure to add the locale lines to the default section (or the section for your environment). For example, to add Dutch and make it the default locale:

  available_locales: [:en, :de, :nl]
  default_locale: :nl

Viewing a page in a different locale

You can pass the 'locale' URL query parameter to force a specific locale. Please note that the locale must be listed in the available_locales configuration variable.

Adding/editing translations

The locale files live under

  config/locales/defaults
  config/locales/views

View-specific locales should be defined under views. Please follow the established naming pattern for files and directories.

Using a custom folder location for translations

Somewhat similar to how overridden views can be placed in a folder on your system of your choosing (Customization), you can do this for translations as well. The default is #{Rails.root}/site_specific/config/locales but otherwise it will be the directory you specified as in Customization or #{ENV['TAPESTRY_OVERRIDE_PATH']}/config/locales.

Using translations in a view

Where possible, we use Lazy loading (see section 4.1.4).

For example, in

  app/views/users/index.html.erb

we write

  <h2><%= t('.participant_profiles') %></h2>

which maps to a yml file

config/locales/views/users/en.yml

with this structure

en:
  users:
    index:
      participant_profiles: "Participant Profiles" 

We could also write the lookup explicitly, like so:

  <h2><%= t('users.index.participant_profiles') %></h2