12 Commits

Author SHA1 Message Date
cfbec3189c display used-up date on used-up ammo
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-07 21:01:57 -05:00
cc31958bbe add used filtering to ammo index page 2022-11-07 00:47:22 -05:00
9e386f1631 add used filtering to container show page 2022-11-07 00:40:09 -05:00
36a0a1c6c8 add used filtering to ammo type show page 2022-11-07 00:40:09 -05:00
2e0bb861f1 show container name in ammo type listing 2022-11-07 00:40:09 -05:00
dbc575d305 improve container show page layout 2022-11-07 00:40:09 -05:00
5390dcc4c2 improve ammo type show page layout 2022-11-07 00:40:09 -05:00
dc355fcd8e add ammo count to ammo type index page 2022-11-07 00:40:09 -05:00
44fbd69e0f make ammo group index more compact 2022-11-06 23:07:13 -05:00
10c4f40864 update spanish translation
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2022-11-06 20:00:23 -05:00
d512ec8e10 remove arm/v6
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-30 15:23:18 -04:00
81b68ba4af use buildx for multi-arch docker images
Some checks failed
continuous-integration/drone/push Build is failing
2022-07-30 15:11:47 -04:00
40 changed files with 959 additions and 471 deletions

View File

@ -32,9 +32,13 @@ steps:
- mix test
- name: build and publish stable
image: plugins/docker
image: thegeeklab/drone-docker-buildx
privileged: true
settings:
repo: shibaobun/cannery
purge: true
compress: true
platforms: linux/amd64,linux/arm64,linux/arm/v7
username:
from_secret: docker_username
password:
@ -45,9 +49,13 @@ steps:
- stable
- name: build and publish tagged version
image: plugins/docker
image: thegeeklab/drone-docker-buildx
privileged: true
settings:
repo: shibaobun/cannery
purge: true
compress: true
platforms: linux/amd64,linux/arm64,linux/arm/v7
username:
from_secret: docker_username
password:

View File

@ -1,4 +1,14 @@
# v0.5.5
- Update translations
- Display used-up date on used-up ammo
- Make ammo index page a bit more compact
- Make ammo index page filter used-up ammo
- Make ammo catalog page include ammo count
- Make ammo type show page a bit more compact
- Make ammo type show page include container names for each ammo
- Make ammo type show page filter used-up ammo
- Make container show page a bit more compact
- Make container show page filter used-up ammo
- Forgot to add the logo as the favicon whoops
# v0.5.4

View File

@ -25,7 +25,7 @@
}
.btn {
@apply inline-block break-words min-w-4;
@apply inline-block break-words;
@apply focus:outline-none px-4 py-2 rounded-lg;
@apply shadow-sm focus:shadow-lg;
@apply transition-all duration-300 ease-in-out;
@ -52,7 +52,7 @@
}
.link {
@apply inline-block break-all min-w-4;
@apply inline-block break-words;
@apply hover:underline;
@apply transition-colors duration-500 ease-in-out;
}

View File

@ -5,7 +5,7 @@ defmodule Cannery.Ammo do
import CanneryWeb.Gettext
import Ecto.Query, warn: false
alias Cannery.{Accounts.User, Containers, Repo}
alias Cannery.{Accounts.User, Containers, Containers.Container, Repo}
alias Cannery.ActivityLog.ShotGroup
alias Cannery.Ammo.{AmmoGroup, AmmoType}
alias Ecto.Changeset
@ -220,7 +220,15 @@ defmodule Cannery.Ammo do
"""
@spec list_ammo_groups_for_type(AmmoType.t(), User.t()) :: [AmmoGroup.t()]
def list_ammo_groups_for_type(%AmmoType{id: ammo_type_id, user_id: user_id}, %User{id: user_id}) do
@spec list_ammo_groups_for_type(AmmoType.t(), User.t(), include_empty :: boolean()) ::
[AmmoGroup.t()]
def list_ammo_groups_for_type(ammo_type, user, include_empty \\ false)
def list_ammo_groups_for_type(
%AmmoType{id: ammo_type_id, user_id: user_id},
%User{id: user_id},
true = _include_empty
) do
Repo.all(
from ag in AmmoGroup,
left_join: sg in assoc(ag, :shot_groups),
@ -231,6 +239,110 @@ defmodule Cannery.Ammo do
)
end
def list_ammo_groups_for_type(
%AmmoType{id: ammo_type_id, user_id: user_id},
%User{id: user_id},
false = _include_empty
) do
Repo.all(
from ag in AmmoGroup,
left_join: sg in assoc(ag, :shot_groups),
where: ag.ammo_type_id == ^ammo_type_id,
where: ag.user_id == ^user_id,
where: not (ag.count == 0),
preload: [shot_groups: sg],
order_by: ag.id
)
end
@doc """
Returns the list of ammo_groups for a user and container.
## Examples
iex> list_ammo_groups_for_container(%AmmoType{id: 123}, %User{id: 123})
[%AmmoGroup{}, ...]
"""
@spec list_ammo_groups_for_container(Container.t(), User.t()) :: [AmmoGroup.t()]
@spec list_ammo_groups_for_container(Container.t(), User.t(), include_empty :: boolean()) ::
[AmmoGroup.t()]
def list_ammo_groups_for_container(container, user, include_empty \\ false)
def list_ammo_groups_for_container(
%Container{id: container_id, user_id: user_id},
%User{id: user_id},
true = _include_empty
) do
Repo.all(
from ag in AmmoGroup,
left_join: sg in assoc(ag, :shot_groups),
where: ag.container_id == ^container_id,
where: ag.user_id == ^user_id,
preload: [shot_groups: sg],
order_by: ag.id
)
end
def list_ammo_groups_for_container(
%Container{id: container_id, user_id: user_id},
%User{id: user_id},
false = _include_empty
) do
Repo.all(
from ag in AmmoGroup,
left_join: sg in assoc(ag, :shot_groups),
where: ag.container_id == ^container_id,
where: ag.user_id == ^user_id,
where: not (ag.count == 0),
preload: [shot_groups: sg],
order_by: ag.id
)
end
@doc """
Returns the count of ammo_groups for an ammo type.
## Examples
iex> get_ammo_groups_count_for_type(%User{id: 123})
3
"""
@spec get_ammo_groups_count_for_type(AmmoType.t(), User.t()) :: [AmmoGroup.t()]
@spec get_ammo_groups_count_for_type(AmmoType.t(), User.t(), include_empty :: boolean()) ::
[AmmoGroup.t()]
def get_ammo_groups_count_for_type(ammo_type, user, include_empty \\ false)
def get_ammo_groups_count_for_type(
%AmmoType{id: ammo_type_id, user_id: user_id},
%User{id: user_id},
true = _include_empty
) do
Repo.one!(
from ag in AmmoGroup,
where: ag.user_id == ^user_id,
where: ag.ammo_type_id == ^ammo_type_id,
distinct: true,
select: count(ag.id)
) || 0
end
def get_ammo_groups_count_for_type(
%AmmoType{id: ammo_type_id, user_id: user_id},
%User{id: user_id},
false = _include_empty
) do
Repo.one!(
from ag in AmmoGroup,
where: ag.user_id == ^user_id,
where: ag.ammo_type_id == ^ammo_type_id,
where: not (ag.count == 0),
distinct: true,
select: count(ag.id)
) || 0
end
@doc """
Returns the list of ammo_groups for a user.
@ -242,22 +354,27 @@ defmodule Cannery.Ammo do
"""
@spec list_ammo_groups(User.t()) :: [AmmoGroup.t()]
@spec list_ammo_groups(User.t(), include_empty :: boolean()) :: [AmmoGroup.t()]
def list_ammo_groups(%User{id: user_id}, include_empty \\ false) do
if include_empty do
def list_ammo_groups(user, include_empty \\ false)
def list_ammo_groups(%User{id: user_id}, true = _include_empty) do
Repo.all(
from ag in AmmoGroup,
left_join: sg in assoc(ag, :shot_groups),
where: ag.user_id == ^user_id,
preload: [shot_groups: sg],
order_by: ag.id
else
)
end
def list_ammo_groups(%User{id: user_id}, false = _include_empty) do
Repo.all(
from ag in AmmoGroup,
left_join: sg in assoc(ag, :shot_groups),
where: ag.user_id == ^user_id,
where: not (ag.count == 0),
preload: [shot_groups: sg],
order_by: ag.id
end
|> Repo.all()
)
end
@doc """
@ -318,6 +435,17 @@ defmodule Cannery.Ammo do
|> Enum.sum()
end
@doc """
Returns the last entered shot group for an ammo group
"""
@spec get_last_used_shot_group(AmmoGroup.t()) :: ShotGroup.t() | nil
def get_last_used_shot_group(%AmmoGroup{} = ammo_group) do
ammo_group
|> Repo.preload(:shot_groups)
|> Map.fetch!(:shot_groups)
|> Enum.max_by(fn %{date: date} -> date end, Date, fn -> nil end)
end
@doc """
Calculates the percentage remaining of an ammo group out of 100
"""

View File

@ -212,6 +212,7 @@ defmodule Cannery.Containers do
container
|> Repo.preload(:ammo_groups)
|> Map.fetch!(:ammo_groups)
|> Enum.reject(fn %{count: count} -> count == 0 end)
|> Enum.count()
end

View File

@ -4,11 +4,16 @@ defmodule CanneryWeb.Components.AmmoGroupCard do
"""
use CanneryWeb, :component
alias Cannery.Repo
alias Cannery.{Ammo, Repo}
alias CanneryWeb.Endpoint
def ammo_group_card(assigns) do
assigns = assigns |> assign(:ammo_group, assigns.ammo_group |> Repo.preload(:ammo_type))
def ammo_group_card(%{ammo_group: ammo_group} = assigns) do
assigns =
%{show_container: show_container} = assigns |> assign_new(:show_container, fn -> false end)
preloads = if show_container, do: [:ammo_type, :container], else: [:ammo_type]
ammo_group = ammo_group |> Repo.preload(preloads)
assigns = assigns |> assign(:ammo_group, ammo_group)
~H"""
<div
@ -17,7 +22,7 @@ defmodule CanneryWeb.Components.AmmoGroupCard do
border border-gray-400 rounded-lg shadow-lg hover:shadow-md
transition-all duration-300 ease-in-out"
>
<%= live_redirect to: Routes.ammo_group_show_path(Endpoint, :show, @ammo_group),
<%= live_patch to: Routes.ammo_group_show_path(Endpoint, :show, @ammo_group),
class: "mb-2 link" do %>
<h1 class="title text-xl title-primary-500">
<%= @ammo_group.ammo_type.name %>
@ -27,7 +32,7 @@ defmodule CanneryWeb.Components.AmmoGroupCard do
<div class="flex flex-col justify-center items-center">
<span class="rounded-lg title text-lg">
<%= gettext("Count:") %>
<%= @ammo_group.count %>
<%= if @ammo_group.count == 0, do: "Empty", else: @ammo_group.count %>
</span>
<%= if @ammo_group.notes do %>
@ -42,6 +47,13 @@ defmodule CanneryWeb.Components.AmmoGroupCard do
<%= @ammo_group.inserted_at |> display_datetime() %>
</span>
<%= if @ammo_group.count == 0 do %>
<span class="rounded-lg title text-lg">
<%= gettext("Used up on:") %>
<%= @ammo_group |> Ammo.get_last_used_shot_group() |> Map.get(:date) |> display_date() %>
</span>
<% end %>
<%= if @ammo_group.price_paid do %>
<span class="rounded-lg title text-lg">
<%= gettext("Price paid:") %>
@ -50,6 +62,17 @@ defmodule CanneryWeb.Components.AmmoGroupCard do
) %>
</span>
<% end %>
<%= if @show_container and @ammo_group.container do %>
<span class="rounded-lg title text-lg">
<%= gettext("Container:") %>
<%= live_patch to: Routes.container_show_path(Endpoint, :show, @ammo_group.container),
class: "link" do %>
<%= @ammo_group.container.name %>
<% end %>
</span>
<% end %>
</div>
<%= if assigns |> Map.has_key?(:inner_block) do %>

