107 Commits

Author SHA1 Message Date
ab8561fcf0 use component macros for live_helper components
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-15 00:48:07 -04:00
8163b906a2 remove data-qa 2023-03-15 00:47:15 -04:00
b29a5cce7b bump version
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-10 16:58:49 -05:00
9205a04ac5 tweak invite and settings pages
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-26 18:21:14 -05:00
632a9e1379 remove extraneous aliases
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-26 14:22:54 -05:00
92cc49630d merge base project into cannery
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-26 00:40:55 -05:00
a778f5a61f rename to cannery 2023-02-25 16:02:08 -05:00
07ff796553 fix more gettexts
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-25 00:59:05 -05:00
07b31fcc86 remove doctests 2023-02-25 00:59:05 -05:00
bc034c0361 remove doctests 2023-02-25 00:58:33 -05:00
eb9280fa7e fix missing gettexts 2023-02-25 00:39:02 -05:00
ad1e44fd42 improve user settings 2023-02-14 01:06:50 -05:00
4e9f66f006 bump version 2023-02-14 01:06:00 -05:00
81350f9898 improve user settings page 2023-02-14 00:06:43 -05:00
9c4a32896f improve logger
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-07 00:18:16 -05:00
56dae6cdfe improve logger 2023-02-07 00:14:20 -05:00
8ef3bd65a3 remove search from topbar 2023-02-07 00:06:25 -05:00
c8cadd6246 remove phoenix logo 2023-02-07 00:03:10 -05:00
3f143262d4 improve ci
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-05 10:37:05 -05:00
ebe09bcf84 improve ci 2023-02-05 10:24:47 -05:00
fd0b2c455a fix tests 2023-02-04 21:50:43 -05:00
f1139d0ec4 improve oban logging 2023-02-04 20:47:47 -05:00
cd6bb6fbc3 fix padding on chrome 2023-02-04 20:40:46 -05:00
5c05f3b6fe use credo style 2023-02-04 17:32:40 -05:00
30d3f76fe1 record invites 2023-02-04 16:11:58 -05:00
ed8c20e967 improve invites 2023-02-04 15:05:00 -05:00
7b60938a75 improve templates 2023-02-04 13:01:11 -05:00
f19d024d8a fix bug with public registration being disabled 2023-02-04 11:35:32 -05:00
1fbed50b0f add crypto to extra applications 2023-02-01 22:39:38 -05:00
737484c36e add accounts doctests 2023-01-29 15:24:14 -05:00
6dbadc58ae fix runtime config 2023-01-26 19:55:59 -05:00
f155a43ee8 add qr code for invite link 2023-01-26 00:46:21 -05:00
bbaa1dfd6b update to liveview 0.18 2023-01-26 00:31:13 -05:00
2c2b9fefc9 use list for classes 2023-01-25 23:13:18 -05:00
bafc824a32 add subpixel antialiasing 2023-01-25 22:15:18 -05:00
8c2f7e0509 fix padding at bottom of page in chrome 2023-01-25 22:14:17 -05:00
22abc7a8d0 improve locale 2023-01-25 21:50:14 -05:00
5a685ac00e use topbar through npm 2023-01-25 21:18:00 -05:00
a5c12b3e17 fix webpack 2023-01-25 21:14:55 -05:00
27af5acf8b minimize disconnection modal 2023-01-25 21:00:34 -05:00
469428c007 add topbar.js on form submit and page navigate 2023-01-25 20:31:36 -05:00
1cd28e43b8 update elixir and npm versions 2023-01-22 23:20:02 -05:00
695002c9d9 don't override core aliases 2023-01-22 22:41:42 -05:00
dde60d71d1 update gettext 2023-01-22 22:37:49 -05:00
91794ddc55 upgrade dependencies 2023-01-22 22:36:20 -05:00
1e3cec95fe update drone config 2023-01-07 21:00:15 -05:00
f0a8c515f9 update deps 2023-01-07 21:00:15 -05:00
e99775eef2 fix gettext merge command 2023-01-07 21:00:15 -05:00
6760f83ca0 add gettext changes 2023-01-07 21:00:15 -05:00
10877bb754 rename page path to home path 2023-01-07 21:00:15 -05:00
38a581b639 add registered on date to user card 2023-01-07 21:00:15 -05:00
9408705430 update deps 2023-01-07 21:00:14 -05:00
302aa7eeda add locale to user settings 2023-01-07 21:00:14 -05:00
fd4fdcc36b add table component 2023-01-07 21:00:14 -05:00
3cb723b9e4 update build settings 2023-01-07 21:00:14 -05:00
1f92c452d1 fix tests 2023-01-07 21:00:14 -05:00
c10cff63ea add invites route 2023-01-07 21:00:14 -05:00
70faed71d0 style disconnection and loading screens 2023-01-07 21:00:14 -05:00
b5c46c09ec fix oban 2023-01-07 21:00:14 -05:00
7745765fc0 update npm 2023-01-07 21:00:14 -05:00
e16fbba810 gettext page_live 2023-01-07 21:00:14 -05:00
e35bdf101b update components 2023-01-07 21:00:14 -05:00
aa314e5ca1 update main routes 2023-01-07 21:00:14 -05:00
616de3c117 update tests 2023-01-07 21:00:14 -05:00
74bcec6cfe update controllers and auth 2023-01-07 21:00:14 -05:00
41090c46d0 add invites 2023-01-07 21:00:14 -05:00
c3f5744ad6 fix layout 2023-01-07 21:00:14 -05:00
95a339fe02 add random script 2023-01-07 21:00:14 -05:00
1e3b027367 fix docker files 2023-01-07 21:00:14 -05:00
dd46e1795f add credo 2023-01-07 21:00:14 -05:00
9e517e6477 add emails 2023-01-07 21:00:14 -05:00
34118299e9 add exdoc 2022-02-25 21:13:50 -05:00
97a9b6d51a prevent unconfirmed users from logging in 2022-02-16 22:16:19 -05:00
059004ba78 mix format 2022-02-16 22:15:47 -05:00
5d02ed6369 update deps 2022-02-16 22:15:16 -05:00
ec6acdbb5d update swoosh 2022-02-15 19:12:35 -05:00
33d82a902d add exdoc configs 2022-02-15 18:57:06 -05:00
fc5b03d680 enable live dashboard os monitoring 2022-02-15 18:57:01 -05:00
c918dbe4bf improve changeset errors 2022-02-15 18:22:58 -05:00
23b60e032d add datetime helper 2022-02-15 02:50:36 -05:00
7283932d85 use topbar component 2022-02-13 21:28:20 -05:00
8ff1fd0276 add gettext step to docker file 2022-02-13 15:50:48 -05:00
4ef09f5279 heex templates 2022-02-12 23:26:29 -05:00
9734be4966 add oban 2022-02-12 23:24:11 -05:00
485965d9c9 npm audit 2022-02-12 23:23:09 -05:00
e9cdb0f717 add dockerhub build and publish step 2022-02-12 02:38:29 -05:00
1c07449b54 add alpine.js 2022-02-12 02:37:10 -05:00
b64e85f65c add drone ci 2022-01-23 00:27:43 -05:00
9387756109 mix format 2022-01-23 00:00:53 -05:00
f1f3082368 add MaintainAttrs hook 2022-01-22 23:59:58 -05:00
50a8a79596 update readme and docker-compose.yml 2022-01-22 23:44:47 -05:00
67b48e1a3f format with standard js 2022-01-22 22:56:53 -05:00
67c30d7f88 add standard js 2022-01-22 22:56:38 -05:00
728728a5a4 fix tests 2022-01-22 20:44:38 -05:00
a64d92a6cf add dialyzer and credo to tests 2022-01-22 20:44:34 -05:00
6227d64072 set generator settings 2022-01-22 20:13:53 -05:00
46eed25a94 only start automigrator in prod env 2022-01-22 20:12:32 -05:00
3674eeaf5a fix tests 2022-01-22 15:24:04 -05:00
f0676a2433 add mix format to tests 2022-01-22 15:24:04 -05:00
a72a4b0cbe add heex_formatter 2022-01-22 15:24:04 -05:00
a2dea04668 update to 1.6 2022-01-22 14:25:37 -05:00
3dc255b7c2 add touchless docker deploys 2021-09-04 16:19:23 -04:00
bde1cff7a4 add font awesome 2021-09-02 23:32:53 -04:00
66cc11e9eb add liveview helpers 2021-09-02 23:32:53 -04:00
81a250206e update npm 2021-09-02 23:32:52 -04:00
6d5f7f68df style registration pages 2021-09-02 23:32:52 -04:00
5b5f1ce1e5 run phx.new and add phx.gen.auth 2021-08-15 19:11:09 -04:00
88 changed files with 1901 additions and 1123 deletions

View File

@ -13,20 +13,24 @@ steps:
mount: mount:
- _build - _build
- deps - deps
- assets/node_modules/ - .npm
- .mix
- name: test - name: test
image: elixir:1.14.1-alpine image: elixir:1.14.1-alpine
environment: environment:
TEST_DATABASE_URL: ecto://postgres:postgres@database/cannery_test TEST_DATABASE_URL: ecto://postgres:postgres@database/cannery_test
HOST: testing.example.tld HOST: testing.example.tld
MIX_HOME: /drone/src/.mix
MIX_ARCHIVES: /drone/src/.mix/archives
MIX_ENV: test
commands: commands:
- apk add --no-cache build-base npm git python3 - apk add --no-cache build-base npm git
- mix local.rebar --force - mix local.rebar --force --if-missing
- mix local.hex --force - mix local.hex --force --if-missing
- mix deps.get - mix deps.get
- mix deps.compile - npm set cache .npm
- npm --prefix ./assets ci --progress=false --no-audit --loglevel=error - npm --prefix ./assets ci --no-audit --prefer-offline
- npm run --prefix ./assets deploy - npm run --prefix ./assets deploy
- mix do phx.digest, gettext.extract - mix do phx.digest, gettext.extract
- mix test.all - mix test.all
@ -76,7 +80,8 @@ steps:
mount: mount:
- _build - _build
- deps - deps
- assets/node_modules/ - .npm
- .mix
services: services:
- name: database - name: database

2
.gitignore vendored
View File

@ -25,7 +25,7 @@ cannery-*.tar
# If NPM crashes, it generates a log, let's ignore it too. # If NPM crashes, it generates a log, let's ignore it too.
npm-debug.log npm-debug.log
# Ignore assets that are produced by build tools. # The directory NPM downloads your dependencies sources to.
/assets/node_modules/ /assets/node_modules/
# Since we are building assets from assets/, # Since we are building assets from assets/,

View File

@ -1,3 +1,3 @@
elixir 1.14.1-otp-25 elixir 1.14.1-otp-25
erlang 25.1.2 erlang 25.1.2
nodejs 18.12.1 nodejs 18.9.1

View File

@ -1,3 +1,11 @@
# v0.8.4
- Improve accessibility
# v0.8.3
- Improve some styles
- Improve server log
- Various minor improvements
# v0.8.2 # v0.8.2
- Fix bug with public registration - Fix bug with public registration
- Improve templates - Improve templates

View File

@ -63,7 +63,8 @@ And as always, thank you!
[`phx_gen_auth`](https://hexdocs.pm/phx_gen_auth/). [`phx_gen_auth`](https://hexdocs.pm/phx_gen_auth/).
- `Dockerfile` and example `docker-compose.yml` - `Dockerfile` and example `docker-compose.yml`
- Automatic migrations in `MIX_ENV=prod` or Docker image - Automatic migrations in `MIX_ENV=prod` or Docker image
- JS linting with [standard.js](https://standardjs.com) - JS linting with [standard.js](https://standardjs.com), HEEx linting with
[heex_formatter](https://github.com/feliperenan/heex_formatter)
## Docs ## Docs
@ -109,7 +110,7 @@ In `dev` mode, Cannery will listen for these environment variables at runtime.
- `POOL_SIZE`: Controls the pool size to use with PostgreSQL. Defaults to `10`. - `POOL_SIZE`: Controls the pool size to use with PostgreSQL. Defaults to `10`.
- `REGISTRATION`: Controls if user sign-up should be invite only or set to public. Set to `public` to enable public registration. Defaults to `invite`. - `REGISTRATION`: Controls if user sign-up should be invite only or set to public. Set to `public` to enable public registration. Defaults to `invite`.
- `LOCALE`: Sets a custom default locale. Defaults to `en_US`. - `LOCALE`: Sets a custom default locale. Defaults to `en_US`.
- Available options: `en_US`, `de`, and `fr` - Available options: `en_US`, `de`, `fr`, and `es`
## `MIX_ENV=test` ## `MIX_ENV=test`

View File

@ -64,7 +64,7 @@ You can use the following environment variables to configure Cannery in
- `REGISTRATION`: Controls if user sign-up should be invite only or set to - `REGISTRATION`: Controls if user sign-up should be invite only or set to
public. Set to `public` to enable public registration. Defaults to `invite`. public. Set to `public` to enable public registration. Defaults to `invite`.
- `LOCALE`: Sets a custom default locale. Defaults to `en_US` - `LOCALE`: Sets a custom default locale. Defaults to `en_US`
- Available options: `en_US`, `de`, and `fr` - Available options: `en_US`, `de`, `fr` and `es`
- `SMTP_HOST`: The url for your SMTP email provider. Must be set - `SMTP_HOST`: The url for your SMTP email provider. Must be set
- `SMTP_PORT`: The port for your SMTP relay. Defaults to `587`. - `SMTP_PORT`: The port for your SMTP relay. Defaults to `587`.
- `SMTP_USERNAME`: The username for your SMTP relay. Must be set! - `SMTP_USERNAME`: The username for your SMTP relay. Must be set!

View File

@ -25,7 +25,6 @@
} }
.btn { .btn {
@apply inline-block break-words;
@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;
@ -52,7 +51,6 @@
} }
.link { .link {
@apply inline-block break-words;
@apply hover:underline; @apply hover:underline;
@apply transition-colors duration-500 ease-in-out; @apply transition-colors duration-500 ease-in-out;
} }

View File

@ -3,8 +3,8 @@
"description": " ", "description": " ",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": "18.12.1", "node": "v18.9.1",
"npm": "8.19.2" "npm": "8.10.0"
}, },
"scripts": { "scripts": {
"deploy": "NODE_ENV=production webpack --mode production", "deploy": "NODE_ENV=production webpack --mode production",

View File

@ -16,9 +16,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> register_user(%{email: "foo@example.com", password: "valid_password"}) iex> get_user_by_email("foo@example.com")
iex> with %User{} <- get_user_by_email("foo@example.com"), do: :passed %User{}
:passed
iex> get_user_by_email("unknown@example.com") iex> get_user_by_email("unknown@example.com")
nil nil
@ -34,9 +33,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> register_user(%{email: "foo@example.com", password: "valid_password"}) iex> get_user_by_email_and_password("foo@example.com", "valid_password")
iex> with %User{} <- get_user_by_email_and_password("foo@example.com", "valid_password"), do: :passed %User{}
:passed
iex> get_user_by_email_and_password("foo@example.com", "invalid_password") iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
nil nil
@ -57,15 +55,14 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> get_user!(user_id)
iex> get_user!(user.id)
user user
> get_user!() iex> get_user!()
** (Ecto.NoResultsError) ** (Ecto.NoResultsError)
""" """
@spec get_user!(User.t()) :: User.t() @spec get_user!(User.id()) :: User.t()
def get_user!(id) do def get_user!(id) do
Repo.get!(User, id) Repo.get!(User, id)
end end
@ -75,10 +72,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user1} = register_user(%{email: "foo1@example.com", password: "valid_password"}) iex> list_all_users_by_role(user1)
iex> {:ok, user2} = register_user(%{email: "foo2@example.com", password: "valid_password"}) %{admin: [%User{role: :admin}], user: [%User{role: :user}]}
iex> with %{admin: [^user1], user: [^user2]} <- list_all_users_by_role(user1), do: :passed
:passed
""" """
@spec list_all_users_by_role(User.t()) :: %{User.role() => [User.t()]} @spec list_all_users_by_role(User.t()) :: %{User.role() => [User.t()]}
@ -91,9 +86,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> list_users_by_role(:admin)
iex> with [^user] <- list_users_by_role(:admin), do: :passed [%User{role: :admin}]
:passed
""" """
@spec list_users_by_role(:admin) :: [User.t()] @spec list_users_by_role(:admin) :: [User.t()]
@ -108,13 +102,11 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> with {:ok, %User{email: "foo@example.com"}} <- iex> register_user(%{email: "foo@example.com", password: "valid_password"})
...> register_user(%{email: "foo@example.com", password: "valid_password"}), {:ok, %User{email: "foo@example.com"}}
...> do: :passed
:passed
iex> with {:error, %Changeset{}} <- register_user(%{email: "foo@example"}), do: :passed iex> register_user(%{email: "foo@example"})
:passed {:error, %Changeset{}}
""" """
@spec register_user(attrs :: map()) :: @spec register_user(attrs :: map()) ::
@ -149,11 +141,11 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> with %Changeset{} <- change_user_registration(), do: :passed iex> change_user_registration()
:passed %Changeset{}
iex> with %Changeset{} <- change_user_registration(%{password: "hi"}), do: :passed iex> change_user_registration(%{password: "hi"}
:passed %Changeset{}
""" """
@spec change_user_registration() :: User.changeset() @spec change_user_registration() :: User.changeset()
@ -169,8 +161,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> with %Changeset{} <- change_user_email(%User{email: "foo@example.com"}), do: :passed iex> change_user_email(%User{email: "foo@example.com"})
:passed %Changeset{}
""" """
@spec change_user_email(User.t()) :: User.changeset() @spec change_user_email(User.t()) :: User.changeset()
@ -184,8 +176,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> with %Changeset{} <- change_user_role(%User{}, :user), do: :passed iex> change_user_role(%User{}, :user)
:passed %Changeset{}
""" """
@spec change_user_role(User.t(), User.role()) :: User.changeset() @spec change_user_role(User.t(), User.role()) :: User.changeset()
@ -199,17 +191,11 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> apply_user_email(user, "valid_password", %{email: "new_email@account.com"})
iex> with {:ok, %User{}} <- {:ok, %User{}}
...> apply_user_email(user, "valid_password", %{email: "new_email@account.com"}),
...> do: :passed
:passed
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> apply_user_email(user, "invalid password", %{email: "new_email@account"})
iex> with {:error, %Changeset{}} <- {:error, %Changeset{}}
...> apply_user_email(user, "invalid password", %{email: "new_email@account"}),
...> do: :passed
:passed
""" """
@spec apply_user_email(User.t(), email :: String.t(), attrs :: map()) :: @spec apply_user_email(User.t(), email :: String.t(), attrs :: map()) ::
@ -254,12 +240,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, %{id: user_id} = user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> deliver_update_email_instructions(user, "new_foo@example.com", fn _token -> "example url" end)
iex> with %Oban.Job{ %Oban.Job{args: %{email: :update_email, user_id: ^user_id, attrs: %{url: "example url"}}}
...> args: %{email: :update_email, user_id: ^user_id, attrs: %{url: "example url"}}
...> } <- deliver_update_email_instructions(user, "new_foo@example.com", fn _token -> "example url" end),
...> do: :passed
:passed
""" """
@spec deliver_update_email_instructions(User.t(), current_email :: String.t(), function) :: @spec deliver_update_email_instructions(User.t(), current_email :: String.t(), function) ::
@ -276,8 +258,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> with %Changeset{} <- change_user_password(%User{}), do: :passed iex> change_user_password(%User{})
:passed %Changeset{}
""" """
@spec change_user_password(User.t(), attrs :: map()) :: User.changeset() @spec change_user_password(User.t(), attrs :: map()) :: User.changeset()
@ -290,20 +272,14 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> reset_user_password(user, %{
iex> with {:ok, %User{}} <- ...> password: "new password",
...> reset_user_password(user, %{ ...> password_confirmation: "new password"
...> password: "new password", ...> })
...> password_confirmation: "new password" {:ok, %User{}}
...> }),
...> do: :passed
:passed
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> update_user_password(user, "invalid password", %{password: "123"})
iex> with {:error, %Changeset{}} <- {:error, %Changeset{}}
...> update_user_password(user, "invalid password", %{password: "123"}),
...> do: :passed
:passed
""" """
@spec update_user_password(User.t(), String.t(), attrs :: map()) :: @spec update_user_password(User.t(), String.t(), attrs :: map()) ::
@ -329,8 +305,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> with %Changeset{} <- change_user_locale(%User{}), do: :passed iex> change_user_locale(%User{})
:passed %Changeset{}
""" """
@spec change_user_locale(User.t()) :: User.changeset() @spec change_user_locale(User.t()) :: User.changeset()
@ -343,9 +319,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> update_user_locale(user, "en_US")
iex> with {:ok, %User{}} <- update_user_locale(user, "en_US"), do: :passed {:ok, %User{}}
:passed
""" """
@spec update_user_locale(User.t(), locale :: String.t()) :: @spec update_user_locale(User.t(), locale :: String.t()) ::
@ -359,13 +334,11 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> delete_user!(user, %User{id: 123, role: :admin})
iex> with %User{} <- delete_user!(user, %User{id: 123, role: :admin}), do: :passed %User{}
:passed
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> delete_user!(user, user)
iex> with %User{} <- delete_user!(user, user), do: :passed %User{}
:passed
""" """
@spec delete_user!(user_to_delete :: User.t(), User.t()) :: User.t() @spec delete_user!(user_to_delete :: User.t(), User.t()) :: User.t()
@ -421,11 +394,10 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> is_admin?(%User{role: :admin})
iex> is_admin?(user)
true true
iex> is_admin?(%User{id: Ecto.UUID.generate()}) iex> is_admin?(%User{})
false false
""" """
@ -439,8 +411,7 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> is_already_admin?(%User{role: :admin})
iex> is_already_admin?(user)
true true
iex> is_already_admin?(%User{}) iex> is_already_admin?(%User{})
@ -458,15 +429,9 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, %{id: user_id} = user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> deliver_user_confirmation_instructions(user, fn _token -> "example url" end)
iex> with %Oban.Job{ %Oban.Job{args: %{email: :welcome, user_id: ^user_id, attrs: %{url: "example url"}}}
...> args: %{email: :welcome, user_id: ^user_id, attrs: %{url: "example url"}}
...> } <- deliver_user_confirmation_instructions(user, fn _token -> "example url" end),
...> do: :passed
:passed
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> user = user |> User.confirm_changeset() |> Repo.update!()
iex> deliver_user_confirmation_instructions(user, fn _token -> "example url" end) iex> deliver_user_confirmation_instructions(user, fn _token -> "example url" end)
{:error, :already_confirmed} {:error, :already_confirmed}
@ -514,12 +479,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, %{id: user_id} = user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> deliver_user_reset_password_instructions(user, fn _token -> "example url" end)
iex> with %Oban.Job{args: %{ %Oban.Job{args: %{email: :reset_password, user_id: ^user_id, attrs: %{url: "example url"}}}
...> email: :reset_password, user_id: ^user_id, attrs: %{url: "example url"}}
...> } <- deliver_user_reset_password_instructions(user, fn _token -> "example url" end),
...> do: :passed
:passed
""" """
@spec deliver_user_reset_password_instructions(User.t(), function()) :: Job.t() @spec deliver_user_reset_password_instructions(User.t(), function()) :: Job.t()
@ -535,11 +496,8 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> get_user_by_reset_password_token(encoded_token)
iex> {encoded_token, user_token} = UserToken.build_email_token(user, "reset_password") %User{}
iex> Repo.insert!(user_token)
iex> with %User{} <- get_user_by_reset_password_token(encoded_token), do: :passed
:passed
iex> get_user_by_reset_password_token("invalidtoken") iex> get_user_by_reset_password_token("invalidtoken")
nil nil
@ -560,20 +518,14 @@ defmodule Cannery.Accounts do
## Examples ## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> reset_user_password(user, %{
iex> with {:ok, %User{}} <- ...> password: "new password",
...> reset_user_password(user, %{ ...> password_confirmation: "new password"
...> password: "new password", ...> })
...> password_confirmation: "new password" {:ok, %User{}}
...> }),
...> do: :passed
:passed
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"}) iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
iex> with {:error, %Changeset{}} <- {:error, %Changeset{}}
...> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"}),
...> do: :passed
:passed
""" """
@spec reset_user_password(User.t(), attrs :: map()) :: @spec reset_user_password(User.t(), attrs :: map()) ::

View File

@ -27,21 +27,21 @@ defmodule Cannery.Email do
@spec generate_email(key :: String.t(), User.t(), attrs :: map()) :: t() @spec generate_email(key :: String.t(), User.t(), attrs :: map()) :: t()
def generate_email("welcome", user, %{"url" => url}) do def generate_email("welcome", user, %{"url" => url}) do
user user
|> base_email(dgettext("emails", "Confirm your %{name} account", name: "Cannery")) |> base_email(dgettext("emails", "Confirm your Cannery account"))
|> render_body("confirm_email.html", %{user: user, url: url}) |> render_body("confirm_email.html", %{user: user, url: url})
|> text_body(EmailView.render("confirm_email.txt", %{user: user, url: url})) |> text_body(EmailView.render("confirm_email.txt", %{user: user, url: url}))
end end
def generate_email("reset_password", user, %{"url" => url}) do def generate_email("reset_password", user, %{"url" => url}) do
user user
|> base_email(dgettext("emails", "Reset your %{name} password", name: "Cannery")) |> base_email(dgettext("emails", "Reset your Cannery password"))
|> render_body("reset_password.html", %{user: user, url: url}) |> render_body("reset_password.html", %{user: user, url: url})
|> text_body(EmailView.render("reset_password.txt", %{user: user, url: url})) |> text_body(EmailView.render("reset_password.txt", %{user: user, url: url}))
end end
def generate_email("update_email", user, %{"url" => url}) do def generate_email("update_email", user, %{"url" => url}) do
user user
|> base_email(dgettext("emails", "Update your %{name} email", name: "Cannery")) |> base_email(dgettext("emails", "Update your Cannery email"))
|> render_body("update_email.html", %{user: user, url: url}) |> render_body("update_email.html", %{user: user, url: url})
|> text_body(EmailView.render("update_email.txt", %{user: user, url: url})) |> text_body(EmailView.render("update_email.txt", %{user: user, url: url}))
end end

View File

@ -79,7 +79,9 @@ defmodule Cannery.ActivityLog.ShotGroup do
defp validate_create_shot_group_count(changeset, %AmmoGroup{count: ammo_group_count}) do defp validate_create_shot_group_count(changeset, %AmmoGroup{count: ammo_group_count}) do
if changeset |> Changeset.get_field(:count) > ammo_group_count do if changeset |> Changeset.get_field(:count) > ammo_group_count do
error = dgettext("errors", "Count must be less than %{count}", count: ammo_group_count) error =
dgettext("errors", "Count must be less than %{count} shots", count: ammo_group_count)
changeset |> Changeset.add_error(:count, error) changeset |> Changeset.add_error(:count, error)
else else
changeset changeset
@ -115,7 +117,9 @@ defmodule Cannery.ActivityLog.ShotGroup do
cond do cond do
shot_diff_to_add > ammo_group_count -> shot_diff_to_add > ammo_group_count ->
error = dgettext("errors", "Count must be less than %{count}", count: ammo_group_count) error =
dgettext("errors", "Count must be less than %{count} shots", count: ammo_group_count)
changeset |> Changeset.add_error(:count, error) changeset |> Changeset.add_error(:count, error)
new_shot_group_count <= 0 -> new_shot_group_count <= 0 ->

View File

@ -4,7 +4,7 @@ defmodule Cannery.Application do
@moduledoc false @moduledoc false
use Application use Application
alias Cannery.ErrorReporter alias Cannery.Logger
@impl true @impl true
def start(_type, _args) do def start(_type, _args) do
@ -33,7 +33,7 @@ defmodule Cannery.Application do
[:oban, :job, :start], [:oban, :job, :start],
[:oban, :job, :stop] [:oban, :job, :stop]
], ],
&ErrorReporter.handle_event/4, &Logger.handle_event/4,
[] []
) )

View File

@ -1,4 +1,4 @@
defmodule Cannery.ErrorReporter do defmodule Cannery.Logger do
@moduledoc """ @moduledoc """
Custom logger for telemetry events Custom logger for telemetry events
@ -12,41 +12,47 @@ defmodule Cannery.ErrorReporter do
data = data =
get_oban_job_data(meta, measure) get_oban_job_data(meta, measure)
|> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace)) |> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace))
|> pretty_encode()
Logger.error(meta.reason, data: pretty_encode(data)) Logger.error(meta.reason, data: data)
end end
def handle_event([:oban, :job, :start], measure, meta, _config) do def handle_event([:oban, :job, :start], measure, meta, _config) do
Logger.info("Started oban job", data: get_oban_job_data(meta, measure) |> pretty_encode()) data = get_oban_job_data(meta, measure) |> pretty_encode()
Logger.info("Started oban job", data: data)
end end
def handle_event([:oban, :job, :stop], measure, meta, _config) do def handle_event([:oban, :job, :stop], measure, meta, _config) do
Logger.info("Finished oban job", data: get_oban_job_data(meta, measure) |> pretty_encode()) data = get_oban_job_data(meta, measure) |> pretty_encode()
Logger.info("Finished oban job", data: data)
end end
def handle_event([:oban, :job, unhandled_event], measure, meta, _config) do def handle_event([:oban, :job, unhandled_event], measure, meta, _config) do
data = data =
get_oban_job_data(meta, measure) get_oban_job_data(meta, measure)
|> Map.put(:event, unhandled_event) |> Map.put(:event, unhandled_event)
|> pretty_encode()
Logger.warning("Unhandled oban job event", data: pretty_encode(data)) Logger.warning("Unhandled oban job event", data: data)
end end
def handle_event(unhandled_event, measure, meta, config) do def handle_event(unhandled_event, measure, meta, config) do
data = %{ data =
event: unhandled_event, pretty_encode(%{
meta: meta, event: unhandled_event,
measurements: measure, meta: meta,
config: config measurements: measure,
} config: config
})
Logger.warning("Unhandled telemetry event", data: pretty_encode(data)) Logger.warning("Unhandled telemetry event", data: data)
end end
defp get_oban_job_data(%{job: job}, measure) do defp get_oban_job_data(%{job: job}, measure) do
job %{
|> Map.take([:id, :args, :meta, :queue, :worker]) job: job |> Map.take([:id, :args, :meta, :queue, :worker]),
|> Map.merge(measure) measurements: measure
}
end end
defp pretty_encode(data) do defp pretty_encode(data) do

