From cba86fb08255c5bada39ac1c4ba0ca926a228fc9 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sun, 6 Jul 2025 10:08:58 -0500 Subject: [PATCH] more languages --- config/config.exs | 3 +- lib/aprsme_web/gettext.ex | 14 + lib/aprsme_web/live/locale_hook.ex | 3 +- lib/aprsme_web/live/map_live/index.ex | 36 +- lib/aprsme_web/plugs/set_locale.ex | 5 +- priv/gettext/de/LC_MESSAGES/default.po | 883 +++++++++++++++++++++++++ priv/gettext/de/LC_MESSAGES/errors.po | 102 +++ priv/gettext/default.pot | 64 +- priv/gettext/en/LC_MESSAGES/default.po | 64 +- priv/gettext/es/LC_MESSAGES/default.po | 64 +- priv/gettext/fr/LC_MESSAGES/default.po | 883 +++++++++++++++++++++++++ priv/gettext/fr/LC_MESSAGES/errors.po | 102 +++ 12 files changed, 2188 insertions(+), 35 deletions(-) create mode 100644 priv/gettext/de/LC_MESSAGES/default.po create mode 100644 priv/gettext/de/LC_MESSAGES/errors.po create mode 100644 priv/gettext/fr/LC_MESSAGES/default.po create mode 100644 priv/gettext/fr/LC_MESSAGES/errors.po diff --git a/config/config.exs b/config/config.exs index a58bde6..934207e 100644 --- a/config/config.exs +++ b/config/config.exs @@ -27,8 +27,9 @@ config :aprsme, AprsmeWeb.Endpoint, live_view: [signing_salt: "ees098qG"] # Configure Gettext +# Configure Gettext with supported locales from AprsmeWeb.Gettext module config :aprsme, AprsmeWeb.Gettext, - locales: ~w(en es), + locales: ~w(en es de), default_locale: "en" # Configure Oban for background jobs diff --git a/lib/aprsme_web/gettext.ex b/lib/aprsme_web/gettext.ex index 43ede16..80e963c 100644 --- a/lib/aprsme_web/gettext.ex +++ b/lib/aprsme_web/gettext.ex @@ -21,4 +21,18 @@ defmodule AprsmeWeb.Gettext do See the [Gettext Docs](https://hexdocs.pm/gettext) for detailed usage. """ use Gettext.Backend, otp_app: :aprsme + + @supported_locales ~w(en es de fr) + + @doc """ + Sets the Gettext locale for the current process. + """ + def put_locale(locale) when locale in @supported_locales do + Gettext.put_locale(__MODULE__, locale) + end + + @doc """ + Returns the list of supported locales. + """ + def supported_locales, do: @supported_locales end diff --git a/lib/aprsme_web/live/locale_hook.ex b/lib/aprsme_web/live/locale_hook.ex index 7c9a11c..6044b06 100644 --- a/lib/aprsme_web/live/locale_hook.ex +++ b/lib/aprsme_web/live/locale_hook.ex @@ -5,7 +5,8 @@ defmodule AprsmeWeb.LocaleHook do """ import Phoenix.Component - @supported_locales ["en", "es"] + # Cache supported locales at compile time + @supported_locales ~w(en es de fr) def on_mount(:set_locale, _params, session, socket) do locale = get_locale_from_session(session) || "en" diff --git a/lib/aprsme_web/live/map_live/index.ex b/lib/aprsme_web/live/map_live/index.ex index 2e9d833..0abbf77 100644 --- a/lib/aprsme_web/live/map_live/index.ex +++ b/lib/aprsme_web/live/map_live/index.ex @@ -744,7 +744,7 @@ defmodule AprsmeWeb.MapLive.Index do d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" /> - {Gettext.gettext(AprsmeWeb.Gettext, "Search Callsign")} + {gettext("Search Callsign")}
@@ -780,7 +780,7 @@ defmodule AprsmeWeb.MapLive.Index do d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" /> - {Gettext.gettext(AprsmeWeb.Gettext, "Trail Duration")} + {gettext("Trail Duration")}
@@ -835,7 +835,7 @@ defmodule AprsmeWeb.MapLive.Index do d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" /> - {Gettext.gettext(AprsmeWeb.Gettext, "Historical Data")} + {gettext("Historical Data")}
@@ -887,7 +887,7 @@ defmodule AprsmeWeb.MapLive.Index do d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2H5a2 2 0 00-2-2z" /> - {Gettext.gettext(AprsmeWeb.Gettext, "Navigation")} + {gettext("Navigation")}
<.navigation variant={:vertical} class="text-sm" />
@@ -903,7 +903,7 @@ defmodule AprsmeWeb.MapLive.Index do d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" /> - {Gettext.gettext(AprsmeWeb.Gettext, "Last Deploy")} + {gettext("Last Deploy")}
{time_ago_in_words(@deployed_at)}
diff --git a/lib/aprsme_web/plugs/set_locale.ex b/lib/aprsme_web/plugs/set_locale.ex index 8c67dbe..267dbb2 100644 --- a/lib/aprsme_web/plugs/set_locale.ex +++ b/lib/aprsme_web/plugs/set_locale.ex @@ -5,13 +5,12 @@ defmodule AprsmeWeb.Plugs.SetLocale do """ import Plug.Conn - @supported_locales ["en", "es"] - def init(opts), do: opts def call(conn, _opts) do locale = get_locale_from_header(conn) || "en" IO.puts("DEBUG: SetLocale - Final locale: #{locale}") + # Set the backend's locale for the current process Gettext.put_locale(AprsmeWeb.Gettext, locale) # Store locale in session for LiveView to access conn = put_session(conn, :locale, locale) @@ -48,6 +47,6 @@ defmodule AprsmeWeb.Plugs.SetLocale do end defp supported_locale?(locale) do - locale in @supported_locales + locale in ~w(en es de fr) end end diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po new file mode 100644 index 0000000..b139301 --- /dev/null +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -0,0 +1,883 @@ +## "msgid"s in this file come from POT (.pot) files. +### +### 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" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: lib/aprsme_web/components/core_components.ex:570 +#, elixir-autogen, elixir-format +msgid "Actions" +msgstr "Aktionen" + +#: lib/aprsme_web/components/core_components.ex:117 +#: lib/aprsme_web/components/core_components.ex:202 +#, elixir-autogen, elixir-format +msgid "close" +msgstr "schließen" + +#: lib/aprsme_web/time_helpers.ex:23 +#, elixir-autogen, elixir-format +msgid "%{count} days" +msgstr "%{count} Tage" + +#: lib/aprsme_web/live/status_live/index.ex:324 +#, elixir-autogen, elixir-format +msgid "%{count} days ago" +msgstr "vor %{count} Tagen" + +#: lib/aprsme_web/time_helpers.ex:21 +#, elixir-autogen, elixir-format +msgid "%{count} hours" +msgstr "%{count} Stunden" + +#: lib/aprsme_web/live/status_live/index.ex:323 +#, elixir-autogen, elixir-format +msgid "%{count} hours ago" +msgstr "vor %{count} Stunden" + +#: lib/aprsme_web/time_helpers.ex:19 +#, elixir-autogen, elixir-format +msgid "%{count} minutes" +msgstr "%{count} Minuten" + +#: lib/aprsme_web/live/status_live/index.ex:322 +#, elixir-autogen, elixir-format +msgid "%{count} minutes ago" +msgstr "vor %{count} Minuten" + +#: lib/aprsme_web/time_helpers.ex:26 +#, elixir-autogen, elixir-format +msgid "%{count} months" +msgstr "%{count} Monate" + +#: lib/aprsme_web/live/status_live/index.ex:321 +#, elixir-autogen, elixir-format +msgid "%{count} seconds ago" +msgstr "vor %{count} Sekunden" + +#: lib/aprsme_web/time_helpers.ex:29 +#, elixir-autogen, elixir-format +msgid "%{count} years" +msgstr "%{count} Jahre" + +#: lib/aprsme_web/live/info_live/show.ex:477 +#, elixir-autogen, elixir-format +msgid "%{element} (Digipeater)" +msgstr "%{element} (Digipeater)" + +#: lib/aprsme_web/live/info_live/show.ex:481 +#, elixir-autogen, elixir-format +msgid "%{element} (Station)" +msgstr "%{element} (Station)" + +#: lib/aprsme_web/live/info_live/show.ex:485 +#, elixir-autogen, elixir-format +msgid "%{element} (Unknown)" +msgstr "%{element} (Unbekannt)" + +#: lib/aprsme_web/time_helpers.ex:22 +#, elixir-autogen, elixir-format +msgid "1 day" +msgstr "1 Tag" + +#: lib/aprsme_web/time_helpers.ex:20 +#, elixir-autogen, elixir-format +msgid "1 hour" +msgstr "1 Stunde" + +#: lib/aprsme_web/time_helpers.ex:18 +#, elixir-autogen, elixir-format +msgid "1 minute" +msgstr "1 Minute" + +#: lib/aprsme_web/time_helpers.ex:24 +#, elixir-autogen, elixir-format +msgid "1 month" +msgstr "1 Monat" + +#: lib/aprsme_web/time_helpers.ex:28 +#, elixir-autogen, elixir-format +msgid "1 year" +msgstr "1 Jahr" + +#: lib/aprsme_web/live/status_live/index.ex:80 +#, elixir-autogen, elixir-format +msgid "APRS-IS Connection" +msgstr "APRS-IS Verbindung" + +#: lib/aprsme_web/live/status_live/index.ex:68 +#, elixir-autogen, elixir-format +msgid "APRS-IS Connection Issue" +msgstr "APRS-IS Verbindungsproblem" + +#: lib/aprsme_web/live/status_live/index.ex:44 +#, elixir-autogen, elixir-format +msgid "APRS.me System Status" +msgstr "APRS.me Systemstatus" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:70 +#, elixir-autogen, elixir-format +msgid "Access forbidden" +msgstr "Zugriff verweigert" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:85 +#, elixir-autogen, elixir-format +msgid "All packets are parsing successfully!" +msgstr "Alle Pakete werden erfolgreich verarbeitet!" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:72 +#, elixir-autogen, elixir-format +msgid "An error occurred: %{reason}" +msgstr "Ein Fehler ist aufgetreten: %{reason}" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:40 +#, elixir-autogen, elixir-format +msgid "Attempted At" +msgstr "Versucht um" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:9 +#, elixir-autogen, elixir-format +msgid "Auto-refreshes every 5 seconds" +msgstr "Aktualisiert sich alle 5 Sekunden automatisch" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:71 +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:46 +#, elixir-autogen, elixir-format +msgid "Bad request" +msgstr "Ungültige Anfrage" + +#: lib/aprsme_web/live/status_live/index.ex:89 +#, elixir-autogen, elixir-format +msgid "Connected" +msgstr "Verbunden" + +#: lib/aprsme_web/live/status_live/index.ex:113 +#, elixir-autogen, elixir-format +msgid "Connected Since:" +msgstr "Verbunden seit:" + +#: lib/aprsme_web/live/status_live/index.ex:201 +#, elixir-autogen, elixir-format +msgid "Connection Health:" +msgstr "Verbindungsstatus:" + +#: lib/aprsme_web/live/status_live/index.ex:94 +#, elixir-autogen, elixir-format +msgid "Disconnected" +msgstr "Getrennt" + +#: lib/aprsme_web/live/status_live/index.ex:308 +#, elixir-autogen, elixir-format +msgid "Disconnected - Connection issues detected" +msgstr "Getrennt - Verbindungsprobleme erkannt" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:53 +#, elixir-autogen, elixir-format +msgid "Error Message" +msgstr "Fehlermeldung" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:48 +#, elixir-autogen, elixir-format +msgid "Error Type" +msgstr "Fehlertyp" + +#: lib/aprsme_web/live/status_live/index.ex:312 +#, elixir-autogen, elixir-format +msgid "Excellent - Long-term stable connection" +msgstr "Ausgezeichnet - Langfristig stabile Verbindung" + +#: lib/aprsme_web/live/status_live/index.ex:135 +#, elixir-autogen, elixir-format +msgid "Filter:" +msgstr "Filter:" + +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:64 +#, elixir-autogen, elixir-format +msgid "Forbidden" +msgstr "Verboten" + +#: lib/aprsme_web/live/status_live/index.ex:310 +#, elixir-autogen, elixir-format +msgid "Good - Connection stable for less than 1 hour" +msgstr "Gut - Verbindung stabil für weniger als 1 Stunde" + +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:28 +#, elixir-autogen, elixir-format +msgid "Internal server error" +msgstr "Interner Serverfehler" + +#: lib/aprsme_web/live/status_live/index.ex:176 +#, elixir-autogen, elixir-format +msgid "Last Packet:" +msgstr "Letztes Paket:" + +#: lib/aprsme_web/live/status_live/index.ex:46 +#, elixir-autogen, elixir-format +msgid "Last updated:" +msgstr "Zuletzt aktualisiert:" + +#: lib/aprsme_web/live/status_live/index.ex:107 +#, elixir-autogen, elixir-format +msgid "Login ID:" +msgstr "Anmelde-ID:" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:84 +#, elixir-autogen, elixir-format +msgid "No bad packets" +msgstr "Keine fehlerhaften Pakete" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:55 +#, elixir-autogen, elixir-format +msgid "No error message" +msgstr "Keine Fehlermeldung" + +#: lib/aprsme_web/live/status_live/index.ex:182 +#, elixir-autogen, elixir-format +msgid "None" +msgstr "Keine" + +#: lib/aprsme_web/live/status_live/index.ex:119 +#: lib/aprsme_web/live/status_live/index.ex:276 +#, elixir-autogen, elixir-format +msgid "Not connected" +msgstr "Nicht verbunden" + +#: lib/aprsme_web/live/status_live/index.ex:145 +#, elixir-autogen, elixir-format +msgid "Packet Statistics" +msgstr "Paketstatistiken" + +#: lib/aprsme_web/live/status_live/index.ex:167 +#, elixir-autogen, elixir-format +msgid "Packets/Min:" +msgstr "Pakete/Min:" + +#: lib/aprsme_web/live/status_live/index.ex:158 +#, elixir-autogen, elixir-format +msgid "Packets/Sec:" +msgstr "Pakete/Sek:" + +#: lib/aprsme_web/live/info_live/show.ex:305 +#, elixir-autogen, elixir-format +msgid "RELAY (Relay digipeater)" +msgstr "RELAY (Relay-Digipeater)" + +#: lib/aprsme_web/live/info_live/show.ex:308 +#, elixir-autogen, elixir-format +msgid "RELAY digipeater (%{element})" +msgstr "RELAY-Digipeater (%{element})" + +#: lib/aprsme_web/live/info_live/show.ex:306 +#, elixir-autogen, elixir-format +msgid "RELAY-1 (Relay digipeater, 1 hop)" +msgstr "RELAY-1 (Relay-Digipeater, 1 Hop)" + +#: lib/aprsme_web/live/info_live/show.ex:307 +#, elixir-autogen, elixir-format +msgid "RELAY-2 (Relay digipeater, 2 hops)" +msgstr "RELAY-2 (Relay-Digipeater, 2 Hops)" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:58 +#: lib/aprsme_web/live/info_live/show.html.heex:227 +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:148 +#, elixir-autogen, elixir-format +msgid "Raw Packet" +msgstr "Rohpaket" + +#: lib/aprsme_web/live/status_live/index.ex:309 +#, elixir-autogen, elixir-format +msgid "Recently connected - Monitoring stability" +msgstr "Kürzlich verbunden - Überwache Stabilität" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:57 +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:73 +#, elixir-autogen, elixir-format +msgid "Request timeout" +msgstr "Anfrage-Timeout" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:68 +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:19 +#, elixir-autogen, elixir-format +msgid "Resource not found" +msgstr "Ressource nicht gefunden" + +#: lib/aprsme_web/live/status_live/index.ex:100 +#, elixir-autogen, elixir-format +msgid "Server:" +msgstr "Server:" + +#: lib/aprsme_web/live/status_live/index.ex:85 +#, elixir-autogen, elixir-format +msgid "Status:" +msgstr "Status:" + +#: lib/aprsme_web/live/status_live/index.ex:189 +#, elixir-autogen, elixir-format +msgid "Stored Packets:" +msgstr "Gespeicherte Pakete:" + +#: lib/aprsme_web/live/info_live/show.ex:470 +#, elixir-autogen, elixir-format +msgid "TCPIP (Internet gateway)" +msgstr "TCPIP (Internet-Gateway)" + +#: lib/aprsme_web/live/info_live/show.ex:472 +#, elixir-autogen, elixir-format +msgid "TCPIP gateway (%{element})" +msgstr "TCPIP-Gateway (%{element})" + +#: lib/aprsme_web/live/info_live/show.ex:471 +#, elixir-autogen, elixir-format +msgid "TCPIP* (Internet gateway, no forward)" +msgstr "TCPIP* (Internet-Gateway, keine Weiterleitung)" + +#: lib/aprsme_web/live/info_live/show.ex:299 +#, elixir-autogen, elixir-format +msgid "TRACE digipeater (%{element})" +msgstr "TRACE-Digipeater (%{element})" + +#: lib/aprsme_web/live/info_live/show.ex:292 +#, elixir-autogen, elixir-format +msgid "TRACE1-1 (Trace digipeater, 1 hop)" +msgstr "TRACE1-1 (Trace-Digipeater, 1 Hop)" + +#: lib/aprsme_web/live/info_live/show.ex:293 +#, elixir-autogen, elixir-format +msgid "TRACE2-1 (Trace digipeater, 2 hops)" +msgstr "TRACE2-1 (Trace-Digipeater, 2 Hops)" + +#: lib/aprsme_web/live/info_live/show.ex:294 +#, elixir-autogen, elixir-format +msgid "TRACE3-1 (Trace digipeater, 3 hops)" +msgstr "TRACE3-1 (Trace-Digipeater, 3 Hops)" + +#: lib/aprsme_web/live/info_live/show.ex:295 +#, elixir-autogen, elixir-format +msgid "TRACE4-1 (Trace digipeater, 4 hops)" +msgstr "TRACE4-1 (Trace-Digipeater, 4 Hops)" + +#: lib/aprsme_web/live/info_live/show.ex:296 +#, elixir-autogen, elixir-format +msgid "TRACE5-1 (Trace digipeater, 5 hops)" +msgstr "TRACE5-1 (Trace-Digipeater, 5 Hops)" + +#: lib/aprsme_web/live/info_live/show.ex:297 +#, elixir-autogen, elixir-format +msgid "TRACE6-1 (Trace digipeater, 6 hops)" +msgstr "TRACE6-1 (Trace-Digipeater, 6 Hops)" + +#: lib/aprsme_web/live/info_live/show.ex:298 +#, elixir-autogen, elixir-format +msgid "TRACE7-1 (Trace digipeater, 7 hops)" +msgstr "TRACE7-1 (Trace-Digipeater, 7 Hops)" + +#: lib/aprsme_web/live/status_live/index.ex:70 +#, elixir-autogen, elixir-format +msgid "The system is currently disconnected from the APRS-IS network. This may be due to network issues or server maintenance." +msgstr "Das System ist derzeit vom APRS-IS-Netzwerk getrennt. Dies kann auf Netzwerkprobleme oder Serverwartung zurückzuführen sein." + +#: lib/aprsme_web/live/status_live/index.ex:149 +#, elixir-autogen, elixir-format +msgid "Total Packets:" +msgstr "Gesamtpakete:" + +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:55 +#, elixir-autogen, elixir-format +msgid "Unauthorized" +msgstr "Nicht autorisiert" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:69 +#, elixir-autogen, elixir-format +msgid "Unauthorized access" +msgstr "Nicht autorisierter Zugriff" + +#: lib/aprsme/device_identification.ex:56 +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:50 +#: lib/aprsme_web/live/info_live/show.html.heex:143 +#: lib/aprsme_web/live/info_live/show.html.heex:209 +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:92 +#, elixir-autogen, elixir-format +msgid "Unknown" +msgstr "Unbekannt" + +#: lib/aprsme_web/live/status_live/index.ex:313 +#, elixir-autogen, elixir-format +msgid "Unknown status" +msgstr "Unbekannter Status" + +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:37 +#, elixir-autogen, elixir-format +msgid "Unprocessable entity" +msgstr "Nicht verarbeitbare Entität" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:35 +#, elixir-autogen, elixir-format +msgid "Updating..." +msgstr "Aktualisiere..." + +#: lib/aprsme_web/live/status_live/index.ex:125 +#, elixir-autogen, elixir-format +msgid "Uptime:" +msgstr "Betriebszeit:" + +#: lib/aprsme_web/controllers/api/v1/json/changeset_json.ex:13 +#, elixir-autogen, elixir-format +msgid "Validation failed" +msgstr "Validierung fehlgeschlagen" + +#: lib/aprsme_web/live/status_live/index.ex:311 +#, elixir-autogen, elixir-format +msgid "Very good - Connection stable for less than 1 day" +msgstr "Sehr gut - Verbindung stabil für weniger als 1 Tag" + +#: lib/aprsme_web/live/info_live/show.ex:286 +#, elixir-autogen, elixir-format +msgid "WIDE digipeater (%{element})" +msgstr "WIDE-Digipeater (%{element})" + +#: lib/aprsme_web/live/info_live/show.ex:277 +#, elixir-autogen, elixir-format +msgid "WIDE1-1 (Wide area digipeater, 1 hop)" +msgstr "WIDE1-1 (Weitbereichs-Digipeater, 1 Hop)" + +#: lib/aprsme_web/live/info_live/show.ex:284 +#, elixir-autogen, elixir-format +msgid "WIDE1-2 (Wide area digipeater, 1 hop, 2nd attempt)" +msgstr "WIDE1-2 (Weitbereichs-Digipeater, 1 Hop, 2. Versuch)" + +#: lib/aprsme_web/live/info_live/show.ex:278 +#, elixir-autogen, elixir-format +msgid "WIDE2-1 (Wide area digipeater, 2 hops)" +msgstr "WIDE2-1 (Weitbereichs-Digipeater, 2 Hops)" + +#: lib/aprsme_web/live/info_live/show.ex:285 +#, elixir-autogen, elixir-format +msgid "WIDE2-2 (Wide area digipeater, 2 hops, 2nd attempt)" +msgstr "WIDE2-2 (Weitbereichs-Digipeater, 2 Hops, 2. Versuch)" + +#: lib/aprsme_web/live/info_live/show.ex:279 +#, elixir-autogen, elixir-format +msgid "WIDE3-1 (Wide area digipeater, 3 hops)" +msgstr "WIDE3-1 (Weitbereichs-Digipeater, 3 Hops)" + +#: lib/aprsme_web/live/info_live/show.ex:280 +#, elixir-autogen, elixir-format +msgid "WIDE4-1 (Wide area digipeater, 4 hops)" +msgstr "WIDE4-1 (Weitbereichs-Digipeater, 4 Hops)" + +#: lib/aprsme_web/live/info_live/show.ex:281 +#, elixir-autogen, elixir-format +msgid "WIDE5-1 (Wide area digipeater, 5 hops)" +msgstr "WIDE5-1 (Weitbereichs-Digipeater, 5 Hops)" + +#: lib/aprsme_web/live/info_live/show.ex:282 +#, elixir-autogen, elixir-format +msgid "WIDE6-1 (Wide area digipeater, 6 hops)" +msgstr "WIDE6-1 (Weitbereichs-Digipeater, 6 Hops)" + +#: lib/aprsme_web/live/info_live/show.ex:283 +#, elixir-autogen, elixir-format +msgid "WIDE7-1 (WIDE area digipeater, 7 hops)" +msgstr "WIDE7-1 (WIDE-Bereichs-Digipeater, 7 Hops)" + +#: lib/aprsme_web/time_helpers.ex:17 +#, elixir-autogen, elixir-format +msgid "less than a minute" +msgstr "weniger als eine Minute" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:118 +#, elixir-autogen, elixir-format +msgid "Gusts" +msgstr "Böen" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:103 +#, elixir-autogen, elixir-format +msgid "Humidity" +msgstr "Luftfeuchtigkeit" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:84 +#, elixir-autogen, elixir-format +msgid "Last WX report" +msgstr "Letzter WX-Bericht" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:124 +#, elixir-autogen, elixir-format +msgid "Pressure" +msgstr "Druck" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:130 +#, elixir-autogen, elixir-format +msgid "Rain (1h)" +msgstr "Regen (1h)" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:136 +#, elixir-autogen, elixir-format +msgid "Rain (24h)" +msgstr "Regen (24h)" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:142 +#, elixir-autogen, elixir-format +msgid "Rain (since midnight)" +msgstr "Regen (seit Mitternacht)" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:159 +#, elixir-autogen, elixir-format +msgid "Raw comment" +msgstr "Rohkommentar" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:97 +#, elixir-autogen, elixir-format +msgid "Temperature" +msgstr "Temperatur" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:43 +#, elixir-autogen, elixir-format +msgid "View info" +msgstr "Info anzeigen" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:49 +#, elixir-autogen, elixir-format +msgid "View on map" +msgstr "Auf Karte anzeigen" + +#: lib/aprsme_web/live/info_live/show.html.heex:67 +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:46 +#, elixir-autogen, elixir-format +msgid "View packets" +msgstr "Pakete anzeigen" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:79 +#, elixir-autogen, elixir-format +msgid "Weather Details" +msgstr "Wetterdetails" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:166 +#, elixir-autogen, elixir-format +msgid "Weather History Graphs" +msgstr "Wetterverlaufsdiagramme" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:8 +#, elixir-autogen, elixir-format +msgid "Weather Station" +msgstr "Wetterstation" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:109 +#, elixir-autogen, elixir-format +msgid "Wind" +msgstr "Wind" + +#: lib/aprsme_web/live/info_live/show.html.heex:27 +#, elixir-autogen, elixir-format +msgid "APRS Station" +msgstr "APRS-Station" + +#: lib/aprsme_web/live/info_live/show.html.heex:149 +#, elixir-autogen, elixir-format +msgid "Altitude" +msgstr "Höhe" + +#: lib/aprsme_web/live/packets_live/index.html.heex:10 +#, elixir-autogen, elixir-format +msgid "Base Callsign" +msgstr "Basis-Rufzeichen" + +#: lib/aprsme_web/live/about_live.html.heex:12 +#, elixir-autogen, elixir-format +msgid "Built with Modern Technologies" +msgstr "Gebaut mit modernen Technologien" + +#: lib/aprsme_web/live/info_live/show.html.heex:270 +#: lib/aprsme_web/live/info_live/show.html.heex:388 +#, elixir-autogen, elixir-format +msgid "Callsign" +msgstr "Rufzeichen" + +#: lib/aprsme_web/live/info_live/show.html.heex:155 +#, elixir-autogen, elixir-format +msgid "Course" +msgstr "Kurs" + +#: lib/aprsme_web/live/packets_live/index.html.heex:11 +#, elixir-autogen, elixir-format +msgid "Data Type" +msgstr "Datentyp" + +#: lib/aprsme_web/live/info_live/show.html.heex:220 +#, elixir-autogen, elixir-format +msgid "Decoded Path" +msgstr "Dekodierter Pfad" + +#: lib/aprsme_web/live/info_live/show.html.heex:194 +#: lib/aprsme_web/live/packets_live/index.html.heex:16 +#, elixir-autogen, elixir-format +msgid "Device" +msgstr "Gerät" + +#: lib/aprsme_web/live/info_live/show.html.heex:189 +#, elixir-autogen, elixir-format +msgid "Device Information" +msgstr "Geräteinformationen" + +#: lib/aprsme_web/live/info_live/show.html.heex:391 +#, elixir-autogen, elixir-format +msgid "Distance & Course" +msgstr "Entfernung & Kurs" + +#: lib/aprsme_web/live/info_live/show.html.heex:273 +#, elixir-autogen, elixir-format +msgid "Distance & Direction" +msgstr "Entfernung & Richtung" + +#: lib/aprsme_web/live/about_live.html.heex:35 +#, elixir-autogen, elixir-format +msgid "Explore the Map" +msgstr "Karte erkunden" + +#: lib/aprsme_web/live/info_live/show.html.heex:121 +#, elixir-autogen, elixir-format +msgid "Grid Square" +msgstr "Grid-Quadrat" + +#: lib/aprsme_web/live/about_live.html.heex:21 +#, elixir-autogen, elixir-format +msgid "Join Our Community" +msgstr "Treten Sie unserer Community bei" + +#: lib/aprsme_web/live/info_live/show.html.heex:276 +#: lib/aprsme_web/live/info_live/show.html.heex:394 +#, elixir-autogen, elixir-format +msgid "Last Heard" +msgstr "Zuletzt gehört" + +#: lib/aprsme_web/live/info_live/show.html.heex:133 +#, elixir-autogen, elixir-format +msgid "Last Position" +msgstr "Letzte Position" + +#: lib/aprsme_web/live/packets_live/index.html.heex:14 +#, elixir-autogen, elixir-format +msgid "Latitude" +msgstr "Breitengrad" + +#: lib/aprsme_web/live/info_live/show.html.heex:114 +#, elixir-autogen, elixir-format +msgid "Location" +msgstr "Standort" + +#: lib/aprsme_web/live/packets_live/index.html.heex:15 +#, elixir-autogen, elixir-format +msgid "Longitude" +msgstr "Längengrad" + +#: lib/aprsme_web/live/info_live/show.html.heex:469 +#, elixir-autogen, elixir-format +msgid "No data available" +msgstr "Keine Daten verfügbar" + +#: lib/aprsme_web/live/packets_live/index.html.heex:164 +#, elixir-autogen, elixir-format +msgid "No packets" +msgstr "Keine Pakete" + +#: lib/aprsme_web/live/info_live/show.html.heex:471 +#, elixir-autogen, elixir-format +msgid "No recent packet data available for this callsign." +msgstr "Keine aktuellen Paketdaten für dieses Rufzeichen verfügbar." + +#: lib/aprsme_web/live/info_live/show.html.heex:262 +#, elixir-autogen, elixir-format +msgid "Other SSIDs" +msgstr "Andere SSIDs" + +#: lib/aprsme_web/live/packets_live/index.html.heex:165 +#, elixir-autogen, elixir-format +msgid "Packets will appear here as they are received." +msgstr "Pakete werden hier angezeigt, sobald sie empfangen werden." + +#: lib/aprsme_web/live/info_live/show.html.heex:215 +#: lib/aprsme_web/live/packets_live/index.html.heex:13 +#, elixir-autogen, elixir-format +msgid "Path" +msgstr "Pfad" + +#: lib/aprsme_web/live/info_live/show.html.heex:109 +#, elixir-autogen, elixir-format +msgid "Position Information" +msgstr "Positionsinformationen" + +#: lib/aprsme_web/live/packets_live/index.html.heex:9 +#, elixir-autogen, elixir-format +msgid "SSID" +msgstr "SSID" + +#: lib/aprsme_web/live/packets_live/index.html.heex:8 +#, elixir-autogen, elixir-format +msgid "Sender" +msgstr "Absender" + +#: lib/aprsme_web/live/info_live/show.html.heex:161 +#, elixir-autogen, elixir-format +msgid "Speed" +msgstr "Geschwindigkeit" + +#: lib/aprsme_web/live/info_live/show.html.heex:380 +#, elixir-autogen, elixir-format +msgid "Stations Near Current Position" +msgstr "Stationen in der Nähe der aktuellen Position" + +#: lib/aprsme_web/live/packets_live/index.html.heex:12 +#, elixir-autogen, elixir-format +msgid "Symbol" +msgstr "Symbol" + +#: lib/aprsme_web/live/about_live.html.heex:4 +#, elixir-autogen, elixir-format +msgid "Under heavy construction" +msgstr "In intensiver Entwicklung" + +#: lib/aprsme_web/live/info_live/show.html.heex:71 +#, elixir-autogen, elixir-format +msgid "Weather charts" +msgstr "Wetterdiagramme" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:63 +#, elixir-autogen, elixir-format +msgid "%" +msgstr "%" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:53 +#, elixir-autogen, elixir-format +msgid "Dew Point (°F)" +msgstr "Taupunkt (°F)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:54 +#: lib/aprsme_web/live/weather_live/callsign_view.ex:55 +#, elixir-autogen, elixir-format +msgid "Humidity (%)" +msgstr "Luftfeuchtigkeit (%)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:56 +#: lib/aprsme_web/live/weather_live/callsign_view.ex:57 +#, elixir-autogen, elixir-format +msgid "Pressure (mb)" +msgstr "Druck (mb)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:51 +#, elixir-autogen, elixir-format +msgid "Temperature & Dew Point (°F)" +msgstr "Temperatur & Taupunkt (°F)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:52 +#, elixir-autogen, elixir-format +msgid "Temperature (°F)" +msgstr "Temperatur (°F)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:61 +#, elixir-autogen, elixir-format +msgid "Time" +msgstr "Zeit" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:58 +#, elixir-autogen, elixir-format +msgid "Wind (mph)" +msgstr "Wind (mph)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:60 +#, elixir-autogen, elixir-format +msgid "Wind Gust (mph)" +msgstr "Windböe (mph)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:59 +#, elixir-autogen, elixir-format +msgid "Wind Speed (mph)" +msgstr "Windgeschwindigkeit (mph)" + +#: lib/aprsme_web/time_helpers.ex:14 +#, elixir-autogen, elixir-format +msgid "ago" +msgstr "vor" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:64 +#, elixir-autogen, elixir-format +msgid "mb" +msgstr "mb" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:62 +#, elixir-autogen, elixir-format +msgid "°F" +msgstr "°F" + +#: lib/aprsme_web/components/core_components.ex:760 +#: lib/aprsme_web/components/core_components.ex:768 +#, elixir-autogen, elixir-format +msgid "About" +msgstr "Über" + +#: lib/aprsme_web/components/core_components.ex:755 +#: lib/aprsme_web/components/core_components.ex:765 +#, elixir-autogen, elixir-format +msgid "Home" +msgstr "Startseite" + +#: lib/aprsme_web/live/map_live/index.ex:791 +#: lib/aprsme_web/live/map_live/index.ex:794 +#: lib/aprsme_web/live/map_live/index.ex:797 +#: lib/aprsme_web/live/map_live/index.ex:800 +#: lib/aprsme_web/live/map_live/index.ex:803 +#: lib/aprsme_web/live/map_live/index.ex:846 +#: lib/aprsme_web/live/map_live/index.ex:849 +#: lib/aprsme_web/live/map_live/index.ex:852 +#: lib/aprsme_web/live/map_live/index.ex:855 +#: lib/aprsme_web/live/map_live/index.ex:858 +#, elixir-autogen, elixir-format, fuzzy +msgid "1 Hour" +msgid_plural "%{count} Hours" +msgstr[0] "1 Stunde" +msgstr[1] "%{count} Stunden" + +#: lib/aprsme_web/live/map_live/index.ex:806 +#, elixir-autogen, elixir-format +msgid "1 Week" +msgstr "1 Woche" + +#: lib/aprsme_web/live/map_live/index.ex:755 +#, elixir-autogen, elixir-format +msgid "Enter callsign..." +msgstr "Rufzeichen eingeben..." + +#: lib/aprsme_web/live/map_live/index.ex:838 +#, elixir-autogen, elixir-format +msgid "Historical Data" +msgstr "Historische Daten" + +#: lib/aprsme_web/live/map_live/index.ex:906 +#, elixir-autogen, elixir-format +msgid "Last Deploy" +msgstr "Letztes Deployment" + +#: lib/aprsme_web/live/map_live/index.ex:890 +#, elixir-autogen, elixir-format +msgid "Navigation" +msgstr "Navigation" + +#: lib/aprsme_web/live/map_live/index.ex:762 +#, elixir-autogen, elixir-format +msgid "Search" +msgstr "Suchen" + +#: lib/aprsme_web/live/map_live/index.ex:747 +#, elixir-autogen, elixir-format, fuzzy +msgid "Search Callsign" +msgstr "Rufzeichen suchen" + +#: lib/aprsme_web/live/map_live/index.ex:783 +#, elixir-autogen, elixir-format +msgid "Trail Duration" +msgstr "Spur-Dauer" diff --git a/priv/gettext/de/LC_MESSAGES/errors.po b/priv/gettext/de/LC_MESSAGES/errors.po new file mode 100644 index 0000000..82da6a3 --- /dev/null +++ b/priv/gettext/de/LC_MESSAGES/errors.po @@ -0,0 +1,102 @@ +## "msgid"s in this file come from POT (.pot) files. +### +### 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" +"Plural-Forms: nplurals=2; plural=(n != 1);\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 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 noch mit diesem Eintrag verknüpft" + +msgid "are still associated with this entry" +msgstr "sind noch mit diesem Eintrag verknüpft" + +msgid "should have %{count} item(s)" +msgid_plural "should have %{count} item(s)" +msgstr[0] "sollte %{count} Element haben" +msgstr[1] "sollte %{count} Elemente haben" + +msgid "should be %{count} character(s)" +msgid_plural "should be %{count} character(s)" +msgstr[0] "sollte %{count} Zeichen haben" +msgstr[1] "sollte %{count} Zeichen haben" + +msgid "should be %{count} byte(s)" +msgid_plural "should be %{count} byte(s)" +msgstr[0] "sollte %{count} Byte haben" +msgstr[1] "sollte %{count} Bytes haben" + +msgid "should have at least %{count} item(s)" +msgid_plural "should have at least %{count} item(s)" +msgstr[0] "sollte mindestens %{count} Element haben" +msgstr[1] "sollte mindestens %{count} Elemente haben" + +msgid "should be at least %{count} character(s)" +msgid_plural "should be at least %{count} character(s)" +msgstr[0] "sollte mindestens %{count} Zeichen haben" +msgstr[1] "sollte mindestens %{count} Zeichen haben" + +msgid "should be at least %{count} byte(s)" +msgid_plural "should be at least %{count} byte(s)" +msgstr[0] "sollte mindestens %{count} Byte haben" +msgstr[1] "sollte mindestens %{count} Bytes haben" + +msgid "should have at most %{count} item(s)" +msgid_plural "should have at most %{count} item(s)" +msgstr[0] "sollte höchstens %{count} Element haben" +msgstr[1] "sollte höchstens %{count} Elemente 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 haben" +msgstr[1] "sollte höchstens %{count} Zeichen haben" + +msgid "should be at most %{count} byte(s)" +msgid_plural "should be at most %{count} byte(s)" +msgstr[0] "sollte höchstens %{count} Byte haben" +msgstr[1] "sollte höchstens %{count} Bytes haben" + +msgid "must be less than %{number}" +msgstr "muss kleiner als %{number} sein" + +msgid "must be greater than %{number}" +msgstr "muss größer als %{number} sein" + +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" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index e0eeac5..0305009 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -814,14 +814,70 @@ msgstr "" msgid "°F" msgstr "" -#: lib/aprsme_web/components/core_components.ex:756 -#: lib/aprsme_web/components/core_components.ex:761 +#: lib/aprsme_web/components/core_components.ex:760 +#: lib/aprsme_web/components/core_components.ex:768 #, elixir-autogen, elixir-format msgid "About" msgstr "" -#: lib/aprsme_web/components/core_components.ex:754 -#: lib/aprsme_web/components/core_components.ex:759 +#: lib/aprsme_web/components/core_components.ex:755 +#: lib/aprsme_web/components/core_components.ex:765 #, elixir-autogen, elixir-format msgid "Home" msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:791 +#: lib/aprsme_web/live/map_live/index.ex:794 +#: lib/aprsme_web/live/map_live/index.ex:797 +#: lib/aprsme_web/live/map_live/index.ex:800 +#: lib/aprsme_web/live/map_live/index.ex:803 +#: lib/aprsme_web/live/map_live/index.ex:846 +#: lib/aprsme_web/live/map_live/index.ex:849 +#: lib/aprsme_web/live/map_live/index.ex:852 +#: lib/aprsme_web/live/map_live/index.ex:855 +#: lib/aprsme_web/live/map_live/index.ex:858 +#, elixir-autogen, elixir-format +msgid "1 Hour" +msgid_plural "%{count} Hours" +msgstr[0] "" +msgstr[1] "" + +#: lib/aprsme_web/live/map_live/index.ex:806 +#, elixir-autogen, elixir-format +msgid "1 Week" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:755 +#, elixir-autogen, elixir-format +msgid "Enter callsign..." +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:838 +#, elixir-autogen, elixir-format +msgid "Historical Data" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:906 +#, elixir-autogen, elixir-format +msgid "Last Deploy" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:890 +#, elixir-autogen, elixir-format +msgid "Navigation" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:762 +#, elixir-autogen, elixir-format +msgid "Search" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:747 +#, elixir-autogen, elixir-format +msgid "Search Callsign" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:783 +#, elixir-autogen, elixir-format +msgid "Trail Duration" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index ccea880..1c9e02c 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -814,14 +814,70 @@ msgstr "" msgid "°F" msgstr "" -#: lib/aprsme_web/components/core_components.ex:756 -#: lib/aprsme_web/components/core_components.ex:761 +#: lib/aprsme_web/components/core_components.ex:760 +#: lib/aprsme_web/components/core_components.ex:768 #, elixir-autogen, elixir-format msgid "About" msgstr "" -#: lib/aprsme_web/components/core_components.ex:754 -#: lib/aprsme_web/components/core_components.ex:759 +#: lib/aprsme_web/components/core_components.ex:755 +#: lib/aprsme_web/components/core_components.ex:765 #, elixir-autogen, elixir-format msgid "Home" msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:791 +#: lib/aprsme_web/live/map_live/index.ex:794 +#: lib/aprsme_web/live/map_live/index.ex:797 +#: lib/aprsme_web/live/map_live/index.ex:800 +#: lib/aprsme_web/live/map_live/index.ex:803 +#: lib/aprsme_web/live/map_live/index.ex:846 +#: lib/aprsme_web/live/map_live/index.ex:849 +#: lib/aprsme_web/live/map_live/index.ex:852 +#: lib/aprsme_web/live/map_live/index.ex:855 +#: lib/aprsme_web/live/map_live/index.ex:858 +#, elixir-autogen, elixir-format, fuzzy +msgid "1 Hour" +msgid_plural "%{count} Hours" +msgstr[0] "" +msgstr[1] "" + +#: lib/aprsme_web/live/map_live/index.ex:806 +#, elixir-autogen, elixir-format +msgid "1 Week" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:755 +#, elixir-autogen, elixir-format +msgid "Enter callsign..." +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:838 +#, elixir-autogen, elixir-format +msgid "Historical Data" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:906 +#, elixir-autogen, elixir-format +msgid "Last Deploy" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:890 +#, elixir-autogen, elixir-format +msgid "Navigation" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:762 +#, elixir-autogen, elixir-format +msgid "Search" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:747 +#, elixir-autogen, elixir-format, fuzzy +msgid "Search Callsign" +msgstr "" + +#: lib/aprsme_web/live/map_live/index.ex:783 +#, elixir-autogen, elixir-format +msgid "Trail Duration" +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index a38aae0..8181672 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -814,14 +814,70 @@ msgstr "mb" msgid "°F" msgstr "°F" -#: lib/aprsme_web/components/core_components.ex:756 -#: lib/aprsme_web/components/core_components.ex:761 +#: lib/aprsme_web/components/core_components.ex:760 +#: lib/aprsme_web/components/core_components.ex:768 #, elixir-autogen, elixir-format msgid "About" msgstr "Acerca de" -#: lib/aprsme_web/components/core_components.ex:754 -#: lib/aprsme_web/components/core_components.ex:759 +#: lib/aprsme_web/components/core_components.ex:755 +#: lib/aprsme_web/components/core_components.ex:765 #, elixir-autogen, elixir-format msgid "Home" msgstr "Inicio" + +#: lib/aprsme_web/live/map_live/index.ex:791 +#: lib/aprsme_web/live/map_live/index.ex:794 +#: lib/aprsme_web/live/map_live/index.ex:797 +#: lib/aprsme_web/live/map_live/index.ex:800 +#: lib/aprsme_web/live/map_live/index.ex:803 +#: lib/aprsme_web/live/map_live/index.ex:846 +#: lib/aprsme_web/live/map_live/index.ex:849 +#: lib/aprsme_web/live/map_live/index.ex:852 +#: lib/aprsme_web/live/map_live/index.ex:855 +#: lib/aprsme_web/live/map_live/index.ex:858 +#, elixir-autogen, elixir-format +msgid "1 Hour" +msgid_plural "%{count} Hours" +msgstr[0] "1 hora" +msgstr[1] "%{count} horas" + +#: lib/aprsme_web/live/map_live/index.ex:806 +#, elixir-autogen, elixir-format +msgid "1 Week" +msgstr "1 semana" + +#: lib/aprsme_web/live/map_live/index.ex:755 +#, elixir-autogen, elixir-format +msgid "Enter callsign..." +msgstr "Introduce indicativo..." + +#: lib/aprsme_web/live/map_live/index.ex:838 +#, elixir-autogen, elixir-format +msgid "Historical Data" +msgstr "Datos históricos" + +#: lib/aprsme_web/live/map_live/index.ex:906 +#, elixir-autogen, elixir-format +msgid "Last Deploy" +msgstr "Último despliegue" + +#: lib/aprsme_web/live/map_live/index.ex:890 +#, elixir-autogen, elixir-format +msgid "Navigation" +msgstr "Navegación" + +#: lib/aprsme_web/live/map_live/index.ex:762 +#, elixir-autogen, elixir-format +msgid "Search" +msgstr "Buscar" + +#: lib/aprsme_web/live/map_live/index.ex:747 +#, elixir-autogen, elixir-format +msgid "Search Callsign" +msgstr "Buscar indicativo" + +#: lib/aprsme_web/live/map_live/index.ex:783 +#, elixir-autogen, elixir-format +msgid "Trail Duration" +msgstr "Duración de la ruta" diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po new file mode 100644 index 0000000..4b5f496 --- /dev/null +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -0,0 +1,883 @@ +## "msgid"s in this file come from POT (.pot) files. +### +### 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: fr\n" +"Plural-Forms: nplurals=2; plural=(n>1);\n" + +#: lib/aprsme_web/components/core_components.ex:570 +#, elixir-autogen, elixir-format +msgid "Actions" +msgstr "Actions" + +#: lib/aprsme_web/components/core_components.ex:117 +#: lib/aprsme_web/components/core_components.ex:202 +#, elixir-autogen, elixir-format +msgid "close" +msgstr "fermer" + +#: lib/aprsme_web/time_helpers.ex:23 +#, elixir-autogen, elixir-format +msgid "%{count} days" +msgstr "%{count} jours" + +#: lib/aprsme_web/live/status_live/index.ex:324 +#, elixir-autogen, elixir-format +msgid "%{count} days ago" +msgstr "il y a %{count} jours" + +#: lib/aprsme_web/time_helpers.ex:21 +#, elixir-autogen, elixir-format +msgid "%{count} hours" +msgstr "%{count} heures" + +#: lib/aprsme_web/live/status_live/index.ex:323 +#, elixir-autogen, elixir-format +msgid "%{count} hours ago" +msgstr "il y a %{count} heures" + +#: lib/aprsme_web/time_helpers.ex:19 +#, elixir-autogen, elixir-format +msgid "%{count} minutes" +msgstr "%{count} minutes" + +#: lib/aprsme_web/live/status_live/index.ex:322 +#, elixir-autogen, elixir-format +msgid "%{count} minutes ago" +msgstr "il y a %{count} minutes" + +#: lib/aprsme_web/time_helpers.ex:26 +#, elixir-autogen, elixir-format +msgid "%{count} months" +msgstr "%{count} mois" + +#: lib/aprsme_web/live/status_live/index.ex:321 +#, elixir-autogen, elixir-format +msgid "%{count} seconds ago" +msgstr "il y a %{count} secondes" + +#: lib/aprsme_web/time_helpers.ex:29 +#, elixir-autogen, elixir-format +msgid "%{count} years" +msgstr "%{count} années" + +#: lib/aprsme_web/live/info_live/show.ex:477 +#, elixir-autogen, elixir-format +msgid "%{element} (Digipeater)" +msgstr "%{element} (Digipeater)" + +#: lib/aprsme_web/live/info_live/show.ex:481 +#, elixir-autogen, elixir-format +msgid "%{element} (Station)" +msgstr "%{element} (Station)" + +#: lib/aprsme_web/live/info_live/show.ex:485 +#, elixir-autogen, elixir-format +msgid "%{element} (Unknown)" +msgstr "%{element} (Inconnu)" + +#: lib/aprsme_web/time_helpers.ex:22 +#, elixir-autogen, elixir-format +msgid "1 day" +msgstr "1 jour" + +#: lib/aprsme_web/time_helpers.ex:20 +#, elixir-autogen, elixir-format +msgid "1 hour" +msgstr "1 heure" + +#: lib/aprsme_web/time_helpers.ex:18 +#, elixir-autogen, elixir-format +msgid "1 minute" +msgstr "1 minute" + +#: lib/aprsme_web/time_helpers.ex:24 +#, elixir-autogen, elixir-format +msgid "1 month" +msgstr "1 mois" + +#: lib/aprsme_web/time_helpers.ex:28 +#, elixir-autogen, elixir-format +msgid "1 year" +msgstr "1 année" + +#: lib/aprsme_web/live/status_live/index.ex:80 +#, elixir-autogen, elixir-format +msgid "APRS-IS Connection" +msgstr "Connexion APRS-IS" + +#: lib/aprsme_web/live/status_live/index.ex:68 +#, elixir-autogen, elixir-format +msgid "APRS-IS Connection Issue" +msgstr "Problème de connexion APRS-IS" + +#: lib/aprsme_web/live/status_live/index.ex:44 +#, elixir-autogen, elixir-format +msgid "APRS.me System Status" +msgstr "État du système APRS.me" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:70 +#, elixir-autogen, elixir-format +msgid "Access forbidden" +msgstr "Accès interdit" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:85 +#, elixir-autogen, elixir-format +msgid "All packets are parsing successfully!" +msgstr "Tous les paquets sont analysés avec succès !" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:72 +#, elixir-autogen, elixir-format +msgid "An error occurred: %{reason}" +msgstr "Une erreur s'est produite : %{reason}" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:40 +#, elixir-autogen, elixir-format +msgid "Attempted At" +msgstr "Tenté à" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:9 +#, elixir-autogen, elixir-format +msgid "Auto-refreshes every 5 seconds" +msgstr "Actualisation automatique toutes les 5 secondes" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:71 +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:46 +#, elixir-autogen, elixir-format +msgid "Bad request" +msgstr "Mauvaise requête" + +#: lib/aprsme_web/live/status_live/index.ex:89 +#, elixir-autogen, elixir-format +msgid "Connected" +msgstr "Connecté" + +#: lib/aprsme_web/live/status_live/index.ex:113 +#, elixir-autogen, elixir-format +msgid "Connected Since:" +msgstr "Connecté depuis :" + +#: lib/aprsme_web/live/status_live/index.ex:201 +#, elixir-autogen, elixir-format +msgid "Connection Health:" +msgstr "État de la connexion :" + +#: lib/aprsme_web/live/status_live/index.ex:94 +#, elixir-autogen, elixir-format +msgid "Disconnected" +msgstr "Déconnecté" + +#: lib/aprsme_web/live/status_live/index.ex:308 +#, elixir-autogen, elixir-format +msgid "Disconnected - Connection issues detected" +msgstr "Déconnecté - Problèmes de connexion détectés" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:53 +#, elixir-autogen, elixir-format +msgid "Error Message" +msgstr "Message d'erreur" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:48 +#, elixir-autogen, elixir-format +msgid "Error Type" +msgstr "Type d'erreur" + +#: lib/aprsme_web/live/status_live/index.ex:312 +#, elixir-autogen, elixir-format +msgid "Excellent - Long-term stable connection" +msgstr "Excellent - Connexion stable à long terme" + +#: lib/aprsme_web/live/status_live/index.ex:135 +#, elixir-autogen, elixir-format +msgid "Filter:" +msgstr "Filtre :" + +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:64 +#, elixir-autogen, elixir-format +msgid "Forbidden" +msgstr "Interdit" + +#: lib/aprsme_web/live/status_live/index.ex:310 +#, elixir-autogen, elixir-format +msgid "Good - Connection stable for less than 1 hour" +msgstr "Bon - Connexion stable depuis moins d'1 heure" + +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:28 +#, elixir-autogen, elixir-format +msgid "Internal server error" +msgstr "Erreur interne du serveur" + +#: lib/aprsme_web/live/status_live/index.ex:176 +#, elixir-autogen, elixir-format +msgid "Last Packet:" +msgstr "Dernier paquet :" + +#: lib/aprsme_web/live/status_live/index.ex:46 +#, elixir-autogen, elixir-format +msgid "Last updated:" +msgstr "Dernière mise à jour :" + +#: lib/aprsme_web/live/status_live/index.ex:107 +#, elixir-autogen, elixir-format +msgid "Login ID:" +msgstr "ID de connexion :" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:84 +#, elixir-autogen, elixir-format +msgid "No bad packets" +msgstr "Aucun paquet défectueux" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:55 +#, elixir-autogen, elixir-format +msgid "No error message" +msgstr "Aucun message d'erreur" + +#: lib/aprsme_web/live/status_live/index.ex:182 +#, elixir-autogen, elixir-format +msgid "None" +msgstr "Aucun" + +#: lib/aprsme_web/live/status_live/index.ex:119 +#: lib/aprsme_web/live/status_live/index.ex:276 +#, elixir-autogen, elixir-format +msgid "Not connected" +msgstr "Non connecté" + +#: lib/aprsme_web/live/status_live/index.ex:145 +#, elixir-autogen, elixir-format +msgid "Packet Statistics" +msgstr "Statistiques des paquets" + +#: lib/aprsme_web/live/status_live/index.ex:167 +#, elixir-autogen, elixir-format +msgid "Packets/Min:" +msgstr "Paquets/Min :" + +#: lib/aprsme_web/live/status_live/index.ex:158 +#, elixir-autogen, elixir-format +msgid "Packets/Sec:" +msgstr "Paquets/Sec :" + +#: lib/aprsme_web/live/info_live/show.ex:305 +#, elixir-autogen, elixir-format +msgid "RELAY (Relay digipeater)" +msgstr "RELAY (Digipeater relais)" + +#: lib/aprsme_web/live/info_live/show.ex:308 +#, elixir-autogen, elixir-format +msgid "RELAY digipeater (%{element})" +msgstr "Digipeater RELAY (%{element})" + +#: lib/aprsme_web/live/info_live/show.ex:306 +#, elixir-autogen, elixir-format +msgid "RELAY-1 (Relay digipeater, 1 hop)" +msgstr "RELAY-1 (Digipeater relais, 1 saut)" + +#: lib/aprsme_web/live/info_live/show.ex:307 +#, elixir-autogen, elixir-format +msgid "RELAY-2 (Relay digipeater, 2 hops)" +msgstr "RELAY-2 (Digipeater relais, 2 sauts)" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:58 +#: lib/aprsme_web/live/info_live/show.html.heex:227 +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:148 +#, elixir-autogen, elixir-format +msgid "Raw Packet" +msgstr "Paquet brut" + +#: lib/aprsme_web/live/status_live/index.ex:309 +#, elixir-autogen, elixir-format +msgid "Recently connected - Monitoring stability" +msgstr "Récemment connecté - Surveillance de la stabilité" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:57 +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:73 +#, elixir-autogen, elixir-format +msgid "Request timeout" +msgstr "Délai d'attente de la requête" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:68 +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:19 +#, elixir-autogen, elixir-format +msgid "Resource not found" +msgstr "Ressource introuvable" + +#: lib/aprsme_web/live/status_live/index.ex:100 +#, elixir-autogen, elixir-format +msgid "Server:" +msgstr "Serveur :" + +#: lib/aprsme_web/live/status_live/index.ex:85 +#, elixir-autogen, elixir-format +msgid "Status:" +msgstr "Statut :" + +#: lib/aprsme_web/live/status_live/index.ex:189 +#, elixir-autogen, elixir-format +msgid "Stored Packets:" +msgstr "Paquets stockés :" + +#: lib/aprsme_web/live/info_live/show.ex:470 +#, elixir-autogen, elixir-format +msgid "TCPIP (Internet gateway)" +msgstr "TCPIP (Passerelle Internet)" + +#: lib/aprsme_web/live/info_live/show.ex:472 +#, elixir-autogen, elixir-format +msgid "TCPIP gateway (%{element})" +msgstr "Passerelle TCPIP (%{element})" + +#: lib/aprsme_web/live/info_live/show.ex:471 +#, elixir-autogen, elixir-format +msgid "TCPIP* (Internet gateway, no forward)" +msgstr "TCPIP* (Passerelle Internet, pas de transfert)" + +#: lib/aprsme_web/live/info_live/show.ex:299 +#, elixir-autogen, elixir-format +msgid "TRACE digipeater (%{element})" +msgstr "Digipeater TRACE (%{element})" + +#: lib/aprsme_web/live/info_live/show.ex:292 +#, elixir-autogen, elixir-format +msgid "TRACE1-1 (Trace digipeater, 1 hop)" +msgstr "TRACE1-1 (Digipeater trace, 1 saut)" + +#: lib/aprsme_web/live/info_live/show.ex:293 +#, elixir-autogen, elixir-format +msgid "TRACE2-1 (Trace digipeater, 2 hops)" +msgstr "TRACE2-1 (Digipeater trace, 2 sauts)" + +#: lib/aprsme_web/live/info_live/show.ex:294 +#, elixir-autogen, elixir-format +msgid "TRACE3-1 (Trace digipeater, 3 hops)" +msgstr "TRACE3-1 (Digipeater trace, 3 sauts)" + +#: lib/aprsme_web/live/info_live/show.ex:295 +#, elixir-autogen, elixir-format +msgid "TRACE4-1 (Trace digipeater, 4 hops)" +msgstr "TRACE4-1 (Digipeater trace, 4 sauts)" + +#: lib/aprsme_web/live/info_live/show.ex:296 +#, elixir-autogen, elixir-format +msgid "TRACE5-1 (Trace digipeater, 5 hops)" +msgstr "TRACE5-1 (Digipeater trace, 5 sauts)" + +#: lib/aprsme_web/live/info_live/show.ex:297 +#, elixir-autogen, elixir-format +msgid "TRACE6-1 (Trace digipeater, 6 hops)" +msgstr "TRACE6-1 (Digipeater trace, 6 sauts)" + +#: lib/aprsme_web/live/info_live/show.ex:298 +#, elixir-autogen, elixir-format +msgid "TRACE7-1 (Trace digipeater, 7 hops)" +msgstr "TRACE7-1 (Digipeater trace, 7 sauts)" + +#: lib/aprsme_web/live/status_live/index.ex:70 +#, elixir-autogen, elixir-format +msgid "The system is currently disconnected from the APRS-IS network. This may be due to network issues or server maintenance." +msgstr "Le système est actuellement déconnecté du réseau APRS-IS. Cela peut être dû à des problèmes réseau ou à la maintenance du serveur." + +#: lib/aprsme_web/live/status_live/index.ex:149 +#, elixir-autogen, elixir-format +msgid "Total Packets:" +msgstr "Total des paquets :" + +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:55 +#, elixir-autogen, elixir-format +msgid "Unauthorized" +msgstr "Non autorisé" + +#: lib/aprsme_web/controllers/api/v1/fallback_controller.ex:69 +#, elixir-autogen, elixir-format +msgid "Unauthorized access" +msgstr "Accès non autorisé" + +#: lib/aprsme/device_identification.ex:56 +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:50 +#: lib/aprsme_web/live/info_live/show.html.heex:143 +#: lib/aprsme_web/live/info_live/show.html.heex:209 +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:92 +#, elixir-autogen, elixir-format +msgid "Unknown" +msgstr "Inconnu" + +#: lib/aprsme_web/live/status_live/index.ex:313 +#, elixir-autogen, elixir-format +msgid "Unknown status" +msgstr "Statut inconnu" + +#: lib/aprsme_web/controllers/api/v1/json/error_json.ex:37 +#, elixir-autogen, elixir-format +msgid "Unprocessable entity" +msgstr "Entité non traitable" + +#: lib/aprsme_web/live/bad_packets_live/index.html.heex:35 +#, elixir-autogen, elixir-format +msgid "Updating..." +msgstr "Mise à jour..." + +#: lib/aprsme_web/live/status_live/index.ex:125 +#, elixir-autogen, elixir-format +msgid "Uptime:" +msgstr "Temps de fonctionnement :" + +#: lib/aprsme_web/controllers/api/v1/json/changeset_json.ex:13 +#, elixir-autogen, elixir-format +msgid "Validation failed" +msgstr "Échec de la validation" + +#: lib/aprsme_web/live/status_live/index.ex:311 +#, elixir-autogen, elixir-format +msgid "Very good - Connection stable for less than 1 day" +msgstr "Très bon - Connexion stable depuis moins d'1 jour" + +#: lib/aprsme_web/live/info_live/show.ex:286 +#, elixir-autogen, elixir-format +msgid "WIDE digipeater (%{element})" +msgstr "Digipeater WIDE (%{element})" + +#: lib/aprsme_web/live/info_live/show.ex:277 +#, elixir-autogen, elixir-format +msgid "WIDE1-1 (Wide area digipeater, 1 hop)" +msgstr "WIDE1-1 (Digipeater zone étendue, 1 saut)" + +#: lib/aprsme_web/live/info_live/show.ex:284 +#, elixir-autogen, elixir-format +msgid "WIDE1-2 (Wide area digipeater, 1 hop, 2nd attempt)" +msgstr "WIDE1-2 (Digipeater zone étendue, 1 saut, 2e tentative)" + +#: lib/aprsme_web/live/info_live/show.ex:278 +#, elixir-autogen, elixir-format +msgid "WIDE2-1 (Wide area digipeater, 2 hops)" +msgstr "WIDE2-1 (Digipeater zone étendue, 2 sauts)" + +#: lib/aprsme_web/live/info_live/show.ex:285 +#, elixir-autogen, elixir-format +msgid "WIDE2-2 (Wide area digipeater, 2 hops, 2nd attempt)" +msgstr "WIDE2-2 (Digipeater zone étendue, 2 sauts, 2e tentative)" + +#: lib/aprsme_web/live/info_live/show.ex:279 +#, elixir-autogen, elixir-format +msgid "WIDE3-1 (Wide area digipeater, 3 hops)" +msgstr "WIDE3-1 (Digipeater zone étendue, 3 sauts)" + +#: lib/aprsme_web/live/info_live/show.ex:280 +#, elixir-autogen, elixir-format +msgid "WIDE4-1 (Wide area digipeater, 4 hops)" +msgstr "WIDE4-1 (Digipeater zone étendue, 4 sauts)" + +#: lib/aprsme_web/live/info_live/show.ex:281 +#, elixir-autogen, elixir-format +msgid "WIDE5-1 (Wide area digipeater, 5 hops)" +msgstr "WIDE5-1 (Digipeater zone étendue, 5 sauts)" + +#: lib/aprsme_web/live/info_live/show.ex:282 +#, elixir-autogen, elixir-format +msgid "WIDE6-1 (Wide area digipeater, 6 hops)" +msgstr "WIDE6-1 (Digipeater zone étendue, 6 sauts)" + +#: lib/aprsme_web/live/info_live/show.ex:283 +#, elixir-autogen, elixir-format +msgid "WIDE7-1 (WIDE area digipeater, 7 hops)" +msgstr "WIDE7-1 (Digipeater zone étendue, 7 sauts)" + +#: lib/aprsme_web/time_helpers.ex:17 +#, elixir-autogen, elixir-format +msgid "less than a minute" +msgstr "moins d'une minute" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:118 +#, elixir-autogen, elixir-format +msgid "Gusts" +msgstr "Rafales" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:103 +#, elixir-autogen, elixir-format +msgid "Humidity" +msgstr "Humidité" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:84 +#, elixir-autogen, elixir-format +msgid "Last WX report" +msgstr "Dernier rapport météo" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:124 +#, elixir-autogen, elixir-format +msgid "Pressure" +msgstr "Pression" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:130 +#, elixir-autogen, elixir-format +msgid "Rain (1h)" +msgstr "Pluie (1h)" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:136 +#, elixir-autogen, elixir-format +msgid "Rain (24h)" +msgstr "Pluie (24h)" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:142 +#, elixir-autogen, elixir-format +msgid "Rain (since midnight)" +msgstr "Pluie (depuis minuit)" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:159 +#, elixir-autogen, elixir-format +msgid "Raw comment" +msgstr "Commentaire brut" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:97 +#, elixir-autogen, elixir-format +msgid "Temperature" +msgstr "Température" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:43 +#, elixir-autogen, elixir-format +msgid "View info" +msgstr "Voir les infos" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:49 +#, elixir-autogen, elixir-format +msgid "View on map" +msgstr "Voir sur la carte" + +#: lib/aprsme_web/live/info_live/show.html.heex:67 +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:46 +#, elixir-autogen, elixir-format +msgid "View packets" +msgstr "Voir les paquets" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:79 +#, elixir-autogen, elixir-format +msgid "Weather Details" +msgstr "Détails météo" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:166 +#, elixir-autogen, elixir-format +msgid "Weather History Graphs" +msgstr "Graphiques d'historique météo" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:8 +#, elixir-autogen, elixir-format +msgid "Weather Station" +msgstr "Station météo" + +#: lib/aprsme_web/live/weather_live/callsign_view.html.heex:109 +#, elixir-autogen, elixir-format +msgid "Wind" +msgstr "Vent" + +#: lib/aprsme_web/live/info_live/show.html.heex:27 +#, elixir-autogen, elixir-format +msgid "APRS Station" +msgstr "Station APRS" + +#: lib/aprsme_web/live/info_live/show.html.heex:149 +#, elixir-autogen, elixir-format +msgid "Altitude" +msgstr "Altitude" + +#: lib/aprsme_web/live/packets_live/index.html.heex:10 +#, elixir-autogen, elixir-format +msgid "Base Callsign" +msgstr "Indicatif de base" + +#: lib/aprsme_web/live/about_live.html.heex:12 +#, elixir-autogen, elixir-format +msgid "Built with Modern Technologies" +msgstr "Construit avec des technologies modernes" + +#: lib/aprsme_web/live/info_live/show.html.heex:270 +#: lib/aprsme_web/live/info_live/show.html.heex:388 +#, elixir-autogen, elixir-format +msgid "Callsign" +msgstr "Indicatif" + +#: lib/aprsme_web/live/info_live/show.html.heex:155 +#, elixir-autogen, elixir-format +msgid "Course" +msgstr "Cap" + +#: lib/aprsme_web/live/packets_live/index.html.heex:11 +#, elixir-autogen, elixir-format +msgid "Data Type" +msgstr "Type de données" + +#: lib/aprsme_web/live/info_live/show.html.heex:220 +#, elixir-autogen, elixir-format +msgid "Decoded Path" +msgstr "Chemin décodé" + +#: lib/aprsme_web/live/info_live/show.html.heex:194 +#: lib/aprsme_web/live/packets_live/index.html.heex:16 +#, elixir-autogen, elixir-format +msgid "Device" +msgstr "Appareil" + +#: lib/aprsme_web/live/info_live/show.html.heex:189 +#, elixir-autogen, elixir-format +msgid "Device Information" +msgstr "Informations sur l'appareil" + +#: lib/aprsme_web/live/info_live/show.html.heex:391 +#, elixir-autogen, elixir-format +msgid "Distance & Course" +msgstr "Distance et cap" + +#: lib/aprsme_web/live/info_live/show.html.heex:273 +#, elixir-autogen, elixir-format +msgid "Distance & Direction" +msgstr "Distance et direction" + +#: lib/aprsme_web/live/about_live.html.heex:35 +#, elixir-autogen, elixir-format +msgid "Explore the Map" +msgstr "Explorer la carte" + +#: lib/aprsme_web/live/info_live/show.html.heex:121 +#, elixir-autogen, elixir-format +msgid "Grid Square" +msgstr "Carré de grille" + +#: lib/aprsme_web/live/about_live.html.heex:21 +#, elixir-autogen, elixir-format +msgid "Join Our Community" +msgstr "Rejoignez notre communauté" + +#: lib/aprsme_web/live/info_live/show.html.heex:276 +#: lib/aprsme_web/live/info_live/show.html.heex:394 +#, elixir-autogen, elixir-format +msgid "Last Heard" +msgstr "Dernière écoute" + +#: lib/aprsme_web/live/info_live/show.html.heex:133 +#, elixir-autogen, elixir-format +msgid "Last Position" +msgstr "Dernière position" + +#: lib/aprsme_web/live/packets_live/index.html.heex:14 +#, elixir-autogen, elixir-format +msgid "Latitude" +msgstr "Latitude" + +#: lib/aprsme_web/live/info_live/show.html.heex:114 +#, elixir-autogen, elixir-format +msgid "Location" +msgstr "Emplacement" + +#: lib/aprsme_web/live/packets_live/index.html.heex:15 +#, elixir-autogen, elixir-format +msgid "Longitude" +msgstr "Longitude" + +#: lib/aprsme_web/live/info_live/show.html.heex:469 +#, elixir-autogen, elixir-format +msgid "No data available" +msgstr "Aucune donnée disponible" + +#: lib/aprsme_web/live/packets_live/index.html.heex:164 +#, elixir-autogen, elixir-format +msgid "No packets" +msgstr "Aucun paquet" + +#: lib/aprsme_web/live/info_live/show.html.heex:471 +#, elixir-autogen, elixir-format +msgid "No recent packet data available for this callsign." +msgstr "Aucune donnée de paquet récente disponible pour cet indicatif." + +#: lib/aprsme_web/live/info_live/show.html.heex:262 +#, elixir-autogen, elixir-format +msgid "Other SSIDs" +msgstr "Autres SSID" + +#: lib/aprsme_web/live/packets_live/index.html.heex:165 +#, elixir-autogen, elixir-format +msgid "Packets will appear here as they are received." +msgstr "Les paquets apparaîtront ici au fur et à mesure qu'ils sont reçus." + +#: lib/aprsme_web/live/info_live/show.html.heex:215 +#: lib/aprsme_web/live/packets_live/index.html.heex:13 +#, elixir-autogen, elixir-format +msgid "Path" +msgstr "Chemin" + +#: lib/aprsme_web/live/info_live/show.html.heex:109 +#, elixir-autogen, elixir-format +msgid "Position Information" +msgstr "Informations de position" + +#: lib/aprsme_web/live/packets_live/index.html.heex:9 +#, elixir-autogen, elixir-format +msgid "SSID" +msgstr "SSID" + +#: lib/aprsme_web/live/packets_live/index.html.heex:8 +#, elixir-autogen, elixir-format +msgid "Sender" +msgstr "Expéditeur" + +#: lib/aprsme_web/live/info_live/show.html.heex:161 +#, elixir-autogen, elixir-format +msgid "Speed" +msgstr "Vitesse" + +#: lib/aprsme_web/live/info_live/show.html.heex:380 +#, elixir-autogen, elixir-format +msgid "Stations Near Current Position" +msgstr "Stations près de la position actuelle" + +#: lib/aprsme_web/live/packets_live/index.html.heex:12 +#, elixir-autogen, elixir-format +msgid "Symbol" +msgstr "Symbole" + +#: lib/aprsme_web/live/about_live.html.heex:4 +#, elixir-autogen, elixir-format +msgid "Under heavy construction" +msgstr "En construction intensive" + +#: lib/aprsme_web/live/info_live/show.html.heex:71 +#, elixir-autogen, elixir-format +msgid "Weather charts" +msgstr "Graphiques météo" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:63 +#, elixir-autogen, elixir-format +msgid "%" +msgstr "%" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:53 +#, elixir-autogen, elixir-format +msgid "Dew Point (°F)" +msgstr "Point de rosée (°F)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:54 +#: lib/aprsme_web/live/weather_live/callsign_view.ex:55 +#, elixir-autogen, elixir-format +msgid "Humidity (%)" +msgstr "Humidité (%)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:56 +#: lib/aprsme_web/live/weather_live/callsign_view.ex:57 +#, elixir-autogen, elixir-format +msgid "Pressure (mb)" +msgstr "Pression (mb)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:51 +#, elixir-autogen, elixir-format +msgid "Temperature & Dew Point (°F)" +msgstr "Température et point de rosée (°F)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:52 +#, elixir-autogen, elixir-format +msgid "Temperature (°F)" +msgstr "Température (°F)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:61 +#, elixir-autogen, elixir-format +msgid "Time" +msgstr "Heure" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:58 +#, elixir-autogen, elixir-format +msgid "Wind (mph)" +msgstr "Vent (mph)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:60 +#, elixir-autogen, elixir-format +msgid "Wind Gust (mph)" +msgstr "Rafale de vent (mph)" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:59 +#, elixir-autogen, elixir-format +msgid "Wind Speed (mph)" +msgstr "Vitesse du vent (mph)" + +#: lib/aprsme_web/time_helpers.ex:14 +#, elixir-autogen, elixir-format +msgid "ago" +msgstr "il y a" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:64 +#, elixir-autogen, elixir-format +msgid "mb" +msgstr "mb" + +#: lib/aprsme_web/live/weather_live/callsign_view.ex:62 +#, elixir-autogen, elixir-format +msgid "°F" +msgstr "°F" + +#: lib/aprsme_web/components/core_components.ex:760 +#: lib/aprsme_web/components/core_components.ex:768 +#, elixir-autogen, elixir-format +msgid "About" +msgstr "À propos" + +#: lib/aprsme_web/components/core_components.ex:755 +#: lib/aprsme_web/components/core_components.ex:765 +#, elixir-autogen, elixir-format +msgid "Home" +msgstr "Accueil" + +#: lib/aprsme_web/live/map_live/index.ex:791 +#: lib/aprsme_web/live/map_live/index.ex:794 +#: lib/aprsme_web/live/map_live/index.ex:797 +#: lib/aprsme_web/live/map_live/index.ex:800 +#: lib/aprsme_web/live/map_live/index.ex:803 +#: lib/aprsme_web/live/map_live/index.ex:846 +#: lib/aprsme_web/live/map_live/index.ex:849 +#: lib/aprsme_web/live/map_live/index.ex:852 +#: lib/aprsme_web/live/map_live/index.ex:855 +#: lib/aprsme_web/live/map_live/index.ex:858 +#, elixir-autogen, elixir-format +msgid "1 Hour" +msgid_plural "%{count} Hours" +msgstr[0] "1 heure" +msgstr[1] "%{count} heures" + +#: lib/aprsme_web/live/map_live/index.ex:806 +#, elixir-autogen, elixir-format +msgid "1 Week" +msgstr "1 semaine" + +#: lib/aprsme_web/live/map_live/index.ex:755 +#, elixir-autogen, elixir-format +msgid "Enter callsign..." +msgstr "Entrer l'indicatif..." + +#: lib/aprsme_web/live/map_live/index.ex:838 +#, elixir-autogen, elixir-format +msgid "Historical Data" +msgstr "Données historiques" + +#: lib/aprsme_web/live/map_live/index.ex:906 +#, elixir-autogen, elixir-format +msgid "Last Deploy" +msgstr "Dernier déploiement" + +#: lib/aprsme_web/live/map_live/index.ex:890 +#, elixir-autogen, elixir-format +msgid "Navigation" +msgstr "Navigation" + +#: lib/aprsme_web/live/map_live/index.ex:762 +#, elixir-autogen, elixir-format +msgid "Search" +msgstr "Rechercher" + +#: lib/aprsme_web/live/map_live/index.ex:747 +#, elixir-autogen, elixir-format +msgid "Search Callsign" +msgstr "Rechercher l'indicatif" + +#: lib/aprsme_web/live/map_live/index.ex:783 +#, elixir-autogen, elixir-format +msgid "Trail Duration" +msgstr "Durée de la trace" diff --git a/priv/gettext/fr/LC_MESSAGES/errors.po b/priv/gettext/fr/LC_MESSAGES/errors.po new file mode 100644 index 0000000..e7bd9a5 --- /dev/null +++ b/priv/gettext/fr/LC_MESSAGES/errors.po @@ -0,0 +1,102 @@ +## "msgid"s in this file come from POT (.pot) files. +### +### 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: fr\n" +"Plural-Forms: nplurals=2; plural=(n>1);\n" + +msgid "can't be blank" +msgstr "ne peut pas être vide" + +msgid "has already been taken" +msgstr "a déjà été pris" + +msgid "is invalid" +msgstr "n'est pas valide" + +msgid "must be accepted" +msgstr "doit être accepté" + +msgid "has invalid format" +msgstr "a un format invalide" + +msgid "has an invalid entry" +msgstr "a une entrée invalide" + +msgid "is reserved" +msgstr "est réservé" + +msgid "does not match confirmation" +msgstr "ne correspond pas à la confirmation" + +msgid "is still associated with this entry" +msgstr "est encore associé à cette entrée" + +msgid "are still associated with this entry" +msgstr "sont encore associés à cette entrée" + +msgid "should have %{count} item(s)" +msgid_plural "should have %{count} item(s)" +msgstr[0] "devrait avoir %{count} élément" +msgstr[1] "devrait avoir %{count} éléments" + +msgid "should be %{count} character(s)" +msgid_plural "should be %{count} character(s)" +msgstr[0] "devrait être %{count} caractère" +msgstr[1] "devrait être %{count} caractères" + +msgid "should be %{count} byte(s)" +msgid_plural "should be %{count} byte(s)" +msgstr[0] "devrait être %{count} octet" +msgstr[1] "devrait être %{count} octets" + +msgid "should have at least %{count} item(s)" +msgid_plural "should have at least %{count} item(s)" +msgstr[0] "devrait avoir au moins %{count} élément" +msgstr[1] "devrait avoir au moins %{count} éléments" + +msgid "should be at least %{count} character(s)" +msgid_plural "should be at least %{count} character(s)" +msgstr[0] "devrait être au moins %{count} caractère" +msgstr[1] "devrait être au moins %{count} caractères" + +msgid "should be at least %{count} byte(s)" +msgid_plural "should be at least %{count} byte(s)" +msgstr[0] "devrait être au moins %{count} octet" +msgstr[1] "devrait être au moins %{count} octets" + +msgid "should have at most %{count} item(s)" +msgid_plural "should have at most %{count} item(s)" +msgstr[0] "devrait avoir au maximum %{count} élément" +msgstr[1] "devrait avoir au maximum %{count} éléments" + +msgid "should be at most %{count} character(s)" +msgid_plural "should be at most %{count} character(s)" +msgstr[0] "devrait être au maximum %{count} caractère" +msgstr[1] "devrait être au maximum %{count} caractères" + +msgid "should be at most %{count} byte(s)" +msgid_plural "should be at most %{count} byte(s)" +msgstr[0] "devrait être au maximum %{count} octet" +msgstr[1] "devrait être au maximum %{count} octets" + +msgid "must be less than %{number}" +msgstr "doit être inférieur à %{number}" + +msgid "must be greater than %{number}" +msgstr "doit être supérieur à %{number}" + +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érieur ou égal à %{number}" + +msgid "must be equal to %{number}" +msgstr "doit être égal à %{number}"