View File

@ -6,7 +6,7 @@ defmodule CanneryWeb.Components.TableComponent do
- `:columns`: An array of maps containing the following keys
- `:label`: A gettext'd or otherwise user-facing string label for the
column. Can be nil
- `:key`: A string key used for sorting
- `:key`: An atom key used for sorting
- `:class`: Extra classes to be applied to the column element, if desired.
Optional
- `:sortable`: If false, will prevent the user from sorting with it.
@ -28,13 +28,13 @@ defmodule CanneryWeb.Components.TableComponent do
required(:columns) =>
list(%{
required(:label) => String.t() | nil,
required(:key) => String.t() | nil,
required(:key) => atom() | nil,
optional(:class) => String.t(),
optional(:sortable) => false
}),
required(:rows) =>
list(%{
(key :: String.t()) => any() | {custom_sort_value :: String.t(), value :: any()}
(key :: atom()) => any() | {custom_sort_value :: String.t(), value :: any()}
}),
optional(any()) => any()
},
@ -56,20 +56,19 @@ defmodule CanneryWeb.Components.TableComponent do
def handle_event(
"sort_by",
%{"sort-key" => key},
%{assigns: %{rows: rows, last_sort_key: key, sort_mode: sort_mode}} = socket
%{assigns: %{rows: rows, last_sort_key: last_sort_key, sort_mode: sort_mode}} = socket
) do
sort_mode = if sort_mode == :asc, do: :desc, else: :asc
rows = rows |> sort_by_custom_sort_value_or_value(key, sort_mode)
{:noreply, socket |> assign(sort_mode: sort_mode, rows: rows)}
key = key |> String.to_existing_atom()
sort_mode =
case {key, sort_mode} do
{^last_sort_key, :asc} -> :desc
{^last_sort_key, :desc} -> :asc
{_new_sort_key, _last_sort_mode} -> :asc
end
def handle_event(
"sort_by",
%{"sort-key" => key},
%{assigns: %{rows: rows}} = socket
) do
rows = rows |> sort_by_custom_sort_value_or_value(key, :asc)
{:noreply, socket |> assign(last_sort_key: key, sort_mode: :asc, rows: rows)}
rows = rows |> sort_by_custom_sort_value_or_value(key, sort_mode)
{:noreply, socket |> assign(last_sort_key: key, sort_mode: sort_mode, rows: rows)}
end
defp sort_by_custom_sort_value_or_value(rows, key, sort_mode) do

View File

@ -1,4 +1,4 @@
<div class="w-full overflow-x-auto border border-gray-600 rounded-lg shadow-lg bg-black">
<div id={@id} class="w-full overflow-x-auto border border-gray-600 rounded-lg shadow-lg bg-black">
<table class="min-w-full table-auto text-center bg-white">
<thead class="border-b border-primary-600">
<tr>

View File

