View Source Cldr.Gettext.Interpolation (Cldr Messages v1.0.0)
As of Gettext 0.19, Gettext
supports user-defined interpolation modules.
This makes it easy to combine the power of ICU message formats with the
broad gettext ecosystem and the inbuilt support for gettext
in Phoenix.
The documentation for Gettext should be followed with considerations in mind:
- A Gettext backend module should use the
:interpolationoption defined referring to theex_cldr_messagesbackend you have defined. - The message format is in the ICU message format (instead of the Gettext format).
Defining a Gettext Interpolation Module
Any ex_cldr backend module that has a Cldr.Message provider configured can be used as an interpolation module. Here is an example:
# CLDR backend module
defmodule MyApp.Cldr do
use Cldr,
locales: ["en", "fr", "ja", "he", "th", "ar"],
default_locale: "en",
providers: [Cldr.Number, Cldr.DateTime, Cldr.Unit, Cldr.List, Cldr.Calendar, Cldr.Message],
gettext: MyApp.Gettext,
message_formats: %{
USD: [format: :long]
}
end
# Define an interpolation module for ICU messages
defmodule MyApp.Gettext.Interpolation do
use Cldr.Gettext.Interpolation, cldr_backend: MyApp.Cldr
end
# Define a gettext module with ICU message interpolation
defmodule MyApp.Gettext do
use Gettext, otp_app: :ex_cldr_messages, interpolation: MyApp.Gettext.Interpolation
end
Now you can proceed to use Gettext in the normal manner, most
typically with the gettext/3 macro.