View Source Gettext.Interpolation behaviour (gettext v1.0.0)

Behaviour to provide Gettext string interpolation.

By default, Gettext uses Gettext.Interpolation.Default as the interpolation module.

Summary

Callbacks

Called to perform interpolation at compile time.

Defines the Gettext message format to be used when extracting.

Called to perform interpolation at runtime.

Types

bindings()

(since 0.22.0)
@type bindings() :: %{optional(atom()) => term()}

translation_type()

(since 0.19.0)
@type translation_type() :: :translation | :plural_translation

Callbacks

compile_interpolate(translation_type, message, bindings)

(since 0.19.0)
@macrocallback compile_interpolate(translation_type(), message :: String.t(), bindings()) ::
  Macro.t()

Called to perform interpolation at compile time.

message_format()

(since 0.19.0)
@callback message_format() :: String.t()

Defines the Gettext message format to be used when extracting.

The default interpolation module that ships with Gettext uses "elixir-format".

See the GNU Gettext documentation.

runtime_interpolate(message, bindings)

(since 0.19.0)
@callback runtime_interpolate(message :: String.t(), bindings()) ::
  {:ok, String.t()}
  | {:missing_bindings, partially_interpolated_message :: String.t(),
     missing_bindings :: [atom()]}

Called to perform interpolation at runtime.

If successful, should return {:ok, interpolated_string}. If there are missing bindings, should return {:missing_bindings, partially_interpolated, missing} where partially_interpolated is a string with the available bindings interpolated.