40 lines
1.6 KiB
Elixir
40 lines
1.6 KiB
Elixir
defmodule <%= inspect context.web_module %>.ChangesetJSON do
|
|
@doc """
|
|
Renders changeset errors.
|
|
"""<%= if core_components? do %>
|
|
def error(%{changeset: changeset}) do
|
|
# When encoded, the changeset returns its errors
|
|
# as a JSON object. So we just pass it forward.
|
|
%{errors: Ecto.Changeset.traverse_errors(changeset, &<%= inspect context.web_module %>.CoreComponents.translate_error/1)}
|
|
end<% else %>
|
|
def error(%{changeset: changeset}) do
|
|
# When encoded, the changeset returns its errors
|
|
# as a JSON object. So we just pass it forward.
|
|
%{errors: Ecto.Changeset.traverse_errors(changeset, &translate_error/1)}
|
|
end
|
|
<%= if gettext? do %>
|
|
defp translate_error({msg, opts}) do
|
|
# set by Ecto and indicates we should also apply plural rules.
|
|
if count = opts[:count] do
|
|
Gettext.dngettext(<%= inspect context.web_module %>.Gettext, "errors", msg, msg, count, opts)
|
|
else
|
|
Gettext.dgettext(<%= inspect context.web_module %>.Gettext, "errors", msg, opts)
|
|
end
|
|
end
|
|
<% else %>
|
|
defp translate_error({msg, opts}) do
|
|
# You can make use of gettext to translate error messages by
|
|
# uncommenting and adjusting the following code:
|
|
|
|
# if count = opts[:count] do
|
|
# Gettext.dngettext(<%= inspect context.web_module %>.Gettext, "errors", msg, msg, count, opts)
|
|
# else
|
|
# Gettext.dgettext(<%= inspect context.web_module %>.Gettext, "errors", msg, opts)
|
|
# end
|
|
|
|
Enum.reduce(opts, msg, fn {key, value}, acc ->
|
|
String.replace(acc, "%{#{key}}", fn _ -> to_string(value) end)
|
|
end)
|
|
end<% end %><% end %>
|
|
end
|