View File

@ -9,7 +9,9 @@ defmodule Cannery.Release do
def rollback(repo, version) do def rollback(repo, version) do
load_app() load_app()
{:ok, _fun, _opts} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
{:ok, _fun_return, _apps} =
Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
end end
defp load_app do defp load_app do
@ -20,7 +22,8 @@ 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, _fun, _opts} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true)) {:ok, _fun_return, _apps} =
Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
end end
end end
end end

View File

@ -1,6 +1,6 @@
defmodule Cannery.Repo.Migrator do defmodule Cannery.Repo.Migrator do
@moduledoc """ @moduledoc """
Genserver to automatically run migrations in prod env Genserver to automatically perform all migration on app start
""" """
use GenServer use GenServer

View File

@ -185,11 +185,7 @@ defmodule CanneryWeb.Components.AmmoTypeTableComponent do
assigns = %{ammo_type: ammo_type} assigns = %{ammo_type: ammo_type}
~H""" ~H"""
<.link <.link navigate={Routes.ammo_type_show_path(Endpoint, :show, @ammo_type)} class="link">
navigate={Routes.ammo_type_show_path(Endpoint, :show, @ammo_type)}
class="link"
data-qa={"view-name-#{@ammo_type.id}"}
>
<%= @ammo_type.name %> <%= @ammo_type.name %>
</.link> </.link>
""" """

View File

@ -6,7 +6,7 @@ defmodule CanneryWeb.Components.Topbar do
use CanneryWeb, :component use CanneryWeb, :component
alias Cannery.Accounts alias Cannery.Accounts
alias CanneryWeb.{Endpoint, HomeLive} alias CanneryWeb.HomeLive
def topbar(assigns) do def topbar(assigns) do
assigns = assigns =
@ -81,19 +81,17 @@ defmodule CanneryWeb.Components.Topbar do
<%= gettext("Range") %> <%= gettext("Range") %>
</.link> </.link>
</li> </li>
<%= if @current_user.role == :admin do %> <li :if={@current_user |> Accounts.is_already_admin?()} class="mx-2 my-1">
<li class="mx-2 my-1"> <.link
<.link navigate={Routes.invite_index_path(Endpoint, :index)}
navigate={Routes.invite_index_path(Endpoint, :index)} class="text-primary-600 text-white hover:underline"
class="text-primary-600 text-white hover:underline" >
> <%= gettext("Invites") %>
<%= gettext("Invites") %> </.link>
</.link> </li>
</li>
<% end %>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
<.link <.link
navigate={Routes.user_settings_path(Endpoint, :edit)} href={Routes.user_settings_path(Endpoint, :edit)}
class="text-primary-600 text-white hover:underline truncate" class="text-primary-600 text-white hover:underline truncate"
> >
<%= @current_user.email %> <%= @current_user.email %>
@ -108,29 +106,33 @@ defmodule CanneryWeb.Components.Topbar do
<i class="fas fa-sign-out-alt"></i> <i class="fas fa-sign-out-alt"></i>
</.link> </.link>
</li> </li>
<%= if @current_user.role == :admin and function_exported?(Routes, :live_dashboard_path, 2) do %> <li
<li class="mx-2 my-1"> :if={
<.link @current_user |> Accounts.is_already_admin?() and
navigate={Routes.live_dashboard_path(Endpoint, :home)} function_exported?(Routes, :live_dashboard_path, 2)
class="text-primary-600 text-white hover:underline" }
> class="mx-2 my-1"
<i class="fas fa-gauge"></i> >
</.link> <.link
</li> navigate={Routes.live_dashboard_path(Endpoint, :home)}
<% end %> class="text-white text-white hover:underline"
>
<i class="fas fa-gauge"></i>
</.link>
</li>
<% else %> <% else %>
<li :if={Accounts.allow_registration?()} class="mx-2 my-1"> <li :if={Accounts.allow_registration?()} class="mx-2 my-1">
<.link <.link
navigate={Routes.user_registration_path(Endpoint, :new)} href={Routes.user_registration_path(Endpoint, :new)}
class="text-primary-600 text-white hover:underline truncate" class="text-white hover:underline truncate"
> >
<%= dgettext("actions", "Register") %> <%= dgettext("actions", "Register") %>
</.link> </.link>
</li> </li>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
<.link <.link
navigate={Routes.user_session_path(Endpoint, :new)} href={Routes.user_session_path(Endpoint, :new)}
class="text-primary-600 text-white hover:underline truncate" class="text-white hover:underline truncate"
> >
<%= dgettext("actions", "Log in") %> <%= dgettext("actions", "Log in") %>
</.link> </.link>

View File

@ -1,4 +1,8 @@
defmodule CanneryWeb.HomeController do defmodule CanneryWeb.HomeController do
@moduledoc """
Controller for home page
"""
use CanneryWeb, :controller use CanneryWeb, :controller
def index(conn, _params) do def index(conn, _params) do

View File

@ -49,7 +49,6 @@
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow self-stretch flex flex-col items-stretch" class="grow self-stretch flex flex-col items-stretch"
data-qa="ammo_group_search"
> >
<%= text_input(f, :search_term, <%= text_input(f, :search_term,
class: "input input-primary", class: "input input-primary",
@ -124,7 +123,11 @@
<.link <.link
navigate={Routes.ammo_group_show_path(Endpoint, :show, ammo_group)} navigate={Routes.ammo_group_show_path(Endpoint, :show, ammo_group)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"view-#{ammo_group.id}"} aria-label={
gettext("View ammo group of %{ammo_group_count} bullets",
ammo_group_count: ammo_group.count
)
}
> >
<i class="fa-fw fa-lg fas fa-eye"></i> <i class="fa-fw fa-lg fas fa-eye"></i>
</.link> </.link>
@ -132,7 +135,11 @@
<.link <.link
patch={Routes.ammo_group_index_path(Endpoint, :edit, ammo_group)} patch={Routes.ammo_group_index_path(Endpoint, :edit, ammo_group)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"edit-#{ammo_group.id}"} aria-label={
gettext("Edit ammo group of %{ammo_group_count} bullets",
ammo_group_count: ammo_group.count
)
}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -140,7 +147,11 @@
<.link <.link
patch={Routes.ammo_group_index_path(Endpoint, :clone, ammo_group)} patch={Routes.ammo_group_index_path(Endpoint, :clone, ammo_group)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"clone-#{ammo_group.id}"} aria-label={
gettext("Clone ammo group of %{ammo_group_count} bullets",
ammo_group_count: ammo_group.count
)
}
> >
<i class="fa-fw fa-lg fas fa-copy"></i> <i class="fa-fw fa-lg fas fa-copy"></i>
</.link> </.link>
@ -151,7 +162,11 @@
phx-click="delete" phx-click="delete"
phx-value-id={ammo_group.id} phx-value-id={ammo_group.id}
data-confirm={dgettext("prompts", "Are you sure you want to delete this ammo?")} data-confirm={dgettext("prompts", "Are you sure you want to delete this ammo?")}
data-qa={"delete-#{ammo_group.id}"} aria-label={
gettext("Delete ammo group of %{ammo_group_count} bullets",
ammo_group_count: ammo_group.count
)
}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
</.link> </.link>

View File

@ -129,7 +129,9 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
<.link <.link
patch={Routes.ammo_group_show_path(Endpoint, :edit_shot_group, @ammo_group, @shot_group)} patch={Routes.ammo_group_show_path(Endpoint, :edit_shot_group, @ammo_group, @shot_group)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"edit-#{@shot_group.id}"} aria-label={
gettext("Edit shot group of %{shot_group_count} shots", shot_group_count: @shot_group.count)
}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -140,7 +142,11 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
phx-click="delete_shot_group" phx-click="delete_shot_group"
phx-value-id={@shot_group.id} phx-value-id={@shot_group.id}
data-confirm={dgettext("prompts", "Are you sure you want to delete this shot record?")} data-confirm={dgettext("prompts", "Are you sure you want to delete this shot record?")}
data-qa={"delete-#{@shot_group.id}"} aria-label={
gettext("Delete shot record of %{shot_group_count} shots",
shot_group_count: @shot_group.count
)
}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
</.link> </.link>

View File

@ -55,7 +55,6 @@
<.link <.link
navigate={Routes.ammo_type_show_path(Endpoint, :show, @ammo_group.ammo_type)} navigate={Routes.ammo_type_show_path(Endpoint, :show, @ammo_group.ammo_type)}
class="mx-4 my-2 btn btn-primary" class="mx-4 my-2 btn btn-primary"
data-qa="details"
> >
<%= dgettext("actions", "View in Catalog") %> <%= dgettext("actions", "View in Catalog") %>
</.link> </.link>
@ -63,7 +62,11 @@
<.link <.link
patch={Routes.ammo_group_show_path(Endpoint, :edit, @ammo_group)} patch={Routes.ammo_group_show_path(Endpoint, :edit, @ammo_group)}
class="mx-4 my-2 text-primary-600 link" class="mx-4 my-2 text-primary-600 link"
data-qa="edit" aria-label={
gettext("Edit ammo group of %{ammo_group_count} bullets",
ammo_group_count: @ammo_group.count
)
}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -73,7 +76,11 @@
class="mx-4 my-2 text-primary-600 link" class="mx-4 my-2 text-primary-600 link"
phx-click="delete" phx-click="delete"
data-confirm={dgettext("prompts", "Are you sure you want to delete this ammo?")} data-confirm={dgettext("prompts", "Are you sure you want to delete this ammo?")}
data-qa="delete" aria-label={
gettext("Delete ammo group of %{ammo_group_count} bullets",
ammo_group_count: @ammo_group.count
)
}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
</.link> </.link>
@ -89,7 +96,6 @@
<.link <.link
patch={Routes.ammo_group_show_path(Endpoint, :move, @ammo_group)} patch={Routes.ammo_group_show_path(Endpoint, :move, @ammo_group)}
class="btn btn-primary" class="btn btn-primary"
data-qa="move"
> >
<%= dgettext("actions", "Move containers") %> <%= dgettext("actions", "Move containers") %>
</.link> </.link>

View File

@ -24,7 +24,6 @@
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow self-stretch flex flex-col items-stretch" class="grow self-stretch flex flex-col items-stretch"
data-qa="ammo_type_search"
> >
<%= text_input(f, :search_term, <%= text_input(f, :search_term,
class: "input input-primary", class: "input input-primary",
@ -60,7 +59,7 @@
<.link <.link
navigate={Routes.ammo_type_show_path(Endpoint, :show, ammo_type)} navigate={Routes.ammo_type_show_path(Endpoint, :show, ammo_type)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"view-#{ammo_type.id}"} aria-label={gettext("View %{ammo_type_name}", ammo_type_name: ammo_type.name)}
> >
<i class="fa-fw fa-lg fas fa-eye"></i> <i class="fa-fw fa-lg fas fa-eye"></i>
</.link> </.link>
@ -68,7 +67,7 @@
<.link <.link
patch={Routes.ammo_type_index_path(Endpoint, :edit, ammo_type)} patch={Routes.ammo_type_index_path(Endpoint, :edit, ammo_type)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"edit-#{ammo_type.id}"} aria-label={gettext("Edit %{ammo_type_name}", ammo_type_name: ammo_type.name)}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -76,7 +75,7 @@
<.link <.link
patch={Routes.ammo_type_index_path(Endpoint, :clone, ammo_type)} patch={Routes.ammo_type_index_path(Endpoint, :clone, ammo_type)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"clone-#{ammo_type.id}"} aria-label={gettext("Clone %{ammo_type_name}", ammo_type_name: ammo_type.name)}
> >
<i class="fa-fw fa-lg fas fa-copy"></i> <i class="fa-fw fa-lg fas fa-copy"></i>
</.link> </.link>
@ -93,7 +92,7 @@
name: ammo_type.name name: ammo_type.name
) )
} }
data-qa={"delete-#{ammo_type.id}"} aria-label={gettext("Delete %{ammo_type_name}", ammo_type_name: ammo_type.name)}
> >
<i class="fa-lg fas fa-trash"></i> <i class="fa-lg fas fa-trash"></i>
</.link> </.link>

View File

@ -16,7 +16,7 @@
<.link <.link
patch={Routes.ammo_type_show_path(Endpoint, :edit, @ammo_type)} patch={Routes.ammo_type_show_path(Endpoint, :edit, @ammo_type)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa="edit" aria-label={gettext("Edit %{ammo_type_name}", ammo_type_name: @ammo_type.name)}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -32,7 +32,7 @@
name: @ammo_type.name name: @ammo_type.name
) )
} }
data-qa="delete" aria-label={gettext("Delete %{ammo_type_name}", ammo_type_name: @ammo_type.name)}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
</.link> </.link>

View File

@ -24,7 +24,6 @@
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow self-stretch flex flex-col items-stretch" class="grow self-stretch flex flex-col items-stretch"
data-qa="container_search"
> >
<%= text_input(f, :search_term, <%= text_input(f, :search_term,
class: "input input-primary", class: "input input-primary",
@ -61,6 +60,7 @@
<.link <.link
patch={Routes.container_index_path(Endpoint, :edit_tags, container)} patch={Routes.container_index_path(Endpoint, :edit_tags, container)}
class="text-primary-600 link" class="text-primary-600 link"
aria-label={gettext("Tag %{container_name}", container_name: container.name)}
> >
<i class="fa-fw fa-lg fas fa-tags"></i> <i class="fa-fw fa-lg fas fa-tags"></i>
</.link> </.link>
@ -70,7 +70,7 @@
<.link <.link
patch={Routes.container_index_path(Endpoint, :edit, container)} patch={Routes.container_index_path(Endpoint, :edit, container)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"edit-#{container.id}"} aria-label={gettext("Edit %{container_name}", container_name: container.name)}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -78,7 +78,7 @@
<.link <.link
patch={Routes.container_index_path(Endpoint, :clone, container)} patch={Routes.container_index_path(Endpoint, :clone, container)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"clone-#{container.id}"} aria-label={gettext("Clone %{container_name}", container_name: container.name)}
> >
<i class="fa-fw fa-lg fas fa-copy"></i> <i class="fa-fw fa-lg fas fa-copy"></i>
</.link> </.link>
@ -91,7 +91,7 @@
data-confirm={ data-confirm={
dgettext("prompts", "Are you sure you want to delete %{name}?", name: container.name) dgettext("prompts", "Are you sure you want to delete %{name}?", name: container.name)
} }
data-qa={"delete-#{container.id}"} aria-label={gettext("Delete %{container_name}", container_name: container.name)}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
</.link> </.link>
@ -105,6 +105,7 @@
<.link <.link
patch={Routes.container_index_path(Endpoint, :edit_tags, container)} patch={Routes.container_index_path(Endpoint, :edit_tags, container)}
class="text-primary-600 link" class="text-primary-600 link"
aria-label={gettext("Tag %{container_name}", container_name: container.name)}
> >
<i class="fa-fw fa-lg fas fa-tags"></i> <i class="fa-fw fa-lg fas fa-tags"></i>
</.link> </.link>
@ -113,7 +114,7 @@
<.link <.link
patch={Routes.container_index_path(Endpoint, :edit, container)} patch={Routes.container_index_path(Endpoint, :edit, container)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"edit-#{container.id}"} aria-label={gettext("Edit %{container_name}", container_name: container.name)}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -121,7 +122,7 @@
<.link <.link
patch={Routes.container_index_path(Endpoint, :clone, container)} patch={Routes.container_index_path(Endpoint, :clone, container)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"clone-#{container.id}"} aria-label={gettext("Clone %{container_name}", container_name: container.name)}
> >
<i class="fa-fw fa-lg fas fa-copy"></i> <i class="fa-fw fa-lg fas fa-copy"></i>
</.link> </.link>
@ -134,7 +135,7 @@
data-confirm={ data-confirm={
dgettext("prompts", "Are you sure you want to delete %{name}?", name: container.name) dgettext("prompts", "Are you sure you want to delete %{name}?", name: container.name)
} }
data-qa={"delete-#{container.id}"} aria-label={gettext("Delete %{container_name}", container_name: container.name)}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
</.link> </.link>

View File

@ -42,7 +42,7 @@
<.link <.link
patch={Routes.container_show_path(Endpoint, :edit, @container)} patch={Routes.container_show_path(Endpoint, :edit, @container)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa="edit" aria-label={gettext("Edit %{container_name}", container_name: @container.name)}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -54,7 +54,7 @@
data-confirm={ data-confirm={
dgettext("prompts", "Are you sure you want to delete %{name}?", name: @container.name) dgettext("prompts", "Are you sure you want to delete %{name}?", name: @container.name)
} }
data-qa="delete" aria-label={gettext("Delete %{container_name}", container_name: @container.name)}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
</.link> </.link>

View File

@ -7,7 +7,7 @@ defmodule CanneryWeb.InviteLive.Index do
import CanneryWeb.Components.{InviteCard, UserCard} import CanneryWeb.Components.{InviteCard, UserCard}
alias Cannery.Accounts alias Cannery.Accounts
alias Cannery.Accounts.{Invite, Invites} alias Cannery.Accounts.{Invite, Invites}
alias CanneryWeb.{Endpoint, HomeLive} alias CanneryWeb.HomeLive
alias Phoenix.LiveView.JS alias Phoenix.LiveView.JS
@impl true @impl true

View File

@ -1,4 +1,4 @@
<div class="w-full flex flex-col space-y-8 justify-center items-center"> <div class="mx-auto flex flex-col justify-center items-center space-y-4 max-w-3xl">
<h1 class="title text-2xl title-primary-500"> <h1 class="title text-2xl title-primary-500">
<%= gettext("Invites") %> <%= gettext("Invites") %>
</h1> </h1>
@ -18,7 +18,7 @@
</.link> </.link>
<% end %> <% end %>
<div class="w-full flex flex-row flex-wrap justify-center items-stretch"> <div class="flex flex-col justify-center items-stretch space-y-4">
<.invite_card :for={invite <- @invites} invite={invite} current_user={@current_user}> <.invite_card :for={invite <- @invites} invite={invite} current_user={@current_user}>
<:code_actions> <:code_actions>
<form phx-submit="copy_to_clipboard"> <form phx-submit="copy_to_clipboard">
@ -26,6 +26,7 @@
type="submit" type="submit"
class="mx-2 my-1 btn btn-primary" class="mx-2 my-1 btn btn-primary"
phx-click={JS.dispatch("cannery:clipcopy", to: "#code-#{invite.id}")} phx-click={JS.dispatch("cannery:clipcopy", to: "#code-#{invite.id}")}
aria-label={gettext("Copy invite link for %{invite_name}", invite_name: invite.name)}
> >
<%= dgettext("actions", "Copy to clipboard") %> <%= dgettext("actions", "Copy to clipboard") %>
</button> </button>
@ -34,7 +35,7 @@
<.link <.link
patch={Routes.invite_index_path(Endpoint, :edit, invite)} patch={Routes.invite_index_path(Endpoint, :edit, invite)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"edit-#{invite.id}"} aria-label={gettext("Edit invite for %{invite_name}", invite_name: invite.name)}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -49,7 +50,7 @@
invite_name: invite.name invite_name: invite.name
) )
} }
data-qa={"delete-#{invite.id}"} aria-label={gettext("Delete invite for %{invite_name}", invite_name: invite.name)}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
</.link> </.link>
@ -87,7 +88,7 @@
<%= gettext("Admins") %> <%= gettext("Admins") %>
</h1> </h1>
<div class="w-full flex flex-row flex-wrap justify-center items-stretch"> <div class="flex flex-col justify-center items-stretch space-y-4">
<.user_card :for={admin <- @admins} user={admin}> <.user_card :for={admin <- @admins} user={admin}>
<.link <.link
href="#" href="#"
@ -115,7 +116,7 @@
<%= gettext("Users") %> <%= gettext("Users") %>
</h1> </h1>
<div class="w-full flex flex-row flex-wrap justify-center items-stretch"> <div class="flex flex-col justify-center items-stretch space-y-4">
<.user_card :for={user <- @users} user={user}> <.user_card :for={user <- @users} user={user}>
<.link <.link
href="#" href="#"

View File

