gettext v0.15.0 Gettext.Backend behaviour View Source
Behaviour that defines the macros that a Gettext backend has to implement.
Link to this section Summary
Callbacks
Same as dgettext(domain, msgid, %{})
Translates the given msgid
in the given domain
Marks the given translation for extraction and returns it unchanged
Same as dngettext(domain, msgid, msgid_plural, n, %{})
Translates the given plural translation (msgid
+ msgid_plural
) in the
given domain
Marks the given translation for extraction and returns
{msgid, msgid_plural}
Same as gettext(msgid, %{})
Same as dgettext("default", msgid, %{})
Stores an “extracted comment” for the next translation
Same as dgettext_noop("default", msgid)
Default handling for missing bindings
Same as ngettext(msgid, msgid_plural, n, %{})
Same as dngettext("default", msgid, msgid_plural, n, bindings)
Same as dngettext_noop("default", msgid, mgsid_plural)
Link to this section Callbacks
Same as dgettext(domain, msgid, %{})
.
See also Gettext.dgettext/4
.
Translates the given msgid
in the given domain
.
bindings
is a map of bindings to support interpolation.
See also Gettext.dgettext/4
.
Marks the given translation for extraction and returns it unchanged.
This macro can be used to mark a translation for extraction when mix
gettext.extract
is run. The return value is the given string, so that this
macro can be used seamlessly in place of the string to extract.
Examples
MyApp.Gettext.dgettext_noop("errors", "Error found!")
#=> "Error found!"
Same as dngettext(domain, msgid, msgid_plural, n, %{})
.
See also Gettext.dngettext/6
.
Translates the given plural translation (msgid
+ msgid_plural
) in the
given domain
.
n
is an integer used to determine how to pluralize the
translation. bindings
is a map of bindings to support interpolation.
See also Gettext.dngettext/6
.
Marks the given translation for extraction and returns
{msgid, msgid_plural}
.
This macro can be used to mark a translation for extraction when mix
gettext.extract
is run. The return value of this macro is {msgid,
msgid_plural}
.
Examples
my_fun = fn {msgid, msgid_plural} ->
# do something with msgid and msgid_plural
end
my_fun.(MyApp.Gettext.dngettext_noop("errors", "One error", "%{count} errors"))
Same as gettext(msgid, %{})
.
See also Gettext.gettext/3
.
Same as dgettext("default", msgid, %{})
.
See also Gettext.gettext/3
.
Stores an “extracted comment” for the next translation.
This macro can be used to add comments (Gettext refers to such
comments as extracted comments) to the next translation that will
be extracted. Extracted comments will be prefixed with #.
in POT
files.
Calling this function multiple times will accumulate the comments;
when another Gettext macro (such as gettext/2
) is called,
the comments will be extracted and attached to that translation, and
they will be flushed so as to start again.
This macro always returns :ok
.
Examples
MyApp.Gettext.gettext_comment("The next translation is awesome")
MyApp.Gettext.gettext_comment("Another comment for the next translation")
MyApp.Gettext.gettext("The awesome translation")
Same as dgettext_noop("default", msgid)
.
handle_missing_bindings(Gettext.MissingBindingsError.t(), binary()) :: binary() | no_return()
Default handling for missing bindings.
This function is called when there are missing bindings in a translation. It
takes a Gettext.MissingBindingsError
struct and the translation with the
wrong bindings left as is with the %{}
syntax.
For example, if something like this is called:
MyApp.Gettext.gettext("Hello %{name}, welcome to %{country}", name: "Jane", country: "Italy")
and our it/LC_MESSAGES/default.po
looks like this:
msgid "Hello %{name}, welcome to %{country}"
msgstr "Ciao %{name}, benvenuto in %{cowntry}" # (typo)
then Gettext will call:
MyApp.Gettext.handle_missing_bindings(exception, "Ciao Jane, benvenuto in %{cowntry}")
where exception
is a struct that looks like this:
%Gettext.MissingBindingsError{
backend: MyApp.Gettext,
domain: "default",
locale: "it",
msgid: "Hello %{name}, welcome to %{country}",
bindings: [:country],
}
The return value of the handle_missing_bindings/2
callback is used as the
translated string that the translation macros and functions return.
The default implementation for this function uses Logger.error/1
to warn
about the missing binding and returns the translated message with the
incomplete bindings.
This function can be overridden. For example, to raise when there are missing bindings:
def handle_missing_bindings(exception, _incomplete) do
raise exception
end
Same as ngettext(msgid, msgid_plural, n, %{})
.
See also Gettext.ngettext/5
.
Same as dngettext("default", msgid, msgid_plural, n, bindings)
.
See also Gettext.ngettext/5
.
Same as dngettext_noop("default", msgid, mgsid_plural)
.