more languages

This commit is contained in:
Graham McIntire 2025-07-06 10:08:58 -05:00
parent 18e3ef183a
commit cba86fb082
No known key found for this signature in database
12 changed files with 2188 additions and 35 deletions

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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"
/>
</svg>
<span>{Gettext.gettext(AprsmeWeb.Gettext, "Search Callsign")}</span>
<span>{gettext("Search Callsign")}</span>
</label>
<form phx-submit="search_callsign" class="flex space-x-2">
<input
@ -752,14 +752,14 @@ defmodule AprsmeWeb.MapLive.Index do
name="callsign"
value={@overlay_callsign}
phx-change="update_callsign"
placeholder={Gettext.gettext(AprsmeWeb.Gettext, "Enter callsign...")}
placeholder={gettext("Enter callsign...")}
class="flex-1 px-4 py-3 border border-slate-300 rounded-xl shadow-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 text-sm uppercase placeholder-slate-400 transition-all duration-200 hover:border-slate-400"
/>
<button
type="submit"
class="px-6 py-3 bg-gradient-to-r from-indigo-600 to-purple-600 text-white rounded-xl hover:from-indigo-700 hover:to-purple-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition-all duration-200 text-sm font-semibold shadow-lg hover:shadow-xl"
>
{Gettext.gettext(AprsmeWeb.Gettext, "Search")}
{gettext("Search")}
</button>
</form>
</div>
@ -780,7 +780,7 @@ defmodule AprsmeWeb.MapLive.Index do
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
/>
</svg>
<span>{Gettext.gettext(AprsmeWeb.Gettext, "Trail Duration")}</span>
<span>{gettext("Trail Duration")}</span>
</label>
<form phx-change="update_trail_duration" class="relative">
<select
@ -788,22 +788,22 @@ defmodule AprsmeWeb.MapLive.Index do
class="w-full px-4 py-3 border border-slate-300 rounded-xl shadow-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 text-sm bg-white text-gray-900 appearance-none transition-all duration-200 hover:border-slate-400"
>
<option value="1" selected={@trail_duration == "1"}>
{Gettext.gettext(AprsmeWeb.Gettext, "1 Hour")}
{ngettext("1 Hour", "%{count} Hours", 1)}
</option>
<option value="6" selected={@trail_duration == "6"}>
{Gettext.gettext(AprsmeWeb.Gettext, "6 Hours")}
{ngettext("1 Hour", "%{count} Hours", 6)}
</option>
<option value="12" selected={@trail_duration == "12"}>
{Gettext.gettext(AprsmeWeb.Gettext, "12 Hours")}
{ngettext("1 Hour", "%{count} Hours", 12)}
</option>
<option value="24" selected={@trail_duration == "24"}>
{Gettext.gettext(AprsmeWeb.Gettext, "24 Hours")}
{ngettext("1 Hour", "%{count} Hours", 24)}
</option>
<option value="48" selected={@trail_duration == "48"}>
{Gettext.gettext(AprsmeWeb.Gettext, "48 Hours")}
{ngettext("1 Hour", "%{count} Hours", 48)}
</option>
<option value="168" selected={@trail_duration == "168"}>
{Gettext.gettext(AprsmeWeb.Gettext, "1 Week")}
{gettext("1 Week")}
</option>
</select>
<div class="absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none">
@ -835,7 +835,7 @@ defmodule AprsmeWeb.MapLive.Index do
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
/>
</svg>
<span>{Gettext.gettext(AprsmeWeb.Gettext, "Historical Data")}</span>
<span>{gettext("Historical Data")}</span>
</label>
<form phx-change="update_historical_hours" class="relative">
<select
@ -843,19 +843,19 @@ defmodule AprsmeWeb.MapLive.Index do
class="w-full px-4 py-3 border border-slate-300 rounded-xl shadow-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 text-sm bg-white text-gray-900 appearance-none transition-all duration-200 hover:border-slate-400"
>
<option value="1" selected={@historical_hours == "1"}>
{Gettext.gettext(AprsmeWeb.Gettext, "1 Hour")}
{ngettext("1 Hour", "%{count} Hours", 1)}
</option>
<option value="3" selected={@historical_hours == "3"}>
{Gettext.gettext(AprsmeWeb.Gettext, "3 Hours")}
{ngettext("1 Hour", "%{count} Hours", 3)}
</option>
<option value="6" selected={@historical_hours == "6"}>
{Gettext.gettext(AprsmeWeb.Gettext, "6 Hours")}
{ngettext("1 Hour", "%{count} Hours", 6)}
</option>
<option value="12" selected={@historical_hours == "12"}>
{Gettext.gettext(AprsmeWeb.Gettext, "12 Hours")}
{ngettext("1 Hour", "%{count} Hours", 12)}
</option>
<option value="24" selected={@historical_hours == "24"}>
{Gettext.gettext(AprsmeWeb.Gettext, "24 Hours")}
{ngettext("1 Hour", "%{count} Hours", 24)}
</option>
</select>
<div class="absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none">
@ -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"
/>
</svg>
<span class="font-medium">{Gettext.gettext(AprsmeWeb.Gettext, "Navigation")}</span>
<span class="font-medium">{gettext("Navigation")}</span>
</div>
<.navigation variant={:vertical} class="text-sm" />
</div>
@ -903,7 +903,7 @@ defmodule AprsmeWeb.MapLive.Index do
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
/>
</svg>
<span class="font-medium">{Gettext.gettext(AprsmeWeb.Gettext, "Last Deploy")}</span>
<span class="font-medium">{gettext("Last Deploy")}</span>
</div>
<div class="text-xs text-slate-500">
<div class="font-mono">{time_ago_in_words(@deployed_at)}</div>

View file

@ -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

View file

@ -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"

View file

@ -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"

View file

@ -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 ""

View file

@ -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 ""

View file

@ -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"

View file

@ -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"

View file

@ -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}"