@ -3,9 +3,12 @@ defmodule CanneryWeb.LiveHelpers do
Contains common helper functions for liveviews Contains common helper functions for liveviews
""" """
import Phoenix.Component use Phoenix.Component
alias Phoenix.LiveView.JS alias Phoenix.LiveView.JS
attr :return_to, :string, required: true
slot(:inner_block)
@doc """ @doc """
Renders a live component inside a modal. Renders a live component inside a modal.
@ -79,6 +82,11 @@ defmodule CanneryWeb.LiveHelpers do
|> JS.hide(to: "#modal-content", transition: "fade-out-scale") |> JS.hide(to: "#modal-content", transition: "fade-out-scale")
end end
attr :action, :string, required: true
attr :value, :boolean, required: true
attr :id, :string
slot(:inner_block)
@doc """ @doc """
A toggle button element that can be directed to a liveview or a A toggle button element that can be directed to a liveview or a
live_component's `handle_event/3`. live_component's `handle_event/3`.
@ -103,7 +111,7 @@ defmodule CanneryWeb.LiveHelpers do
value={@value} value={@value}
checked={@value} checked={@value}
class="sr-only peer" class="sr-only peer"
data-qa={@id} aria-labelledby={"#{@id}-label"}
{ {
if assigns |> Map.has_key?(:target), if assigns |> Map.has_key?(:target),
do: %{"phx-click": @action, "phx-value-value": @value, "phx-target": @target}, do: %{"phx-click": @action, "phx-value-value": @value, "phx-target": @target},
@ -119,7 +127,7 @@ defmodule CanneryWeb.LiveHelpers do
after:transition-all after:duration-250 after:ease-in-out after:transition-all after:duration-250 after:ease-in-out
transition-colors duration-250 ease-in-out"> transition-colors duration-250 ease-in-out">
</div> </div>
<span class="ml-3 text-sm font-medium text-gray-900 dark:text-gray-300"> <span id={"#{@id}-label"} class="ml-3 text-sm font-medium text-gray-900 dark:text-gray-300">
<%= render_slot(@inner_block) %> <%= render_slot(@inner_block) %>
</span> </span>
</label> </label>

View File

@ -74,7 +74,6 @@
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow self-stretch flex flex-col items-stretch" class="grow self-stretch flex flex-col items-stretch"
data-qa="shot_group_search"
> >
<%= text_input(f, :search_term, <%= text_input(f, :search_term,
class: "input input-primary", class: "input input-primary",
@ -102,7 +101,11 @@
<.link <.link
patch={Routes.range_index_path(Endpoint, :edit, shot_group)} patch={Routes.range_index_path(Endpoint, :edit, shot_group)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"edit-#{shot_group.id}"} aria-label={
gettext("Edit shot record of %{shot_group_count} shots",
shot_group_count: shot_group.count
)
}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -115,7 +118,11 @@
data-confirm={ data-confirm={
dgettext("prompts", "Are you sure you want to delete this shot record?") dgettext("prompts", "Are you sure you want to delete this shot record?")
} }
data-qa={"delete-#{shot_group.id}"} aria-label={
gettext("Delete shot record of %{shot_group_count} shots",
shot_group_count: shot_group.count
)
}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
</.link> </.link>

View File

@ -6,7 +6,7 @@ defmodule CanneryWeb.TagLive.Index do
use CanneryWeb, :live_view use CanneryWeb, :live_view
import CanneryWeb.Components.TagCard import CanneryWeb.Components.TagCard
alias Cannery.{Tags, Tags.Tag} alias Cannery.{Tags, Tags.Tag}
alias CanneryWeb.{Endpoint, ViewHelpers} alias CanneryWeb.ViewHelpers
@impl true @impl true
def mount(%{"search" => search}, _session, socket) do def mount(%{"search" => search}, _session, socket) do

View File

@ -27,7 +27,6 @@
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow self-stretch flex flex-col items-stretch" class="grow self-stretch flex flex-col items-stretch"
data-qa="tag_search"
> >
<%= text_input(f, :search_term, <%= text_input(f, :search_term,
class: "input input-primary", class: "input input-primary",
@ -49,7 +48,7 @@
<.link <.link
patch={Routes.tag_index_path(Endpoint, :edit, tag)} patch={Routes.tag_index_path(Endpoint, :edit, tag)}
class="text-primary-600 link" class="text-primary-600 link"
data-qa={"edit-#{tag.id}"} aria-label={gettext("Edit %{tag_name}", tag_name: tag.name)}
> >
<i class="fa-fw fa-lg fas fa-edit"></i> <i class="fa-fw fa-lg fas fa-edit"></i>
</.link> </.link>
@ -62,7 +61,7 @@
data-confirm={ data-confirm={
dgettext("prompts", "Are you sure you want to delete %{name}?", name: tag.name) dgettext("prompts", "Are you sure you want to delete %{name}?", name: tag.name)
} }
data-qa={"delete-#{tag.id}"} aria-label={gettext("Delete %{tag_name}", tag_name: tag.name)}
> >
<i class="fa-fw fa-lg fas fa-trash"></i> <i class="fa-fw fa-lg fas fa-trash"></i>
</.link> </.link>

View File

@ -3,23 +3,21 @@
<%= dgettext("emails", "Hi %{email},", email: @user.email) %> <%= dgettext("emails", "Hi %{email},", email: @user.email) %>
</span> </span>
<br/> <br />
<span style="margin-bottom: 1em; font-size: 1.25em;"> <span style="margin-bottom: 1em; font-size: 1.25em;">
<%= dgettext("emails", "Welcome to %{name}!", name: "Cannery") %> <%= dgettext("emails", "Welcome to Cannery") %>
</span> </span>
<br/> <br />
<%= dgettext("emails", "You can confirm your account by visiting the URL below:") %> <%= dgettext("emails", "You can confirm your account by visiting the URL below:") %>
<br/> <br />
<a style="margin: 1em; color: rgb(31, 31, 31);" href="<%= @url %>"><%= @url %></a> <a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a>
<br/> <br />
<%= dgettext("emails", <%= dgettext("emails", "If you didn't create an account at Cannery, please ignore this.") %>
"If you didn't create an account at %{name}, please ignore this.",
name: "Cannery") %>
</div> </div>

View File

@ -1,7 +1,7 @@
<%= dgettext("emails", "Hi %{email},", email: @user.email) %> <%= dgettext("emails", "Hi %{email},", email: @user.email) %>
<%= dgettext("emails", "Welcome to %{name}%!", name: "Cannery") %> <%= dgettext("emails", "Welcome to Cannery") %>
<%= dgettext("emails", "You can confirm your account by visiting the URL below:") %> <%= dgettext("emails", "You can confirm your account by visiting the URL below:") %>

View File

@ -3,17 +3,15 @@
<%= dgettext("emails", "Hi %{email},", email: @user.email) %> <%= dgettext("emails", "Hi %{email},", email: @user.email) %>
</span> </span>
<br/> <br />
<%= dgettext("emails", "You can reset your password by visiting the URL below:") %> <%= dgettext("emails", "You can reset your password by visiting the URL below:") %>
<br/> <br />
<a style="margin: 1em; color: rgb(31, 31, 31);" href="<%= @url %>"><%= @url %></a> <a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a>
<br/> <br />
<%= dgettext("emails", <%= dgettext("emails", "If you didn't request this change from Cannery, please ignore this.") %>
"If you didn't request this change from %{name}, please ignore this.",
name: "Cannery") %>
</div> </div>

View File

@ -3,17 +3,18 @@
<%= dgettext("emails", "Hi %{email},", email: @user.email) %> <%= dgettext("emails", "Hi %{email},", email: @user.email) %>
</span> </span>
<br/> <br />
<%= dgettext("emails", "You can change your email by visiting the URL below:") %> <%= dgettext("emails", "You can change your email by visiting the URL below:") %>
<br/> <br />
<a style="margin: 1em; color: rgb(31, 31, 31);" href="<%= @url %>"><%= @url %></a> <a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a>
<br/> <br />
<%= dgettext("emails", <%= dgettext(
"If you didn't request this change from %{name}, please ignore this.", "emails",
name: "Cannery") %> "If you didn't request this change from Cannery, please ignore this."
) %>
</div> </div>

View File

@ -13,7 +13,7 @@
</head> </head>
<body class="pb-8 m-0 p-0 w-full h-full"> <body class="pb-8 m-0 p-0 w-full h-full">
<header> <header>
<.topbar current_user={assigns[:current_user]}></.topbar> <.topbar current_user={assigns[:current_user]} />
</header> </header>
<div class="pb-8 w-full flex flex-col justify-center items-center text-center"> <div class="pb-8 w-full flex flex-col justify-center items-center text-center">

View File

@ -1,6 +1,6 @@
<main role="main" class="min-h-full min-w-full"> <main role="main" class="min-h-full min-w-full">
<header> <header>
<.topbar current_user={assigns[:current_user]}></.topbar> <.topbar current_user={assigns[:current_user]} />
<div class="mx-8 my-2 flex flex-col space-y-4 text-center"> <div class="mx-8 my-2 flex flex-col space-y-4 text-center">
<p :if={get_flash(@conn, :info)} class="alert alert-info" role="alert"> <p :if={get_flash(@conn, :info)} class="alert alert-info" role="alert">

View File

@ -12,8 +12,7 @@
<a style="color: rgb(31, 31, 31);" href={Routes.live_url(Endpoint, HomeLive)}> <a style="color: rgb(31, 31, 31);" href={Routes.live_url(Endpoint, HomeLive)}>
<%= dgettext( <%= dgettext(
"emails", "emails",
"This email was sent from %{name}, the self-hosted firearm tracker website.", "This email was sent from Cannery, the self-hosted firearm tracker website."
name: "Cannery"
) %> ) %>
</a> </a>
</body> </body>

View File

@ -7,6 +7,5 @@
===================== =====================
<%= dgettext("emails", <%= dgettext("emails",
"This email was sent from %{name} at %{url}, the self-hosted firearm tracker website.", "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website.",
name: "Cannery",
url: Routes.live_url(Endpoint, HomeLive)) %> url: Routes.live_url(Endpoint, HomeLive)) %>

View File

@ -1,6 +1,6 @@
<main class="pb-8 min-w-full"> <main class="pb-8 min-w-full">
<header> <header>
<.topbar current_user={assigns[:current_user]}></.topbar> <.topbar current_user={assigns[:current_user]} />
<div class="mx-8 my-2 flex flex-col space-y-4 text-center"> <div class="mx-8 my-2 flex flex-col space-y-4 text-center">
<p <p

View File

@ -9,7 +9,7 @@
action={Routes.user_confirmation_path(@conn, :create)} action={Routes.user_confirmation_path(@conn, :create)}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<%= label(f, :email, class: "title text-lg text-primary-600") %> <%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %>
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %> <%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
<%= submit(dgettext("actions", "Resend confirmation instructions"), <%= submit(dgettext("actions", "Resend confirmation instructions"),

View File

@ -17,11 +17,11 @@
<%= hidden_input(f, :invite_token, value: @invite_token) %> <%= hidden_input(f, :invite_token, value: @invite_token) %>
<% end %> <% end %>
<%= label(f, :email, class: "title text-lg text-primary-600") %> <%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %>
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %> <%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
<%= error_tag(f, :email, "col-span-3") %> <%= error_tag(f, :email, "col-span-3") %>
<%= label(f, :password, class: "title text-lg text-primary-600") %> <%= label(f, :password, gettext("Password"), class: "title text-lg text-primary-600") %>
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %> <%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
<%= error_tag(f, :password, "col-span-3") %> <%= error_tag(f, :password, "col-span-3") %>

View File

@ -9,17 +9,15 @@
action={Routes.user_reset_password_path(@conn, :update, @token)} action={Routes.user_reset_password_path(@conn, :update, @token)}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<div :if={@changeset.action && not @changeset.valid?()} class="alert alert-danger col-span-3"> <p :if={@changeset.action && not @changeset.valid?()} class="alert alert-danger col-span-3">
<p> <%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %> </p>
</p>
</div>
<%= label(f, :password, "New password", class: "title text-lg text-primary-600") %> <%= label(f, :password, gettext("New password"), class: "title text-lg text-primary-600") %>
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %> <%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
<%= error_tag(f, :password, "col-span-3") %> <%= error_tag(f, :password, "col-span-3") %>
<%= label(f, :password_confirmation, "Confirm new password", <%= label(f, :password_confirmation, gettext("Confirm new password"),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> ) %>
<%= password_input(f, :password_confirmation, <%= password_input(f, :password_confirmation,

View File

@ -9,7 +9,7 @@
action={Routes.user_reset_password_path(@conn, :create)} action={Routes.user_reset_password_path(@conn, :create)}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<%= label(f, :email, class: "title text-lg text-primary-600") %> <%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %>
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %> <%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
<%= submit(dgettext("actions", "Send instructions to reset password"), <%= submit(dgettext("actions", "Send instructions to reset password"),

View File

@ -10,16 +10,14 @@
as="user" as="user"
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<div :if={@error_message} class="alert alert-danger col-span-3"> <p :if={@error_message} class="alert alert-danger col-span-3">
<p> <%= @error_message %>
<%= @error_message %> </p>
</p>
</div>
<%= label(f, :email, class: "title text-lg text-primary-600") %> <%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %>
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %> <%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %>
<%= label(f, :password, class: "title text-lg text-primary-600") %> <%= label(f, :password, gettext("Password"), class: "title text-lg text-primary-600") %>
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %> <%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %>
<%= label(f, :remember_me, gettext("Keep me logged in for 60 days"), <%= label(f, :remember_me, gettext("Keep me logged in for 60 days"),

View File

@ -1,5 +1,5 @@
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center text-center space-y-4"> <div class="mx-auto pb-8 max-w-3xl flex flex-col justify-center items-center text-right space-y-4">
<h1 class="pb-4 title text-primary-600 text-xl"> <h1 class="pb-4 title text-primary-600 text-2xl text-center">
<%= gettext("Settings") %> <%= gettext("Settings") %>
</h1> </h1>
@ -11,7 +11,7 @@
action={Routes.user_settings_path(@conn, :update)} action={Routes.user_settings_path(@conn, :update)}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<h3 class="title text-primary-600 text-lg col-span-3"> <h3 class="title text-primary-600 text-lg text-center col-span-3">
<%= dgettext("actions", "Change email") %> <%= dgettext("actions", "Change email") %>
</h3> </h3>
@ -19,14 +19,12 @@
:if={@email_changeset.action && not @email_changeset.valid?()} :if={@email_changeset.action && not @email_changeset.valid?()}
class="alert alert-danger col-span-3" class="alert alert-danger col-span-3"
> >
<p> <%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
</p>
</div> </div>
<%= hidden_input(f, :action, name: "action", value: "update_email") %> <%= hidden_input(f, :action, name: "action", value: "update_email") %>
<%= label(f, :email, class: "title text-lg text-primary-600") %> <%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %>
<%= email_input(f, :email, required: true, class: "mx-2 my-1 input input-primary col-span-2") %> <%= email_input(f, :email, required: true, class: "mx-2 my-1 input input-primary col-span-2") %>
<%= error_tag(f, :email, "col-span-3") %> <%= error_tag(f, :email, "col-span-3") %>
@ -55,7 +53,7 @@
action={Routes.user_settings_path(@conn, :update)} action={Routes.user_settings_path(@conn, :update)}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<h3 class="title text-primary-600 text-lg col-span-3"> <h3 class="title text-primary-600 text-lg text-center col-span-3">
<%= dgettext("actions", "Change password") %> <%= dgettext("actions", "Change password") %>
</h3> </h3>
@ -63,9 +61,7 @@
:if={@password_changeset.action && not @password_changeset.valid?()} :if={@password_changeset.action && not @password_changeset.valid?()}
class="alert alert-danger col-span-3" class="alert alert-danger col-span-3"
> >
<p> <%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
</p>
</div> </div>
<%= hidden_input(f, :action, name: "action", value: "update_password") %> <%= hidden_input(f, :action, name: "action", value: "update_password") %>
@ -109,19 +105,17 @@
:let={f} :let={f}
for={@locale_changeset} for={@locale_changeset}
action={Routes.user_settings_path(@conn, :update)} action={Routes.user_settings_path(@conn, :update)}
class="flex flex-col space-y-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<h3 class="title text-primary-600 text-lg"> <h3 class="title text-primary-600 text-lg text-center col-span-3">
<%= dgettext("actions", "Change Language") %> <%= dgettext("actions", "Change Language") %>
</h3> </h3>
<div <div
:if={@locale_changeset.action && not @locale_changeset.valid?()} :if={@locale_changeset.action && not @locale_changeset.valid?()}
class="alert alert-danger" class="alert alert-danger col-span-3"
> >
<p> <%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
</p>
</div> </div>
<%= hidden_input(f, :action, name: "action", value: "update_locale") %> <%= hidden_input(f, :action, name: "action", value: "update_locale") %>
@ -135,12 +129,12 @@
{gettext("French"), "fr"}, {gettext("French"), "fr"},
{gettext("Spanish"), "es"} {gettext("Spanish"), "es"}
], ],
class: "mx-2 my-1 min-w-md input input-primary" class: "mx-2 my-1 min-w-md input input-primary col-span-3"
) %> ) %>
<%= error_tag(f, :locale) %> <%= error_tag(f, :locale, "col-span-3") %>
<%= submit(dgettext("actions", "Change language"), <%= submit(dgettext("actions", "Change language"),
class: "whitespace-nowrap mx-auto btn btn-primary", class: "whitespace-nowrap mx-auto btn btn-primary col-span-3",
data: [qa: dgettext("prompts", "Are you sure you want to change your language?")] data: [qa: dgettext("prompts", "Are you sure you want to change your language?")]
) %> ) %>
</.form> </.form>

View File

@ -3,5 +3,5 @@ defmodule CanneryWeb.EmailView do
A view for email-related helper functions A view for email-related helper functions
""" """
use CanneryWeb, :view use CanneryWeb, :view
alias CanneryWeb.{Endpoint, HomeLive} alias CanneryWeb.HomeLive
end end

View File

@ -1,14 +1,14 @@
defmodule CanneryWeb.ErrorView do defmodule CanneryWeb.ErrorView do
use CanneryWeb, :view use CanneryWeb, :view
import CanneryWeb.Components.Topbar import CanneryWeb.Components.Topbar
alias CanneryWeb.{Endpoint, HomeLive} alias CanneryWeb.HomeLive
def template_not_found(error_path, _assigns) do def template_not_found(error_path, _assigns) do
error_string = error_string =
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")
_other_template -> dgettext("errors", "Internal Server Error") _other_path -> dgettext("errors", "Internal Server Error")
end end
render("error.html", %{error_string: error_string}) render("error.html", %{error_string: error_string})

View File

@ -1,7 +1,7 @@
defmodule CanneryWeb.LayoutView do defmodule CanneryWeb.LayoutView do
use CanneryWeb, :view use CanneryWeb, :view
import CanneryWeb.Components.Topbar import CanneryWeb.Components.Topbar
alias CanneryWeb.{Endpoint, HomeLive} alias CanneryWeb.HomeLive
# Phoenix LiveDashboard is available only in development by default, # Phoenix LiveDashboard is available only in development by default,
# so we instruct Elixir to not warn if the dashboard route is missing. # so we instruct Elixir to not warn if the dashboard route is missing.

View File

@ -4,7 +4,7 @@ defmodule Cannery.MixProject do
def project do def project do
[ [
app: :cannery, app: :cannery,
version: "0.8.2", version: "0.8.4",
elixir: "1.14.1", elixir: "1.14.1",
elixirc_paths: elixirc_paths(Mix.env()), elixirc_paths: elixirc_paths(Mix.env()),
compilers: Mix.compilers(), compilers: Mix.compilers(),

View File

@ -33,13 +33,13 @@ msgid "Add your first type!"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:15 #: lib/cannery_web/templates/user_settings/edit.html.heex:15
#: lib/cannery_web/templates/user_settings/edit.html.heex:45 #: lib/cannery_web/templates/user_settings/edit.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change email" msgid "Change email"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:59 #: lib/cannery_web/templates/user_settings/edit.html.heex:57
#: lib/cannery_web/templates/user_settings/edit.html.heex:101 #: lib/cannery_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change password" msgid "Change password"
msgstr "" msgstr ""
@ -49,14 +49,14 @@ msgstr ""
msgid "Create Invite" msgid "Create Invite"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:165 #: lib/cannery_web/templates/user_settings/edit.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete User" msgid "Delete User"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:47 #: lib/cannery_web/templates/user_registration/new.html.heex:47
#: lib/cannery_web/templates/user_reset_password/new.html.heex:3 #: lib/cannery_web/templates/user_reset_password/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:44 #: lib/cannery_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "" msgstr ""
@ -66,13 +66,13 @@ msgstr ""
msgid "Invite someone new!" msgid "Invite someone new!"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:135 #: lib/cannery_web/components/topbar.ex:137
#: lib/cannery_web/templates/user_confirmation/new.html.heex:31 #: lib/cannery_web/templates/user_confirmation/new.html.heex:31
#: lib/cannery_web/templates/user_registration/new.html.heex:44 #: lib/cannery_web/templates/user_registration/new.html.heex:44
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:47 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:45
#: lib/cannery_web/templates/user_reset_password/new.html.heex:31 #: lib/cannery_web/templates/user_reset_password/new.html.heex:31
#: lib/cannery_web/templates/user_session/new.html.heex:3 #: lib/cannery_web/templates/user_session/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:30 #: lib/cannery_web/templates/user_session/new.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log in" msgid "Log in"
msgstr "" msgstr ""
@ -97,13 +97,13 @@ msgstr ""
msgid "New Tag" msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:127 #: lib/cannery_web/components/topbar.ex:129
#: lib/cannery_web/templates/user_confirmation/new.html.heex:28 #: lib/cannery_web/templates/user_confirmation/new.html.heex:28
#: lib/cannery_web/templates/user_registration/new.html.heex:3 #: lib/cannery_web/templates/user_registration/new.html.heex:3
#: lib/cannery_web/templates/user_registration/new.html.heex:37 #: lib/cannery_web/templates/user_registration/new.html.heex:37
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:44 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:42
#: lib/cannery_web/templates/user_reset_password/new.html.heex:28 #: lib/cannery_web/templates/user_reset_password/new.html.heex:28
#: lib/cannery_web/templates/user_session/new.html.heex:41 #: lib/cannery_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Register" msgid "Register"
msgstr "" msgstr ""
@ -115,7 +115,7 @@ msgid "Resend confirmation instructions"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:3 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:3
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:31 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "" msgstr ""
@ -156,8 +156,8 @@ msgstr ""
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:101 #: lib/cannery_web/live/ammo_group_live/index.html.heex:100
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101 #: lib/cannery_web/live/ammo_group_live/show.html.heex:107
#: lib/cannery_web/live/range_live/index.html.heex:38 #: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Record shots" msgid "Record shots"
@ -168,7 +168,7 @@ msgstr ""
msgid "Add another container!" msgid "Add another container!"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:94 #: lib/cannery_web/live/ammo_group_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move containers" msgid "Move containers"
msgstr "" msgstr ""
@ -178,7 +178,7 @@ msgstr ""
msgid "Select" msgid "Select"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:30 #: lib/cannery_web/live/invite_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "" msgstr ""
@ -193,17 +193,17 @@ msgstr ""
msgid "Create" msgid "Create"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:115 #: lib/cannery_web/templates/user_settings/edit.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change Language" msgid "Change Language"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:142 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:60 #: lib/cannery_web/live/ammo_group_live/show.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View in Catalog" msgid "View in Catalog"
msgstr "" msgstr ""
@ -218,24 +218,24 @@ msgstr ""
msgid "Move ammo" msgid "Move ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:78 #: lib/cannery_web/live/invite_live/index.html.heex:79
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Set Unlimited" msgid "Set Unlimited"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86 #: lib/cannery_web/live/ammo_group_live/show.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:31 #: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage for range" msgid "Stage for range"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85 #: lib/cannery_web/live/ammo_group_live/show.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:30 #: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage from range" msgid "Unstage from range"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:156 #: lib/cannery_web/templates/user_settings/edit.html.heex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""

View File

@ -46,13 +46,13 @@ msgid "Add your first type!"
msgstr "Fügen Sie ihre erste Munitionsart hinzu!" msgstr "Fügen Sie ihre erste Munitionsart hinzu!"
#: lib/cannery_web/templates/user_settings/edit.html.heex:15 #: lib/cannery_web/templates/user_settings/edit.html.heex:15
#: lib/cannery_web/templates/user_settings/edit.html.heex:45 #: lib/cannery_web/templates/user_settings/edit.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change email" msgid "Change email"
msgstr "Mailadresse ändern" msgstr "Mailadresse ändern"
#: lib/cannery_web/templates/user_settings/edit.html.heex:59 #: lib/cannery_web/templates/user_settings/edit.html.heex:57
#: lib/cannery_web/templates/user_settings/edit.html.heex:101 #: lib/cannery_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change password" msgid "Change password"
msgstr "Passwort ändern" msgstr "Passwort ändern"
@ -62,14 +62,14 @@ msgstr "Passwort ändern"
msgid "Create Invite" msgid "Create Invite"
msgstr "Einladung erstellen" msgstr "Einladung erstellen"
#: lib/cannery_web/templates/user_settings/edit.html.heex:165 #: lib/cannery_web/templates/user_settings/edit.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete User" msgid "Delete User"
msgstr "Benutzer löschen" msgstr "Benutzer löschen"
#: lib/cannery_web/templates/user_registration/new.html.heex:47 #: lib/cannery_web/templates/user_registration/new.html.heex:47
#: lib/cannery_web/templates/user_reset_password/new.html.heex:3 #: lib/cannery_web/templates/user_reset_password/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:44 #: lib/cannery_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "Passwort vergessen?" msgstr "Passwort vergessen?"
@ -79,13 +79,13 @@ msgstr "Passwort vergessen?"
msgid "Invite someone new!" msgid "Invite someone new!"
msgstr "Laden Sie jemanden ein!" msgstr "Laden Sie jemanden ein!"
#: lib/cannery_web/components/topbar.ex:135 #: lib/cannery_web/components/topbar.ex:137
#: lib/cannery_web/templates/user_confirmation/new.html.heex:31 #: lib/cannery_web/templates/user_confirmation/new.html.heex:31
#: lib/cannery_web/templates/user_registration/new.html.heex:44 #: lib/cannery_web/templates/user_registration/new.html.heex:44
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:47 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:45
#: lib/cannery_web/templates/user_reset_password/new.html.heex:31 #: lib/cannery_web/templates/user_reset_password/new.html.heex:31
#: lib/cannery_web/templates/user_session/new.html.heex:3 #: lib/cannery_web/templates/user_session/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:30 #: lib/cannery_web/templates/user_session/new.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log in" msgid "Log in"
msgstr "Einloggen" msgstr "Einloggen"
@ -110,13 +110,13 @@ msgstr "Neuer Behälter"
msgid "New Tag" msgid "New Tag"
msgstr "Neuer Tag" msgstr "Neuer Tag"
#: lib/cannery_web/components/topbar.ex:127 #: lib/cannery_web/components/topbar.ex:129
#: lib/cannery_web/templates/user_confirmation/new.html.heex:28 #: lib/cannery_web/templates/user_confirmation/new.html.heex:28
#: lib/cannery_web/templates/user_registration/new.html.heex:3 #: lib/cannery_web/templates/user_registration/new.html.heex:3
#: lib/cannery_web/templates/user_registration/new.html.heex:37 #: lib/cannery_web/templates/user_registration/new.html.heex:37
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:44 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:42
#: lib/cannery_web/templates/user_reset_password/new.html.heex:28 #: lib/cannery_web/templates/user_reset_password/new.html.heex:28
#: lib/cannery_web/templates/user_session/new.html.heex:41 #: lib/cannery_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Register" msgid "Register"
msgstr "Registrieren" msgstr "Registrieren"
@ -128,7 +128,7 @@ msgid "Resend confirmation instructions"
msgstr "Bestätigungsmail erneut senden" 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:3
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:31 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "Passwort zurücksetzen" msgstr "Passwort zurücksetzen"
@ -169,8 +169,8 @@ msgstr "Munition markieren"
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "Warum nicht einige für den Schießstand auswählen?" msgstr "Warum nicht einige für den Schießstand auswählen?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:101 #: lib/cannery_web/live/ammo_group_live/index.html.heex:100
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101 #: lib/cannery_web/live/ammo_group_live/show.html.heex:107
#: lib/cannery_web/live/range_live/index.html.heex:38 #: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Record shots" msgid "Record shots"
@ -181,7 +181,7 @@ msgstr "Schüsse dokumentieren"
msgid "Add another container!" msgid "Add another container!"
msgstr "Einen weiteren Behälter hinzufügen!" msgstr "Einen weiteren Behälter hinzufügen!"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:94 #: lib/cannery_web/live/ammo_group_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move containers" msgid "Move containers"
msgstr "Behälter verschieben" msgstr "Behälter verschieben"
@ -191,7 +191,7 @@ msgstr "Behälter verschieben"
msgid "Select" msgid "Select"
msgstr "Markieren" msgstr "Markieren"
#: lib/cannery_web/live/invite_live/index.html.heex:30 #: lib/cannery_web/live/invite_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "In die Zwischenablage kopieren" msgstr "In die Zwischenablage kopieren"
@ -206,17 +206,17 @@ msgstr "Zuerst einen Behälter hinzufügen"
msgid "Create" msgid "Create"
msgstr "Erstellen" msgstr "Erstellen"
#: lib/cannery_web/templates/user_settings/edit.html.heex:115 #: lib/cannery_web/templates/user_settings/edit.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change Language" msgid "Change Language"
msgstr "Sprache wechseln" msgstr "Sprache wechseln"
#: lib/cannery_web/templates/user_settings/edit.html.heex:142 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "Sprache wechseln" msgstr "Sprache wechseln"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:60 #: lib/cannery_web/live/ammo_group_live/show.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View in Catalog" msgid "View in Catalog"
msgstr "" msgstr ""
@ -231,24 +231,24 @@ msgstr ""
msgid "Move ammo" msgid "Move ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:78 #: lib/cannery_web/live/invite_live/index.html.heex:79
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Set Unlimited" msgid "Set Unlimited"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86 #: lib/cannery_web/live/ammo_group_live/show.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:31 #: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage for range" msgid "Stage for range"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85 #: lib/cannery_web/live/ammo_group_live/show.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:30 #: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage from range" msgid "Unstage from range"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:156 #: lib/cannery_web/templates/user_settings/edit.html.heex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""

View File

@ -19,7 +19,7 @@ msgstr ""
msgid "Access from any internet-capable device" msgid "Access from any internet-capable device"
msgstr "Zugriff von jedem Internet-fähigen Gerät" msgstr "Zugriff von jedem Internet-fähigen Gerät"
#: lib/cannery_web/live/invite_live/index.html.heex:87 #: lib/cannery_web/live/invite_live/index.html.heex:88
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Admins" msgid "Admins"
msgstr "Admins" msgstr "Admins"
@ -188,14 +188,14 @@ msgstr "Einladung deaktiviert"
msgid "Invite Only" msgid "Invite Only"
msgstr "Nur mit Einladung" msgstr "Nur mit Einladung"
#: lib/cannery_web/components/topbar.ex:90 #: lib/cannery_web/components/topbar.ex:89
#: lib/cannery_web/live/invite_live/index.ex:42 #: lib/cannery_web/live/invite_live/index.ex:42
#: lib/cannery_web/live/invite_live/index.html.heex:3 #: lib/cannery_web/live/invite_live/index.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invites" msgid "Invites"
msgstr "Einladungen" msgstr "Einladungen"
#: lib/cannery_web/templates/user_session/new.html.heex:25 #: lib/cannery_web/templates/user_session/new.html.heex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Keep me logged in for 60 days" msgid "Keep me logged in for 60 days"
msgstr "Für 60 Tage eingeloggt bleiben" msgstr "Für 60 Tage eingeloggt bleiben"
@ -267,7 +267,7 @@ msgid "New Tag"
msgstr "Neuer Tag" msgstr "Neuer Tag"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:71 #: lib/cannery_web/live/ammo_group_live/index.html.heex:70
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "Keine Munition" msgstr "Keine Munition"
@ -278,7 +278,7 @@ msgid "No ammo for this type"
msgstr "Keine Munition dieser Art" msgstr "Keine Munition dieser Art"
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:47 #: lib/cannery_web/live/container_live/index.html.heex:46
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "Kein Behälter" msgstr "Kein Behälter"
@ -290,7 +290,7 @@ msgstr "Keine Einladung"
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:43 #: lib/cannery_web/live/tag_live/index.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "Keine Tags" msgstr "Keine Tags"
@ -372,7 +372,7 @@ msgstr "Einfach:"
msgid "Steel" msgid "Steel"
msgstr "Stahl" msgstr "Stahl"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:111 #: lib/cannery_web/live/ammo_group_live/show.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stored in" msgid "Stored in"
msgstr "Gelagert in" msgstr "Gelagert in"
@ -420,7 +420,7 @@ msgstr "Art"
msgid "Type:" msgid "Type:"
msgstr "Art:" msgstr "Art:"
#: lib/cannery_web/live/invite_live/index.html.heex:115 #: lib/cannery_web/live/invite_live/index.html.heex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Users" msgid "Users"
msgstr "Benutzer" msgstr "Benutzer"
@ -487,7 +487,7 @@ msgid "New Shot Records"
msgstr "Neue Schießkladde" msgstr "Neue Schießkladde"
#: lib/cannery_web/live/range_live/index.html.heex:48 #: lib/cannery_web/live/range_live/index.html.heex:48
#: lib/cannery_web/live/range_live/index.html.heex:90 #: lib/cannery_web/live/range_live/index.html.heex:89
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "Keine Schüsse dokumentiert" msgstr "Keine Schüsse dokumentiert"
@ -512,7 +512,7 @@ msgid "Shot Records"
msgstr "Schießkladde" msgstr "Schießkladde"
#: lib/cannery_web/live/ammo_group_live/index.ex:38 #: lib/cannery_web/live/ammo_group_live/index.ex:38
#: lib/cannery_web/live/ammo_group_live/index.html.heex:118 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
msgstr "Munition verschieben" msgstr "Munition verschieben"
@ -574,28 +574,30 @@ msgstr "Pulverart"
msgid "UPC" msgid "UPC"
msgstr "UPC" msgstr "UPC"
#: lib/cannery_web/templates/user_settings/edit.html.heex:80 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:20
#: lib/cannery_web/templates/user_settings/edit.html.heex:76
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Confirm new password" msgid "Confirm new password"
msgstr "Passwort bestätigen" msgstr "Passwort bestätigen"
#: lib/cannery_web/templates/user_settings/edit.html.heex:33 #: lib/cannery_web/templates/user_settings/edit.html.heex:31
#: lib/cannery_web/templates/user_settings/edit.html.heex:89 #: lib/cannery_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current password" msgid "Current password"
msgstr "Derzeitiges Passwort" msgstr "Derzeitiges Passwort"
#: lib/cannery_web/templates/user_settings/edit.html.heex:73 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:16
#: lib/cannery_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New password" msgid "New password"
msgstr "Neues Passwort" msgstr "Neues Passwort"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage" msgid "Stage"
msgstr "Markiert" msgstr "Markiert"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "Demarkiert" msgstr "Demarkiert"
@ -662,7 +664,7 @@ msgstr "Ursprüngliche Anzahl:"
msgid "Percentage left:" msgid "Percentage left:"
msgstr "Prozent verbleibend:" msgstr "Prozent verbleibend:"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:124 #: lib/cannery_web/live/ammo_group_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds used" msgid "Rounds used"
msgstr "Patronen verbraucht" msgstr "Patronen verbraucht"
@ -709,17 +711,17 @@ msgid "Added on:"
msgstr "Hinzugefügt am:" msgstr "Hinzugefügt am:"
#: lib/cannery_web/templates/user_registration/new.html.heex:32 #: lib/cannery_web/templates/user_registration/new.html.heex:32
#: lib/cannery_web/templates/user_settings/edit.html.heex:133 #: lib/cannery_web/templates/user_settings/edit.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "English" msgid "English"
msgstr "Englisch" msgstr "Englisch"
#: lib/cannery_web/templates/user_settings/edit.html.heex:135 #: lib/cannery_web/templates/user_settings/edit.html.heex:129
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "French" msgid "French"
msgstr "Französisch" msgstr "Französisch"
#: lib/cannery_web/templates/user_settings/edit.html.heex:134 #: lib/cannery_web/templates/user_settings/edit.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "Deutsch" msgstr "Deutsch"
@ -777,7 +779,7 @@ msgstr "Keine Munitionsgruppe in diesem Behälter"
msgid "Show Ammo" msgid "Show Ammo"
msgstr "Zeige Munitionsarten" msgstr "Zeige Munitionsarten"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:116 #: lib/cannery_web/live/ammo_group_live/show.html.heex:122
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "Diese Munitionsgruppe ist nicht in einem Behälter" msgstr "Diese Munitionsgruppe ist nicht in einem Behälter"
@ -810,8 +812,8 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "Behälter" msgstr "Behälter"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:64 #: lib/cannery_web/live/ammo_group_live/index.html.heex:63
#: lib/cannery_web/live/ammo_type_live/index.html.heex:39 #: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:153 #: lib/cannery_web/live/ammo_type_live/show.html.heex:153
#: lib/cannery_web/live/container_live/show.html.heex:99 #: lib/cannery_web/live/container_live/show.html.heex:99
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -842,7 +844,7 @@ msgid "Rounds"
msgstr "Patronen:" msgstr "Patronen:"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:159 #: lib/cannery_web/live/ammo_type_live/show.html.heex:159
#: lib/cannery_web/live/container_live/index.html.heex:39 #: lib/cannery_web/live/container_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
@ -1000,7 +1002,9 @@ msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/index.html.heex:70
#: lib/cannery_web/live/ammo_type_live/show.ex:120 #: lib/cannery_web/live/ammo_type_live/show.ex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "%{name} bearbeiten" msgstr "%{name} bearbeiten"
@ -1079,37 +1083,37 @@ msgid "Edit ammo"
msgstr "Munitionstyp bearbeiten" msgstr "Munitionstyp bearbeiten"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:46 #: lib/cannery_web/live/ammo_type_live/index.html.heex:45
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Ammo types" msgid "No Ammo types"
msgstr "Keine Munitionsarten" msgstr "Keine Munitionsarten"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:33 #: lib/cannery_web/live/ammo_type_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58 #: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:33 #: lib/cannery_web/live/container_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:36 #: lib/cannery_web/live/tag_live/index.html.heex:35
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:83 #: lib/cannery_web/live/range_live/index.html.heex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1178,12 +1182,12 @@ msgstr ""
msgid "Welcome to Cannery" msgid "Welcome to Cannery"
msgstr "Willkommen %{name}" msgstr "Willkommen %{name}"
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
@ -1197,3 +1201,123 @@ msgstr "Verbleibende Nutzung:"
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses: %{uses_count}" msgid "Uses: %{uses_count}"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_confirmation/new.html.heex:12
#: lib/cannery_web/templates/user_registration/new.html.heex:20
#: lib/cannery_web/templates/user_reset_password/new.html.heex:12
#: lib/cannery_web/templates/user_session/new.html.heex:17
#: lib/cannery_web/templates/user_settings/edit.html.heex:27
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:24
#: lib/cannery_web/templates/user_session/new.html.heex:20
#, elixir-autogen, elixir-format
msgid "Password"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:78
#, elixir-autogen, elixir-format, fuzzy
msgid "Clone %{ammo_type_name}"
msgstr "%{name} bearbeiten"
#: lib/cannery_web/live/container_live/index.html.heex:81
#: lib/cannery_web/live/container_live/index.html.heex:125
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:151
#, elixir-autogen, elixir-format
msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:95
#: lib/cannery_web/live/ammo_type_live/show.html.heex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete %{ammo_type_name}"
msgstr "%{name} bearbeiten"
#: lib/cannery_web/live/container_live/index.html.heex:94
#: lib/cannery_web/live/container_live/index.html.heex:138
#: lib/cannery_web/live/container_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Delete %{tag_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:166
#: lib/cannery_web/live/ammo_group_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:53
#, elixir-autogen, elixir-format
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:146
#: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:73
#: lib/cannery_web/live/container_live/index.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:45
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{container_name}"
msgstr "%{name} bearbeiten"
#: lib/cannery_web/live/tag_live/index.html.heex:51
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{tag_name}"
msgstr "%{name} bearbeiten"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:139
#: lib/cannery_web/live/ammo_group_live/show.html.heex:66
#, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:38
#, elixir-autogen, elixir-format
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:133
#, elixir-autogen, elixir-format
msgid "Edit shot group of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:105
#, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:63
#: lib/cannery_web/live/container_live/index.html.heex:108
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "View %{ammo_type_name}"
msgstr "%{name} bearbeiten"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:127
#, elixir-autogen, elixir-format
msgid "View ammo group of %{ammo_group_count} bullets"
msgstr ""

View File

@ -14,25 +14,11 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.11.2\n" "X-Generator: Weblate 4.11.2\n"
## This file is a PO Template file. #: lib/cannery_web/templates/email/confirm_email.html.heex:3
##
## "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/confirm_email.txt.eex:2
#: lib/cannery_web/templates/email/reset_password.html.eex:3 #: lib/cannery_web/templates/email/reset_password.html.heex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: 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.html.heex:3
#: lib/cannery_web/templates/email/update_email.txt.eex:2 #: lib/cannery_web/templates/email/update_email.txt.eex:2
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Hi %{email}," msgid "Hi %{email},"
@ -53,69 +39,79 @@ msgstr ""
"Falls Sie diese Änderung von %{url} nicht angefordert haben, ignorieren Sie " "Falls Sie diese Änderung von %{url} nicht angefordert haben, ignorieren Sie "
"bitte diese Nachricht." "bitte diese Nachricht."
#: lib/cannery/accounts/email.ex:37 #: lib/cannery_web/templates/email/update_email.html.heex:8
#, 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 #: lib/cannery_web/templates/email/update_email.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can change your email by visiting the URL below:" msgid "You can change your email by visiting the URL below:"
msgstr "Sie können Ihre Mailadresse unter folgender URL ändern:" 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.html.heex:14
#: lib/cannery_web/templates/email/confirm_email.txt.eex:6 #: lib/cannery_web/templates/email/confirm_email.txt.eex:6
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can confirm your account by visiting the URL below:" msgid "You can confirm your account by visiting the URL below:"
msgstr "Sie können Ihr Nutzerkonto unter folgender URL bestätigen:" 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.html.heex:8
#: lib/cannery_web/templates/email/reset_password.txt.eex:4 #: lib/cannery_web/templates/email/reset_password.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can reset your password by visiting the URL below:" msgid "You can reset your password by visiting the URL below:"
msgstr "Sie können ihr Passwort unter folgender URL zurücksetzen:" msgstr "Sie können ihr Passwort unter folgender URL zurücksetzen:"
#: lib/cannery_web/templates/email/confirm_email.html.eex:22 ## This file is a PO Template file.
#, elixir-autogen, elixir-format ##
msgid "If you didn't create an account at %{name}, please ignore this." ## "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, fuzzy
msgid "Confirm your Cannery account"
msgstr "Bestätigen Sie ihr %{name} Nutzerkonto"
#: lib/cannery_web/templates/email/confirm_email.html.heex:22
#, elixir-autogen, elixir-format, fuzzy
msgid "If you didn't create an account at Cannery, please ignore this."
msgstr "" msgstr ""
"Falls SIe dieses Nutzerkonto unter %{name}, nicht erstellt haben, ignorieren " "Falls SIe dieses Nutzerkonto unter %{name}, nicht erstellt haben, ignorieren "
"Sie diese Nachricht bitte." "Sie diese Nachricht bitte."
#: lib/cannery_web/templates/email/reset_password.html.eex:16 #: lib/cannery_web/templates/email/reset_password.html.heex:16
#: lib/cannery_web/templates/email/update_email.html.eex:16 #: lib/cannery_web/templates/email/update_email.html.heex:16
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "If you didn't request this change from %{name}, please ignore this." msgid "If you didn't request this change from Cannery, please ignore this."
msgstr "" msgstr ""
"Falls Sie die Änderung von %{name} nicht angefragt haben, ignorieren Sie " "Falls Sie die Änderung von %{name} nicht angefragt haben, ignorieren Sie "
"diese Nachricht bitte." "diese Nachricht bitte."
#: lib/cannery/accounts/email.ex:37
#, elixir-autogen, elixir-format, fuzzy
msgid "Reset your Cannery password"
msgstr "Passwort für %{name} zurücksetzen"
#: lib/cannery_web/templates/layout/email.txt.eex:9 #: lib/cannery_web/templates/layout/email.txt.eex:9
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "This email was sent from %{name} at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website."
msgstr "" msgstr ""
"Diese Nachricht wurde von %{name} unter %{url} gesandt, einem selbst-" "Diese Nachricht wurde von %{name} unter %{url} gesandt, einem selbst-"
"gehosteten Schusswaffenmanager." "gehosteten Schusswaffenmanager."
#: lib/cannery_web/templates/layout/email.html.heex:13 #: lib/cannery_web/templates/layout/email.html.heex:13
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "This email was sent from %{name}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery, the self-hosted firearm tracker website."
msgstr "" msgstr ""
"Diese Nachricht wurde von %{name} gesandt, einem selbst-gehosteten " "Diese Nachricht wurde von %{name} gesandt, einem selbst-gehosteten "
"Schusswaffenmanager." "Schusswaffenmanager."
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Update your Cannery email"
msgstr "Aktualisieren Sie %{name} Mailadresse"
#: lib/cannery_web/templates/email/confirm_email.html.heex:9
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format, fuzzy
msgid "Welcome to Cannery"
msgstr "Willkommen %{name}!"

View File

@ -70,10 +70,10 @@ msgid "Not found"
msgstr "Nicht gefunden" msgstr "Nicht gefunden"
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:14 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:23 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
#: lib/cannery_web/templates/user_settings/edit.html.heex:67 #: lib/cannery_web/templates/user_settings/edit.html.heex:64
#: lib/cannery_web/templates/user_settings/edit.html.heex:123 #: lib/cannery_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below." msgid "Oops, something went wrong! Please check the errors below."
msgstr "Oops, etwas ist schiefgegangen. Bitte beachten Sie den Fehler unten." msgstr "Oops, etwas ist schiefgegangen. Bitte beachten Sie den Fehler unten."
@ -152,17 +152,11 @@ msgstr "Tag nicht gefunden"
msgid "Tag could not be added" msgid "Tag could not be added"
msgstr "Tag konnte nicht hinzugefügt werden" msgstr "Tag konnte nicht hinzugefügt werden"
#: lib/cannery/activity_log/shot_group.ex:122 #: lib/cannery/activity_log/shot_group.ex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count must be at least 1" msgid "Count must be at least 1"
msgstr "Anzahl muss mindestens 1 sein" msgstr "Anzahl muss mindestens 1 sein"
#: lib/cannery/activity_log/shot_group.ex:82
#: lib/cannery/activity_log/shot_group.ex:118
#, 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:39
#: lib/cannery_web/controllers/user_auth.ex:161 #: lib/cannery_web/controllers/user_auth.ex:161
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -207,3 +201,9 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid user and ammo pack" msgid "Please select a valid user and ammo pack"
msgstr "" msgstr ""
#: lib/cannery/activity_log/shot_group.ex:83
#: lib/cannery/activity_log/shot_group.ex:121
#, elixir-autogen, elixir-format, fuzzy
msgid "Count must be less than %{count} shots"
msgstr "Anzahl muss weniger als %{count} betragen"

View File

@ -57,8 +57,8 @@ msgstr "%{name} erfolgreich aktualisiert"
msgid "A link to confirm your email change has been sent to the new address." 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." msgstr "Eine Mail zum Bestätigen ihre Mailadresse wurde Ihnen zugesandt."
#: lib/cannery_web/live/invite_live/index.html.heex:98 #: lib/cannery_web/live/invite_live/index.html.heex:99
#: lib/cannery_web/live/invite_live/index.html.heex:126 #: lib/cannery_web/live/invite_live/index.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "" msgstr ""
@ -66,25 +66,25 @@ msgstr ""
"zurückgenommen werden!" "zurückgenommen werden!"
#: lib/cannery_web/live/container_live/index.html.heex:92 #: lib/cannery_web/live/container_live/index.html.heex:92
#: lib/cannery_web/live/container_live/index.html.heex:135 #: lib/cannery_web/live/container_live/index.html.heex:136
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:55
#: lib/cannery_web/live/tag_live/index.html.heex:63 #: lib/cannery_web/live/tag_live/index.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?" msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:153 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75 #: lib/cannery_web/live/ammo_group_live/show.html.heex:78
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
msgstr "Sind Sie sicher, dass sie diese Munition löschen möchten?" msgstr "Sind Sie sicher, dass sie diese Munition löschen möchten?"
#: lib/cannery_web/templates/user_settings/edit.html.heex:163 #: lib/cannery_web/templates/user_settings/edit.html.heex:157
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete your account?" msgid "Are you sure you want to delete your account?"
msgstr "Sind Sie sicher, dass sie Ihren Account löschen möchten?" msgstr "Sind Sie sicher, dass sie Ihren Account löschen möchten?"
#: lib/cannery_web/components/topbar.ex:106 #: lib/cannery_web/components/topbar.ex:104
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to log out?" msgid "Are you sure you want to log out?"
msgstr "Wirklich ausloggen?" msgstr "Wirklich ausloggen?"
@ -176,8 +176,8 @@ msgstr "Schüsse erfolgreich dokumentiert"
msgid "Are you sure you want to unstage this ammo?" msgid "Are you sure you want to unstage this ammo?"
msgstr "Sind sie sicher, dass Sie diese Munition demarkieren möchten?" msgstr "Sind sie sicher, dass Sie diese Munition demarkieren möchten?"
#: lib/cannery_web/live/ammo_group_live/show.ex:142 #: lib/cannery_web/live/ammo_group_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:116 #: lib/cannery_web/live/range_live/index.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?" msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?"
@ -224,7 +224,7 @@ msgstr "Sie müssen"
msgid "Creating..." msgid "Creating..."
msgstr "Erstellen..." msgstr "Erstellen..."
#: lib/cannery_web/templates/user_settings/edit.html.heex:144 #: lib/cannery_web/templates/user_settings/edit.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to change your language?" msgid "Are you sure you want to change your language?"
msgstr "Möchten Sie die Sprache wechseln?" msgstr "Möchten Sie die Sprache wechseln?"
@ -257,7 +257,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "Munitionsgruppe erfolgreich aktualisiert" msgstr[0] "Munitionsgruppe erfolgreich aktualisiert"
msgstr[1] "Munitionsgruppe erfolgreich aktualisiert" msgstr[1] "Munitionsgruppe erfolgreich aktualisiert"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:90 #: lib/cannery_web/live/ammo_type_live/index.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
@ -293,12 +293,12 @@ msgstr "%{name} erfolgreich aktualisiert"
msgid "%{user_email} deleted succesfully" msgid "%{user_email} deleted succesfully"
msgstr "%{name} erfolgreich gelöscht" msgstr "%{name} erfolgreich gelöscht"
#: lib/cannery_web/live/invite_live/index.html.heex:48 #: lib/cannery_web/live/invite_live/index.html.heex:49
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete the invite for %{invite_name}?" msgid "Are you sure you want to delete the invite for %{invite_name}?"
msgstr "Sind Sie sicher, dass sie die Einladung für %{name} löschen möchten?" msgstr "Sind Sie sicher, dass sie die Einladung für %{name} löschen möchten?"
#: lib/cannery_web/live/invite_live/index.html.heex:73 #: lib/cannery_web/live/invite_live/index.html.heex:74
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to make %{invite_name} unlimited?" msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr "Sind Sie sicher, dass sie %{name} auf unbegrenzt setzen möchten?" msgstr "Sind Sie sicher, dass sie %{name} auf unbegrenzt setzen möchten?"

View File

@ -15,7 +15,7 @@ msgstr ""
msgid "Access from any internet-capable device" msgid "Access from any internet-capable device"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:87 #: lib/cannery_web/live/invite_live/index.html.heex:88
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Admins" msgid "Admins"
msgstr "" msgstr ""
@ -184,14 +184,14 @@ msgstr ""
msgid "Invite Only" msgid "Invite Only"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:90 #: lib/cannery_web/components/topbar.ex:89
#: lib/cannery_web/live/invite_live/index.ex:42 #: lib/cannery_web/live/invite_live/index.ex:42
#: lib/cannery_web/live/invite_live/index.html.heex:3 #: lib/cannery_web/live/invite_live/index.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invites" msgid "Invites"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_session/new.html.heex:25 #: lib/cannery_web/templates/user_session/new.html.heex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Keep me logged in for 60 days" msgid "Keep me logged in for 60 days"
msgstr "" msgstr ""
@ -263,7 +263,7 @@ msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:71 #: lib/cannery_web/live/ammo_group_live/index.html.heex:70
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "" msgstr ""
@ -274,7 +274,7 @@ msgid "No ammo for this type"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:47 #: lib/cannery_web/live/container_live/index.html.heex:46
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "" msgstr ""
@ -286,7 +286,7 @@ msgstr ""
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:43 #: lib/cannery_web/live/tag_live/index.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "" msgstr ""
@ -366,7 +366,7 @@ msgstr ""
msgid "Steel" msgid "Steel"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:111 #: lib/cannery_web/live/ammo_group_live/show.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stored in" msgid "Stored in"
msgstr "" msgstr ""
@ -414,7 +414,7 @@ msgstr ""
msgid "Type:" msgid "Type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:115 #: lib/cannery_web/live/invite_live/index.html.heex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Users" msgid "Users"
msgstr "" msgstr ""
@ -481,7 +481,7 @@ msgid "New Shot Records"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:48 #: lib/cannery_web/live/range_live/index.html.heex:48
#: lib/cannery_web/live/range_live/index.html.heex:90 #: lib/cannery_web/live/range_live/index.html.heex:89
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "" msgstr ""
@ -506,7 +506,7 @@ msgid "Shot Records"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:38 #: lib/cannery_web/live/ammo_group_live/index.ex:38
#: lib/cannery_web/live/ammo_group_live/index.html.heex:118 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
msgstr "" msgstr ""
@ -568,28 +568,30 @@ msgstr ""
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:80 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:20
#: lib/cannery_web/templates/user_settings/edit.html.heex:76
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Confirm new password" msgid "Confirm new password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:33 #: lib/cannery_web/templates/user_settings/edit.html.heex:31
#: lib/cannery_web/templates/user_settings/edit.html.heex:89 #: lib/cannery_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current password" msgid "Current password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:73 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:16
#: lib/cannery_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New password" msgid "New password"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage" msgid "Stage"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
@ -656,7 +658,7 @@ msgstr ""
msgid "Percentage left:" msgid "Percentage left:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:124 #: lib/cannery_web/live/ammo_group_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds used" msgid "Rounds used"
msgstr "" msgstr ""
@ -703,17 +705,17 @@ msgid "Added on:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:32 #: lib/cannery_web/templates/user_registration/new.html.heex:32
#: lib/cannery_web/templates/user_settings/edit.html.heex:133 #: lib/cannery_web/templates/user_settings/edit.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "English" msgid "English"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:135 #: lib/cannery_web/templates/user_settings/edit.html.heex:129
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "French" msgid "French"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:134 #: lib/cannery_web/templates/user_settings/edit.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "" msgstr ""
@ -771,7 +773,7 @@ msgstr ""
msgid "Show Ammo" msgid "Show Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:116 #: lib/cannery_web/live/ammo_group_live/show.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "" msgstr ""
@ -804,8 +806,8 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:64 #: lib/cannery_web/live/ammo_group_live/index.html.heex:63
#: lib/cannery_web/live/ammo_type_live/index.html.heex:39 #: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:153 #: lib/cannery_web/live/ammo_type_live/show.html.heex:153
#: lib/cannery_web/live/container_live/show.html.heex:99 #: lib/cannery_web/live/container_live/show.html.heex:99
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -836,7 +838,7 @@ msgid "Rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:159 #: lib/cannery_web/live/ammo_type_live/show.html.heex:159
#: lib/cannery_web/live/container_live/index.html.heex:39 #: lib/cannery_web/live/container_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
@ -994,7 +996,9 @@ msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/index.html.heex:70
#: lib/cannery_web/live/ammo_type_live/show.ex:120 #: lib/cannery_web/live/ammo_type_live/show.ex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
@ -1073,37 +1077,37 @@ msgid "Edit ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:46 #: lib/cannery_web/live/ammo_type_live/index.html.heex:45
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo types" msgid "No Ammo types"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:33 #: lib/cannery_web/live/ammo_type_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58 #: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:33 #: lib/cannery_web/live/container_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:36 #: lib/cannery_web/live/tag_live/index.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:83 #: lib/cannery_web/live/range_live/index.html.heex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1161,12 +1165,12 @@ msgstr ""
msgid "Welcome to Cannery" msgid "Welcome to Cannery"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
@ -1180,3 +1184,123 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses: %{uses_count}" msgid "Uses: %{uses_count}"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_confirmation/new.html.heex:12
#: lib/cannery_web/templates/user_registration/new.html.heex:20
#: lib/cannery_web/templates/user_reset_password/new.html.heex:12
#: lib/cannery_web/templates/user_session/new.html.heex:17
#: lib/cannery_web/templates/user_settings/edit.html.heex:27
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:24
#: lib/cannery_web/templates/user_session/new.html.heex:20
#, elixir-autogen, elixir-format
msgid "Password"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:78
#, elixir-autogen, elixir-format
msgid "Clone %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:81
#: lib/cannery_web/live/container_live/index.html.heex:125
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:151
#, elixir-autogen, elixir-format
msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:95
#: lib/cannery_web/live/ammo_type_live/show.html.heex:35
#, elixir-autogen, elixir-format
msgid "Delete %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:94
#: lib/cannery_web/live/container_live/index.html.heex:138
#: lib/cannery_web/live/container_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Delete %{tag_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:166
#: lib/cannery_web/live/ammo_group_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:53
#, elixir-autogen, elixir-format
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:146
#: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:73
#: lib/cannery_web/live/container_live/index.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:45
#, elixir-autogen, elixir-format
msgid "Edit %{container_name}"
msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:51
#, elixir-autogen, elixir-format
msgid "Edit %{tag_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:139
#: lib/cannery_web/live/ammo_group_live/show.html.heex:66
#, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:38
#, elixir-autogen, elixir-format
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:133
#, elixir-autogen, elixir-format
msgid "Edit shot group of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:105
#, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:63
#: lib/cannery_web/live/container_live/index.html.heex:108
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "View %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:127
#, elixir-autogen, elixir-format
msgid "View ammo group of %{ammo_group_count} bullets"
msgstr ""

View File

@ -10,16 +10,11 @@
msgid "" msgid ""
msgstr "" msgstr ""
#: lib/cannery/accounts/email.ex:30 #: lib/cannery_web/templates/email/confirm_email.html.heex:3
#, elixir-autogen, elixir-format
msgid "Confirm your %{name} account"
msgstr ""
#: 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/confirm_email.txt.eex:2
#: lib/cannery_web/templates/email/reset_password.html.eex:3 #: lib/cannery_web/templates/email/reset_password.html.heex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: 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.html.heex:3
#: lib/cannery_web/templates/email/update_email.txt.eex:2 #: lib/cannery_web/templates/email/update_email.txt.eex:2
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Hi %{email}," msgid "Hi %{email},"
@ -36,61 +31,62 @@ msgstr ""
msgid "If you didn't request this change from %{url}, please ignore this." msgid "If you didn't request this change from %{url}, please ignore this."
msgstr "" msgstr ""
#: lib/cannery/accounts/email.ex:37 #: lib/cannery_web/templates/email/update_email.html.heex:8
#, elixir-autogen, elixir-format
msgid "Reset your %{name} password"
msgstr ""
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your %{name} email"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.eex:9
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}!"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}%!"
msgstr ""
#: lib/cannery_web/templates/email/update_email.html.eex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:4 #: lib/cannery_web/templates/email/update_email.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can change your email by visiting the URL below:" msgid "You can change your email by visiting the URL below:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.eex:14 #: lib/cannery_web/templates/email/confirm_email.html.heex:14
#: lib/cannery_web/templates/email/confirm_email.txt.eex:6 #: lib/cannery_web/templates/email/confirm_email.txt.eex:6
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can confirm your account by visiting the URL below:" msgid "You can confirm your account by visiting the URL below:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/reset_password.html.eex:8 #: lib/cannery_web/templates/email/reset_password.html.heex:8
#: lib/cannery_web/templates/email/reset_password.txt.eex:4 #: lib/cannery_web/templates/email/reset_password.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can reset your password by visiting the URL below:" msgid "You can reset your password by visiting the URL below:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.eex:22 #: lib/cannery/accounts/email.ex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "If you didn't create an account at %{name}, please ignore this." msgid "Confirm your Cannery account"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/reset_password.html.eex:16 #: lib/cannery_web/templates/email/confirm_email.html.heex:22
#: lib/cannery_web/templates/email/update_email.html.eex:16
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "If you didn't request this change from %{name}, please ignore this." msgid "If you didn't create an account at Cannery, please ignore this."
msgstr ""
#: lib/cannery_web/templates/email/reset_password.html.heex:16
#: lib/cannery_web/templates/email/update_email.html.heex:16
#, elixir-autogen, elixir-format
msgid "If you didn't request this change from Cannery, please ignore this."
msgstr ""
#: lib/cannery/accounts/email.ex:37
#, elixir-autogen, elixir-format
msgid "Reset your Cannery password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/layout/email.txt.eex:9 #: lib/cannery_web/templates/layout/email.txt.eex:9
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "This email was sent from %{name} at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website."
msgstr "" msgstr ""
#: lib/cannery_web/templates/layout/email.html.heex:13 #: lib/cannery_web/templates/layout/email.html.heex:13
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "This email was sent from %{name}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery, the self-hosted firearm tracker website."
msgstr ""
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your Cannery email"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.heex:9
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to Cannery"
msgstr "" msgstr ""

View File

@ -33,13 +33,13 @@ msgid "Add your first type!"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:15 #: lib/cannery_web/templates/user_settings/edit.html.heex:15
#: lib/cannery_web/templates/user_settings/edit.html.heex:45 #: lib/cannery_web/templates/user_settings/edit.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change email" msgid "Change email"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:59 #: lib/cannery_web/templates/user_settings/edit.html.heex:57
#: lib/cannery_web/templates/user_settings/edit.html.heex:101 #: lib/cannery_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change password" msgid "Change password"
msgstr "" msgstr ""
@ -49,14 +49,14 @@ msgstr ""
msgid "Create Invite" msgid "Create Invite"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:165 #: lib/cannery_web/templates/user_settings/edit.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete User" msgid "Delete User"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:47 #: lib/cannery_web/templates/user_registration/new.html.heex:47
#: lib/cannery_web/templates/user_reset_password/new.html.heex:3 #: lib/cannery_web/templates/user_reset_password/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:44 #: lib/cannery_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "" msgstr ""
@ -66,13 +66,13 @@ msgstr ""
msgid "Invite someone new!" msgid "Invite someone new!"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:135 #: lib/cannery_web/components/topbar.ex:137
#: lib/cannery_web/templates/user_confirmation/new.html.heex:31 #: lib/cannery_web/templates/user_confirmation/new.html.heex:31
#: lib/cannery_web/templates/user_registration/new.html.heex:44 #: lib/cannery_web/templates/user_registration/new.html.heex:44
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:47 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:45
#: lib/cannery_web/templates/user_reset_password/new.html.heex:31 #: lib/cannery_web/templates/user_reset_password/new.html.heex:31
#: lib/cannery_web/templates/user_session/new.html.heex:3 #: lib/cannery_web/templates/user_session/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:30 #: lib/cannery_web/templates/user_session/new.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log in" msgid "Log in"
msgstr "" msgstr ""
@ -97,13 +97,13 @@ msgstr ""
msgid "New Tag" msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:127 #: lib/cannery_web/components/topbar.ex:129
#: lib/cannery_web/templates/user_confirmation/new.html.heex:28 #: lib/cannery_web/templates/user_confirmation/new.html.heex:28
#: lib/cannery_web/templates/user_registration/new.html.heex:3 #: lib/cannery_web/templates/user_registration/new.html.heex:3
#: lib/cannery_web/templates/user_registration/new.html.heex:37 #: lib/cannery_web/templates/user_registration/new.html.heex:37
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:44 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:42
#: lib/cannery_web/templates/user_reset_password/new.html.heex:28 #: lib/cannery_web/templates/user_reset_password/new.html.heex:28
#: lib/cannery_web/templates/user_session/new.html.heex:41 #: lib/cannery_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Register" msgid "Register"
msgstr "" msgstr ""
@ -115,7 +115,7 @@ msgid "Resend confirmation instructions"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:3 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:3
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:31 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "" msgstr ""
@ -156,8 +156,8 @@ msgstr ""
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:101 #: lib/cannery_web/live/ammo_group_live/index.html.heex:100
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101 #: lib/cannery_web/live/ammo_group_live/show.html.heex:107
#: lib/cannery_web/live/range_live/index.html.heex:38 #: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Record shots" msgid "Record shots"
@ -168,7 +168,7 @@ msgstr ""
msgid "Add another container!" msgid "Add another container!"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:94 #: lib/cannery_web/live/ammo_group_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move containers" msgid "Move containers"
msgstr "" msgstr ""
@ -178,7 +178,7 @@ msgstr ""
msgid "Select" msgid "Select"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:30 #: lib/cannery_web/live/invite_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "" msgstr ""
@ -193,17 +193,17 @@ msgstr ""
msgid "Create" msgid "Create"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:115 #: lib/cannery_web/templates/user_settings/edit.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change Language" msgid "Change Language"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:142 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:60 #: lib/cannery_web/live/ammo_group_live/show.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View in Catalog" msgid "View in Catalog"
msgstr "" msgstr ""
@ -218,24 +218,24 @@ msgstr ""
msgid "Move ammo" msgid "Move ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:78 #: lib/cannery_web/live/invite_live/index.html.heex:79
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Set Unlimited" msgid "Set Unlimited"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86 #: lib/cannery_web/live/ammo_group_live/show.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:31 #: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage for range" msgid "Stage for range"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85 #: lib/cannery_web/live/ammo_group_live/show.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:30 #: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage from range" msgid "Unstage from range"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:156 #: lib/cannery_web/templates/user_settings/edit.html.heex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""

View File

@ -15,7 +15,7 @@ msgstr ""
msgid "Access from any internet-capable device" msgid "Access from any internet-capable device"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:87 #: lib/cannery_web/live/invite_live/index.html.heex:88
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Admins" msgid "Admins"
msgstr "" msgstr ""
@ -184,14 +184,14 @@ msgstr ""
msgid "Invite Only" msgid "Invite Only"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:90 #: lib/cannery_web/components/topbar.ex:89
#: lib/cannery_web/live/invite_live/index.ex:42 #: lib/cannery_web/live/invite_live/index.ex:42
#: lib/cannery_web/live/invite_live/index.html.heex:3 #: lib/cannery_web/live/invite_live/index.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invites" msgid "Invites"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_session/new.html.heex:25 #: lib/cannery_web/templates/user_session/new.html.heex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Keep me logged in for 60 days" msgid "Keep me logged in for 60 days"
msgstr "" msgstr ""
@ -263,7 +263,7 @@ msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:71 #: lib/cannery_web/live/ammo_group_live/index.html.heex:70
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "" msgstr ""
@ -274,7 +274,7 @@ msgid "No ammo for this type"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:47 #: lib/cannery_web/live/container_live/index.html.heex:46
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "" msgstr ""
@ -286,7 +286,7 @@ msgstr ""
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:43 #: lib/cannery_web/live/tag_live/index.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "" msgstr ""
@ -366,7 +366,7 @@ msgstr ""
msgid "Steel" msgid "Steel"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:111 #: lib/cannery_web/live/ammo_group_live/show.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stored in" msgid "Stored in"
msgstr "" msgstr ""
@ -414,7 +414,7 @@ msgstr ""
msgid "Type:" msgid "Type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:115 #: lib/cannery_web/live/invite_live/index.html.heex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Users" msgid "Users"
msgstr "" msgstr ""
@ -481,7 +481,7 @@ msgid "New Shot Records"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:48 #: lib/cannery_web/live/range_live/index.html.heex:48
#: lib/cannery_web/live/range_live/index.html.heex:90 #: lib/cannery_web/live/range_live/index.html.heex:89
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "" msgstr ""
@ -506,7 +506,7 @@ msgid "Shot Records"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:38 #: lib/cannery_web/live/ammo_group_live/index.ex:38
#: lib/cannery_web/live/ammo_group_live/index.html.heex:118 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
msgstr "" msgstr ""
@ -568,28 +568,30 @@ msgstr ""
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:80 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:20
#: lib/cannery_web/templates/user_settings/edit.html.heex:76
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Confirm new password" msgid "Confirm new password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:33 #: lib/cannery_web/templates/user_settings/edit.html.heex:31
#: lib/cannery_web/templates/user_settings/edit.html.heex:89 #: lib/cannery_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current password" msgid "Current password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:73 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:16
#: lib/cannery_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New password" msgid "New password"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage" msgid "Stage"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
@ -656,7 +658,7 @@ msgstr ""
msgid "Percentage left:" msgid "Percentage left:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:124 #: lib/cannery_web/live/ammo_group_live/show.html.heex:130
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds used" msgid "Rounds used"
msgstr "" msgstr ""
@ -703,17 +705,17 @@ msgid "Added on:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:32 #: lib/cannery_web/templates/user_registration/new.html.heex:32
#: lib/cannery_web/templates/user_settings/edit.html.heex:133 #: lib/cannery_web/templates/user_settings/edit.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "English" msgid "English"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:135 #: lib/cannery_web/templates/user_settings/edit.html.heex:129
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "French" msgid "French"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:134 #: lib/cannery_web/templates/user_settings/edit.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "" msgstr ""
@ -771,7 +773,7 @@ msgstr ""
msgid "Show Ammo" msgid "Show Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:116 #: lib/cannery_web/live/ammo_group_live/show.html.heex:122
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "" msgstr ""
@ -804,8 +806,8 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:64 #: lib/cannery_web/live/ammo_group_live/index.html.heex:63
#: lib/cannery_web/live/ammo_type_live/index.html.heex:39 #: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:153 #: lib/cannery_web/live/ammo_type_live/show.html.heex:153
#: lib/cannery_web/live/container_live/show.html.heex:99 #: lib/cannery_web/live/container_live/show.html.heex:99
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -836,7 +838,7 @@ msgid "Rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:159 #: lib/cannery_web/live/ammo_type_live/show.html.heex:159
#: lib/cannery_web/live/container_live/index.html.heex:39 #: lib/cannery_web/live/container_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
@ -994,7 +996,9 @@ msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/index.html.heex:70
#: lib/cannery_web/live/ammo_type_live/show.ex:120 #: lib/cannery_web/live/ammo_type_live/show.ex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
@ -1073,37 +1077,37 @@ msgid "Edit ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:46 #: lib/cannery_web/live/ammo_type_live/index.html.heex:45
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Ammo types" msgid "No Ammo types"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:33 #: lib/cannery_web/live/ammo_type_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58 #: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:33 #: lib/cannery_web/live/container_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:36 #: lib/cannery_web/live/tag_live/index.html.heex:35
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:83 #: lib/cannery_web/live/range_live/index.html.heex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1161,12 +1165,12 @@ msgstr ""
msgid "Welcome to Cannery" msgid "Welcome to Cannery"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
@ -1180,3 +1184,123 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses: %{uses_count}" msgid "Uses: %{uses_count}"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_confirmation/new.html.heex:12
#: lib/cannery_web/templates/user_registration/new.html.heex:20
#: lib/cannery_web/templates/user_reset_password/new.html.heex:12
#: lib/cannery_web/templates/user_session/new.html.heex:17
#: lib/cannery_web/templates/user_settings/edit.html.heex:27
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:24
#: lib/cannery_web/templates/user_session/new.html.heex:20
#, elixir-autogen, elixir-format
msgid "Password"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:78
#, elixir-autogen, elixir-format, fuzzy
msgid "Clone %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:81
#: lib/cannery_web/live/container_live/index.html.heex:125
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:151
#, elixir-autogen, elixir-format
msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:95
#: lib/cannery_web/live/ammo_type_live/show.html.heex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:94
#: lib/cannery_web/live/container_live/index.html.heex:138
#: lib/cannery_web/live/container_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Delete %{tag_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:166
#: lib/cannery_web/live/ammo_group_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:53
#, elixir-autogen, elixir-format
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:146
#: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:73
#: lib/cannery_web/live/container_live/index.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:45
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{container_name}"
msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:51
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{tag_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:139
#: lib/cannery_web/live/ammo_group_live/show.html.heex:66
#, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:38
#, elixir-autogen, elixir-format
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:133
#, elixir-autogen, elixir-format
msgid "Edit shot group of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:105
#, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:63
#: lib/cannery_web/live/container_live/index.html.heex:108
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "View %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:127
#, elixir-autogen, elixir-format
msgid "View ammo group of %{ammo_group_count} bullets"
msgstr ""

View File

@ -10,16 +10,11 @@ msgid ""
msgstr "" msgstr ""
"Language: en\n" "Language: en\n"
#: lib/cannery/accounts/email.ex:30 #: lib/cannery_web/templates/email/confirm_email.html.heex:3
#, elixir-autogen, elixir-format
msgid "Confirm your %{name} account"
msgstr ""
#: 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/confirm_email.txt.eex:2
#: lib/cannery_web/templates/email/reset_password.html.eex:3 #: lib/cannery_web/templates/email/reset_password.html.heex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: 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.html.heex:3
#: lib/cannery_web/templates/email/update_email.txt.eex:2 #: lib/cannery_web/templates/email/update_email.txt.eex:2
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Hi %{email}," msgid "Hi %{email},"
@ -36,61 +31,62 @@ msgstr ""
msgid "If you didn't request this change from %{url}, please ignore this." msgid "If you didn't request this change from %{url}, please ignore this."
msgstr "" msgstr ""
#: lib/cannery/accounts/email.ex:37 #: lib/cannery_web/templates/email/update_email.html.heex:8
#, elixir-autogen, elixir-format
msgid "Reset your %{name} password"
msgstr ""
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your %{name} email"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.eex:9
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}!"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}%!"
msgstr ""
#: lib/cannery_web/templates/email/update_email.html.eex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:4 #: lib/cannery_web/templates/email/update_email.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can change your email by visiting the URL below:" msgid "You can change your email by visiting the URL below:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.eex:14 #: lib/cannery_web/templates/email/confirm_email.html.heex:14
#: lib/cannery_web/templates/email/confirm_email.txt.eex:6 #: lib/cannery_web/templates/email/confirm_email.txt.eex:6
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can confirm your account by visiting the URL below:" msgid "You can confirm your account by visiting the URL below:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/reset_password.html.eex:8 #: lib/cannery_web/templates/email/reset_password.html.heex:8
#: lib/cannery_web/templates/email/reset_password.txt.eex:4 #: lib/cannery_web/templates/email/reset_password.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can reset your password by visiting the URL below:" msgid "You can reset your password by visiting the URL below:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.eex:22 #: lib/cannery/accounts/email.ex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "If you didn't create an account at %{name}, please ignore this." msgid "Confirm your Cannery account"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/reset_password.html.eex:16 #: lib/cannery_web/templates/email/confirm_email.html.heex:22
#: lib/cannery_web/templates/email/update_email.html.eex:16 #, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format msgid "If you didn't create an account at Cannery, please ignore this."
msgid "If you didn't request this change from %{name}, please ignore this." msgstr ""
#: lib/cannery_web/templates/email/reset_password.html.heex:16
#: lib/cannery_web/templates/email/update_email.html.heex:16
#, elixir-autogen, elixir-format, fuzzy
msgid "If you didn't request this change from Cannery, please ignore this."
msgstr ""
#: lib/cannery/accounts/email.ex:37
#, elixir-autogen, elixir-format, fuzzy
msgid "Reset your Cannery password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/layout/email.txt.eex:9 #: lib/cannery_web/templates/layout/email.txt.eex:9
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "This email was sent from %{name} at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website."
msgstr "" msgstr ""
#: lib/cannery_web/templates/layout/email.html.heex:13 #: lib/cannery_web/templates/layout/email.html.heex:13
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "This email was sent from %{name}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery, the self-hosted firearm tracker website."
msgstr ""
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Update your Cannery email"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.heex:9
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format, fuzzy
msgid "Welcome to Cannery"
msgstr "" msgstr ""

View File

@ -57,10 +57,10 @@ msgid "Not found"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:14 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:23 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
#: lib/cannery_web/templates/user_settings/edit.html.heex:67 #: lib/cannery_web/templates/user_settings/edit.html.heex:64
#: lib/cannery_web/templates/user_settings/edit.html.heex:123 #: lib/cannery_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below." msgid "Oops, something went wrong! Please check the errors below."
msgstr "" msgstr ""
@ -139,17 +139,11 @@ msgstr ""
msgid "Tag could not be added" msgid "Tag could not be added"
msgstr "" msgstr ""
#: lib/cannery/activity_log/shot_group.ex:122 #: lib/cannery/activity_log/shot_group.ex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count must be at least 1" msgid "Count must be at least 1"
msgstr "" msgstr ""
#: lib/cannery/activity_log/shot_group.ex:82
#: lib/cannery/activity_log/shot_group.ex:118
#, elixir-autogen, elixir-format
msgid "Count must be less than %{count}"
msgstr ""
#: lib/cannery_web/controllers/user_auth.ex:39 #: lib/cannery_web/controllers/user_auth.ex:39
#: lib/cannery_web/controllers/user_auth.ex:161 #: lib/cannery_web/controllers/user_auth.ex:161
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -190,3 +184,9 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid user and ammo pack" msgid "Please select a valid user and ammo pack"
msgstr "" msgstr ""
#: lib/cannery/activity_log/shot_group.ex:83
#: lib/cannery/activity_log/shot_group.ex:121
#, elixir-autogen, elixir-format, fuzzy
msgid "Count must be less than %{count} shots"
msgstr ""

View File

@ -44,32 +44,32 @@ msgstr ""
msgid "A link to confirm your email change has been sent to the new address." msgid "A link to confirm your email change has been sent to the new address."
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:98 #: lib/cannery_web/live/invite_live/index.html.heex:99
#: lib/cannery_web/live/invite_live/index.html.heex:126 #: lib/cannery_web/live/invite_live/index.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:92 #: lib/cannery_web/live/container_live/index.html.heex:92
#: lib/cannery_web/live/container_live/index.html.heex:135 #: lib/cannery_web/live/container_live/index.html.heex:136
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:55
#: lib/cannery_web/live/tag_live/index.html.heex:63 #: lib/cannery_web/live/tag_live/index.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:153 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75 #: lib/cannery_web/live/ammo_group_live/show.html.heex:78
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:163 #: lib/cannery_web/templates/user_settings/edit.html.heex:157
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete your account?" msgid "Are you sure you want to delete your account?"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:106 #: lib/cannery_web/components/topbar.ex:104
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to log out?" msgid "Are you sure you want to log out?"
msgstr "" msgstr ""
@ -155,8 +155,8 @@ msgstr ""
msgid "Are you sure you want to unstage this ammo?" msgid "Are you sure you want to unstage this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:142 #: lib/cannery_web/live/ammo_group_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:116 #: lib/cannery_web/live/range_live/index.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""
@ -203,7 +203,7 @@ msgstr ""
msgid "Creating..." msgid "Creating..."
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:144 #: lib/cannery_web/templates/user_settings/edit.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to change your language?" msgid "Are you sure you want to change your language?"
msgstr "" msgstr ""
@ -236,7 +236,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:90 #: lib/cannery_web/live/ammo_type_live/index.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
@ -272,12 +272,12 @@ msgstr ""
msgid "%{user_email} deleted succesfully" msgid "%{user_email} deleted succesfully"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:48 #: lib/cannery_web/live/invite_live/index.html.heex:49
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete the invite for %{invite_name}?" msgid "Are you sure you want to delete the invite for %{invite_name}?"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:73 #: lib/cannery_web/live/invite_live/index.html.heex:74
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to make %{invite_name} unlimited?" msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr "" msgstr ""

View File

@ -57,10 +57,10 @@ msgid "Not found"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:14 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:23 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
#: lib/cannery_web/templates/user_settings/edit.html.heex:67 #: lib/cannery_web/templates/user_settings/edit.html.heex:64
#: lib/cannery_web/templates/user_settings/edit.html.heex:123 #: lib/cannery_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below." msgid "Oops, something went wrong! Please check the errors below."
msgstr "" msgstr ""
@ -138,17 +138,11 @@ msgstr ""
msgid "Tag could not be added" msgid "Tag could not be added"
msgstr "" msgstr ""
#: lib/cannery/activity_log/shot_group.ex:122 #: lib/cannery/activity_log/shot_group.ex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count must be at least 1" msgid "Count must be at least 1"
msgstr "" msgstr ""
#: lib/cannery/activity_log/shot_group.ex:82
#: lib/cannery/activity_log/shot_group.ex:118
#, elixir-autogen, elixir-format
msgid "Count must be less than %{count}"
msgstr ""
#: lib/cannery_web/controllers/user_auth.ex:39 #: lib/cannery_web/controllers/user_auth.ex:39
#: lib/cannery_web/controllers/user_auth.ex:161 #: lib/cannery_web/controllers/user_auth.ex:161
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -189,3 +183,9 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Please select a valid user and ammo pack" msgid "Please select a valid user and ammo pack"
msgstr "" msgstr ""
#: lib/cannery/activity_log/shot_group.ex:83
#: lib/cannery/activity_log/shot_group.ex:121
#, elixir-autogen, elixir-format
msgid "Count must be less than %{count} shots"
msgstr ""

View File

@ -46,13 +46,13 @@ msgid "Add your first type!"
msgstr "¡Añade tu primer tipo!" msgstr "¡Añade tu primer tipo!"
#: lib/cannery_web/templates/user_settings/edit.html.heex:15 #: lib/cannery_web/templates/user_settings/edit.html.heex:15
#: lib/cannery_web/templates/user_settings/edit.html.heex:45 #: lib/cannery_web/templates/user_settings/edit.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change email" msgid "Change email"
msgstr "Cambiar correo electrónico" msgstr "Cambiar correo electrónico"
#: lib/cannery_web/templates/user_settings/edit.html.heex:59 #: lib/cannery_web/templates/user_settings/edit.html.heex:57
#: lib/cannery_web/templates/user_settings/edit.html.heex:101 #: lib/cannery_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change password" msgid "Change password"
msgstr "Cambiar contraseña" msgstr "Cambiar contraseña"
@ -62,14 +62,14 @@ msgstr "Cambiar contraseña"
msgid "Create Invite" msgid "Create Invite"
msgstr "Crear Invitación" msgstr "Crear Invitación"
#: lib/cannery_web/templates/user_settings/edit.html.heex:165 #: lib/cannery_web/templates/user_settings/edit.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete User" msgid "Delete User"
msgstr "Eliminar cuenta de Usuario" msgstr "Eliminar cuenta de Usuario"
#: lib/cannery_web/templates/user_registration/new.html.heex:47 #: lib/cannery_web/templates/user_registration/new.html.heex:47
#: lib/cannery_web/templates/user_reset_password/new.html.heex:3 #: lib/cannery_web/templates/user_reset_password/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:44 #: lib/cannery_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "¿Has olvidado tu contraseña?" msgstr "¿Has olvidado tu contraseña?"
@ -79,13 +79,13 @@ msgstr "¿Has olvidado tu contraseña?"
msgid "Invite someone new!" msgid "Invite someone new!"
msgstr "¡Invita a alguien nuevo!" msgstr "¡Invita a alguien nuevo!"
#: lib/cannery_web/components/topbar.ex:135 #: lib/cannery_web/components/topbar.ex:137
#: lib/cannery_web/templates/user_confirmation/new.html.heex:31 #: lib/cannery_web/templates/user_confirmation/new.html.heex:31
#: lib/cannery_web/templates/user_registration/new.html.heex:44 #: lib/cannery_web/templates/user_registration/new.html.heex:44
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:47 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:45
#: lib/cannery_web/templates/user_reset_password/new.html.heex:31 #: lib/cannery_web/templates/user_reset_password/new.html.heex:31
#: lib/cannery_web/templates/user_session/new.html.heex:3 #: lib/cannery_web/templates/user_session/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:30 #: lib/cannery_web/templates/user_session/new.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log in" msgid "Log in"
msgstr "Entrar" msgstr "Entrar"
@ -110,13 +110,13 @@ msgstr "Nuevo Contenedor"
msgid "New Tag" msgid "New Tag"
msgstr "Nueva Etiqueta" msgstr "Nueva Etiqueta"
#: lib/cannery_web/components/topbar.ex:127 #: lib/cannery_web/components/topbar.ex:129
#: lib/cannery_web/templates/user_confirmation/new.html.heex:28 #: lib/cannery_web/templates/user_confirmation/new.html.heex:28
#: lib/cannery_web/templates/user_registration/new.html.heex:3 #: lib/cannery_web/templates/user_registration/new.html.heex:3
#: lib/cannery_web/templates/user_registration/new.html.heex:37 #: lib/cannery_web/templates/user_registration/new.html.heex:37
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:44 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:42
#: lib/cannery_web/templates/user_reset_password/new.html.heex:28 #: lib/cannery_web/templates/user_reset_password/new.html.heex:28
#: lib/cannery_web/templates/user_session/new.html.heex:41 #: lib/cannery_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Register" msgid "Register"
msgstr "Registrarse" msgstr "Registrarse"
@ -128,7 +128,7 @@ msgid "Resend confirmation instructions"
msgstr "Reenviar instrucciones de confirmación" msgstr "Reenviar instrucciones de confirmación"
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:3 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:3
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:31 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "Resetear contraseña" msgstr "Resetear contraseña"
@ -169,8 +169,8 @@ msgstr "Preparar munición"
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "¿Por qué no preparar parte para disparar?" msgstr "¿Por qué no preparar parte para disparar?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:101 #: lib/cannery_web/live/ammo_group_live/index.html.heex:100
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101 #: lib/cannery_web/live/ammo_group_live/show.html.heex:107
#: lib/cannery_web/live/range_live/index.html.heex:38 #: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Record shots" msgid "Record shots"
@ -181,7 +181,7 @@ msgstr "Tiros récord"
msgid "Add another container!" msgid "Add another container!"
msgstr "¡Añade otro contenedor!" msgstr "¡Añade otro contenedor!"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:94 #: lib/cannery_web/live/ammo_group_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move containers" msgid "Move containers"
msgstr "Mover contenedores" msgstr "Mover contenedores"
@ -191,7 +191,7 @@ msgstr "Mover contenedores"
msgid "Select" msgid "Select"
msgstr "Seleccionar" msgstr "Seleccionar"
#: lib/cannery_web/live/invite_live/index.html.heex:30 #: lib/cannery_web/live/invite_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "Copiar al portapapeles" msgstr "Copiar al portapapeles"
@ -206,17 +206,17 @@ msgstr "añade primero un contenedor"
msgid "Create" msgid "Create"
msgstr "Crear" msgstr "Crear"
#: lib/cannery_web/templates/user_settings/edit.html.heex:115 #: lib/cannery_web/templates/user_settings/edit.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change Language" msgid "Change Language"
msgstr "Cambiar Lenguaje" msgstr "Cambiar Lenguaje"
#: lib/cannery_web/templates/user_settings/edit.html.heex:142 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "Cambiar lenguaje" msgstr "Cambiar lenguaje"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:60 #: lib/cannery_web/live/ammo_group_live/show.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View in Catalog" msgid "View in Catalog"
msgstr "Ver en Catalogo" msgstr "Ver en Catalogo"
@ -231,24 +231,24 @@ msgstr "añade primero un tipo de munición"
msgid "Move ammo" msgid "Move ammo"
msgstr "Mover munición" msgstr "Mover munición"
#: lib/cannery_web/live/invite_live/index.html.heex:78 #: lib/cannery_web/live/invite_live/index.html.heex:79
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Set Unlimited" msgid "Set Unlimited"
msgstr "Activar ilimitados" msgstr "Activar ilimitados"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86 #: lib/cannery_web/live/ammo_group_live/show.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:31 #: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage for range" msgid "Stage for range"
msgstr "Preparar para el campo de tiro" msgstr "Preparar para el campo de tiro"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85 #: lib/cannery_web/live/ammo_group_live/show.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:30 #: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage from range" msgid "Unstage from range"
msgstr "Desmontar del campo de tiro" msgstr "Desmontar del campo de tiro"
#: lib/cannery_web/templates/user_settings/edit.html.heex:156 #: lib/cannery_web/templates/user_settings/edit.html.heex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "Exportar datos como JSON" msgstr "Exportar datos como JSON"

View File

@ -19,7 +19,7 @@ msgstr ""
msgid "Access from any internet-capable device" msgid "Access from any internet-capable device"
msgstr "Acceso desde cualquier dispositivo con conexión a internet" msgstr "Acceso desde cualquier dispositivo con conexión a internet"
#: lib/cannery_web/live/invite_live/index.html.heex:87 #: lib/cannery_web/live/invite_live/index.html.heex:88
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Admins" msgid "Admins"
msgstr "Administradores" msgstr "Administradores"
@ -188,14 +188,14 @@ msgstr "Invitación Desactivada"
msgid "Invite Only" msgid "Invite Only"
msgstr "Solo Invitación" msgstr "Solo Invitación"
#: lib/cannery_web/components/topbar.ex:90 #: lib/cannery_web/components/topbar.ex:89
#: lib/cannery_web/live/invite_live/index.ex:42 #: lib/cannery_web/live/invite_live/index.ex:42
#: lib/cannery_web/live/invite_live/index.html.heex:3 #: lib/cannery_web/live/invite_live/index.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invites" msgid "Invites"
msgstr "Invitaciones" msgstr "Invitaciones"
#: lib/cannery_web/templates/user_session/new.html.heex:25 #: lib/cannery_web/templates/user_session/new.html.heex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Keep me logged in for 60 days" msgid "Keep me logged in for 60 days"
msgstr "Mantener registrado durante 60 días" msgstr "Mantener registrado durante 60 días"
@ -267,7 +267,7 @@ msgid "New Tag"
msgstr "Nueva Etiqueta" msgstr "Nueva Etiqueta"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:71 #: lib/cannery_web/live/ammo_group_live/index.html.heex:70
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "Sin Munición" msgstr "Sin Munición"
@ -278,7 +278,7 @@ msgid "No ammo for this type"
msgstr "Sin munición para este tipo" msgstr "Sin munición para este tipo"
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:47 #: lib/cannery_web/live/container_live/index.html.heex:46
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "Sin contenedores" msgstr "Sin contenedores"
@ -290,7 +290,7 @@ msgstr "Sin invitaciones"
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:43 #: lib/cannery_web/live/tag_live/index.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "Sin etiquetas" msgstr "Sin etiquetas"
@ -372,7 +372,7 @@ msgstr "Simple:"
msgid "Steel" msgid "Steel"
msgstr "Acero" msgstr "Acero"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:111 #: lib/cannery_web/live/ammo_group_live/show.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stored in" msgid "Stored in"
msgstr "Guardado en" msgstr "Guardado en"
@ -421,7 +421,7 @@ msgstr "Tipo"
msgid "Type:" msgid "Type:"
msgstr "Tipo:" msgstr "Tipo:"
#: lib/cannery_web/live/invite_live/index.html.heex:115 #: lib/cannery_web/live/invite_live/index.html.heex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Users" msgid "Users"
msgstr "Usuarios" msgstr "Usuarios"
@ -488,7 +488,7 @@ msgid "New Shot Records"
msgstr "Nuevos Tiros Récord" msgstr "Nuevos Tiros Récord"
#: lib/cannery_web/live/range_live/index.html.heex:48 #: lib/cannery_web/live/range_live/index.html.heex:48
#: lib/cannery_web/live/range_live/index.html.heex:90 #: lib/cannery_web/live/range_live/index.html.heex:89
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "No se han grabado tiros" msgstr "No se han grabado tiros"
@ -513,7 +513,7 @@ msgid "Shot Records"
msgstr "Récords de Tiro" msgstr "Récords de Tiro"
#: lib/cannery_web/live/ammo_group_live/index.ex:38 #: lib/cannery_web/live/ammo_group_live/index.ex:38
#: lib/cannery_web/live/ammo_group_live/index.html.heex:118 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
msgstr "Mover munición" msgstr "Mover munición"
@ -575,28 +575,30 @@ msgstr "Tipo de polvora"
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:80 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:20
#: lib/cannery_web/templates/user_settings/edit.html.heex:76
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Confirm new password" msgid "Confirm new password"
msgstr "Confirme contraseña nueva" msgstr "Confirme contraseña nueva"
#: lib/cannery_web/templates/user_settings/edit.html.heex:33 #: lib/cannery_web/templates/user_settings/edit.html.heex:31
#: lib/cannery_web/templates/user_settings/edit.html.heex:89 #: lib/cannery_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current password" msgid "Current password"
msgstr "Contraseña actual" msgstr "Contraseña actual"
#: lib/cannery_web/templates/user_settings/edit.html.heex:73 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:16
#: lib/cannery_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New password" msgid "New password"
msgstr "Nueva contraseña" msgstr "Nueva contraseña"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage" msgid "Stage"
msgstr "Preparar" msgstr "Preparar"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "Retirar" msgstr "Retirar"
@ -663,7 +665,7 @@ msgstr "Cantidad original:"
msgid "Percentage left:" msgid "Percentage left:"
msgstr "Pocentaje restante:" msgstr "Pocentaje restante:"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:124 #: lib/cannery_web/live/ammo_group_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds used" msgid "Rounds used"
msgstr "Balas usadas" msgstr "Balas usadas"
@ -710,17 +712,17 @@ msgid "Added on:"
msgstr "Añadido en:" msgstr "Añadido en:"
#: lib/cannery_web/templates/user_registration/new.html.heex:32 #: lib/cannery_web/templates/user_registration/new.html.heex:32
#: lib/cannery_web/templates/user_settings/edit.html.heex:133 #: lib/cannery_web/templates/user_settings/edit.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "English" msgid "English"
msgstr "Inglés" msgstr "Inglés"
#: lib/cannery_web/templates/user_settings/edit.html.heex:135 #: lib/cannery_web/templates/user_settings/edit.html.heex:129
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "French" msgid "French"
msgstr "Francés" msgstr "Francés"
#: lib/cannery_web/templates/user_settings/edit.html.heex:134 #: lib/cannery_web/templates/user_settings/edit.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "Alemán" msgstr "Alemán"
@ -778,7 +780,7 @@ msgstr "No hay munición en este contenedor"
msgid "Show Ammo" msgid "Show Ammo"
msgstr "Mostrar Munición" msgstr "Mostrar Munición"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:116 #: lib/cannery_web/live/ammo_group_live/show.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "Esta munición no está en un contenedor" msgstr "Esta munición no está en un contenedor"
@ -812,8 +814,8 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "Contenedor:" msgstr "Contenedor:"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:64 #: lib/cannery_web/live/ammo_group_live/index.html.heex:63
#: lib/cannery_web/live/ammo_type_live/index.html.heex:39 #: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:153 #: lib/cannery_web/live/ammo_type_live/show.html.heex:153
#: lib/cannery_web/live/container_live/show.html.heex:99 #: lib/cannery_web/live/container_live/show.html.heex:99
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -844,7 +846,7 @@ msgid "Rounds"
msgstr "Balas" msgstr "Balas"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:159 #: lib/cannery_web/live/ammo_type_live/show.html.heex:159
#: lib/cannery_web/live/container_live/index.html.heex:39 #: lib/cannery_web/live/container_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
@ -1002,7 +1004,9 @@ msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/index.html.heex:70
#: lib/cannery_web/live/ammo_type_live/show.ex:120 #: lib/cannery_web/live/ammo_type_live/show.ex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "Editar %{ammo_type_name}" msgstr "Editar %{ammo_type_name}"
@ -1081,37 +1085,37 @@ msgid "Edit ammo"
msgstr "Editar munición" msgstr "Editar munición"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:46 #: lib/cannery_web/live/ammo_type_live/index.html.heex:45
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Ammo types" msgid "No Ammo types"
msgstr "Sin tipo de Munición" msgstr "Sin tipo de Munición"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:33 #: lib/cannery_web/live/ammo_type_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58 #: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:33 #: lib/cannery_web/live/container_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:36 #: lib/cannery_web/live/tag_live/index.html.heex:35
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:83 #: lib/cannery_web/live/range_live/index.html.heex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1180,12 +1184,12 @@ msgstr ""
msgid "Welcome to Cannery" msgid "Welcome to Cannery"
msgstr "Bienvenide a %{name}" msgstr "Bienvenide a %{name}"
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
@ -1199,3 +1203,123 @@ msgstr "Usos Restantes:"
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses: %{uses_count}" msgid "Uses: %{uses_count}"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_confirmation/new.html.heex:12
#: lib/cannery_web/templates/user_registration/new.html.heex:20
#: lib/cannery_web/templates/user_reset_password/new.html.heex:12
#: lib/cannery_web/templates/user_session/new.html.heex:17
#: lib/cannery_web/templates/user_settings/edit.html.heex:27
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:24
#: lib/cannery_web/templates/user_session/new.html.heex:20
#, elixir-autogen, elixir-format
msgid "Password"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:78
#, elixir-autogen, elixir-format, fuzzy
msgid "Clone %{ammo_type_name}"
msgstr "Editar %{ammo_type_name}"
#: lib/cannery_web/live/container_live/index.html.heex:81
#: lib/cannery_web/live/container_live/index.html.heex:125
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:151
#, elixir-autogen, elixir-format
msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:95
#: lib/cannery_web/live/ammo_type_live/show.html.heex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete %{ammo_type_name}"
msgstr "Editar %{ammo_type_name}"
#: lib/cannery_web/live/container_live/index.html.heex:94
#: lib/cannery_web/live/container_live/index.html.heex:138
#: lib/cannery_web/live/container_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Delete %{tag_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:166
#: lib/cannery_web/live/ammo_group_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:53
#, elixir-autogen, elixir-format
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:146
#: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:73
#: lib/cannery_web/live/container_live/index.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:45
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{container_name}"
msgstr "Editar %{name}"
#: lib/cannery_web/live/tag_live/index.html.heex:51
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{tag_name}"
msgstr "Editar %{name}"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:139
#: lib/cannery_web/live/ammo_group_live/show.html.heex:66
#, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:38
#, elixir-autogen, elixir-format
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:133
#, elixir-autogen, elixir-format
msgid "Edit shot group of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:105
#, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:63
#: lib/cannery_web/live/container_live/index.html.heex:108
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "View %{ammo_type_name}"
msgstr "Editar %{ammo_type_name}"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:127
#, elixir-autogen, elixir-format
msgid "View ammo group of %{ammo_group_count} bullets"
msgstr ""

View File

@ -14,25 +14,11 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.14.2\n" "X-Generator: Weblate 4.14.2\n"
## This file is a PO Template file. #: lib/cannery_web/templates/email/confirm_email.html.heex:3
##
## "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 "Confirma el %{name} de la cuenta"
#: 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/confirm_email.txt.eex:2
#: lib/cannery_web/templates/email/reset_password.html.eex:3 #: lib/cannery_web/templates/email/reset_password.html.heex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: 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.html.heex:3
#: lib/cannery_web/templates/email/update_email.txt.eex:2 #: lib/cannery_web/templates/email/update_email.txt.eex:2
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Hi %{email}," msgid "Hi %{email},"
@ -49,27 +35,7 @@ msgstr "Si no creó un usuario en %{url}, por favor, ignore este mensaje."
msgid "If you didn't request this change from %{url}, please ignore this." msgid "If you didn't request this change from %{url}, please ignore this."
msgstr "Si no pidió este cambio desde %{url}, por favor, ignore este mensaje." msgstr "Si no pidió este cambio desde %{url}, por favor, ignore este mensaje."
#: lib/cannery/accounts/email.ex:37 #: lib/cannery_web/templates/email/update_email.html.heex:8
#, elixir-autogen, elixir-format
msgid "Reset your %{name} password"
msgstr "Reseteé su contraseña en %{name}"
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your %{name} email"
msgstr "Actualice su correo en &{url}"
#: lib/cannery_web/templates/email/confirm_email.html.eex:9
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}!"
msgstr "¡Bienvenide a %{name}!"
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}%!"
msgstr "¡Bienvenide a %{name}%!"
#: lib/cannery_web/templates/email/update_email.html.eex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:4 #: lib/cannery_web/templates/email/update_email.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can change your email by visiting the URL below:" msgid "You can change your email by visiting the URL below:"
@ -77,14 +43,14 @@ msgstr ""
"Puede cambiar su correo electrónico visitando el enlace que se muestra a " "Puede cambiar su correo electrónico visitando el enlace que se muestra a "
"continuación:" "continuación:"
#: lib/cannery_web/templates/email/confirm_email.html.eex:14 #: lib/cannery_web/templates/email/confirm_email.html.heex:14
#: lib/cannery_web/templates/email/confirm_email.txt.eex:6 #: lib/cannery_web/templates/email/confirm_email.txt.eex:6
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can confirm your account by visiting the URL below:" msgid "You can confirm your account by visiting the URL below:"
msgstr "" msgstr ""
"Puede confirmar su cuenta visitando el enlace que se muestra a continuación:" "Puede confirmar su cuenta visitando el enlace que se muestra a continuación:"
#: lib/cannery_web/templates/email/reset_password.html.eex:8 #: lib/cannery_web/templates/email/reset_password.html.heex:8
#: lib/cannery_web/templates/email/reset_password.txt.eex:4 #: lib/cannery_web/templates/email/reset_password.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can reset your password by visiting the URL below:" msgid "You can reset your password by visiting the URL below:"
@ -92,29 +58,59 @@ msgstr ""
"Puede reestablecer su contraseña visitando el enlace que se muestra a " "Puede reestablecer su contraseña visitando el enlace que se muestra a "
"continuación:" "continuación:"
#: lib/cannery_web/templates/email/confirm_email.html.eex:22 ## This file is a PO Template file.
#, elixir-autogen, elixir-format ##
msgid "If you didn't create an account at %{name}, please ignore this." ## "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, fuzzy
msgid "Confirm your Cannery account"
msgstr "Confirma el %{name} de la cuenta"
#: lib/cannery_web/templates/email/confirm_email.html.heex:22
#, elixir-autogen, elixir-format, fuzzy
msgid "If you didn't create an account at Cannery, please ignore this."
msgstr "Si no ha creado una cuenta en %{name}, por favor, ignore este mensaje." msgstr "Si no ha creado una cuenta en %{name}, por favor, ignore este mensaje."
#: lib/cannery_web/templates/email/reset_password.html.eex:16 #: lib/cannery_web/templates/email/reset_password.html.heex:16
#: lib/cannery_web/templates/email/update_email.html.eex:16 #: lib/cannery_web/templates/email/update_email.html.heex:16
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "If you didn't request this change from %{name}, please ignore this." msgid "If you didn't request this change from Cannery, please ignore this."
msgstr "" msgstr ""
"Si no ha solicitado este cambio desde %{name}, por favor, ignore este " "Si no ha solicitado este cambio desde %{name}, por favor, ignore este "
"mensaje." "mensaje."
#: lib/cannery/accounts/email.ex:37
#, elixir-autogen, elixir-format, fuzzy
msgid "Reset your Cannery password"
msgstr "Reseteé su contraseña en %{name}"
#: lib/cannery_web/templates/layout/email.txt.eex:9 #: lib/cannery_web/templates/layout/email.txt.eex:9
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "This email was sent from %{name} at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website."
msgstr "" msgstr ""
"Este correo se mandó por %{name} desde %{url}, la página de seguimiento de " "Este correo se mandó por %{name} desde %{url}, la página de seguimiento de "
"armas autogestionada." "armas autogestionada."
#: lib/cannery_web/templates/layout/email.html.heex:13 #: lib/cannery_web/templates/layout/email.html.heex:13
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "This email was sent from %{name}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery, the self-hosted firearm tracker website."
msgstr "" msgstr ""
"Este correo se mandó por %{name}, la página de seguimiento de armas " "Este correo se mandó por %{name}, la página de seguimiento de armas "
"autogestionada." "autogestionada."
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Update your Cannery email"
msgstr "Actualice su correo en &{url}"
#: lib/cannery_web/templates/email/confirm_email.html.heex:9
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format, fuzzy
msgid "Welcome to Cannery"
msgstr "¡Bienvenide a %{name}!"

View File

@ -70,10 +70,10 @@ msgid "Not found"
msgstr "No se encontró" msgstr "No se encontró"
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:14 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:23 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
#: lib/cannery_web/templates/user_settings/edit.html.heex:67 #: lib/cannery_web/templates/user_settings/edit.html.heex:64
#: lib/cannery_web/templates/user_settings/edit.html.heex:123 #: lib/cannery_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below." msgid "Oops, something went wrong! Please check the errors below."
msgstr "" msgstr ""
@ -154,17 +154,11 @@ msgstr "Etiqueta no encontrada"
msgid "Tag could not be added" msgid "Tag could not be added"
msgstr "No se ha podido añadir la etiqueta" msgstr "No se ha podido añadir la etiqueta"
#: lib/cannery/activity_log/shot_group.ex:122 #: lib/cannery/activity_log/shot_group.ex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count must be at least 1" msgid "Count must be at least 1"
msgstr "El recuento debe dar al menos 1" msgstr "El recuento debe dar al menos 1"
#: lib/cannery/activity_log/shot_group.ex:82
#: lib/cannery/activity_log/shot_group.ex:118
#, elixir-autogen, elixir-format
msgid "Count must be less than %{count}"
msgstr "El recuento debe ser menos de %{count}"
#: lib/cannery_web/controllers/user_auth.ex:39 #: lib/cannery_web/controllers/user_auth.ex:39
#: lib/cannery_web/controllers/user_auth.ex:161 #: lib/cannery_web/controllers/user_auth.ex:161
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -205,3 +199,9 @@ msgstr "Su navegador no es compatible con el elemento lienzo."
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Please select a valid user and ammo pack" msgid "Please select a valid user and ammo pack"
msgstr "Por favor escoja un usuario y tipo de munición valido" msgstr "Por favor escoja un usuario y tipo de munición valido"
#: lib/cannery/activity_log/shot_group.ex:83
#: lib/cannery/activity_log/shot_group.ex:121
#, elixir-autogen, elixir-format, fuzzy
msgid "Count must be less than %{count} shots"
msgstr "El recuento debe ser menos de %{count}"

View File

@ -59,32 +59,32 @@ msgstr ""
"Un enlace para confirmar el correo electrónico ha sido enviado a la nueva " "Un enlace para confirmar el correo electrónico ha sido enviado a la nueva "
"dirección." "dirección."
#: lib/cannery_web/live/invite_live/index.html.heex:98 #: lib/cannery_web/live/invite_live/index.html.heex:99
#: lib/cannery_web/live/invite_live/index.html.heex:126 #: lib/cannery_web/live/invite_live/index.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "Está seguro que desea eliminar %{email}? Esta acción es permanente!" msgstr "Está seguro que desea eliminar %{email}? Esta acción es permanente!"
#: lib/cannery_web/live/container_live/index.html.heex:92 #: lib/cannery_web/live/container_live/index.html.heex:92
#: lib/cannery_web/live/container_live/index.html.heex:135 #: lib/cannery_web/live/container_live/index.html.heex:136
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:55
#: lib/cannery_web/live/tag_live/index.html.heex:63 #: lib/cannery_web/live/tag_live/index.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "Está seguro que desea eliminar %{name}?" msgstr "Está seguro que desea eliminar %{name}?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:153 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75 #: lib/cannery_web/live/ammo_group_live/show.html.heex:78
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
msgstr "Está seguro que desea eliminar esta munición?" msgstr "Está seguro que desea eliminar esta munición?"
#: lib/cannery_web/templates/user_settings/edit.html.heex:163 #: lib/cannery_web/templates/user_settings/edit.html.heex:157
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete your account?" msgid "Are you sure you want to delete your account?"
msgstr "Está seguro que desea eliminar su cuenta?" msgstr "Está seguro que desea eliminar su cuenta?"
#: lib/cannery_web/components/topbar.ex:106 #: lib/cannery_web/components/topbar.ex:104
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to log out?" msgid "Are you sure you want to log out?"
msgstr "Está seguro que desea cerrar sesión?" msgstr "Está seguro que desea cerrar sesión?"
@ -175,8 +175,8 @@ msgstr "Tiros registrados exitosamente"
msgid "Are you sure you want to unstage this ammo?" msgid "Are you sure you want to unstage this ammo?"
msgstr "Está seguro que desea desmontar esta munición?" msgstr "Está seguro que desea desmontar esta munición?"
#: lib/cannery_web/live/ammo_group_live/show.ex:142 #: lib/cannery_web/live/ammo_group_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:116 #: lib/cannery_web/live/range_live/index.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "¿Está segure que quiere borrar este récord de disparos?" msgstr "¿Está segure que quiere borrar este récord de disparos?"
@ -223,7 +223,7 @@ msgstr "Necesitará hacerlo"
msgid "Creating..." msgid "Creating..."
msgstr "Creando..." msgstr "Creando..."
#: lib/cannery_web/templates/user_settings/edit.html.heex:144 #: lib/cannery_web/templates/user_settings/edit.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to change your language?" msgid "Are you sure you want to change your language?"
msgstr "¿Está segure de que quiere cambiar el idioma?" msgstr "¿Está segure de que quiere cambiar el idioma?"
@ -256,7 +256,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "Munición añadida exitosamente" msgstr[0] "Munición añadida exitosamente"
msgstr[1] "Municiones añadidas exitosamente" msgstr[1] "Municiones añadidas exitosamente"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:90 #: lib/cannery_web/live/ammo_type_live/index.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
@ -294,12 +294,12 @@ msgstr "%{name} actualizado exitosamente"
msgid "%{user_email} deleted succesfully" msgid "%{user_email} deleted succesfully"
msgstr "%{name} borrado exitosamente" msgstr "%{name} borrado exitosamente"
#: lib/cannery_web/live/invite_live/index.html.heex:48 #: lib/cannery_web/live/invite_live/index.html.heex:49
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete the invite for %{invite_name}?" msgid "Are you sure you want to delete the invite for %{invite_name}?"
msgstr "Está seguro que quiere eliminar la invitación para %{name}?" msgstr "Está seguro que quiere eliminar la invitación para %{name}?"
#: lib/cannery_web/live/invite_live/index.html.heex:73 #: lib/cannery_web/live/invite_live/index.html.heex:74
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to make %{invite_name} unlimited?" msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr "Está seguro que desea hacer %{name} ilimitado?" msgstr "Está seguro que desea hacer %{name} ilimitado?"

View File

@ -46,13 +46,13 @@ msgid "Add your first type!"
msgstr "Ajoutez votre premier type!" msgstr "Ajoutez votre premier type!"
#: lib/cannery_web/templates/user_settings/edit.html.heex:15 #: lib/cannery_web/templates/user_settings/edit.html.heex:15
#: lib/cannery_web/templates/user_settings/edit.html.heex:45 #: lib/cannery_web/templates/user_settings/edit.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change email" msgid "Change email"
msgstr "Changer le mél" msgstr "Changer le mél"
#: lib/cannery_web/templates/user_settings/edit.html.heex:59 #: lib/cannery_web/templates/user_settings/edit.html.heex:57
#: lib/cannery_web/templates/user_settings/edit.html.heex:101 #: lib/cannery_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change password" msgid "Change password"
msgstr "Changer le mot de passe" msgstr "Changer le mot de passe"
@ -62,14 +62,14 @@ msgstr "Changer le mot de passe"
msgid "Create Invite" msgid "Create Invite"
msgstr "Créer une invitation" msgstr "Créer une invitation"
#: lib/cannery_web/templates/user_settings/edit.html.heex:165 #: lib/cannery_web/templates/user_settings/edit.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete User" msgid "Delete User"
msgstr "Supprimer utilisateur" msgstr "Supprimer utilisateur"
#: lib/cannery_web/templates/user_registration/new.html.heex:47 #: lib/cannery_web/templates/user_registration/new.html.heex:47
#: lib/cannery_web/templates/user_reset_password/new.html.heex:3 #: lib/cannery_web/templates/user_reset_password/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:44 #: lib/cannery_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "Mot de passe oublié?" msgstr "Mot de passe oublié?"
@ -79,13 +79,13 @@ msgstr "Mot de passe oublié?"
msgid "Invite someone new!" msgid "Invite someone new!"
msgstr "Invitez une nouvelle personne!" msgstr "Invitez une nouvelle personne!"
#: lib/cannery_web/components/topbar.ex:135 #: lib/cannery_web/components/topbar.ex:137
#: lib/cannery_web/templates/user_confirmation/new.html.heex:31 #: lib/cannery_web/templates/user_confirmation/new.html.heex:31
#: lib/cannery_web/templates/user_registration/new.html.heex:44 #: lib/cannery_web/templates/user_registration/new.html.heex:44
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:47 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:45
#: lib/cannery_web/templates/user_reset_password/new.html.heex:31 #: lib/cannery_web/templates/user_reset_password/new.html.heex:31
#: lib/cannery_web/templates/user_session/new.html.heex:3 #: lib/cannery_web/templates/user_session/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:30 #: lib/cannery_web/templates/user_session/new.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log in" msgid "Log in"
msgstr "Se connecter" msgstr "Se connecter"
@ -110,13 +110,13 @@ msgstr "Nouveau conteneur"
msgid "New Tag" msgid "New Tag"
msgstr "Nouveau tag" msgstr "Nouveau tag"
#: lib/cannery_web/components/topbar.ex:127 #: lib/cannery_web/components/topbar.ex:129
#: lib/cannery_web/templates/user_confirmation/new.html.heex:28 #: lib/cannery_web/templates/user_confirmation/new.html.heex:28
#: lib/cannery_web/templates/user_registration/new.html.heex:3 #: lib/cannery_web/templates/user_registration/new.html.heex:3
#: lib/cannery_web/templates/user_registration/new.html.heex:37 #: lib/cannery_web/templates/user_registration/new.html.heex:37
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:44 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:42
#: lib/cannery_web/templates/user_reset_password/new.html.heex:28 #: lib/cannery_web/templates/user_reset_password/new.html.heex:28
#: lib/cannery_web/templates/user_session/new.html.heex:41 #: lib/cannery_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Register" msgid "Register"
msgstr "Senregistrer" msgstr "Senregistrer"
@ -128,7 +128,7 @@ msgid "Resend confirmation instructions"
msgstr "Renvoyer les instructions de confirmation" msgstr "Renvoyer les instructions de confirmation"
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:3 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:3
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:31 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "Réinitialisé le mot de passe" msgstr "Réinitialisé le mot de passe"
@ -169,8 +169,8 @@ msgstr "Munition préparée"
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "Pourquoi pas en préparer pour tirer?" msgstr "Pourquoi pas en préparer pour tirer?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:101 #: lib/cannery_web/live/ammo_group_live/index.html.heex:100
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101 #: lib/cannery_web/live/ammo_group_live/show.html.heex:107
#: lib/cannery_web/live/range_live/index.html.heex:38 #: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Record shots" msgid "Record shots"
@ -181,7 +181,7 @@ msgstr "Enregistrer des tirs"
msgid "Add another container!" msgid "Add another container!"
msgstr "Ajoutez un autre conteneur!" msgstr "Ajoutez un autre conteneur!"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:94 #: lib/cannery_web/live/ammo_group_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move containers" msgid "Move containers"
msgstr "Déplacer les conteneurs" msgstr "Déplacer les conteneurs"
@ -191,7 +191,7 @@ msgstr "Déplacer les conteneurs"
msgid "Select" msgid "Select"
msgstr "Sélectionner" msgstr "Sélectionner"
#: lib/cannery_web/live/invite_live/index.html.heex:30 #: lib/cannery_web/live/invite_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "Copier dans le presse-papier" msgstr "Copier dans le presse-papier"
@ -206,17 +206,17 @@ msgstr "ajouter un conteneur en premier"
msgid "Create" msgid "Create"
msgstr "Créer" msgstr "Créer"
#: lib/cannery_web/templates/user_settings/edit.html.heex:115 #: lib/cannery_web/templates/user_settings/edit.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change Language" msgid "Change Language"
msgstr "Changer la langue" msgstr "Changer la langue"
#: lib/cannery_web/templates/user_settings/edit.html.heex:142 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "Changer la langue" msgstr "Changer la langue"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:60 #: lib/cannery_web/live/ammo_group_live/show.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View in Catalog" msgid "View in Catalog"
msgstr "Voir en catalogue" msgstr "Voir en catalogue"
@ -231,24 +231,24 @@ msgstr "Ajoutez d'abord un type de munitions"
msgid "Move ammo" msgid "Move ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:78 #: lib/cannery_web/live/invite_live/index.html.heex:79
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Set Unlimited" msgid "Set Unlimited"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86 #: lib/cannery_web/live/ammo_group_live/show.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:31 #: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage for range" msgid "Stage for range"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85 #: lib/cannery_web/live/ammo_group_live/show.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:30 #: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage from range" msgid "Unstage from range"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:156 #: lib/cannery_web/templates/user_settings/edit.html.heex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""

View File

@ -19,7 +19,7 @@ msgstr ""
msgid "Access from any internet-capable device" msgid "Access from any internet-capable device"
msgstr "Accédez depuis nimporte quel appareil connecté à internet" msgstr "Accédez depuis nimporte quel appareil connecté à internet"
#: lib/cannery_web/live/invite_live/index.html.heex:87 #: lib/cannery_web/live/invite_live/index.html.heex:88
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Admins" msgid "Admins"
msgstr "Administrateur·ices" msgstr "Administrateur·ices"
@ -188,14 +188,14 @@ msgstr "Invitation désactivée"
msgid "Invite Only" msgid "Invite Only"
msgstr "Uniquement sur invitation" msgstr "Uniquement sur invitation"
#: lib/cannery_web/components/topbar.ex:90 #: lib/cannery_web/components/topbar.ex:89
#: lib/cannery_web/live/invite_live/index.ex:42 #: lib/cannery_web/live/invite_live/index.ex:42
#: lib/cannery_web/live/invite_live/index.html.heex:3 #: lib/cannery_web/live/invite_live/index.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invites" msgid "Invites"
msgstr "Invitations" msgstr "Invitations"
#: lib/cannery_web/templates/user_session/new.html.heex:25 #: lib/cannery_web/templates/user_session/new.html.heex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Keep me logged in for 60 days" msgid "Keep me logged in for 60 days"
msgstr "Me garder authentifié durant 60 jours" msgstr "Me garder authentifié durant 60 jours"
@ -267,7 +267,7 @@ msgid "New Tag"
msgstr "Nouveau tag" msgstr "Nouveau tag"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:71 #: lib/cannery_web/live/ammo_group_live/index.html.heex:70
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "Aucune munition" msgstr "Aucune munition"
@ -278,7 +278,7 @@ msgid "No ammo for this type"
msgstr "Aucune munition pour ce type" msgstr "Aucune munition pour ce type"
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:47 #: lib/cannery_web/live/container_live/index.html.heex:46
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "Aucun conteneur" msgstr "Aucun conteneur"
@ -290,7 +290,7 @@ msgstr "Aucune invitation"
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:43 #: lib/cannery_web/live/tag_live/index.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "Aucun tag" msgstr "Aucun tag"
@ -372,7 +372,7 @@ msgstr "Simple:"
msgid "Steel" msgid "Steel"
msgstr "Acier" msgstr "Acier"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:111 #: lib/cannery_web/live/ammo_group_live/show.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stored in" msgid "Stored in"
msgstr "Est stocké dans" msgstr "Est stocké dans"
@ -422,7 +422,7 @@ msgstr "Type"
msgid "Type:" msgid "Type:"
msgstr "Type:" msgstr "Type:"
#: lib/cannery_web/live/invite_live/index.html.heex:115 #: lib/cannery_web/live/invite_live/index.html.heex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Users" msgid "Users"
msgstr "Utilisateurs" msgstr "Utilisateurs"
@ -489,7 +489,7 @@ msgid "New Shot Records"
msgstr "Nouveaux enregistrements de tir" msgstr "Nouveaux enregistrements de tir"
#: lib/cannery_web/live/range_live/index.html.heex:48 #: lib/cannery_web/live/range_live/index.html.heex:48
#: lib/cannery_web/live/range_live/index.html.heex:90 #: lib/cannery_web/live/range_live/index.html.heex:89
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "Aucun tir enregistré" msgstr "Aucun tir enregistré"
@ -514,7 +514,7 @@ msgid "Shot Records"
msgstr "Enregistrements de tir" msgstr "Enregistrements de tir"
#: lib/cannery_web/live/ammo_group_live/index.ex:38 #: lib/cannery_web/live/ammo_group_live/index.ex:38
#: lib/cannery_web/live/ammo_group_live/index.html.heex:118 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
msgstr "Déplacer munition" msgstr "Déplacer munition"
@ -576,28 +576,30 @@ msgstr "Type de poudre"
msgid "UPC" msgid "UPC"
msgstr "UPC" msgstr "UPC"
#: lib/cannery_web/templates/user_settings/edit.html.heex:80 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:20
#: lib/cannery_web/templates/user_settings/edit.html.heex:76
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Confirm new password" msgid "Confirm new password"
msgstr "Confirmez le nouveau mot de passe" msgstr "Confirmez le nouveau mot de passe"
#: lib/cannery_web/templates/user_settings/edit.html.heex:33 #: lib/cannery_web/templates/user_settings/edit.html.heex:31
#: lib/cannery_web/templates/user_settings/edit.html.heex:89 #: lib/cannery_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current password" msgid "Current password"
msgstr "Mot de passe actuel" msgstr "Mot de passe actuel"
#: lib/cannery_web/templates/user_settings/edit.html.heex:73 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:16
#: lib/cannery_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New password" msgid "New password"
msgstr "Nouveau mot de passe" msgstr "Nouveau mot de passe"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage" msgid "Stage"
msgstr "Sélectionné" msgstr "Sélectionné"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "Désélectionner" msgstr "Désélectionner"
@ -664,7 +666,7 @@ msgstr "Nombre original:"
msgid "Percentage left:" msgid "Percentage left:"
msgstr "Pourcentage restant:" msgstr "Pourcentage restant:"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:124 #: lib/cannery_web/live/ammo_group_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds used" msgid "Rounds used"
msgstr "Cartouches utilisées" msgstr "Cartouches utilisées"
@ -711,17 +713,17 @@ msgid "Added on:"
msgstr "Ajouté le:" msgstr "Ajouté le:"
#: lib/cannery_web/templates/user_registration/new.html.heex:32 #: lib/cannery_web/templates/user_registration/new.html.heex:32
#: lib/cannery_web/templates/user_settings/edit.html.heex:133 #: lib/cannery_web/templates/user_settings/edit.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "English" msgid "English"
msgstr "Anglais" msgstr "Anglais"
#: lib/cannery_web/templates/user_settings/edit.html.heex:135 #: lib/cannery_web/templates/user_settings/edit.html.heex:129
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "French" msgid "French"
msgstr "Français" msgstr "Français"
#: lib/cannery_web/templates/user_settings/edit.html.heex:134 #: lib/cannery_web/templates/user_settings/edit.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "Allemand" msgstr "Allemand"
@ -779,7 +781,7 @@ msgstr "Aucun groupe de munition pour ce conteneur"
msgid "Show Ammo" msgid "Show Ammo"
msgstr "Montrer le type de munition" msgstr "Montrer le type de munition"
#: lib/cannery_web/live/ammo_group_live/show.html.heex:116 #: lib/cannery_web/live/ammo_group_live/show.html.heex:122
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "Ce groupe de munition nest pas dans un conteneur" msgstr "Ce groupe de munition nest pas dans un conteneur"
@ -813,8 +815,8 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "Conteneur" msgstr "Conteneur"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:64 #: lib/cannery_web/live/ammo_group_live/index.html.heex:63
#: lib/cannery_web/live/ammo_type_live/index.html.heex:39 #: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:153 #: lib/cannery_web/live/ammo_type_live/show.html.heex:153
#: lib/cannery_web/live/container_live/show.html.heex:99 #: lib/cannery_web/live/container_live/show.html.heex:99
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -845,7 +847,7 @@ msgid "Rounds"
msgstr "Cartouches:" msgstr "Cartouches:"
#: lib/cannery_web/live/ammo_type_live/show.html.heex:159 #: lib/cannery_web/live/ammo_type_live/show.html.heex:159
#: lib/cannery_web/live/container_live/index.html.heex:39 #: lib/cannery_web/live/container_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
@ -1003,7 +1005,9 @@ msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/index.html.heex:70
#: lib/cannery_web/live/ammo_type_live/show.ex:120 #: lib/cannery_web/live/ammo_type_live/show.ex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "Éditer %{name}" msgstr "Éditer %{name}"
@ -1082,37 +1086,37 @@ msgid "Edit ammo"
msgstr "Éditer le type de munition" msgstr "Éditer le type de munition"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:46 #: lib/cannery_web/live/ammo_type_live/index.html.heex:45
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Ammo types" msgid "No Ammo types"
msgstr "Aucun type de munition" msgstr "Aucun type de munition"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:33 #: lib/cannery_web/live/ammo_type_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58 #: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:33 #: lib/cannery_web/live/container_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:36 #: lib/cannery_web/live/tag_live/index.html.heex:35
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:83 #: lib/cannery_web/live/range_live/index.html.heex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1181,12 +1185,12 @@ msgstr ""
msgid "Welcome to Cannery" msgid "Welcome to Cannery"
msgstr "Bienvenue à %{name}" msgstr "Bienvenue à %{name}"
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
@ -1200,3 +1204,123 @@ msgstr "Utilisations restantes:"
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses: %{uses_count}" msgid "Uses: %{uses_count}"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_confirmation/new.html.heex:12
#: lib/cannery_web/templates/user_registration/new.html.heex:20
#: lib/cannery_web/templates/user_reset_password/new.html.heex:12
#: lib/cannery_web/templates/user_session/new.html.heex:17
#: lib/cannery_web/templates/user_settings/edit.html.heex:27
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:24
#: lib/cannery_web/templates/user_session/new.html.heex:20
#, elixir-autogen, elixir-format
msgid "Password"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:78
#, elixir-autogen, elixir-format, fuzzy
msgid "Clone %{ammo_type_name}"
msgstr "Éditer %{name}"
#: lib/cannery_web/live/container_live/index.html.heex:81
#: lib/cannery_web/live/container_live/index.html.heex:125
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:151
#, elixir-autogen, elixir-format
msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:95
#: lib/cannery_web/live/ammo_type_live/show.html.heex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete %{ammo_type_name}"
msgstr "Éditer %{name}"
#: lib/cannery_web/live/container_live/index.html.heex:94
#: lib/cannery_web/live/container_live/index.html.heex:138
#: lib/cannery_web/live/container_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Delete %{tag_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:166
#: lib/cannery_web/live/ammo_group_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:53
#, elixir-autogen, elixir-format
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:146
#: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:73
#: lib/cannery_web/live/container_live/index.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:45
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{container_name}"
msgstr "Éditer %{name}"
#: lib/cannery_web/live/tag_live/index.html.heex:51
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{tag_name}"
msgstr "Éditer %{name}"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:139
#: lib/cannery_web/live/ammo_group_live/show.html.heex:66
#, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:38
#, elixir-autogen, elixir-format
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:133
#, elixir-autogen, elixir-format
msgid "Edit shot group of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:105
#, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:63
#: lib/cannery_web/live/container_live/index.html.heex:108
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "View %{ammo_type_name}"
msgstr "Éditer %{name}"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:127
#, elixir-autogen, elixir-format
msgid "View ammo group of %{ammo_group_count} bullets"
msgstr ""

View File

@ -14,25 +14,11 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n" "Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.11.2\n" "X-Generator: Weblate 4.11.2\n"
## This file is a PO Template file. #: lib/cannery_web/templates/email/confirm_email.html.heex:3
##
## "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 "Confirmer votre compte %{name}"
#: 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/confirm_email.txt.eex:2
#: lib/cannery_web/templates/email/reset_password.html.eex:3 #: lib/cannery_web/templates/email/reset_password.html.heex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: 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.html.heex:3
#: lib/cannery_web/templates/email/update_email.txt.eex:2 #: lib/cannery_web/templates/email/update_email.txt.eex:2
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Hi %{email}," msgid "Hi %{email},"
@ -51,66 +37,76 @@ msgstr ""
"Si vous navez pas demandé ce changement depuis %{url}, veuillez ignorer " "Si vous navez pas demandé ce changement depuis %{url}, veuillez ignorer "
"ceci." "ceci."
#: lib/cannery/accounts/email.ex:37 #: lib/cannery_web/templates/email/update_email.html.heex:8
#, elixir-autogen, elixir-format
msgid "Reset your %{name} password"
msgstr "Réinitialiser votre mot de passe %{name}"
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your %{name} email"
msgstr "Mettre à jour votre mél %{name}"
#: lib/cannery_web/templates/email/confirm_email.html.eex:9
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}!"
msgstr "Bienvenue à %{name}!"
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}%!"
msgstr "Bienvenue à %{name}%!"
#: lib/cannery_web/templates/email/update_email.html.eex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:4 #: lib/cannery_web/templates/email/update_email.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can change your email by visiting the URL below:" msgid "You can change your email by visiting the URL below:"
msgstr "Vous pouvez changer votre mél en consultant lURL ci-dessous:" msgstr "Vous pouvez changer votre mél en consultant lURL ci-dessous:"
#: lib/cannery_web/templates/email/confirm_email.html.eex:14 #: lib/cannery_web/templates/email/confirm_email.html.heex:14
#: lib/cannery_web/templates/email/confirm_email.txt.eex:6 #: lib/cannery_web/templates/email/confirm_email.txt.eex:6
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can confirm your account by visiting the URL below:" msgid "You can confirm your account by visiting the URL below:"
msgstr "Vous pouvez confirmer votre compte en consultant lURL ci-dessous:" msgstr "Vous pouvez confirmer votre compte en consultant lURL ci-dessous:"
#: lib/cannery_web/templates/email/reset_password.html.eex:8 #: lib/cannery_web/templates/email/reset_password.html.heex:8
#: lib/cannery_web/templates/email/reset_password.txt.eex:4 #: lib/cannery_web/templates/email/reset_password.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can reset your password by visiting the URL below:" msgid "You can reset your password by visiting the URL below:"
msgstr "" msgstr ""
"Vous pouvez réinitialiser votre mot de passe en visitant lURL ci-dessous:" "Vous pouvez réinitialiser votre mot de passe en visitant lURL ci-dessous:"
#: lib/cannery_web/templates/email/confirm_email.html.eex:22 ## This file is a PO Template file.
#, elixir-autogen, elixir-format ##
msgid "If you didn't create an account at %{name}, please ignore this." ## "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, fuzzy
msgid "Confirm your Cannery account"
msgstr "Confirmer votre compte %{name}"
#: lib/cannery_web/templates/email/confirm_email.html.heex:22
#, elixir-autogen, elixir-format, fuzzy
msgid "If you didn't create an account at Cannery, please ignore this."
msgstr "Si vous navez pas créé de compte à %{name}, veuillez ignorer ceci." msgstr "Si vous navez pas créé de compte à %{name}, veuillez ignorer ceci."
#: lib/cannery_web/templates/email/reset_password.html.eex:16 #: lib/cannery_web/templates/email/reset_password.html.heex:16
#: lib/cannery_web/templates/email/update_email.html.eex:16 #: lib/cannery_web/templates/email/update_email.html.heex:16
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "If you didn't request this change from %{name}, please ignore this." msgid "If you didn't request this change from Cannery, please ignore this."
msgstr "" msgstr ""
"Si vous navez pas demandé ce changement depuis %{name}, veuillez ignorer " "Si vous navez pas demandé ce changement depuis %{name}, veuillez ignorer "
"ceci." "ceci."
#: lib/cannery/accounts/email.ex:37
#, elixir-autogen, elixir-format, fuzzy
msgid "Reset your Cannery password"
msgstr "Réinitialiser votre mot de passe %{name}"
#: lib/cannery_web/templates/layout/email.txt.eex:9 #: lib/cannery_web/templates/layout/email.txt.eex:9
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "This email was sent from %{name} at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website."
msgstr "" msgstr ""
"Ce mél a été envoyé depuis %{name} à %{url}, le site web de suivi darme à " "Ce mél a été envoyé depuis %{name} à %{url}, le site web de suivi darme à "
"feux." "feux."
#: lib/cannery_web/templates/layout/email.html.heex:13 #: lib/cannery_web/templates/layout/email.html.heex:13
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "This email was sent from %{name}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery, the self-hosted firearm tracker website."
msgstr "Ce mél a été envoyé depuis %{name}, le site web de suivi darme à feu." msgstr "Ce mél a été envoyé depuis %{name}, le site web de suivi darme à feu."
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Update your Cannery email"
msgstr "Mettre à jour votre mél %{name}"
#: lib/cannery_web/templates/email/confirm_email.html.heex:9
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format, fuzzy
msgid "Welcome to Cannery"
msgstr "Bienvenue à %{name}!"

View File

@ -70,10 +70,10 @@ msgid "Not found"
msgstr "Pas trouvé" msgstr "Pas trouvé"
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:14 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:23 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
#: lib/cannery_web/templates/user_settings/edit.html.heex:67 #: lib/cannery_web/templates/user_settings/edit.html.heex:64
#: lib/cannery_web/templates/user_settings/edit.html.heex:123 #: lib/cannery_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below." msgid "Oops, something went wrong! Please check the errors below."
msgstr "" msgstr ""
@ -153,17 +153,11 @@ msgstr "Tag pas trouvé"
msgid "Tag could not be added" msgid "Tag could not be added"
msgstr "Le tag na pas pu être ajouté" msgstr "Le tag na pas pu être ajouté"
#: lib/cannery/activity_log/shot_group.ex:122 #: lib/cannery/activity_log/shot_group.ex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count must be at least 1" msgid "Count must be at least 1"
msgstr "Le nombre doit être au moins égal à 1" msgstr "Le nombre doit être au moins égal à 1"
#: lib/cannery/activity_log/shot_group.ex:82
#: lib/cannery/activity_log/shot_group.ex:118
#, elixir-autogen, elixir-format
msgid "Count must be less than %{count}"
msgstr "La quantité doit être inférieur à %{count}"
#: lib/cannery_web/controllers/user_auth.ex:39 #: lib/cannery_web/controllers/user_auth.ex:39
#: lib/cannery_web/controllers/user_auth.ex:161 #: lib/cannery_web/controllers/user_auth.ex:161
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -206,3 +200,9 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid user and ammo pack" msgid "Please select a valid user and ammo pack"
msgstr "Veuillez choisir un utilisateur valide et un groupe de munitions" msgstr "Veuillez choisir un utilisateur valide et un groupe de munitions"
#: lib/cannery/activity_log/shot_group.ex:83
#: lib/cannery/activity_log/shot_group.ex:121
#, elixir-autogen, elixir-format, fuzzy
msgid "Count must be less than %{count} shots"
msgstr "La quantité doit être inférieur à %{count}"

View File

@ -59,33 +59,33 @@ msgstr ""
"Un lien pour confirmer votre changement de mél a été envoyé à la nouvelle " "Un lien pour confirmer votre changement de mél a été envoyé à la nouvelle "
"adresse." "adresse."
#: lib/cannery_web/live/invite_live/index.html.heex:98 #: lib/cannery_web/live/invite_live/index.html.heex:99
#: lib/cannery_web/live/invite_live/index.html.heex:126 #: lib/cannery_web/live/invite_live/index.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "" msgstr ""
"Êtes-vous certain·e de supprimer %{email}? Cette action est définitive!" "Êtes-vous certain·e de supprimer %{email}? Cette action est définitive!"
#: lib/cannery_web/live/container_live/index.html.heex:92 #: lib/cannery_web/live/container_live/index.html.heex:92
#: lib/cannery_web/live/container_live/index.html.heex:135 #: lib/cannery_web/live/container_live/index.html.heex:136
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:55
#: lib/cannery_web/live/tag_live/index.html.heex:63 #: lib/cannery_web/live/tag_live/index.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "Êtes-vous certain·e de supprimer %{name}?" msgstr "Êtes-vous certain·e de supprimer %{name}?"
#: lib/cannery_web/live/ammo_group_live/index.html.heex:153 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75 #: lib/cannery_web/live/ammo_group_live/show.html.heex:78
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
msgstr "Êtes-vous certain·e de supprimer cette munition?" msgstr "Êtes-vous certain·e de supprimer cette munition?"
#: lib/cannery_web/templates/user_settings/edit.html.heex:163 #: lib/cannery_web/templates/user_settings/edit.html.heex:157
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete your account?" msgid "Are you sure you want to delete your account?"
msgstr "Êtes-vous certain·e de supprimer votre compte?" msgstr "Êtes-vous certain·e de supprimer votre compte?"
#: lib/cannery_web/components/topbar.ex:106 #: lib/cannery_web/components/topbar.ex:104
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to log out?" msgid "Are you sure you want to log out?"
msgstr "Êtes-vous certain·e de vouloir vous déconnecter?" msgstr "Êtes-vous certain·e de vouloir vous déconnecter?"
@ -177,8 +177,8 @@ msgstr "Tirs enregistré avec succès"
msgid "Are you sure you want to unstage this ammo?" msgid "Are you sure you want to unstage this ammo?"
msgstr "Êtes-vous certain·e de vouloir désélectionner cette munition?" msgstr "Êtes-vous certain·e de vouloir désélectionner cette munition?"
#: lib/cannery_web/live/ammo_group_live/show.ex:142 #: lib/cannery_web/live/ammo_group_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:116 #: lib/cannery_web/live/range_live/index.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "Êtes-vous certain·e de vouloir supprimer cet enregistrement de tir?" msgstr "Êtes-vous certain·e de vouloir supprimer cet enregistrement de tir?"
@ -225,7 +225,7 @@ msgstr "Vous aurez besoin de"
msgid "Creating..." msgid "Creating..."
msgstr "Création en cours…" msgstr "Création en cours…"
#: lib/cannery_web/templates/user_settings/edit.html.heex:144 #: lib/cannery_web/templates/user_settings/edit.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to change your language?" msgid "Are you sure you want to change your language?"
msgstr "Êtes-vous certain·e de vouloir changer votre langue?" msgstr "Êtes-vous certain·e de vouloir changer votre langue?"
@ -258,7 +258,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "Groupe de munition mis à jour avec succès" msgstr[0] "Groupe de munition mis à jour avec succès"
msgstr[1] "Groupe de munition mis à jour avec succès" msgstr[1] "Groupe de munition mis à jour avec succès"
#: lib/cannery_web/live/ammo_type_live/index.html.heex:90 #: lib/cannery_web/live/ammo_type_live/index.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
@ -294,12 +294,12 @@ msgstr "%{name} mis à jour avec succès"
msgid "%{user_email} deleted succesfully" msgid "%{user_email} deleted succesfully"
msgstr "%{name} supprimé· avec succès" msgstr "%{name} supprimé· avec succès"
#: lib/cannery_web/live/invite_live/index.html.heex:48 #: lib/cannery_web/live/invite_live/index.html.heex:49
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete the invite for %{invite_name}?" msgid "Are you sure you want to delete the invite for %{invite_name}?"
msgstr "Êtes-vous certain·e de supprimer linvitation pour %{name}?" msgstr "Êtes-vous certain·e de supprimer linvitation pour %{name}?"
#: lib/cannery_web/live/invite_live/index.html.heex:73 #: lib/cannery_web/live/invite_live/index.html.heex:74
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to make %{invite_name} unlimited?" msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr "Êtes-vous certain·e de vouloir rendre %{name} illimité?" msgstr "Êtes-vous certain·e de vouloir rendre %{name} illimité?"

View File

@ -44,13 +44,13 @@ msgid "Add your first type!"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:15 #: lib/cannery_web/templates/user_settings/edit.html.heex:15
#: lib/cannery_web/templates/user_settings/edit.html.heex:45 #: lib/cannery_web/templates/user_settings/edit.html.heex:43
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change email" msgid "Change email"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:59 #: lib/cannery_web/templates/user_settings/edit.html.heex:57
#: lib/cannery_web/templates/user_settings/edit.html.heex:101 #: lib/cannery_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change password" msgid "Change password"
msgstr "" msgstr ""
@ -60,14 +60,14 @@ msgstr ""
msgid "Create Invite" msgid "Create Invite"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:165 #: lib/cannery_web/templates/user_settings/edit.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete User" msgid "Delete User"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:47 #: lib/cannery_web/templates/user_registration/new.html.heex:47
#: lib/cannery_web/templates/user_reset_password/new.html.heex:3 #: lib/cannery_web/templates/user_reset_password/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:44 #: lib/cannery_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "" msgstr ""
@ -77,13 +77,13 @@ msgstr ""
msgid "Invite someone new!" msgid "Invite someone new!"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:135 #: lib/cannery_web/components/topbar.ex:137
#: lib/cannery_web/templates/user_confirmation/new.html.heex:31 #: lib/cannery_web/templates/user_confirmation/new.html.heex:31
#: lib/cannery_web/templates/user_registration/new.html.heex:44 #: lib/cannery_web/templates/user_registration/new.html.heex:44
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:47 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:45
#: lib/cannery_web/templates/user_reset_password/new.html.heex:31 #: lib/cannery_web/templates/user_reset_password/new.html.heex:31
#: lib/cannery_web/templates/user_session/new.html.heex:3 #: lib/cannery_web/templates/user_session/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:30 #: lib/cannery_web/templates/user_session/new.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log in" msgid "Log in"
msgstr "" msgstr ""
@ -108,13 +108,13 @@ msgstr ""
msgid "New Tag" msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:127 #: lib/cannery_web/components/topbar.ex:129
#: lib/cannery_web/templates/user_confirmation/new.html.heex:28 #: lib/cannery_web/templates/user_confirmation/new.html.heex:28
#: lib/cannery_web/templates/user_registration/new.html.heex:3 #: lib/cannery_web/templates/user_registration/new.html.heex:3
#: lib/cannery_web/templates/user_registration/new.html.heex:37 #: lib/cannery_web/templates/user_registration/new.html.heex:37
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:44 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:42
#: lib/cannery_web/templates/user_reset_password/new.html.heex:28 #: lib/cannery_web/templates/user_reset_password/new.html.heex:28
#: lib/cannery_web/templates/user_session/new.html.heex:41 #: lib/cannery_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Register" msgid "Register"
msgstr "" msgstr ""
@ -126,7 +126,7 @@ msgid "Resend confirmation instructions"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:3 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:3
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:31 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "" msgstr ""
@ -167,8 +167,8 @@ msgstr ""
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:101 #: lib/cannery_web/live/ammo_group_live/index.html.heex:100
#: lib/cannery_web/live/ammo_group_live/show.html.heex:101 #: lib/cannery_web/live/ammo_group_live/show.html.heex:107
#: lib/cannery_web/live/range_live/index.html.heex:38 #: lib/cannery_web/live/range_live/index.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Record shots" msgid "Record shots"
@ -179,7 +179,7 @@ msgstr ""
msgid "Add another container!" msgid "Add another container!"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:94 #: lib/cannery_web/live/ammo_group_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move containers" msgid "Move containers"
msgstr "" msgstr ""
@ -189,7 +189,7 @@ msgstr ""
msgid "Select" msgid "Select"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:30 #: lib/cannery_web/live/invite_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "" msgstr ""
@ -204,17 +204,17 @@ msgstr ""
msgid "Create" msgid "Create"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:115 #: lib/cannery_web/templates/user_settings/edit.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change Language" msgid "Change Language"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:142 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:60 #: lib/cannery_web/live/ammo_group_live/show.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View in Catalog" msgid "View in Catalog"
msgstr "" msgstr ""
@ -229,24 +229,24 @@ msgstr ""
msgid "Move ammo" msgid "Move ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:78 #: lib/cannery_web/live/invite_live/index.html.heex:79
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Set Unlimited" msgid "Set Unlimited"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:86 #: lib/cannery_web/live/ammo_group_live/show.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:31 #: lib/cannery_web/live/range_live/index.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage for range" msgid "Stage for range"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:85 #: lib/cannery_web/live/ammo_group_live/show.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:30 #: lib/cannery_web/live/range_live/index.html.heex:30
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage from range" msgid "Unstage from range"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:156 #: lib/cannery_web/templates/user_settings/edit.html.heex:150
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""

View File

@ -17,7 +17,7 @@ msgstr ""
msgid "Access from any internet-capable device" msgid "Access from any internet-capable device"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:87 #: lib/cannery_web/live/invite_live/index.html.heex:88
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Admins" msgid "Admins"
msgstr "" msgstr ""
@ -186,14 +186,14 @@ msgstr ""
msgid "Invite Only" msgid "Invite Only"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:90 #: lib/cannery_web/components/topbar.ex:89
#: lib/cannery_web/live/invite_live/index.ex:42 #: lib/cannery_web/live/invite_live/index.ex:42
#: lib/cannery_web/live/invite_live/index.html.heex:3 #: lib/cannery_web/live/invite_live/index.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invites" msgid "Invites"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_session/new.html.heex:25 #: lib/cannery_web/templates/user_session/new.html.heex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Keep me logged in for 60 days" msgid "Keep me logged in for 60 days"
msgstr "" msgstr ""
@ -265,7 +265,7 @@ msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:10 #: lib/cannery_web/live/ammo_group_live/index.html.heex:10
#: lib/cannery_web/live/ammo_group_live/index.html.heex:71 #: lib/cannery_web/live/ammo_group_live/index.html.heex:70
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "" msgstr ""
@ -276,7 +276,7 @@ msgid "No ammo for this type"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:8 #: lib/cannery_web/live/container_live/index.html.heex:8
#: lib/cannery_web/live/container_live/index.html.heex:47 #: lib/cannery_web/live/container_live/index.html.heex:46
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No containers" msgid "No containers"
msgstr "" msgstr ""
@ -288,7 +288,7 @@ msgstr ""
#: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29 #: lib/cannery_web/live/container_live/edit_tags_component.html.heex:29
#: lib/cannery_web/live/tag_live/index.html.heex:10 #: lib/cannery_web/live/tag_live/index.html.heex:10
#: lib/cannery_web/live/tag_live/index.html.heex:43 #: lib/cannery_web/live/tag_live/index.html.heex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No tags" msgid "No tags"
msgstr "" msgstr ""
@ -368,7 +368,7 @@ msgstr ""
msgid "Steel" msgid "Steel"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:111 #: lib/cannery_web/live/ammo_group_live/show.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stored in" msgid "Stored in"
msgstr "" msgstr ""
@ -416,7 +416,7 @@ msgstr ""
msgid "Type:" msgid "Type:"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:115 #: lib/cannery_web/live/invite_live/index.html.heex:116
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Users" msgid "Users"
msgstr "" msgstr ""
@ -483,7 +483,7 @@ msgid "New Shot Records"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:48 #: lib/cannery_web/live/range_live/index.html.heex:48
#: lib/cannery_web/live/range_live/index.html.heex:90 #: lib/cannery_web/live/range_live/index.html.heex:89
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "" msgstr ""
@ -508,7 +508,7 @@ msgid "Shot Records"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:38 #: lib/cannery_web/live/ammo_group_live/index.ex:38
#: lib/cannery_web/live/ammo_group_live/index.html.heex:118 #: lib/cannery_web/live/ammo_group_live/index.html.heex:117
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
msgstr "" msgstr ""
@ -570,28 +570,30 @@ msgstr ""
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:80 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:20
#: lib/cannery_web/templates/user_settings/edit.html.heex:76
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Confirm new password" msgid "Confirm new password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:33 #: lib/cannery_web/templates/user_settings/edit.html.heex:31
#: lib/cannery_web/templates/user_settings/edit.html.heex:89 #: lib/cannery_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current password" msgid "Current password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:73 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:16
#: lib/cannery_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New password" msgid "New password"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Stage" msgid "Stage"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:94 #: lib/cannery_web/live/ammo_group_live/index.html.heex:93
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
@ -658,7 +660,7 @@ msgstr ""
msgid "Percentage left:" msgid "Percentage left:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:124 #: lib/cannery_web/live/ammo_group_live/show.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds used" msgid "Rounds used"
msgstr "" msgstr ""
@ -705,17 +707,17 @@ msgid "Added on:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:32 #: lib/cannery_web/templates/user_registration/new.html.heex:32
#: lib/cannery_web/templates/user_settings/edit.html.heex:133 #: lib/cannery_web/templates/user_settings/edit.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "English" msgid "English"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:135 #: lib/cannery_web/templates/user_settings/edit.html.heex:129
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "French" msgid "French"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:134 #: lib/cannery_web/templates/user_settings/edit.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "" msgstr ""
@ -773,7 +775,7 @@ msgstr ""
msgid "Show Ammo" msgid "Show Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.html.heex:116 #: lib/cannery_web/live/ammo_group_live/show.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "This ammo is not in a container" msgid "This ammo is not in a container"
msgstr "" msgstr ""
@ -806,8 +808,8 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:64 #: lib/cannery_web/live/ammo_group_live/index.html.heex:63
#: lib/cannery_web/live/ammo_type_live/index.html.heex:39 #: lib/cannery_web/live/ammo_type_live/index.html.heex:38
#: lib/cannery_web/live/ammo_type_live/show.html.heex:153 #: lib/cannery_web/live/ammo_type_live/show.html.heex:153
#: lib/cannery_web/live/container_live/show.html.heex:99 #: lib/cannery_web/live/container_live/show.html.heex:99
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -838,7 +840,7 @@ msgid "Rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/show.html.heex:159 #: lib/cannery_web/live/ammo_type_live/show.html.heex:159
#: lib/cannery_web/live/container_live/index.html.heex:39 #: lib/cannery_web/live/container_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
@ -996,7 +998,9 @@ msgid "Average CPR"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.ex:28 #: lib/cannery_web/live/ammo_type_live/index.ex:28
#: lib/cannery_web/live/ammo_type_live/index.html.heex:70
#: lib/cannery_web/live/ammo_type_live/show.ex:120 #: lib/cannery_web/live/ammo_type_live/show.ex:120
#: lib/cannery_web/live/ammo_type_live/show.html.heex:19
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{ammo_type_name}" msgid "Edit %{ammo_type_name}"
msgstr "" msgstr ""
@ -1075,37 +1079,37 @@ msgid "Edit ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:8 #: lib/cannery_web/live/ammo_type_live/index.html.heex:8
#: lib/cannery_web/live/ammo_type_live/index.html.heex:46 #: lib/cannery_web/live/ammo_type_live/index.html.heex:45
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Ammo types" msgid "No Ammo types"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:33 #: lib/cannery_web/live/ammo_type_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:58 #: lib/cannery_web/live/ammo_group_live/index.html.heex:57
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:33 #: lib/cannery_web/live/container_live/index.html.heex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search containers" msgid "Search containers"
msgstr "" msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:36 #: lib/cannery_web/live/tag_live/index.html.heex:35
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:83 #: lib/cannery_web/live/range_live/index.html.heex:82
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1172,12 +1176,12 @@ msgstr ""
msgid "Welcome to Cannery" msgid "Welcome to Cannery"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:63 #: lib/cannery_web/live/invite_live/index.html.heex:64
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
@ -1191,3 +1195,123 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses: %{uses_count}" msgid "Uses: %{uses_count}"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_confirmation/new.html.heex:12
#: lib/cannery_web/templates/user_registration/new.html.heex:20
#: lib/cannery_web/templates/user_reset_password/new.html.heex:12
#: lib/cannery_web/templates/user_session/new.html.heex:17
#: lib/cannery_web/templates/user_settings/edit.html.heex:27
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:24
#: lib/cannery_web/templates/user_session/new.html.heex:20
#, elixir-autogen, elixir-format
msgid "Password"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:78
#, elixir-autogen, elixir-format, fuzzy
msgid "Clone %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:81
#: lib/cannery_web/live/container_live/index.html.heex:125
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:151
#, elixir-autogen, elixir-format
msgid "Clone ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:95
#: lib/cannery_web/live/ammo_type_live/show.html.heex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:94
#: lib/cannery_web/live/container_live/index.html.heex:138
#: lib/cannery_web/live/container_live/show.html.heex:57
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:64
#, elixir-autogen, elixir-format
msgid "Delete %{tag_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:166
#: lib/cannery_web/live/ammo_group_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Delete ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:53
#, elixir-autogen, elixir-format
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:146
#: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:73
#: lib/cannery_web/live/container_live/index.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:45
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{container_name}"
msgstr ""
#: lib/cannery_web/live/tag_live/index.html.heex:51
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{tag_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:139
#: lib/cannery_web/live/ammo_group_live/show.html.heex:66
#, elixir-autogen, elixir-format
msgid "Edit ammo group of %{ammo_group_count} bullets"
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:38
#, elixir-autogen, elixir-format
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:133
#, elixir-autogen, elixir-format
msgid "Edit shot group of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:105
#, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_group_count} shots"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:63
#: lib/cannery_web/live/container_live/index.html.heex:108
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:62
#, elixir-autogen, elixir-format, fuzzy
msgid "View %{ammo_type_name}"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:127
#, elixir-autogen, elixir-format
msgid "View ammo group of %{ammo_group_count} bullets"
msgstr ""

View File

@ -12,25 +12,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 3.7.3\n" "X-Generator: Translate Toolkit 3.7.3\n"
## This file is a PO Template file. #: lib/cannery_web/templates/email/confirm_email.html.heex:3
##
## "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 ""
#: 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/confirm_email.txt.eex:2
#: lib/cannery_web/templates/email/reset_password.html.eex:3 #: lib/cannery_web/templates/email/reset_password.html.heex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: 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.html.heex:3
#: lib/cannery_web/templates/email/update_email.txt.eex:2 #: lib/cannery_web/templates/email/update_email.txt.eex:2
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Hi %{email}," msgid "Hi %{email},"
@ -47,61 +33,71 @@ msgstr ""
msgid "If you didn't request this change from %{url}, please ignore this." msgid "If you didn't request this change from %{url}, please ignore this."
msgstr "" msgstr ""
#: lib/cannery/accounts/email.ex:37 #: lib/cannery_web/templates/email/update_email.html.heex:8
#, elixir-autogen, elixir-format
msgid "Reset your %{name} password"
msgstr ""
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your %{name} email"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.eex:9
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}!"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}%!"
msgstr ""
#: lib/cannery_web/templates/email/update_email.html.eex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:4 #: lib/cannery_web/templates/email/update_email.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can change your email by visiting the URL below:" msgid "You can change your email by visiting the URL below:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.eex:14 #: lib/cannery_web/templates/email/confirm_email.html.heex:14
#: lib/cannery_web/templates/email/confirm_email.txt.eex:6 #: lib/cannery_web/templates/email/confirm_email.txt.eex:6
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can confirm your account by visiting the URL below:" msgid "You can confirm your account by visiting the URL below:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/reset_password.html.eex:8 #: lib/cannery_web/templates/email/reset_password.html.heex:8
#: lib/cannery_web/templates/email/reset_password.txt.eex:4 #: lib/cannery_web/templates/email/reset_password.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can reset your password by visiting the URL below:" msgid "You can reset your password by visiting the URL below:"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.eex:22 ## This file is a PO Template file.
#, elixir-autogen, elixir-format ##
msgid "If you didn't create an account at %{name}, please ignore this." ## "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, fuzzy
msgid "Confirm your Cannery account"
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/reset_password.html.eex:16 #: lib/cannery_web/templates/email/confirm_email.html.heex:22
#: lib/cannery_web/templates/email/update_email.html.eex:16 #, elixir-autogen, elixir-format, fuzzy
#, elixir-autogen, elixir-format msgid "If you didn't create an account at Cannery, please ignore this."
msgid "If you didn't request this change from %{name}, please ignore this." msgstr ""
#: lib/cannery_web/templates/email/reset_password.html.heex:16
#: lib/cannery_web/templates/email/update_email.html.heex:16
#, elixir-autogen, elixir-format, fuzzy
msgid "If you didn't request this change from Cannery, please ignore this."
msgstr ""
#: lib/cannery/accounts/email.ex:37
#, elixir-autogen, elixir-format, fuzzy
msgid "Reset your Cannery password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/layout/email.txt.eex:9 #: lib/cannery_web/templates/layout/email.txt.eex:9
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "This email was sent from %{name} at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website."
msgstr "" msgstr ""
#: lib/cannery_web/templates/layout/email.html.heex:13 #: lib/cannery_web/templates/layout/email.html.heex:13
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format, fuzzy
msgid "This email was sent from %{name}, the self-hosted firearm tracker website." msgid "This email was sent from Cannery, the self-hosted firearm tracker website."
msgstr ""
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Update your Cannery email"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.heex:9
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format, fuzzy
msgid "Welcome to Cannery"
msgstr "" msgstr ""

View File

@ -71,10 +71,10 @@ msgid "Not found"
msgstr "Ní feidir é a fáil" msgstr "Ní feidir é a fáil"
#: lib/cannery_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:14 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:23 #: lib/cannery_web/templates/user_settings/edit.html.heex:22
#: lib/cannery_web/templates/user_settings/edit.html.heex:67 #: lib/cannery_web/templates/user_settings/edit.html.heex:64
#: lib/cannery_web/templates/user_settings/edit.html.heex:123 #: lib/cannery_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below." msgid "Oops, something went wrong! Please check the errors below."
msgstr "" msgstr ""
@ -154,17 +154,11 @@ msgstr ""
msgid "Tag could not be added" msgid "Tag could not be added"
msgstr "" msgstr ""
#: lib/cannery/activity_log/shot_group.ex:122 #: lib/cannery/activity_log/shot_group.ex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Count must be at least 1" msgid "Count must be at least 1"
msgstr "" msgstr ""
#: lib/cannery/activity_log/shot_group.ex:82
#: lib/cannery/activity_log/shot_group.ex:118
#, elixir-autogen, elixir-format
msgid "Count must be less than %{count}"
msgstr ""
#: lib/cannery_web/controllers/user_auth.ex:39 #: lib/cannery_web/controllers/user_auth.ex:39
#: lib/cannery_web/controllers/user_auth.ex:161 #: lib/cannery_web/controllers/user_auth.ex:161
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -205,3 +199,9 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid user and ammo pack" msgid "Please select a valid user and ammo pack"
msgstr "" msgstr ""
#: lib/cannery/activity_log/shot_group.ex:83
#: lib/cannery/activity_log/shot_group.ex:121
#, elixir-autogen, elixir-format, fuzzy
msgid "Count must be less than %{count} shots"
msgstr ""

View File

@ -55,32 +55,32 @@ msgstr ""
msgid "A link to confirm your email change has been sent to the new address." msgid "A link to confirm your email change has been sent to the new address."
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:98 #: lib/cannery_web/live/invite_live/index.html.heex:99
#: lib/cannery_web/live/invite_live/index.html.heex:126 #: lib/cannery_web/live/invite_live/index.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:92 #: lib/cannery_web/live/container_live/index.html.heex:92
#: lib/cannery_web/live/container_live/index.html.heex:135 #: lib/cannery_web/live/container_live/index.html.heex:136
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:55
#: lib/cannery_web/live/tag_live/index.html.heex:63 #: lib/cannery_web/live/tag_live/index.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:153 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75 #: lib/cannery_web/live/ammo_group_live/show.html.heex:78
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:163 #: lib/cannery_web/templates/user_settings/edit.html.heex:157
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete your account?" msgid "Are you sure you want to delete your account?"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:106 #: lib/cannery_web/components/topbar.ex:104
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to log out?" msgid "Are you sure you want to log out?"
msgstr "" msgstr ""
@ -166,8 +166,8 @@ msgstr ""
msgid "Are you sure you want to unstage this ammo?" msgid "Are you sure you want to unstage this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:142 #: lib/cannery_web/live/ammo_group_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:116 #: lib/cannery_web/live/range_live/index.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""
@ -214,7 +214,7 @@ msgstr ""
msgid "Creating..." msgid "Creating..."
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:144 #: lib/cannery_web/templates/user_settings/edit.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to change your language?" msgid "Are you sure you want to change your language?"
msgstr "" msgstr ""
@ -247,7 +247,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:90 #: lib/cannery_web/live/ammo_type_live/index.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
@ -283,12 +283,12 @@ msgstr ""
msgid "%{user_email} deleted succesfully" msgid "%{user_email} deleted succesfully"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:48 #: lib/cannery_web/live/invite_live/index.html.heex:49
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete the invite for %{invite_name}?" msgid "Are you sure you want to delete the invite for %{invite_name}?"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:73 #: lib/cannery_web/live/invite_live/index.html.heex:74
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to make %{invite_name} unlimited?" msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr "" msgstr ""

View File

@ -44,32 +44,32 @@ msgstr ""
msgid "A link to confirm your email change has been sent to the new address." msgid "A link to confirm your email change has been sent to the new address."
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:98 #: lib/cannery_web/live/invite_live/index.html.heex:99
#: lib/cannery_web/live/invite_live/index.html.heex:126 #: lib/cannery_web/live/invite_live/index.html.heex:127
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:92 #: lib/cannery_web/live/container_live/index.html.heex:92
#: lib/cannery_web/live/container_live/index.html.heex:135 #: lib/cannery_web/live/container_live/index.html.heex:136
#: lib/cannery_web/live/container_live/show.html.heex:55 #: lib/cannery_web/live/container_live/show.html.heex:55
#: lib/cannery_web/live/tag_live/index.html.heex:63 #: lib/cannery_web/live/tag_live/index.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.html.heex:153 #: lib/cannery_web/live/ammo_group_live/index.html.heex:164
#: lib/cannery_web/live/ammo_group_live/show.html.heex:75 #: lib/cannery_web/live/ammo_group_live/show.html.heex:78
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:163 #: lib/cannery_web/templates/user_settings/edit.html.heex:157
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete your account?" msgid "Are you sure you want to delete your account?"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:106 #: lib/cannery_web/components/topbar.ex:104
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to log out?" msgid "Are you sure you want to log out?"
msgstr "" msgstr ""
@ -155,8 +155,8 @@ msgstr ""
msgid "Are you sure you want to unstage this ammo?" msgid "Are you sure you want to unstage this ammo?"
msgstr "" msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:142 #: lib/cannery_web/live/ammo_group_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:116 #: lib/cannery_web/live/range_live/index.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""
@ -203,7 +203,7 @@ msgstr ""
msgid "Creating..." msgid "Creating..."
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:144 #: lib/cannery_web/templates/user_settings/edit.html.heex:138
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to change your language?" msgid "Are you sure you want to change your language?"
msgstr "" msgstr ""
@ -236,7 +236,7 @@ msgid_plural "Ammo added successfully"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: lib/cannery_web/live/ammo_type_live/index.html.heex:90 #: lib/cannery_web/live/ammo_type_live/index.html.heex:89
#: lib/cannery_web/live/ammo_type_live/show.html.heex:29 #: lib/cannery_web/live/ammo_type_live/show.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
@ -272,12 +272,12 @@ msgstr ""
msgid "%{user_email} deleted succesfully" msgid "%{user_email} deleted succesfully"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:48 #: lib/cannery_web/live/invite_live/index.html.heex:49
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete the invite for %{invite_name}?" msgid "Are you sure you want to delete the invite for %{invite_name}?"
msgstr "" msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:73 #: lib/cannery_web/live/invite_live/index.html.heex:74
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to make %{invite_name} unlimited?" msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr "" msgstr ""

View File

@ -10,8 +10,6 @@ defmodule Cannery.AccountsTest do
@moduletag :accounts_test @moduletag :accounts_test
doctest Accounts, import: true
describe "get_user_by_email/1" do describe "get_user_by_email/1" do
test "does not return the user if the email does not exist" do test "does not return the user if the email does not exist" do
refute Accounts.get_user_by_email("unknown@example.com") refute Accounts.get_user_by_email("unknown@example.com")

View File

@ -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
_token = Accounts.generate_user_session_token(current_user) _session_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

View File

@ -74,7 +74,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
assert html =~ ammo_group.ammo_type.name assert html =~ ammo_group.ammo_type.name
assert index_live assert index_live
|> form("[data-qa=\"ammo_group_search\"]", |> form(~s/form[phx-change="search"]/,
search: %{search_term: ammo_group.ammo_type.name} search: %{search_term: ammo_group.ammo_type.name}
) )
|> render_change() =~ ammo_group.ammo_type.name |> render_change() =~ ammo_group.ammo_type.name
@ -85,13 +85,13 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
) )
refute index_live refute index_live
|> form("[data-qa=\"ammo_group_search\"]", search: %{search_term: "something_else"}) |> form(~s/form[phx-change="search"]/, search: %{search_term: "something_else"})
|> render_change() =~ ammo_group.ammo_type.name |> render_change() =~ ammo_group.ammo_type.name
assert_patch(index_live, Routes.ammo_group_index_path(conn, :search, "something_else")) assert_patch(index_live, Routes.ammo_group_index_path(conn, :search, "something_else"))
assert index_live assert index_live
|> form("[data-qa=\"ammo_group_search\"]", search: %{search_term: ""}) |> form(~s/form[phx-change="search"]/, search: %{search_term: ""})
|> render_change() =~ ammo_group.ammo_type.name |> render_change() =~ ammo_group.ammo_type.name
assert_patch(index_live, Routes.ammo_group_index_path(conn, :index)) assert_patch(index_live, Routes.ammo_group_index_path(conn, :index))
@ -185,7 +185,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
{:ok, index_live, _html} = live(conn, Routes.ammo_group_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.ammo_group_index_path(conn, :index))
assert index_live assert index_live
|> element("[data-qa=\"edit-#{ammo_group.id}\"]") |> element(~s/a[aria-label="Edit ammo group of #{ammo_group.count} bullets"]/)
|> render_click() =~ |> render_click() =~
gettext("Edit ammo") gettext("Edit ammo")
@ -210,7 +210,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
html = html =
index_live index_live
|> element("[data-qa=\"clone-#{ammo_group.id}\"]") |> element(~s/a[aria-label="Clone ammo group of #{ammo_group.count} bullets"]/)
|> render_click() |> render_click()
assert html =~ dgettext("actions", "Add Ammo") assert html =~ dgettext("actions", "Add Ammo")
@ -238,7 +238,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
html = html =
index_live index_live
|> element("[data-qa=\"clone-#{ammo_group.id}\"]") |> element(~s/a[aria-label="Clone ammo group of #{ammo_group.count} bullets"]/)
|> render_click() |> render_click()
assert html =~ dgettext("actions", "Add Ammo") assert html =~ dgettext("actions", "Add Ammo")
@ -265,7 +265,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
{:ok, index_live, _html} = live(conn, Routes.ammo_group_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.ammo_group_index_path(conn, :index))
assert index_live assert index_live
|> element("[data-qa=\"delete-#{ammo_group.id}\"]") |> element(~s/a[aria-label="Delete ammo group of #{ammo_group.count} bullets"]/)
|> render_click() |> render_click()
refute has_element?(index_live, "#ammo_group-#{ammo_group.id}") refute has_element?(index_live, "#ammo_group-#{ammo_group.id}")
@ -309,7 +309,10 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
) <> ) <>
"\n" "\n"
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click() html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click()
assert html =~ gettext("$%{amount}", amount: 50.00 |> :erlang.float_to_binary(decimals: 2)) assert html =~ gettext("$%{amount}", amount: 50.00 |> :erlang.float_to_binary(decimals: 2))
@ -337,7 +340,7 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
{:ok, show_live, _html} = live(conn, Routes.ammo_group_show_path(conn, :show, ammo_group)) {:ok, show_live, _html} = live(conn, Routes.ammo_group_show_path(conn, :show, ammo_group))
assert show_live assert show_live
|> element("[data-qa=\"edit\"]") |> element(~s/a[aria-label="Edit ammo group of #{ammo_group.count} bullets"]/)
|> render_click() =~ |> render_click() =~
gettext("Edit Ammo") gettext("Edit Ammo")
@ -386,7 +389,9 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
%{conn: conn, ammo_group: ammo_group, shot_group: shot_group} do %{conn: conn, ammo_group: ammo_group, shot_group: shot_group} do
{:ok, index_live, _html} = live(conn, Routes.ammo_group_show_path(conn, :edit, ammo_group)) {:ok, index_live, _html} = live(conn, Routes.ammo_group_show_path(conn, :edit, ammo_group))
assert index_live |> element("[data-qa=\"edit-#{shot_group.id}\"]") |> render_click() =~ assert index_live
|> element(~s/a[aria-label="Edit shot group of #{shot_group.count} shots"]/)
|> render_click() =~
gettext("Edit Shot Records") gettext("Edit Shot Records")
assert_patch( assert_patch(
@ -413,7 +418,10 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
{:ok, index_live, _html} = {:ok, index_live, _html} =
live(conn, Routes.ammo_group_show_path(conn, :edit_shot_group, ammo_group, shot_group)) live(conn, Routes.ammo_group_show_path(conn, :edit_shot_group, ammo_group, shot_group))
assert index_live |> element("[data-qa=\"delete-#{shot_group.id}\"]") |> render_click() assert index_live
|> element(~s/a[aria-label="Delete shot record of #{shot_group.count} shots"]/)
|> render_click()
refute has_element?(index_live, "#shot_group-#{shot_group.id}") refute has_element?(index_live, "#shot_group-#{shot_group.id}")
end end
end end

View File

@ -80,7 +80,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
assert html =~ ammo_type.bullet_type assert html =~ ammo_type.bullet_type
assert index_live assert index_live
|> form("[data-qa=\"ammo_type_search\"]", |> form(~s/form[phx-change="search"]/,
search: %{search_term: ammo_type.bullet_type} search: %{search_term: ammo_type.bullet_type}
) )
|> render_change() =~ ammo_type.bullet_type |> render_change() =~ ammo_type.bullet_type
@ -88,13 +88,13 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
assert_patch(index_live, Routes.ammo_type_index_path(conn, :search, ammo_type.bullet_type)) assert_patch(index_live, Routes.ammo_type_index_path(conn, :search, ammo_type.bullet_type))
refute index_live refute index_live
|> form("[data-qa=\"ammo_type_search\"]", search: %{search_term: "something_else"}) |> form(~s/form[phx-change="search"]/, search: %{search_term: "something_else"})
|> render_change() =~ ammo_type.bullet_type |> render_change() =~ ammo_type.bullet_type
assert_patch(index_live, Routes.ammo_type_index_path(conn, :search, "something_else")) assert_patch(index_live, Routes.ammo_type_index_path(conn, :search, "something_else"))
assert index_live assert index_live
|> form("[data-qa=\"ammo_type_search\"]", search: %{search_term: ""}) |> form(~s/form[phx-change="search"]/, search: %{search_term: ""})
|> render_change() =~ ammo_type.bullet_type |> render_change() =~ ammo_type.bullet_type
assert_patch(index_live, Routes.ammo_type_index_path(conn, :index)) assert_patch(index_live, Routes.ammo_type_index_path(conn, :index))
@ -127,7 +127,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
%{conn: conn, current_user: current_user, ammo_type: ammo_type} do %{conn: conn, current_user: current_user, ammo_type: ammo_type} do
{:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index))
assert index_live |> element("[data-qa=\"edit-#{ammo_type.id}\"]") |> render_click() =~ assert index_live |> element(~s/a[aria-label="Edit #{ammo_type.name}"]/) |> render_click() =~
gettext("Edit %{ammo_type_name}", ammo_type_name: ammo_type.name) gettext("Edit %{ammo_type_name}", ammo_type_name: ammo_type.name)
assert_patch(index_live, Routes.ammo_type_index_path(conn, :edit, ammo_type)) assert_patch(index_live, Routes.ammo_type_index_path(conn, :edit, ammo_type))
@ -151,7 +151,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
%{conn: conn, current_user: current_user, ammo_type: ammo_type} do %{conn: conn, current_user: current_user, ammo_type: ammo_type} do
{:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index))
html = index_live |> element("[data-qa=\"clone-#{ammo_type.id}\"]") |> render_click() html = index_live |> element(~s/a[aria-label="Clone #{ammo_type.name}"]/) |> render_click()
assert html =~ gettext("New Ammo type") assert html =~ gettext("New Ammo type")
assert html =~ "some bullet_type" assert html =~ "some bullet_type"
@ -176,7 +176,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
%{conn: conn, current_user: current_user, ammo_type: ammo_type} do %{conn: conn, current_user: current_user, ammo_type: ammo_type} do
{:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index))
html = index_live |> element("[data-qa=\"clone-#{ammo_type.id}\"]") |> render_click() html = index_live |> element(~s/a[aria-label="Clone #{ammo_type.name}"]/) |> render_click()
assert html =~ gettext("New Ammo type") assert html =~ gettext("New Ammo type")
assert html =~ "some bullet_type" assert html =~ "some bullet_type"
@ -202,7 +202,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
test "deletes ammo_type in listing", %{conn: conn, ammo_type: ammo_type} do test "deletes ammo_type in listing", %{conn: conn, ammo_type: ammo_type} do
{:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index))
assert index_live |> element("[data-qa=\"delete-#{ammo_type.id}\"]") |> render_click() assert index_live |> element(~s/a[aria-label="Delete #{ammo_type.name}"]/) |> render_click()
refute has_element?(index_live, "#ammo_type-#{ammo_type.id}") refute has_element?(index_live, "#ammo_type-#{ammo_type.id}")
end end
end end
@ -220,7 +220,10 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
refute html =~ gettext("Used packs") refute html =~ gettext("Used packs")
refute html =~ gettext("Total ever packs") refute html =~ gettext("Total ever packs")
html = index_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click() html =
index_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click()
assert html =~ gettext("Used rounds") assert html =~ gettext("Used rounds")
assert html =~ gettext("Total ever rounds") assert html =~ gettext("Total ever rounds")
@ -234,7 +237,11 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
shot_group_fixture(%{"count" => 5}, current_user, ammo_group) shot_group_fixture(%{"count" => 5}, current_user, ammo_group)
{:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index))
html = index_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()
html =
index_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click()
assert html =~ "15" assert html =~ "15"
assert html =~ "5" assert html =~ "5"
@ -258,7 +265,7 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
%{conn: conn, current_user: current_user, ammo_type: %{name: name} = ammo_type} do %{conn: conn, current_user: current_user, ammo_type: %{name: name} = ammo_type} do
{:ok, show_live, _html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type)) {:ok, show_live, _html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
assert show_live |> element("[data-qa=\"edit\"]") |> render_click() =~ assert show_live |> element(~s/a[aria-label="Edit #{ammo_type.name}"]/) |> render_click() =~
gettext("Edit %{ammo_type_name}", ammo_type_name: name) gettext("Edit %{ammo_type_name}", ammo_type_name: name)
assert_patch(show_live, Routes.ammo_type_show_path(conn, :edit, ammo_type)) assert_patch(show_live, Routes.ammo_type_show_path(conn, :edit, ammo_type))
@ -298,7 +305,11 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
%{conn: conn, ammo_type: ammo_type, container: %{name: container_name}} do %{conn: conn, ammo_type: ammo_type, container: %{name: container_name}} do
{:ok, show_live, _html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type)) {:ok, show_live, _html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
html = show_live |> element("[data-qa=\"toggle_table\"]") |> render_click() html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/)
|> render_click()
assert_patch(show_live, Routes.ammo_type_show_path(conn, :table, ammo_type)) assert_patch(show_live, Routes.ammo_type_show_path(conn, :table, ammo_type))
assert html =~ "some ammo group" assert html =~ "some ammo group"
@ -316,7 +327,10 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
assert html =~ dgettext("actions", "Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group" refute html =~ "some ammo group"
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click() html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click()
assert html =~ "some ammo group" assert html =~ "some ammo group"
assert html =~ "Empty" assert html =~ "Empty"
@ -327,13 +341,20 @@ defmodule CanneryWeb.AmmoTypeLiveTest do
%{conn: conn, ammo_type: ammo_type, container: %{name: container_name}} do %{conn: conn, ammo_type: ammo_type, container: %{name: container_name}} do
{:ok, show_live, _html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type)) {:ok, show_live, _html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type))
html = show_live |> element("[data-qa=\"toggle_table\"]") |> render_click() html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/)
|> render_click()
assert_patch(show_live, Routes.ammo_type_show_path(conn, :table, ammo_type)) assert_patch(show_live, Routes.ammo_type_show_path(conn, :table, ammo_type))
assert html =~ dgettext("actions", "Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group" refute html =~ "some ammo group"
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click() html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click()
assert html =~ "some ammo group" assert html =~ "some ammo group"
assert html =~ "Empty" assert html =~ "Empty"

View File

@ -75,7 +75,10 @@ defmodule CanneryWeb.ContainerLiveTest do
test "lists all containers in table mode", %{conn: conn, container: container} do test "lists all containers in table mode", %{conn: conn, container: container} do
{:ok, index_live, _html} = live(conn, Routes.container_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.container_index_path(conn, :index))
html = index_live |> element("[data-qa=\"toggle_table\"]") |> render_click() html =
index_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/)
|> render_click()
assert html =~ gettext("Containers") assert html =~ gettext("Containers")
assert html =~ container.location assert html =~ container.location
@ -87,7 +90,7 @@ defmodule CanneryWeb.ContainerLiveTest do
assert html =~ container.location assert html =~ container.location
assert index_live assert index_live
|> form("[data-qa=\"container_search\"]", |> form(~s/form[phx-change="search"]/,
search: %{search_term: container.location} search: %{search_term: container.location}
) )
|> render_change() =~ container.location |> render_change() =~ container.location
@ -95,13 +98,13 @@ defmodule CanneryWeb.ContainerLiveTest do
assert_patch(index_live, Routes.container_index_path(conn, :search, container.location)) assert_patch(index_live, Routes.container_index_path(conn, :search, container.location))
refute index_live refute index_live
|> form("[data-qa=\"container_search\"]", search: %{search_term: "something_else"}) |> form(~s/form[phx-change="search"]/, search: %{search_term: "something_else"})
|> render_change() =~ container.location |> render_change() =~ container.location
assert_patch(index_live, Routes.container_index_path(conn, :search, "something_else")) assert_patch(index_live, Routes.container_index_path(conn, :search, "something_else"))
assert index_live assert index_live
|> form("[data-qa=\"container_search\"]", search: %{search_term: ""}) |> form(~s/form[phx-change="search"]/, search: %{search_term: ""})
|> render_change() =~ container.location |> render_change() =~ container.location
assert_patch(index_live, Routes.container_index_path(conn, :index)) assert_patch(index_live, Routes.container_index_path(conn, :index))
@ -136,7 +139,7 @@ defmodule CanneryWeb.ContainerLiveTest do
} do } do
{:ok, index_live, _html} = live(conn, Routes.container_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.container_index_path(conn, :index))
assert index_live |> element("[data-qa=\"edit-#{container.id}\"]") |> render_click() =~ assert index_live |> element(~s/a[aria-label="Edit #{container.name}"]/) |> render_click() =~
gettext("Edit %{name}", name: container.name) gettext("Edit %{name}", name: container.name)
assert_patch(index_live, Routes.container_index_path(conn, :edit, container)) assert_patch(index_live, Routes.container_index_path(conn, :edit, container))
@ -163,7 +166,7 @@ defmodule CanneryWeb.ContainerLiveTest do
} do } do
{:ok, index_live, _html} = live(conn, Routes.container_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.container_index_path(conn, :index))
html = index_live |> element("[data-qa=\"clone-#{container.id}\"]") |> render_click() html = index_live |> element(~s/a[aria-label="Clone #{container.name}"]/) |> render_click()
assert html =~ gettext("New Container") assert html =~ gettext("New Container")
assert html =~ "some location" assert html =~ "some location"
@ -191,7 +194,7 @@ defmodule CanneryWeb.ContainerLiveTest do
} do } do
{:ok, index_live, _html} = live(conn, Routes.container_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.container_index_path(conn, :index))
assert index_live |> element("[data-qa=\"clone-#{container.id}\"]") |> render_click() =~ assert index_live |> element(~s/a[aria-label="Clone #{container.name}"]/) |> render_click() =~
gettext("New Container") gettext("New Container")
assert_patch(index_live, Routes.container_index_path(conn, :clone, container)) assert_patch(index_live, Routes.container_index_path(conn, :clone, container))
@ -216,7 +219,7 @@ defmodule CanneryWeb.ContainerLiveTest do
test "deletes container in listing", %{conn: conn, container: container} do test "deletes container in listing", %{conn: conn, container: container} do
{:ok, index_live, _html} = live(conn, Routes.container_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.container_index_path(conn, :index))
assert index_live |> element("[data-qa=\"delete-#{container.id}\"]") |> render_click() assert index_live |> element(~s/a[aria-label="Delete #{container.name}"]/) |> render_click()
refute has_element?(index_live, "#container-#{container.id}") refute has_element?(index_live, "#container-#{container.id}")
end end
end end
@ -241,7 +244,7 @@ defmodule CanneryWeb.ContainerLiveTest do
} do } do
{:ok, show_live, _html} = live(conn, Routes.container_show_path(conn, :show, container)) {:ok, show_live, _html} = live(conn, Routes.container_show_path(conn, :show, container))
assert show_live |> element("[data-qa=\"edit\"]") |> render_click() =~ assert show_live |> element(~s/a[aria-label="Edit #{container.name}"]/) |> render_click() =~
gettext("Edit %{name}", name: container.name) gettext("Edit %{name}", name: container.name)
assert_patch(show_live, Routes.container_show_path(conn, :edit, container)) assert_patch(show_live, Routes.container_show_path(conn, :edit, container))
@ -277,7 +280,10 @@ defmodule CanneryWeb.ContainerLiveTest do
%{conn: conn, ammo_type: %{name: ammo_type_name}, container: container} do %{conn: conn, ammo_type: %{name: ammo_type_name}, container: container} do
{:ok, show_live, _html} = live(conn, Routes.container_show_path(conn, :show, container)) {:ok, show_live, _html} = live(conn, Routes.container_show_path(conn, :show, container))
html = show_live |> element("[data-qa=\"toggle_table\"]") |> render_click() html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/)
|> render_click()
assert html =~ ammo_type_name assert html =~ ammo_type_name
assert html =~ "some ammo group" assert html =~ "some ammo group"
@ -294,7 +300,10 @@ defmodule CanneryWeb.ContainerLiveTest do
assert html =~ dgettext("actions", "Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group" refute html =~ "some ammo group"
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click() html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click()
assert html =~ ammo_type_name assert html =~ ammo_type_name
assert html =~ "some ammo group" assert html =~ "some ammo group"
@ -305,12 +314,18 @@ defmodule CanneryWeb.ContainerLiveTest do
%{conn: conn, ammo_type: %{name: ammo_type_name}, container: container} do %{conn: conn, ammo_type: %{name: ammo_type_name}, container: container} do
{:ok, show_live, _html} = live(conn, Routes.container_show_path(conn, :show, container)) {:ok, show_live, _html} = live(conn, Routes.container_show_path(conn, :show, container))
html = show_live |> element("[data-qa=\"toggle_table\"]") |> render_click() html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_table-label"}]/)
|> render_click()
assert html =~ dgettext("actions", "Show used") assert html =~ dgettext("actions", "Show used")
refute html =~ "some ammo group" refute html =~ "some ammo group"
html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click() html =
show_live
|> element(~s/input[type="checkbox"][aria-labelledby="toggle_show_used-label"}]/)
|> render_click()
assert html =~ ammo_type_name assert html =~ ammo_type_name
assert html =~ "some ammo group" assert html =~ "some ammo group"

