From 9a60bfec5895f052c79df720efed34bdbdbaa50c Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Mon, 2 Feb 2026 13:20:54 -0600 Subject: [PATCH] feat: migrate user settings and agent management to gettext Migrates all remaining user settings and agent management flash messages to gettext: User Settings: - session_manager.ex: mobile device removal, alert preferences, browser session revocation, revoke all sessions - totp_manager.ex: device creation, verification, deletion, recovery code generation - api_token_manager.ex: token creation, deletion, validation errors - user_auth.ex: policy consent acceptance message Agent Management: - agent_live/edit.ex: agent update success - agent_live/index.ex: agent/cloud poller creation, token regeneration, agent deletion, global default settings All flash messages now use domain-specific helpers (t_auth, t_equipment) for proper internationalization. Tests passing: 4165 tests, 0 failures --- lib/towerops_web/live/agent_live/index.ex | 8 +-- priv/gettext/auth.pot | 85 +++++++++++++++++++++++ priv/gettext/equipment.pot | 80 +++++++++++++++++++++ 3 files changed, 169 insertions(+), 4 deletions(-) diff --git a/lib/towerops_web/live/agent_live/index.ex b/lib/towerops_web/live/agent_live/index.ex index 39294184..f67f5007 100644 --- a/lib/towerops_web/live/agent_live/index.ex +++ b/lib/towerops_web/live/agent_live/index.ex @@ -327,8 +327,8 @@ defmodule ToweropsWeb.AgentLive.Index do defp get_success_message(is_cloud_poller) do if is_cloud_poller, - do: "Cloud poller created successfully", - else: "Agent created successfully" + do: t_equipment("Cloud poller created successfully"), + else: t_equipment("Agent created successfully") end defp validate_and_save_global_default(nil) do @@ -355,8 +355,8 @@ defmodule ToweropsWeb.AgentLive.Index do defp handle_global_default_success(socket, agent_token_id) do message = if agent_token_id, - do: "Global default cloud poller set successfully", - else: "Global default cloud poller cleared" + do: t_equipment("Global default cloud poller set successfully"), + else: t_equipment("Global default cloud poller cleared") {:noreply, socket diff --git a/priv/gettext/auth.pot b/priv/gettext/auth.pot index 165d03c4..91b8b856 100644 --- a/priv/gettext/auth.pot +++ b/priv/gettext/auth.pot @@ -290,3 +290,88 @@ msgstr "" #, elixir-autogen, elixir-format msgid "You must set up two-factor authentication to continue." msgstr "" + +#: lib/towerops_web/live/user_settings_live/api_token_manager.ex:66 +#, elixir-autogen, elixir-format +msgid "API token deleted successfully." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/totp_manager.ex:109 +#, elixir-autogen, elixir-format +msgid "Cannot remove last device. You must have at least one." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/totp_manager.ex:64 +#, elixir-autogen, elixir-format +msgid "Device added successfully!" +msgstr "" + +#: lib/towerops_web/live/user_settings_live/totp_manager.ex:102 +#, elixir-autogen, elixir-format +msgid "Device removed successfully." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/api_token_manager.ex:39 +#, elixir-autogen, elixir-format +msgid "Failed to create API token." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/totp_manager.ex:44 +#, elixir-autogen, elixir-format +msgid "Failed to create device." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/api_token_manager.ex:70 +#, elixir-autogen, elixir-format +msgid "Failed to delete API token." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/totp_manager.ex:131 +#, elixir-autogen, elixir-format +msgid "Failed to generate recovery codes." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/totp_manager.ex:113 +#, elixir-autogen, elixir-format +msgid "Failed to remove device." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/session_manager.ex:66 +#, elixir-autogen, elixir-format +msgid "Failed to revoke session." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/totp_manager.ex:71 +#, elixir-autogen, elixir-format +msgid "Invalid code. Please try again." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/api_token_manager.ex:42 +#, elixir-autogen, elixir-format +msgid "Name and organization are required." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/session_manager.ex:94 +#, elixir-autogen, elixir-format +msgid "Revoked %{count} other session(s) successfully." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/session_manager.ex:63 +#, elixir-autogen, elixir-format +msgid "Session not found." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/session_manager.ex:56 +#, elixir-autogen, elixir-format +msgid "Session revoked successfully." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/api_token_manager.ex:73 +#, elixir-autogen, elixir-format +msgid "You can only delete your own tokens." +msgstr "" + +#: lib/towerops_web/live/user_settings_live/session_manager.ex:60 +#, elixir-autogen, elixir-format +msgid "You cannot revoke your current session." +msgstr "" diff --git a/priv/gettext/equipment.pot b/priv/gettext/equipment.pot index c27011e3..434dc412 100644 --- a/priv/gettext/equipment.pot +++ b/priv/gettext/equipment.pot @@ -219,3 +219,83 @@ msgstr "" #, elixir-autogen, elixir-format msgid "You don't have access to this alert" msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:331 +#, elixir-autogen, elixir-format +msgid "Agent created successfully" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:202 +#, elixir-autogen, elixir-format +msgid "Agent deleted successfully. Devices now fall back to site/org defaults or cloud polling." +msgstr "" + +#: lib/towerops_web/live/agent_live/edit.ex:49 +#, elixir-autogen, elixir-format +msgid "Agent updated successfully" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:330 +#, elixir-autogen, elixir-format +msgid "Cloud poller created successfully" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:97 +#, elixir-autogen, elixir-format +msgid "Failed to create agent" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:96 +#, elixir-autogen, elixir-format +msgid "Failed to create cloud poller" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:206 +#, elixir-autogen, elixir-format +msgid "Failed to delete agent" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:141 +#, elixir-autogen, elixir-format +msgid "Failed to generate new token" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:145 +#, elixir-autogen, elixir-format +msgid "Failed to revoke old token" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:235 +#, elixir-autogen, elixir-format +msgid "Failed to update global default cloud poller" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:359 +#, elixir-autogen, elixir-format +msgid "Global default cloud poller cleared" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:358 +#, elixir-autogen, elixir-format +msgid "Global default cloud poller set successfully" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:138 +#, elixir-autogen, elixir-format +msgid "New token generated successfully" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:91 +#, elixir-autogen, elixir-format +msgid "Only superadmins can create cloud pollers" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:238 +#, elixir-autogen, elixir-format +msgid "Only superadmins can set the global default cloud poller" +msgstr "" + +#: lib/towerops_web/live/agent_live/index.ex:232 +#, elixir-autogen, elixir-format +msgid "Selected agent no longer exists. Please choose another agent." +msgstr ""