diff --git a/lib/mv_web/live_helpers.ex b/lib/mv_web/live_helpers.ex
index 1a84aae..03d7d45 100644
--- a/lib/mv_web/live_helpers.ex
+++ b/lib/mv_web/live_helpers.ex
@@ -1,6 +1,4 @@
defmodule MvWeb.LiveHelpers do
- import Phoenix.LiveView
-
def on_mount(:default, _params, session, socket) do
locale = session["locale"] || "en"
Gettext.put_locale(locale)
diff --git a/lib/mv_web/locale_controller.ex b/lib/mv_web/locale_controller.ex
index 41b6ff7..3c8056f 100644
--- a/lib/mv_web/locale_controller.ex
+++ b/lib/mv_web/locale_controller.ex
@@ -15,4 +15,4 @@ defmodule MvWeb.LocaleController do
_ -> nil
end
end
-end
\ No newline at end of file
+end
diff --git a/lib/mv_web/member_live/form_component.ex b/lib/mv_web/member_live/form_component.ex
index e7c58c7..5535d1a 100644
--- a/lib/mv_web/member_live/form_component.ex
+++ b/lib/mv_web/member_live/form_component.ex
@@ -26,7 +26,9 @@ defmodule MvWeb.MemberLive.FormComponent do
<.header>
{@title}
- <:subtitle>{gettext("Use this form to manage member records and their properties.")}
+ <:subtitle>
+ {gettext("Use this form to manage member records and their properties.")}
+
<.simple_form
@@ -104,7 +106,7 @@ defmodule MvWeb.MemberLive.FormComponent do
socket =
socket
- |> put_flash(:info, gettext("Mitglied %{action} erfolgreich", action: action))
+ |> put_flash(:info, gettext("Member %{action} successfully", action: action))
|> push_patch(to: socket.assigns.patch)
{:noreply, socket}
diff --git a/lib/mv_web/member_live/show.ex b/lib/mv_web/member_live/show.ex
index 65e6e85..612abd6 100644
--- a/lib/mv_web/member_live/show.ex
+++ b/lib/mv_web/member_live/show.ex
@@ -22,7 +22,9 @@ defmodule MvWeb.MemberLive.Show do
<:item title={gettext("Last Name")}>{@member.last_name}
<:item title={gettext("Email")}>{@member.email}
<:item title={gettext("Birth Date")}>{@member.birth_date}
- <:item title={gettext("Paid")}>{if @member.paid, do: gettext("Yes"), else: gettext("No")}
+ <:item title={gettext("Paid")}>
+ {if @member.paid, do: gettext("Yes"), else: gettext("No")}
+
<:item title={gettext("Phone Number")}>{@member.phone_number}
<:item title={gettext("Join Date")}>{@member.join_date}
<:item title={gettext("Exit Date")}>{@member.exit_date}
diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po
index e5615f6..aa33cc3 100644
--- a/priv/gettext/de/LC_MESSAGES/default.po
+++ b/priv/gettext/de/LC_MESSAGES/default.po
@@ -230,7 +230,7 @@ msgstr "Ja"
#: lib/mv_web/member_live/form_component.ex:107
#, elixir-autogen, elixir-format
-msgid "Mitglied %{action} erfolgreich"
+msgid "Member %{action} successfully"
msgstr "Mitglied %{action} erfolgreich"
#: lib/mv_web/member_live/form_component.ex:100
diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po
index efce4f9..6173d39 100644
--- a/priv/gettext/en/LC_MESSAGES/default.po
+++ b/priv/gettext/en/LC_MESSAGES/default.po
@@ -231,7 +231,7 @@ msgstr ""
#: lib/mv_web/member_live/form_component.ex:107
#, elixir-autogen, elixir-format
-msgid "Mitglied %{action} erfolgreich"
+msgid "Member %{action} successfully"
msgstr ""
#: lib/mv_web/member_live/form_component.ex:100
diff --git a/test/mv_web/locale_test.exs b/test/mv_web/locale_test.exs
new file mode 100644
index 0000000..1cc6693
--- /dev/null
+++ b/test/mv_web/locale_test.exs
@@ -0,0 +1,14 @@
+defmodule MvWeb.LocaleTest do
+ use MvWeb.ConnCase, async: true
+ import Phoenix.ConnTest
+
+ test "language switch via form sets the locale to English in the session" do
+ conn = post(build_conn(), "/set_locale", %{"locale" => "en"})
+ assert get_session(conn, :locale) == "en"
+ end
+
+ test "language switch via form sets the locale to German in the session" do
+ conn = post(build_conn(), "/set_locale", %{"locale" => "de"})
+ assert get_session(conn, :locale) == "de"
+ end
+end
diff --git a/test/mv_web/member_live/index_test.exs b/test/mv_web/member_live/index_test.exs
index 2d3e8bd..b5a5968 100644
--- a/test/mv_web/member_live/index_test.exs
+++ b/test/mv_web/member_live/index_test.exs
@@ -2,15 +2,59 @@ defmodule MvWeb.MemberLive.IndexTest do
use MvWeb.ConnCase, async: true
import Phoenix.LiveViewTest
- test "zeigt übersetzten Titel auf Deutsch", %{conn: conn} do
- Gettext.put_locale(MvWeb.Gettext, "de")
+ test "shows translated title in German", %{conn: conn} do
+ conn = Plug.Test.init_test_session(conn, locale: "de")
{:ok, _view, html} = live(conn, "/members")
- assert html =~ "Mitglieder" # Erwarteter deutscher Titel
+ # Expected German title
+ assert html =~ "Mitglieder"
end
test "shows translated title in English", %{conn: conn} do
Gettext.put_locale(MvWeb.Gettext, "en")
{:ok, _view, html} = live(conn, "/members")
- assert html =~ "Members" # Erwarteter englischer Titel
+ # Expected English title
+ assert html =~ "Members"
end
-end
\ No newline at end of file
+
+ test "shows translated button text in German", %{conn: conn} do
+ conn = Plug.Test.init_test_session(conn, locale: "de")
+ {:ok, _view, html} = live(conn, "/members/new")
+ assert html =~ "Speichern"
+ end
+
+ test "shows translated button text in English", %{conn: conn} do
+ Gettext.put_locale(MvWeb.Gettext, "en")
+ {:ok, _view, html} = live(conn, "/members/new")
+ assert html =~ "Save"
+ end
+
+ test "shows translated flash message after creating a member in German", %{conn: conn} do
+ conn = Plug.Test.init_test_session(conn, locale: "de")
+ {:ok, view, _html} = live(conn, "/members")
+ view |> element("a", "Neues Mitglied") |> render_click()
+
+ form_data = %{
+ "member[first_name]" => "Max",
+ "member[last_name]" => "Mustermann",
+ "member[email]" => "max@example.com"
+ }
+
+ view |> form("#member-form", form_data) |> render_submit()
+ assert has_element?(view, "#flash-group", "Mitglied erstellt erfolgreich")
+ end
+
+ test "shows translated flash message after creating a member in English", %{conn: conn} do
+ conn = Plug.Test.init_test_session(conn, locale: "en")
+ {:ok, view, _html} = live(conn, "/members")
+ view |> element("a", "New Member") |> render_click()
+
+ form_data = %{
+ "member[first_name]" => "Max",
+ "member[last_name]" => "Mustermann",
+ "member[email]" => "max@example.com"
+ }
+
+ view |> form("#member-form", form_data) |> render_submit()
+ assert has_element?(view, "#flash-group", "Member create successfully")
+ end
+end