Add locale field to users table and implement language switcher in user settings

This commit is contained in:
Alex
2024-04-07 12:25:07 +02:00
parent 3da4c4912d
commit 189d0121cf
14 changed files with 319 additions and 130 deletions

View File

@@ -5,9 +5,11 @@
- Add toggle for message reactions in attendees room
- Add toggle for polls results in attendees room
- Add delete account button in user settings
- Add language switcher in user settings
- Add tour guide for new users
- Add headers to exported CSV in reports
- Add the ability to embed attendees room in an iframe
- Add spanish locale (#84) (@eduproinf)
- Change date picker for a more user-friendly one
- Upgrade Ecto, Phoenix and LiveView
- Fix user avatars in reports

View File

@@ -10,8 +10,10 @@ import AirDatepicker from 'air-datepicker'
import airdatepickerLocaleEn from 'air-datepicker/locale/en'
import airdatepickerLocaleFr from 'air-datepicker/locale/fr'
import airdatepickerLocaleDe from 'air-datepicker/locale/de'
import airdatepickerLocaleEs from 'air-datepicker/locale/es'
import 'moment/locale/de'
import 'moment/locale/fr'
import 'moment/locale/es'
import QRCodeStyling from "qr-code-styling"
import { Presenter } from "./presenter"
import { Manager } from "./manager"
@@ -19,15 +21,17 @@ import Split from "split-grid"
import { TourGuideClient } from "@sjmc11/tourguidejs/src/Tour"
window.moment = moment
const locale = document.querySelector("html").getAttribute("lang") || navigator.language.split('-')[0]
window.moment.locale("en")
window.moment.locale(navigator.language.split('-')[0])
window.moment.locale(locale)
window.Alpine = Alpine
Alpine.start()
let airdatepickerLocale = {
en: airdatepickerLocaleEn,
fr: airdatepickerLocaleFr,
de: airdatepickerLocaleDe
de: airdatepickerLocaleDe,
es: airdatepickerLocaleEs
}
let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content")
let Hooks = {}
@@ -265,7 +269,7 @@ Hooks.Pickr = {
const utc = moment(date).utc().format("YYYY-MM-DDTHH:mm:ss")
utcTime.value = utc
},
locale: airdatepickerLocale[navigator.language.split('-')[0]]
locale: airdatepickerLocale[locale]
})
},
updated() {

View File

@@ -108,6 +108,19 @@ defmodule Claper.Accounts do
User.email_changeset(user, attrs)
end
@doc """
Returns an `%Ecto.Changeset{}` for changing the user preferences.
## Examples
iex> change_user_preferences(user)
%Ecto.Changeset{data: %User{}}
"""
def change_user_preferences(user, attrs \\ %{}) do
User.preferences_changeset(user, attrs)
end
@doc """
Emulates that the email will change without actually changing
it in the database.
@@ -177,6 +190,20 @@ defmodule Claper.Accounts do
end
end
@doc """
Updates the user preferences.
## Examples
iex> update_user_preferences(user, %{locale: "en})
{:ok, %User{}}
iex> update_user_preferences(user, %{locale: "invalid})
{:error, %Ecto.Changeset{}}
"""
def update_user_preferences(user, attrs \\ %{}) do
user
|> User.preferences_changeset(attrs)
|> Repo.update()
end
@doc """
Delivers the magic link email to the given user.

View File

@@ -10,6 +10,7 @@ defmodule Claper.Accounts.User do
field :hashed_password, :string, redact: true
field :is_admin, :boolean
field :confirmed_at, :naive_datetime
field :locale, :string
has_many :events, Claper.Events.Event
@@ -23,6 +24,11 @@ defmodule Claper.Accounts.User do
|> validate_password(opts)
end
def preferences_changeset(user, attrs) do
user
|> cast(attrs, [:locale])
end
defp validate_email(changeset) do
changeset
|> validate_required([:email])

View File

@@ -195,7 +195,7 @@ defmodule ClaperWeb.EventLive.EventFormComponent do
{:noreply,
socket
|> put_flash(:info, gettext("Created successfully"))
|> push_navigate(to: socket.assigns.return_to)}
|> redirect(to: socket.assigns.return_to)}
{:error, %Ecto.Changeset{} = changeset} ->
{:noreply, assign(socket, changeset: changeset)}
@@ -231,7 +231,7 @@ defmodule ClaperWeb.EventLive.EventFormComponent do
{:noreply,
socket
|> put_flash(:info, gettext("Created successfully"))
|> push_navigate(to: socket.assigns.return_to)}
|> redirect(to: socket.assigns.return_to)}
{:error, %Ecto.Changeset{} = changeset} ->
{:noreply, assign(socket, changeset: changeset)}
@@ -251,7 +251,7 @@ defmodule ClaperWeb.EventLive.EventFormComponent do
{:noreply,
socket
|> put_flash(:info, gettext("Updated successfully"))
|> push_navigate(to: socket.assigns.return_to)}
|> redirect(to: socket.assigns.return_to)}
{:error, %Ecto.Changeset{} = changeset} ->
{:noreply, assign(socket, :changeset, changeset)}

View File

@@ -13,11 +13,15 @@ defmodule ClaperWeb.UserSettingsLive.Show do
email_changeset = Accounts.User.email_changeset(%Accounts.User{}, %{})
password_changeset = Accounts.User.password_changeset(%Accounts.User{}, %{})
preferences_changeset = Accounts.User.preferences_changeset(socket.assigns.current_user, %{})
{:ok,
socket
|> assign(:email_changeset, email_changeset)
|> assign(:password_changeset, password_changeset)}
|> assign(:password_changeset, password_changeset)
|> assign(:preferences_changeset, preferences_changeset)
}
end
@impl true
@@ -25,6 +29,7 @@ defmodule ClaperWeb.UserSettingsLive.Show do
{:noreply, apply_action(socket, socket.assigns.live_action, params)}
end
defp apply_action(socket, :edit_email, _params) do
socket
|> assign(:page_title, gettext("Update your email"))
@@ -97,6 +102,30 @@ defmodule ClaperWeb.UserSettingsLive.Show do
end
end
@impl true
def handle_event("save", %{"action" => "update_preferences"} = params, socket) do
locale = params["user"]["locale"]
available_locales = Gettext.known_locales(ClaperWeb.Gettext)
if Enum.member?(available_locales, locale) do
case Accounts.update_user_preferences(socket.assigns.current_user, params["user"]) do
{:ok, _applied_user} ->
{:noreply,
socket
|> put_flash(
:info,
gettext("Your preferences have been updated.")
)
|> redirect(to: ~p"/users/settings")}
{:error, changeset} ->
{:noreply, assign(socket, :preferences_changeset, changeset)}
end
else
{:noreply, socket}
end
end
@impl true
def handle_event("delete_account", _params, %{assigns: %{current_user: user}} = socket) do
Accounts.delete(user)

View File

@@ -131,6 +131,37 @@
</div>
</dl>
</div>
<div>
<div class="py-5">
<h3 class="text-lg leading-6 font-medium text-gray-900">
<%= gettext("Preferences") %>
</h3>
<p class="mt-1 max-w-2xl text-sm text-gray-500">
<%= gettext("Customize your account") %>
</p>
</div>
<div class="border-t border-gray-200 py-5 sm:p-0">
<dl class="sm:divide-y sm:divide-gray-200">
<div class="mt-5">
<.form :let={f} for={@preferences_changeset} phx-change="save">
<%= hidden_input(f, :action, name: "action", value: "update_preferences") %>
<ClaperWeb.Component.Input.select
form={f}
fieldClass="!w-auto"
array={[
{"English", "en"},
{"Español", "es"},
{"Français", "fr"},
{"German", "de"}
]}
key={:locale}
name={gettext("Language")}
/>
</.form>
</div>
</dl>
</div>
</div>
<div>
<div class="py-5">
<h3 class="text-lg leading-6 font-medium text-gray-900">

View File

@@ -66,6 +66,7 @@ defmodule ClaperWeb.Plugs.Locale do
def call(conn, _opts) do
known_locales = Gettext.known_locales(ClaperWeb.Gettext)
user_locale = Map.get(conn.assigns.current_user || %{}, :locale)
accepted_languages =
extract_accept_language(conn)
@@ -73,10 +74,10 @@ defmodule ClaperWeb.Plugs.Locale do
case accepted_languages do
[locale | _] ->
Gettext.put_locale(ClaperWeb.Gettext, locale)
Gettext.put_locale(ClaperWeb.Gettext, user_locale || locale)
conn
|> put_session(:locale, locale)
|> put_session(:locale, user_locale || locale)
_ ->
conn

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang={@current_user.locale}>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

View File

@@ -9,7 +9,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: lib/claper_web/live/event_live/manage.html.heex:1200
#: lib/claper_web/live/user_settings_live/show.ex:48
#: lib/claper_web/live/user_settings_live/show.ex:53
#: lib/claper_web/live/user_settings_live/show.html.heex:5
#: lib/claper_web/templates/layout/_user_menu.html.heex:6
#, elixir-autogen, elixir-format
@@ -155,7 +155,7 @@ msgstr "Scannen und in Echtzeit interagieren"
msgid "Starting on"
msgstr "Startet um"
#: lib/claper_web/live/event_live/event_form_component.ex:250
#: lib/claper_web/live/event_live/event_form_component.ex:253
#, elixir-autogen, elixir-format
msgid "Updated successfully"
msgstr "Erfolgreich aktualisiert"
@@ -172,14 +172,14 @@ msgstr "Es ist an der Zeit, Ihren Präsentationen mehr Bedeutung zu verleihen."
msgid "Return to home"
msgstr "Zurück zur Startseite"
#: lib/claper_web/live/event_live/event_form_component.ex:194
#: lib/claper_web/live/event_live/event_form_component.ex:230
#: lib/claper_web/live/event_live/event_form_component.ex:197
#: lib/claper_web/live/event_live/event_form_component.ex:233
#, elixir-autogen, elixir-format
msgid "Created successfully"
msgstr "Erfolgreich erstellt"
#: lib/claper_web/live/event_live/event_card_component.ex:190
#: lib/claper_web/live/event_live/event_card_component.ex:212
#: lib/claper_web/live/event_live/event_card_component.ex:189
#: lib/claper_web/live/event_live/event_card_component.ex:210
#: lib/claper_web/live/event_live/form_component.ex:97
#: lib/claper_web/live/event_live/index.ex:139
#, elixir-autogen, elixir-format
@@ -198,7 +198,7 @@ msgid "Create"
msgstr "Erstellen"
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#: lib/claper_web/live/event_live/event_card_component.ex:254
#: lib/claper_web/live/event_live/event_card_component.ex:252
#: lib/claper_web/live/event_live/event_form_component.html.heex:37
#: lib/claper_web/live/event_live/manage.html.heex:875
#: lib/claper_web/live/event_live/manage.html.heex:1040
@@ -222,17 +222,17 @@ msgstr "Löschen"
msgid "Save"
msgstr "Speichern"
#: lib/claper_web/live/user_settings_live/show.ex:69
#: lib/claper_web/live/user_settings_live/show.ex:74
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr "Ein Link zur Bestätigung Ihrer E-Mail-Änderung wurde an die neue Adresse gesendet."
#: lib/claper_web/live/user_settings_live/show.ex:33
#: lib/claper_web/live/user_settings_live/show.ex:38
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr "Ändern Sie die E-Mail-Adresse, die Sie mit Ihrem Konto verknüpfen möchten."
#: lib/claper_web/live/user_settings_live/show.ex:30
#: lib/claper_web/live/user_settings_live/show.ex:35
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr "Ihre E-Mail ändern"
@@ -314,12 +314,12 @@ msgstr "Datei hochladen"
msgid "or drag and drop"
msgstr "oder drag and drop"
#: lib/claper_web/live/event_live/event_form_component.ex:301
#: lib/claper_web/live/event_live/event_form_component.ex:304
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr "Sie haben einen falschen Dateityp ausgewählt"
#: lib/claper_web/live/event_live/event_form_component.ex:300
#: lib/claper_web/live/event_live/event_form_component.ex:303
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr "Ihre Datei ist zu groß"
@@ -349,7 +349,7 @@ msgstr "Neue Umfrage"
msgid "Title of your poll"
msgstr "Titel Ihrer Umfrage"
#: lib/claper_web/live/event_live/event_form_component.ex:302
#: lib/claper_web/live/event_live/event_form_component.ex:305
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr "Hochladen fehlgeschlagen"
@@ -411,7 +411,7 @@ msgstr "Wenn Sie Ihre Datei ändern, werden alle damit verbundenen Interaktionse
msgid "Messages from attendees will appear here."
msgstr "Nachrichten von Teilnehmern werden hier erscheinen."
#: lib/claper_web/live/event_live/event_card_component.ex:223
#: lib/claper_web/live/event_live/event_card_component.ex:221
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr "Verarbeitung der Datei..."
@@ -598,7 +598,7 @@ msgstr "Interaktionsgeschichte"
msgid "No messages has been sent"
msgstr "Es wurden keine Nachrichten gesendet"
#: lib/claper_web/live/event_live/event_card_component.ex:260
#: lib/claper_web/live/event_live/event_card_component.ex:258
#, elixir-autogen, elixir-format
msgid "This will delete all data related to your event, this cannot be undone. Confirm ?"
msgstr "Dadurch werden alle Daten im Zusammenhang mit Ihrer Veranstaltung gelöscht. Dies kann nicht rückgängig gemacht werden. Bestätigen?"
@@ -620,7 +620,7 @@ msgstr "Max. Zuschauer"
msgid "Engagement rate"
msgstr "Engagementquote"
#: lib/claper_web/live/event_live/event_card_component.ex:202
#: lib/claper_web/live/event_live/event_card_component.ex:200
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr "Fehler beim Verarbeiten der Datei"
@@ -677,7 +677,7 @@ msgstr "Ihre E-Mail-Adresse"
msgid "Your password"
msgstr "Ihr Passwort"
#: lib/claper_web/live/user_settings_live/show.ex:42
#: lib/claper_web/live/user_settings_live/show.ex:47
#, elixir-autogen, elixir-format
msgid "Change the password used to access your account."
msgstr "Ändern Sie das Passwort, mit dem Sie auf Ihr Konto zugreifen."
@@ -692,12 +692,12 @@ msgstr "Aktuelles Passwort"
msgid "New password"
msgstr "Neues Kennwort"
#: lib/claper_web/live/user_settings_live/show.ex:39
#: lib/claper_web/live/user_settings_live/show.ex:44
#, elixir-autogen, elixir-format
msgid "Update your password"
msgstr "Aktualisieren Sie Ihr Passwort"
#: lib/claper_web/live/user_settings_live/show.ex:91
#: lib/claper_web/live/user_settings_live/show.ex:96
#, elixir-autogen, elixir-format
msgid "Your password has been updated."
msgstr "Dein Passwort wurde aktualisiert."
@@ -1076,37 +1076,37 @@ msgstr "Sie wurden eingeladen, ein Ereignis zu verwalten"
msgid "Saved"
msgstr "Gespeichert"
#: lib/claper_web/live/event_live/event_card_component.ex:89
#: lib/claper_web/live/event_live/event_card_component.ex:88
#, elixir-autogen, elixir-format
msgid "Access"
msgstr "Zugriff"
#: lib/claper_web/live/user_settings_live/show.html.heex:148
#: lib/claper_web/live/user_settings_live/show.html.heex:179
#, elixir-autogen, elixir-format
msgid "All your events and files will be permanently deleted, are you sure?"
msgstr "Alle Ihre Veranstaltungen und Dateien werden dauerhaft gelöscht, sind Sie sicher?"
#: lib/claper_web/live/event_live/event_card_component.ex:161
#: lib/claper_web/live/event_live/event_card_component.ex:160
#, elixir-autogen, elixir-format
msgid "Are you sure you want to terminate this event? This action cannot be undone."
msgstr "Sind Sie sicher, dass Sie diese Veranstaltung beenden möchten? Diese Aktion kann nicht rückgängig gemacht werden."
#: lib/claper_web/live/event_live/event_card_component.ex:153
#: lib/claper_web/live/event_live/event_card_component.ex:152
#, elixir-autogen, elixir-format
msgid "Attendees room"
msgstr "Teilnehmerraum"
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#: lib/claper_web/live/user_settings_live/show.html.heex:171
#, elixir-autogen, elixir-format
msgid "Be careful, these actions are irreversible"
msgstr "Seien Sie vorsichtig, diese Aktionen sind unwiderruflich"
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#: lib/claper_web/live/user_settings_live/show.html.heex:168
#, elixir-autogen, elixir-format
msgid "Danger zone"
msgstr "Gefahrenzone"
#: lib/claper_web/live/user_settings_live/show.html.heex:153
#: lib/claper_web/live/user_settings_live/show.html.heex:184
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete account"
msgstr "Konto löschen"
@@ -1121,22 +1121,22 @@ msgstr "Nachrichtenreaktionen aktivieren"
msgid "Open presentation"
msgstr "Präsentation öffnen"
#: lib/claper_web/live/event_live/event_card_component.ex:130
#: lib/claper_web/live/event_live/event_card_component.ex:129
#, elixir-autogen, elixir-format, fuzzy
msgid "Presentation manager"
msgstr "Präsentationsmanager"
#: lib/claper_web/live/event_live/event_card_component.ex:179
#: lib/claper_web/live/event_live/event_card_component.ex:178
#, elixir-autogen, elixir-format
msgid "Terminate"
msgstr "Beenden"
#: lib/claper_web/live/event_live/event_card_component.ex:249
#: lib/claper_web/live/event_live/event_card_component.ex:247
#, elixir-autogen, elixir-format
msgid "View report"
msgstr "Bericht ansehen"
#: lib/claper_web/live/user_settings_live/show.ex:106
#: lib/claper_web/live/user_settings_live/show.ex:135
#, elixir-autogen, elixir-format
msgid "Your account has been deleted."
msgstr "Ihr Konto wurde gelöscht."
@@ -1364,3 +1364,23 @@ msgstr "Erstellen Sie Ihre nächste Präsentation mit"
#, elixir-autogen, elixir-format
msgid "Event doesn't exist"
msgstr "Veranstaltung existiert nicht"
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#, elixir-autogen, elixir-format
msgid "Customize your account"
msgstr "Passen Sie Ihr Konto an"
#: lib/claper_web/live/user_settings_live/show.html.heex:158
#, elixir-autogen, elixir-format
msgid "Language"
msgstr "Sprache"
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr "Einstellungen"
#: lib/claper_web/live/user_settings_live/show.ex:116
#, elixir-autogen, elixir-format
msgid "Your preferences have been updated."
msgstr "Ihre Einstellungen wurden aktualisiert."

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1200
#: lib/claper_web/live/user_settings_live/show.ex:48
#: lib/claper_web/live/user_settings_live/show.ex:53
#: lib/claper_web/live/user_settings_live/show.html.heex:5
#: lib/claper_web/templates/layout/_user_menu.html.heex:6
#, elixir-autogen, elixir-format
@@ -157,7 +157,7 @@ msgstr ""
msgid "Starting on"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:250
#: lib/claper_web/live/event_live/event_form_component.ex:253
#, elixir-autogen, elixir-format
msgid "Updated successfully"
msgstr ""
@@ -174,14 +174,14 @@ msgstr ""
msgid "Return to home"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:194
#: lib/claper_web/live/event_live/event_form_component.ex:230
#: lib/claper_web/live/event_live/event_form_component.ex:197
#: lib/claper_web/live/event_live/event_form_component.ex:233
#, elixir-autogen, elixir-format
msgid "Created successfully"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:190
#: lib/claper_web/live/event_live/event_card_component.ex:212
#: lib/claper_web/live/event_live/event_card_component.ex:189
#: lib/claper_web/live/event_live/event_card_component.ex:210
#: lib/claper_web/live/event_live/form_component.ex:97
#: lib/claper_web/live/event_live/index.ex:139
#, elixir-autogen, elixir-format
@@ -200,7 +200,7 @@ msgid "Create"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#: lib/claper_web/live/event_live/event_card_component.ex:254
#: lib/claper_web/live/event_live/event_card_component.ex:252
#: lib/claper_web/live/event_live/event_form_component.html.heex:37
#: lib/claper_web/live/event_live/manage.html.heex:875
#: lib/claper_web/live/event_live/manage.html.heex:1040
@@ -224,17 +224,17 @@ msgstr ""
msgid "Save"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:69
#: lib/claper_web/live/user_settings_live/show.ex:74
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:33
#: lib/claper_web/live/user_settings_live/show.ex:38
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:30
#: lib/claper_web/live/user_settings_live/show.ex:35
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr ""
@@ -316,12 +316,12 @@ msgstr ""
msgid "or drag and drop"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:301
#: lib/claper_web/live/event_live/event_form_component.ex:304
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:300
#: lib/claper_web/live/event_live/event_form_component.ex:303
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr ""
@@ -351,7 +351,7 @@ msgstr ""
msgid "Title of your poll"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:302
#: lib/claper_web/live/event_live/event_form_component.ex:305
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr ""
@@ -413,7 +413,7 @@ msgstr ""
msgid "Messages from attendees will appear here."
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:223
#: lib/claper_web/live/event_live/event_card_component.ex:221
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr ""
@@ -600,7 +600,7 @@ msgstr ""
msgid "No messages has been sent"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:260
#: lib/claper_web/live/event_live/event_card_component.ex:258
#, elixir-autogen, elixir-format
msgid "This will delete all data related to your event, this cannot be undone. Confirm ?"
msgstr ""
@@ -622,7 +622,7 @@ msgstr ""
msgid "Engagement rate"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:202
#: lib/claper_web/live/event_live/event_card_component.ex:200
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr ""
@@ -679,7 +679,7 @@ msgstr ""
msgid "Your password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:42
#: lib/claper_web/live/user_settings_live/show.ex:47
#, elixir-autogen, elixir-format
msgid "Change the password used to access your account."
msgstr ""
@@ -694,12 +694,12 @@ msgstr ""
msgid "New password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:39
#: lib/claper_web/live/user_settings_live/show.ex:44
#, elixir-autogen, elixir-format
msgid "Update your password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:91
#: lib/claper_web/live/user_settings_live/show.ex:96
#, elixir-autogen, elixir-format
msgid "Your password has been updated."
msgstr ""
@@ -1078,37 +1078,37 @@ msgstr ""
msgid "Saved"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:89
#: lib/claper_web/live/event_live/event_card_component.ex:88
#, elixir-autogen, elixir-format
msgid "Access"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:148
#: lib/claper_web/live/user_settings_live/show.html.heex:179
#, elixir-autogen, elixir-format
msgid "All your events and files will be permanently deleted, are you sure?"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:161
#: lib/claper_web/live/event_live/event_card_component.ex:160
#, elixir-autogen, elixir-format
msgid "Are you sure you want to terminate this event? This action cannot be undone."
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:153
#: lib/claper_web/live/event_live/event_card_component.ex:152
#, elixir-autogen, elixir-format
msgid "Attendees room"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#: lib/claper_web/live/user_settings_live/show.html.heex:171
#, elixir-autogen, elixir-format
msgid "Be careful, these actions are irreversible"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#: lib/claper_web/live/user_settings_live/show.html.heex:168
#, elixir-autogen, elixir-format
msgid "Danger zone"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:153
#: lib/claper_web/live/user_settings_live/show.html.heex:184
#, elixir-autogen, elixir-format
msgid "Delete account"
msgstr ""
@@ -1123,22 +1123,22 @@ msgstr ""
msgid "Open presentation"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:130
#: lib/claper_web/live/event_live/event_card_component.ex:129
#, elixir-autogen, elixir-format
msgid "Presentation manager"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:179
#: lib/claper_web/live/event_live/event_card_component.ex:178
#, elixir-autogen, elixir-format
msgid "Terminate"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:249
#: lib/claper_web/live/event_live/event_card_component.ex:247
#, elixir-autogen, elixir-format
msgid "View report"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:106
#: lib/claper_web/live/user_settings_live/show.ex:135
#, elixir-autogen, elixir-format
msgid "Your account has been deleted."
msgstr ""
@@ -1366,3 +1366,23 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Event doesn't exist"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#, elixir-autogen, elixir-format
msgid "Customize your account"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:158
#, elixir-autogen, elixir-format
msgid "Language"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:116
#, elixir-autogen, elixir-format
msgid "Your preferences have been updated."
msgstr ""

View File

@@ -9,7 +9,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: lib/claper_web/live/event_live/manage.html.heex:1200
#: lib/claper_web/live/user_settings_live/show.ex:48
#: lib/claper_web/live/user_settings_live/show.ex:53
#: lib/claper_web/live/user_settings_live/show.html.heex:5
#: lib/claper_web/templates/layout/_user_menu.html.heex:6
#, elixir-autogen, elixir-format
@@ -155,7 +155,7 @@ msgstr ""
msgid "Starting on"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:250
#: lib/claper_web/live/event_live/event_form_component.ex:253
#, elixir-autogen, elixir-format
msgid "Updated successfully"
msgstr ""
@@ -172,14 +172,14 @@ msgstr ""
msgid "Return to home"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:194
#: lib/claper_web/live/event_live/event_form_component.ex:230
#: lib/claper_web/live/event_live/event_form_component.ex:197
#: lib/claper_web/live/event_live/event_form_component.ex:233
#, elixir-autogen, elixir-format
msgid "Created successfully"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:190
#: lib/claper_web/live/event_live/event_card_component.ex:212
#: lib/claper_web/live/event_live/event_card_component.ex:189
#: lib/claper_web/live/event_live/event_card_component.ex:210
#: lib/claper_web/live/event_live/form_component.ex:97
#: lib/claper_web/live/event_live/index.ex:139
#, elixir-autogen, elixir-format
@@ -198,7 +198,7 @@ msgid "Create"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#: lib/claper_web/live/event_live/event_card_component.ex:254
#: lib/claper_web/live/event_live/event_card_component.ex:252
#: lib/claper_web/live/event_live/event_form_component.html.heex:37
#: lib/claper_web/live/event_live/manage.html.heex:875
#: lib/claper_web/live/event_live/manage.html.heex:1040
@@ -222,17 +222,17 @@ msgstr ""
msgid "Save"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:69
#: lib/claper_web/live/user_settings_live/show.ex:74
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:33
#: lib/claper_web/live/user_settings_live/show.ex:38
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:30
#: lib/claper_web/live/user_settings_live/show.ex:35
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr ""
@@ -314,12 +314,12 @@ msgstr ""
msgid "or drag and drop"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:301
#: lib/claper_web/live/event_live/event_form_component.ex:304
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:300
#: lib/claper_web/live/event_live/event_form_component.ex:303
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr ""
@@ -349,7 +349,7 @@ msgstr ""
msgid "Title of your poll"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:302
#: lib/claper_web/live/event_live/event_form_component.ex:305
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr ""
@@ -411,7 +411,7 @@ msgstr ""
msgid "Messages from attendees will appear here."
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:223
#: lib/claper_web/live/event_live/event_card_component.ex:221
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr ""
@@ -598,7 +598,7 @@ msgstr ""
msgid "No messages has been sent"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:260
#: lib/claper_web/live/event_live/event_card_component.ex:258
#, elixir-autogen, elixir-format
msgid "This will delete all data related to your event, this cannot be undone. Confirm ?"
msgstr ""
@@ -620,7 +620,7 @@ msgstr ""
msgid "Engagement rate"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:202
#: lib/claper_web/live/event_live/event_card_component.ex:200
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr ""
@@ -677,7 +677,7 @@ msgstr ""
msgid "Your password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:42
#: lib/claper_web/live/user_settings_live/show.ex:47
#, elixir-autogen, elixir-format
msgid "Change the password used to access your account."
msgstr ""
@@ -692,12 +692,12 @@ msgstr ""
msgid "New password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:39
#: lib/claper_web/live/user_settings_live/show.ex:44
#, elixir-autogen, elixir-format
msgid "Update your password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:91
#: lib/claper_web/live/user_settings_live/show.ex:96
#, elixir-autogen, elixir-format
msgid "Your password has been updated."
msgstr ""
@@ -1076,37 +1076,37 @@ msgstr ""
msgid "Saved"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:89
#: lib/claper_web/live/event_live/event_card_component.ex:88
#, elixir-autogen, elixir-format
msgid "Access"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:148
#: lib/claper_web/live/user_settings_live/show.html.heex:179
#, elixir-autogen, elixir-format
msgid "All your events and files will be permanently deleted, are you sure?"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:161
#: lib/claper_web/live/event_live/event_card_component.ex:160
#, elixir-autogen, elixir-format
msgid "Are you sure you want to terminate this event? This action cannot be undone."
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:153
#: lib/claper_web/live/event_live/event_card_component.ex:152
#, elixir-autogen, elixir-format
msgid "Attendees room"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#: lib/claper_web/live/user_settings_live/show.html.heex:171
#, elixir-autogen, elixir-format
msgid "Be careful, these actions are irreversible"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#: lib/claper_web/live/user_settings_live/show.html.heex:168
#, elixir-autogen, elixir-format
msgid "Danger zone"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:153
#: lib/claper_web/live/user_settings_live/show.html.heex:184
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete account"
msgstr ""
@@ -1121,22 +1121,22 @@ msgstr ""
msgid "Open presentation"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:130
#: lib/claper_web/live/event_live/event_card_component.ex:129
#, elixir-autogen, elixir-format, fuzzy
msgid "Presentation manager"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:179
#: lib/claper_web/live/event_live/event_card_component.ex:178
#, elixir-autogen, elixir-format
msgid "Terminate"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:249
#: lib/claper_web/live/event_live/event_card_component.ex:247
#, elixir-autogen, elixir-format
msgid "View report"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:106
#: lib/claper_web/live/user_settings_live/show.ex:135
#, elixir-autogen, elixir-format
msgid "Your account has been deleted."
msgstr ""
@@ -1364,3 +1364,23 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Event doesn't exist"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#, elixir-autogen, elixir-format
msgid "Customize your account"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:158
#, elixir-autogen, elixir-format
msgid "Language"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:116
#, elixir-autogen, elixir-format
msgid "Your preferences have been updated."
msgstr ""

View File

@@ -9,7 +9,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: lib/claper_web/live/event_live/manage.html.heex:1200
#: lib/claper_web/live/user_settings_live/show.ex:48
#: lib/claper_web/live/user_settings_live/show.ex:53
#: lib/claper_web/live/user_settings_live/show.html.heex:5
#: lib/claper_web/templates/layout/_user_menu.html.heex:6
#, elixir-autogen, elixir-format
@@ -155,7 +155,7 @@ msgstr "Scannez pour interagir en temps réel"
msgid "Starting on"
msgstr "Commence le"
#: lib/claper_web/live/event_live/event_form_component.ex:250
#: lib/claper_web/live/event_live/event_form_component.ex:253
#, elixir-autogen, elixir-format
msgid "Updated successfully"
msgstr "Mis à jour avec succès"
@@ -172,14 +172,14 @@ msgstr "C'est le moment de propulser vos présentations."
msgid "Return to home"
msgstr "Retourner à l'accueil"
#: lib/claper_web/live/event_live/event_form_component.ex:194
#: lib/claper_web/live/event_live/event_form_component.ex:230
#: lib/claper_web/live/event_live/event_form_component.ex:197
#: lib/claper_web/live/event_live/event_form_component.ex:233
#, elixir-autogen, elixir-format
msgid "Created successfully"
msgstr "Mis à jour avec succès"
#: lib/claper_web/live/event_live/event_card_component.ex:190
#: lib/claper_web/live/event_live/event_card_component.ex:212
#: lib/claper_web/live/event_live/event_card_component.ex:189
#: lib/claper_web/live/event_live/event_card_component.ex:210
#: lib/claper_web/live/event_live/form_component.ex:97
#: lib/claper_web/live/event_live/index.ex:139
#, elixir-autogen, elixir-format
@@ -198,7 +198,7 @@ msgid "Create"
msgstr "Créer"
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#: lib/claper_web/live/event_live/event_card_component.ex:254
#: lib/claper_web/live/event_live/event_card_component.ex:252
#: lib/claper_web/live/event_live/event_form_component.html.heex:37
#: lib/claper_web/live/event_live/manage.html.heex:875
#: lib/claper_web/live/event_live/manage.html.heex:1040
@@ -222,17 +222,17 @@ msgstr "Supprimer"
msgid "Save"
msgstr "Sauvegarder"
#: lib/claper_web/live/user_settings_live/show.ex:69
#: lib/claper_web/live/user_settings_live/show.ex:74
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr "Un lien pour confirmer votre changement d'email a été envoyé à la nouvelle adresse."
#: lib/claper_web/live/user_settings_live/show.ex:33
#: lib/claper_web/live/user_settings_live/show.ex:38
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr "Modifiez l'email que vous souhaitez associer à votre compte."
#: lib/claper_web/live/user_settings_live/show.ex:30
#: lib/claper_web/live/user_settings_live/show.ex:35
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr "Changer votre email"
@@ -314,12 +314,12 @@ msgstr "Chargez un fichier"
msgid "or drag and drop"
msgstr "ou glisser-déposer"
#: lib/claper_web/live/event_live/event_form_component.ex:301
#: lib/claper_web/live/event_live/event_form_component.ex:304
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr "Vous avez sélectionné un type de fichier incorrect"
#: lib/claper_web/live/event_live/event_form_component.ex:300
#: lib/claper_web/live/event_live/event_form_component.ex:303
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr "Votre fichier est trop volumineux"
@@ -349,7 +349,7 @@ msgstr "Nouveau sondage"
msgid "Title of your poll"
msgstr "Titre de votre sondage"
#: lib/claper_web/live/event_live/event_form_component.ex:302
#: lib/claper_web/live/event_live/event_form_component.ex:305
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr "Échec du chargement"
@@ -412,7 +412,7 @@ msgstr "La modification de votre fichier supprimera tous les éléments d'intera
msgid "Messages from attendees will appear here."
msgstr "Les messages des participants apparaîtront ici."
#: lib/claper_web/live/event_live/event_card_component.ex:223
#: lib/claper_web/live/event_live/event_card_component.ex:221
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr "Traitement de votre fichier..."
@@ -601,7 +601,7 @@ msgstr "Historique des interactions"
msgid "No messages has been sent"
msgstr "Aucun message n'a été envoyé"
#: lib/claper_web/live/event_live/event_card_component.ex:260
#: lib/claper_web/live/event_live/event_card_component.ex:258
#, elixir-autogen, elixir-format
msgid "This will delete all data related to your event, this cannot be undone. Confirm ?"
msgstr "Cette opération supprimera toutes les données relatives à votre événement, elle ne peut être annulée. Confirmer ?"
@@ -624,7 +624,7 @@ msgstr "Pic d'audience"
msgid "Engagement rate"
msgstr "Taux d'engagement"
#: lib/claper_web/live/event_live/event_card_component.ex:202
#: lib/claper_web/live/event_live/event_card_component.ex:200
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr "Erreur lors du traitement du fichier"
@@ -681,7 +681,7 @@ msgstr "Adresse email"
msgid "Your password"
msgstr "Votre mot de passe"
#: lib/claper_web/live/user_settings_live/show.ex:42
#: lib/claper_web/live/user_settings_live/show.ex:47
#, elixir-autogen, elixir-format
msgid "Change the password used to access your account."
msgstr "Changez le mot de passe utilisé pour accéder à votre compte."
@@ -696,12 +696,12 @@ msgstr "Mot de passe actuel"
msgid "New password"
msgstr "Nouveau mot de passe"
#: lib/claper_web/live/user_settings_live/show.ex:39
#: lib/claper_web/live/user_settings_live/show.ex:44
#, elixir-autogen, elixir-format, fuzzy
msgid "Update your password"
msgstr "Changer votre email"
#: lib/claper_web/live/user_settings_live/show.ex:91
#: lib/claper_web/live/user_settings_live/show.ex:96
#, elixir-autogen, elixir-format, fuzzy
msgid "Your password has been updated."
msgstr "Votre mot de passe a été mis à jour."
@@ -1081,37 +1081,37 @@ msgstr "Vous avez été invité à gérer un événement"
msgid "Saved"
msgstr "Enregistré"
#: lib/claper_web/live/event_live/event_card_component.ex:89
#: lib/claper_web/live/event_live/event_card_component.ex:88
#, elixir-autogen, elixir-format
msgid "Access"
msgstr "Accès"
#: lib/claper_web/live/user_settings_live/show.html.heex:148
#: lib/claper_web/live/user_settings_live/show.html.heex:179
#, elixir-autogen, elixir-format
msgid "All your events and files will be permanently deleted, are you sure?"
msgstr "Tous vos événements et fichiers seront définitivement supprimés, êtes-vous sûr ?"
#: lib/claper_web/live/event_live/event_card_component.ex:161
#: lib/claper_web/live/event_live/event_card_component.ex:160
#, elixir-autogen, elixir-format
msgid "Are you sure you want to terminate this event? This action cannot be undone."
msgstr "Êtes-vous sûr de vouloir terminer cet événement ? Cette action est irréversible."
#: lib/claper_web/live/event_live/event_card_component.ex:153
#: lib/claper_web/live/event_live/event_card_component.ex:152
#, elixir-autogen, elixir-format
msgid "Attendees room"
msgstr "Salle des participants"
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#: lib/claper_web/live/user_settings_live/show.html.heex:171
#, elixir-autogen, elixir-format
msgid "Be careful, these actions are irreversible"
msgstr "Soyez prudent, ces actions sont irréversibles"
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#: lib/claper_web/live/user_settings_live/show.html.heex:168
#, elixir-autogen, elixir-format
msgid "Danger zone"
msgstr "Zone de danger"
#: lib/claper_web/live/user_settings_live/show.html.heex:153
#: lib/claper_web/live/user_settings_live/show.html.heex:184
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete account"
msgstr "Supprimer le compte"
@@ -1126,22 +1126,22 @@ msgstr "Activer les réactions aux messages"
msgid "Open presentation"
msgstr "Ouvrir la présentation"
#: lib/claper_web/live/event_live/event_card_component.ex:130
#: lib/claper_web/live/event_live/event_card_component.ex:129
#, elixir-autogen, elixir-format, fuzzy
msgid "Presentation manager"
msgstr "Gestionnaire de présentation"
#: lib/claper_web/live/event_live/event_card_component.ex:179
#: lib/claper_web/live/event_live/event_card_component.ex:178
#, elixir-autogen, elixir-format
msgid "Terminate"
msgstr "Terminer"
#: lib/claper_web/live/event_live/event_card_component.ex:249
#: lib/claper_web/live/event_live/event_card_component.ex:247
#, elixir-autogen, elixir-format
msgid "View report"
msgstr "Voir le rapport"
#: lib/claper_web/live/user_settings_live/show.ex:106
#: lib/claper_web/live/user_settings_live/show.ex:135
#, elixir-autogen, elixir-format
msgid "Your account has been deleted."
msgstr "Votre compte a été supprimé."
@@ -1369,3 +1369,23 @@ msgstr "Créez votre prochaine présentation avec"
#, elixir-autogen, elixir-format
msgid "Event doesn't exist"
msgstr "L'événement n'existe pas"
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#, elixir-autogen, elixir-format
msgid "Customize your account"
msgstr "Personnalisez votre compte"
#: lib/claper_web/live/user_settings_live/show.html.heex:158
#, elixir-autogen, elixir-format
msgid "Language"
msgstr "Langue"
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr "Préférences"
#: lib/claper_web/live/user_settings_live/show.ex:116
#, elixir-autogen, elixir-format
msgid "Your preferences have been updated."
msgstr "Vos préférences ont été mises à jour."

View File

@@ -0,0 +1,9 @@
defmodule Claper.Repo.Migrations.AddTimezoneAndLocaleToUsers do
use Ecto.Migration
def change do
alter table(:users) do
add :locale, :string
end
end
end