gettext containers

This commit is contained in:
shibao 2022-02-09 00:49:47 -05:00
parent c4217e8f45
commit 91b9e8a730
10 changed files with 191 additions and 39 deletions

View File

@ -23,17 +23,20 @@ defmodule CanneryWeb.ContainerLive.ContainerCard do
<%= if @container.desc do %> <%= if @container.desc do %>
<span class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
Description: <%= @container.desc %> <%= gettext("Description:") %>
<%= @container.desc %>
</span> </span>
<% end %> <% end %>
<span class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
Type: <%= @container.type %> <%= gettext("Type:") %>
<%= @container.type %>
</span> </span>
<%= if @container.location do %> <%= if @container.location do %>
<span class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
Location: <%= @container.location %> <%= gettext("Location:") %>
<%= @container.location %>
</span> </span>
<% end %> <% end %>
</div> </div>

View File

@ -16,7 +16,6 @@ defmodule CanneryWeb.ContainerLive.FormComponent do
@impl true @impl true
def handle_event("validate", %{"container" => container_params}, socket) do def handle_event("validate", %{"container" => container_params}, socket) do
container_params = container_params |> Map.put("user_id", socket.assigns.current_user.id)
changeset = socket.assigns.container |> Containers.change_container(container_params) changeset = socket.assigns.container |> Containers.change_container(container_params)
{:noreply, socket |> assign(:changeset, changeset)} {:noreply, socket |> assign(:changeset, changeset)}
end end
@ -47,39 +46,39 @@ defmodule CanneryWeb.ContainerLive.FormComponent do
</div> </div>
<% end %> <% end %>
<%= label(f, :name, class: "title text-lg text-primary-500") %> <%= label(f, :name, gettext("Name"), class: "title text-lg text-primary-500") %>
<%= text_input(f, :name, <%= text_input(f, :name,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
placeholder: "My cool ammo can" placeholder: gettext("My cool ammo can")
) %> ) %>
<%= error_tag(f, :name, "col-span-3 text-center") %> <%= error_tag(f, :name, "col-span-3 text-center") %>
<%= label(f, :desc, class: "title text-lg text-primary-500") %> <%= label(f, :desc, gettext("Description"), class: "title text-lg text-primary-500") %>
<%= textarea(f, :desc, <%= textarea(f, :desc,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
phx_hook: "MaintainAttrs", phx_hook: "MaintainAttrs",
placeholder: "Metal ammo can with the anime girl sticker" placeholder: gettext("Metal ammo can with the anime girl sticker")
) %> ) %>
<%= error_tag(f, :desc, "col-span-3 text-center") %> <%= error_tag(f, :desc, "col-span-3 text-center") %>
<%= label(f, :type, class: "title text-lg text-primary-500") %> <%= label(f, :type, gettext("Type"), class: "title text-lg text-primary-500") %>
<%= text_input(f, :type, <%= text_input(f, :type,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
placeholder: "Magazine, Clip, Ammo Box, etc" placeholder: gettext("Magazine, Clip, Ammo Box, etc")
) %> ) %>
<%= error_tag(f, :type, "col-span-3 text-center") %> <%= error_tag(f, :type, "col-span-3 text-center") %>
<%= label(f, :location, class: "title text-lg text-primary-500") %> <%= label(f, :location, gettext("Location"), class: "title text-lg text-primary-500") %>
<%= textarea(f, :location, <%= textarea(f, :location,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
phx_hook: "MaintainAttrs", phx_hook: "MaintainAttrs",
placeholder: "On the bookshelf" placeholder: gettext("On the bookshelf")
) %> ) %>
<%= error_tag(f, :location, "col-span-3 text-center") %> <%= error_tag(f, :location, "col-span-3 text-center") %>
<%= submit("Save", <%= submit(dgettext("actions", "Save"),
class: "mx-auto btn btn-primary col-span-3", class: "mx-auto btn btn-primary col-span-3",
phx_disable_with: "Saving..." phx_disable_with: dgettext("prompts", "Saving...")
) %> ) %>
</.form> </.form>
</div> </div>
@ -96,7 +95,7 @@ defmodule CanneryWeb.ContainerLive.FormComponent do
{:ok, _container} -> {:ok, _container} ->
{:noreply, {:noreply,
socket socket
|> put_flash(:info, "Container updated successfully") |> put_flash(:info, dgettext("prompts", "Container updated successfully"))
|> push_redirect(to: socket.assigns.return_to)} |> push_redirect(to: socket.assigns.return_to)}
{:error, %Changeset{} = changeset} -> {:error, %Changeset{} = changeset} ->
@ -111,7 +110,7 @@ defmodule CanneryWeb.ContainerLive.FormComponent do
{:ok, _container} -> {:ok, _container} ->
{:noreply, {:noreply,
socket socket
|> put_flash(:info, "Container created successfully") |> put_flash(:info, dgettext("prompts", "Container created successfully"))
|> push_redirect(to: socket.assigns.return_to)} |> push_redirect(to: socket.assigns.return_to)}
{:error, %Changeset{} = changeset} -> {:error, %Changeset{} = changeset} ->

View File

@ -19,19 +19,19 @@ defmodule CanneryWeb.ContainerLive.Index do
defp apply_action(socket, :edit, %{"id" => id}) do defp apply_action(socket, :edit, %{"id" => id}) do
socket socket
|> assign(:page_title, "Edit Container") |> assign(:page_title, gettext("Edit Container"))
|> assign(:container, Containers.get_container!(id)) |> assign(:container, Containers.get_container!(id))
end end
defp apply_action(socket, :new, _params) do defp apply_action(socket, :new, _params) do
socket socket
|> assign(:page_title, "New Container") |> assign(:page_title, gettext("New Container"))
|> assign(:container, %Container{}) |> assign(:container, %Container{})
end end
defp apply_action(socket, :index, _params) do defp apply_action(socket, :index, _params) do
socket socket
|> assign(:page_title, "Listing Containers") |> assign(:page_title, gettext("Listing Containers"))
|> assign(:container, nil) |> assign(:container, nil)
end end
@ -42,7 +42,7 @@ defmodule CanneryWeb.ContainerLive.Index do
|> Enum.find(fn %{id: container_id} -> id == container_id end) |> Enum.find(fn %{id: container_id} -> id == container_id end)
|> case do |> case do
nil -> nil ->
socket |> put_flash(:error, "Could not find that container") socket |> put_flash(:error, dgettext("errors", "Could not find that container"))
container -> container ->
container container
@ -50,12 +50,22 @@ defmodule CanneryWeb.ContainerLive.Index do
|> case do |> case do
{:ok, container} -> {:ok, container} ->
socket socket
|> put_flash(:info, "#{container.name} has been deleted") |> put_flash(
:info,
dgettext("prompts", "%{name} has been deleted", name: container.name)
)
|> display_containers() |> display_containers()
{:error, %{action: :delete, errors: [ammo_groups: _error], valid?: false} = changeset} -> {:error, %{action: :delete, errors: [ammo_groups: _error], valid?: false} = changeset} ->
ammo_groups_error = changeset |> changeset_errors(:ammo_groups) |> Enum.join(", ") ammo_groups_error = changeset |> changeset_errors(:ammo_groups) |> Enum.join(", ")
socket |> put_flash(:error, "Could not delete container: #{ammo_groups_error}")
socket
|> put_flash(
:error,
dgettext("errors", "Could not delete container: %{error}",
error: ammo_groups_error
)
)
{:error, changeset} -> {:error, changeset} ->
socket |> put_flash(:error, changeset |> changeset_errors()) socket |> put_flash(:error, changeset |> changeset_errors())

View File

@ -1,22 +1,22 @@
<div class="flex flex-col space-y-8 justify-center items-center"> <div class="flex flex-col space-y-8 justify-center items-center">
<h1 class="title text-2xl title-primary-500"> <h1 class="title text-2xl title-primary-500">
Listing Containers <%= gettext("Listing Containers") %>
</h1> </h1>
<%= if @containers |> Enum.empty?() do %> <%= if @containers |> Enum.empty?() do %>
<h2 class="title text-xl text-primary-500"> <h2 class="title text-xl text-primary-500">
No containers 😔 <%= gettext("No containers") %> 😔
</h2> </h2>
<%= live_patch("Add your first container!", <%= live_patch(dgettext("actions", "Add your first container!"),
to: Routes.container_index_path(@socket, :new), to: Routes.container_index_path(@socket, :new),
class: "btn btn-primary" class: "btn btn-primary"
) %> ) %>
<% else %> <% else %>
<%= live_patch to: Routes.container_index_path(@socket, :new), <%= live_patch(dgettext("actions", "New Container"),
class: "btn btn-primary" do %> to: Routes.container_index_path(@socket, :new),
New Container class: "btn btn-primary"
<% end %> ) %>
<% end %> <% end %>
<div class="flex flex-row flex-wrap"> <div class="flex flex-row flex-wrap">
@ -31,7 +31,10 @@
class: "text-primary-500 link", class: "text-primary-500 link",
phx_click: "delete", phx_click: "delete",
phx_value_id: container.id, phx_value_id: container.id,
data: [confirm: "Are you sure you want to delete #{container.name}?"] do %> data: [
confirm:
dgettext("prompts", "Are you sure you want to delete %{name}?", name: container.name)
] do %>
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
<% end %> <% end %>
</.container_card> </.container_card>

View File

@ -32,12 +32,20 @@ defmodule CanneryWeb.ContainerLive.Show do
|> case do |> case do
{:ok, container} -> {:ok, container} ->
socket socket
|> put_flash(:info, "#{container.name} has been deleted") |> put_flash(
:info,
dgettext("prompts", "%{name} has been deleted", name: container.name)
)
|> push_redirect(to: Routes.container_index_path(socket, :index)) |> push_redirect(to: Routes.container_index_path(socket, :index))
{:error, %{action: :delete, errors: [ammo_groups: _error], valid?: false} = changeset} -> {:error, %{action: :delete, errors: [ammo_groups: _error], valid?: false} = changeset} ->
ammo_groups_error = changeset |> changeset_errors(:ammo_groups) |> Enum.join(", ") ammo_groups_error = changeset |> changeset_errors(:ammo_groups) |> Enum.join(", ")
socket |> put_flash(:error, "Could not delete container: #{ammo_groups_error}")
socket
|> put_flash(
:error,
dgettext("errors", "Could not delete container: %{error}", error: ammo_groups_error)
)
{:error, changeset} -> {:error, changeset} ->
socket |> put_flash(:error, changeset |> changeset_errors()) socket |> put_flash(:error, changeset |> changeset_errors())
@ -46,6 +54,6 @@ defmodule CanneryWeb.ContainerLive.Show do
{:noreply, socket} {:noreply, socket}
end end
defp page_title(:show), do: "Show Container" defp page_title(:show), do: gettext("Show Container")
defp page_title(:edit), do: "Edit Container" defp page_title(:edit), do: gettext("Edit Container")
end end

View File

@ -5,17 +5,20 @@
<%= if @container.desc do %> <%= if @container.desc do %>
<span class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
Description: <%= @container.desc %> <%= gettext("Description:") %>
<%= @container.desc %>
</span> </span>
<% end %> <% end %>
<span class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
Type: <%= @container.type %> <%= gettext("Type:") %>
<%= @container.type %>
</span> </span>
<%= if @container.location do %> <%= if @container.location do %>
<span class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
Location: <%= @container.location %> <%= gettext("Location:") %>
<%= @container.location %>
</span> </span>
<% end %> <% end %>
@ -28,7 +31,10 @@
<%= link to: "#", <%= link to: "#",
class: "text-primary-500 link", class: "text-primary-500 link",
phx_click: "delete", phx_click: "delete",
data: [confirm: "Are you sure you want to delete #{@container.name}?"] do %> data: [
confirm:
dgettext("prompts", "Are you sure you want to delete %{name}?", name: @container.name)
] do %>
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
<% end %> <% end %>
</div> </div>
@ -37,7 +43,7 @@
<p> <p>
<%= if @container.ammo_groups |> Enum.empty?() do %> <%= if @container.ammo_groups |> Enum.empty?() do %>
No ammo groups in this container <%= gettext("No ammo groups in this container") %>
<% else %> <% else %>
<%= for ammo_group <- @container.ammo_groups do %> <%= for ammo_group <- @container.ammo_groups do %>
<.ammo_group_card ammo_group={ammo_group} /> <.ammo_group_card ammo_group={ammo_group} />

View File

@ -93,6 +93,7 @@ msgstr ""
#, elixir-format, ex-autogen #, elixir-format, ex-autogen
#: lib/cannery_web/live/ammo_group_live/form_component.ex:90 #: lib/cannery_web/live/ammo_group_live/form_component.ex:90
#: lib/cannery_web/live/ammo_type_live/form_component.ex:155 #: lib/cannery_web/live/ammo_type_live/form_component.ex:155
#: lib/cannery_web/live/container_live/form_component.ex:79
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -110,3 +111,13 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:16 #: lib/cannery_web/live/ammo_type_live/index.html.heex:16
msgid "New Ammo type" msgid "New Ammo type"
msgstr "" msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/index.html.heex:11
msgid "Add your first container!"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/index.html.heex:16
msgid "New Container"
msgstr ""

