Changeset View
Changeset View
Standalone View
Standalone View
larus/web/views/error_helpers.ex
defmodule Larus.ErrorHelpers do | defmodule Larus.ErrorHelpers do | ||||
@moduledoc """ | @moduledoc """ | ||||
Conveniences for translating and building error messages. | Conveniences for translating and building error messages. | ||||
""" | """ | ||||
use Phoenix.HTML | use Phoenix.HTML | ||||
@doc """ | @doc """ | ||||
Generates tag for inlined form input errors. | Generates tag for inlined form input errors. | ||||
""" | """ | ||||
def error_tag(form, field) do | def error_tag(form, field) do | ||||
if error = form.errors[field] do | error = form.errors[field] | ||||
if error do | |||||
content_tag :span, translate_error(error), class: "help-block" | content_tag :span, translate_error(error), class: "help-block" | ||||
end | end | ||||
end | end | ||||
@doc """ | @doc """ | ||||
Translates an error message using gettext. | Translates an error message using gettext. | ||||
""" | """ | ||||
def translate_error({msg, opts}) do | def translate_error({msg, opts}) do | ||||
# Because error messages were defined within Ecto, we must | # Because error messages were defined within Ecto, we must | ||||
# call the Gettext module passing our Gettext backend. We | # call the Gettext module passing our Gettext backend. We | ||||
# also use the "errors" domain as translations are placed | # also use the "errors" domain as translations are placed | ||||
# in the errors.po file. On your own code and templates, | # in the errors.po file. On your own code and templates, | ||||
# this could be written simply as: | # this could be written simply as: | ||||
# | # | ||||
# dngettext "errors", "1 file", "%{count} files", count | # dngettext "errors", "1 file", "%{count} files", count | ||||
# | # | ||||
Gettext.dngettext(Larus.Gettext, "errors", msg, msg, opts[:count], opts) | Gettext.dngettext(Larus.Gettext, "errors", msg, msg, opts[:count], opts) | ||||
end | end | ||||
def translate_error(msg) do | def translate_error(msg) do | ||||
Gettext.dgettext(Larus.Gettext, "errors", msg) | Gettext.dgettext(Larus.Gettext, "errors", msg) | ||||
end | end | ||||
end | end |