Compare commits
24 Commits
0.4.0
...
119f2af6bb
Author | SHA1 | Date | |
---|---|---|---|
119f2af6bb | |||
9db6b2c316 | |||
22281486e0 | |||
1b7546aede | |||
e153893a5b | |||
2f7c17aad3 | |||
664c65d136 | |||
ef76eb002d | |||
5b40ac4137 | |||
ed20cdd858 | |||
1e0ec82f3e | |||
d07ac801aa | |||
420e7c2d71 | |||
40877d1ac0 | |||
1dd30e6a5b | |||
eedaf33e25 | |||
b0a100cd6c | |||
6455e2710d | |||
6523b28aa2 | |||
bad1a23dfe | |||
e0ddefe1d7 | |||
5d6ecba9f7 | |||
a2d1ff9b89 | |||
34288a0070 |
14
.credo.exs
14
.credo.exs
@ -157,17 +157,17 @@
|
|||||||
#
|
#
|
||||||
# Controversial and experimental checks (opt-in, just replace `false` with `[]`)
|
# Controversial and experimental checks (opt-in, just replace `false` with `[]`)
|
||||||
#
|
#
|
||||||
{Credo.Check.Consistency.MultiAliasImportRequireUse, false},
|
{Credo.Check.Consistency.MultiAliasImportRequireUse, []},
|
||||||
{Credo.Check.Consistency.UnusedVariableNames, false},
|
{Credo.Check.Consistency.UnusedVariableNames, [force: :meaningful]},
|
||||||
{Credo.Check.Design.DuplicatedCode, false},
|
{Credo.Check.Design.DuplicatedCode, false},
|
||||||
{Credo.Check.Readability.AliasAs, false},
|
{Credo.Check.Readability.AliasAs, false},
|
||||||
{Credo.Check.Readability.BlockPipe, false},
|
{Credo.Check.Readability.BlockPipe, false},
|
||||||
{Credo.Check.Readability.ImplTrue, false},
|
{Credo.Check.Readability.ImplTrue, false},
|
||||||
{Credo.Check.Readability.MultiAlias, false},
|
{Credo.Check.Readability.MultiAlias, false},
|
||||||
{Credo.Check.Readability.SeparateAliasRequire, false},
|
{Credo.Check.Readability.SeparateAliasRequire, []},
|
||||||
{Credo.Check.Readability.SinglePipe, false},
|
{Credo.Check.Readability.SinglePipe, false},
|
||||||
{Credo.Check.Readability.Specs, false},
|
{Credo.Check.Readability.Specs, false},
|
||||||
{Credo.Check.Readability.StrictModuleLayout, false},
|
{Credo.Check.Readability.StrictModuleLayout, []},
|
||||||
{Credo.Check.Readability.WithCustomTaggedTuple, false},
|
{Credo.Check.Readability.WithCustomTaggedTuple, false},
|
||||||
{Credo.Check.Refactor.ABCSize, false},
|
{Credo.Check.Refactor.ABCSize, false},
|
||||||
{Credo.Check.Refactor.AppendSingleItem, false},
|
{Credo.Check.Refactor.AppendSingleItem, false},
|
||||||
@ -176,9 +176,9 @@
|
|||||||
{Credo.Check.Refactor.NegatedIsNil, false},
|
{Credo.Check.Refactor.NegatedIsNil, false},
|
||||||
{Credo.Check.Refactor.PipeChainStart, false},
|
{Credo.Check.Refactor.PipeChainStart, false},
|
||||||
{Credo.Check.Refactor.VariableRebinding, false},
|
{Credo.Check.Refactor.VariableRebinding, false},
|
||||||
{Credo.Check.Warning.LeakyEnvironment, false},
|
{Credo.Check.Warning.LeakyEnvironment, []},
|
||||||
{Credo.Check.Warning.MapGetUnsafePass, false},
|
{Credo.Check.Warning.MapGetUnsafePass, []},
|
||||||
{Credo.Check.Warning.UnsafeToAtom, false}
|
{Credo.Check.Warning.UnsafeToAtom, []}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Custom checks can be created using `mix credo.gen.check`.
|
# Custom checks can be created using `mix credo.gen.check`.
|
||||||
|
@ -77,7 +77,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- name: cache
|
- name: cache
|
||||||
host:
|
host:
|
||||||
path: /tmp/drone-cache
|
path: /run/media/default/ssdsrv/gitea/drone-cache
|
||||||
- name: docker_sock
|
- name: docker_sock
|
||||||
host:
|
host:
|
||||||
path: /var/run/docker.sock
|
path: /var/run/docker.sock
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
# v0.4.1
|
||||||
|
- Fix button and tag text wrapping
|
||||||
|
- Code quality fixes
|
||||||
|
|
||||||
# v0.4.0
|
# v0.4.0
|
||||||
- Make tables sortable
|
- Make tables sortable
|
||||||
- Add link to changelog from version number
|
- Add link to changelog from version number
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
|
@apply inline-block break-all min-w-4;
|
||||||
@apply focus:outline-none px-4 py-2 rounded-lg;
|
@apply focus:outline-none px-4 py-2 rounded-lg;
|
||||||
@apply shadow-sm focus:shadow-lg;
|
@apply shadow-sm focus:shadow-lg;
|
||||||
@apply transition-all duration-300 ease-in-out;
|
@apply transition-all duration-300 ease-in-out;
|
||||||
@ -51,6 +52,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.link {
|
.link {
|
||||||
|
@apply inline-block break-all min-w-4;
|
||||||
@apply hover:underline;
|
@apply hover:underline;
|
||||||
@apply transition-colors duration-500 ease-in-out;
|
@apply transition-colors duration-500 ease-in-out;
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,20 @@ module.exports = {
|
|||||||
128: '32rem',
|
128: '32rem',
|
||||||
192: '48rem',
|
192: '48rem',
|
||||||
256: '64rem'
|
256: '64rem'
|
||||||
|
},
|
||||||
|
minWidth: {
|
||||||
|
4: '1rem',
|
||||||
|
8: '2rem',
|
||||||
|
12: '3rem',
|
||||||
|
16: '4rem',
|
||||||
|
20: '8rem'
|
||||||
|
},
|
||||||
|
maxWidth: {
|
||||||
|
4: '1rem',
|
||||||
|
8: '2rem',
|
||||||
|
12: '3rem',
|
||||||
|
16: '4rem',
|
||||||
|
20: '8rem'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -196,7 +196,7 @@ defmodule Cannery.Accounts do
|
|||||||
{:ok, _} <- Repo.transaction(user_email_multi(user, email, context)) do
|
{:ok, _} <- Repo.transaction(user_email_multi(user, email, context)) do
|
||||||
:ok
|
:ok
|
||||||
else
|
else
|
||||||
_ -> :error
|
_error_tuple -> :error
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -265,7 +265,7 @@ defmodule Cannery.Accounts do
|
|||||||
|> Repo.transaction()
|
|> Repo.transaction()
|
||||||
|> case do
|
|> case do
|
||||||
{:ok, %{user: user}} -> {:ok, user}
|
{:ok, %{user: user}} -> {:ok, user}
|
||||||
{:error, :user, changeset, _} -> {:error, changeset}
|
{:error, :user, changeset, _changes_so_far} -> {:error, changeset}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -372,7 +372,7 @@ defmodule Cannery.Accounts do
|
|||||||
{:ok, %{user: user}} <- Repo.transaction(confirm_user_multi(user)) do
|
{:ok, %{user: user}} <- Repo.transaction(confirm_user_multi(user)) do
|
||||||
{:ok, user}
|
{:ok, user}
|
||||||
else
|
else
|
||||||
_ -> :error
|
_error_tuple -> :error
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -420,7 +420,7 @@ defmodule Cannery.Accounts do
|
|||||||
%User{} = user <- Repo.one(query) do
|
%User{} = user <- Repo.one(query) do
|
||||||
user
|
user
|
||||||
else
|
else
|
||||||
_ -> nil
|
_error_tuple -> nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -444,7 +444,7 @@ defmodule Cannery.Accounts do
|
|||||||
|> Repo.transaction()
|
|> Repo.transaction()
|
||||||
|> case do
|
|> case do
|
||||||
{:ok, %{user: user}} -> {:ok, user}
|
{:ok, %{user: user}} -> {:ok, user}
|
||||||
{:error, :user, changeset, _} -> {:error, changeset}
|
{:error, :user, changeset, _changes_so_far} -> {:error, changeset}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -171,7 +171,7 @@ defmodule Cannery.Accounts.User do
|
|||||||
Bcrypt.verify_pass(password, hashed_password)
|
Bcrypt.verify_pass(password, hashed_password)
|
||||||
end
|
end
|
||||||
|
|
||||||
def valid_password?(_, _) do
|
def valid_password?(_invalid_user, _invalid_password) do
|
||||||
Bcrypt.no_user_verify()
|
Bcrypt.no_user_verify()
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
@ -308,7 +308,7 @@ defmodule Cannery.Ammo do
|
|||||||
def get_used_count(%AmmoGroup{} = ammo_group) do
|
def get_used_count(%AmmoGroup{} = ammo_group) do
|
||||||
ammo_group
|
ammo_group
|
||||||
|> Repo.preload(:shot_groups)
|
|> Repo.preload(:shot_groups)
|
||||||
|> Map.get(:shot_groups)
|
|> Map.fetch!(:shot_groups)
|
||||||
|> Enum.map(fn %{count: count} -> count end)
|
|> Enum.map(fn %{count: count} -> count end)
|
||||||
|> Enum.sum()
|
|> Enum.sum()
|
||||||
end
|
end
|
||||||
|
@ -215,7 +215,7 @@ defmodule Cannery.Containers do
|
|||||||
def get_container_rounds!(%Container{} = container) do
|
def get_container_rounds!(%Container{} = container) do
|
||||||
container
|
container
|
||||||
|> Repo.preload(:ammo_groups)
|
|> Repo.preload(:ammo_groups)
|
||||||
|> Map.get(:ammo_groups)
|
|> Map.fetch!(:ammo_groups)
|
||||||
|> Enum.map(fn %{count: count} -> count end)
|
|> Enum.map(fn %{count: count} -> count end)
|
||||||
|> Enum.sum()
|
|> Enum.sum()
|
||||||
end
|
end
|
||||||
|
@ -9,7 +9,7 @@ defmodule Cannery.Release do
|
|||||||
|
|
||||||
def rollback(repo, version) do
|
def rollback(repo, version) do
|
||||||
load_app()
|
load_app()
|
||||||
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
|
{:ok, _fun, _opts} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
|
||||||
end
|
end
|
||||||
|
|
||||||
defp load_app do
|
defp load_app do
|
||||||
@ -20,7 +20,7 @@ defmodule Cannery.Release do
|
|||||||
load_app()
|
load_app()
|
||||||
|
|
||||||
for repo <- Application.fetch_env!(@app, :ecto_repos) do
|
for repo <- Application.fetch_env!(@app, :ecto_repos) do
|
||||||
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
|
{:ok, _fun, _opts} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -6,11 +6,11 @@ defmodule Cannery.Repo.Migrator do
|
|||||||
use GenServer
|
use GenServer
|
||||||
require Logger
|
require Logger
|
||||||
|
|
||||||
def start_link(_) do
|
def start_link(_opts) do
|
||||||
GenServer.start_link(__MODULE__, [], [])
|
GenServer.start_link(__MODULE__, [], [])
|
||||||
end
|
end
|
||||||
|
|
||||||
def init(_) do
|
def init(_opts) do
|
||||||
migrate!()
|
migrate!()
|
||||||
{:ok, nil}
|
{:ok, nil}
|
||||||
end
|
end
|
||||||
|
@ -71,6 +71,7 @@ defmodule CanneryWeb do
|
|||||||
quote do
|
quote do
|
||||||
use Phoenix.Router
|
use Phoenix.Router
|
||||||
|
|
||||||
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
import Plug.Conn
|
import Plug.Conn
|
||||||
import Phoenix.Controller
|
import Phoenix.Controller
|
||||||
import Phoenix.LiveView.Router
|
import Phoenix.LiveView.Router
|
||||||
@ -79,7 +80,9 @@ defmodule CanneryWeb do
|
|||||||
|
|
||||||
def channel do
|
def channel do
|
||||||
quote do
|
quote do
|
||||||
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
use Phoenix.Channel
|
use Phoenix.Channel
|
||||||
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
import CanneryWeb.Gettext
|
import CanneryWeb.Gettext
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -87,14 +90,18 @@ defmodule CanneryWeb do
|
|||||||
defp view_helpers do
|
defp view_helpers do
|
||||||
quote do
|
quote do
|
||||||
# Use all HTML functionality (forms, tags, etc)
|
# Use all HTML functionality (forms, tags, etc)
|
||||||
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
use Phoenix.HTML
|
use Phoenix.HTML
|
||||||
|
|
||||||
# Import LiveView and .heex helpers (live_render, live_patch, <.form>, etc)
|
# Import LiveView and .heex helpers (live_render, live_patch, <.form>, etc)
|
||||||
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
import Phoenix.LiveView.Helpers
|
import Phoenix.LiveView.Helpers
|
||||||
|
|
||||||
# Import basic rendering functionality (render, render_layout, etc)
|
# Import basic rendering functionality (render, render_layout, etc)
|
||||||
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
import Phoenix.View
|
import Phoenix.View
|
||||||
|
|
||||||
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
import CanneryWeb.{ErrorHelpers, Gettext, LiveHelpers, ViewHelpers}
|
import CanneryWeb.{ErrorHelpers, Gettext, LiveHelpers, ViewHelpers}
|
||||||
alias CanneryWeb.Router.Helpers, as: Routes
|
alias CanneryWeb.Router.Helpers, as: Routes
|
||||||
end
|
end
|
||||||
|
@ -14,11 +14,11 @@ defmodule CanneryWeb.Components.ContainerCard do
|
|||||||
~H"""
|
~H"""
|
||||||
<div
|
<div
|
||||||
id={"container-#{@container.id}"}
|
id={"container-#{@container.id}"}
|
||||||
class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center space-y-4
|
class="overflow-hidden max-w-full mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center space-y-4
|
||||||
border border-gray-400 rounded-lg shadow-lg hover:shadow-md
|
border border-gray-400 rounded-lg shadow-lg hover:shadow-md
|
||||||
transition-all duration-300 ease-in-out"
|
transition-all duration-300 ease-in-out"
|
||||||
>
|
>
|
||||||
<div class="mb-4 flex flex-col justify-center items-center space-y-2">
|
<div class="max-w-full mb-4 flex flex-col justify-center items-center space-y-2">
|
||||||
<%= live_redirect to: Routes.container_show_path(Endpoint, :show, @container),
|
<%= live_redirect to: Routes.container_show_path(Endpoint, :show, @container),
|
||||||
class: "link" do %>
|
class: "link" do %>
|
||||||
<h1 class="px-4 py-2 rounded-lg title text-xl">
|
<h1 class="px-4 py-2 rounded-lg title text-xl">
|
||||||
|
@ -22,7 +22,7 @@ defmodule CanneryWeb.Components.TagCard do
|
|||||||
def simple_tag_card(assigns) do
|
def simple_tag_card(assigns) do
|
||||||
~H"""
|
~H"""
|
||||||
<h1
|
<h1
|
||||||
class="mx-2 my-1 px-4 py-2 rounded-lg title text-xl"
|
class="inline-block break-all mx-2 my-1 px-4 py-2 rounded-lg title text-xl"
|
||||||
style={"color: #{@tag.text_color}; background-color: #{@tag.bg_color}"}
|
style={"color: #{@tag.text_color}; background-color: #{@tag.bg_color}"}
|
||||||
>
|
>
|
||||||
<%= @tag.name %>
|
<%= @tag.name %>
|
||||||
|
@ -121,9 +121,10 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
|
|||||||
|
|
||||||
{staged,
|
{staged,
|
||||||
~H"""
|
~H"""
|
||||||
|
<div class="min-w-20 py-2 px-4 h-full flex flex-col justify-center items-center">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="btn btn-primary"
|
class="mx-2 my-1 btn btn-primary"
|
||||||
phx-click="toggle_staged"
|
phx-click="toggle_staged"
|
||||||
phx-value-ammo_group_id={ammo_group.id}
|
phx-value-ammo_group_id={ammo_group.id}
|
||||||
>
|
>
|
||||||
@ -132,8 +133,9 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
|
|||||||
|
|
||||||
<%= live_patch(dgettext("actions", "Record shots"),
|
<%= live_patch(dgettext("actions", "Record shots"),
|
||||||
to: Routes.ammo_group_index_path(Endpoint, :add_shot_group, ammo_group),
|
to: Routes.ammo_group_index_path(Endpoint, :add_shot_group, ammo_group),
|
||||||
class: "btn btn-primary"
|
class: "mx-2 my-1 btn btn-primary"
|
||||||
) %>
|
) %>
|
||||||
|
</div>
|
||||||
"""}
|
"""}
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -174,11 +176,17 @@ defmodule CanneryWeb.AmmoGroupLive.Index do
|
|||||||
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,
|
{container_name,
|
||||||
live_patch(container_name,
|
~H"""
|
||||||
to: Routes.ammo_group_index_path(Endpoint, :move, ammo_group),
|
<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,
|
||||||
|
to: Routes.ammo_group_index_path(Endpoint, :move, @ammo_group),
|
||||||
class: "btn btn-primary"
|
class: "btn btn-primary"
|
||||||
)}
|
) %>
|
||||||
|
</div>
|
||||||
|
"""}
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_value_for_key(key, ammo_group),
|
defp get_value_for_key(key, ammo_group),
|
||||||
|
@ -44,7 +44,7 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
|
|||||||
@impl true
|
@impl true
|
||||||
def handle_event(
|
def handle_event(
|
||||||
"delete",
|
"delete",
|
||||||
_,
|
_params,
|
||||||
%{assigns: %{ammo_group: ammo_group, current_user: current_user}} = socket
|
%{assigns: %{ammo_group: ammo_group, current_user: current_user}} = socket
|
||||||
) do
|
) do
|
||||||
ammo_group |> Ammo.delete_ammo_group!(current_user)
|
ammo_group |> Ammo.delete_ammo_group!(current_user)
|
||||||
@ -58,7 +58,7 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
|
|||||||
@impl true
|
@impl true
|
||||||
def handle_event(
|
def handle_event(
|
||||||
"toggle_staged",
|
"toggle_staged",
|
||||||
_,
|
_params,
|
||||||
%{assigns: %{ammo_group: ammo_group, current_user: current_user}} = socket
|
%{assigns: %{ammo_group: ammo_group, current_user: current_user}} = socket
|
||||||
) do
|
) do
|
||||||
{:ok, ammo_group} =
|
{:ok, ammo_group} =
|
||||||
|
@ -14,7 +14,7 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
|
|||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def handle_params(%{"id" => id}, _, %{assigns: %{current_user: current_user}} = socket) do
|
def handle_params(%{"id" => id}, _params, %{assigns: %{current_user: current_user}} = socket) do
|
||||||
ammo_type = Ammo.get_ammo_type!(id, current_user)
|
ammo_type = Ammo.get_ammo_type!(id, current_user)
|
||||||
|
|
||||||
socket =
|
socket =
|
||||||
@ -32,7 +32,7 @@ defmodule CanneryWeb.AmmoTypeLive.Show do
|
|||||||
@impl true
|
@impl true
|
||||||
def handle_event(
|
def handle_event(
|
||||||
"delete",
|
"delete",
|
||||||
_,
|
_params,
|
||||||
%{assigns: %{ammo_type: ammo_type, current_user: current_user}} = socket
|
%{assigns: %{ammo_type: ammo_type, current_user: current_user}} = socket
|
||||||
) do
|
) do
|
||||||
%{name: ammo_type_name} = ammo_type |> Ammo.delete_ammo_type!(current_user)
|
%{name: ammo_type_name} = ammo_type |> Ammo.delete_ammo_type!(current_user)
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
) %>
|
) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap justify-center items-center">
|
<div class="max-w-full flex flex-row flex-wrap justify-center items-center">
|
||||||
<%= for container <- @containers do %>
|
<%= for container <- @containers do %>
|
||||||
<.container_card container={container}>
|
<.container_card container={container}>
|
||||||
<:tag_actions>
|
<:tag_actions>
|
||||||
|
@ -18,7 +18,7 @@ defmodule CanneryWeb.ContainerLive.Show do
|
|||||||
@impl true
|
@impl true
|
||||||
def handle_params(
|
def handle_params(
|
||||||
%{"id" => id},
|
%{"id" => id},
|
||||||
_,
|
_session,
|
||||||
%{assigns: %{current_user: current_user}} = socket
|
%{assigns: %{current_user: current_user}} = socket
|
||||||
) do
|
) do
|
||||||
{:noreply, socket |> render_container(id, current_user)}
|
{:noreply, socket |> render_container(id, current_user)}
|
||||||
@ -53,7 +53,7 @@ defmodule CanneryWeb.ContainerLive.Show do
|
|||||||
@impl true
|
@impl true
|
||||||
def handle_event(
|
def handle_event(
|
||||||
"delete_container",
|
"delete_container",
|
||||||
_,
|
_params,
|
||||||
%{assigns: %{container: container, current_user: current_user}} = socket
|
%{assigns: %{container: container, current_user: current_user}} = socket
|
||||||
) do
|
) do
|
||||||
socket =
|
socket =
|
||||||
|
@ -29,7 +29,7 @@ defmodule CanneryWeb.HomeLive do
|
|||||||
%{^query => vsn} ->
|
%{^query => vsn} ->
|
||||||
{:noreply, redirect(socket, external: "https://hexdocs.pm/#{query}/#{vsn}")}
|
{:noreply, redirect(socket, external: "https://hexdocs.pm/#{query}/#{vsn}")}
|
||||||
|
|
||||||
_ ->
|
_no_query ->
|
||||||
{:noreply,
|
{:noreply,
|
||||||
socket
|
socket
|
||||||
|> put_flash(:error, "No dependencies found matching \"#{query}\"")
|
|> put_flash(:error, "No dependencies found matching \"#{query}\"")
|
||||||
@ -133,7 +133,7 @@ defmodule CanneryWeb.HomeLive do
|
|||||||
to: "https://gitea.bubbletea.dev/shibao/cannery/src/branch/stable/CHANGELOG.md",
|
to: "https://gitea.bubbletea.dev/shibao/cannery/src/branch/stable/CHANGELOG.md",
|
||||||
target: "_blank",
|
target: "_blank",
|
||||||
rel: "noopener noreferrer" do %>
|
rel: "noopener noreferrer" do %>
|
||||||
<p>0.4.0</p>
|
<p>0.4.1</p>
|
||||||
<i class="fas fa-md fa-info-circle"></i>
|
<i class="fas fa-md fa-info-circle"></i>
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
|
@ -119,7 +119,7 @@ defmodule CanneryWeb.InviteLive.Index do
|
|||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def handle_event("copy_to_clipboard", _, socket) do
|
def handle_event("copy_to_clipboard", _params, socket) do
|
||||||
prompt = dgettext("prompts", "Copied to clipboard")
|
prompt = dgettext("prompts", "Copied to clipboard")
|
||||||
{:noreply, socket |> put_flash(:info, prompt)}
|
{:noreply, socket |> put_flash(:info, prompt)}
|
||||||
end
|
end
|
||||||
|
@ -2,7 +2,6 @@ defmodule CanneryWeb.EmailView do
|
|||||||
@moduledoc """
|
@moduledoc """
|
||||||
A view for email-related helper functions
|
A view for email-related helper functions
|
||||||
"""
|
"""
|
||||||
alias CanneryWeb.{Endpoint, HomeLive}
|
|
||||||
|
|
||||||
use CanneryWeb, :view
|
use CanneryWeb, :view
|
||||||
|
alias CanneryWeb.{Endpoint, HomeLive}
|
||||||
end
|
end
|
||||||
|
@ -8,7 +8,7 @@ defmodule CanneryWeb.ErrorView do
|
|||||||
case error_path do
|
case error_path do
|
||||||
"404.html" -> dgettext("errors", "Not found")
|
"404.html" -> dgettext("errors", "Not found")
|
||||||
"401.html" -> dgettext("errors", "Unauthorized")
|
"401.html" -> dgettext("errors", "Unauthorized")
|
||||||
_ -> dgettext("errors", "Internal Server Error")
|
_other_template -> dgettext("errors", "Internal Server Error")
|
||||||
end
|
end
|
||||||
|
|
||||||
render("error.html", %{error_string: error_string})
|
render("error.html", %{error_string: error_string})
|
||||||
|
2
mix.exs
2
mix.exs
@ -4,7 +4,7 @@ defmodule Cannery.MixProject do
|
|||||||
def project do
|
def project do
|
||||||
[
|
[
|
||||||
app: :cannery,
|
app: :cannery,
|
||||||
version: "0.4.0",
|
version: "0.4.1",
|
||||||
elixir: "~> 1.12",
|
elixir: "~> 1.12",
|
||||||
elixirc_paths: elixirc_paths(Mix.env()),
|
elixirc_paths: elixirc_paths(Mix.env()),
|
||||||
compilers: [:gettext] ++ Mix.compilers(),
|
compilers: [:gettext] ++ Mix.compilers(),
|
||||||
|
@ -160,7 +160,7 @@ msgid "Why not get some ready to shoot?"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/cannery_web/live/ammo_group_live/index.ex:133
|
#: lib/cannery_web/live/ammo_group_live/index.ex:134
|
||||||
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86
|
||||||
#: lib/cannery_web/live/range_live/index.html.heex:36
|
#: lib/cannery_web/live/range_live/index.html.heex:36
|
||||||
msgid "Record shots"
|
msgid "Record shots"
|
||||||
|
216
priv/gettext/de/LC_MESSAGES/actions.po
Normal file
216
priv/gettext/de/LC_MESSAGES/actions.po
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2022-04-19 19:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2022-04-19 21:32+0000\n"
|
||||||
|
"Last-Translator: shibao <shibao@bubbletea.dev>\n"
|
||||||
|
"Language-Team: German <https://weblate.bubbletea.dev/projects/cannery/"
|
||||||
|
"actions/de/>\n"
|
||||||
|
"Language: de\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 4.11.2\n"
|
||||||
|
|
||||||
|
## This file is a PO Template file.
|
||||||
|
##
|
||||||
|
## "msgid"s here are often extracted from source code.
|
||||||
|
## Add new translations manually only if they're dynamic
|
||||||
|
## translations that can't be statically extracted.
|
||||||
|
##
|
||||||
|
## Run "mix gettext.extract" to bring this file up to
|
||||||
|
## date. Leave "msgstr"s empty as changing them here has no
|
||||||
|
## effect: edit them in PO (.po) files instead.
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:44
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Add Ammo"
|
||||||
|
msgstr "Munition hinzufügen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.html.heex:24
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Add your first box!"
|
||||||
|
msgstr "Fügen Sie ihre erste Box hinzu!"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/index.html.heex:12
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Add your first container!"
|
||||||
|
msgstr "Fügen Sie ihren ersten Behälter hinzu!"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.html.heex:12
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Add your first type!"
|
||||||
|
msgstr "Fügen Sie ihre erste Munitionsart hinzu!"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:16
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:45
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Change email"
|
||||||
|
msgstr "Mailadresse ändern"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:60
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:101
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr "Passwort ändern"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:17
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Create Invite"
|
||||||
|
msgstr "Einladung erstellen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:108
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Delete User"
|
||||||
|
msgstr "Benutzer löschen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_registration/new.html.heex:43
|
||||||
|
#: lib/cannery_web/templates/user_reset_password/new.html.heex:3
|
||||||
|
#: lib/cannery_web/templates/user_session/new.html.heex:45
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Forgot your password?"
|
||||||
|
msgstr "Passwort vergessen?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:12
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Invite someone new!"
|
||||||
|
msgstr "Laden Sie jemanden ein!"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/topbar.ex:108
|
||||||
|
#: lib/cannery_web/templates/user_confirmation/new.html.heex:30
|
||||||
|
#: lib/cannery_web/templates/user_registration/new.html.heex:39
|
||||||
|
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:48
|
||||||
|
#: lib/cannery_web/templates/user_reset_password/new.html.heex:30
|
||||||
|
#: lib/cannery_web/templates/user_session/new.html.heex:3
|
||||||
|
#: lib/cannery_web/templates/user_session/new.html.heex:33
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Log in"
|
||||||
|
msgstr "Einloggen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/tag_live/index.html.heex:14
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Make your first tag!"
|
||||||
|
msgstr "Erstellen Sie ihren ersten Tag!"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.html.heex:42
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "New Ammo group"
|
||||||
|
msgstr "Neue Munitionsgruppe"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.html.heex:17
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "New Ammo type"
|
||||||
|
msgstr "Neue Munitionsart"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/index.html.heex:17
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "New Container"
|
||||||
|
msgstr "Neuer Behälter"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/tag_live/index.html.heex:19
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "New Tag"
|
||||||
|
msgstr "Neuer Tag"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/topbar.ex:101
|
||||||
|
#: lib/cannery_web/templates/user_confirmation/new.html.heex:25
|
||||||
|
#: lib/cannery_web/templates/user_registration/new.html.heex:3
|
||||||
|
#: lib/cannery_web/templates/user_registration/new.html.heex:33
|
||||||
|
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:43
|
||||||
|
#: lib/cannery_web/templates/user_reset_password/new.html.heex:25
|
||||||
|
#: lib/cannery_web/templates/user_session/new.html.heex:40
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Register"
|
||||||
|
msgstr "Registrieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_confirmation/new.html.heex:3
|
||||||
|
#: lib/cannery_web/templates/user_confirmation/new.html.heex:16
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Resend confirmation instructions"
|
||||||
|
msgstr "Bestätigungsmail erneut senden"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:3
|
||||||
|
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:34
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Reset password"
|
||||||
|
msgstr "Passwort zurücksetzen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/add_shot_group_component.html.heex:46
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:73
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:156
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.html.heex:50
|
||||||
|
#: lib/cannery_web/live/invite_live/form_component.html.heex:28
|
||||||
|
#: lib/cannery_web/live/range_live/form_component.html.heex:40
|
||||||
|
#: lib/cannery_web/live/tag_live/form_component.ex:66
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Save"
|
||||||
|
msgstr "Speichern"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_reset_password/new.html.heex:16
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Send instructions to reset password"
|
||||||
|
msgstr "Anleitung zum Passwort zurücksetzen zusenden"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/show.html.heex:53
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Why not add one?"
|
||||||
|
msgstr "Warum fügen Sie keine hinzu?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:52
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "Hinzufügen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/index.html.heex:17
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Stage ammo"
|
||||||
|
msgstr "Munition markieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/index.html.heex:12
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Why not get some ready to shoot?"
|
||||||
|
msgstr "Warum nicht einige für den Schießstand auswählen?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:134
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86
|
||||||
|
#: lib/cannery_web/live/range_live/index.html.heex:36
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Record shots"
|
||||||
|
msgstr "Schüsse dokumentieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:50
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo Details"
|
||||||
|
msgstr "Munitionsdetails"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/move_ammo_group_component.ex:89
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Add another container!"
|
||||||
|
msgstr "Einen weiteren Behälter hinzufügen!"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:80
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Move containers"
|
||||||
|
msgstr "Behälter verschieben"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/move_ammo_group_component.ex:127
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Select"
|
||||||
|
msgstr "Markieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:33
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr "In die Zwischenablage kopieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.html.heex:18
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.html.heex:36
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "add a container first"
|
||||||
|
msgstr "Zuerst einen Behälter hinzufügen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:66
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "Erstellen"
|
846
priv/gettext/de/LC_MESSAGES/default.po
Normal file
846
priv/gettext/de/LC_MESSAGES/default.po
Normal file
@ -0,0 +1,846 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2022-04-19 19:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2022-04-19 21:32+0000\n"
|
||||||
|
"Last-Translator: shibao <shibao@bubbletea.dev>\n"
|
||||||
|
"Language-Team: German <https://weblate.bubbletea.dev/projects/cannery/"
|
||||||
|
"default/de/>\n"
|
||||||
|
"Language: de\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 4.11.2\n"
|
||||||
|
|
||||||
|
## This file is a PO Template file.
|
||||||
|
##
|
||||||
|
## "msgid"s here are often extracted from source code.
|
||||||
|
## Add new translations manually only if they're dynamic
|
||||||
|
## translations that can't be statically extracted.
|
||||||
|
##
|
||||||
|
## Run "mix gettext.extract" to bring this file up to
|
||||||
|
## date. Leave "msgstr"s empty as changing them here has no
|
||||||
|
## effect: edit them in PO (.po) files instead.
|
||||||
|
#: lib/cannery_web/live/home_live.ex:63
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{name} lets you easily keep an eye on your ammo levels before and after range day"
|
||||||
|
msgstr ""
|
||||||
|
"Mit %{name} können Sie ihren Munitionsbestand vor und nach dem Schießen "
|
||||||
|
"leicht im Auge behalten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:85
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Access from any internet-capable device"
|
||||||
|
msgstr "Zugriff von jedem Internet-fähigen Gerät"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:90
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Admins"
|
||||||
|
msgstr "Admins"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:99
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Admins:"
|
||||||
|
msgstr "Admins:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/topbar.ex:52
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.html.heex:3
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:82
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo"
|
||||||
|
msgstr "Munition"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:21
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:80
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo type"
|
||||||
|
msgstr "Munitionsarten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:94
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Average Price paid"
|
||||||
|
msgstr "Durchschnittlicher Kaufpreis"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/tag_live/form_component.ex:54
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Background color"
|
||||||
|
msgstr "Hintergrundfarbe"
|
||||||
|
|
||||||
|
#: 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:55
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Blank"
|
||||||
|
msgstr "Knallpatrone"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:68
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Brass"
|
||||||
|
msgstr "Messing"
|
||||||
|
|
||||||
|
#: 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:41
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Bullet core"
|
||||||
|
msgstr "Projektilkern"
|
||||||
|
|
||||||
|
#: 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:40
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Bullet type"
|
||||||
|
msgstr "Patronenart"
|
||||||
|
|
||||||
|
#: 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:43
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Caliber"
|
||||||
|
msgstr "Kaliber"
|
||||||
|
|
||||||
|
#: 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:42
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Cartridge"
|
||||||
|
msgstr "Patrone"
|
||||||
|
|
||||||
|
#: 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:44
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Case material"
|
||||||
|
msgstr "Gehäusematerial"
|
||||||
|
|
||||||
|
#: 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:85
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Container"
|
||||||
|
msgstr "Behälter"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/topbar.ex:46
|
||||||
|
#: lib/cannery_web/live/container_live/index.ex:38
|
||||||
|
#: lib/cannery_web/live/container_live/index.html.heex:3
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Containers"
|
||||||
|
msgstr "Behälter"
|
||||||
|
|
||||||
|
#: 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:56
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Corrosive"
|
||||||
|
msgstr "Korrosiv"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:27
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:81
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Count"
|
||||||
|
msgstr "Anzahl"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/ammo_group_card.ex:29
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Count:"
|
||||||
|
msgstr "Anzahl:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:24
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.html.heex:27
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "Beschreibung"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/container_card.ex:31
|
||||||
|
#: lib/cannery_web/live/container_live/show.html.heex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Description:"
|
||||||
|
msgstr "Beschreibung:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:59
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Disable"
|
||||||
|
msgstr "Deaktivieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:60
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Easy to Use:"
|
||||||
|
msgstr "Einfache Anwendung:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:38
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:42
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Edit Ammo group"
|
||||||
|
msgstr "Munitionsgruppe bearbeiten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.ex:23
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/show.ex:47
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Edit Ammo type"
|
||||||
|
msgstr "Munitionstyp bearbeiten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.ex:35
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Edit Invite"
|
||||||
|
msgstr "Einladung bearbeiten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/tag_live/index.ex:23
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Edit Tag"
|
||||||
|
msgstr "Tag bearbeiten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:63
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Enable"
|
||||||
|
msgstr "Aktivieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:35
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Example bullet type abbreviations"
|
||||||
|
msgstr "Beispiel Munitionstyp Abkürzungen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:40
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "FMJ"
|
||||||
|
msgstr "VM"
|
||||||
|
|
||||||
|
#: 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:49
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Grains"
|
||||||
|
msgstr "Körner"
|
||||||
|
|
||||||
|
#: 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:54
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Incendiary"
|
||||||
|
msgstr "Brandmunition"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:94
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Instance Information"
|
||||||
|
msgstr "Instanzinformationen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/invite_card.ex:27
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Invite Disabled"
|
||||||
|
msgstr "Einladung deaktiviert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:125
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Invite Only"
|
||||||
|
msgstr "Nur mit Einladung"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/topbar.ex:71
|
||||||
|
#: lib/cannery_web/live/invite_live/index.ex:43
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:3
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Invites"
|
||||||
|
msgstr "Einladungen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_session/new.html.heex:28
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Keep me logged in for 60 days"
|
||||||
|
msgstr "Für 60 Tage eingeloggt bleiben"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/move_ammo_group_component.ex:69
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.html.heex:42
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Location"
|
||||||
|
msgstr "Standort"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/container_card.ex:43
|
||||||
|
#: lib/cannery_web/live/container_live/show.html.heex:20
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Location:"
|
||||||
|
msgstr "Standort:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.html.heex:38
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Magazine, Clip, Ammo Box, etc"
|
||||||
|
msgstr "Magazin, Ladestreifen, Munitionskiste usw."
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/topbar.ex:58
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Manage"
|
||||||
|
msgstr "Verwalten"
|
||||||
|
|
||||||
|
#: 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:57
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Manufacturer"
|
||||||
|
msgstr "Hersteller"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.html.heex:31
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Metal ammo can with the anime girl sticker"
|
||||||
|
msgstr "Metallene Munitionskiste mit Anime-Girl-Sticker"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.html.heex:23
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "My cool ammo can"
|
||||||
|
msgstr "Meine coole Munitionskiste"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:20
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.ex:51
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.html.heex:20
|
||||||
|
#: lib/cannery_web/live/invite_live/form_component.html.heex:20
|
||||||
|
#: lib/cannery_web/live/tag_live/form_component.ex:50
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "Name"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.ex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "New Ammo type"
|
||||||
|
msgstr "Neuer Munitionstyp"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/index.ex:33
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "New Container"
|
||||||
|
msgstr "Neuer Behälter"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.ex:39
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "New Invite"
|
||||||
|
msgstr "Neue Einladung"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/tag_live/index.ex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "New Tag"
|
||||||
|
msgstr "Neuer Tag"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.html.heex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No Ammo"
|
||||||
|
msgstr "Keine Munition"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No Ammo Types"
|
||||||
|
msgstr "Keine Munitionsarten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:114
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No ammo for this type"
|
||||||
|
msgstr "Keine Munition dieser Art"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/show.html.heex:78
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No ammo groups in this container"
|
||||||
|
msgstr "Keine Munitionsgruppe in diesem Behälter"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/index.html.heex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No containers"
|
||||||
|
msgstr "Kein Behälter"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No invites"
|
||||||
|
msgstr "Keine Einladung"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:30
|
||||||
|
#: lib/cannery_web/live/tag_live/index.html.heex:10
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No tags"
|
||||||
|
msgstr "Keine Tags"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/add_shot_group_component.html.heex:30
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:41
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:90
|
||||||
|
#: lib/cannery_web/live/range_live/form_component.html.heex:29
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:84
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Notes"
|
||||||
|
msgstr "Bemerkungen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/ammo_group_card.ex:35
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:24
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Notes:"
|
||||||
|
msgstr "Bemerkungen:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.html.heex:46
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "On the bookshelf"
|
||||||
|
msgstr "Auf dem Bücherregal"
|
||||||
|
|
||||||
|
#: 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:50
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Pressure"
|
||||||
|
msgstr "Druck"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:34
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:82
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Price paid"
|
||||||
|
msgstr "Kaufpreis"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/ammo_group_card.ex:42
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Price paid:"
|
||||||
|
msgstr "Kaufpreis:"
|
||||||
|
|
||||||
|
#: 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:51
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Primer type"
|
||||||
|
msgstr "Zündertyp"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:124
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Public Signups"
|
||||||
|
msgstr "Öffentliche Registrierung"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:72
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Secure:"
|
||||||
|
msgstr "Sicher:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:75
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Self-host your own instance, or use an instance from someone you trust."
|
||||||
|
msgstr ""
|
||||||
|
"Hosten Sie Ihre eigene Instanz oder verwenden Sie eine Instanz, der Sie "
|
||||||
|
"vertrauen."
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:79
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Set Unlimited"
|
||||||
|
msgstr "Unbegrenzt setzen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_settings_controller.ex:10
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:3
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:41
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Show Ammo group"
|
||||||
|
msgstr "Munitionsgruppen anzeigen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/show.ex:46
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Show Ammo type"
|
||||||
|
msgstr "Zeige Munitionsarten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:82
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Simple:"
|
||||||
|
msgstr "Einfach:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:47
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Steel"
|
||||||
|
msgstr "Stahl"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:98
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Stored in"
|
||||||
|
msgstr "Gelagert in"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/topbar.ex:40
|
||||||
|
#: lib/cannery_web/live/tag_live/index.ex:34
|
||||||
|
#: lib/cannery_web/live/tag_live/index.html.heex:3
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Tags"
|
||||||
|
msgstr "Tags"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/tag_live/index.html.heex:6
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Tags can be added to your containers to help you organize"
|
||||||
|
msgstr "Tags können zur besseren Ordnung einem Behälter hinzugefügt werden"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/tag_live/form_component.ex:60
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Text color"
|
||||||
|
msgstr "Textfarbe"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:51
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "The self-hosted firearm tracker website"
|
||||||
|
msgstr "Die selbst-gehostete Website zur Verwaltung von Schusswaffen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:103
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "This ammo group is not in a container"
|
||||||
|
msgstr "Diese Munitionsgruppe ist nicht in einem Behälter"
|
||||||
|
|
||||||
|
#: 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:53
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Tracer"
|
||||||
|
msgstr "Leuchtspur"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/move_ammo_group_component.ex:68
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.html.heex:35
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "Art"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/container_card.ex:37
|
||||||
|
#: lib/cannery_web/live/container_live/show.html.heex:14
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Type:"
|
||||||
|
msgstr "Art:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:119
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Users"
|
||||||
|
msgstr "Benutzer"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/invite_card.ex:22
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Uses Left:"
|
||||||
|
msgstr "Verbleibende Nutzung:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/form_component.html.heex:24
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Uses left"
|
||||||
|
msgstr "Verbleibende Nutzung"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:47
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Welcome to %{name}"
|
||||||
|
msgstr "Willkommen %{name}"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:76
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Your data stays with you, period"
|
||||||
|
msgstr "Ihre Daten bleiben bei Ihnen, Punkt"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/show.html.heex:49
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No tags for this container"
|
||||||
|
msgstr "Keine Tags für diesen Behälter"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/topbar.ex:64
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:84
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Range"
|
||||||
|
msgstr "Schießplatz"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/index.html.heex:3
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Range day"
|
||||||
|
msgstr "Range Day"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:91
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:85
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Date"
|
||||||
|
msgstr "Datum"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/form_component.html.heex:21
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Shots fired"
|
||||||
|
msgstr "Schüsse abgegeben"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/index.html.heex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No ammo staged"
|
||||||
|
msgstr "Keine Munition selektiert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:77
|
||||||
|
#: lib/cannery_web/live/range_live/index.html.heex:33
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Stage for range"
|
||||||
|
msgstr "Für Schießplatz selektieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:76
|
||||||
|
#: lib/cannery_web/live/range_live/index.html.heex:32
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Unstage from range"
|
||||||
|
msgstr "Für Schießplatz deselektieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/add_shot_group_component.html.heex:3
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:26
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Record shots"
|
||||||
|
msgstr "Schüsse dokumentieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.html.heex:3
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo Types"
|
||||||
|
msgstr "Munitionsarten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:49
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo groups"
|
||||||
|
msgstr "Munitionsgruppen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/add_shot_group_component.html.heex:38
|
||||||
|
#: lib/cannery_web/live/range_live/form_component.html.heex:36
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Date (UTC)"
|
||||||
|
msgstr "Zeit (UTC)"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:39
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:34
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Edit Shot Records"
|
||||||
|
msgstr "Schießkladde editieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:40
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "New Shot Records"
|
||||||
|
msgstr "Neue Schießkladde"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/index.html.heex:48
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No shots recorded"
|
||||||
|
msgstr "Keine Schüsse dokumentiert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/add_shot_group_component.html.heex:21
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Rounds left"
|
||||||
|
msgstr "Patronen verbleibend"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:89
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:83
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Rounds shot"
|
||||||
|
msgstr "Patronen abgefeuert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:46
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Shot Records"
|
||||||
|
msgstr "Schießkladde"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:32
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:40
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Move Ammo group"
|
||||||
|
msgstr "Munitionsgruppe verschieben"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/move_ammo_group_component.ex:80
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Move ammo"
|
||||||
|
msgstr "Munition verschieben"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/move_ammo_group_component.ex:85
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No other containers"
|
||||||
|
msgstr "Kein weiterer Behälter"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/index.html.heex:53
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Shot log"
|
||||||
|
msgstr "Schießkladde"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/ammo_group_card.ex:43
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:117
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:32
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:39
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:98
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "$%{amount}"
|
||||||
|
msgstr "$%{amount}"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:75
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Bimetal"
|
||||||
|
msgstr "Bimetall"
|
||||||
|
|
||||||
|
#: 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:45
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Jacket type"
|
||||||
|
msgstr "Patronenhülse"
|
||||||
|
|
||||||
|
#: 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:46
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Muzzle velocity"
|
||||||
|
msgstr "Mündungsgeschwindigkeit"
|
||||||
|
|
||||||
|
#: 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:48
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Powder grains per charge"
|
||||||
|
msgstr "Pulverkörner pro Ladung"
|
||||||
|
|
||||||
|
#: 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:47
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Powder type"
|
||||||
|
msgstr "Pulverart"
|
||||||
|
|
||||||
|
#: 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:58
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "UPC"
|
||||||
|
msgstr "UPC"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:80
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Confirm new password"
|
||||||
|
msgstr "Passwort bestätigen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:33
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:89
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Current password"
|
||||||
|
msgstr "Derzeitiges Passwort"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:73
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "New password"
|
||||||
|
msgstr "Neues Passwort"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:131
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Stage"
|
||||||
|
msgstr "Markiert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:131
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Unstage"
|
||||||
|
msgstr "Demarkiert"
|
||||||
|
|
||||||
|
#: 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:52
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Firing type"
|
||||||
|
msgstr "Patronenhülsenform"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/layout/live.html.heex:50
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Reconnecting..."
|
||||||
|
msgstr "Neu verbinden..."
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/layout/live.html.heex:37
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Lädt..."
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/index.ex:29
|
||||||
|
#: lib/cannery_web/live/container_live/show.ex:97
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Edit %{name}"
|
||||||
|
msgstr "%{name} bearbeiten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/index.ex:48
|
||||||
|
#: lib/cannery_web/live/container_live/show.ex:98
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Edit %{name} tags"
|
||||||
|
msgstr "Editiere %{name} Tags"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/container_card.ex:50
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Rounds:"
|
||||||
|
msgstr "Patronen:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/show.ex:96
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Show %{name}"
|
||||||
|
msgstr "Zeige %{name}"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:104
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "No cost information"
|
||||||
|
msgstr "Keine Preisinformationen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:83
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "% left"
|
||||||
|
msgstr "% verbleibend"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:38
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Current value:"
|
||||||
|
msgstr "Derzeitiger Wert:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:31
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Original cost:"
|
||||||
|
msgstr "Originalpreis:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:13
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Original count:"
|
||||||
|
msgstr "Ursprüngliche Anzahl:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:18
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Percentage left:"
|
||||||
|
msgstr "Prozent verbleibend:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:111
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Rounds used"
|
||||||
|
msgstr "Patronen verbraucht"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:77
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Current # of rounds:"
|
||||||
|
msgstr "Derzeitige # an Patronen:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.ex:86
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Total # of rounds"
|
||||||
|
msgstr "Summe aller Patronen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:85
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Total rounds shot:"
|
||||||
|
msgstr "Summe abgegebener Schüsse:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_confirmation_controller.ex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Confirm your account"
|
||||||
|
msgstr "Bestätigen Sie ihr Nutzerkonto"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_reset_password_controller.ex:9
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Forgot your password?"
|
||||||
|
msgstr "Passwort vergessen?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_session_controller.ex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Log in"
|
||||||
|
msgstr "Einloggen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_registration_controller.ex:35
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Register"
|
||||||
|
msgstr "Registrieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_reset_password_controller.ex:36
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Reset your password"
|
||||||
|
msgstr "Passwort zurücksetzen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:38
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:28
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Record Shots"
|
||||||
|
msgstr "Schüsse dokumentieren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:58
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Copies"
|
||||||
|
msgstr "Kopien"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.ex:34
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo types"
|
||||||
|
msgstr "Munitionsart"
|
121
priv/gettext/de/LC_MESSAGES/emails.po
Normal file
121
priv/gettext/de/LC_MESSAGES/emails.po
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2022-04-19 19:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2022-04-19 21:44+0000\n"
|
||||||
|
"Last-Translator: Kaia Estra <kaia@fedora.email>\n"
|
||||||
|
"Language-Team: German <https://weblate.bubbletea.dev/projects/cannery/emails/"
|
||||||
|
"de/>\n"
|
||||||
|
"Language: de\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 4.11.2\n"
|
||||||
|
|
||||||
|
## This file is a PO Template file.
|
||||||
|
##
|
||||||
|
## "msgid"s here are often extracted from source code.
|
||||||
|
## Add new translations manually only if they're dynamic
|
||||||
|
## translations that can't be statically extracted.
|
||||||
|
##
|
||||||
|
## Run "mix gettext.extract" to bring this file up to
|
||||||
|
## date. Leave "msgstr"s empty as changing them here has no
|
||||||
|
## effect: edit them in PO (.po) files instead.
|
||||||
|
#: lib/cannery/accounts/email.ex:30
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Confirm your %{name} account"
|
||||||
|
msgstr "Bestätigen Sie ihr %{name} Nutzerkonto"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/email/confirm_email.html.eex:3
|
||||||
|
#: lib/cannery_web/templates/email/confirm_email.txt.eex:2
|
||||||
|
#: lib/cannery_web/templates/email/reset_password.html.eex:3
|
||||||
|
#: lib/cannery_web/templates/email/reset_password.txt.eex:2
|
||||||
|
#: lib/cannery_web/templates/email/update_email.html.eex:3
|
||||||
|
#: lib/cannery_web/templates/email/update_email.txt.eex:2
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Hi %{email},"
|
||||||
|
msgstr "Hallo %{email},"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/email/confirm_email.txt.eex:10
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "If you didn't create an account at %{url}, please ignore this."
|
||||||
|
msgstr ""
|
||||||
|
"Falls Sie dieses Nutzerkonto bei %{url} nicht erstellt haben, ignorieren Sie "
|
||||||
|
"diese Nachricht bitte."
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/email/reset_password.txt.eex:8
|
||||||
|
#: lib/cannery_web/templates/email/update_email.txt.eex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "If you didn't request this change from %{url}, please ignore this."
|
||||||
|
msgstr ""
|
||||||
|
"Falls Sie diese Änderung von %{url} nicht angefordert haben, ignorieren Sie "
|
||||||
|
"bitte diese Nachricht."
|
||||||
|
|
||||||
|
#: lib/cannery/accounts/email.ex:37
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Reset your %{name} password"
|
||||||
|
msgstr "Passwort für %{name} zurücksetzen"
|
||||||
|
|
||||||
|
#: lib/cannery/accounts/email.ex:44
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Update your %{name} email"
|
||||||
|
msgstr "Aktualisieren Sie %{name} Mailadresse"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/email/confirm_email.html.eex:9
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Welcome to %{name}!"
|
||||||
|
msgstr "Willkommen %{name}!"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Welcome to %{name}%!"
|
||||||
|
msgstr "Willkommen %{name}%!"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/email/update_email.html.eex:8
|
||||||
|
#: lib/cannery_web/templates/email/update_email.txt.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You can change your email by visiting the URL below:"
|
||||||
|
msgstr "Sie können Ihre Mailadresse unter folgender URL ändern:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/email/confirm_email.html.eex:14
|
||||||
|
#: lib/cannery_web/templates/email/confirm_email.txt.eex:6
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You can confirm your account by visiting the URL below:"
|
||||||
|
msgstr "Sie können Ihr Nutzerkonto unter folgender URL bestätigen:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/email/reset_password.html.eex:8
|
||||||
|
#: lib/cannery_web/templates/email/reset_password.txt.eex:4
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You can reset your password by visiting the URL below:"
|
||||||
|
msgstr "Sie können ihr Passwort unter folgender URL zurücksetzen:"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/email/confirm_email.html.eex:22
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "If you didn't create an account at %{name}, please ignore this."
|
||||||
|
msgstr ""
|
||||||
|
"Falls SIe dieses Nutzerkonto unter %{name}, nicht erstellt haben, ignorieren "
|
||||||
|
"Sie diese Nachricht bitte."
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/email/reset_password.html.eex:16
|
||||||
|
#: lib/cannery_web/templates/email/update_email.html.eex:16
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "If you didn't request this change from %{name}, please ignore this."
|
||||||
|
msgstr ""
|
||||||
|
"Falls Sie die Änderung von %{name} nicht angefragt haben, ignorieren Sie "
|
||||||
|
"diese Nachricht bitte."
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/layout/email.txt.eex:9
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "This email was sent from %{name} at %{url}, the self-hosted firearm tracker website."
|
||||||
|
msgstr ""
|
||||||
|
"Diese Nachricht wurde von %{name} unter %{url} gesandt, einem selbst-"
|
||||||
|
"gehosteten Schusswaffenmanager."
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/layout/email.html.heex:17
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "This email was sent from %{name}, the self-hosted firearm tracker website."
|
||||||
|
msgstr ""
|
||||||
|
"Diese Nachricht wurde von %{name} gesandt, einem selbst-gehosteten "
|
||||||
|
"Schusswaffenmanager."
|
187
priv/gettext/de/LC_MESSAGES/errors.po
Normal file
187
priv/gettext/de/LC_MESSAGES/errors.po
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2022-04-19 19:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2022-04-19 21:32+0000\n"
|
||||||
|
"Last-Translator: shibao <shibao@bubbletea.dev>\n"
|
||||||
|
"Language-Team: German <https://weblate.bubbletea.dev/projects/cannery/errors/"
|
||||||
|
"de/>\n"
|
||||||
|
"Language: de\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 4.11.2\n"
|
||||||
|
|
||||||
|
## This file is a PO Template file.
|
||||||
|
##
|
||||||
|
## "msgid"s here are often extracted from source code.
|
||||||
|
## Add new translations manually only if they're dynamic
|
||||||
|
## translations that can't be statically extracted.
|
||||||
|
##
|
||||||
|
## Run "mix gettext.extract" to bring this file up to
|
||||||
|
## date. Leave "msgstr"s empty as changing them here has no
|
||||||
|
## effect: edit them in PO (.po) files instead.
|
||||||
|
#: lib/cannery/containers.ex:122
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Container must be empty before deleting"
|
||||||
|
msgstr "Behälter muss vor dem Löschen leer sein"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/index.ex:71
|
||||||
|
#: lib/cannery_web/live/container_live/show.ex:73
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not delete %{name}: %{error}"
|
||||||
|
msgstr "Konnte %{name} nicht löschen: %{error}"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/index.ex:59
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not find that container"
|
||||||
|
msgstr "Konnte Behälter nicht finden"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_settings_controller.ex:67
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Email change link is invalid or it has expired."
|
||||||
|
msgstr "Mailadressenänderungs-Link ist ungültig oder abgelaufen."
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/error/error.html.heex:8
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Error"
|
||||||
|
msgstr "Fehler"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/error/error.html.heex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Go back home"
|
||||||
|
msgstr "Zur Hauptseite zurückkehren"
|
||||||
|
|
||||||
|
#: lib/cannery_web/views/error_view.ex:11
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Internal Server Error"
|
||||||
|
msgstr "Interner Serverfehler"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_session_controller.ex:17
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Invalid email or password"
|
||||||
|
msgstr "Ungültige Mailadresse oder Passwort"
|
||||||
|
|
||||||
|
#: lib/cannery_web/views/error_view.ex:9
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Not found"
|
||||||
|
msgstr "Nicht gefunden"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_registration/new.html.heex:16
|
||||||
|
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:16
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:22
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:66
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Oops, something went wrong! Please check the errors below."
|
||||||
|
msgstr "Oops, etwas ist schiefgegangen. Bitte beachten Sie den Fehler unten."
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_reset_password_controller.ex:63
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Reset password link is invalid or it has expired."
|
||||||
|
msgstr "Link zum Passwort zurücksetzen ist ungültig oder abgelaufen."
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_registration_controller.ex:25
|
||||||
|
#: lib/cannery_web/controllers/user_registration_controller.ex:56
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Sorry, public registration is disabled"
|
||||||
|
msgstr "Entschuldigung, aber öffentliche Registrierung ist deaktiviert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_registration_controller.ex:15
|
||||||
|
#: lib/cannery_web/controllers/user_registration_controller.ex:46
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Sorry, this invite was not found or expired"
|
||||||
|
msgstr ""
|
||||||
|
"Entschuldigung, aber diese Einladung wurde nicht gefunden oder ist abgelaufen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_settings_controller.ex:82
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Unable to delete user"
|
||||||
|
msgstr "Dieser Nutzer konnte nicht gelöscht werden"
|
||||||
|
|
||||||
|
#: lib/cannery_web/views/error_view.ex:10
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Unauthorized"
|
||||||
|
msgstr "Unbefugt"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_confirmation_controller.ex:54
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "User confirmation link is invalid or it has expired."
|
||||||
|
msgstr "Nutzerkonto Bestätigungslink ist ungültig oder abgelaufen."
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.ex:20
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You are not authorized to view this page"
|
||||||
|
msgstr "Sie sind nicht berechtigt, diese Seite aufzurufen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_auth.ex:177
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You are not authorized to view this page."
|
||||||
|
msgstr "Sie sind nicht berechtigt, diese Seite aufzurufen."
|
||||||
|
|
||||||
|
#: lib/cannery/accounts/user.ex:128
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "did not change"
|
||||||
|
msgstr "hat sich nicht geändert"
|
||||||
|
|
||||||
|
#: lib/cannery/accounts/user.ex:149
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "does not match password"
|
||||||
|
msgstr "Passwort stimmt nicht überein"
|
||||||
|
|
||||||
|
#: lib/cannery/accounts/user.ex:186
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "is not valid"
|
||||||
|
msgstr "ist nicht gültig"
|
||||||
|
|
||||||
|
#: lib/cannery/accounts/user.ex:82
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "must have the @ sign and no spaces"
|
||||||
|
msgstr "Muss ein @ Zeichen und keine Leerzeichen haben"
|
||||||
|
|
||||||
|
#: lib/cannery/tags.ex:40
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Tag not found"
|
||||||
|
msgstr "Tag nicht gefunden"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/edit_tags_component.ex:30
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Tag could not be added"
|
||||||
|
msgstr "Tag konnte nicht hinzugefügt werden"
|
||||||
|
|
||||||
|
#: lib/cannery/activity_log.ex:125
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Count must be at least 1"
|
||||||
|
msgstr "Anzahl muss mindestens 1 sein"
|
||||||
|
|
||||||
|
#: lib/cannery/activity_log.ex:73
|
||||||
|
#: lib/cannery/activity_log.ex:120
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Count must be less than %{count}"
|
||||||
|
msgstr "Anzahl muss weniger als %{count} betragen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_auth.ex:39
|
||||||
|
#: lib/cannery_web/controllers/user_auth.ex:161
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You must confirm your account and log in to access this page."
|
||||||
|
msgstr ""
|
||||||
|
"Sie müssen ihr Nutzerkonto bestätigen und einloggen, um diese Seite "
|
||||||
|
"anzuzeigen."
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/edit_tags_component.ex:52
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Tag could not be removed"
|
||||||
|
msgstr "Tag konnte nicht gelöscht werden"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.ex:126
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Could not parse number of copies"
|
||||||
|
msgstr "Konnte die Anzahl der Kopien nicht verstehen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.ex:111
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
|
||||||
|
msgstr ""
|
||||||
|
"Ungültige Nummer an Kopien. Muss zwischen 1 and %{max} liegen. War "
|
||||||
|
"%{multiplier}"
|
281
priv/gettext/de/LC_MESSAGES/prompts.po
Normal file
281
priv/gettext/de/LC_MESSAGES/prompts.po
Normal file
@ -0,0 +1,281 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2022-04-19 19:32+0000\n"
|
||||||
|
"PO-Revision-Date: 2022-04-19 21:32+0000\n"
|
||||||
|
"Last-Translator: Kaia Estra <kaia@fedora.email>\n"
|
||||||
|
"Language-Team: German <https://weblate.bubbletea.dev/projects/cannery/"
|
||||||
|
"prompts/de/>\n"
|
||||||
|
"Language: de\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
|
"X-Generator: Weblate 4.11.2\n"
|
||||||
|
|
||||||
|
## This file is a PO Template file.
|
||||||
|
##
|
||||||
|
## "msgid"s here are often extracted from source code.
|
||||||
|
## Add new translations manually only if they're dynamic
|
||||||
|
## translations that can't be statically extracted.
|
||||||
|
##
|
||||||
|
## Run "mix gettext.extract" to bring this file up to
|
||||||
|
## date. Leave "msgstr"s empty as changing them here has no
|
||||||
|
## effect: edit them in PO (.po) files instead.
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.ex:64
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.ex:65
|
||||||
|
#: lib/cannery_web/live/invite_live/form_component.ex:59
|
||||||
|
#: lib/cannery_web/live/tag_live/form_component.ex:101
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{name} created successfully"
|
||||||
|
msgstr "%{name} erfolgreich erstellt"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.ex:41
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/show.ex:40
|
||||||
|
#: lib/cannery_web/live/invite_live/index.ex:55
|
||||||
|
#: lib/cannery_web/live/invite_live/index.ex:135
|
||||||
|
#: lib/cannery_web/live/tag_live/index.ex:40
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{name} deleted succesfully"
|
||||||
|
msgstr "%{name} erfolgreich gelöscht"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.ex:111
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{name} disabled succesfully"
|
||||||
|
msgstr "%{name} erfolgreich deaktiviert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.ex:89
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{name} enabled succesfully"
|
||||||
|
msgstr "%{name} erfolgreich aktiviert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/index.ex:64
|
||||||
|
#: lib/cannery_web/live/container_live/show.ex:63
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{name} has been deleted"
|
||||||
|
msgstr "%{name} wurde gelöscht"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.ex:69
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{name} updated succesfully"
|
||||||
|
msgstr "%{name} erfolgreich aktualisiert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.ex:46
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.ex:47
|
||||||
|
#: lib/cannery_web/live/invite_live/form_component.ex:41
|
||||||
|
#: lib/cannery_web/live/tag_live/form_component.ex:83
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{name} updated successfully"
|
||||||
|
msgstr "%{name} erfolgreich aktualisiert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_settings_controller.ex:28
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "A link to confirm your email change has been sent to the new address."
|
||||||
|
msgstr "Eine Mail zum Bestätigen ihre Mailadresse wurde Ihnen zugesandt."
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:56
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:52
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo group deleted succesfully"
|
||||||
|
msgstr "Munitionsgruppe erfolgreich gelöscht"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.ex:88
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo group updated successfully"
|
||||||
|
msgstr "Munitionsgruppe erfolgreich aktualisiert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:102
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:131
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Are you sure you want to delete %{email}? This action is permanent!"
|
||||||
|
msgstr ""
|
||||||
|
"Sind Sie sicher, dass sie %{email} löschen möchten? Dies kann nicht "
|
||||||
|
"zurückgenommen werden!"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29
|
||||||
|
#: lib/cannery_web/live/container_live/index.html.heex:46
|
||||||
|
#: lib/cannery_web/live/container_live/show.html.heex:37
|
||||||
|
#: lib/cannery_web/live/tag_live/index.html.heex:38
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Are you sure you want to delete %{name}?"
|
||||||
|
msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:49
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
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?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.ex:167
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:66
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/index.ex:130
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Are you sure you want to delete this ammo?"
|
||||||
|
msgstr "Sind Sie sicher, dass sie diese Munition löschen möchten?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/templates/user_settings/edit.html.heex:112
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Are you sure you want to delete your account?"
|
||||||
|
msgstr "Sind Sie sicher, dass sie Ihren Account löschen möchten?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/topbar.ex:86
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Are you sure you want to log out?"
|
||||||
|
msgstr "Wirklich ausloggen?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.html.heex:74
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Are you sure you want to make %{name} unlimited?"
|
||||||
|
msgstr "Sind Sie sicher, dass sie %{name} auf unbegrenzt setzen möchten?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_settings_controller.ex:60
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Email changed successfully."
|
||||||
|
msgstr "Mailadresse erfolgreich geändert."
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_confirmation_controller.ex:23
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
|
||||||
|
msgstr ""
|
||||||
|
"Falls Ihre Mailadresse bereits in unserer Datenbank ist und noch nicht "
|
||||||
|
"bestätigt wurde, erhalten Sie gleich eine Mail mit Anweisungen."
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_reset_password_controller.ex:24
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "If your email is in our system, you will receive instructions to reset your password shortly."
|
||||||
|
msgstr ""
|
||||||
|
"Falls Ihre Mailadresse bereits in unserer Datenbank ist, erhalten Sie gleich "
|
||||||
|
"eine Mail mit Anweisungen zum Ändern ihres Passworts."
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_session_controller.ex:23
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Logged out successfully."
|
||||||
|
msgstr "Erfolgreich ausgeloggt."
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_reset_password_controller.ex:46
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Password reset successfully."
|
||||||
|
msgstr "Passwort erfolgreich zurückgesetzt."
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_settings_controller.ex:47
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Password updated successfully."
|
||||||
|
msgstr "Passwort erfolgreich geändert."
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_registration_controller.ex:74
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Please check your email to verify your account"
|
||||||
|
msgstr "Bitte überprüfen Sie ihre Mailbox und bestätigen Sie das Nutzerkonto"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/home_live.ex:103
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Register to setup %{name}"
|
||||||
|
msgstr "Registrieren Sie sich, um %{name} zu bearbeiten"
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/add_shot_group_component.html.heex:48
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:74
|
||||||
|
#: lib/cannery_web/live/ammo_type_live/form_component.html.heex:157
|
||||||
|
#: lib/cannery_web/live/container_live/form_component.html.heex:52
|
||||||
|
#: lib/cannery_web/live/invite_live/form_component.html.heex:30
|
||||||
|
#: lib/cannery_web/live/range_live/form_component.html.heex:42
|
||||||
|
#: lib/cannery_web/live/tag_live/form_component.ex:68
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Saving..."
|
||||||
|
msgstr "Speichere..."
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_settings_controller.ex:78
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Your account has been deleted"
|
||||||
|
msgstr "Ihr Nutzerkonto wurde gelöscht"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:16
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Are you sure you want to remove the %{tag_name} tag from %{container_name}?"
|
||||||
|
msgstr ""
|
||||||
|
"Sind Sie sicher, dass sie %{tag_name} Tag von %{container_name} entfernen "
|
||||||
|
"wollen?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/edit_tags_component.ex:36
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{name} added successfully"
|
||||||
|
msgstr "%{name} erfolgreich hinzugefügt"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/show.ex:39
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{tag_name} has been removed from %{container_name}"
|
||||||
|
msgstr "%{tag_name} wurde von %{container_name} entfernt"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:54
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Adding..."
|
||||||
|
msgstr "Füge hinzu..."
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/add_shot_group_component.ex:68
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Shots recorded successfully"
|
||||||
|
msgstr "Schüsse erfolgreich dokumentiert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/index.html.heex:29
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Are you sure you want to unstage this ammo?"
|
||||||
|
msgstr "Sind sie sicher, dass Sie diese Munition demarkieren möchten?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:70
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo group unstaged succesfully"
|
||||||
|
msgstr "Munition erfolgreich demarkiert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:132
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:130
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Are you sure you want to delete this shot record?"
|
||||||
|
msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/show.ex:80
|
||||||
|
#: lib/cannery_web/live/range_live/index.ex:56
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Shot records deleted succesfully"
|
||||||
|
msgstr "Schießkladde erfolgreich gelöscht"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/range_live/form_component.ex:55
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Shot records updated successfully"
|
||||||
|
msgstr "Schießkladde erfolgreich aktualisiert"
|
||||||
|
|
||||||
|
#: lib/cannery_web/controllers/user_confirmation_controller.ex:38
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{email} confirmed successfully."
|
||||||
|
msgstr "%{email} erfolgreich bestätigt."
|
||||||
|
|
||||||
|
#: lib/cannery_web/components/move_ammo_group_component.ex:53
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo moved to %{name} successfully"
|
||||||
|
msgstr "Munition erfolgreich zu %{name} verschoben"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/invite_live/index.ex:123
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Copied to clipboard"
|
||||||
|
msgstr "Der Zwischenablage hinzugefügt"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/container_live/edit_tags_component.ex:58
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "%{name} removed successfully"
|
||||||
|
msgstr "%{name} erfolgreich entfernt"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.html.heex:15
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/index.html.heex:33
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "You'll need to"
|
||||||
|
msgstr "Sie müssen"
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:67
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Creating..."
|
||||||
|
msgstr "Erstellen..."
|
||||||
|
|
||||||
|
#: lib/cannery_web/live/ammo_group_live/form_component.ex:147
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Ammo group created successfully"
|
||||||
|
msgid_plural "Ammo groups created successfully"
|
||||||
|
msgstr[0] "Munitionsgruppe erfolgreich erstellt"
|
||||||
|
msgstr[1] "Munitionsgruppen erfolgreich erstellt"
|
@ -689,12 +689,12 @@ msgid "New password"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/cannery_web/live/ammo_group_live/index.ex:130
|
#: lib/cannery_web/live/ammo_group_live/index.ex:131
|
||||||
msgid "Stage"
|
msgid "Stage"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/cannery_web/live/ammo_group_live/index.ex:130
|
#: lib/cannery_web/live/ammo_group_live/index.ex:131
|
||||||
msgid "Unstage"
|
msgid "Unstage"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ msgid "Are you sure you want to delete the invite for %{name}?"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
#: lib/cannery_web/live/ammo_group_live/index.ex:165
|
#: lib/cannery_web/live/ammo_group_live/index.ex:167
|
||||||
#: lib/cannery_web/live/ammo_group_live/show.html.heex:66
|
#: lib/cannery_web/live/ammo_group_live/show.html.heex:66
|
||||||
#: lib/cannery_web/live/ammo_type_live/index.ex:130
|
#: lib/cannery_web/live/ammo_type_live/index.ex:130
|
||||||
msgid "Are you sure you want to delete this ammo?"
|
msgid "Are you sure you want to delete this ammo?"
|
||||||
|
10
priv/i18n/de.tbx
Normal file
10
priv/i18n/de.tbx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE martif PUBLIC "ISO 12200:1999A//DTD MARTIF core (DXFcdV04)//EN" "TBXcdv04.dtd">
|
||||||
|
<martif type="TBX">
|
||||||
|
<martifHeader>
|
||||||
|
<fileDesc>
|
||||||
|
<sourceDesc><p>Translate Toolkit</p></sourceDesc>
|
||||||
|
</fileDesc>
|
||||||
|
</martifHeader>
|
||||||
|
<text><body></body></text>
|
||||||
|
</martif>
|
@ -304,9 +304,9 @@ defmodule Cannery.AccountsTest do
|
|||||||
end
|
end
|
||||||
|
|
||||||
test "deletes all tokens for the given user", %{user: user} do
|
test "deletes all tokens for the given user", %{user: user} do
|
||||||
_ = Accounts.generate_user_session_token(user)
|
_token = Accounts.generate_user_session_token(user)
|
||||||
|
|
||||||
{:ok, _} =
|
{:ok, _user} =
|
||||||
Accounts.update_user_password(user, valid_user_password(), %{
|
Accounts.update_user_password(user, valid_user_password(), %{
|
||||||
"password" => "new valid password"
|
"password" => "new valid password"
|
||||||
})
|
})
|
||||||
@ -501,8 +501,8 @@ defmodule Cannery.AccountsTest do
|
|||||||
end
|
end
|
||||||
|
|
||||||
test "deletes all tokens for the given user", %{user: user} do
|
test "deletes all tokens for the given user", %{user: user} do
|
||||||
_ = Accounts.generate_user_session_token(user)
|
_token = Accounts.generate_user_session_token(user)
|
||||||
{:ok, _} = Accounts.reset_user_password(user, %{"password" => "new valid password"})
|
{:ok, _user} = Accounts.reset_user_password(user, %{"password" => "new valid password"})
|
||||||
refute Repo.get_by(UserToken, user_id: user.id)
|
refute Repo.get_by(UserToken, user_id: user.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -116,7 +116,7 @@ defmodule CanneryWeb.UserAuthTest do
|
|||||||
end
|
end
|
||||||
|
|
||||||
test "does not authenticate if data is missing", %{conn: conn, current_user: current_user} do
|
test "does not authenticate if data is missing", %{conn: conn, current_user: current_user} do
|
||||||
_ = Accounts.generate_user_session_token(current_user)
|
_token = Accounts.generate_user_session_token(current_user)
|
||||||
conn = UserAuth.fetch_current_user(conn, [])
|
conn = UserAuth.fetch_current_user(conn, [])
|
||||||
refute get_session(conn, :user_token)
|
refute get_session(conn, :user_token)
|
||||||
refute conn.assigns.current_user
|
refute conn.assigns.current_user
|
||||||
|
@ -5,8 +5,7 @@ defmodule CanneryWeb.UserConfirmationControllerTest do
|
|||||||
|
|
||||||
use CanneryWeb.ConnCase, async: true
|
use CanneryWeb.ConnCase, async: true
|
||||||
import CanneryWeb.Gettext
|
import CanneryWeb.Gettext
|
||||||
alias Cannery.Accounts
|
alias Cannery.{Accounts, Repo}
|
||||||
alias Cannery.Repo
|
|
||||||
|
|
||||||
@moduletag :user_confirmation_controller_test
|
@moduletag :user_confirmation_controller_test
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
|
|||||||
# |> form("#ammo_group-form", ammo_group: @invalid_attrs)
|
# |> form("#ammo_group-form", ammo_group: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#ammo_group-form", ammo_group: @create_attrs)
|
|> form("#ammo_group-form", ammo_group: @create_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -75,7 +75,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
|
|||||||
# |> form("#ammo_group-form", ammo_group: @invalid_attrs)
|
# |> form("#ammo_group-form", ammo_group: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#ammo_group-form",
|
|> form("#ammo_group-form",
|
||||||
ammo_group: @create_attrs |> Map.put("multiplier", to_string(multiplier))
|
ammo_group: @create_attrs |> Map.put("multiplier", to_string(multiplier))
|
||||||
@ -135,7 +135,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
|
|||||||
# |> form("#shot_group-form", shot_group: @invalid_attrs)
|
# |> form("#shot_group-form", shot_group: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "is invalid")
|
# |> render_change() =~ dgettext("errors", "is invalid")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#shot-group-form", shot_group: @shot_group_create_attrs)
|
|> form("#shot-group-form", shot_group: @shot_group_create_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -158,7 +158,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
|
|||||||
# |> form("#ammo_group-form", ammo_group: @invalid_attrs)
|
# |> form("#ammo_group-form", ammo_group: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#ammo_group-form", ammo_group: @update_attrs)
|
|> form("#ammo_group-form", ammo_group: @update_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -204,7 +204,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
|
|||||||
# |> form("#ammo_group-form", ammo_group: @invalid_attrs)
|
# |> form("#ammo_group-form", ammo_group: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
show_live
|
show_live
|
||||||
|> form("#ammo_group-form", ammo_group: @update_attrs)
|
|> form("#ammo_group-form", ammo_group: @update_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -226,7 +226,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
|
|||||||
# |> form("#shot_group-form", shot_group: @invalid_attrs)
|
# |> form("#shot_group-form", shot_group: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "is invalid")
|
# |> render_change() =~ dgettext("errors", "is invalid")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#shot-group-form", shot_group: @shot_group_create_attrs)
|
|> form("#shot-group-form", shot_group: @shot_group_create_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -251,7 +251,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
|
|||||||
# |> form("#shot_group-form", shot_group: @invalid_attrs)
|
# |> form("#shot_group-form", shot_group: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "is invalid")
|
# |> render_change() =~ dgettext("errors", "is invalid")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#shot-group-form", shot_group: @shot_group_update_attrs)
|
|> form("#shot-group-form", shot_group: @shot_group_update_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
|
@ -62,7 +62,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|
|||||||
# |> form("#ammo_type-form", ammo_type: @invalid_attrs)
|
# |> form("#ammo_type-form", ammo_type: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#ammo_type-form", ammo_type: @create_attrs)
|
|> form("#ammo_type-form", ammo_type: @create_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -86,7 +86,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|
|||||||
# |> form("#ammo_type-form", ammo_type: @invalid_attrs)
|
# |> form("#ammo_type-form", ammo_type: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#ammo_type-form", ammo_type: @update_attrs)
|
|> form("#ammo_type-form", ammo_type: @update_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -128,7 +128,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
|
|||||||
# |> form("#ammo_type-form", ammo_type: @invalid_attrs)
|
# |> form("#ammo_type-form", ammo_type: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
show_live
|
show_live
|
||||||
|> form("#ammo_type-form", ammo_type: @update_attrs)
|
|> form("#ammo_type-form", ammo_type: @update_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
|
@ -52,7 +52,7 @@ defmodule CanneryWeb.ContainerLiveTest do
|
|||||||
# |> form("#container-form", container: @invalid_attrs)
|
# |> form("#container-form", container: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#container-form", container: @create_attrs)
|
|> form("#container-form", container: @create_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -78,7 +78,7 @@ defmodule CanneryWeb.ContainerLiveTest do
|
|||||||
# |> form("#container-form", container: @invalid_attrs)
|
# |> form("#container-form", container: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#container-form", container: @update_attrs)
|
|> form("#container-form", container: @update_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -123,7 +123,7 @@ defmodule CanneryWeb.ContainerLiveTest do
|
|||||||
# |> form("#container-form", container: @invalid_attrs)
|
# |> form("#container-form", container: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
show_live
|
show_live
|
||||||
|> form("#container-form", container: @update_attrs)
|
|> form("#container-form", container: @update_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
|
@ -40,7 +40,7 @@ defmodule CanneryWeb.InviteLiveTest do
|
|||||||
# |> form("#invite-form", invite: @invalid_attrs)
|
# |> form("#invite-form", invite: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#invite-form", invite: @create_attrs)
|
|> form("#invite-form", invite: @create_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -63,7 +63,7 @@ defmodule CanneryWeb.InviteLiveTest do
|
|||||||
# |> form("#invite-form", invite: @invalid_attrs)
|
# |> form("#invite-form", invite: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#invite-form", invite: @update_attrs)
|
|> form("#invite-form", invite: @update_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
|
@ -49,7 +49,7 @@ defmodule CanneryWeb.RangeLiveTest do
|
|||||||
# |> form("#shot_group-form", shot_group: @invalid_attrs)
|
# |> form("#shot_group-form", shot_group: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "is invalid")
|
# |> render_change() =~ dgettext("errors", "is invalid")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#shot-group-form", shot_group: @create_attrs)
|
|> form("#shot-group-form", shot_group: @create_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -71,7 +71,7 @@ defmodule CanneryWeb.RangeLiveTest do
|
|||||||
# |> form("#shot_group-form", shot_group: @invalid_attrs)
|
# |> form("#shot_group-form", shot_group: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "is invalid")
|
# |> render_change() =~ dgettext("errors", "is invalid")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#shot-group-form", shot_group: @update_attrs)
|
|> form("#shot-group-form", shot_group: @update_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
|
@ -53,7 +53,7 @@ defmodule CanneryWeb.TagLiveTest do
|
|||||||
# |> form("#tag-form", tag: @invalid_attrs)
|
# |> form("#tag-form", tag: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#tag-form", tag: @create_attrs)
|
|> form("#tag-form", tag: @create_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
@ -75,7 +75,7 @@ defmodule CanneryWeb.TagLiveTest do
|
|||||||
# |> form("#tag-form", tag: @invalid_attrs)
|
# |> form("#tag-form", tag: @invalid_attrs)
|
||||||
# |> render_change() =~ dgettext("errors", "can't be blank")
|
# |> render_change() =~ dgettext("errors", "can't be blank")
|
||||||
|
|
||||||
{:ok, _, html} =
|
{:ok, _view, html} =
|
||||||
index_live
|
index_live
|
||||||
|> form("#tag-form", tag: @update_attrs)
|
|> form("#tag-form", tag: @update_attrs)
|
||||||
|> render_submit()
|
|> render_submit()
|
||||||
|
@ -5,12 +5,11 @@ defmodule CanneryWeb.ErrorViewTest do
|
|||||||
|
|
||||||
use CanneryWeb.ConnCase, async: true
|
use CanneryWeb.ConnCase, async: true
|
||||||
import CanneryWeb.Gettext
|
import CanneryWeb.Gettext
|
||||||
|
|
||||||
@moduletag :error_view_test
|
|
||||||
|
|
||||||
# Bring render/3 and render_to_string/3 for testing custom views
|
# Bring render/3 and render_to_string/3 for testing custom views
|
||||||
import Phoenix.View
|
import Phoenix.View
|
||||||
|
|
||||||
|
@moduletag :error_view_test
|
||||||
|
|
||||||
test "renders 404.html" do
|
test "renders 404.html" do
|
||||||
assert render_to_string(CanneryWeb.ErrorView, "404.html", []) =~
|
assert render_to_string(CanneryWeb.ErrorView, "404.html", []) =~
|
||||||
dgettext("errors", "Not found")
|
dgettext("errors", "Not found")
|
||||||
|
@ -25,6 +25,7 @@ defmodule CanneryWeb.ConnCase do
|
|||||||
# Import conveniences for testing with connections
|
# Import conveniences for testing with connections
|
||||||
import Plug.Conn
|
import Plug.Conn
|
||||||
import Phoenix.ConnTest
|
import Phoenix.ConnTest
|
||||||
|
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||||
import Cannery.Fixtures
|
import Cannery.Fixtures
|
||||||
import CanneryWeb.ConnCase
|
import CanneryWeb.ConnCase
|
||||||
|
|
||||||
|
@ -22,10 +22,8 @@ defmodule Cannery.DataCase do
|
|||||||
alias Cannery.Repo
|
alias Cannery.Repo
|
||||||
|
|
||||||
import Ecto
|
import Ecto
|
||||||
import Ecto.Changeset
|
import Ecto.{Changeset, Query}
|
||||||
import Ecto.Query
|
import Cannery.{DataCase, Fixtures}
|
||||||
import Cannery.DataCase
|
|
||||||
import Cannery.Fixtures
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -45,7 +43,7 @@ defmodule Cannery.DataCase do
|
|||||||
"""
|
"""
|
||||||
def errors_on(changeset) do
|
def errors_on(changeset) do
|
||||||
Ecto.Changeset.traverse_errors(changeset, fn {message, opts} ->
|
Ecto.Changeset.traverse_errors(changeset, fn {message, opts} ->
|
||||||
Regex.replace(~r"%{(\w+)}", message, fn _, key ->
|
Regex.replace(~r"%{(\w+)}", message, fn _content, key ->
|
||||||
opts |> Keyword.get(String.to_existing_atom(key), key) |> to_string()
|
opts |> Keyword.get(String.to_existing_atom(key), key) |> to_string()
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
Reference in New Issue
Block a user