View File

@ -251,6 +251,7 @@ msgstr ""
#, elixir-format, ex-autogen #, elixir-format, ex-autogen
#: lib/cannery_web/live/ammo_type_live/form_component.ex:57 #: lib/cannery_web/live/ammo_type_live/form_component.ex:57
#: lib/cannery_web/live/container_live/form_component.ex:56
msgid "Description" msgid "Description"
msgstr "" msgstr ""
@ -302,6 +303,7 @@ msgstr ""
#, elixir-format, ex-autogen #, elixir-format, ex-autogen
#: lib/cannery_web/live/ammo_type_live/form_component.ex:53 #: lib/cannery_web/live/ammo_type_live/form_component.ex:53
#: lib/cannery_web/live/ammo_type_live/index.html.heex:26 #: lib/cannery_web/live/ammo_type_live/index.html.heex:26
#: lib/cannery_web/live/container_live/form_component.ex:49
msgid "Name" msgid "Name"
msgstr "" msgstr ""
@ -365,3 +367,83 @@ msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:36 #: lib/cannery_web/live/ammo_type_live/index.html.heex:36
msgid "Tracer" msgid "Tracer"
msgstr "" msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/container_card.ex:26
#: lib/cannery_web/live/container_live/show.html.heex:8
msgid "Description:"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/index.ex:22
#: lib/cannery_web/live/container_live/show.ex:58
msgid "Edit Container"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/index.ex:34
#: lib/cannery_web/live/container_live/index.html.heex:3
msgid "Listing Containers"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/form_component.ex:71
msgid "Location"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/container_card.ex:38
#: lib/cannery_web/live/container_live/show.html.heex:20
msgid "Location:"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/form_component.ex:67
msgid "Magazine, Clip, Ammo Box, etc"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/form_component.ex:60
msgid "Metal ammo can with the anime girl sticker"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/form_component.ex:52
msgid "My cool ammo can"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/index.ex:28
msgid "New Container"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/show.html.heex:46
msgid "No ammo groups in this container"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/index.html.heex:8
msgid "No containers"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/form_component.ex:75
msgid "On the bookshelf"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/show.ex:57
msgid "Show Container"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/form_component.ex:64
msgid "Type"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/container_card.ex:32
#: lib/cannery_web/live/container_live/show.html.heex:14
msgid "Type:"
msgstr ""

View File

@ -199,3 +199,14 @@ msgstr ""
#: lib/cannery_web/controllers/user_auth.ex:145 #: lib/cannery_web/controllers/user_auth.ex:145
msgid "You must log in to access this page." msgid "You must log in to access this page."
msgstr "" msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/index.ex:65
#: lib/cannery_web/live/container_live/show.ex:47
msgid "Could not delete container: %{error}"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/index.ex:45
msgid "Could not find that container"
msgstr ""

View File

@ -96,6 +96,7 @@ msgstr ""
#, elixir-format, ex-autogen #, elixir-format, ex-autogen
#: lib/cannery_web/live/ammo_group_live/form_component.ex:91 #: lib/cannery_web/live/ammo_group_live/form_component.ex:91
#: lib/cannery_web/live/ammo_type_live/form_component.ex:156 #: lib/cannery_web/live/ammo_type_live/form_component.ex:156
#: lib/cannery_web/live/container_live/form_component.ex:81
msgid "Saving..." msgid "Saving..."
msgstr "" msgstr ""
@ -111,5 +112,23 @@ msgstr ""
#, elixir-format, ex-autogen #, elixir-format, ex-autogen
#: lib/cannery_web/live/ammo_type_live/show.html.heex:26 #: lib/cannery_web/live/ammo_type_live/show.html.heex:26
#: lib/cannery_web/live/container_live/index.html.heex:36
#: lib/cannery_web/live/container_live/show.html.heex:36
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "" msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/index.ex:55
#: lib/cannery_web/live/container_live/show.ex:37
msgid "%{name} has been deleted"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/form_component.ex:113
msgid "Container created successfully"
msgstr ""
#, elixir-format, ex-autogen
#: lib/cannery_web/live/container_live/form_component.ex:98
msgid "Container updated successfully"
msgstr ""