Add nickname feature + German locale + minor fixes (#43)

* Add attendee name feature

* Add names to report

* Add name to test

* Finish nickname feature + minor fixes

* Add german locale

* Update changelog
This commit is contained in:
Alexandre Lion
2023-08-10 20:39:38 +02:00
committed by GitHub
parent 4d059c3a3a
commit 339ae6fdcf
24 changed files with 2033 additions and 263 deletions

View File

@@ -1,3 +1,13 @@
## 1.5.0
- Add a nickname feature and toggle button to avoid anonymous messages
- Add url information on the instruction page with QR Code
- Add German locale (thanks to @Dynnammo)
- Update Moment Timezone, Moment to patch security vulnerabilities
- Update TailwindCSS 2 to 3
- Fix layout on the moderator page for messages list
- Fix event link color being white
## v1.4.2
- Update Moment Timezone, Moment to patch security vulnerabilities

View File

@@ -125,6 +125,40 @@ Hooks.ScrollIntoDiv = {
}
}
Hooks.NicknamePicker = {
mounted() {
let currentNickname = localStorage.getItem("nickname") || ""
if (currentNickname.length > 0) {
this.pushEvent("set-nickname", {nickname: currentNickname})
}
this.el.addEventListener("click", (e) => this.clicked(e))
},
destroy() {
this.el.removeEventListener("click", (e) => this.clicked(e))
},
clicked(e) {
let nickname = prompt(this.el.dataset.prompt, localStorage.getItem("nickname") || "")
if (nickname) {
localStorage.setItem("nickname", nickname)
this.pushEvent("set-nickname", {nickname: nickname})
}
},
}
Hooks.EmptyNickname = {
mounted() {
this.el.addEventListener("click", (e) => this.clicked(e))
},
destroy() {
this.el.removeEventListener("click", (e) => this.clicked(e))
},
clicked(e) {
localStorage.removeItem("nickname")
},
}
Hooks.PostForm = {
onPress(e, submitBtn, TA) {
if (e.key == "Enter" && !e.shiftKey) {
@@ -146,11 +180,19 @@ Hooks.PostForm = {
TA.value = ""
},
mounted() {
const submitBtn = document.getElementById("submitBtn")
const TA = document.getElementById("postFormTA")
if (submitBtn && TA) {
submitBtn.addEventListener("click", (e) => this.onSubmit(e, TA))
TA.addEventListener("keydown", (e) => this.onPress(e, submitBtn, TA))
setTimeout(() => {
const submitBtn = document.getElementById("submitBtn")
const TA = document.getElementById("postFormTA")
if (submitBtn && TA) {
submitBtn.addEventListener("click", (e) => this.onSubmit(e, TA))
TA.addEventListener("keydown", (e) => this.onPress(e, submitBtn, TA))
}
}, 500)
// set nickname if present
let nickname = this.el.dataset.nickname
if (nickname) {
localStorage.setItem("nickname", nickname)
}
},
updated() {
@@ -419,7 +461,7 @@ Uploaders.S3 = function(entries, onViewError){
let liveSocket = new LiveSocket("/live", Socket, {
uploaders: Uploaders,
params: {_csrf_token: csrfToken, tz: Intl.DateTimeFormat().resolvedOptions().timeZone},
params: {_csrf_token: csrfToken, tz: Intl.DateTimeFormat().resolvedOptions().timeZone, host: window.location.host},
hooks: Hooks,
dom: {
onBeforeElUpdated(from, to){

View File

@@ -19,7 +19,7 @@ config :claper, ClaperWeb.Endpoint,
config :claper, ClaperWeb.Gettext,
default_locale: "en",
locales: ~w(fr en)
locales: ~w(fr en de)
# Configures the mailer
#

View File

@@ -29,9 +29,17 @@ defmodule Claper.Posts.Post do
:like_count,
:love_count,
:lol_count,
:name,
:position
])
|> validate_required([:body, :position])
|> validate_length(:body, min: 2, max: 250)
end
def nickname_changeset(post, attrs) do
post
|> cast(attrs, [:name])
|> validate_required([:name])
|> validate_length(:name, min: 2, max: 20)
end
end

View File

@@ -8,6 +8,7 @@ defmodule Claper.Presentations.PresentationState do
field :poll_visible, :boolean
field :join_screen_visible, :boolean
field :chat_enabled, :boolean
field :anonymous_chat_enabled, :boolean
field :banned, {:array, :string}, default: []
belongs_to :presentation_file, Claper.Presentations.PresentationFile
@@ -25,7 +26,8 @@ defmodule Claper.Presentations.PresentationState do
:join_screen_visible,
:banned,
:presentation_file_id,
:chat_enabled
:chat_enabled,
:anonymous_chat_enabled
])
|> validate_required([])
end

View File

@@ -66,7 +66,7 @@ defmodule ClaperWeb.EventLive.FormComponent do
required="true"
value={
if is_nil(assigns.current_form_submit),
do: '',
do: ~c"",
else: assigns.current_form_submit.response[field.name]
}
/>
@@ -80,7 +80,7 @@ defmodule ClaperWeb.EventLive.FormComponent do
required="true"
value={
if is_nil(assigns.current_form_submit),
do: '',
do: ~c"",
else: assigns.current_form_submit.response[field.name]
}
/>

View File

@@ -314,6 +314,23 @@ defmodule ClaperWeb.EventLive.Manage do
{:noreply, socket |> assign(:state, new_state)}
end
@impl true
def handle_event(
"checked",
%{"key" => "anonymous_chat_enabled", "value" => value},
%{assigns: %{state: state}} = socket
) do
{:ok, new_state} =
Claper.Presentations.update_presentation_state(
state,
%{
:anonymous_chat_enabled => value
}
)
{:noreply, socket |> assign(:state, new_state)}
end
@impl true
def handle_event(
"checked",

View File

@@ -551,7 +551,7 @@
<div class="grid grid-cols-1 grid-rows-2 md:grid-rows-3">
<div class="bg-gray-200 md:row-span-2">
<ul class="flex items-center space-x-3 px-2 mt-2">
<ul class="fixed z-20 flex items-center bg-gray-200 space-x-3 px-2 w-full py-2">
<li class={"rounded-md #{if @list_tab == :posts, do: 'bg-secondary-600 text-white', else: 'bg-white text-gray-600' } px-2 py-0.5 text-sm shadow-sm"}>
<%= link(gettext("Messages"), to: "#", phx_click: "list-tab", phx_value_tab: :posts) %>
</li>
@@ -586,7 +586,7 @@
<% end %>
<div
id="post-list"
class={"overflow-y-auto #{if Enum.count(@posts) > 0, do: 'max-h-full'} pb-5 px-5"}
class={"overflow-y-auto #{if Enum.count(@posts) > 0, do: 'max-h-full'} pb-5 pt-8 px-5"}
phx-update="append"
data-posts-nb={Enum.count(@posts)}
phx-hook="ScrollIntoDiv"
@@ -650,7 +650,13 @@
/>
<% end %>
<p class="text-xl"><%= post.body %></p>
<div class="flex flex-col">
<%= if post.name do %>
<p class="text-black text-sm font-semibold mr-2"><%= post.name %></p>
<% end %>
<p class="text-xl"><%= post.body %></p>
</div>
</div>
<%= if post.like_count > 0 || post.love_count > 0 || post.lol_count > 0 do %>
@@ -793,6 +799,14 @@
<ClaperWeb.Component.Input.check key={:chat_enabled} checked={@state.chat_enabled} />
<span><%= gettext("Enable messages") %></span>
</div>
<div class="flex space-x-2 items-center mt-3">
<ClaperWeb.Component.Input.check
key={:anonymous_chat_enabled}
checked={@state.anonymous_chat_enabled}
/>
<span><%= gettext("Enable anonymous messages") %></span>
</div>
</div>
</div>
</div>

View File

@@ -21,6 +21,21 @@ defmodule ClaperWeb.EventLive.PostComponent do
>
<img src="/images/icons/ellipsis-horizontal-white.svg" class="h-5" />
</button>
<%= if @post.name || is_a_leader(@post, @event, @leaders) do %>
<div class="inline-flex items-center">
<%= if @post.name do %>
<p class="text-white text-xs font-semibold mb-2 mr-2"><%= @post.name %></p>
<% end %>
<%= if is_a_leader(@post, @event, @leaders) do %>
<div class="inline-flex items-center space-x-1 justify-center px-3 py-0.5 rounded-full text-xs font-medium bg-supporting-yellow-100 text-supporting-yellow-800 mb-2">
<img src="/images/icons/star.svg" class="h-3" />
<span><%= gettext("Host") %></span>
</div>
<% end %>
</div>
<% end %>
<div
id={"post-menu-#{@post.id}"}
class="hidden absolute right-4 top-7 bg-white rounded-lg px-5 py-2"
@@ -60,10 +75,17 @@ defmodule ClaperWeb.EventLive.PostComponent do
</div>
<% else %>
<div class="px-4 pt-3 pb-8 rounded-b-lg rounded-tr-lg bg-white text-black relative z-0 break-all">
<%= if is_a_leader(@post, @event, @leaders) do %>
<div class="inline-flex items-center space-x-1 justify-center px-3 py-0.5 rounded-full text-xs font-medium bg-supporting-yellow-100 text-supporting-yellow-800 mb-2">
<img src="/images/icons/star.svg" class="h-3" />
<span><%= gettext("Host") %></span>
<%= if @post.name || is_a_leader(@post, @event, @leaders) do %>
<div class="inline-flex items-center">
<%= if @post.name do %>
<p class="text-black text-xs font-semibold mb-2 mr-2"><%= @post.name %></p>
<% end %>
<%= if is_a_leader(@post, @event, @leaders) do %>
<div class="inline-flex items-center space-x-1 justify-center px-3 py-0.5 rounded-full text-xs font-medium bg-supporting-yellow-100 text-supporting-yellow-800 mb-2">
<img src="/images/icons/star.svg" class="h-3" />
<span><%= gettext("Host") %></span>
</div>
<% end %>
</div>
<% end %>

View File

@@ -33,9 +33,16 @@ defmodule ClaperWeb.EventLive.Presenter do
)
end
host =
case get_connect_params(socket) do
nil -> ""
%{"host" => host} -> host
end
socket =
socket
|> assign(:attendees_nb, 1)
|> assign(:host, host)
|> assign(:event, event)
|> assign(:state, event.presentation_file.presentation_state)
|> assign(:posts, list_posts(socket, event.uuid))

View File

@@ -30,7 +30,7 @@
>
</div>
<span class="font-semibold mb-10 sm:text-3xl md:text-4xl lg:text-6xl">
<%= gettext("Or use the code:") %>
<%= gettext("Or go to %{url} and use the code:", url: @host) %>
</span>
<span class="font-semibold mb-10 sm:text-5xl md:text-6xl lg:text-8xl">
#<%= String.upcase(@event.code) %>
@@ -81,6 +81,9 @@
<%= for post <- @posts do %>
<div class={if post.__meta__.state == :deleted, do: "hidden"} id={"#{post.id}-post"}>
<div class="px-4 pb-2 pt-3 rounded-b-lg rounded-tr-lg bg-white shadow-md text-black break-all mt-4">
<%= if post.name do %>
<p class="text-gray-400 text-lg font-semibold mb-2 mr-2"><%= post.name %></p>
<% end %>
<p class="text-3xl"><%= post.body %></p>
<%= if post.like_count > 0 || post.love_count > 0 || post.lol_count > 0 do %>

View File

@@ -82,6 +82,7 @@ defmodule ClaperWeb.EventLive.Show do
|> assign(:poll_opt_saved, false)
|> assign(:event, event)
|> assign(:state, event.presentation_file.presentation_state)
|> assign(:nickname, "")
|> starting_soon_assigns(event)
|> get_current_poll(event)
|> get_current_form(event)
@@ -328,13 +329,14 @@ defmodule ClaperWeb.EventLive.Show do
post_params
|> Map.put("user_id", current_user.id)
|> Map.put("position", socket.assigns.state.position)
|> Map.put("name", socket.assigns.nickname)
case Posts.create_post(socket.assigns.event, post_params) do
{:ok, _post} ->
{:noreply, socket}
{:error, %Ecto.Changeset{} = changeset} ->
{:noreply, assign(socket, changeset: changeset)}
{:noreply, assign(socket, post_changeset: changeset)}
end
end
@@ -348,13 +350,32 @@ defmodule ClaperWeb.EventLive.Show do
post_params
|> Map.put("attendee_identifier", attendee_identifier)
|> Map.put("position", socket.assigns.state.position)
|> Map.put("name", socket.assigns.nickname)
case Posts.create_post(socket.assigns.event, post_params) do
{:ok, _post} ->
{:noreply, socket}
{:error, %Ecto.Changeset{} = changeset} ->
{:noreply, assign(socket, changeset: changeset)}
{:noreply, assign(socket, post_changeset: changeset)}
end
end
@impl true
def handle_event(
"save-nickname",
%{"post" => post_params},
socket
) do
changeset = Posts.Post.nickname_changeset(%Posts.Post{}, post_params)
case changeset.valid? do
true ->
{:noreply, socket |> assign(:nickname, post_params["name"])}
false ->
IO.inspect(changeset)
{:noreply, assign(socket, post_changeset: %{changeset | action: :insert})}
end
end
@@ -373,6 +394,13 @@ defmodule ClaperWeb.EventLive.Show do
{:noreply, socket}
end
@impl true
def handle_event("set-nickname", %{"nickname" => nickname}, socket) do
{:noreply,
socket
|> assign(:nickname, nickname)}
end
@impl true
def handle_event(
"react",
@@ -530,6 +558,16 @@ defmodule ClaperWeb.EventLive.Show do
)
end
def toggle_nickname_popup(js \\ %JS{}) do
js
|> JS.toggle(
to: "#nickname-popup",
out: "animate__animated animate__slideOutDown",
in: "animate__animated animate__slideInUp",
display: "flex"
)
end
defp add_post_like(socket, post_id, params) do
with post <- Posts.get_post!(post_id, [:event]),
{:ok, _} <- Posts.create_reaction(Map.merge(params, %{post: post})) do

View File

@@ -83,7 +83,7 @@
<% end %>
<div
class="flex flex-col space-y-4 px-5 pt-20 pb-24 lg:w-1/3 bg-black min-h-screen"
class="flex flex-col space-y-4 px-5 pt-20 pb-32 lg:w-1/3 bg-black min-h-screen"
id="post-list"
phx-update="append"
data-posts-nb={Enum.count(@posts)}
@@ -123,59 +123,199 @@
>
</div>
<%= if @state.chat_enabled do %>
<.form
:let={f}
for={@post_changeset}
id="post-form"
class="fixed bottom-12 w-full lg:w-1/3 lg:mx-auto"
phx-hook="PostForm"
phx-submit="save"
>
<div
class="rounded-full text-base px-4 py-2 mx-5 relative"
style="
background: rgb(17,134,213);
background: linear-gradient(333deg, rgba(17,134,213,0.4962359943977591) 0%, rgba(163,39,255,0.5046393557422969) 100%);
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
backdrop-filter: blur(11.5px);
-webkit-backdrop-filter: blur(11.5px);"
<div
id="nickname-popup"
class="hidden fixed bottom-0 h-36 w-full lg:w-1/3 lg:mx-auto bg-black text-white z-40 shadow-md rounded-md p-4 flex flex-col gap-y-2"
>
<%= if @state.anonymous_chat_enabled do %>
<button
phx-click={JS.push("set-nickname") |> toggle_nickname_popup()}
phx-value-nickname=""
phx-hook="EmptyNickname"
id="setAnonymous"
class="w-full bg-gray-900 text-left text-white px-3 py-2 rounded-md flex space-x-2 items-center"
>
<button class="absolute right-10 top-4 opacity-50" id="submitBtn">
<img src="/images/icons/send.svg" class="h-6" />
</button>
<svg
xmlns="http://www.w3.org/2000/svg"
class="w-5 h-5"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M3 11h18"></path>
<path d="M5 11v-4a3 3 0 0 1 3 -3h8a3 3 0 0 1 3 3v4"></path>
<path d="M7 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
<path d="M17 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
<path d="M10 17h4"></path>
</svg>
<span><%= gettext("Anonymous") %></span>
</button>
<% else %>
<button class="w-full bg-gray-900 opacity-50 text-left text-white px-3 py-2 rounded-md flex space-x-2 items-center cursor-default">
<svg
xmlns="http://www.w3.org/2000/svg"
class="w-5 h-5"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M3 11h18"></path>
<path d="M5 11v-4a3 3 0 0 1 3 -3h8a3 3 0 0 1 3 3v4"></path>
<path d="M7 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
<path d="M17 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
<path d="M10 17h4"></path>
</svg>
<span><%= gettext("Anonymous") %> (<%= gettext("disabled") %>)</span>
</button>
<% end %>
<div class="flex space-x-2 items-center">
<%= textarea(f, :body,
id: "postFormTA",
class:
"bg-transparent outline-none w-full text-white h-10 placeholder-white pt-3 resize-none pr-20 leading-4 overflow-y-hidden focus:overflow-y-auto",
placeholder: gettext("Ask, comment...")
) %>
</div>
</div>
<%= error_tag(f, :body) %>
<%= submit("Save", phx_disable_with: "Saving...", id: "hiddenSubmit", class: "hidden") %>
</.form>
<% else %>
<div id="post-form" class="fixed bottom-12 w-full lg:w-1/3 lg:mx-auto">
<div
class="rounded-full text-base px-4 py-2 mx-5 relative"
style="
background: rgb(17,134,213);
background: linear-gradient(333deg, rgba(17,134,213,0.4962359943977591) 0%, rgba(163,39,255,0.5046393557422969) 100%);
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
backdrop-filter: blur(11.5px);
-webkit-backdrop-filter: blur(11.5px);"
<button
id="nicknamepicker"
phx-click={toggle_nickname_popup()}
data-prompt={gettext("Enter your name")}
phx-hook="NicknamePicker"
class="w-full bg-gray-900 text-left text-white px-3 py-2 rounded-md flex space-x-2 items-center"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-5 h-5"
>
<div class="flex space-x-2 items-center">
<div class="opacity-50 bg-transparent outline-none w-full text-white h-10 placeholder-white pt-3 resize-none pr-20 leading-4 overflow-y-hidden focus:overflow-y-auto">
<%= gettext("Messages deactivated") %>
<path d="M5.433 13.917l1.262-3.155A4 4 0 017.58 9.42l6.92-6.918a2.121 2.121 0 013 3l-6.92 6.918c-.383.383-.84.685-1.343.886l-3.154 1.262a.5.5 0 01-.65-.65z" />
<path d="M3.5 5.75c0-.69.56-1.25 1.25-1.25H10A.75.75 0 0010 3H4.75A2.75 2.75 0 002 5.75v9.5A2.75 2.75 0 004.75 18h9.5A2.75 2.75 0 0017 15.25V10a.75.75 0 00-1.5 0v5.25c0 .69-.56 1.25-1.25 1.25h-9.5c-.69 0-1.25-.56-1.25-1.25v-9.5z" />
</svg>
<span><%= gettext("Use your name") %></span>
</button>
<button
phx-click={toggle_nickname_popup()}
class="w-full text-left text-primary-500 text-sm px-3 py-0 rounded-md"
>
<%= gettext("Close") %>
</button>
</div>
<div class="fixed bottom-12 w-full">
<%= if @state.chat_enabled do %>
<%= if !@state.anonymous_chat_enabled && (@nickname && @nickname == "") do %>
<.form
:let={f}
for={@post_changeset}
id="nickname-form"
class="w-full lg:w-1/3 lg:mx-auto"
phx-submit="save-nickname"
>
<div
class="rounded-lg text-base px-3 py-2 mx-5 relative"
style="
background: rgb(17,134,213);
background: linear-gradient(333deg, rgba(17,134,213,0.4962359943977591) 0%, rgba(163,39,255,0.5046393557422969) 100%);
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
backdrop-filter: blur(11.5px);
-webkit-backdrop-filter: blur(11.5px);"
>
<%= text_input(f, :name,
class:
"bg-transparent outline-none w-full text-white h-10 placeholder-white resize-none pr-20 leading-4 overflow-y-hidden focus:overflow-y-auto",
placeholder: gettext("Enter your name")
) %>
<p class="font-semibold text-sm">
<%= error_tag(f, :name) %>
</p>
<%= submit(gettext("Join"), class: "absolute right-5 top-2 p-2 bg-white rounded-md") %>
</div>
</.form>
<% else %>
<.form
:let={f}
for={@post_changeset}
id="post-form"
class="w-full lg:w-1/3 lg:mx-auto"
phx-hook="PostForm"
data-nickname={@nickname}
phx-submit="save"
>
<div
class="rounded-lg text-base px-3 py-2 mx-5 relative"
style="
background: rgb(17,134,213);
background: linear-gradient(333deg, rgba(17,134,213,0.4962359943977591) 0%, rgba(163,39,255,0.5046393557422969) 100%);
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
backdrop-filter: blur(11.5px);
-webkit-backdrop-filter: blur(11.5px);"
>
<div class="ml-0">
<a
href="#"
phx-click={toggle_nickname_popup()}
class="px-2 py-0.5 text-xs text-white rounded-full w-fit bg-gray-900 flex gap-x-1 items-center"
>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-4 h-4"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M19.5 8.25l-7.5 7.5-7.5-7.5"
/>
</svg>
<%= if @nickname && @nickname == "" do %>
<span><%= gettext("Anonymous") %></span>
<% else %>
<span><%= @nickname %></span>
<% end %>
</a>
</div>
<button class="absolute right-5 top-6 opacity-50" id="submitBtn">
<img src="/images/icons/send.svg" class="h-6" />
</button>
<div class="flex space-x-2 items-center">
<%= textarea(f, :body,
id: "postFormTA",
class:
"bg-transparent outline-none w-full text-white h-10 placeholder-white pt-3 resize-none pr-20 leading-4 overflow-y-hidden focus:overflow-y-auto",
placeholder: gettext("Ask, comment...")
) %>
</div>
</div>
<%= submit("Save", phx_disable_with: "Saving...", id: "hiddenSubmit", class: "hidden") %>
</.form>
<% end %>
<% else %>
<div id="post-form" class="w-full lg:w-1/3 lg:mx-auto">
<div
class="rounded-lg text-base px-4 py-2 mx-5 relative"
style="
background: rgb(17,134,213);
background: linear-gradient(333deg, rgba(17,134,213,0.4962359943977591) 0%, rgba(163,39,255,0.5046393557422969) 100%);
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
backdrop-filter: blur(11.5px);
-webkit-backdrop-filter: blur(11.5px);"
>
<div class="flex space-x-2 items-center">
<div class="opacity-50 bg-transparent outline-none w-full text-white h-10 placeholder-white pt-3 resize-none pr-20 leading-4 overflow-y-hidden focus:overflow-y-auto">
<%= gettext("Messages deactivated") %>
</div>
</div>
</div>
</div>
</div>
<% end %>
<% end %>
</div>
<div class="flex space-x-6 fixed justify-center bottom-3 w-full lg:w-1/3 lg:mx-auto">
<a

View File

@@ -277,7 +277,13 @@
/>
<% end %>
<p class="text-xl"><%= post.body %></p>
<div class="flex flex-col">
<%= if post.name do %>
<p class="text-black text-sm font-semibold mr-2"><%= post.name %></p>
<% end %>
<p class="text-xl"><%= post.body %></p>
</div>
</div>
<%= if post.like_count > 0 || post.love_count > 0 || post.lol_count > 0 do %>

View File

@@ -1,7 +1,7 @@
defmodule Claper.MixProject do
use Mix.Project
@version "1.4.2"
@version "1.5.0"
def project do
[

View File

@@ -24,7 +24,7 @@
"finch": {:hex, :finch, "0.16.0", "40733f02c89f94a112518071c0a91fe86069560f5dbdb39f9150042f44dcfb1a", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f660174c4d519e5fec629016054d60edd822cdfe2b7270836739ac2f97735ec5"},
"floki": {:hex, :floki, "0.34.2", "5fad07ef153b3b8ec110b6b155ec3780c4b2c4906297d0b4be1a7162d04a7e02", [:mix], [], "hexpm", "26b9d50f0f01796bc6be611ca815c5e0de034d2128e39cc9702eee6b66a4d1c8"},
"gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"},
"gettext": {:hex, :gettext, "0.22.1", "e7942988383c3d9eed4bdc22fc63e712b655ae94a672a27e4900e3d4a2c43581", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "ad105b8dab668ee3f90c0d3d94ba75e9aead27a62495c101d94f2657a190ac5d"},
"gettext": {:hex, :gettext, "0.22.3", "c8273e78db4a0bb6fba7e9f0fd881112f349a3117f7f7c598fa18c66c888e524", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "935f23447713954a6866f1bb28c3a878c4c011e802bcd68a726f5e558e4b64bd"},
"hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~>2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"},
"hashids": {:hex, :hashids, "2.1.0", "aabbcc4f9fa0b460cc6ef629f5bcbc35e7e87b382fee79f9c50be40b86574288", [:mix], [], "hexpm", "172163b1642d415881ef1c6e1f1be12d4e92b0711d5bbbd8854f82a1ce32d60b"},
"honeybadger": {:hex, :honeybadger, "0.18.1", "f61f71147d9e6ce8cdc6114e5df5eed4d2daa32dd15308267a1dacf5fa88b1e9", [:mix], [{:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:hackney, "~> 1.1", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix, ">= 1.0.0 and < 2.0.0", [hex: :phoenix, repo: "hexpm", optional: true]}, {:plug, ">= 1.0.0 and < 2.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "693e14b1b7d254dd75f977240c208d6b69cc1cbdd515bdd5b8b1738a1baf5fd5"},

View File

@@ -0,0 +1,958 @@
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: POEditor.com\n"
"Project-Id-Version: Claper\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: lib/claper_web/live/user_settings_live/show.ex:48
#: lib/claper_web/live/user_settings_live/show.html.heex:5
#: lib/claper_web/templates/layout/_user_menu.html.heex:2
#, elixir-autogen, elixir-format
msgid "Settings"
msgstr "Einstellungen"
#: lib/claper_web/live/event_live/manage.ex:455
#: lib/claper_web/live/form_live/form_component.html.heex:37
#: lib/claper_web/live/user_settings_live/show.html.heex:34
#: lib/claper_web/templates/user_registration/new.html.heex:34
#: lib/claper_web/templates/user_session/new.html.heex:47
#, elixir-autogen, elixir-format
msgid "Email"
msgstr "Email"
#: lib/claper_web/templates/user_registration/new.html.heex:12
#, elixir-autogen, elixir-format
msgid "Join the Claper experience"
msgstr "Treten Sie den Claper Experience bei"
#: lib/claper_web/templates/user_registration/new.html.heex:24
#, elixir-autogen, elixir-format
msgid "Oops, check that all fields are filled in correctly."
msgstr "Oops, verifizieren Sie alle Felder."
#: lib/claper_web/live/user_settings_live/show.html.heex:108
#: lib/claper_web/live/user_settings_live/show.html.heex:121
#, elixir-autogen, elixir-format
msgid "Change"
msgstr "Ändern"
#: lib/claper_web/live/event_live/event_form_component.html.heex:239
#, elixir-autogen, elixir-format
msgid "Code"
msgstr "Kode"
#: lib/claper_web/live/user_settings_live/show.html.heex:103
#, elixir-autogen, elixir-format
msgid "Email address"
msgstr "Email Adresse"
#: lib/claper_web/templates/layout/_user_menu.html.heex:8
#, elixir-autogen, elixir-format
msgid "Logout"
msgstr "Ausloggen"
#: lib/claper_web/live/user_settings_live/show.html.heex:93
#, elixir-autogen, elixir-format
msgid "Personal informations"
msgstr "Persönliche Informationen"
#: lib/claper_web/templates/user_registration/confirm.html.heex:13
#, elixir-autogen, elixir-format
msgid "We already sent you an email to login, please retry in 5 minutes."
msgstr "Wir haben Ihnen gerade ein Email zum einloggen geschickt, versuchen Sie wieder in 5 Minuten."
#: lib/claper_web/templates/user_registration/confirm.html.heex:16
#, elixir-autogen, elixir-format
msgid "We sent you an email at"
msgstr "Wir senden ein Email an"
#: lib/claper_web/live/user_settings_live/show.html.heex:96
#, elixir-autogen, elixir-format
msgid "Your personal informations only visible by you"
msgstr "Ihre persönliche Informationen sind nur sichtbar bei Ihnen"
#: lib/claper_web/live/event_live/show.html.heex:381
#, elixir-autogen, elixir-format
msgid "days"
msgstr "tage"
#: lib/claper_web/live/event_live/show.html.heex:387
#, elixir-autogen, elixir-format
msgid "hours"
msgstr "uhr"
#: lib/claper_web/live/event_live/show.html.heex:393
#, elixir-autogen, elixir-format
msgid "minutes"
msgstr "minuten"
#: lib/claper_web/live/event_live/show.html.heex:112
#, elixir-autogen, elixir-format
msgid "Be the first to react !"
msgstr "Seien Sie die erste zu reagieren !"
#: lib/claper_web/live/event_live/event_card_component.ex:98
#: lib/claper_web/live/event_live/join.ex:42
#: lib/claper_web/live/event_live/join.html.heex:106
#: lib/claper_web/live/event_live/show.html.heex:233
#, elixir-autogen, elixir-format
msgid "Join"
msgstr "Teilnehmen"
#: lib/claper_web/live/event_live/index.ex:82
#: lib/claper_web/live/event_live/join.html.heex:26
#: lib/claper_web/live/event_live/join.html.heex:47
#, elixir-autogen, elixir-format
msgid "Dashboard"
msgstr "Dashboard"
#: lib/claper_web/live/event_live/post_component.ex:33
#: lib/claper_web/live/event_live/post_component.ex:86
#, elixir-autogen, elixir-format
msgid "Host"
msgstr "Host"
#: lib/claper_web/live/event_live/show.html.heex:399
#, elixir-autogen, elixir-format
msgid "seconds"
msgstr "sekunden"
#: lib/claper_web/live/event_live/index.html.heex:61
#, elixir-autogen, elixir-format
msgid "Create your first presentation"
msgstr "Erstellen Ihre erste Vorstellung"
#: lib/claper_web/live/event_live/event_card_component.ex:50
#: lib/claper_web/live/event_live/manage.html.heex:80
#, elixir-autogen, elixir-format
msgid "Finish on"
msgstr "Endet um"
#: lib/claper_web/live/event_live/event_card_component.ex:30
#, elixir-autogen, elixir-format
msgid "Finished"
msgstr "Beendet"
#: lib/claper_web/live/event_live/event_card_component.ex:62
#, elixir-autogen, elixir-format
msgid "Finished on"
msgstr "Beendet um"
#: lib/claper_web/live/event_live/event_card_component.ex:20
#, elixir-autogen, elixir-format
msgid "In progress"
msgstr "Laufend"
#: lib/claper_web/live/event_live/event_card_component.ex:25
#, elixir-autogen, elixir-format
msgid "Incoming"
msgstr "Kommende"
#: lib/claper_web/live/event_live/show.html.heex:26
#, elixir-autogen, elixir-format
msgid "Leave"
msgstr "Verlassen"
#: lib/claper_web/live/event_live/index.html.heex:16
#, elixir-autogen, elixir-format
msgid "My presentations"
msgstr "Meine Vorstellungen"
#: lib/claper_web/live/event_live/event_form_component.html.heex:228
#, elixir-autogen, elixir-format
msgid "Name of your presentation"
msgstr "Name Ihrer Vorstellung"
#: lib/claper_web/live/event_live/presenter.html.heex:21
#: lib/claper_web/live/event_live/show.html.heex:408
#, elixir-autogen, elixir-format
msgid "Scan to interact in real-time"
msgstr "Scannen um in Realzeit zu reagieren"
#: lib/claper_web/live/event_live/event_card_component.ex:56
#, elixir-autogen, elixir-format
msgid "Starting on"
msgstr "Startet um"
#: lib/claper_web/live/event_live/event_form_component.ex:207
#, elixir-autogen, elixir-format
msgid "Updated successfully"
msgstr "Richtig aktualisiert"
#: lib/claper_web/live/event_live/event_form_component.html.heex:249
#, elixir-autogen, elixir-format
msgid "When your presentation will be available ?"
msgstr "Wann wird Ihre Vorstellung verfügbar sein ?"
#: lib/claper_web/live/event_live/join.html.heex:72
#, elixir-autogen, elixir-format
msgid "Return to your last presentation"
msgstr "Zurück zum letzten Vorstellung"
#: lib/claper_web/templates/user_session/new.html.heex:22
#, elixir-autogen, elixir-format
msgid "It's time to empower your presentations."
msgstr "Es ist Zeit, Ihre Vorstellungen zu beleben."
#: lib/claper_web/templates/error/404.html.heex:44
#: lib/claper_web/templates/error/500.html.heex:45
#: lib/claper_web/templates/user_registration/confirm.html.heex:28
#, elixir-autogen, elixir-format
msgid "Return to home"
msgstr "Zurück zum Empfang"
#: lib/claper_web/live/event_live/event_form_component.ex:179
#, elixir-autogen, elixir-format
msgid "Created successfully"
msgstr "Erstellt mit Erfolg"
#: lib/claper_web/live/event_live/manage.ex:23
#: lib/claper_web/live/event_live/presenter.ex:21
#: lib/claper_web/live/event_live/show.ex:24
#, elixir-autogen, elixir-format
msgid "Presentation doesn't exist"
msgstr "Vorstellung existiert nicht"
#: lib/claper_web/live/event_live/event_card_component.ex:109
#: lib/claper_web/live/event_live/event_card_component.ex:129
#: lib/claper_web/live/event_live/form_component.ex:96
#: lib/claper_web/live/event_live/index.ex:65
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr "Ändern"
#: lib/claper_web/live/event_live/event_form_component.html.heex:18
#: lib/claper_web/live/event_live/event_form_component.html.heex:25
#: lib/claper_web/live/event_live/index.ex:71
#: lib/claper_web/live/event_live/index.html.heex:40
#: lib/claper_web/live/form_live/form_component.html.heex:98
#: lib/claper_web/live/poll_live/form_component.html.heex:94
#, elixir-autogen, elixir-format
msgid "Create"
msgstr "Erstellen"
#: lib/claper_web/live/event_live/event_card_component.ex:171
#: lib/claper_web/live/event_live/event_form_component.html.heex:30
#: lib/claper_web/live/event_live/manage.html.heex:631
#: lib/claper_web/live/event_live/manage.html.heex:731
#: lib/claper_web/live/event_live/post_component.ex:44
#: lib/claper_web/live/event_live/post_component.ex:116
#: lib/claper_web/live/form_live/form_component.html.heex:103
#: lib/claper_web/live/poll_live/form_component.html.heex:99
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr "Erledigen"
#: lib/claper_web/live/event_live/event_form_component.html.heex:17
#: lib/claper_web/live/event_live/event_form_component.html.heex:24
#: lib/claper_web/live/form_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:95
#: lib/claper_web/live/user_settings_live/show.html.heex:38
#: lib/claper_web/live/user_settings_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Save"
msgstr "Validieren"
#: lib/claper_web/live/user_settings_live/show.ex:69
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr "Ein Link zum Ihren Emailbestätigung war zum Ihre neue Email-Adresse abgeschickt."
#: lib/claper_web/live/user_settings_live/show.ex:33
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr "Änder die Email-Adresse Ihre Konto"
#: lib/claper_web/live/user_settings_live/show.ex:30
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr "Ihre Email ändern"
#: lib/claper_web/notifiers/user_notifier.ex:12
#: lib/claper_web/templates/user_notifier/magic.html.heex:17
#, elixir-autogen, elixir-format
msgid "Connect to Claper"
msgstr "Einloggen zu Claper"
#: lib/claper_web/templates/user_notifier/magic.html.heex:29
#, elixir-autogen, elixir-format
msgid "ACCESS TO MY ACCOUNT"
msgstr "ZUGANG MEINEM KONTO"
#: lib/claper_web/notifiers/user_notifier.ex:34
#, elixir-autogen, elixir-format
msgid "Update email instructions"
msgstr "Email-Einweisung ändern"
#: lib/claper_web/templates/user_notifier/change.html.heex:29
#, elixir-autogen, elixir-format
msgid "CONFIRM EMAIL"
msgstr "EMAIL BESTÄTIGEN"
#: lib/claper_web/templates/user_notifier/change.html.heex:17
#, elixir-autogen, elixir-format
msgid "Confirm email"
msgstr "Email bestätigen"
#: lib/claper_web/templates/user_notifier/change.html.heex:32
#: lib/claper_web/templates/user_notifier/magic.html.heex:32
#, elixir-autogen, elixir-format
msgid "If you didn't create an account with us, please ignore this."
msgstr "Wenn sie dieses Konto mit uns nicht erstellt haben, bitte springen Sie diesen Nachricht über."
#: lib/claper_web/templates/user_notifier/magic.html.heex:22
#, elixir-autogen, elixir-format
msgid "You can log into your account by clicking here."
msgstr "Sie können einloggen, wenn Sie hier klicken"
#: lib/claper_web/live/event_live/event_form_component.html.heex:34
#: lib/claper_web/live/event_live/post_component.ex:49
#: lib/claper_web/live/event_live/post_component.ex:121
#, elixir-autogen, elixir-format
msgid "Are you sure?"
msgstr "Sind Sie sicher ?"
#: lib/claper_web/live/event_live/event_form_component.html.heex:149
#, elixir-autogen, elixir-format
msgid "Presentation attached"
msgstr "Vorstellung anhängt"
#: lib/claper_web/live/event_live/event_form_component.html.heex:109
#, elixir-autogen, elixir-format
msgid "Presentation uploaded"
msgstr "Vorstellung hochgeladet"
#: lib/claper_web/live/event_live/event_form_component.html.heex:120
#: lib/claper_web/live/event_live/event_form_component.html.heex:198
#: lib/claper_web/live/event_live/event_form_component.html.heex:323
#: lib/claper_web/live/event_live/event_form_component.html.heex:346
#, elixir-autogen, elixir-format
msgid "Remove"
msgstr "Erledigen"
#: lib/claper_web/live/event_live/event_form_component.html.heex:45
#: lib/claper_web/live/event_live/event_form_component.html.heex:130
#, elixir-autogen, elixir-format
msgid "Select your presentation"
msgstr "Ihre Vorstellung wählen"
#: lib/claper_web/live/event_live/event_form_component.html.heex:72
#, elixir-autogen, elixir-format
msgid "Upload a file"
msgstr "Datei hochladen"
#: lib/claper_web/live/event_live/event_form_component.html.heex:76
#, elixir-autogen, elixir-format
msgid "or drag and drop"
msgstr "oder drag and drop"
#: lib/claper_web/live/event_live/event_form_component.ex:226
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr "Sie haben einen falschen Dateitype auswählen"
#: lib/claper_web/live/event_live/event_form_component.ex:225
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr "Ihrer Datei ist zu groẞ"
#: lib/claper_web/live/event_live/event_form_component.html.heex:159
#, elixir-autogen, elixir-format
msgid "Change file"
msgstr "Datei ändern"
#: lib/claper_web/live/event_live/event_form_component.html.heex:185
#, elixir-autogen, elixir-format
msgid "Presentation replaced"
msgstr "Vorstellung ersetzt"
#: lib/claper_web/live/event_live/manage.html.heex:256
#, elixir-autogen, elixir-format
msgid "Edit poll"
msgstr "Umfrage ändern"
#: lib/claper_web/live/event_live/manage.html.heex:255
#, elixir-autogen, elixir-format
msgid "New poll"
msgstr "Neue Umfrage"
#: lib/claper_web/live/poll_live/form_component.html.heex:14
#, elixir-autogen, elixir-format
msgid "Title of your poll"
msgstr "Name Ihrer Umfrage"
#: lib/claper_web/live/event_live/event_form_component.ex:227
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr "Hochladung scheitert"
#: lib/claper_web/live/event_live/manage.html.heex:176
#, elixir-autogen, elixir-format
msgid "Add poll to know opinion of your public."
msgstr "Umfrage hinzufügen um die Meinung Ihrem Publikum zu wissen"
#: lib/claper_web/live/event_live/manage.html.heex:174
#: lib/claper_web/live/event_live/manage.html.heex:395
#, elixir-autogen, elixir-format
msgid "Poll"
msgstr "Umfrage"
#: lib/claper_web/live/poll_live/form_component.html.heex:35
#, elixir-format, ex-autogen
msgid "Choice %{count}"
msgid_plural "Choice %{count}"
msgstr[0] "Wahl %{count}"
msgstr[1] "Wähle %{count}"
#: lib/claper_web/live/event_live/poll_component.ex:47
#, elixir-autogen, elixir-format
msgid "Current poll"
msgstr "Aktuelle Umfrage"
#: lib/claper_web/live/event_live/poll_component.ex:28
#, elixir-autogen, elixir-format
msgid "See current poll"
msgstr "Sehen aktuelle Umfrage"
#: lib/claper_web/live/event_live/poll_component.ex:107
#: lib/claper_web/live/event_live/poll_component.ex:115
#, elixir-autogen, elixir-format
msgid "Vote"
msgstr "Wählen"
#: lib/claper_web/live/event_live/index.html.heex:70
#, elixir-autogen, elixir-format
msgid "Invited presentations"
msgstr "Vorstellung eingeladet"
#: lib/claper_web/live/event_live/event_form_component.html.heex:313
#: lib/claper_web/live/event_live/event_form_component.html.heex:330
#, elixir-autogen, elixir-format
msgid "User email address"
msgstr "Benutzer Email-Adresse"
#: lib/claper_web/live/event_live/event_card_component.ex:90
#, elixir-autogen, elixir-format
msgid "Present/Customize"
msgstr "Vorstellen/Ändern"
#: lib/claper_web/live/event_live/manage.html.heex:408
#: lib/claper_web/live/event_live/manage.html.heex:484
#, elixir-autogen, elixir-format
msgid "Active"
msgstr "Aktiv"
#: lib/claper_web/live/event_live/event_form_component.html.heex:164
#, elixir-autogen, elixir-format
msgid "Changing your file will remove all interaction elements like polls associated."
msgstr "Ändern Ihrem Datei wird alle verbindete Interaktionen wie Umfrage erledigen."
#: lib/claper_web/live/event_live/manage.html.heex:584
#, elixir-autogen, elixir-format
msgid "Messages from attendees will appear here."
msgstr "Nachrichte von Teilnehmer wird hier erscheinen."
#: lib/claper_web/live/event_live/manage.html.heex:770
#, elixir-autogen, elixir-format
msgid "On screen settings"
msgstr "Auf Bildschirm Einstellungen"
#: lib/claper_web/live/event_live/event_card_component.ex:139
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr "Prozess Ihrem Datei..."
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#, elixir-autogen, elixir-format
msgid "This will delete all responses associated and the poll itself, are you sure?"
msgstr "Es wird alle verbindete Antworte und die Umfrage selbst erledigen, Sind Sie sicher?"
#: lib/claper_web/live/event_live/manage.html.heex:112
#, elixir-autogen, elixir-format
msgid "Start"
msgstr "Anfangen"
#: lib/claper_web/live/event_live/manage.html.heex:88
#, elixir-autogen, elixir-format
msgid "Press <strong>F</strong> in the presentation window to enable fullscreen"
msgstr "Drücken <strong>F</strong> in dem Vorstellungfenster, um Vollbild zulassen"
#: lib/claper_web/live/event_live/show.html.heex:292
#, elixir-autogen, elixir-format
msgid "Ask, comment..."
msgstr "Fragen, kommentieren.."
#: lib/claper_web/live/event_live/manage.html.heex:556
#: lib/claper_web/live/stat_live/index.html.heex:71
#, elixir-autogen, elixir-format
msgid "Messages"
msgstr "Nachrichte"
#: lib/claper_web/live/event_live/manage.html.heex:416
#: lib/claper_web/live/event_live/manage.html.heex:492
#, elixir-autogen, elixir-format
msgid "Set active"
msgstr "Zum aktiv ändern"
#: lib/claper_web/live/event_live/event_form_component.html.heex:295
#, elixir-autogen, elixir-format
msgid "Add facilitator"
msgstr "Moderator hinzufügen"
#: lib/claper_web/templates/error/404.html.heex:40
#, elixir-autogen, elixir-format
msgid "Oops, page doesn't exist."
msgstr "Hoppla, Seite existiert nicht."
#: lib/claper_web/templates/error/500.html.heex:40
#, elixir-autogen, elixir-format
msgid "The site is under maintenance, we'll be back very soon!"
msgstr "Die Website ist , wir werden bald zurück!"
#: lib/claper_web/live/event_live/event_form_component.html.heex:275
#, elixir-autogen, elixir-format
msgid "Facilitators can present and manage interactions"
msgstr "Moderatoren können vorstellen und Interaktionen führen"
#: lib/claper_web/templates/user_notifier/change.html.heex:42
#: lib/claper_web/templates/user_notifier/magic.html.heex:42
#, elixir-autogen, elixir-format
msgid "If youre having trouble with the button above, copy and paste the URL below into your web browser"
msgstr "When "
#: lib/claper_web/templates/user_notifier/change.html.heex:22
#, elixir-autogen, elixir-format
msgid "You can change your email by visiting the URL below"
msgstr "Sie können Ihre E-mail ändern bei klicken auf den URL unten"
#: lib/claper_web/live/event_live/manage.html.heex:525
#, elixir-autogen, elixir-format
msgid "Add interaction"
msgstr "Interaktion hinzufügen"
#: lib/claper_web/live/event_live/manage.html.heex:607
#: lib/claper_web/live/event_live/manage.html.heex:622
#, elixir-autogen, elixir-format
msgid "Blocking this user will delete all his messages and he will not be able to join again, confirm ?"
msgstr "Durch das Blockieren dieses Benutzers werden alle seine Nachrichten gelöscht und er kann nicht mehr beitreten. Bestätigen?"
#: lib/claper_web/live/event_live/show.ex:50
#: lib/claper_web/live/event_live/show.ex:197
#: lib/claper_web/live/event_live/show.ex:212
#, elixir-autogen, elixir-format
msgid "You have been banned from this event"
msgstr "Sie wurden von dieser Veranstaltung ausgeschlossen"
#: lib/claper_web/live/event_live/manage.html.heex:601
#: lib/claper_web/live/event_live/manage.html.heex:616
#, elixir-autogen, elixir-format
msgid "Ban"
msgstr "Verbot"
#: lib/claper_web/templates/user_registration/confirm.html.heex:18
#, elixir-autogen, elixir-format
msgid ", click on the provided link to connect (check your spam !)"
msgstr ", klicken Sie auf den bereitgestellten Link, um eine Verbindung herzustellen (überprüfen Sie Ihren Spam!)"
#: lib/claper_web/templates/user_notifier/welcome.html.heex:29
#, elixir-autogen, elixir-format
msgid "<span style='font-weight: 700'>Export your current presentation</span> to PDF from your favorite slide presentation software (PowerPoint, etc)"
msgstr "<span style='font-weight: 700'>Exportieren Sie Ihre aktuelle Präsentation</span> aus Ihrer bevorzugten Folienpräsentationssoftware (PowerPoint usw.) als PDF."
#: lib/claper_web/templates/user_notifier/welcome.html.heex:50
#, elixir-autogen, elixir-format
msgid "<span style='font-weight: 700'>Wait few minutes</span> for your file to be processed"
msgstr "<span style='font-weight: 700'>Warten Sie einige Minuten</span>, bis Ihre Datei verarbeitet wird"
#: lib/claper_web/templates/user_notifier/welcome.html.heex:43
#, elixir-autogen, elixir-format
msgid "Choose <span style='font-weight: 700'>a name</span> for your event, <span style='font-weight: 700'>a code</span> for your attendees to join and <span style='font-weight: 700'>dates when your attendees could start interacting</span>"
msgstr "Wählen Sie <span style='font-weight: 700'>einen Namen</span> für Ihre Veranstaltung, <span style='font-weight: 700'>einen Code</span> für den Beitritt Ihrer Teilnehmer und <span style ='font-weight: 700'>Daten, an denen Ihre Teilnehmer mit der Interaktion beginnen könnten</span>"
#: lib/claper_web/templates/user_notifier/welcome.html.heex:64
#, elixir-autogen, elixir-format
msgid "Click <span style='font-weight: 700'>Start</span> to open your presentation and move the window on the big screen"
msgstr "Klicken Sie auf <span style='font-weight: 700'>Anfangen</span>, um Ihre Präsentation zu öffnen und das Fenster auf dem großen Bildschirm zu verschieben"
#: lib/claper_web/templates/user_notifier/welcome.html.heex:57
#, elixir-autogen, elixir-format
msgid "Click on <span style='font-weight: 700'>Present/Customize</span> to add interaction on your slides"
msgstr "Klicken Sie auf <span style='font-weight: 700'>Präsentieren/Anpassen</span>, um Ihren Folien Interaktion hinzuzufügen"
#: lib/claper_web/templates/user_notifier/welcome.html.heex:22
#, elixir-autogen, elixir-format
msgid "Congrats! You've taken the first step to improving your presentations. Here are the next steps to create step up your presentations with Claper:"
msgstr "Herzlichen Glückwunsch! Sie haben den ersten Schritt zur Verbesserung Ihrer Präsentationen getan. Hier sind die nächsten Schritte, um Ihre Präsentationen mit Claper zu verbessern:"
#: lib/claper_web/templates/user_notifier/welcome.html.heex:69
#, elixir-autogen, elixir-format
msgid "Enjoy ! ✨"
msgstr "Genießen ! ✨"
#: lib/claper_web/templates/user_registration/confirm.html.heex:20
#, elixir-autogen, elixir-format
msgid "We sent you an email, click on the provided link to connect (check your spam !)"
msgstr "Wir haben Ihnen eine E-Mail gesendet. Klicken Sie auf den bereitgestellten Link, um eine Verbindung herzustellen (überprüfen Sie Ihren Spam!)"
#: lib/claper_web/templates/user_notifier/welcome.html.heex:17
#, elixir-autogen, elixir-format
msgid "Welcome !"
msgstr "Willkommen !"
#: lib/claper_web/templates/user_notifier/welcome.html.heex:36
#, elixir-autogen, elixir-format
msgid "Click on the <span style='font-weight: 700'>create button</span> on your dashboard"
msgstr "Klicken Sie in Ihrem Dashboard auf die Schaltfläche <span style='font-weight: 700'>Erstellen</span>"
#: lib/claper_web/notifiers/user_notifier.ex:23
#, elixir-autogen, elixir-format
msgid "Next steps to boost your presentations"
msgstr "Nächste Schritte zur Verbesserung Ihrer Präsentationen"
#: lib/claper_web/live/stat_live/index.html.heex:78
#, elixir-autogen, elixir-format
msgid "from %{count} people"
msgid_plural "from %{count} peoples"
msgstr[0] "von %{count} Personen"
msgstr[1] "von %{count} Personen"
#: lib/claper_web/live/stat_live/index.html.heex:115
#, elixir-autogen, elixir-format
msgid "from %{count} poll"
msgid_plural "from %{count} polls"
msgstr[0] "von %{count} Umfrage"
msgstr[1] "von %{count} Umfragen"
#: lib/claper_web/live/stat_live/index.html.heex:108
#, elixir-autogen, elixir-format
msgid "Average voters"
msgstr "Durchschnittliche Wähler"
#: lib/claper_web/live/stat_live/index.html.heex:15
#, elixir-autogen, elixir-format
msgid "Event"
msgstr "Fall"
#: lib/claper_web/live/stat_live/index.html.heex:158
#, elixir-autogen, elixir-format
msgid "Interactions history"
msgstr "Interaktionsgeschichte"
#: lib/claper_web/live/stat_live/index.html.heex:260
#, elixir-autogen, elixir-format
msgid "No messages has been sent"
msgstr "Es wurden keine Nachrichten gesendet"
#: lib/claper_web/live/event_live/event_card_component.ex:166
#, elixir-autogen, elixir-format
msgid "Report"
msgstr "Bericht"
#: lib/claper_web/live/event_live/event_card_component.ex:177
#, 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 ?"
#: lib/claper_web/live/stat_live/index.html.heex:45
#, elixir-autogen, elixir-format
msgid "attendee"
msgid_plural "attendees"
msgstr[0] "teilnehmer"
msgstr[1] "teilnehmer"
#: lib/claper_web/live/stat_live/index.html.heex:38
#, elixir-autogen, elixir-format
msgid "Audience peak"
msgstr "Publikumsspitze"
#: lib/claper_web/live/stat_live/index.html.heex:146
#, elixir-autogen, elixir-format
msgid "Engagement rate"
msgstr "Engagement-Rate"
#: lib/claper_web/live/event_live/event_card_component.ex:119
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr "Fehler beim Verarbeiten der Datei"
#: lib/claper_web/live/event_live/event_card_component.ex:71
#, elixir-autogen, elixir-format
msgid "Error when processing the new file"
msgstr "Fehler beim Verarbeiten der neuen Datei"
#: lib/claper_web/live/event_live/join.html.heex:23
#: lib/claper_web/live/event_live/join.html.heex:44
#, elixir-autogen, elixir-format
msgid "About"
msgstr "Um"
#: lib/claper_web/live/event_live/join.html.heex:32
#: lib/claper_web/live/event_live/join.html.heex:53
#: lib/claper_web/templates/user_session/new.html.heex:66
#, elixir-autogen, elixir-format
msgid "Login"
msgstr "Anmeldung"
#: lib/claper_web/templates/user_session/new.html.heex:25
#, elixir-autogen, elixir-format
msgid "Connect to your account"
msgstr "Verbinden Sie sich mit Ihrem Konto"
#: lib/claper_web/live/event_live/show.html.heex:417
#, elixir-autogen, elixir-format
msgid "Or use the code:"
msgstr "Oder verwenden Sie den Code:"
#: lib/claper_web/templates/user_registration/new.html.heex:51
#: lib/claper_web/templates/user_session/new.html.heex:73
#, elixir-autogen, elixir-format
msgid "Create account"
msgstr "Benutzerkonto erstellen"
#: lib/claper_web/live/user_settings_live/show.html.heex:116
#: lib/claper_web/templates/user_registration/new.html.heex:42
#: lib/claper_web/templates/user_session/new.html.heex:57
#, elixir-autogen, elixir-format
msgid "Password"
msgstr "Passwort"
#: lib/claper_web/templates/user_session/new.html.heex:45
#, elixir-autogen, elixir-format
msgid "Your email address"
msgstr "Ihre E-Mail-Adresse"
#: lib/claper_web/templates/user_session/new.html.heex:55
#, elixir-autogen, elixir-format
msgid "Your password"
msgstr "Ihr Passwort"
#: lib/claper_web/live/user_settings_live/show.ex:42
#, 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."
#: lib/claper_web/live/user_settings_live/show.html.heex:70
#, elixir-autogen, elixir-format
msgid "Current password"
msgstr "Aktuelles Passwort"
#: lib/claper_web/live/user_settings_live/show.html.heex:76
#, elixir-autogen, elixir-format
msgid "New password"
msgstr "Neues Kennwort"
#: lib/claper_web/live/user_settings_live/show.ex:39
#, elixir-autogen, elixir-format
msgid "Update your password"
msgstr "Aktualisieren Sie Ihr Passwort"
#: lib/claper_web/live/user_settings_live/show.ex:91
#, elixir-autogen, elixir-format
msgid "Your password has been updated."
msgstr "Dein Passwort wurde aktualisiert."
#: lib/claper_web/live/form_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "Field %{count}"
msgid_plural "Field %{count}"
msgstr[0] "Feld %{count}"
msgstr[1] "Feld %{count}"
#: lib/claper_web/live/event_live/manage.html.heex:213
#, elixir-autogen, elixir-format
msgid "Add form to collect data from your public."
msgstr "Fügen Sie ein Formular hinzu, um Daten von Ihrer Öffentlichkeit zu sammeln."
#: lib/claper_web/live/event_live/form_component.ex:51
#, elixir-autogen, elixir-format
msgid "Current form"
msgstr "Aktuelle Form"
#: lib/claper_web/live/event_live/manage.html.heex:277
#, elixir-autogen, elixir-format
msgid "Edit form"
msgstr "Formular bearbeiten"
#: lib/claper_web/live/event_live/manage.html.heex:211
#: lib/claper_web/live/event_live/manage.html.heex:471
#: lib/claper_web/live/stat_live/index.html.heex:215
#, elixir-autogen, elixir-format
msgid "Form"
msgstr "Form"
#: lib/claper_web/live/event_live/manage.html.heex:559
#, elixir-autogen, elixir-format
msgid "Form submissions"
msgstr "Formulareinreichungen"
#: lib/claper_web/live/event_live/manage.html.heex:711
#, elixir-autogen, elixir-format
msgid "Form submissions from attendees will appear here."
msgstr "Formulareinsendungen der Teilnehmer werden hier angezeigt."
#: lib/claper_web/live/event_live/manage.ex:454
#, elixir-autogen, elixir-format
msgid "Name"
msgstr "Name"
#: lib/claper_web/live/event_live/manage.html.heex:276
#, elixir-autogen, elixir-format
msgid "New form"
msgstr "Neue Form"
#: lib/claper_web/live/stat_live/index.html.heex:225
#, elixir-autogen, elixir-format
msgid "No form submission has been sent"
msgstr "Es wurde kein Formular gesendet"
#: lib/claper_web/live/event_live/form_component.ex:32
#, elixir-autogen, elixir-format
msgid "See current form"
msgstr "Siehe aktuelles Formular"
#: lib/claper_web/live/event_live/form_component.ex:96
#, elixir-autogen, elixir-format
msgid "Submit"
msgstr "Einreichen"
#: lib/claper_web/live/form_live/form_component.html.heex:37
#, elixir-autogen, elixir-format
msgid "Text"
msgstr "Text"
#: lib/claper_web/live/event_live/manage.html.heex:736
#, elixir-autogen, elixir-format
msgid "This cannot be undone, confirm ?"
msgstr "Dies kann nicht rückgängig gemacht werden. Bestätigen?"
#: lib/claper_web/live/form_live/form_component.html.heex:110
#, elixir-autogen, elixir-format
msgid "This will delete all responses associated and the form itself, are you sure?"
msgstr "Dadurch werden alle zugehörigen Antworten und das Formular selbst gelöscht. Sind Sie sicher?"
#: lib/claper_web/live/form_live/form_component.html.heex:14
#, elixir-autogen, elixir-format
msgid "Title of your form"
msgstr "Titel Ihres Formulars"
#: lib/claper_web/live/form_live/form_component.html.heex:40
#, elixir-autogen, elixir-format
msgid "Type"
msgstr "Typ"
#: lib/claper_web/live/stat_live/index.html.heex:220
#, elixir-autogen, elixir-format
msgid "Export all submissions"
msgstr "Alle Einsendungen exportieren"
#: lib/claper_web/live/event_live/poll_component.ex:52
#, elixir-autogen, elixir-format
msgid "Select one option"
msgstr "Wählen Sie eine Option aus"
#: lib/claper_web/live/event_live/poll_component.ex:50
#, elixir-autogen, elixir-format
msgid "Select one or multiple options"
msgstr "Wählen Sie eine oder mehrere Optionen aus"
#: lib/claper_web/live/poll_live/form_component.html.heex:24
#, elixir-autogen, elixir-format
msgid "Multiple answers"
msgstr "Mehrere Antworten"
#: lib/claper_web/live/event_live/manage.html.heex:244
#, elixir-autogen, elixir-format
msgid "Import all interactions from another presentation"
msgstr "Importieren Sie alle Interaktionen aus einer anderen Präsentation"
#: lib/claper_web/live/event_live/manage.ex:181
#, elixir-autogen, elixir-format
msgid "Interactions import failed"
msgstr "Der Import der Interaktionen ist fehlgeschlagen"
#: lib/claper_web/live/event_live/manage.ex:174
#, elixir-autogen, elixir-format
msgid "Interactions imported successfully"
msgstr "Interaktionen erfolgreich importiert"
#: lib/claper_web/live/event_live/manage.html.heex:295
#, elixir-autogen, elixir-format
msgid "Select presentation"
msgstr "Präsentation auswählen"
#: lib/claper_web/live/event_live/event_form_component.html.heex:79
#, elixir-autogen, elixir-format
msgid "PDF, PPT, PPTX up to %{size} MB"
msgstr "PDF, PPT, PPTX bis zu %{size} MB"
#: lib/claper_web/live/event_live/manage.html.heex:796
#, elixir-autogen, elixir-format
msgid "Attendees settings"
msgstr "Teilnehmereinstellungen"
#: lib/claper_web/live/event_live/manage.html.heex:800
#, elixir-autogen, elixir-format
msgid "Enable messages"
msgstr "Nachrichten aktivieren"
#: lib/claper_web/live/event_live/manage.html.heex:777
#, elixir-autogen, elixir-format
msgid "Show instructions"
msgstr "Anleitung anzeigen"
#: lib/claper_web/live/event_live/manage.html.heex:782
#, elixir-autogen, elixir-format
msgid "Show messages"
msgstr "Nachrichten anzeigen"
#: lib/claper_web/live/event_live/manage.html.heex:791
#, elixir-autogen, elixir-format
msgid "Show poll results"
msgstr "Umfrageergebnisse anzeigen"
#: lib/claper_web/live/event_live/show.html.heex:312
#, elixir-autogen, elixir-format
msgid "Messages deactivated"
msgstr "Nachrichten deaktiviert"
#: lib/claper_web/live/event_live/show.html.heex:155
#: lib/claper_web/live/event_live/show.html.heex:176
#: lib/claper_web/live/event_live/show.html.heex:276
#, elixir-autogen, elixir-format
msgid "Anonymous"
msgstr "Anonyme"
#: lib/claper_web/live/event_live/show.html.heex:202
#, elixir-autogen, elixir-format
msgid "Close"
msgstr "Schließen"
#: lib/claper_web/live/event_live/manage.html.heex:808
#, elixir-autogen, elixir-format, fuzzy
msgid "Enable anonymous messages"
msgstr "Anonyme Nachrichten aktivieren"
#: lib/claper_web/live/event_live/show.html.heex:183
#: lib/claper_web/live/event_live/show.html.heex:228
#, elixir-autogen, elixir-format
msgid "Enter your name"
msgstr "Geben Sie Ihren Namen ein"
#: lib/claper_web/live/event_live/presenter.html.heex:33
#, elixir-autogen, elixir-format
msgid "Or go to %{url} and use the code:"
msgstr "Oder gehen Sie zu %{url} und verwenden Sie den Code:"
#: lib/claper_web/live/event_live/show.html.heex:196
#, elixir-autogen, elixir-format
msgid "Use your name"
msgstr "Benutze deinen Namen"
#: lib/claper_web/live/event_live/show.html.heex:176
#, elixir-autogen, elixir-format
msgid "disabled"
msgstr "deaktiviert"

View File

@@ -0,0 +1,85 @@
##
## Do not add, change, or remove `msgid`s manually here as
## they're tied to the ones in the corresponding POT file
## (with the same domain).
##
## Use `mix gettext.extract --merge` or `mix gettext.merge`
## to merge POT files into PO files.
msgid ""
msgstr ""
"Language: de\n"
msgid "can't be blank"
msgstr "darf nicht leer sein"
msgid "has already been taken"
msgstr "ist bereits vergeben"
msgid "is invalid"
msgstr "ist ungültig"
msgid "must be accepted"
msgstr "muss akzeptiert werden"
msgid "has invalid format"
msgstr "hat ein ungültiges Format"
msgid "has an invalid entry"
msgstr "hat einen ungültigen Eintrag"
msgid "is reserved"
msgstr "ist reserviert"
msgid "does not match confirmation"
msgstr "stimmt nicht mit der Bestätigung überein"
msgid "is still associated with this entry"
msgstr "ist immer noch mit diesem Eintrag verknüpft"
msgid "are still associated with this entry"
msgstr "sind noch mit diesem Eintrag verknüpft"
msgid "should be %{count} character(s)"
msgid_plural "should be %{count} character(s)"
msgstr[0] "sollte %{count} Zeichen sein"
msgstr[1] "sollte %{count} Zeichen sein"
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] "sollte %{count} item(s) haben"
msgstr[1] "sollte %{count} item(s) haben"
msgid "should be at least %{count} character(s)"
msgid_plural "should be at least %{count} character(s)"
msgstr[0] "sollte mindestens %{count} Zeichen umfassen"
msgstr[1] "sollte mindestens %{count} Zeichen umfassen"
msgid "should have at least %{count} item(s)"
msgid_plural "should have at least %{count} item(s)"
msgstr[0] "sollte mindestens %{count} item(s) haben"
msgstr[1] "sollte mindestens %{count} item(s) haben"
msgid "should be at most %{count} character(s)"
msgid_plural "should be at most %{count} character(s)"
msgstr[0] "sollte höchstens %{count} Zeichen lang sein"
msgstr[1] "sollte höchstens %{count} Zeichen lang sein"
msgid "should have at most %{count} item(s)"
msgid_plural "should have at most %{count} item(s)"
msgstr[0] "sollte höchstens %{count} item(s) haben"
msgstr[1] "sollte höchstens %{count} item(s) haben"
msgid "must be less than %{number}"
msgstr "muss kleiner sein als %{number}"
msgid "must be greater than %{number}"
msgstr "muss größer sein als %{number}"
msgid "must be less than or equal to %{number}"
msgstr "muss kleiner oder gleich %{number} sein"
msgid "must be greater than or equal to %{number}"
msgstr "muss größer oder gleich %{number} sein"
msgid "must be equal to %{number}"
msgstr "muss gleich %{number} sein"

View File

@@ -17,7 +17,7 @@ msgstr ""
msgid "Settings"
msgstr ""
#: lib/claper_web/live/event_live/manage.ex:438
#: lib/claper_web/live/event_live/manage.ex:455
#: lib/claper_web/live/form_live/form_component.html.heex:37
#: lib/claper_web/live/user_settings_live/show.html.heex:34
#: lib/claper_web/templates/user_registration/new.html.heex:34
@@ -42,7 +42,7 @@ msgstr ""
msgid "Change"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:237
#: lib/claper_web/live/event_live/event_form_component.html.heex:239
#, elixir-autogen, elixir-format
msgid "Code"
msgstr ""
@@ -77,17 +77,17 @@ msgstr ""
msgid "Your personal informations only visible by you"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:249
#: lib/claper_web/live/event_live/show.html.heex:381
#, elixir-autogen, elixir-format
msgid "days"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:255
#: lib/claper_web/live/event_live/show.html.heex:387
#, elixir-autogen, elixir-format
msgid "hours"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:261
#: lib/claper_web/live/event_live/show.html.heex:393
#, elixir-autogen, elixir-format
msgid "minutes"
msgstr ""
@@ -100,6 +100,7 @@ msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:98
#: lib/claper_web/live/event_live/join.ex:42
#: lib/claper_web/live/event_live/join.html.heex:106
#: lib/claper_web/live/event_live/show.html.heex:233
#, elixir-autogen, elixir-format
msgid "Join"
msgstr ""
@@ -111,12 +112,13 @@ msgstr ""
msgid "Dashboard"
msgstr ""
#: lib/claper_web/live/event_live/post_component.ex:66
#: lib/claper_web/live/event_live/post_component.ex:33
#: lib/claper_web/live/event_live/post_component.ex:86
#, elixir-autogen, elixir-format
msgid "Host"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:267
#: lib/claper_web/live/event_live/show.html.heex:399
#, elixir-autogen, elixir-format
msgid "seconds"
msgstr ""
@@ -162,13 +164,13 @@ msgstr ""
msgid "My presentations"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:226
#: lib/claper_web/live/event_live/event_form_component.html.heex:228
#, elixir-autogen, elixir-format
msgid "Name of your presentation"
msgstr ""
#: lib/claper_web/live/event_live/presenter.html.heex:21
#: lib/claper_web/live/event_live/show.html.heex:276
#: lib/claper_web/live/event_live/show.html.heex:408
#, elixir-autogen, elixir-format
msgid "Scan to interact in real-time"
msgstr ""
@@ -178,12 +180,12 @@ msgstr ""
msgid "Starting on"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:205
#: lib/claper_web/live/event_live/event_form_component.ex:207
#, elixir-autogen, elixir-format
msgid "Updated successfully"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:247
#: lib/claper_web/live/event_live/event_form_component.html.heex:249
#, elixir-autogen, elixir-format
msgid "When your presentation will be available ?"
msgstr ""
@@ -205,7 +207,7 @@ msgstr ""
msgid "Return to home"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:177
#: lib/claper_web/live/event_live/event_form_component.ex:179
#, elixir-autogen, elixir-format
msgid "Created successfully"
msgstr ""
@@ -238,9 +240,9 @@ msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:171
#: lib/claper_web/live/event_live/event_form_component.html.heex:30
#: lib/claper_web/live/event_live/manage.html.heex:631
#: lib/claper_web/live/event_live/manage.html.heex:725
#: lib/claper_web/live/event_live/post_component.ex:29
#: lib/claper_web/live/event_live/post_component.ex:94
#: lib/claper_web/live/event_live/manage.html.heex:731
#: lib/claper_web/live/event_live/post_component.ex:44
#: lib/claper_web/live/event_live/post_component.ex:116
#: lib/claper_web/live/form_live/form_component.html.heex:103
#: lib/claper_web/live/poll_live/form_component.html.heex:99
#, elixir-autogen, elixir-format
@@ -310,32 +312,32 @@ msgid "You can log into your account by clicking here."
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:34
#: lib/claper_web/live/event_live/post_component.ex:34
#: lib/claper_web/live/event_live/post_component.ex:99
#: lib/claper_web/live/event_live/post_component.ex:49
#: lib/claper_web/live/event_live/post_component.ex:121
#, elixir-autogen, elixir-format
msgid "Are you sure?"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:147
#: lib/claper_web/live/event_live/event_form_component.html.heex:149
#, elixir-autogen, elixir-format
msgid "Presentation attached"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:107
#: lib/claper_web/live/event_live/event_form_component.html.heex:109
#, elixir-autogen, elixir-format
msgid "Presentation uploaded"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:118
#: lib/claper_web/live/event_live/event_form_component.html.heex:196
#: lib/claper_web/live/event_live/event_form_component.html.heex:321
#: lib/claper_web/live/event_live/event_form_component.html.heex:344
#: lib/claper_web/live/event_live/event_form_component.html.heex:120
#: lib/claper_web/live/event_live/event_form_component.html.heex:198
#: lib/claper_web/live/event_live/event_form_component.html.heex:323
#: lib/claper_web/live/event_live/event_form_component.html.heex:346
#, elixir-autogen, elixir-format
msgid "Remove"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:45
#: lib/claper_web/live/event_live/event_form_component.html.heex:128
#: lib/claper_web/live/event_live/event_form_component.html.heex:130
#, elixir-autogen, elixir-format
msgid "Select your presentation"
msgstr ""
@@ -350,22 +352,22 @@ msgstr ""
msgid "or drag and drop"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:214
#: lib/claper_web/live/event_live/event_form_component.ex:226
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:213
#: lib/claper_web/live/event_live/event_form_component.ex:225
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:157
#: lib/claper_web/live/event_live/event_form_component.html.heex:159
#, elixir-autogen, elixir-format
msgid "Change file"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:183
#: lib/claper_web/live/event_live/event_form_component.html.heex:185
#, elixir-autogen, elixir-format
msgid "Presentation replaced"
msgstr ""
@@ -385,7 +387,7 @@ msgstr ""
msgid "Title of your poll"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:215
#: lib/claper_web/live/event_live/event_form_component.ex:227
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr ""
@@ -429,8 +431,8 @@ msgstr ""
msgid "Invited presentations"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:311
#: lib/claper_web/live/event_live/event_form_component.html.heex:328
#: lib/claper_web/live/event_live/event_form_component.html.heex:313
#: lib/claper_web/live/event_live/event_form_component.html.heex:330
#, elixir-autogen, elixir-format
msgid "User email address"
msgstr ""
@@ -446,7 +448,7 @@ msgstr ""
msgid "Active"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:162
#: lib/claper_web/live/event_live/event_form_component.html.heex:164
#, elixir-autogen, elixir-format
msgid "Changing your file will remove all interaction elements like polls associated."
msgstr ""
@@ -456,7 +458,7 @@ msgstr ""
msgid "Messages from attendees will appear here."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:764
#: lib/claper_web/live/event_live/manage.html.heex:770
#, elixir-autogen, elixir-format
msgid "On screen settings"
msgstr ""
@@ -481,7 +483,7 @@ msgstr ""
msgid "Press <strong>F</strong> in the presentation window to enable fullscreen"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:153
#: lib/claper_web/live/event_live/show.html.heex:292
#, elixir-autogen, elixir-format
msgid "Ask, comment..."
msgstr ""
@@ -498,7 +500,7 @@ msgstr ""
msgid "Set active"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:293
#: lib/claper_web/live/event_live/event_form_component.html.heex:295
#, elixir-autogen, elixir-format
msgid "Add facilitator"
msgstr ""
@@ -513,7 +515,7 @@ msgstr ""
msgid "The site is under maintenance, we'll be back very soon!"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:273
#: lib/claper_web/live/event_live/event_form_component.html.heex:275
#, elixir-autogen, elixir-format
msgid "Facilitators can present and manage interactions"
msgstr ""
@@ -541,8 +543,8 @@ msgid "Blocking this user will delete all his messages and he will not be able t
msgstr ""
#: lib/claper_web/live/event_live/show.ex:50
#: lib/claper_web/live/event_live/show.ex:196
#: lib/claper_web/live/event_live/show.ex:211
#: lib/claper_web/live/event_live/show.ex:197
#: lib/claper_web/live/event_live/show.ex:212
#, elixir-autogen, elixir-format
msgid "You have been banned from this event"
msgstr ""
@@ -702,8 +704,7 @@ msgstr ""
msgid "Connect to your account"
msgstr ""
#: lib/claper_web/live/event_live/presenter.html.heex:33
#: lib/claper_web/live/event_live/show.html.heex:285
#: lib/claper_web/live/event_live/show.html.heex:417
#, elixir-autogen, elixir-format
msgid "Or use the code:"
msgstr ""
@@ -790,12 +791,12 @@ msgstr ""
msgid "Form submissions"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:705
#: lib/claper_web/live/event_live/manage.html.heex:711
#, elixir-autogen, elixir-format
msgid "Form submissions from attendees will appear here."
msgstr ""
#: lib/claper_web/live/event_live/manage.ex:437
#: lib/claper_web/live/event_live/manage.ex:454
#, elixir-autogen, elixir-format
msgid "Name"
msgstr ""
@@ -825,7 +826,7 @@ msgstr ""
msgid "Text"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:730
#: lib/claper_web/live/event_live/manage.html.heex:736
#, elixir-autogen, elixir-format
msgid "This cannot be undone, confirm ?"
msgstr ""
@@ -885,37 +886,75 @@ msgstr ""
msgid "Select presentation"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:78
#: lib/claper_web/live/event_live/event_form_component.html.heex:79
#, elixir-autogen, elixir-format
msgid "PDF, PPT, PPTX up to %{size} MB"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:790
#: lib/claper_web/live/event_live/manage.html.heex:796
#, elixir-autogen, elixir-format
msgid "Attendees settings"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:797
#: lib/claper_web/live/event_live/manage.html.heex:800
#, elixir-autogen, elixir-format
msgid "Enable messages"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:771
#: lib/claper_web/live/event_live/manage.html.heex:777
#, elixir-autogen, elixir-format
msgid "Show instructions"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:776
#: lib/claper_web/live/event_live/manage.html.heex:782
#, elixir-autogen, elixir-format
msgid "Show messages"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:785
#: lib/claper_web/live/event_live/manage.html.heex:791
#, elixir-autogen, elixir-format
msgid "Show poll results"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:179
#: lib/claper_web/live/event_live/show.html.heex:312
#, elixir-autogen, elixir-format
msgid "Messages deactivated"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:155
#: lib/claper_web/live/event_live/show.html.heex:176
#: lib/claper_web/live/event_live/show.html.heex:276
#, elixir-autogen, elixir-format
msgid "Anonymous"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:202
#, elixir-autogen, elixir-format
msgid "Close"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:808
#, elixir-autogen, elixir-format
msgid "Enable anonymous messages"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:183
#: lib/claper_web/live/event_live/show.html.heex:228
#, elixir-autogen, elixir-format
msgid "Enter your name"
msgstr ""
#: lib/claper_web/live/event_live/presenter.html.heex:33
#, elixir-autogen, elixir-format
msgid "Or go to %{url} and use the code:"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:196
#, elixir-autogen, elixir-format
msgid "Use your name"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:176
#, elixir-autogen, elixir-format
msgid "disabled"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -91,7 +91,7 @@ msgid "must be less than or equal to %{number}"
msgstr "doit être inférieur ou égal à %{number}"
msgid "must be greater than or equal to %{number}"
msgstr "doit être supérieure ou égale à %{number}."
msgstr "doit être supérieure ou égale à %{number}"
msgid "must be equal to %{number}"
msgstr "doit être égal à %{number}"

View File

@@ -0,0 +1,9 @@
defmodule Claper.Repo.Migrations.AddAnonymousChatEnabledToPresentationStates do
use Ecto.Migration
def change do
alter table(:presentation_states) do
add :anonymous_chat_enabled, :boolean, default: true
end
end
end

View File

@@ -23,7 +23,7 @@ defmodule Claper.PostsTest do
test "create_post/1 with valid data creates a post" do
user = user_fixture()
event = event_fixture()
valid_attrs = %{body: "some body", user_id: user.id, event_id: event.id}
valid_attrs = %{body: "some body", user_id: user.id, event_id: event.id, name: "some name"}
assert {:ok, %Post{} = post} = Posts.create_post(event, valid_attrs)
assert post.body == "some body"