Fork me on GitHub



The i18n function is used to retrieve messages from a locale-specific ResourceBundle. Every PebbleTemplate is assigned a default locale from the PebbleEngine. At the point of evaluation, this locale can be changed with an argument to the evaluate(...) method of the individual template.

The i18n function wraps around ResourceBundle.getBundle(name, locale).getObject(key). The first argument to the i18n function is the name of the bundle and the second argument is the key within the bundle.

{{ i18n("messages","greeting") }}

The above example assumes you have on your classpath and that that file contains a key by the name of greeting. If the locale of that template was es_US for example, it would look for a file instead.

Going a little further, you can use variables within your message and pass a list of params to this function which will replace your variables using MessageFormat:

{# greeting.someone=Hello, {0} #}
{{ i18n("messages","greeting", "Jacob") }}

{# output: Hello, Jacob #}


  • bundle
  • key
  • params