View Source Cldr.Gettext.Interpolation (Cldr Messages v1.0.2)
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
:interpolation
option defined referring to theex_cldr_messages
backend 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.