View File

@ -55,7 +55,9 @@ defmodule CanneryWeb.InviteLiveTest do
test "updates invite in listing", %{conn: conn, invite: invite} do test "updates invite in listing", %{conn: conn, invite: invite} do
{:ok, index_live, _html} = live(conn, Routes.invite_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.invite_index_path(conn, :index))
assert index_live |> element("[data-qa=\"edit-#{invite.id}\"]") |> render_click() =~ assert index_live
|> element(~s/a[aria-label="Edit invite for #{invite.name}"]/)
|> render_click() =~
gettext("Edit Invite") gettext("Edit Invite")
assert_patch(index_live, Routes.invite_index_path(conn, :edit, invite)) assert_patch(index_live, Routes.invite_index_path(conn, :edit, invite))
@ -81,7 +83,10 @@ defmodule CanneryWeb.InviteLiveTest do
test "deletes invite in listing", %{conn: conn, invite: invite} do test "deletes invite in listing", %{conn: conn, invite: invite} do
{:ok, index_live, _html} = live(conn, Routes.invite_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.invite_index_path(conn, :index))
assert index_live |> element("[data-qa=\"delete-#{invite.id}\"]") |> render_click() assert index_live
|> element(~s/a[aria-label="Delete invite for #{invite.name}"]/)
|> render_click()
refute has_element?(index_live, "#invite-#{invite.id}") refute has_element?(index_live, "#invite-#{invite.id}")
end end
end end

View File

@ -43,7 +43,7 @@ defmodule CanneryWeb.RangeLiveTest do
assert html =~ shot_group.notes assert html =~ shot_group.notes
assert index_live assert index_live
|> form("[data-qa=\"shot_group_search\"]", |> form(~s/form[phx-change="search"]/,
search: %{search_term: shot_group.notes} search: %{search_term: shot_group.notes}
) )
|> render_change() =~ shot_group.notes |> render_change() =~ shot_group.notes
@ -51,13 +51,13 @@ defmodule CanneryWeb.RangeLiveTest do
assert_patch(index_live, Routes.range_index_path(conn, :search, shot_group.notes)) assert_patch(index_live, Routes.range_index_path(conn, :search, shot_group.notes))
refute index_live refute index_live
|> form("[data-qa=\"shot_group_search\"]", search: %{search_term: "something_else"}) |> form(~s/form[phx-change="search"]/, search: %{search_term: "something_else"})
|> render_change() =~ shot_group.notes |> render_change() =~ shot_group.notes
assert_patch(index_live, Routes.range_index_path(conn, :search, "something_else")) assert_patch(index_live, Routes.range_index_path(conn, :search, "something_else"))
assert index_live assert index_live
|> form("[data-qa=\"shot_group_search\"]", search: %{search_term: ""}) |> form(~s/form[phx-change="search"]/, search: %{search_term: ""})
|> render_change() =~ shot_group.notes |> render_change() =~ shot_group.notes
assert_patch(index_live, Routes.range_index_path(conn, :index)) assert_patch(index_live, Routes.range_index_path(conn, :index))
@ -88,7 +88,9 @@ defmodule CanneryWeb.RangeLiveTest do
test "updates shot_group in listing", %{conn: conn, shot_group: shot_group} do test "updates shot_group in listing", %{conn: conn, shot_group: shot_group} do
{:ok, index_live, _html} = live(conn, Routes.range_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.range_index_path(conn, :index))
assert index_live |> element("[data-qa=\"edit-#{shot_group.id}\"]") |> render_click() =~ assert index_live
|> element(~s/a[aria-label="Edit shot record of #{shot_group.count} shots"]/)
|> render_click() =~
gettext("Edit Shot Records") gettext("Edit Shot Records")
assert_patch(index_live, Routes.range_index_path(conn, :edit, shot_group)) assert_patch(index_live, Routes.range_index_path(conn, :edit, shot_group))
@ -110,7 +112,10 @@ defmodule CanneryWeb.RangeLiveTest do
test "deletes shot_group in listing", %{conn: conn, shot_group: shot_group} do test "deletes shot_group in listing", %{conn: conn, shot_group: shot_group} do
{:ok, index_live, _html} = live(conn, Routes.range_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.range_index_path(conn, :index))
assert index_live |> element("[data-qa=\"delete-#{shot_group.id}\"]") |> render_click() assert index_live
|> element(~s/a[aria-label="Delete shot record of #{shot_group.count} shots"]/)
|> render_click()
refute has_element?(index_live, "#shot_group-#{shot_group.id}") refute has_element?(index_live, "#shot_group-#{shot_group.id}")
end end
end end

View File

@ -47,7 +47,7 @@ defmodule CanneryWeb.TagLiveTest do
assert html =~ tag.name assert html =~ tag.name
assert index_live assert index_live
|> form("[data-qa=\"tag_search\"]", |> form(~s/form[phx-change="search"]/,
search: %{search_term: tag.name} search: %{search_term: tag.name}
) )
|> render_change() =~ tag.name |> render_change() =~ tag.name
@ -55,13 +55,13 @@ defmodule CanneryWeb.TagLiveTest do
assert_patch(index_live, Routes.tag_index_path(conn, :search, tag.name)) assert_patch(index_live, Routes.tag_index_path(conn, :search, tag.name))
refute index_live refute index_live
|> form("[data-qa=\"tag_search\"]", search: %{search_term: "something_else"}) |> form(~s/form[phx-change="search"]/, search: %{search_term: "something_else"})
|> render_change() =~ tag.name |> render_change() =~ tag.name
assert_patch(index_live, Routes.tag_index_path(conn, :search, "something_else")) assert_patch(index_live, Routes.tag_index_path(conn, :search, "something_else"))
assert index_live assert index_live
|> form("[data-qa=\"tag_search\"]", search: %{search_term: ""}) |> form(~s/form[phx-change="search"]/, search: %{search_term: ""})
|> render_change() =~ tag.name |> render_change() =~ tag.name
assert_patch(index_live, Routes.tag_index_path(conn, :index)) assert_patch(index_live, Routes.tag_index_path(conn, :index))
@ -92,7 +92,7 @@ defmodule CanneryWeb.TagLiveTest do
test "updates tag in listing", %{conn: conn, tag: tag} do test "updates tag in listing", %{conn: conn, tag: tag} do
{:ok, index_live, _html} = live(conn, Routes.tag_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.tag_index_path(conn, :index))
assert index_live |> element("[data-qa=\"edit-#{tag.id}\"]") |> render_click() =~ assert index_live |> element(~s/a[aria-label="Edit #{tag.name}"]/) |> render_click() =~
dgettext("actions", "Edit Tag") dgettext("actions", "Edit Tag")
assert_patch(index_live, Routes.tag_index_path(conn, :edit, tag)) assert_patch(index_live, Routes.tag_index_path(conn, :edit, tag))
@ -116,7 +116,7 @@ defmodule CanneryWeb.TagLiveTest do
test "deletes tag in listing", %{conn: conn, tag: tag} do test "deletes tag in listing", %{conn: conn, tag: tag} do
{:ok, index_live, _html} = live(conn, Routes.tag_index_path(conn, :index)) {:ok, index_live, _html} = live(conn, Routes.tag_index_path(conn, :index))
assert index_live |> element("[data-qa=\"delete-#{tag.id}\"]") |> render_click() assert index_live |> element(~s/a[aria-label="Delete #{tag.name}"]/) |> render_click()
refute has_element?(index_live, "#tag-#{tag.id}") refute has_element?(index_live, "#tag-#{tag.id}")
end end
end end