lib/gettext/interpolation.ex

defmodule Gettext.Interpolation do
  @moduledoc """
  Behaviour to provide Gettext String Interpolation.
  """

  @type translation_type :: :translation | :plural_translation

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

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

  @doc """
  Defines the gettext message format
  https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html#index-msgstr
  """
  @callback message_format :: String.t()
end