@ -9,7 +9,7 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
@impl true
def mount(_params, _session, socket) do
{:ok, socket |> display_ammo_groups()}
{:ok, socket |> assign(show_used: false) |> display_ammo_groups()}
end
@impl true
@ -72,22 +72,39 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
{:noreply, socket |> display_ammo_groups()}
end
defp display_ammo_groups(%{assigns: %{current_user: current_user}} = socket) do
ammo_groups = Ammo.list_ammo_groups(current_user) |> Repo.preload([:ammo_type, :container])
@impl true
def handle_event("toggle_show_used", _params, %{assigns: %{show_used: show_used}} = socket) do
{:noreply, socket |> assign(:show_used, !show_used) |> display_ammo_groups()}
end
defp display_ammo_groups(
%{assigns: %{current_user: current_user, show_used: show_used}} = socket
) do
ammo_groups =
Ammo.list_ammo_groups(current_user, show_used) |> Repo.preload([:ammo_type, :container])
ammo_types_count = Ammo.get_ammo_types_count!(current_user)
containers_count = Containers.get_containers_count!(current_user)
columns = [
%{label: gettext("Ammo type"), key: "ammo_type"},
%{label: gettext("Count"), key: "count"},
%{label: gettext("Price paid"), key: "price_paid"},
%{label: gettext("% left"), key: "remaining"},
%{label: gettext("Range"), key: "range"},
%{label: gettext("Container"), key: "container"},
%{label: gettext("Added on"), key: "added_on"},
%{label: nil, key: "actions", sortable: false}
%{label: gettext("Ammo type"), key: :ammo_type},
%{label: gettext("Count"), key: :count},
%{label: gettext("Price paid"), key: :price_paid},
%{label: gettext("% left"), key: :remaining},
%{label: gettext("Range"), key: :range},
%{label: gettext("Container"), key: :container},
%{label: gettext("Added on"), key: :added_on}
]
columns =
if show_used do
columns ++ [%{label: gettext("Used up on"), key: :used_up_on}]
else
columns
end
columns = columns ++ [%{label: nil, key: :actions, sortable: false}]
rows =
ammo_groups
|> Enum.map(fn ammo_group -> ammo_group |> get_row_data_for_ammo_group(columns) end)
@ -110,8 +127,8 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
|> Enum.into(%{}, fn %{key: key} -> {key, get_value_for_key(key, ammo_group)} end)
end
@spec get_value_for_key(String.t(), AmmoGroup.t()) :: any()
defp get_value_for_key("ammo_type", %{ammo_type: ammo_type}) do
@spec get_value_for_key(atom(), AmmoGroup.t()) :: any()
defp get_value_for_key(:ammo_type, %{ammo_type: ammo_type}) do
{ammo_type.name,
live_patch(ammo_type.name,
to: Routes.ammo_type_show_path(Endpoint, :show, ammo_type),
@ -119,12 +136,12 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
)}
end
defp get_value_for_key("price_paid", %{price_paid: nil}), do: {"a", nil}
defp get_value_for_key(:price_paid, %{price_paid: nil}), do: {"a", nil}
defp get_value_for_key("price_paid", %{price_paid: price_paid}),
defp get_value_for_key(:price_paid, %{price_paid: price_paid}),
do: gettext("$%{amount}", amount: price_paid |> :erlang.float_to_binary(decimals: 2))
defp get_value_for_key("added_on", %{inserted_at: inserted_at}) do
defp get_value_for_key(:added_on, %{inserted_at: inserted_at}) do
assigns = %{inserted_at: inserted_at}
{inserted_at,
@ -133,15 +150,30 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
"""}
end
defp get_value_for_key("range", %{staged: staged} = ammo_group) do
defp get_value_for_key(:used_up_on, ammo_group) do
last_shot_group_date =
case ammo_group |> Ammo.get_last_used_shot_group() do
%{date: last_shot_group_date} -> last_shot_group_date
_no_shot_groups -> nil
end
assigns = %{last_shot_group_date: last_shot_group_date}
{last_shot_group_date,
~H"""
<%= @last_shot_group_date |> display_date() %>
"""}
end
defp get_value_for_key(:range, %{staged: staged} = ammo_group) do
assigns = %{ammo_group: ammo_group}
{staged,
~H"""
<div class="min-w-20 py-2 px-4 h-full flex flex-col justify-center items-center">
<div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
<button
type="button"
class="mx-2 my-1 btn btn-primary"
class="mx-2 my-1 text-sm btn btn-primary"
phx-click="toggle_staged"
phx-value-ammo_group_id={ammo_group.id}
>
@ -150,16 +182,16 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
<%= live_patch(dgettext("actions", "Record shots"),
to: Routes.ammo_group_index_path(Endpoint, :add_shot_group, ammo_group),
class: "mx-2 my-1 btn btn-primary"
class: "mx-2 my-1 text-sm btn btn-primary"
) %>
</div>
"""}
end
defp get_value_for_key("remaining", ammo_group),
defp get_value_for_key(:remaining, ammo_group),
do: "#{ammo_group |> Ammo.get_percentage_remaining()}%"
defp get_value_for_key("actions", ammo_group) do
defp get_value_for_key(:actions, ammo_group) do
assigns = %{ammo_group: ammo_group}
~H"""
@ -190,22 +222,28 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
"""
end
defp get_value_for_key("container", %{container: nil}), do: {nil, nil}
defp get_value_for_key(:container, %{container: nil}), do: {nil, nil}
defp get_value_for_key("container", %{container: %{name: container_name}} = ammo_group) do
defp get_value_for_key(:container, %{container: %{name: container_name}} = ammo_group) do
assigns = %{ammo_group: ammo_group}
{container_name,
~H"""
<div class="min-w-20 py-2 px-4 h-full space-x-4 flex justify-center items-center">
<%= live_patch(@ammo_group.container.name,
<div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
<%= live_patch(
@ammo_group.container.name,
to: Routes.container_show_path(Endpoint, :show, @ammo_group.container),
class: "mx-2 my-1 link"
) %>
<%= live_patch(
gettext("Move ammo"),
to: Routes.ammo_group_index_path(Endpoint, :move, @ammo_group),
class: "btn btn-primary"
class: "mx-2 my-1 text-sm btn btn-primary"
) %>
</div>
"""}
end
defp get_value_for_key(key, ammo_group),
do: ammo_group |> Map.get(key |> String.to_existing_atom())
defp get_value_for_key(key, ammo_group), do: ammo_group |> Map.get(key)
end

View File

@ -46,6 +46,14 @@
<% end %>
<%= unless @ammo_groups |> Enum.empty?() do %>
<div class="flex flex-col justify-center items-center">
<.toggle_button action="toggle_show_used" value={@show_used}>
<span class="title text-lg text-primary-600">
<%= gettext("Show used") %>
</span>
</.toggle_button>
</div>
<.live_component
module={CanneryWeb.Components.TableComponent}
id="ammo_groups_index_table"

View File

@ -84,10 +84,10 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
ammo_group = ammo_group |> Repo.preload([:container, :ammo_type, :shot_groups], force: true)
columns = [
%{label: gettext("Rounds shot"), key: "count"},
%{label: gettext("Notes"), key: "notes"},
%{label: gettext("Date"), key: "date"},
%{label: nil, key: "actions", sortable: false}
%{label: gettext("Rounds shot"), key: :count},
%{label: gettext("Notes"), key: :notes},
%{label: gettext("Date"), key: :date},
%{label: nil, key: :actions, sortable: false}
]
rows =
@ -110,10 +110,10 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
|> Enum.into(%{}, fn %{key: key} ->
value =
case key do
"date" ->
:date ->
{date, date |> display_date()}
"actions" ->
:actions ->
~H"""
<div class="px-4 py-2 space-x-4 flex justify-center items-center">
<%= live_patch to: Routes.ammo_group_show_path(Endpoint, :edit_shot_group, @ammo_group, shot_group),
@ -136,7 +136,7 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
"""
key ->
shot_group |> Map.get(key |> String.to_existing_atom())
shot_group |> Map.get(key)
end
{key, value}

View File

@ -48,29 +48,29 @@ defmodule CanneryWeb.AmmoTypeLive.Index do
columns =
[
%{label: gettext("Name"), key: "name", type: :string},
%{label: gettext("Bullet type"), key: "bullet_type", type: :string},
%{label: gettext("Bullet core"), key: "bullet_core", type: :string},
%{label: gettext("Cartridge"), key: "cartridge", type: :string},
%{label: gettext("Caliber"), key: "caliber", type: :string},
%{label: gettext("Case material"), key: "case_material", type: :string},
%{label: gettext("Jacket type"), key: "jacket_type", type: :string},
%{label: gettext("Muzzle velocity"), key: "muzzle_velocity", type: :string},
%{label: gettext("Powder type"), key: "powder_type", type: :string},
%{label: gettext("Name"), key: :name, type: :name},
%{label: gettext("Bullet type"), key: :bullet_type, type: :string},
%{label: gettext("Bullet core"), key: :bullet_core, type: :string},
%{label: gettext("Cartridge"), key: :cartridge, type: :string},
%{label: gettext("Caliber"), key: :caliber, type: :string},
%{label: gettext("Case material"), key: :case_material, type: :string},
%{label: gettext("Jacket type"), key: :jacket_type, type: :string},
%{label: gettext("Muzzle velocity"), key: :muzzle_velocity, type: :string},
%{label: gettext("Powder type"), key: :powder_type, type: :string},
%{
label: gettext("Powder grains per charge"),
key: "powder_grains_per_charge",
key: :powder_grains_per_charge,
type: :string
},
%{label: gettext("Grains"), key: "grains", type: :string},
%{label: gettext("Pressure"), key: "pressure", type: :string},
%{label: gettext("Primer type"), key: "primer_type", type: :string},
%{label: gettext("Firing type"), key: "firing_type", type: :string},
%{label: gettext("Tracer"), key: "tracer", type: :boolean},
%{label: gettext("Incendiary"), key: "incendiary", type: :boolean},
%{label: gettext("Blank"), key: "blank", type: :boolean},
%{label: gettext("Corrosive"), key: "corrosive", type: :boolean},
%{label: gettext("Manufacturer"), key: "manufacturer", type: :string},
%{label: gettext("Grains"), key: :grains, type: :string},
%{label: gettext("Pressure"), key: :pressure, type: :string},
%{label: gettext("Primer type"), key: :primer_type, type: :string},
%{label: gettext("Firing type"), key: :firing_type, type: :string},
%{label: gettext("Tracer"), key: :tracer, type: :boolean},
%{label: gettext("Incendiary"), key: :incendiary, type: :boolean},
%{label: gettext("Blank"), key: :blank, type: :boolean},
%{label: gettext("Corrosive"), key: :corrosive, type: :boolean},
%{label: gettext("Manufacturer"), key: :manufacturer, type: :string},
%{label: gettext("UPC"), key: "upc", type: :string}
]
|> Enum.filter(fn %{key: key, type: type} ->
@ -79,12 +79,13 @@ defmodule CanneryWeb.AmmoTypeLive.Index do
ammo_types
|> Enum.any?(fn ammo_type ->
not (ammo_type |> Map.get(key |> String.to_existing_atom()) == default_value)
not (ammo_type |> Map.get(key) == default_value)
end)
end)
|> Kernel.++([
%{label: gettext("Total # of rounds"), key: "round_count", type: :round_count},
%{label: gettext("Average Price paid"), key: "avg_price_paid", type: :avg_price_paid},
%{label: gettext("Total # of rounds"), key: :round_count, type: :round_count},
%{label: gettext("Total # of ammo"), key: :ammo_count, type: :ammo_count},
%{label: gettext("Average Price paid"), key: :avg_price_paid, type: :avg_price_paid},
%{label: nil, key: "actions", type: :actions, sortable: false}
])
@ -103,11 +104,14 @@ defmodule CanneryWeb.AmmoTypeLive.Index do
end
defp get_ammo_type_value(:boolean, key, ammo_type, _current_user),
do: ammo_type |> Map.get(key |> String.to_existing_atom()) |> humanize()
do: ammo_type |> Map.get(key) |> humanize()
defp get_ammo_type_value(:round_count, _key, ammo_type, current_user),
do: ammo_type |> Ammo.get_round_count_for_ammo_type(current_user)
defp get_ammo_type_value(:ammo_count, _key, ammo_type, current_user),
do: ammo_type |> Ammo.get_ammo_groups_count_for_type(current_user)
defp get_ammo_type_value(:avg_price_paid, _key, ammo_type, current_user) do
case ammo_type |> Ammo.get_average_cost_for_ammo_type!(current_user) do
nil -> gettext("No cost information")
@ -115,6 +119,18 @@ defmodule CanneryWeb.AmmoTypeLive.Index do
end
end
defp get_ammo_type_value(:name, _key, ammo_type, _current_user) do
assigns = %{ammo_type: ammo_type}
~H"""
<%= live_redirect to: Routes.ammo_type_show_path(Endpoint, :show, ammo_type),
class: "link",
data: [qa: "view-name-#{ammo_type.id}"] do %>
<%= ammo_type.name %>
<% end %>
"""
end
defp get_ammo_type_value(:actions, _key, ammo_type, _current_user) do
assigns = %{ammo_type: ammo_type}
@ -148,6 +164,5 @@ defmodule CanneryWeb.AmmoTypeLive.Index do
defp get_ammo_type_value(nil, _key, _ammo_type, _current_user), do: nil
defp get_ammo_type_value(_other, key, ammo_type, _current_user),
do: ammo_type |> Map.get(key |> String.to_existing_atom())
defp get_ammo_type_value(_other, key, ammo_type, _current_user), do: ammo_type |> Map.get(key)
end

View File

@ -9,22 +9,12 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
alias CanneryWeb.Endpoint
@impl true
def mount(_params, _session, socket), do: {:ok, socket}
def mount(_params, _session, socket), do: {:ok, socket |> assign(show_used: false)}
@impl true
def handle_params(%{"id" => id}, _params, %{assigns: %{current_user: current_user}} = socket) do
ammo_type = Ammo.get_ammo_type!(id, current_user)
socket =
socket
|> assign(
page_title: page_title(socket.assigns.live_action),
ammo_type: ammo_type,
ammo_groups: ammo_type |> Ammo.list_ammo_groups_for_type(current_user),
avg_cost_per_round: ammo_type |> Ammo.get_average_cost_for_ammo_type!(current_user)
)
{:noreply, socket}
{:noreply, socket |> display_ammo_type(ammo_type)}
end
@impl true
@ -41,6 +31,34 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
{:noreply, socket |> put_flash(:info, prompt) |> push_redirect(to: redirect_to)}
end
@impl true
def handle_event("toggle_show_used", _params, %{assigns: %{show_used: show_used}} = socket) do
{:noreply, socket |> assign(:show_used, !show_used) |> display_ammo_type()}
end
defp display_ammo_type(
%{
assigns: %{
live_action: live_action,
current_user: current_user,
show_used: show_used
}
} = socket,
ammo_type
) do
socket
|> assign(
page_title: page_title(live_action),
ammo_type: ammo_type,
ammo_groups: ammo_type |> Ammo.list_ammo_groups_for_type(current_user, show_used),
avg_cost_per_round: ammo_type |> Ammo.get_average_cost_for_ammo_type!(current_user)
)
end
defp display_ammo_type(%{assigns: %{ammo_type: ammo_type}} = socket) do
socket |> display_ammo_type(ammo_type)
end
defp page_title(:show), do: gettext("Show Ammo type")
defp page_title(:edit), do: gettext("Edit Ammo type")
end

View File

@ -1,5 +1,4 @@
<div class="mx-auto px-4 sm:px-8 space-y-4 max-w-3xl
flex flex-col justify-center items-center">
<div class="space-y-4 flex flex-col justify-center items-center">
<h1 class="title text-2xl title-primary-500">
<%= @ammo_type.name %>
</h1>
@ -114,6 +113,14 @@
<hr class="hr" />
<div class="flex flex-col justify-center items-center">
<.toggle_button action="toggle_show_used" value={@show_used}>
<span class="title text-lg text-primary-600">
<%= gettext("Show used") %>
</span>
</.toggle_button>
</div>
<div>
<%= if @ammo_groups |> Enum.empty?() do %>
<h2 class="mx-8 my-4 title text-lg text-primary-600">
@ -123,7 +130,7 @@
<% else %>
<div class="flex flex-wrap justify-center items-center">
<%= for ammo_group <- @ammo_groups do %>
<.ammo_group_card ammo_group={ammo_group} />
<.ammo_group_card ammo_group={ammo_group} show_container={true} />
<% end %>
</div>
<% end %>

View File

@ -5,13 +5,13 @@ defmodule CanneryWeb.ContainerLive.Show do
use CanneryWeb, :live_view
import CanneryWeb.Components.{AmmoGroupCard, TagCard}
alias Cannery.{Accounts.User, Containers, Containers.Container, Repo, Tags}
alias Cannery.{Accounts.User, Ammo, Containers, Containers.Container, Repo, Tags}
alias CanneryWeb.Endpoint
alias Ecto.Changeset
alias Phoenix.LiveView.Socket
@impl true
def mount(_params, _session, socket), do: {:ok, socket}
def mount(_params, _session, socket), do: {:ok, socket |> assign(show_used: false)}
@impl true
def handle_params(
@ -39,7 +39,7 @@ defmodule CanneryWeb.ContainerLive.Show do
container_name: container.name
)
socket |> put_flash(:info, prompt) |> render_container(container.id, current_user)
socket |> put_flash(:info, prompt) |> render_container()
{:error, error_string} ->
socket |> put_flash(:error, error_string)
@ -82,12 +82,23 @@ defmodule CanneryWeb.ContainerLive.Show do
{:noreply, socket}
end
@impl true
def handle_event("toggle_show_used", _params, %{assigns: %{show_used: show_used}} = socket) do
{:noreply, socket |> assign(:show_used, !show_used) |> render_container()}
end
@spec render_container(Socket.t(), Container.id(), User.t()) :: Socket.t()
defp render_container(%{assigns: %{live_action: live_action}} = socket, id, current_user) do
defp render_container(
%{assigns: %{live_action: live_action, show_used: show_used}} = socket,
id,
current_user
) do
%{name: container_name} =
container =
Containers.get_container!(id, current_user)
|> Repo.preload([:ammo_groups, :tags], force: true)
|> Repo.preload([:tags], force: true)
ammo_groups = Ammo.list_ammo_groups_for_container(container, current_user, show_used)
page_title =
case live_action do
@ -96,6 +107,13 @@ defmodule CanneryWeb.ContainerLive.Show do
:edit_tags -> gettext("Edit %{name} tags", name: container_name)
end
socket |> assign(container: container, page_title: page_title)
socket |> assign(container: container, ammo_groups: ammo_groups, page_title: page_title)
end
@spec render_container(Socket.t()) :: Socket.t()
defp render_container(
%{assigns: %{container: %{id: container_id}, current_user: current_user}} = socket
) do
socket |> render_container(container_id, current_user)
end
end

View File

@ -1,4 +1,4 @@
<div class="mx-auto space-y-4 max-w-3xl flex flex-col justify-center items-center">
<div class="space-y-4 flex flex-col justify-center items-center">
<h1 class="title text-2xl title-primary-500">
<%= @container.name %>
</h1>
@ -22,10 +22,10 @@
</span>
<% end %>
<%= unless @container.ammo_groups |> Enum.empty?() do %>
<%= unless @ammo_groups |> Enum.empty?() do %>
<span class="rounded-lg title text-lg">
<%= gettext("Packs:") %>
<%= @container |> Containers.get_container_ammo_group_count!() %>
<%= Enum.count(@ammo_groups) %>
</span>
<span class="rounded-lg title text-lg">
@ -84,14 +84,22 @@
<hr class="mb-4 hr" />
<div class="flex flex-col justify-center items-center">
<.toggle_button action="toggle_show_used" value={@show_used}>
<span class="title text-lg text-primary-600">
<%= gettext("Show used") %>
</span>
</.toggle_button>
</div>
<div>
<%= if @container.ammo_groups |> Enum.empty?() do %>
<%= if @ammo_groups |> Enum.empty?() do %>
<h2 class="mx-8 my-4 title text-lg text-primary-600">
<%= gettext("No ammo in this container") %>
</h2>
<% else %>
<div class="flex flex-wrap justify-center items-center">
<%= for ammo_group <- @container.ammo_groups do %>
<%= for ammo_group <- @ammo_groups do %>
<.ammo_group_card ammo_group={ammo_group} />
<% end %>
</div>

View File

@ -77,11 +77,11 @@ defmodule CanneryWeb.RangeLive.Index do
ammo_groups = Ammo.list_staged_ammo_groups(current_user)
columns = [
%{label: gettext("Ammo"), key: "name"},
%{label: gettext("Rounds shot"), key: "count"},
%{label: gettext("Notes"), key: "notes"},
%{label: gettext("Date"), key: "date"},
%{label: nil, key: "actions", sortable: false}
%{label: gettext("Ammo"), key: :name},
%{label: gettext("Rounds shot"), key: :count},
%{label: gettext("Notes"), key: :notes},
%{label: gettext("Date"), key: :date},
%{label: nil, key: :actions, sortable: false}
]
rows =
@ -101,17 +101,17 @@ defmodule CanneryWeb.RangeLive.Index do
|> Enum.into(%{}, fn %{key: key} ->
value =
case key do
"name" ->
:name ->
{shot_group.ammo_group.ammo_type.name,
live_patch(shot_group.ammo_group.ammo_type.name,
to: Routes.ammo_group_show_path(Endpoint, :show, shot_group.ammo_group),
class: "link"
)}
"date" ->
:date ->
date |> display_date()
"actions" ->
:actions ->
~H"""
<div class="px-4 py-2 space-x-4 flex justify-center items-center">
<%= live_patch to: Routes.range_index_path(Endpoint, :edit, shot_group),
@ -134,7 +134,7 @@ defmodule CanneryWeb.RangeLive.Index do
"""
key ->
shot_group |> Map.get(key |> String.to_existing_atom())
shot_group |> Map.get(key)
end
{key, value}

View File

@ -22,7 +22,7 @@
</div>
</header>
<div class="mx-4 sm:mx-8 md:mx-16">
<div class="mx-4 sm:mx-8 md:mx-16 flex flex-col justify-center items-stretch">
<%= @inner_content %>
</div>
</main>

View File

@ -5,6 +5,7 @@ defmodule CanneryWeb.ViewHelpers do
:view`
"""
import Phoenix.LiveView
import Phoenix.LiveView.Helpers
@id_length 16
@ -65,4 +66,43 @@ defmodule CanneryWeb.ViewHelpers do
if(Application.get_env(:cannery, CanneryWeb.ViewHelpers)[:shibao_mode], do: "q_q", else: "😔")
def display_emoji(other_emoji), do: other_emoji
@doc """
A toggle button element that can be directed to a liveview or a
live_component's `handle_event/3`.
## Examples
<.toggle_button action="my_liveview_action" value={@some_value}>
<span>Toggle me!</span>
</.toggle_button>
<.toggle_button action="my_live_component_action" target={@myself} value={@some_value}>
<span>Whatever you want</span>
</.toggle_button>
"""
def toggle_button(assigns) do
assigns = assigns |> assign_new(:id, fn -> assigns.action end)
~H"""
<label for={@id} class="inline-flex relative items-center cursor-pointer">
<input
type="checkbox"
value={@value}
checked={@value}
id={@id}
class="sr-only peer"
{
if assigns |> Map.has_key?(:target),
do: %{"phx-click" => @action, "phx-value-value" => @value, "phx-target" => @target},
else: %{"phx-click" => @action, "phx-value-value" => @value}
}
/>
<div class="w-11 h-6 bg-gray-200 rounded-full peer dark:bg-gray-700 peer-focus:ring-4 peer-focus:ring-teal-300 dark:peer-focus:ring-teal-800 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-1 after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-teal-600">
</div>
<span class="ml-3 text-sm font-medium text-gray-900 dark:text-gray-300">
<%= render_slot(@inner_block) %>
</span>
</label>
"""
end
end

View File

@ -156,7 +156,7 @@ msgid "Why not get some ready to shoot?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:151
#: lib/cannery_web/live/ammo_group_live/index.ex:183
#: lib/cannery_web/live/ammo_group_live/show.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:36
msgid "Record shots"

View File

@ -169,7 +169,7 @@ msgid "Why not get some ready to shoot?"
msgstr "Warum nicht einige für den Schießstand auswählen?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:151
#: lib/cannery_web/live/ammo_group_live/index.ex:183
#: lib/cannery_web/live/ammo_group_live/show.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:36
msgid "Record shots"

View File

@ -54,13 +54,13 @@ msgstr "Munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:90
msgid "Ammo type"
msgstr "Munitionsarten"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:87
#: lib/cannery_web/live/ammo_type_live/show.html.heex:100
#: lib/cannery_web/live/ammo_type_live/index.ex:88
#: lib/cannery_web/live/ammo_type_live/show.html.heex:99
msgid "Average Price paid"
msgstr "Durchschnittlicher Kaufpreis"
@ -72,7 +72,7 @@ msgstr "Hintergrundfarbe"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:71
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
msgid "Blank"
msgstr "Knallpatrone"
@ -84,42 +84,42 @@ msgstr "Messing"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:53
#: lib/cannery_web/live/ammo_type_live/show.html.heex:39
#: lib/cannery_web/live/ammo_type_live/show.html.heex:38
msgid "Bullet core"
msgstr "Projektilkern"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:37
msgid "Bullet type"
msgstr "Patronenart"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:55
#: lib/cannery_web/live/ammo_type_live/show.html.heex:41
#: lib/cannery_web/live/ammo_type_live/show.html.heex:40
msgid "Caliber"
msgstr "Kaliber"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:54
#: lib/cannery_web/live/ammo_type_live/show.html.heex:40
#: lib/cannery_web/live/ammo_type_live/show.html.heex:39
msgid "Cartridge"
msgstr "Patrone"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:56
#: lib/cannery_web/live/ammo_type_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:41
msgid "Case material"
msgstr "Gehäusematerial"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:86
#: lib/cannery_web/live/ammo_group_live/index.ex:95
msgid "Container"
msgstr "Behälter"
@ -133,18 +133,18 @@ msgstr "Behälter"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
msgid "Corrosive"
msgstr "Korrosiv"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:82
#: lib/cannery_web/live/ammo_group_live/index.ex:91
msgid "Count"
msgstr "Anzahl"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:29
#: lib/cannery_web/components/ammo_group_card.ex:34
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
msgid "Count:"
msgstr "Anzahl:"
@ -178,7 +178,7 @@ msgstr "Munitionsgruppe bearbeiten"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:45
#: lib/cannery_web/live/ammo_type_live/show.ex:63
msgid "Edit Ammo type"
msgstr "Munitionstyp bearbeiten"
@ -210,14 +210,14 @@ msgstr "VM"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
msgid "Grains"
msgstr "Körner"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
msgid "Incendiary"
msgstr "Brandmunition"
@ -268,7 +268,7 @@ msgstr "Magazin, Ladestreifen, Munitionskiste usw."
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:73
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
msgid "Manufacturer"
msgstr "Hersteller"
@ -322,7 +322,7 @@ msgid "No Ammo Types"
msgstr "Keine Munitionsarten"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:127
msgid "No ammo for this type"
msgstr "Keine Munition dieser Art"
@ -352,7 +352,7 @@ msgid "Notes"
msgstr "Bemerkungen"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:35
#: lib/cannery_web/components/ammo_group_card.ex:40
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
msgid "Notes:"
msgstr "Bemerkungen:"
@ -365,25 +365,25 @@ msgstr "Auf dem Bücherregal"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
msgid "Pressure"
msgstr "Druck"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:83
#: lib/cannery_web/live/ammo_group_live/index.ex:92
msgid "Price paid"
msgstr "Kaufpreis"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:47
#: lib/cannery_web/components/ammo_group_card.ex:59
msgid "Price paid:"
msgstr "Kaufpreis:"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
msgid "Primer type"
msgstr "Zündertyp"
@ -416,7 +416,7 @@ msgid "Settings"
msgstr "Einstellungen"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.ex:44
#: lib/cannery_web/live/ammo_type_live/show.ex:62
msgid "Show Ammo type"
msgstr "Zeige Munitionsarten"
@ -460,7 +460,7 @@ msgstr "Die selbst-gehostete Website zur Verwaltung von Schusswaffen"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
msgid "Tracer"
msgstr "Leuchtspur"
@ -508,7 +508,7 @@ msgstr "Keine Tags für diesen Behälter"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:68
#: lib/cannery_web/live/ammo_group_live/index.ex:85
#: lib/cannery_web/live/ammo_group_live/index.ex:94
msgid "Range"
msgstr "Schießplatz"
@ -601,6 +601,7 @@ msgstr "Munitionsgruppe verschieben"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:240
msgid "Move ammo"
msgstr "Munition verschieben"
@ -615,12 +616,12 @@ msgid "Shot log"
msgstr "Schießkladde"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:125
#: lib/cannery_web/components/ammo_group_card.ex:60
#: lib/cannery_web/live/ammo_group_live/index.ex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:114
#: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#: lib/cannery_web/live/ammo_type_live/index.ex:118
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
msgid "$%{amount}"
msgstr "$%{amount}"
@ -632,35 +633,35 @@ msgstr "Bimetall"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:57
#: lib/cannery_web/live/ammo_type_live/show.html.heex:43
#: lib/cannery_web/live/ammo_type_live/show.html.heex:42
msgid "Jacket type"
msgstr "Patronenhülse"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/show.html.heex:43
msgid "Muzzle velocity"
msgstr "Mündungsgeschwindigkeit"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:61
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
msgid "Powder grains per charge"
msgstr "Pulverkörner pro Ladung"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:59
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
msgid "Powder type"
msgstr "Pulverart"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:74
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
msgid "UPC"
msgstr "UPC"
@ -681,19 +682,19 @@ msgid "New password"
msgstr "Neues Passwort"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:148
#: lib/cannery_web/live/ammo_group_live/index.ex:180
msgid "Stage"
msgstr "Markiert"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:148
#: lib/cannery_web/live/ammo_group_live/index.ex:180
msgid "Unstage"
msgstr "Demarkiert"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
msgid "Firing type"
msgstr "Patronenhülsenform"
@ -709,13 +710,13 @@ msgstr "Lädt..."
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:95
#: lib/cannery_web/live/container_live/show.ex:106
msgid "Edit %{name}"
msgstr "%{name} bearbeiten"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:46
#: lib/cannery_web/live/container_live/show.ex:96
#: lib/cannery_web/live/container_live/show.ex:107
msgid "Edit %{name} tags"
msgstr "Editiere %{name} Tags"
@ -726,18 +727,18 @@ msgid "Rounds:"
msgstr "Patronen:"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/show.ex:94
#: lib/cannery_web/live/container_live/show.ex:105
msgid "Show %{name}"
msgstr "Zeige %{name}"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:110
#: lib/cannery_web/live/ammo_type_live/index.ex:117
#: lib/cannery_web/live/ammo_type_live/show.html.heex:109
msgid "No cost information"
msgstr "Keine Preisinformationen"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:84
#: lib/cannery_web/live/ammo_group_live/index.ex:93
msgid "% left"
msgstr "% verbleibend"
@ -767,7 +768,7 @@ msgid "Rounds used"
msgstr "Patronen verbraucht"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#: lib/cannery_web/live/ammo_type_live/show.html.heex:74
msgid "Current # of rounds:"
msgstr "Derzeitige # an Patronen:"
@ -777,7 +778,7 @@ msgid "Total # of rounds"
msgstr "Summe aller Patronen"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:82
msgid "Total rounds shot:"
msgstr "Summe abgegebener Schüsse:"
@ -823,14 +824,14 @@ msgid "Ammo types"
msgstr "Munitionsart"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:87
#: lib/cannery_web/live/ammo_group_live/index.ex:96
msgid "Added on"
msgstr "Hinzugefügt am"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:41
#: lib/cannery_web/components/ammo_group_card.ex:46
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:91
#: lib/cannery_web/live/ammo_type_live/show.html.heex:90
msgid "Added on:"
msgstr "Hinzugefügt am:"
@ -899,7 +900,7 @@ msgid "Move Ammo"
msgstr "Munition verschieben"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/container_live/show.html.heex:90
#: lib/cannery_web/live/container_live/show.html.heex:98
msgid "No ammo in this container"
msgstr "Keine Munitionsgruppe in diesem Behälter"
@ -934,3 +935,30 @@ msgstr ""
#: lib/cannery_web/live/invite_live/form_component.html.heex:28
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:87
msgid "Total # of ammo"
msgstr "Summe aller Patronen"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/components/ammo_group_card.ex:68
msgid "Container:"
msgstr "Behälter"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:119
#: lib/cannery_web/live/container_live/show.html.heex:90
msgid "Show used"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:101
msgid "Used up on"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:52
msgid "Used up on:"
msgstr ""

View File

@ -188,7 +188,7 @@ msgstr ""
"%{multiplier}"
#, elixir-autogen, elixir-format
#: lib/cannery/ammo.ex:407
#: lib/cannery/ammo.ex:535
msgid "Invalid multiplier"
msgstr ""

View File

@ -33,7 +33,7 @@ msgstr "%{name} erfolgreich erstellt"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:41
#: lib/cannery_web/live/ammo_type_live/show.ex:38
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
@ -100,7 +100,7 @@ msgid "Are you sure you want to delete the invite for %{name}?"
msgstr "Sind Sie sicher, dass sie die Einladung für %{name} löschen möchten?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:184
#: lib/cannery_web/live/ammo_group_live/index.ex:216
#: lib/cannery_web/live/ammo_group_live/show.html.heex:71
msgid "Are you sure you want to delete this ammo?"
msgstr "Sind Sie sicher, dass sie diese Munition löschen möchten?"
@ -293,7 +293,7 @@ msgstr[0] "Munitionsgruppe erfolgreich aktualisiert"
msgstr[1] "Munitionsgruppe erfolgreich aktualisiert"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:140
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
#: lib/cannery_web/live/ammo_type_live/index.ex:156
#: lib/cannery_web/live/ammo_type_live/show.html.heex:26
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?"

View File

@ -39,13 +39,13 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:90
msgid "Ammo type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:87
#: lib/cannery_web/live/ammo_type_live/show.html.heex:100
#: lib/cannery_web/live/ammo_type_live/index.ex:88
#: lib/cannery_web/live/ammo_type_live/show.html.heex:99
msgid "Average Price paid"
msgstr ""
@ -57,7 +57,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:71
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
msgid "Blank"
msgstr ""
@ -69,42 +69,42 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:53
#: lib/cannery_web/live/ammo_type_live/show.html.heex:39
#: lib/cannery_web/live/ammo_type_live/show.html.heex:38
msgid "Bullet core"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:37
msgid "Bullet type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:55
#: lib/cannery_web/live/ammo_type_live/show.html.heex:41
#: lib/cannery_web/live/ammo_type_live/show.html.heex:40
msgid "Caliber"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:54
#: lib/cannery_web/live/ammo_type_live/show.html.heex:40
#: lib/cannery_web/live/ammo_type_live/show.html.heex:39
msgid "Cartridge"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:56
#: lib/cannery_web/live/ammo_type_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:41
msgid "Case material"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:86
#: lib/cannery_web/live/ammo_group_live/index.ex:95
msgid "Container"
msgstr ""
@ -118,18 +118,18 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
msgid "Corrosive"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:82
#: lib/cannery_web/live/ammo_group_live/index.ex:91
msgid "Count"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:29
#: lib/cannery_web/components/ammo_group_card.ex:34
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
msgid "Count:"
msgstr ""
@ -163,7 +163,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:45
#: lib/cannery_web/live/ammo_type_live/show.ex:63
msgid "Edit Ammo type"
msgstr ""
@ -195,14 +195,14 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
msgid "Grains"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
msgid "Incendiary"
msgstr ""
@ -253,7 +253,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:73
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
msgid "Manufacturer"
msgstr ""
@ -307,7 +307,7 @@ msgid "No Ammo Types"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:127
msgid "No ammo for this type"
msgstr ""
@ -337,7 +337,7 @@ msgid "Notes"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:35
#: lib/cannery_web/components/ammo_group_card.ex:40
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
msgid "Notes:"
msgstr ""
@ -350,25 +350,25 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
msgid "Pressure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:83
#: lib/cannery_web/live/ammo_group_live/index.ex:92
msgid "Price paid"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:47
#: lib/cannery_web/components/ammo_group_card.ex:59
msgid "Price paid:"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
msgid "Primer type"
msgstr ""
@ -399,7 +399,7 @@ msgid "Settings"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.ex:44
#: lib/cannery_web/live/ammo_type_live/show.ex:62
msgid "Show Ammo type"
msgstr ""
@ -443,7 +443,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
msgid "Tracer"
msgstr ""
@ -491,7 +491,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:68
#: lib/cannery_web/live/ammo_group_live/index.ex:85
#: lib/cannery_web/live/ammo_group_live/index.ex:94
msgid "Range"
msgstr ""
@ -584,6 +584,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:240
msgid "Move ammo"
msgstr ""
@ -598,12 +599,12 @@ msgid "Shot log"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:125
#: lib/cannery_web/components/ammo_group_card.ex:60
#: lib/cannery_web/live/ammo_group_live/index.ex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:114
#: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#: lib/cannery_web/live/ammo_type_live/index.ex:118
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
msgid "$%{amount}"
msgstr ""
@ -615,35 +616,35 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:57
#: lib/cannery_web/live/ammo_type_live/show.html.heex:43
#: lib/cannery_web/live/ammo_type_live/show.html.heex:42
msgid "Jacket type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/show.html.heex:43
msgid "Muzzle velocity"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:61
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
msgid "Powder grains per charge"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:59
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
msgid "Powder type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:74
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
msgid "UPC"
msgstr ""
@ -664,19 +665,19 @@ msgid "New password"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:148
#: lib/cannery_web/live/ammo_group_live/index.ex:180
msgid "Stage"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:148
#: lib/cannery_web/live/ammo_group_live/index.ex:180
msgid "Unstage"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
msgid "Firing type"
msgstr ""
@ -692,13 +693,13 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:95
#: lib/cannery_web/live/container_live/show.ex:106
msgid "Edit %{name}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:46
#: lib/cannery_web/live/container_live/show.ex:96
#: lib/cannery_web/live/container_live/show.ex:107
msgid "Edit %{name} tags"
msgstr ""
@ -709,18 +710,18 @@ msgid "Rounds:"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/show.ex:94
#: lib/cannery_web/live/container_live/show.ex:105
msgid "Show %{name}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:110
#: lib/cannery_web/live/ammo_type_live/index.ex:117
#: lib/cannery_web/live/ammo_type_live/show.html.heex:109
msgid "No cost information"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:84
#: lib/cannery_web/live/ammo_group_live/index.ex:93
msgid "% left"
msgstr ""
@ -750,7 +751,7 @@ msgid "Rounds used"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#: lib/cannery_web/live/ammo_type_live/show.html.heex:74
msgid "Current # of rounds:"
msgstr ""
@ -760,7 +761,7 @@ msgid "Total # of rounds"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:82
msgid "Total rounds shot:"
msgstr ""
@ -806,14 +807,14 @@ msgid "Ammo types"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:87
#: lib/cannery_web/live/ammo_group_live/index.ex:96
msgid "Added on"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:41
#: lib/cannery_web/components/ammo_group_card.ex:46
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:91
#: lib/cannery_web/live/ammo_type_live/show.html.heex:90
msgid "Added on:"
msgstr ""
@ -882,7 +883,7 @@ msgid "Move Ammo"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/show.html.heex:90
#: lib/cannery_web/live/container_live/show.html.heex:98
msgid "No ammo in this container"
msgstr ""
@ -917,3 +918,30 @@ msgstr ""
#: lib/cannery_web/live/invite_live/form_component.html.heex:28
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:87
msgid "Total # of ammo"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:68
msgid "Container:"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:119
#: lib/cannery_web/live/container_live/show.html.heex:90
msgid "Show used"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:101
msgid "Used up on"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:52
msgid "Used up on:"
msgstr ""

View File

@ -157,7 +157,7 @@ msgid "Why not get some ready to shoot?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:151
#: lib/cannery_web/live/ammo_group_live/index.ex:183
#: lib/cannery_web/live/ammo_group_live/show.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:36
msgid "Record shots"

View File

@ -40,13 +40,13 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:90
msgid "Ammo type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:87
#: lib/cannery_web/live/ammo_type_live/show.html.heex:100
#: lib/cannery_web/live/ammo_type_live/index.ex:88
#: lib/cannery_web/live/ammo_type_live/show.html.heex:99
msgid "Average Price paid"
msgstr ""
@ -58,7 +58,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:71
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
msgid "Blank"
msgstr ""
@ -70,42 +70,42 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:53
#: lib/cannery_web/live/ammo_type_live/show.html.heex:39
#: lib/cannery_web/live/ammo_type_live/show.html.heex:38
msgid "Bullet core"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:37
msgid "Bullet type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:55
#: lib/cannery_web/live/ammo_type_live/show.html.heex:41
#: lib/cannery_web/live/ammo_type_live/show.html.heex:40
msgid "Caliber"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:54
#: lib/cannery_web/live/ammo_type_live/show.html.heex:40
#: lib/cannery_web/live/ammo_type_live/show.html.heex:39
msgid "Cartridge"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:56
#: lib/cannery_web/live/ammo_type_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:41
msgid "Case material"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:86
#: lib/cannery_web/live/ammo_group_live/index.ex:95
msgid "Container"
msgstr ""
@ -119,18 +119,18 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
msgid "Corrosive"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:82
#: lib/cannery_web/live/ammo_group_live/index.ex:91
msgid "Count"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:29
#: lib/cannery_web/components/ammo_group_card.ex:34
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
msgid "Count:"
msgstr ""
@ -164,7 +164,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:45
#: lib/cannery_web/live/ammo_type_live/show.ex:63
msgid "Edit Ammo type"
msgstr ""
@ -196,14 +196,14 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
msgid "Grains"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
msgid "Incendiary"
msgstr ""
@ -254,7 +254,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:73
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
msgid "Manufacturer"
msgstr ""
@ -308,7 +308,7 @@ msgid "No Ammo Types"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:127
msgid "No ammo for this type"
msgstr ""
@ -338,7 +338,7 @@ msgid "Notes"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:35
#: lib/cannery_web/components/ammo_group_card.ex:40
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
msgid "Notes:"
msgstr ""
@ -351,25 +351,25 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
msgid "Pressure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:83
#: lib/cannery_web/live/ammo_group_live/index.ex:92
msgid "Price paid"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:47
#: lib/cannery_web/components/ammo_group_card.ex:59
msgid "Price paid:"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
msgid "Primer type"
msgstr ""
@ -400,7 +400,7 @@ msgid "Settings"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.ex:44
#: lib/cannery_web/live/ammo_type_live/show.ex:62
msgid "Show Ammo type"
msgstr ""
@ -444,7 +444,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
msgid "Tracer"
msgstr ""
@ -492,7 +492,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:68
#: lib/cannery_web/live/ammo_group_live/index.ex:85
#: lib/cannery_web/live/ammo_group_live/index.ex:94
msgid "Range"
msgstr ""
@ -585,6 +585,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:240
msgid "Move ammo"
msgstr ""
@ -599,12 +600,12 @@ msgid "Shot log"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:125
#: lib/cannery_web/components/ammo_group_card.ex:60
#: lib/cannery_web/live/ammo_group_live/index.ex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:114
#: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#: lib/cannery_web/live/ammo_type_live/index.ex:118
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
msgid "$%{amount}"
msgstr ""
@ -616,35 +617,35 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:57
#: lib/cannery_web/live/ammo_type_live/show.html.heex:43
#: lib/cannery_web/live/ammo_type_live/show.html.heex:42
msgid "Jacket type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/show.html.heex:43
msgid "Muzzle velocity"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:61
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
msgid "Powder grains per charge"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:59
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
msgid "Powder type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:74
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
msgid "UPC"
msgstr ""
@ -665,19 +666,19 @@ msgid "New password"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:148
#: lib/cannery_web/live/ammo_group_live/index.ex:180
msgid "Stage"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:148
#: lib/cannery_web/live/ammo_group_live/index.ex:180
msgid "Unstage"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
msgid "Firing type"
msgstr ""
@ -693,13 +694,13 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:95
#: lib/cannery_web/live/container_live/show.ex:106
msgid "Edit %{name}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:46
#: lib/cannery_web/live/container_live/show.ex:96
#: lib/cannery_web/live/container_live/show.ex:107
msgid "Edit %{name} tags"
msgstr ""
@ -710,18 +711,18 @@ msgid "Rounds:"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/show.ex:94
#: lib/cannery_web/live/container_live/show.ex:105
msgid "Show %{name}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:110
#: lib/cannery_web/live/ammo_type_live/index.ex:117
#: lib/cannery_web/live/ammo_type_live/show.html.heex:109
msgid "No cost information"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:84
#: lib/cannery_web/live/ammo_group_live/index.ex:93
msgid "% left"
msgstr ""
@ -751,7 +752,7 @@ msgid "Rounds used"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#: lib/cannery_web/live/ammo_type_live/show.html.heex:74
msgid "Current # of rounds:"
msgstr ""
@ -761,7 +762,7 @@ msgid "Total # of rounds"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:82
msgid "Total rounds shot:"
msgstr ""
@ -807,14 +808,14 @@ msgid "Ammo types"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:87
#: lib/cannery_web/live/ammo_group_live/index.ex:96
msgid "Added on"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:41
#: lib/cannery_web/components/ammo_group_card.ex:46
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:91
#: lib/cannery_web/live/ammo_type_live/show.html.heex:90
msgid "Added on:"
msgstr ""
@ -883,7 +884,7 @@ msgid "Move Ammo"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/container_live/show.html.heex:90
#: lib/cannery_web/live/container_live/show.html.heex:98
msgid "No ammo in this container"
msgstr ""
@ -918,3 +919,30 @@ msgstr ""
#: lib/cannery_web/live/invite_live/form_component.html.heex:28
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:87
msgid "Total # of ammo"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/components/ammo_group_card.ex:68
msgid "Container:"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:119
#: lib/cannery_web/live/container_live/show.html.heex:90
msgid "Show used"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:101
msgid "Used up on"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:52
msgid "Used up on:"
msgstr ""

View File

@ -171,7 +171,7 @@ msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery/ammo.ex:407
#: lib/cannery/ammo.ex:535
msgid "Invalid multiplier"
msgstr ""

View File

@ -21,7 +21,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:41
#: lib/cannery_web/live/ammo_type_live/show.ex:38
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
@ -86,7 +86,7 @@ msgid "Are you sure you want to delete the invite for %{name}?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:184
#: lib/cannery_web/live/ammo_group_live/index.ex:216
#: lib/cannery_web/live/ammo_group_live/show.html.heex:71
msgid "Are you sure you want to delete this ammo?"
msgstr ""
@ -273,7 +273,7 @@ msgstr[0] ""
msgstr[1] ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:140
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
#: lib/cannery_web/live/ammo_type_live/index.ex:156
#: lib/cannery_web/live/ammo_type_live/show.html.heex:26
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr ""

View File

@ -170,7 +170,7 @@ msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery/ammo.ex:407
#: lib/cannery/ammo.ex:535
msgid "Invalid multiplier"
msgstr ""

View File

@ -3,14 +3,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-21 19:45+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"PO-Revision-Date: 2022-05-22 22:52+0000\n"
"Last-Translator: Hannah Winter <konhat@hotmail.es>\n"
"Language-Team: Spanish <https://weblate.bubbletea.dev/projects/cannery/"
"actions/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 3.6.2\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.12.2\n"
## This file is a PO Template file.
##
@ -25,7 +27,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:44
#: lib/cannery_web/live/ammo_group_live/index.html.heex:42
msgid "Add Ammo"
msgstr ""
msgstr "Añadir Munición"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:37
@ -46,30 +48,30 @@ msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:15
#: lib/cannery_web/templates/user_settings/edit.html.heex:44
msgid "Change email"
msgstr ""
msgstr "Cambiar correo electrónico"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/user_settings/edit.html.heex:58
#: lib/cannery_web/templates/user_settings/edit.html.heex:99
msgid "Change password"
msgstr ""
msgstr "Cambiar contraseña"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/invite_live/index.html.heex:17
msgid "Create Invite"
msgstr ""
msgstr "Crear Invitación"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/user_settings/edit.html.heex:142
msgid "Delete User"
msgstr ""
msgstr "Eliminar cuenta de Usuario"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/user_registration/new.html.heex:52
#: lib/cannery_web/templates/user_reset_password/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:45
msgid "Forgot your password?"
msgstr ""
msgstr "¿Has olvidado tu contraseña?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/invite_live/index.html.heex:12
@ -144,7 +146,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/user_reset_password/new.html.heex:16
msgid "Send instructions to reset password"
msgstr ""
msgstr "Enviar instrucciones para reestablecer contraseña"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/show.html.heex:65
@ -167,7 +169,7 @@ msgid "Why not get some ready to shoot?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:151
#: lib/cannery_web/live/ammo_group_live/index.ex:183
#: lib/cannery_web/live/ammo_group_live/show.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:36
msgid "Record shots"

View File

@ -3,14 +3,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-21 19:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"PO-Revision-Date: 2022-05-22 22:52+0000\n"
"Last-Translator: Ed <ed.ylles1997@gmail.com>\n"
"Language-Team: Spanish <https://weblate.bubbletea.dev/projects/cannery/"
"default/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 3.6.2\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.12.2\n"
## This file is a PO Template file.
##
@ -25,6 +27,8 @@ msgstr ""
#: lib/cannery_web/live/home_live.ex:64
msgid "%{name} lets you easily keep an eye on your ammo levels before and after range day"
msgstr ""
"%{name} te permite mantener un ojo en tus niveles de munición antes y "
"después de un día en el campo de tiro"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/home_live.ex:86
@ -50,13 +54,13 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:90
msgid "Ammo type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:87
#: lib/cannery_web/live/ammo_type_live/show.html.heex:100
#: lib/cannery_web/live/ammo_type_live/index.ex:88
#: lib/cannery_web/live/ammo_type_live/show.html.heex:99
msgid "Average Price paid"
msgstr ""
@ -68,7 +72,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:71
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
msgid "Blank"
msgstr ""
@ -80,42 +84,42 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:53
#: lib/cannery_web/live/ammo_type_live/show.html.heex:39
#: lib/cannery_web/live/ammo_type_live/show.html.heex:38
msgid "Bullet core"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:37
msgid "Bullet type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:55
#: lib/cannery_web/live/ammo_type_live/show.html.heex:41
#: lib/cannery_web/live/ammo_type_live/show.html.heex:40
msgid "Caliber"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:54
#: lib/cannery_web/live/ammo_type_live/show.html.heex:40
#: lib/cannery_web/live/ammo_type_live/show.html.heex:39
msgid "Cartridge"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:56
#: lib/cannery_web/live/ammo_type_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:41
msgid "Case material"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:86
#: lib/cannery_web/live/ammo_group_live/index.ex:95
msgid "Container"
msgstr ""
@ -129,18 +133,18 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
msgid "Corrosive"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:82
#: lib/cannery_web/live/ammo_group_live/index.ex:91
msgid "Count"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:29
#: lib/cannery_web/components/ammo_group_card.ex:34
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
msgid "Count:"
msgstr ""
@ -174,7 +178,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:45
#: lib/cannery_web/live/ammo_type_live/show.ex:63
msgid "Edit Ammo type"
msgstr ""
@ -206,14 +210,14 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
msgid "Grains"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
msgid "Incendiary"
msgstr ""
@ -264,7 +268,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:73
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
msgid "Manufacturer"
msgstr ""
@ -318,7 +322,7 @@ msgid "No Ammo Types"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:127
msgid "No ammo for this type"
msgstr ""
@ -348,7 +352,7 @@ msgid "Notes"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:35
#: lib/cannery_web/components/ammo_group_card.ex:40
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
msgid "Notes:"
msgstr ""
@ -361,25 +365,25 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
msgid "Pressure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:83
#: lib/cannery_web/live/ammo_group_live/index.ex:92
msgid "Price paid"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:47
#: lib/cannery_web/components/ammo_group_card.ex:59
msgid "Price paid:"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
msgid "Primer type"
msgstr ""
@ -410,7 +414,7 @@ msgid "Settings"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.ex:44
#: lib/cannery_web/live/ammo_type_live/show.ex:62
msgid "Show Ammo type"
msgstr ""
@ -454,7 +458,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
msgid "Tracer"
msgstr ""
@ -502,7 +506,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:68
#: lib/cannery_web/live/ammo_group_live/index.ex:85
#: lib/cannery_web/live/ammo_group_live/index.ex:94
msgid "Range"
msgstr ""
@ -595,6 +599,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:240
msgid "Move ammo"
msgstr ""
@ -609,12 +614,12 @@ msgid "Shot log"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:125
#: lib/cannery_web/components/ammo_group_card.ex:60
#: lib/cannery_web/live/ammo_group_live/index.ex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:114
#: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#: lib/cannery_web/live/ammo_type_live/index.ex:118
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
msgid "$%{amount}"
msgstr ""
@ -626,35 +631,35 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:57
#: lib/cannery_web/live/ammo_type_live/show.html.heex:43
#: lib/cannery_web/live/ammo_type_live/show.html.heex:42
msgid "Jacket type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/show.html.heex:43
msgid "Muzzle velocity"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:61
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
msgid "Powder grains per charge"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:59
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
msgid "Powder type"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:74
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
msgid "UPC"
msgstr ""
@ -675,19 +680,19 @@ msgid "New password"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:148
#: lib/cannery_web/live/ammo_group_live/index.ex:180
msgid "Stage"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:148
#: lib/cannery_web/live/ammo_group_live/index.ex:180
msgid "Unstage"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
msgid "Firing type"
msgstr ""
@ -703,13 +708,13 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:95
#: lib/cannery_web/live/container_live/show.ex:106
msgid "Edit %{name}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:46
#: lib/cannery_web/live/container_live/show.ex:96
#: lib/cannery_web/live/container_live/show.ex:107
msgid "Edit %{name} tags"
msgstr ""
@ -720,18 +725,18 @@ msgid "Rounds:"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/show.ex:94
#: lib/cannery_web/live/container_live/show.ex:105
msgid "Show %{name}"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:110
#: lib/cannery_web/live/ammo_type_live/index.ex:117
#: lib/cannery_web/live/ammo_type_live/show.html.heex:109
msgid "No cost information"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:84
#: lib/cannery_web/live/ammo_group_live/index.ex:93
msgid "% left"
msgstr ""
@ -761,7 +766,7 @@ msgid "Rounds used"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#: lib/cannery_web/live/ammo_type_live/show.html.heex:74
msgid "Current # of rounds:"
msgstr ""
@ -771,7 +776,7 @@ msgid "Total # of rounds"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:82
msgid "Total rounds shot:"
msgstr ""
@ -817,14 +822,14 @@ msgid "Ammo types"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:87
#: lib/cannery_web/live/ammo_group_live/index.ex:96
msgid "Added on"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:41
#: lib/cannery_web/components/ammo_group_card.ex:46
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:91
#: lib/cannery_web/live/ammo_type_live/show.html.heex:90
msgid "Added on:"
msgstr ""
@ -893,7 +898,7 @@ msgid "Move Ammo"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/container_live/show.html.heex:90
#: lib/cannery_web/live/container_live/show.html.heex:98
msgid "No ammo in this container"
msgstr ""
@ -928,3 +933,30 @@ msgstr ""
#: lib/cannery_web/live/invite_live/form_component.html.heex:28
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:87
msgid "Total # of ammo"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/components/ammo_group_card.ex:68
msgid "Container:"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:119
#: lib/cannery_web/live/container_live/show.html.heex:90
msgid "Show used"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:101
msgid "Used up on"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:52
msgid "Used up on:"
msgstr ""

View File

@ -3,14 +3,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-21 19:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"PO-Revision-Date: 2022-05-22 22:52+0000\n"
"Last-Translator: Ed <ed.ylles1997@gmail.com>\n"
"Language-Team: Spanish <https://weblate.bubbletea.dev/projects/cannery/"
"emails/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 3.6.2\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.12.2\n"
## This file is a PO Template file.
##
@ -24,7 +26,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery/accounts/email.ex:30
msgid "Confirm your %{name} account"
msgstr ""
msgstr "Confirma el %{name} de la cuenta"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/email/confirm_email.html.eex:3
@ -34,7 +36,7 @@ msgstr ""
#: lib/cannery_web/templates/email/update_email.html.eex:3
#: lib/cannery_web/templates/email/update_email.txt.eex:2
msgid "Hi %{email},"
msgstr ""
msgstr "Hola %{email},"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/email/confirm_email.txt.eex:10
@ -60,30 +62,35 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/email/confirm_email.html.eex:9
msgid "Welcome to %{name}!"
msgstr ""
msgstr "¡Bienvenide a %{name}!"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
msgid "Welcome to %{name}%!"
msgstr ""
msgstr "¡Bienvenide a %{name}%!"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/email/update_email.html.eex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:4
msgid "You can change your email by visiting the URL below:"
msgstr ""
"Puede cambiar su correo electrónico visitando el enlace que se muestra a "
"continuación:"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/email/confirm_email.html.eex:14
#: lib/cannery_web/templates/email/confirm_email.txt.eex:6
msgid "You can confirm your account by visiting the URL below:"
msgstr ""
"Puede confirmar su cuenta visitando el enlace que se muestra a continuación:"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/email/reset_password.html.eex:8
#: lib/cannery_web/templates/email/reset_password.txt.eex:4
msgid "You can reset your password by visiting the URL below:"
msgstr ""
"Puede reestablecer su contraseña visitando el enlace que se muestra a "
"continuación:"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/email/confirm_email.html.eex:22

View File

@ -3,14 +3,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-21 19:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"PO-Revision-Date: 2022-05-22 22:52+0000\n"
"Last-Translator: Ed <ed.ylles1997@gmail.com>\n"
"Language-Team: Spanish <https://weblate.bubbletea.dev/projects/cannery/"
"errors/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 3.6.2\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.12.2\n"
## This file is a PO Template file.
##
@ -24,13 +26,13 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery/containers.ex:140
msgid "Container must be empty before deleting"
msgstr ""
msgstr "el Contenedor debe estar vació antes de borrarlo"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:69
#: lib/cannery_web/live/container_live/show.ex:71
msgid "Could not delete %{name}: %{error}"
msgstr ""
msgstr "No se pudo eliminar %{name}: %{error}"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:57
@ -45,7 +47,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/error/error.html.heex:8
msgid "Error"
msgstr ""
msgstr "Error"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/error/error.html.heex:28
@ -75,11 +77,14 @@ msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:119
msgid "Oops, something went wrong! Please check the errors below."
msgstr ""
"¡Ups, algo ha ido mal! Por favor, compruebe los errores que se muestran a "
"continuación."
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_reset_password_controller.ex:63
msgid "Reset password link is invalid or it has expired."
msgstr ""
"El enlace de reestablecimiento de la contraseña es inválido o ha caducado."
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_registration_controller.ex:25
@ -181,7 +186,7 @@ msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery/ammo.ex:407
#: lib/cannery/ammo.ex:535
msgid "Invalid multiplier"
msgstr ""

View File

@ -3,14 +3,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-21 19:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"PO-Revision-Date: 2022-06-06 19:05+0000\n"
"Last-Translator: Ed <ed.ylles1997@gmail.com>\n"
"Language-Team: Spanish <https://weblate.bubbletea.dev/projects/cannery/"
"prompts/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 3.6.2\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.12.2\n"
## This file is a PO Template file.
##
@ -27,37 +29,37 @@ msgstr ""
#: lib/cannery_web/live/invite_live/form_component.ex:80
#: lib/cannery_web/live/tag_live/form_component.ex:126
msgid "%{name} created successfully"
msgstr ""
msgstr "%{name} creado exitosamente"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:41
#: lib/cannery_web/live/ammo_type_live/show.ex:38
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
msgid "%{name} deleted succesfully"
msgstr ""
msgstr "%{name} borrado exitosamente"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/invite_live/index.ex:109
msgid "%{name} disabled succesfully"
msgstr ""
msgstr "%{name} desactivado exitosamente"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/invite_live/index.ex:87
msgid "%{name} enabled succesfully"
msgstr ""
msgstr "%{name} activado exitosamente"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:62
#: lib/cannery_web/live/container_live/show.ex:61
msgid "%{name} has been deleted"
msgstr ""
msgstr "%{name} ha sido borrado"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/invite_live/index.ex:67
msgid "%{name} updated succesfully"
msgstr ""
msgstr "%{name} actualizado exitosamente"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.ex:67
@ -65,96 +67,102 @@ msgstr ""
#: lib/cannery_web/live/invite_live/form_component.ex:62
#: lib/cannery_web/live/tag_live/form_component.ex:108
msgid "%{name} updated successfully"
msgstr ""
msgstr "%{name} actualizado exitosamente"
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_settings_controller.ex:29
msgid "A link to confirm your email change has been sent to the new address."
msgstr ""
"Un enlace para confirmar el correo electrónico ha sido enviado a la nueva "
"dirección."
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:56
msgid "Ammo group deleted succesfully"
msgstr ""
msgstr "Grupo de Munición borrado exitosamente"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/invite_live/index.html.heex:102
#: lib/cannery_web/live/invite_live/index.html.heex:131
msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
msgstr "Está seguro que desea eliminar %{email}? Esta acción es permanente!"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.html.heex:46
#: lib/cannery_web/live/container_live/show.html.heex:49
#: lib/cannery_web/live/tag_live/index.html.heex:38
msgid "Are you sure you want to delete %{name}?"
msgstr ""
msgstr "Está seguro que desea eliminar %{name}?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/invite_live/index.html.heex:49
msgid "Are you sure you want to delete the invite for %{name}?"
msgstr ""
msgstr "Está seguro que quiere eliminar la invitación para %{name}?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:184
#: lib/cannery_web/live/ammo_group_live/index.ex:216
#: lib/cannery_web/live/ammo_group_live/show.html.heex:71
msgid "Are you sure you want to delete this ammo?"
msgstr ""
msgstr "Está seguro que desea eliminar esta munición?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/templates/user_settings/edit.html.heex:146
msgid "Are you sure you want to delete your account?"
msgstr ""
msgstr "Está seguro que desea eliminar su cuenta?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:90
msgid "Are you sure you want to log out?"
msgstr ""
msgstr "Está seguro que desea cerrar sesión?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/invite_live/index.html.heex:74
msgid "Are you sure you want to make %{name} unlimited?"
msgstr ""
msgstr "Está seguro que desea hacer %{name} ilimitado?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_settings_controller.ex:77
msgid "Email changed successfully."
msgstr ""
msgstr "Correo electrónico cambiado exitosamente."
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_confirmation_controller.ex:23
msgid "If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
msgstr ""
"Si su correo electrónico está en nuestro sistema y no ha sido confirmado "
"aun, recibirá un correo con instrucciones en breve."
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_reset_password_controller.ex:24
msgid "If your email is in our system, you will receive instructions to reset your password shortly."
msgstr ""
"Si su correo electrónico está en nuestro sistema, recibirá instrucciones "
"para reiniciar la contraseña en breve."
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_session_controller.ex:23
msgid "Logged out successfully."
msgstr ""
msgstr "Sesión cerrada exitosamente."
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_reset_password_controller.ex:46
msgid "Password reset successfully."
msgstr ""
msgstr "Contraseña reiniciada exitosamente."
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_settings_controller.ex:49
msgid "Password updated successfully."
msgstr ""
msgstr "Contraseña cambiada exitosamente."
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_registration_controller.ex:74
msgid "Please check your email to verify your account"
msgstr ""
msgstr "Por favor chequea el correo para verificar tu cuenta"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/home_live.ex:104
msgid "Register to setup %{name}"
msgstr ""
msgstr "Regístrese para configurar %{name}"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/add_shot_group_component.html.heex:48
@ -165,42 +173,43 @@ msgstr ""
#: lib/cannery_web/live/range_live/form_component.html.heex:42
#: lib/cannery_web/live/tag_live/form_component.ex:93
msgid "Saving..."
msgstr ""
msgstr "Guardando..."
#, elixir-autogen, elixir-format
#: lib/cannery_web/controllers/user_settings_controller.ex:95
msgid "Your account has been deleted"
msgstr ""
msgstr "Su cuenta ha sido eliminada"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:16
msgid "Are you sure you want to remove the %{tag_name} tag from %{container_name}?"
msgstr ""
"Está seguro que desea remover la etiqueta %{tag_name} de %{container_name}?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/edit_tags_component.ex:36
msgid "%{name} added successfully"
msgstr ""
msgstr "%{name} añadido exitosamente"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/show.ex:37
msgid "%{tag_name} has been removed from %{container_name}"
msgstr ""
msgstr "se ha removido %{tag_name} de %{container_name}"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:54
msgid "Adding..."
msgstr ""
msgstr "Añadiendo..."
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/add_shot_group_component.ex:56
msgid "Shots recorded successfully"
msgstr ""
msgstr "Tiros registrados exitosamente"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/range_live/index.html.heex:29
msgid "Are you sure you want to unstage this ammo?"
msgstr ""
msgstr "Está seguro que desea desmontar esta munición?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/show.ex:130
@ -283,7 +292,7 @@ msgstr[0] ""
msgstr[1] ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:140
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
#: lib/cannery_web/live/ammo_type_live/index.ex:156
#: lib/cannery_web/live/ammo_type_live/show.html.heex:26
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr ""

View File

@ -169,7 +169,7 @@ msgid "Why not get some ready to shoot?"
msgstr "Pourquoi pas en préparer pour tirer?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:151
#: lib/cannery_web/live/ammo_group_live/index.ex:183
#: lib/cannery_web/live/ammo_group_live/show.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:36
msgid "Record shots"

View File

@ -54,13 +54,13 @@ msgstr "Munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
#: lib/cannery_web/live/ammo_group_live/index.ex:81
#: lib/cannery_web/live/ammo_group_live/index.ex:90
msgid "Ammo type"
msgstr "Type de munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:87
#: lib/cannery_web/live/ammo_type_live/show.html.heex:100
#: lib/cannery_web/live/ammo_type_live/index.ex:88
#: lib/cannery_web/live/ammo_type_live/show.html.heex:99
msgid "Average Price paid"
msgstr "Prix acheté moyen"
@ -72,7 +72,7 @@ msgstr "Couleur de fond"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:140
#: lib/cannery_web/live/ammo_type_live/index.ex:71
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
msgid "Blank"
msgstr "Vide"
@ -84,42 +84,42 @@ msgstr "Cuivre"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:53
#: lib/cannery_web/live/ammo_type_live/show.html.heex:39
#: lib/cannery_web/live/ammo_type_live/show.html.heex:38
msgid "Bullet core"
msgstr "Noyau de balle"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:37
#: lib/cannery_web/live/ammo_type_live/index.ex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:37
msgid "Bullet type"
msgstr "Type de balle"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:58
#: lib/cannery_web/live/ammo_type_live/index.ex:55
#: lib/cannery_web/live/ammo_type_live/show.html.heex:41
#: lib/cannery_web/live/ammo_type_live/show.html.heex:40
msgid "Caliber"
msgstr "Calibre"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:51
#: lib/cannery_web/live/ammo_type_live/index.ex:54
#: lib/cannery_web/live/ammo_type_live/show.html.heex:40
#: lib/cannery_web/live/ammo_type_live/show.html.heex:39
msgid "Cartridge"
msgstr "Cartouche"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:65
#: lib/cannery_web/live/ammo_type_live/index.ex:56
#: lib/cannery_web/live/ammo_type_live/show.html.heex:42
#: lib/cannery_web/live/ammo_type_live/show.html.heex:41
msgid "Case material"
msgstr "Matériau de la caisse"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:67
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:86
#: lib/cannery_web/live/ammo_group_live/index.ex:95
msgid "Container"
msgstr "Conteneur"
@ -133,18 +133,18 @@ msgstr "Conteneurs"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:144
#: lib/cannery_web/live/ammo_type_live/index.ex:72
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
#: lib/cannery_web/live/ammo_type_live/show.html.heex:53
msgid "Corrosive"
msgstr "Corrosive"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
#: lib/cannery_web/live/ammo_group_live/index.ex:82
#: lib/cannery_web/live/ammo_group_live/index.ex:91
msgid "Count"
msgstr "Quantité"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:29
#: lib/cannery_web/components/ammo_group_card.ex:34
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
msgid "Count:"
msgstr "Quantité:"
@ -178,7 +178,7 @@ msgstr "Éditer le groupe de munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:23
#: lib/cannery_web/live/ammo_type_live/show.ex:45
#: lib/cannery_web/live/ammo_type_live/show.ex:63
msgid "Edit Ammo type"
msgstr "Éditer le type de munition"
@ -210,14 +210,14 @@ msgstr "FMJ"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:103
#: lib/cannery_web/live/ammo_type_live/index.ex:65
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
msgid "Grains"
msgstr "Graines"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:136
#: lib/cannery_web/live/ammo_type_live/index.ex:70
#: lib/cannery_web/live/ammo_type_live/show.html.heex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
msgid "Incendiary"
msgstr "Incendiaire"
@ -268,7 +268,7 @@ msgstr "Chargeur, lame-chargeur, boite de munition, etc."
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:148
#: lib/cannery_web/live/ammo_type_live/index.ex:73
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
#: lib/cannery_web/live/ammo_type_live/show.html.heex:54
msgid "Manufacturer"
msgstr "Fabricant"
@ -322,7 +322,7 @@ msgid "No Ammo Types"
msgstr "Aucun type de munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:127
msgid "No ammo for this type"
msgstr "Aucune munition pour ce type"
@ -352,7 +352,7 @@ msgid "Notes"
msgstr "Notes"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:35
#: lib/cannery_web/components/ammo_group_card.ex:40
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
msgid "Notes:"
msgstr "Notes:"
@ -365,25 +365,25 @@ msgstr "Sur létagère"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:111
#: lib/cannery_web/live/ammo_type_live/index.ex:66
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
#: lib/cannery_web/live/ammo_type_live/show.html.heex:47
msgid "Pressure"
msgstr "Pression"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
#: lib/cannery_web/live/ammo_group_live/index.ex:83
#: lib/cannery_web/live/ammo_group_live/index.ex:92
msgid "Price paid"
msgstr "Prix payé"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:47
#: lib/cannery_web/components/ammo_group_card.ex:59
msgid "Price paid:"
msgstr "Prix payé:"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:118
#: lib/cannery_web/live/ammo_type_live/index.ex:67
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
#: lib/cannery_web/live/ammo_type_live/show.html.heex:48
msgid "Primer type"
msgstr "Type damorce"
@ -416,7 +416,7 @@ msgid "Settings"
msgstr "Paramètres"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.ex:44
#: lib/cannery_web/live/ammo_type_live/show.ex:62
msgid "Show Ammo type"
msgstr "Montrer le type de munition"
@ -462,7 +462,7 @@ msgstr "Le site web de suivi darme à feux auto-hébergé"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:132
#: lib/cannery_web/live/ammo_type_live/index.ex:69
#: lib/cannery_web/live/ammo_type_live/show.html.heex:51
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
msgid "Tracer"
msgstr "Traceuse"
@ -510,7 +510,7 @@ msgstr "Aucun tag pour ce conteneur"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/topbar.ex:68
#: lib/cannery_web/live/ammo_group_live/index.ex:85
#: lib/cannery_web/live/ammo_group_live/index.ex:94
msgid "Range"
msgstr "Portée"
@ -603,6 +603,7 @@ msgstr "Déplacer le groupe de munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/move_ammo_group_component.ex:80
#: lib/cannery_web/live/ammo_group_live/index.ex:240
msgid "Move ammo"
msgstr "Déplacer munition"
@ -617,12 +618,12 @@ msgid "Shot log"
msgstr "Évènements de tir"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:48
#: lib/cannery_web/live/ammo_group_live/index.ex:125
#: lib/cannery_web/components/ammo_group_card.ex:60
#: lib/cannery_web/live/ammo_group_live/index.ex:142
#: lib/cannery_web/live/ammo_group_live/show.html.heex:37
#: lib/cannery_web/live/ammo_group_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/index.ex:114
#: lib/cannery_web/live/ammo_type_live/show.html.heex:104
#: lib/cannery_web/live/ammo_type_live/index.ex:118
#: lib/cannery_web/live/ammo_type_live/show.html.heex:103
msgid "$%{amount}"
msgstr "%{amount}$"
@ -634,35 +635,35 @@ msgstr "Bi-métal"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:72
#: lib/cannery_web/live/ammo_type_live/index.ex:57
#: lib/cannery_web/live/ammo_type_live/show.html.heex:43
#: lib/cannery_web/live/ammo_type_live/show.html.heex:42
msgid "Jacket type"
msgstr "Type de douille"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:79
#: lib/cannery_web/live/ammo_type_live/index.ex:58
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
#: lib/cannery_web/live/ammo_type_live/show.html.heex:43
msgid "Muzzle velocity"
msgstr "Vélocité du canon"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:93
#: lib/cannery_web/live/ammo_type_live/index.ex:61
#: lib/cannery_web/live/ammo_type_live/show.html.heex:46
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
msgid "Powder grains per charge"
msgstr "Graines de poudre par charge"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:89
#: lib/cannery_web/live/ammo_type_live/index.ex:59
#: lib/cannery_web/live/ammo_type_live/show.html.heex:45
#: lib/cannery_web/live/ammo_type_live/show.html.heex:44
msgid "Powder type"
msgstr "Type de poudre"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:152
#: lib/cannery_web/live/ammo_type_live/index.ex:74
#: lib/cannery_web/live/ammo_type_live/show.html.heex:56
#: lib/cannery_web/live/ammo_type_live/show.html.heex:55
msgid "UPC"
msgstr "UPC"
@ -683,19 +684,19 @@ msgid "New password"
msgstr "Nouveau mot de passe"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:148
#: lib/cannery_web/live/ammo_group_live/index.ex:180
msgid "Stage"
msgstr "Sélectionné"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:148
#: lib/cannery_web/live/ammo_group_live/index.ex:180
msgid "Unstage"
msgstr "Désélectionner"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:125
#: lib/cannery_web/live/ammo_type_live/index.ex:68
#: lib/cannery_web/live/ammo_type_live/show.html.heex:50
#: lib/cannery_web/live/ammo_type_live/show.html.heex:49
msgid "Firing type"
msgstr "Type dallumage"
@ -711,13 +712,13 @@ msgstr "Chargement en cours…"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:27
#: lib/cannery_web/live/container_live/show.ex:95
#: lib/cannery_web/live/container_live/show.ex:106
msgid "Edit %{name}"
msgstr "Éditer %{name}"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/index.ex:46
#: lib/cannery_web/live/container_live/show.ex:96
#: lib/cannery_web/live/container_live/show.ex:107
msgid "Edit %{name} tags"
msgstr "Éditer les tags de %{name}"
@ -728,18 +729,18 @@ msgid "Rounds:"
msgstr "Cartouches:"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/container_live/show.ex:94
#: lib/cannery_web/live/container_live/show.ex:105
msgid "Show %{name}"
msgstr "Montrer %{name}"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:113
#: lib/cannery_web/live/ammo_type_live/show.html.heex:110
#: lib/cannery_web/live/ammo_type_live/index.ex:117
#: lib/cannery_web/live/ammo_type_live/show.html.heex:109
msgid "No cost information"
msgstr "Aucune information de prix"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:84
#: lib/cannery_web/live/ammo_group_live/index.ex:93
msgid "% left"
msgstr "%restante"
@ -769,7 +770,7 @@ msgid "Rounds used"
msgstr "Cartouches utilisées"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:75
#: lib/cannery_web/live/ammo_type_live/show.html.heex:74
msgid "Current # of rounds:"
msgstr "Quantité actuelle de cartouches:"
@ -779,7 +780,7 @@ msgid "Total # of rounds"
msgstr "Quantité de cartouches"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/show.html.heex:83
#: lib/cannery_web/live/ammo_type_live/show.html.heex:82
msgid "Total rounds shot:"
msgstr "Nombre totale de cartouches tirées:"
@ -825,14 +826,14 @@ msgid "Ammo types"
msgstr "Types de munition"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:87
#: lib/cannery_web/live/ammo_group_live/index.ex:96
msgid "Added on"
msgstr "Ajouté le"
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:41
#: lib/cannery_web/components/ammo_group_card.ex:46
#: lib/cannery_web/live/ammo_group_live/show.html.heex:30
#: lib/cannery_web/live/ammo_type_live/show.html.heex:91
#: lib/cannery_web/live/ammo_type_live/show.html.heex:90
msgid "Added on:"
msgstr "Ajouté le:"
@ -901,7 +902,7 @@ msgid "Move Ammo"
msgstr "Déplacer munition"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/container_live/show.html.heex:90
#: lib/cannery_web/live/container_live/show.html.heex:98
msgid "No ammo in this container"
msgstr "Aucun groupe de munition pour ce conteneur"
@ -936,3 +937,30 @@ msgstr ""
#: lib/cannery_web/live/invite_live/form_component.html.heex:28
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:87
msgid "Total # of ammo"
msgstr "Quantité de cartouches"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/components/ammo_group_card.ex:68
msgid "Container:"
msgstr "Conteneur"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.html.heex:52
#: lib/cannery_web/live/ammo_type_live/show.html.heex:119
#: lib/cannery_web/live/container_live/show.html.heex:90
msgid "Show used"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:101
msgid "Used up on"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/components/ammo_group_card.ex:52
msgid "Used up on:"
msgstr ""

View File

@ -187,7 +187,7 @@ msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}
msgstr "Nombre de copies invalide, doit être 1 et %{max}. Été %{multiplier}"
#, elixir-autogen, elixir-format
#: lib/cannery/ammo.ex:407
#: lib/cannery/ammo.ex:535
msgid "Invalid multiplier"
msgstr ""

View File

@ -33,7 +33,7 @@ msgstr "%{name} créé· avec succès"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:41
#: lib/cannery_web/live/ammo_type_live/show.ex:38
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
@ -101,7 +101,7 @@ msgid "Are you sure you want to delete the invite for %{name}?"
msgstr "Êtes-vous certain·e de supprimer linvitation pour %{name}?"
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:184
#: lib/cannery_web/live/ammo_group_live/index.ex:216
#: lib/cannery_web/live/ammo_group_live/show.html.heex:71
msgid "Are you sure you want to delete this ammo?"
msgstr "Êtes-vous certain·e de supprimer cette munition?"
@ -294,7 +294,7 @@ msgstr[0] "Groupe de munition mis à jour avec succès"
msgstr[1] "Groupe de munition mis à jour avec succès"
#, elixir-autogen, elixir-format, fuzzy
#: lib/cannery_web/live/ammo_type_live/index.ex:140
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
#: lib/cannery_web/live/ammo_type_live/index.ex:156
#: lib/cannery_web/live/ammo_type_live/show.html.heex:26
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr "Êtes-vous certain·e de supprimer %{name}?"

View File

@ -20,7 +20,7 @@ msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:41
#: lib/cannery_web/live/ammo_type_live/show.ex:38
#: lib/cannery_web/live/ammo_type_live/show.ex:28
#: lib/cannery_web/live/invite_live/index.ex:53
#: lib/cannery_web/live/invite_live/index.ex:133
#: lib/cannery_web/live/tag_live/index.ex:38
@ -85,7 +85,7 @@ msgid "Are you sure you want to delete the invite for %{name}?"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_group_live/index.ex:184
#: lib/cannery_web/live/ammo_group_live/index.ex:216
#: lib/cannery_web/live/ammo_group_live/show.html.heex:71
msgid "Are you sure you want to delete this ammo?"
msgstr ""
@ -272,7 +272,7 @@ msgstr[0] ""
msgstr[1] ""
#, elixir-autogen, elixir-format
#: lib/cannery_web/live/ammo_type_live/index.ex:140
#: lib/cannery_web/live/ammo_type_live/show.html.heex:27
#: lib/cannery_web/live/ammo_type_live/index.ex:156
#: lib/cannery_web/live/ammo_type_live/show.html.heex:26
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr ""