Compare commits

..

No commits in common. "b29a5cce7b8a10cf257ecdb2dcba21cc1eb481b8" and "42e2d1c76e7fd68b5fe9bf98ac8d1e4710a3643a" have entirely different histories.

70 changed files with 734 additions and 771 deletions

View File

@ -13,24 +13,20 @@ steps:
mount: mount:
- _build - _build
- deps - deps
- .npm - assets/node_modules/
- .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 - apk add --no-cache build-base npm git python3
- mix local.rebar --force --if-missing - mix local.rebar --force
- mix local.hex --force --if-missing - mix local.hex --force
- mix deps.get - mix deps.get
- npm set cache .npm - mix deps.compile
- npm --prefix ./assets ci --no-audit --prefer-offline - npm --prefix ./assets ci --progress=false --no-audit --loglevel=error
- 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
@ -80,8 +76,7 @@ steps:
mount: mount:
- _build - _build
- deps - deps
- .npm - assets/node_modules/
- .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
# The directory NPM downloads your dependencies sources to. # Ignore assets that are produced by build tools.
/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.9.1 nodejs 18.12.1

View File

@ -1,8 +1,3 @@
# 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,8 +63,7 @@ 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), HEEx linting with - JS linting with [standard.js](https://standardjs.com)
[heex_formatter](https://github.com/feliperenan/heex_formatter)
## Docs ## Docs
@ -110,7 +109,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`, `fr`, and `es` - Available options: `en_US`, `de`, and `fr`
## `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`, `fr` and `es` - Available options: `en_US`, `de`, and `fr`
- `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,6 +25,7 @@
} }
.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;
@ -51,6 +52,7 @@
} }
.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": "v18.9.1", "node": "18.12.1",
"npm": "8.10.0" "npm": "8.19.2"
}, },
"scripts": { "scripts": {
"deploy": "NODE_ENV=production webpack --mode production", "deploy": "NODE_ENV=production webpack --mode production",

View File

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

@ -4,7 +4,7 @@ defmodule Cannery.Application do
@moduledoc false @moduledoc false
use Application use Application
alias Cannery.Logger alias Cannery.ErrorReporter
@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]
], ],
&Logger.handle_event/4, &ErrorReporter.handle_event/4,
[] []
) )

View File

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

View File

@ -9,9 +9,7 @@ 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
@ -22,8 +20,7 @@ defmodule Cannery.Release do
load_app() load_app()
for repo <- Application.fetch_env!(@app, :ecto_repos) do for repo <- Application.fetch_env!(@app, :ecto_repos) do
{:ok, _fun_return, _apps} = {:ok, _fun, _opts} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
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 perform all migration on app start Genserver to automatically run migrations in prod env
""" """
use GenServer use GenServer

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.HomeLive alias CanneryWeb.{Endpoint, HomeLive}
def topbar(assigns) do def topbar(assigns) do
assigns = assigns =
@ -81,7 +81,8 @@ defmodule CanneryWeb.Components.Topbar do
<%= gettext("Range") %> <%= gettext("Range") %>
</.link> </.link>
</li> </li>
<li :if={@current_user |> Accounts.is_already_admin?()} class="mx-2 my-1"> <%= if @current_user.role == :admin do %>
<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"
@ -89,9 +90,10 @@ defmodule CanneryWeb.Components.Topbar do
<%= gettext("Invites") %> <%= gettext("Invites") %>
</.link> </.link>
</li> </li>
<% end %>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
<.link <.link
href={Routes.user_settings_path(Endpoint, :edit)} navigate={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 %>
@ -106,33 +108,29 @@ 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>
<li <%= if @current_user.role == :admin and function_exported?(Routes, :live_dashboard_path, 2) do %>
:if={ <li class="mx-2 my-1">
@current_user |> Accounts.is_already_admin?() and
function_exported?(Routes, :live_dashboard_path, 2)
}
class="mx-2 my-1"
>
<.link <.link
navigate={Routes.live_dashboard_path(Endpoint, :home)} navigate={Routes.live_dashboard_path(Endpoint, :home)}
class="text-white text-white hover:underline" class="text-primary-600 text-white hover:underline"
> >
<i class="fas fa-gauge"></i> <i class="fas fa-gauge"></i>
</.link> </.link>
</li> </li>
<% end %>
<% else %> <% else %>
<li :if={Accounts.allow_registration?()} class="mx-2 my-1"> <li :if={Accounts.allow_registration?()} class="mx-2 my-1">
<.link <.link
href={Routes.user_registration_path(Endpoint, :new)} navigate={Routes.user_registration_path(Endpoint, :new)}
class="text-white hover:underline truncate" class="text-primary-600 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
href={Routes.user_session_path(Endpoint, :new)} navigate={Routes.user_session_path(Endpoint, :new)}
class="text-white hover:underline truncate" class="text-primary-600 text-white hover:underline truncate"
> >
<%= dgettext("actions", "Log in") %> <%= dgettext("actions", "Log in") %>
</.link> </.link>

View File

@ -1,8 +1,4 @@
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

@ -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.HomeLive alias CanneryWeb.{Endpoint, HomeLive}
alias Phoenix.LiveView.JS alias Phoenix.LiveView.JS
@impl true @impl true

View File

@ -1,4 +1,4 @@
<div class="mx-auto flex flex-col justify-center items-center space-y-4 max-w-3xl"> <div class="w-full flex flex-col space-y-8 justify-center items-center">
<h1 class="title text-2xl title-primary-500"> <h1 class="title text-2xl title-primary-500">
<%= gettext("Invites") %> <%= gettext("Invites") %>
</h1> </h1>
@ -18,7 +18,7 @@
</.link> </.link>
<% end %> <% end %>
<div class="flex flex-col justify-center items-stretch space-y-4"> <div class="w-full flex flex-row flex-wrap justify-center items-stretch">
<.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">
@ -87,7 +87,7 @@
<%= gettext("Admins") %> <%= gettext("Admins") %>
</h1> </h1>
<div class="flex flex-col justify-center items-stretch space-y-4"> <div class="w-full flex flex-row flex-wrap justify-center items-stretch">
<.user_card :for={admin <- @admins} user={admin}> <.user_card :for={admin <- @admins} user={admin}>
<.link <.link
href="#" href="#"
@ -115,7 +115,7 @@
<%= gettext("Users") %> <%= gettext("Users") %>
</h1> </h1>
<div class="flex flex-col justify-center items-stretch space-y-4"> <div class="w-full flex flex-row flex-wrap justify-center items-stretch">
<.user_card :for={user <- @users} user={user}> <.user_card :for={user <- @users} user={user}>
<.link <.link
href="#" href="#"

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.ViewHelpers alias CanneryWeb.{Endpoint, ViewHelpers}
@impl true @impl true
def mount(%{"search" => search}, _session, socket) do def mount(%{"search" => search}, _session, socket) do

View File

@ -6,7 +6,7 @@
<br/> <br/>
<span style="margin-bottom: 1em; font-size: 1.25em;"> <span style="margin-bottom: 1em; font-size: 1.25em;">
<%= dgettext("emails", "Welcome to Cannery") %> <%= dgettext("emails", "Welcome to %{name}!", name: "Cannery") %>
</span> </span>
<br/> <br/>
@ -15,9 +15,11 @@
<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", "If you didn't create an account at Cannery, please ignore this.") %> <%= dgettext("emails",
"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 Cannery") %> <%= dgettext("emails", "Welcome to %{name}%!", name: "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

@ -9,9 +9,11 @@
<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", "If you didn't request this change from Cannery, please ignore this.") %> <%= dgettext("emails",
"If you didn't request this change from %{name}, please ignore this.",
name: "Cannery") %>
</div> </div>

View File

@ -9,12 +9,11 @@
<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( <%= dgettext("emails",
"emails", "If you didn't request this change from %{name}, please ignore this.",
"If you didn't request this change from Cannery, please ignore this." name: "Cannery") %>
) %>
</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 current_user={assigns[:current_user]}></.topbar>
</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 current_user={assigns[:current_user]}></.topbar>
<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,7 +12,8 @@
<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 Cannery, the self-hosted firearm tracker website." "This email was sent from %{name}, the self-hosted firearm tracker website.",
name: "Cannery"
) %> ) %>
</a> </a>
</body> </body>

View File

@ -7,5 +7,6 @@
===================== =====================
<%= dgettext("emails", <%= dgettext("emails",
"This email was sent from Cannery at %{url}, the self-hosted firearm tracker website.", "This email was sent from %{name} 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 current_user={assigns[:current_user]}></.topbar>
<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, gettext("Email"), class: "title text-lg text-primary-600") %> <%= label(f, :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, gettext("Email"), class: "title text-lg text-primary-600") %> <%= label(f, :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, gettext("Password"), class: "title text-lg text-primary-600") %> <%= label(f, :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,15 +9,17 @@
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"
> >
<p :if={@changeset.action && not @changeset.valid?()} class="alert alert-danger col-span-3"> <div :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, gettext("New password"), class: "title text-lg text-primary-600") %> <%= label(f, :password, "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, gettext("Confirm new password"), <%= label(f, :password_confirmation, "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, gettext("Email"), class: "title text-lg text-primary-600") %> <%= label(f, :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,14 +10,16 @@
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"
> >
<p :if={@error_message} class="alert alert-danger col-span-3"> <div :if={@error_message} class="alert alert-danger col-span-3">
<p>
<%= @error_message %> <%= @error_message %>
</p> </p>
</div>
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %> <%= label(f, :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, gettext("Password"), class: "title text-lg text-primary-600") %> <%= label(f, :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-3xl flex flex-col justify-center items-center text-right space-y-4"> <div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center text-center space-y-4">
<h1 class="pb-4 title text-primary-600 text-2xl text-center"> <h1 class="pb-4 title text-primary-600 text-xl">
<%= 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 text-center col-span-3"> <h3 class="title text-primary-600 text-lg col-span-3">
<%= dgettext("actions", "Change email") %> <%= dgettext("actions", "Change email") %>
</h3> </h3>
@ -19,12 +19,14 @@
: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, gettext("Email"), class: "title text-lg text-primary-600") %> <%= label(f, :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") %>
@ -53,7 +55,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 text-center col-span-3"> <h3 class="title text-primary-600 text-lg col-span-3">
<%= dgettext("actions", "Change password") %> <%= dgettext("actions", "Change password") %>
</h3> </h3>
@ -61,7 +63,9 @@
: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") %>
@ -105,17 +109,19 @@
: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 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 justify-center items-center"
> >
<h3 class="title text-primary-600 text-lg text-center col-span-3"> <h3 class="title text-primary-600 text-lg">
<%= 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 col-span-3" class="alert alert-danger"
> >
<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") %>
@ -129,12 +135,12 @@
{gettext("French"), "fr"}, {gettext("French"), "fr"},
{gettext("Spanish"), "es"} {gettext("Spanish"), "es"}
], ],
class: "mx-2 my-1 min-w-md input input-primary col-span-3" class: "mx-2 my-1 min-w-md input input-primary"
) %> ) %>
<%= error_tag(f, :locale, "col-span-3") %> <%= error_tag(f, :locale) %>
<%= submit(dgettext("actions", "Change language"), <%= submit(dgettext("actions", "Change language"),
class: "whitespace-nowrap mx-auto btn btn-primary col-span-3", class: "whitespace-nowrap mx-auto btn btn-primary",
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.HomeLive alias CanneryWeb.{Endpoint, 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.HomeLive alias CanneryWeb.{Endpoint, 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_path -> dgettext("errors", "Internal Server Error") _other_template -> dgettext("errors", "Internal Server Error")
end end
render("error.html", %{error_string: error_string}) render("error.html", %{error_string: error_string})

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.HomeLive alias CanneryWeb.{Endpoint, 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.3", version: "0.8.2",
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:43 #: lib/cannery_web/templates/user_settings/edit.html.heex:45
#, 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:57 #: lib/cannery_web/templates/user_settings/edit.html.heex:59
#: lib/cannery_web/templates/user_settings/edit.html.heex:97 #: lib/cannery_web/templates/user_settings/edit.html.heex:101
#, 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:159 #: lib/cannery_web/templates/user_settings/edit.html.heex:165
#, 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:42 #: lib/cannery_web/templates/user_session/new.html.heex:44
#, 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:137 #: lib/cannery_web/components/topbar.ex:135
#: 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:45 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:47
#: 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:28 #: lib/cannery_web/templates/user_session/new.html.heex:30
#, 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:129 #: lib/cannery_web/components/topbar.ex:127
#: 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:42 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:44
#: 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:39 #: lib/cannery_web/templates/user_session/new.html.heex:41
#, 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:29 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "" msgstr ""
@ -193,12 +193,12 @@ msgstr ""
msgid "Create" msgid "Create"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:111 #: lib/cannery_web/templates/user_settings/edit.html.heex:115
#, 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:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "" msgstr ""
@ -235,7 +235,7 @@ msgstr ""
msgid "Unstage from range" msgid "Unstage from range"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:150 #: lib/cannery_web/templates/user_settings/edit.html.heex:156
#, 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:43 #: lib/cannery_web/templates/user_settings/edit.html.heex:45
#, 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:57 #: lib/cannery_web/templates/user_settings/edit.html.heex:59
#: lib/cannery_web/templates/user_settings/edit.html.heex:97 #: lib/cannery_web/templates/user_settings/edit.html.heex:101
#, 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:159 #: lib/cannery_web/templates/user_settings/edit.html.heex:165
#, 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:42 #: lib/cannery_web/templates/user_session/new.html.heex:44
#, 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:137 #: lib/cannery_web/components/topbar.ex:135
#: 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:45 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:47
#: 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:28 #: lib/cannery_web/templates/user_session/new.html.heex:30
#, 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:129 #: lib/cannery_web/components/topbar.ex:127
#: 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:42 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:44
#: 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:39 #: lib/cannery_web/templates/user_session/new.html.heex:41
#, 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:29 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "Passwort zurücksetzen" msgstr "Passwort zurücksetzen"
@ -206,12 +206,12 @@ msgstr "Zuerst einen Behälter hinzufügen"
msgid "Create" msgid "Create"
msgstr "Erstellen" msgstr "Erstellen"
#: lib/cannery_web/templates/user_settings/edit.html.heex:111 #: lib/cannery_web/templates/user_settings/edit.html.heex:115
#, 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:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "Sprache wechseln" msgstr "Sprache wechseln"
@ -248,7 +248,7 @@ msgstr ""
msgid "Unstage from range" msgid "Unstage from range"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:150 #: lib/cannery_web/templates/user_settings/edit.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""

View File

@ -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:89 #: lib/cannery_web/components/topbar.ex:90
#: 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:23 #: lib/cannery_web/templates/user_session/new.html.heex:25
#, 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"
@ -574,20 +574,18 @@ msgstr "Pulverart"
msgid "UPC" msgid "UPC"
msgstr "UPC" msgstr "UPC"
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:20 #: lib/cannery_web/templates/user_settings/edit.html.heex:80
#: 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:31 #: lib/cannery_web/templates/user_settings/edit.html.heex:33
#: lib/cannery_web/templates/user_settings/edit.html.heex:85 #: lib/cannery_web/templates/user_settings/edit.html.heex:89
#, 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_reset_password/edit.html.heex:16 #: lib/cannery_web/templates/user_settings/edit.html.heex:73
#: 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"
@ -711,17 +709,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:127 #: lib/cannery_web/templates/user_settings/edit.html.heex:133
#, 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:129 #: lib/cannery_web/templates/user_settings/edit.html.heex:135
#, 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:128 #: lib/cannery_web/templates/user_settings/edit.html.heex:134
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "Deutsch" msgstr "Deutsch"
@ -1111,7 +1109,7 @@ msgstr ""
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:130 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1199,18 +1197,3 @@ 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 ""

View File

@ -14,11 +14,25 @@ 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"
#: lib/cannery_web/templates/email/confirm_email.html.heex:3 ## This file is a PO Template file.
##
## "msgid"s here are often extracted from source code.
## Add new translations manually only if they're dynamic
## translations that can't be statically extracted.
##
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#: lib/cannery/accounts/email.ex:30
#, elixir-autogen, elixir-format
msgid "Confirm your %{name} account"
msgstr "Bestätigen Sie ihr %{name} Nutzerkonto"
#: lib/cannery_web/templates/email/confirm_email.html.eex:3
#: lib/cannery_web/templates/email/confirm_email.txt.eex:2 #: lib/cannery_web/templates/email/confirm_email.txt.eex:2
#: lib/cannery_web/templates/email/reset_password.html.heex:3 #: lib/cannery_web/templates/email/reset_password.html.eex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: lib/cannery_web/templates/email/reset_password.txt.eex:2
#: lib/cannery_web/templates/email/update_email.html.heex:3 #: lib/cannery_web/templates/email/update_email.html.eex: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},"
@ -39,79 +53,69 @@ 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_web/templates/email/update_email.html.heex:8 #: lib/cannery/accounts/email.ex:37
#, elixir-autogen, elixir-format
msgid "Reset your %{name} password"
msgstr "Passwort für %{name} zurücksetzen"
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your %{name} email"
msgstr "Aktualisieren Sie %{name} Mailadresse"
#: lib/cannery_web/templates/email/confirm_email.html.eex:9
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}!"
msgstr "Willkommen %{name}!"
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to %{name}%!"
msgstr "Willkommen %{name}%!"
#: lib/cannery_web/templates/email/update_email.html.eex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:4 #: 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.heex:14 #: lib/cannery_web/templates/email/confirm_email.html.eex: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.heex:8 #: lib/cannery_web/templates/email/reset_password.html.eex: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:"
## This file is a PO Template file. #: lib/cannery_web/templates/email/confirm_email.html.eex:22
## #, elixir-autogen, elixir-format
## "msgid"s here are often extracted from source code. msgid "If you didn't create an account at %{name}, please ignore this."
## 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.heex:16 #: lib/cannery_web/templates/email/reset_password.html.eex:16
#: lib/cannery_web/templates/email/update_email.html.heex:16 #: lib/cannery_web/templates/email/update_email.html.eex:16
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format
msgid "If you didn't request this change from Cannery, please ignore this." msgid "If you didn't request this change from %{name}, 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, fuzzy #, elixir-autogen, elixir-format
msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from %{name} 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, fuzzy #, elixir-autogen, elixir-format
msgid "This email was sent from Cannery, the self-hosted firearm tracker website." msgid "This email was sent from %{name}, 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:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:14
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:23
#: lib/cannery_web/templates/user_settings/edit.html.heex:64 #: lib/cannery_web/templates/user_settings/edit.html.heex:67
#: lib/cannery_web/templates/user_settings/edit.html.heex:118 #: lib/cannery_web/templates/user_settings/edit.html.heex:123
#, 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."

View File

@ -79,12 +79,12 @@ msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?"
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:157 #: lib/cannery_web/templates/user_settings/edit.html.heex:163
#, 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:104 #: lib/cannery_web/components/topbar.ex:106
#, 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?"
@ -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:138 #: lib/cannery_web/templates/user_settings/edit.html.heex:144
#, 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?"

View File

@ -184,14 +184,14 @@ msgstr ""
msgid "Invite Only" msgid "Invite Only"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:89 #: lib/cannery_web/components/topbar.ex:90
#: 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:23 #: lib/cannery_web/templates/user_session/new.html.heex:25
#, 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 ""
@ -568,20 +568,18 @@ msgstr ""
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:20 #: lib/cannery_web/templates/user_settings/edit.html.heex:80
#: 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:31 #: lib/cannery_web/templates/user_settings/edit.html.heex:33
#: lib/cannery_web/templates/user_settings/edit.html.heex:85 #: lib/cannery_web/templates/user_settings/edit.html.heex:89
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current password" msgid "Current password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:16 #: lib/cannery_web/templates/user_settings/edit.html.heex:73
#: 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 ""
@ -705,17 +703,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:127 #: lib/cannery_web/templates/user_settings/edit.html.heex:133
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "English" msgid "English"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:129 #: lib/cannery_web/templates/user_settings/edit.html.heex:135
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "French" msgid "French"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:128 #: lib/cannery_web/templates/user_settings/edit.html.heex:134
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "" msgstr ""
@ -1105,7 +1103,7 @@ msgstr ""
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:130 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1182,18 +1180,3 @@ 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 ""

View File

@ -10,11 +10,16 @@
msgid "" msgid ""
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.heex:3 #: 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.heex:3 #: lib/cannery_web/templates/email/reset_password.html.eex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: lib/cannery_web/templates/email/reset_password.txt.eex:2
#: lib/cannery_web/templates/email/update_email.html.heex:3 #: lib/cannery_web/templates/email/update_email.html.eex: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},"
@ -31,62 +36,61 @@ 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_web/templates/email/update_email.html.heex:8 #: lib/cannery/accounts/email.ex:37
#, 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.heex:14 #: lib/cannery_web/templates/email/confirm_email.html.eex: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.heex:8 #: lib/cannery_web/templates/email/reset_password.html.eex: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/accounts/email.ex:30 #: lib/cannery_web/templates/email/confirm_email.html.eex:22
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Confirm your Cannery account" msgid "If you didn't create an account at %{name}, please ignore this."
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.heex:22 #: lib/cannery_web/templates/email/reset_password.html.eex:16
#: lib/cannery_web/templates/email/update_email.html.eex:16
#, elixir-autogen, elixir-format #, 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
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 Cannery at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from %{name} 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 Cannery, the self-hosted firearm tracker website." msgid "This email was sent from %{name}, 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:43 #: lib/cannery_web/templates/user_settings/edit.html.heex:45
#, 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:57 #: lib/cannery_web/templates/user_settings/edit.html.heex:59
#: lib/cannery_web/templates/user_settings/edit.html.heex:97 #: lib/cannery_web/templates/user_settings/edit.html.heex:101
#, 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:159 #: lib/cannery_web/templates/user_settings/edit.html.heex:165
#, 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:42 #: lib/cannery_web/templates/user_session/new.html.heex:44
#, 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:137 #: lib/cannery_web/components/topbar.ex:135
#: 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:45 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:47
#: 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:28 #: lib/cannery_web/templates/user_session/new.html.heex:30
#, 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:129 #: lib/cannery_web/components/topbar.ex:127
#: 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:42 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:44
#: 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:39 #: lib/cannery_web/templates/user_session/new.html.heex:41
#, 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:29 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "" msgstr ""
@ -193,12 +193,12 @@ msgstr ""
msgid "Create" msgid "Create"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:111 #: lib/cannery_web/templates/user_settings/edit.html.heex:115
#, 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:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "" msgstr ""
@ -235,7 +235,7 @@ msgstr ""
msgid "Unstage from range" msgid "Unstage from range"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:150 #: lib/cannery_web/templates/user_settings/edit.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""

View File

@ -184,14 +184,14 @@ msgstr ""
msgid "Invite Only" msgid "Invite Only"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:89 #: lib/cannery_web/components/topbar.ex:90
#: 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:23 #: lib/cannery_web/templates/user_session/new.html.heex:25
#, 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 ""
@ -568,20 +568,18 @@ msgstr ""
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:20 #: lib/cannery_web/templates/user_settings/edit.html.heex:80
#: 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:31 #: lib/cannery_web/templates/user_settings/edit.html.heex:33
#: lib/cannery_web/templates/user_settings/edit.html.heex:85 #: lib/cannery_web/templates/user_settings/edit.html.heex:89
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current password" msgid "Current password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:16 #: lib/cannery_web/templates/user_settings/edit.html.heex:73
#: 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 ""
@ -705,17 +703,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:127 #: lib/cannery_web/templates/user_settings/edit.html.heex:133
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "English" msgid "English"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:129 #: lib/cannery_web/templates/user_settings/edit.html.heex:135
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "French" msgid "French"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:128 #: lib/cannery_web/templates/user_settings/edit.html.heex:134
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "" msgstr ""
@ -1105,7 +1103,7 @@ msgstr ""
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:130 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1182,18 +1180,3 @@ 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 ""

View File

@ -10,11 +10,16 @@ msgid ""
msgstr "" msgstr ""
"Language: en\n" "Language: en\n"
#: lib/cannery_web/templates/email/confirm_email.html.heex:3 #: 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.heex:3 #: lib/cannery_web/templates/email/reset_password.html.eex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: lib/cannery_web/templates/email/reset_password.txt.eex:2
#: lib/cannery_web/templates/email/update_email.html.heex:3 #: lib/cannery_web/templates/email/update_email.html.eex: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},"
@ -31,62 +36,61 @@ 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_web/templates/email/update_email.html.heex:8 #: lib/cannery/accounts/email.ex:37
#, 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.heex:14 #: lib/cannery_web/templates/email/confirm_email.html.eex: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.heex:8 #: lib/cannery_web/templates/email/reset_password.html.eex: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/accounts/email.ex:30 #: lib/cannery_web/templates/email/confirm_email.html.eex:22
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format
msgid "Confirm your Cannery account" msgid "If you didn't create an account at %{name}, please ignore this."
msgstr "" msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.heex:22 #: lib/cannery_web/templates/email/reset_password.html.eex:16
#, elixir-autogen, elixir-format, fuzzy #: lib/cannery_web/templates/email/update_email.html.eex:16
msgid "If you didn't create an account at Cannery, please ignore this." #, elixir-autogen, elixir-format
msgstr "" msgid "If you didn't request this change from %{name}, please ignore this."
#: 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, fuzzy #, elixir-autogen, elixir-format
msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from %{name} 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, fuzzy #, elixir-autogen, elixir-format
msgid "This email was sent from Cannery, the self-hosted firearm tracker website." msgid "This email was sent from %{name}, 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:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:14
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:23
#: lib/cannery_web/templates/user_settings/edit.html.heex:64 #: lib/cannery_web/templates/user_settings/edit.html.heex:67
#: lib/cannery_web/templates/user_settings/edit.html.heex:118 #: lib/cannery_web/templates/user_settings/edit.html.heex:123
#, 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 ""

View File

@ -64,12 +64,12 @@ msgstr ""
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:157 #: lib/cannery_web/templates/user_settings/edit.html.heex:163
#, 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:104 #: lib/cannery_web/components/topbar.ex:106
#, 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 ""
@ -203,7 +203,7 @@ msgstr ""
msgid "Creating..." msgid "Creating..."
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:138 #: lib/cannery_web/templates/user_settings/edit.html.heex:144
#, 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 ""

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:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:14
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:23
#: lib/cannery_web/templates/user_settings/edit.html.heex:64 #: lib/cannery_web/templates/user_settings/edit.html.heex:67
#: lib/cannery_web/templates/user_settings/edit.html.heex:118 #: lib/cannery_web/templates/user_settings/edit.html.heex:123
#, 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 ""

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:43 #: lib/cannery_web/templates/user_settings/edit.html.heex:45
#, 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:57 #: lib/cannery_web/templates/user_settings/edit.html.heex:59
#: lib/cannery_web/templates/user_settings/edit.html.heex:97 #: lib/cannery_web/templates/user_settings/edit.html.heex:101
#, 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:159 #: lib/cannery_web/templates/user_settings/edit.html.heex:165
#, 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:42 #: lib/cannery_web/templates/user_session/new.html.heex:44
#, 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:137 #: lib/cannery_web/components/topbar.ex:135
#: 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:45 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:47
#: 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:28 #: lib/cannery_web/templates/user_session/new.html.heex:30
#, 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:129 #: lib/cannery_web/components/topbar.ex:127
#: 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:42 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:44
#: 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:39 #: lib/cannery_web/templates/user_session/new.html.heex:41
#, 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:29 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "Resetear contraseña" msgstr "Resetear contraseña"
@ -206,12 +206,12 @@ msgstr "añade primero un contenedor"
msgid "Create" msgid "Create"
msgstr "Crear" msgstr "Crear"
#: lib/cannery_web/templates/user_settings/edit.html.heex:111 #: lib/cannery_web/templates/user_settings/edit.html.heex:115
#, 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:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "Cambiar lenguaje" msgstr "Cambiar lenguaje"
@ -248,7 +248,7 @@ msgstr "Preparar para el campo de tiro"
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:150 #: lib/cannery_web/templates/user_settings/edit.html.heex:156
#, 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

@ -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:89 #: lib/cannery_web/components/topbar.ex:90
#: 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:23 #: lib/cannery_web/templates/user_session/new.html.heex:25
#, 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"
@ -575,20 +575,18 @@ msgstr "Tipo de polvora"
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:20 #: lib/cannery_web/templates/user_settings/edit.html.heex:80
#: 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:31 #: lib/cannery_web/templates/user_settings/edit.html.heex:33
#: lib/cannery_web/templates/user_settings/edit.html.heex:85 #: lib/cannery_web/templates/user_settings/edit.html.heex:89
#, 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_reset_password/edit.html.heex:16 #: lib/cannery_web/templates/user_settings/edit.html.heex:73
#: 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"
@ -712,17 +710,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:127 #: lib/cannery_web/templates/user_settings/edit.html.heex:133
#, 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:129 #: lib/cannery_web/templates/user_settings/edit.html.heex:135
#, 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:128 #: lib/cannery_web/templates/user_settings/edit.html.heex:134
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "Alemán" msgstr "Alemán"
@ -1113,7 +1111,7 @@ msgstr ""
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:130 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1201,18 +1199,3 @@ 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 ""

View File

@ -14,11 +14,25 @@ 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"
#: lib/cannery_web/templates/email/confirm_email.html.heex:3 ## This file is a PO Template file.
##
## "msgid"s here are often extracted from source code.
## Add new translations manually only if they're dynamic
## translations that can't be statically extracted.
##
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#: lib/cannery/accounts/email.ex:30
#, elixir-autogen, elixir-format
msgid "Confirm your %{name} account"
msgstr "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.heex:3 #: lib/cannery_web/templates/email/reset_password.html.eex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: lib/cannery_web/templates/email/reset_password.txt.eex:2
#: lib/cannery_web/templates/email/update_email.html.heex:3 #: lib/cannery_web/templates/email/update_email.html.eex: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},"
@ -35,7 +49,27 @@ 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_web/templates/email/update_email.html.heex:8 #: lib/cannery/accounts/email.ex:37
#, 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:"
@ -43,14 +77,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.heex:14 #: lib/cannery_web/templates/email/confirm_email.html.eex: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.heex:8 #: lib/cannery_web/templates/email/reset_password.html.eex: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:"
@ -58,59 +92,29 @@ 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:"
## This file is a PO Template file. #: lib/cannery_web/templates/email/confirm_email.html.eex:22
## #, elixir-autogen, elixir-format
## "msgid"s here are often extracted from source code. msgid "If you didn't create an account at %{name}, please ignore this."
## 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.heex:16 #: lib/cannery_web/templates/email/reset_password.html.eex:16
#: lib/cannery_web/templates/email/update_email.html.heex:16 #: lib/cannery_web/templates/email/update_email.html.eex:16
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format
msgid "If you didn't request this change from Cannery, please ignore this." msgid "If you didn't request this change from %{name}, 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, fuzzy #, elixir-autogen, elixir-format
msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from %{name} 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, fuzzy #, elixir-autogen, elixir-format
msgid "This email was sent from Cannery, the self-hosted firearm tracker website." msgid "This email was sent from %{name}, 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:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:14
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:23
#: lib/cannery_web/templates/user_settings/edit.html.heex:64 #: lib/cannery_web/templates/user_settings/edit.html.heex:67
#: lib/cannery_web/templates/user_settings/edit.html.heex:118 #: lib/cannery_web/templates/user_settings/edit.html.heex:123
#, 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 ""

View File

@ -79,12 +79,12 @@ msgstr "Está seguro que desea eliminar %{name}?"
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:157 #: lib/cannery_web/templates/user_settings/edit.html.heex:163
#, 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:104 #: lib/cannery_web/components/topbar.ex:106
#, 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?"
@ -223,7 +223,7 @@ msgstr "Necesitará hacerlo"
msgid "Creating..." msgid "Creating..."
msgstr "Creando..." msgstr "Creando..."
#: lib/cannery_web/templates/user_settings/edit.html.heex:138 #: lib/cannery_web/templates/user_settings/edit.html.heex:144
#, 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?"

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:43 #: lib/cannery_web/templates/user_settings/edit.html.heex:45
#, 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:57 #: lib/cannery_web/templates/user_settings/edit.html.heex:59
#: lib/cannery_web/templates/user_settings/edit.html.heex:97 #: lib/cannery_web/templates/user_settings/edit.html.heex:101
#, 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:159 #: lib/cannery_web/templates/user_settings/edit.html.heex:165
#, 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:42 #: lib/cannery_web/templates/user_session/new.html.heex:44
#, 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:137 #: lib/cannery_web/components/topbar.ex:135
#: 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:45 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:47
#: 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:28 #: lib/cannery_web/templates/user_session/new.html.heex:30
#, 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:129 #: lib/cannery_web/components/topbar.ex:127
#: 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:42 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:44
#: 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:39 #: lib/cannery_web/templates/user_session/new.html.heex:41
#, 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:29 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:31
#, 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"
@ -206,12 +206,12 @@ 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:111 #: lib/cannery_web/templates/user_settings/edit.html.heex:115
#, 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:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "Changer la langue" msgstr "Changer la langue"
@ -248,7 +248,7 @@ msgstr ""
msgid "Unstage from range" msgid "Unstage from range"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:150 #: lib/cannery_web/templates/user_settings/edit.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""

View File

@ -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:89 #: lib/cannery_web/components/topbar.ex:90
#: 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:23 #: lib/cannery_web/templates/user_session/new.html.heex:25
#, 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"
@ -576,20 +576,18 @@ msgstr "Type de poudre"
msgid "UPC" msgid "UPC"
msgstr "UPC" msgstr "UPC"
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:20 #: lib/cannery_web/templates/user_settings/edit.html.heex:80
#: 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:31 #: lib/cannery_web/templates/user_settings/edit.html.heex:33
#: lib/cannery_web/templates/user_settings/edit.html.heex:85 #: lib/cannery_web/templates/user_settings/edit.html.heex:89
#, 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_reset_password/edit.html.heex:16 #: lib/cannery_web/templates/user_settings/edit.html.heex:73
#: 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"
@ -713,17 +711,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:127 #: lib/cannery_web/templates/user_settings/edit.html.heex:133
#, 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:129 #: lib/cannery_web/templates/user_settings/edit.html.heex:135
#, 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:128 #: lib/cannery_web/templates/user_settings/edit.html.heex:134
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "Allemand" msgstr "Allemand"
@ -1114,7 +1112,7 @@ msgstr ""
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:130 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1202,18 +1200,3 @@ 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 ""

View File

@ -14,11 +14,25 @@ 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"
#: lib/cannery_web/templates/email/confirm_email.html.heex:3 ## This file is a PO Template file.
##
## "msgid"s here are often extracted from source code.
## Add new translations manually only if they're dynamic
## translations that can't be statically extracted.
##
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#: lib/cannery/accounts/email.ex:30
#, elixir-autogen, elixir-format
msgid "Confirm your %{name} account"
msgstr "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.heex:3 #: lib/cannery_web/templates/email/reset_password.html.eex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: lib/cannery_web/templates/email/reset_password.txt.eex:2
#: lib/cannery_web/templates/email/update_email.html.heex:3 #: lib/cannery_web/templates/email/update_email.html.eex: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},"
@ -37,76 +51,66 @@ 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_web/templates/email/update_email.html.heex:8 #: lib/cannery/accounts/email.ex:37
#, 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.heex:14 #: lib/cannery_web/templates/email/confirm_email.html.eex: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.heex:8 #: lib/cannery_web/templates/email/reset_password.html.eex: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:"
## This file is a PO Template file. #: lib/cannery_web/templates/email/confirm_email.html.eex:22
## #, elixir-autogen, elixir-format
## "msgid"s here are often extracted from source code. msgid "If you didn't create an account at %{name}, please ignore this."
## 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.heex:16 #: lib/cannery_web/templates/email/reset_password.html.eex:16
#: lib/cannery_web/templates/email/update_email.html.heex:16 #: lib/cannery_web/templates/email/update_email.html.eex:16
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format
msgid "If you didn't request this change from Cannery, please ignore this." msgid "If you didn't request this change from %{name}, 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, fuzzy #, elixir-autogen, elixir-format
msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from %{name} 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, fuzzy #, elixir-autogen, elixir-format
msgid "This email was sent from Cannery, the self-hosted firearm tracker website." msgid "This email was sent from %{name}, 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:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:14
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:23
#: lib/cannery_web/templates/user_settings/edit.html.heex:64 #: lib/cannery_web/templates/user_settings/edit.html.heex:67
#: lib/cannery_web/templates/user_settings/edit.html.heex:118 #: lib/cannery_web/templates/user_settings/edit.html.heex:123
#, 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 ""

View File

@ -80,12 +80,12 @@ msgstr "Êtes-vous certain·e de supprimer %{name}?"
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:157 #: lib/cannery_web/templates/user_settings/edit.html.heex:163
#, 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:104 #: lib/cannery_web/components/topbar.ex:106
#, 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?"
@ -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:138 #: lib/cannery_web/templates/user_settings/edit.html.heex:144
#, 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?"

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:43 #: lib/cannery_web/templates/user_settings/edit.html.heex:45
#, 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:57 #: lib/cannery_web/templates/user_settings/edit.html.heex:59
#: lib/cannery_web/templates/user_settings/edit.html.heex:97 #: lib/cannery_web/templates/user_settings/edit.html.heex:101
#, 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:159 #: lib/cannery_web/templates/user_settings/edit.html.heex:165
#, 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:42 #: lib/cannery_web/templates/user_session/new.html.heex:44
#, 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:137 #: lib/cannery_web/components/topbar.ex:135
#: 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:45 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:47
#: 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:28 #: lib/cannery_web/templates/user_session/new.html.heex:30
#, 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:129 #: lib/cannery_web/components/topbar.ex:127
#: 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:42 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:44
#: 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:39 #: lib/cannery_web/templates/user_session/new.html.heex:41
#, 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:29 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password" msgid "Reset password"
msgstr "" msgstr ""
@ -204,12 +204,12 @@ msgstr ""
msgid "Create" msgid "Create"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:111 #: lib/cannery_web/templates/user_settings/edit.html.heex:115
#, 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:136 #: lib/cannery_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "" msgstr ""
@ -246,7 +246,7 @@ msgstr ""
msgid "Unstage from range" msgid "Unstage from range"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:150 #: lib/cannery_web/templates/user_settings/edit.html.heex:156
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Export Data as JSON" msgid "Export Data as JSON"
msgstr "" msgstr ""

View File

@ -186,14 +186,14 @@ msgstr ""
msgid "Invite Only" msgid "Invite Only"
msgstr "" msgstr ""
#: lib/cannery_web/components/topbar.ex:89 #: lib/cannery_web/components/topbar.ex:90
#: 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:23 #: lib/cannery_web/templates/user_session/new.html.heex:25
#, 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 ""
@ -570,20 +570,18 @@ msgstr ""
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:20 #: lib/cannery_web/templates/user_settings/edit.html.heex:80
#: 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:31 #: lib/cannery_web/templates/user_settings/edit.html.heex:33
#: lib/cannery_web/templates/user_settings/edit.html.heex:85 #: lib/cannery_web/templates/user_settings/edit.html.heex:89
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Current password" msgid "Current password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:16 #: lib/cannery_web/templates/user_settings/edit.html.heex:73
#: 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 ""
@ -707,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:127 #: lib/cannery_web/templates/user_settings/edit.html.heex:133
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "English" msgid "English"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:129 #: lib/cannery_web/templates/user_settings/edit.html.heex:135
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "French" msgid "French"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:128 #: lib/cannery_web/templates/user_settings/edit.html.heex:134
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "German" msgid "German"
msgstr "" msgstr ""
@ -1107,7 +1105,7 @@ msgstr ""
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:130 #: lib/cannery_web/templates/user_settings/edit.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
@ -1193,18 +1191,3 @@ 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 ""

View File

@ -12,11 +12,25 @@ 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"
#: lib/cannery_web/templates/email/confirm_email.html.heex:3 ## This file is a PO Template file.
##
## "msgid"s here are often extracted from source code.
## Add new translations manually only if they're dynamic
## translations that can't be statically extracted.
##
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#: lib/cannery/accounts/email.ex:30
#, elixir-autogen, elixir-format
msgid "Confirm your %{name} account"
msgstr ""
#: 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.heex:3 #: lib/cannery_web/templates/email/reset_password.html.eex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2 #: lib/cannery_web/templates/email/reset_password.txt.eex:2
#: lib/cannery_web/templates/email/update_email.html.heex:3 #: lib/cannery_web/templates/email/update_email.html.eex: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},"
@ -33,71 +47,61 @@ 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_web/templates/email/update_email.html.heex:8 #: lib/cannery/accounts/email.ex:37
#, 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.heex:14 #: lib/cannery_web/templates/email/confirm_email.html.eex: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.heex:8 #: lib/cannery_web/templates/email/reset_password.html.eex: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 ""
## This file is a PO Template file. #: lib/cannery_web/templates/email/confirm_email.html.eex:22
## #, elixir-autogen, elixir-format
## "msgid"s here are often extracted from source code. msgid "If you didn't create an account at %{name}, please ignore this."
## 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/confirm_email.html.heex:22 #: lib/cannery_web/templates/email/reset_password.html.eex:16
#, elixir-autogen, elixir-format, fuzzy #: lib/cannery_web/templates/email/update_email.html.eex:16
msgid "If you didn't create an account at Cannery, please ignore this." #, elixir-autogen, elixir-format
msgstr "" msgid "If you didn't request this change from %{name}, please ignore this."
#: 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, fuzzy #, elixir-autogen, elixir-format
msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website." msgid "This email was sent from %{name} 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, fuzzy #, elixir-autogen, elixir-format
msgid "This email was sent from Cannery, the self-hosted firearm tracker website." msgid "This email was sent from %{name}, 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:13 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:14
#: lib/cannery_web/templates/user_settings/edit.html.heex:22 #: lib/cannery_web/templates/user_settings/edit.html.heex:23
#: lib/cannery_web/templates/user_settings/edit.html.heex:64 #: lib/cannery_web/templates/user_settings/edit.html.heex:67
#: lib/cannery_web/templates/user_settings/edit.html.heex:118 #: lib/cannery_web/templates/user_settings/edit.html.heex:123
#, 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 ""

View File

@ -75,12 +75,12 @@ msgstr ""
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:157 #: lib/cannery_web/templates/user_settings/edit.html.heex:163
#, 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:104 #: lib/cannery_web/components/topbar.ex:106
#, 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 ""
@ -214,7 +214,7 @@ msgstr ""
msgid "Creating..." msgid "Creating..."
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:138 #: lib/cannery_web/templates/user_settings/edit.html.heex:144
#, 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 ""

View File

@ -64,12 +64,12 @@ msgstr ""
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:157 #: lib/cannery_web/templates/user_settings/edit.html.heex:163
#, 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:104 #: lib/cannery_web/components/topbar.ex:106
#, 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 ""
@ -203,7 +203,7 @@ msgstr ""
msgid "Creating..." msgid "Creating..."
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:138 #: lib/cannery_web/templates/user_settings/edit.html.heex:144
#, 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 ""

View File

@ -10,6 +10,8 @@ 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
_session_token = Accounts.generate_user_session_token(current_user) _token = Accounts.generate_user_session_token(current_user)
conn = UserAuth.fetch_current_user(conn, []) conn = UserAuth.fetch_current_user(conn, [])
refute get_session(conn, :user_token) refute get_session(conn, :user_token)
refute conn.assigns.current_user refute conn.assigns.current_user