diff --git a/Assets/check.svg b/Assets/check.svg new file mode 100644 index 00000000..34f7807d --- /dev/null +++ b/Assets/check.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + diff --git a/Assets/cross.svg b/Assets/cross.svg new file mode 100644 index 00000000..749c3f9c --- /dev/null +++ b/Assets/cross.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + diff --git a/Directory.Packages.props b/Directory.Packages.props index 05e8f6e2..65587268 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -34,6 +34,7 @@ + diff --git a/SS14.Launcher/Assets/Locale/de/text.ftl b/SS14.Launcher/Assets/Locale/de/text.ftl new file mode 100644 index 00000000..b950319f --- /dev/null +++ b/SS14.Launcher/Assets/Locale/de/text.ftl @@ -0,0 +1,509 @@ +# Strings for the drop-down window to manage your active account +account-drop-down-log-out = Abmelden +# Strings for the drop-down window to manage your active account +account-drop-down-switch-account = Konto wechseln: +# Strings for the drop-down window to manage your active account +account-drop-down-select-account = Konto auswählen: +# Strings for the drop-down window to manage your active account +account-drop-down-add-account = Konto hinzufügen +# Localization for the "add favorite server" dialog window +add-favorite-window-address-invalid = Adresse ist ungültig +# Localization for the "add favorite server" dialog window +add-favorite-window-label-name = Name: +# Localization for the "add favorite server" dialog window +add-favorite-window-label-address = Adresse: +# Localization for the "add favorite server" dialog window +# 'Example' name shown as a watermark in the name input box +add-favorite-window-example-name = Honk Station +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-connecting = Verbinden… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-content-bundle = Wird geladen… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-cancel = Abbrechen +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-none = Verbindung wird aufgebaut… +# Strings for the drop-down window to manage your active account +account-drop-down-none-selected = Kein Konto ausgewählt +# Strings for the drop-down window to manage your active account +account-drop-down-not-logged-in = Nicht angemeldet +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-starting-client = Spiel wird gestartet… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-ready = Update komplett! +# Error messages for login +login-error-unknown = Unbekannter Fehler +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-not-a-content-bundle = Datei ist kein gültiges Content-Paket! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-client-crashed = Das Spiel scheint beim starten abgestürzt zu sein. Bitte frage nach Hilfe auf Discord oder GitHub falls dieses Problem besteht. +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-client-update = Auf Updates überprüfen... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connecting = Verbindungsinformationen werden vom Server abgerufen… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connection-failed = Verbindung zum Server fehlgeschlagen! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine = Runterladen von Serverdateien… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-fetching-manifest = Abrufen von Server-Manifest… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-culling-engine = Löschen von alten Inhalt… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-culling-content = Löschen von alten Server-Inhalt… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine-modules = Herunterladen von zusätzlichen Abhängigkeiten… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-committing-download = Mit Festplatte Synchronisieren… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-loading-into-db = Speichern von Inhalt in Datenbank… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-loading-content-bundle = Content-Packet wird geladen… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-unknown = Du solltest dies nicht sehen +# Strings for the "direct connect" dialog window. +direct-connect-title = Direkt Verbindung… +# Strings for the "direct connect" dialog window. +direct-connect-text = Serveradresse eingeben zum Verbinden: +# Strings for the "direct connect" dialog window. +direct-connect-connect = Verbinden +# Strings for the "direct connect" dialog window. +direct-connect-address-invalid = Adresse ist ungültig +# Strings for the "hub settings" dialog window. +hub-settings-title = Hub Einstellungen +# Strings for the "hub settings" dialog window. +hub-settings-button-done = Fertig +# Strings for the "hub settings" dialog window. +hub-settings-button-cancel = Abrechen +# Strings for the "hub settings" dialog window. +hub-settings-button-reset = Zurücksetzten +# Strings for the "hub settings" dialog window. +hub-settings-button-remove-tooltip = Hub entfernen +# Strings for the "hub settings" dialog window. +hub-settings-button-increase-priority-tooltip = Priorität erhöhen +# Strings for the "hub settings" dialog window. +hub-settings-button-decrease-priority-tooltip = Priorität verringern +# Strings for the "hub settings" dialog window. +hub-settings-heading-default = Standard +# Strings for the "hub settings" dialog window. +hub-settings-heading-custom = Benutzerdefiniert +# Strings for the "hub settings" dialog window. +hub-settings-warning-invalid = Ungültiger Hub (Vergiss nicht das http(s)://) +# Strings for the "hub settings" dialog window. +hub-settings-warning-duplicate = Duplizierte Hubs +# Strings for the login screen +login-log-launcher = Launcher loggen +# Error messages for login +login-error-invalid-credentials = Ungültige Anmeldedaten +# Error messages for login +login-error-account-unconfirmed = Die E-mail-adresse für dieses Konto muss noch bestätigt werden. Bitte bestätige deine E-mail-adresse +# Error messages for login +login-error-account-2fa-required = 2-Faktor-Authentifikation erforderlich +# Error messages for login +login-error-account-2fa-invalid = 2-Faktor-Authentifikations code ungültig +# Error messages for login +login-error-account-account-locked = Konto wurde gesperrt. Bitte kontaktiere uns, wenn Sie glauben, dass es sich hierbei um einen Fehler handelt. +# Error messages for login +login-errors-button-ok = Ok +# Strings for 2FA login +login-2fa-message = Bitte gebe den Authentifikation Code von deiner App ein. +# Strings for 2FA login +login-2fa-input-watermark = Authentifikation Code +# Strings for 2FA login +login-2fa-button-confirm = Bestätigen +# Strings for 2FA login +login-2fa-button-recovery-code = Wiederherstellungscode +# Strings for 2FA login +login-2fa-button-cancel = Abbrechen +# Strings for the "login expired" view on login +login-expired-title = Anmeldung abgelaufen +# Strings for the "login expired" view on login +login-expired-password-watermark = Password +# Strings for the "login expired" view on login +login-expired-button-log-in = Anmelden +# Strings for the "login expired" view on login +login-expired-button-log-out = Abmelden +# Strings for the "login expired" view on login +login-expired-button-forgot-password = Passwort vergessen? +# Strings for the "forgot password" view on login +login-forgot-title = Password vergessen? +# Strings for the "forgot password" view on login +login-forgot-email-watermark = Deine E-Mail-Adresse +# Strings for the "forgot password" view on login +login-forgot-button-back = Zurück zur Anmeldung +# Strings for the "forgot password" view on login +login-forgot-busy-sending = E-Mail wird gesendet… +# Strings for the "forgot password" view on login +login-forgot-success-title = Wiederherstellungs E-Mail gesendet +# Strings for the "forgot password" view on login +login-forgot-error = Fehler +# Strings for the "login" view on login +login-login-title = Anmeldung +# Strings for the "login" view on login +login-login-username-watermark = Nutzername oder E-Mail +# Strings for the "login" view on login +login-login-password-watermark = Passwort +# Strings for the "login" view on login +login-login-button-log-in = Anmelden +# Strings for the "login" view on login +login-login-button-forgot = Passwort vergessen? +# Strings for the "login" view on login +login-login-button-resend = Bestätigungsemail erneut senden +# Strings for the "login" view on login +login-login-button-register = Noch kein Konto? Registriere jetzt! +# Strings for the "login" view on login +login-login-busy-logging-in = Anmelden… +# Strings for the "login" view on login +login-login-error-title = Anmeldung fehlgeschlagen +# Strings for the general main window layout of the launcher +main-window-title = Space Station 14 Launcher +# Strings for the general main window layout of the launcher +main-window-header-link-discord = Discord +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-content = Runterladen von Serverdateien… +# Strings for the "hub settings" dialog window. +hub-settings-button-add-tooltip = Hub hinzufügen +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-engine-modules = Prüfen für zusätzliche Abhängigkeiten… +# Strings for the "hub settings" dialog window. +hub-settings-button-reset-tooltip = Einstellungen auf Standard zurücksetzten +# Strings for the "hub settings" dialog window. +hub-settings-explanation = Hier kannst du extra Hubs hinzufügen. Du solltest nur Hubs hinzufügen, denen du vertraust, da sie echte Server von anderen Hubs imitieren könnten. D.h. die Reihenfolge von Hubs ist wichtig; Falls zwei Hubs den gleichen Server werben, wird der Hub mit der höheren Priorität angezeigt. +# Strings for 2FA login +login-2fa-title = 2-Faktor-Authentifikation erforderlich +# Strings for the "login expired" view on login +login-expired-message = + Die Sitzung für dieses Konto ist abgelaufen. + Bitte gebe dein Password erneut ein. +# Strings for the "forgot password" view on login +login-forgot-message = Falls du dein Password vergessen hast, kannst du hier die E-Mail-Adresse verbunden mit deinem Konto eingeben, um ein Wiederherstellungslink zu erhalten. +# Strings for the "forgot password" view on login +login-forgot-button-submit = Absenden +# Strings for the "forgot password" view on login +login-forgot-success-message = Ein Wiederherstellungslink wurde zu deiner E-Mail-Adresse gesendet. +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-update-error = Ein Fehler ist aufgetreten beim runterladen der Spieldateien. Bitte frage nach Hilfe auf dem Discord wenn das Problem weiterhin besteht. +# Strings for the general main window layout of the launcher +main-window-busy-checking-update = Suche nach Updates… +# Long region names for server tag filters (shown in tooltip) +region-africa-south = Südafrika +# Strings for the "servers" tab +filters = Filter ({ $filteredServers } / { $totalServers }) +# Long region names for server tag filters (shown in tooltip) +region-the-moon = Der Mond +# Strings for the general main window layout of the launcher +main-window-out-of-date-desc-steam = + Der Launcher ist veraltet. + Bitte erlaube Steam das Spiel zu aktualisieren. +# Strings for the general main window layout of the launcher +main-window-out-of-date-exit = Verlassen +# Strings for the general main window layout of the launcher +main-window-out-of-date-download-manual = Runterladen (manuell) +# Strings for the general main window layout of the launcher +main-window-early-access-title = Achtung! +# Strings for the general main window layout of the launcher +main-window-early-access-desc = Space Station 14 ist in der Alpha. Wir hoffen, dass dir gefällt was du siehst, vielleicht bleibst du sogar hier, aber bitte halte deine Erwartungen bescheiden. +# Strings for the general main window layout of the launcher +main-window-early-access-accept = Verstanden! +# Strings for the general main window layout of the launcher +main-window-drag-drop-prompt = Loslassen um Spiel zu starten +# Strings for the general main window layout of the launcher +main-window-header-link-website = Webseite +# Strings for the general main window layout of the launcher +main-window-out-of-date = Launcher ist veraltet +# Strings for the general main window layout of the launcher +main-window-out-of-date-desc = + Der Launcher ist veraltet. + Bitte lade die neuste Version von unserer Webseite runter. +# Strings for the general main window layout of the launcher +main-window-busy-checking-login-status = Aktualisiere Login-Status… +# Strings for the general main window layout of the launcher +main-window-busy-checking-account-status = Kontostatus prüfen +# Strings for the general main window layout of the launcher +main-window-error-connecting-auth-server = Fehler beim Verbinden mit dem Authentifikationsserver +# Strings for the general main window layout of the launcher +main-window-error-unknown = Unbekannter Fehler aufgetreten +# Long region names for server tag filters (shown in tooltip) +region-africa-central = Afrika Zentral +# Long region names for server tag filters (shown in tooltip) +region-africa-north = Nordafrika +# Long region names for server tag filters (shown in tooltip) +region-antarctica = Antarktis +# Long region names for server tag filters (shown in tooltip) +region-asia-east = Ostasien +# Long region names for server tag filters (shown in tooltip) +region-asia-north = Nordasien +# Long region names for server tag filters (shown in tooltip) +region-asia-south-east = Südostasien +# Long region names for server tag filters (shown in tooltip) +region-central-america = Zentralamerika +# Long region names for server tag filters (shown in tooltip) +region-europe-east = Osteuropa +# Long region names for server tag filters (shown in tooltip) +region-europe-west = Westeuropa +# Long region names for server tag filters (shown in tooltip) +region-greenland = Grönland +# Long region names for server tag filters (shown in tooltip) +region-india = Indien +# Long region names for server tag filters (shown in tooltip) +region-north-america-central = Nordzentralamerika +# Long region names for server tag filters (shown in tooltip) +region-north-america-east = Nordostamerika +# Long region names for server tag filters (shown in tooltip) +region-north-america-west = Nordwestamerika +# Long region names for server tag filters (shown in tooltip) +region-oceania = Ozeanien +# Long region names for server tag filters (shown in tooltip) +region-south-america-east = Südostamerika +# Short region names for server tag filters (shown in filter check box) +region-short-antarctica = Antarktis +# Strings for the "servers" tab +tab-servers-search-watermark = Suche nach Servern… +# Strings for the "servers" tab +tab-servers-table-players = Spieler +# Strings for the "servers" tab +tab-servers-table-name = Servername +# Localization for the "add favorite server" dialog window +add-favorite-window-title = Favorisierten Server hinzufügen +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-updating = Aktualisieren: { $status } +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-verifying = Downloadintegrität Prüfen… +# Strings for the "servers" tab +tab-servers-list-status-error = Ein Fehler ist aufgetreten beim laden von der Master-Server-Liste. +# Long region names for server tag filters (shown in tooltip) +region-middle-east = Mittlerer Osten +# Long region names for server tag filters (shown in tooltip) +region-south-america-south = Südamerika Süd +# Long region names for server tag filters (shown in tooltip) +region-south-america-west = Südamerika West +# Short region names for server tag filters (shown in filter check box) +region-short-africa-central = Zentralafrika +# Short region names for server tag filters (shown in filter check box) +region-short-africa-north = Nordafrika +# Short region names for server tag filters (shown in filter check box) +region-short-africa-south = Südafrika +# Short region names for server tag filters (shown in filter check box) +region-short-asia-east = Ostasien +# Short region names for server tag filters (shown in filter check box) +region-short-asia-north = Nordasien +# Short region names for server tag filters (shown in filter check box) +region-short-asia-south-east = Südostasien +# Short region names for server tag filters (shown in filter check box) +region-short-europe-east = Osteuropa +# Short region names for server tag filters (shown in filter check box) +region-short-europe-west = Westeuropa +# Short region names for server tag filters (shown in filter check box) +region-short-greenland = Grönland +# Short region names for server tag filters (shown in filter check box) +region-short-india = Indien +# Short region names for server tag filters (shown in filter check box) +region-short-middle-east = Mittlerer Osten +# Short region names for server tag filters (shown in filter check box) +region-short-the-moon = Der Mond +# Short region names for server tag filters (shown in filter check box) +region-short-north-america-central = NA Central +# Short region names for server tag filters (shown in filter check box) +region-short-north-america-east = NA Ost +# Short region names for server tag filters (shown in filter check box) +region-short-north-america-west = NA West +# Short region names for server tag filters (shown in filter check box) +region-short-oceania = Ozeanien +# Short region names for server tag filters (shown in filter check box) +region-short-south-america-east = SA Ost +# Short region names for server tag filters (shown in filter check box) +region-short-south-america-south = SA Süd +# Short region names for server tag filters (shown in filter check box) +region-short-south-america-west = SA West +# Strings for the "servers" tab +tab-servers-title = Server +# Strings for the "servers" tab +tab-servers-refresh = Aktualisieren +# Strings for the "servers" tab +tab-servers-list-status-partial-error = Einige oder alle Serverlisten konnten nicht geladen werden. Stelle sicher, dass deine Hub-Konfiguration korrekt ist. +# Strings for the "servers" tab +tab-servers-list-status-updating-master = Hauptserverliste wird geladen... +# Strings for the "servers" tab +tab-servers-list-status-none-filtered = Keine Server entsprechen deiner Such- oder Filtereinstellungen. +# Strings for the "servers" tab +tab-servers-list-status-none = Es gibt keine öffentlichen Server. Stelle sicher, dass deine Hub-Konfiguration korrekt ist. +# Strings for the server filters menu +filters-title = Filter +# Strings for the server filters menu +filters-title-language = Sprache +# Strings for the server filters menu +filters-title-region = Region +# Strings for the server filters menu +filters-title-rp = Rollenspiel-Level +# Strings for the server filters menu +filters-title-player-count = Spielerzahl +# Strings for the server filters menu +filters-title-18 = 18+ +# Strings for the server filters menu +filters-title-hub = Hub +# Strings for the server filters menu +filters-18-yes = Ja +# Strings for the server filters menu +filters-18-yes-desc = Ja +# Strings for the server filters menu +filters-18-no-desc = Nein +# Strings for the server filters menu +filters-player-count-hide-empty-desc = Leere Server werden nicht angezeigt +# Strings for the server filters menu +filters-player-count-hide-full = Voll verstecken +# Strings for the server filters menu +filters-player-count-hide-full-desc = Volle Server werden nicht angezeigt +# Strings for the server filters menu +filters-player-count-minimum = Minimum: +# Strings for the server filters menu +filters-player-count-minimum-desc = Server mit weniger Spielern werden nicht angezeigt +# Strings for the server filters menu +filters-player-count-maximum = Maximum: +# Strings for the server filters menu +filters-unspecified-desc = Nicht angegeben +# Strings for the server filters menu +filters-unspecified = Nicht angegeben +# Server roleplay levels for the filters menu +filters-rp-none = Kein +# Server roleplay levels for the filters menu +filters-rp-none-desc = Kein Rollenspiel +# Server roleplay levels for the filters menu +filters-rp-low = Niedrig +# Server roleplay levels for the filters menu +filters-rp-low-desc = Niedrig +# Server roleplay levels for the filters menu +filters-rp-medium = Mäßig +# Server roleplay levels for the filters menu +filters-rp-medium-desc = Mäßig +# Server roleplay levels for the filters menu +filters-rp-high-desc = Hoch +# Strings for entries in the server list (including home page) +server-entry-add-favorite = Favorit hinzufügen +# Strings for entries in the server list (including home page) +server-entry-remove-favorite = Favorit entfernen +# Strings for entries in the server list (including home page) +server-entry-offline = OFFLINE +# Strings for entries in the server list (including home page) +server-entry-player-count = + { $players } / { $max -> + [0] ∞ + *[1] { $max } + } +# Strings for entries in the server list (including home page) +server-entry-fetching = Lädt... +# Strings for entries in the server list (including home page) +server-entry-description-offline = Server nicht erreichbar +# Strings for entries in the server list (including home page) +server-entry-description-error = Fehler beim laden der Serverbeschreibung +# Strings for entries in the server list (including home page) +server-entry-description-none = Keine Beschreibung angegeben +# Strings for entries in the server list (including home page) +server-fetched-from-hub = Geladen von { $hub } +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-title = { "[" }DEV] +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-title-override = { "[" }DEV (override active!!!)] +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-disable-signing = Engine-Signaturprüfungen deaktivieren +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-enable-engine-override = Engine-Override aktivieren +# Strings for the "home" tab +tab-home-title = Home +# Strings for the "home" tab +tab-home-favorite-servers = Favoriten: +# Strings for the "home" tab +tab-home-add-favorite = Favorit hinzufügen... +# Strings for the "home" tab +tab-home-refresh = Aktualisieren +# Strings for the "home" tab +tab-home-direct-connect = Direkt mit Server verbinden… +# Short region names for server tag filters (shown in filter check box) +region-short-central-america = Zentralamerika +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-disable-signing-desc = { "[" }DEV ONLY] Deaktiviert die Engine-Signaturprüfung. NICHT AKTIVIEREN, WENN DU NICHT GENAU WEISST, WAS DU TUST. +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-enable-engine-override-desc = Pfad zum Laden von Engine-Zips überschreiben (release/ in RobustToolbox) +# Strings for the server filters menu +filters-18-no = Nein +# Strings for the server filters menu +filters-player-count-hide-empty = Leer ausblenden +# Strings for the server filters menu +filters-player-count-maximum-desc = Server mit mehr Spielern werden nicht angezeigt +# Server roleplay levels for the filters menu +filters-rp-high = Hoch +# Strings for entries in the server list (including home page) +server-entry-connect = Verbinden +# Strings for entries in the server list (including home page) +server-entry-description-fetching = Serverstatus wird geladen... +# Strings for the "register confirmation" view on login +login-confirmation-confirmation-title = Registrierung bestätigen +# Strings for the "register confirmation" view on login +login-confirmation-confirmation-message = Bitte prüfe deine E-Mail, um dein Konto zu bestätigen. Sobald du dein Konto bestätigt hast, klicke auf die Schaltfläche unten, um dich einzuloggen. +# Strings for the "register confirmation" view on login +login-confirmation-button-confirm = Ich habe mein Konto bestätigt +# Strings for the "register confirmation" view on login +login-confirmation-button-cancel = Abbrechen +# Strings for the "register confirmation" view on login +login-confirmation-busy = Einloggen... +# Strings for the "home" tab +tab-home-run-content-bundle = Content-Packet/Replay ausführen +# Strings for the "home" tab +tab-home-go-to-servers-tab = Zum Server Tab +# Strings for the "home" tab +tab-home-favorites-guide = Markiere Server als Favoriten, um hier einfacher auf sie zuzugreifen +# Strings for the "news" tab +tab-news-title = Neuigkeiten +# Strings for the "news" tab +tab-news-recent-news = Neueste Nachrichten: +# Strings for the "news" tab +tab-news-pulling-news = Nachrichten werden geladen… +# Strings for the drop-down window to manage your active account +account-drop-down-log-out-of = Aus { $name } abmelden +# Strings for the "options" tab +tab-options-title = Einstellungen +# Strings for the "options" tab +tab-options-flip = { "*" }flip +# Strings for the "options" tab +tab-options-clear-engines = Installierte Engine-Versionen löschen +# Strings for the "options" tab +tab-options-clear-content = Installierten Serverinhalt löschen +# Strings for the "options" tab +tab-options-open-log-directory = Log Ordner öffnen +# Strings for the "options" tab +tab-options-compatibility-mode = Kompatibilitätsmodus +# Strings for the "options" tab +tab-options-compatibility-mode-desc = Hier wird OpenGL ES 2 (ggf. über ANGLE) verwendet, das weniger wahrscheinlich von Treiberfehlern betroffen ist. Probiere diese Einstellung aus, wenn du grafische Probleme oder Abstürze hast. +# Strings for the "options" tab +tab-options-log-client = Client loggen +# Strings for the "options" tab +tab-options-log-client-desc = Ermöglicht die Protokollierung aller Spiel-Client-Ausgaben. Nützlich für Entwickler. +# Strings for the "options" tab +tab-options-log-launcher = Launcher loggen +# Strings for the "options" tab +tab-options-verbose-launcher-logging = Ausführliches Launcher Logging +# Strings for the "options" tab +tab-options-verbose-launcher-logging-desc = Für den Fall, dass die Entwickler mit Ihrem Problem *sehr* ratlos sind. (erfordert einen Neustart des Launchers) +# Strings for the "options" tab +tab-options-seasonal-branding = Saisonales Branding +# Strings for the "options" tab +tab-options-seasonal-branding-desc = Alle gerade relevanten Icons und Logos, die wir uns ausdenken können. +# Strings for the "options" tab +tab-options-disable-signing = Engine-Signaturprüfungen deaktivieren +# Strings for the "options" tab +tab-options-hub-settings = Hub Einstellungen +# Strings for the "options" tab +tab-options-hub-settings-desc = Ändere den oder die Hub-Server, die du zum Abrufen der Serverliste verwenden möchtest. +# Strings for the "options" tab +tab-options-account-settings = Kontoeinstellungen +# Strings for the "options" tab +tab-options-log-launcher-desc = Aktiviert die Protokollierung des Launchers. Nützlich für Entwickler. (erfordert einen Neustart des Launchers) +# Strings for the "options" tab +tab-options-account-settings-desc = Du kannst deine Kontoeinstellungen, wie z. B. das Ändern deiner E-Mail-Adresse oder deines Passworts, über unsere Website verwalten. +# Strings for the "options" tab +tab-options-disable-signing-desc = { "[" }DEV ONLY] Deaktiviert die Engine-Signaturprüfung. NICHT AKTIVIEREN, WENN DU NICHT GENAU WEISST, WAS DU TUST. diff --git a/SS14.Launcher/Assets/Locale/el/text.ftl b/SS14.Launcher/Assets/Locale/el/text.ftl new file mode 100644 index 00000000..62e6f3c7 --- /dev/null +++ b/SS14.Launcher/Assets/Locale/el/text.ftl @@ -0,0 +1,307 @@ +# Strings for the drop-down window to manage your active account +account-drop-down-none-selected = Κανένας λογαριασμός δεν έχει επιλεχθεί +# Strings for the drop-down window to manage your active account +account-drop-down-log-out = Αποσύνδεση +# Strings for the drop-down window to manage your active account +account-drop-down-switch-account = Αλλαγή λογαριασμού: +# Strings for the drop-down window to manage your active account +account-drop-down-select-account = Επιλογή λογαριασμού: +# Strings for the drop-down window to manage your active account +account-drop-down-add-account = Πρόσθεση λογαριασμού +# Localization for the "add favorite server" dialog window +add-favorite-window-label-name = Όνομα: +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-connecting = Σύνδεση... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-cancel = Ακύρωση +# Strings for the "direct connect" dialog window. +direct-connect-connect = Σύνδεση +# Strings for the "hub settings" dialog window. +hub-settings-title = Ρυθμίσεις Hub +# Strings for the "hub settings" dialog window. +hub-settings-button-reset-tooltip = Επαναφορά στις προεπιλεγμένες ρυθμίσεις +# Strings for the "hub settings" dialog window. +hub-settings-button-cancel = Άκυρο +# Strings for 2FA login +login-2fa-button-cancel = Άκυρο +# Strings for the "login expired" view on login +login-expired-button-log-out = Αποσύνδεση +# Strings for the "forgot password" view on login +login-forgot-title = Ξέχασες κωδικό; +# Strings for the "forgot password" view on login +login-forgot-error = Σφάλμα +# Strings for the "login" view on login +login-login-password-watermark = Κωδικός +# Strings for the "login" view on login +login-login-username-watermark = Όνομα χρήστη και e-mail +# Strings for the drop-down window to manage your active account +account-drop-down-log-out-of = Αποσύνδεση από { $name } +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-unknown = Αυτό δεν πρέπει να το βλέπεις +# Strings for the "hub settings" dialog window. +hub-settings-button-reset = Επαναφορά +# Error messages for login +login-errors-button-ok = Οκ +# Strings for the "login expired" view on login +login-expired-button-forgot-password = Ξέχασες τον κωδικό σου; +# Strings for the "home" tab +tab-home-favorite-servers = Αγαπημένοι διακομιστές: +# Localization for the "add favorite server" dialog window +# 'Example' name shown as a watermark in the name input box +add-favorite-window-example-name = Διαστημικός Σταθμός Χονκ +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-update-error = Υπήρχε σφάλμα στη λήψη αρχείων από τον εξυπηρετητή. Εάν το πρόβλημα επιμένει ζητείστε βοήθεια στο Discord. +# Localization for the "add favorite server" dialog window +add-favorite-window-label-address = Διεύθυνση IP: +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-content-bundle = Φόρτωση... +# Localization for the "add favorite server" dialog window +add-favorite-window-title = Πρόσθεση αγαπημένου Εξυπηρετητή +# Localization for the "add favorite server" dialog window +add-favorite-window-address-invalid = Η διεύθυνση IP δεν είναι έγκυρη +# Strings for the drop-down window to manage your active account +account-drop-down-not-logged-in = Είστε Αποσυνδεμένοι +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-none = Αρχίζει η σύνδεση... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-updating = Ενημέρωση: { $status } +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connecting = Γίνεται λήψη πληροφοριών σύνδεσης από τον εξυπηρετητή… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connection-failed = Απέτυχε η σύνδεση στον εξυπηρετητή! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-starting-client = Αρχίζει το client… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-not-a-content-bundle = Το αρχείο δεν είναι έγκυρο content bundle! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-client-crashed = Το client κράσαρε κατά την εκκίνησή του. Εάν το πρόβλημα επιμένει ζητείστε βοήθεια στο Discord ή στο Github. +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-client-update = Γίνεται έλεγχος για ενημερωμένο content Εξυπηρετητή… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine = Γίνεται λήψη content εξυπηρετητή… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-content = Γίνεται λήψη του content από το εξυπηρετητή… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-fetching-manifest = Λήψη manifest εξυπηρετητή… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-verifying = Γίνεται επαλήθευση αρχείων λήψης… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-culling-engine = Γίνεται καθαρισμός παλιών αρχείων… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-culling-content = Γίνεται καθαρισμός παλιών αρχείων εξυπηρετητή… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-ready = Η ενημέρωση έγινε! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-committing-download = Γίνεται συγχρονισμός στον δίσκο… +# Strings for the "login" view on login +login-login-button-log-in = Σύνδεση +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-loading-into-db = Γίνεται αποθήκευσή περιουσιακών στοιχείων στη βάση δεδομένων… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-loading-content-bundle = Γίνεται φόρτοση content bundle… +# Strings for the "direct connect" dialog window. +direct-connect-title = Απευθείας σύνδεση… +# Strings for the "direct connect" dialog window. +direct-connect-text = Εισάγετε διεύθυνσή IP για να συνδεθείτε: +# Strings for the "direct connect" dialog window. +direct-connect-address-invalid = Η διεύθυνση IP δεν είναι έγκυρη +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-engine-modules = Γίνεται έλεγχος για εξαρτήσεις… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine-modules = Γίνεται λήψη επιπλέον εξαρτήσεων… +# Strings for the "hub settings" dialog window. +hub-settings-button-done = Τέλος +# Strings for the "hub settings" dialog window. +hub-settings-button-add-tooltip = Πρόσθεσε hub +# Strings for the "hub settings" dialog window. +hub-settings-button-remove-tooltip = Αφαίρεσε hub +# Strings for the "hub settings" dialog window. +hub-settings-button-increase-priority-tooltip = Αύξησε προτεραιότητα +# Strings for the "hub settings" dialog window. +hub-settings-button-decrease-priority-tooltip = Μείωσε προτεραιότητα +# Strings for the "hub settings" dialog window. +hub-settings-heading-default = Προκαθορισμένο +# Error messages for login +login-error-unknown = Άγνωστο σφάλμα +# Strings for the "login expired" view on login +login-expired-button-log-in = Σύνδεση +# Strings for the "hub settings" dialog window. +hub-settings-heading-custom = Προσαρμοσμένο +# Strings for the "hub settings" dialog window. +hub-settings-warning-invalid = Το hub δεν είναι έγκυρο (Μην ξεχάσετε να βάλετε http(s)://) +# Strings for the "hub settings" dialog window. +hub-settings-explanation = Εδώ μπορείτε να προσθέσετε επιπλέον hubs για την λύψη εξυπηρετητών. Συνιστάται να προσθέσετε μόνο hubs που εμπιστεύεσται, αφού μπορούν να υποδυθούν εξυπηρετητές από άλλα hubs. H σειρά των hubs είναι συμαντική; Αν δύο hubs διαφημίζουν τον ίδιο εξυπηρετητή τότε το Hub με την ποιο υψηλή φέση στην λίστα θα πάρει προτεραιότητα. +# Strings for the "hub settings" dialog window. +hub-settings-warning-duplicate = Διπλότυπα hubs +# Error messages for login +login-error-invalid-credentials = Τα στοιχεία σύνδεσης δεν είναι έγκυρα +# Error messages for login +login-error-account-unconfirmed = Το email για αυτό τον λογαριασμό πρέπει να επιβεβαιωθεί. Παρακαλώ κάντε επιβεβαίωση του email σας πριν προσπαθήσετε να συνδεθείτε +# Error messages for login +login-error-account-account-locked = Ο λογαριασμός σας έχει κλειδωθεί. Παρακαλώ επικοινωνήστε μαζί μας αν πιστεύετε ότι αυτό είναι λάθος. +# Strings for 2FA login +login-2fa-message = Παρακαλώ εισάγετε τον κωδικό αυθεντικοποίησης από την εφαρμογή σας. +# Strings for 2FA login +login-2fa-input-watermark = Κωδικός αυθεντικοποίησης +# Strings for 2FA login +login-2fa-button-confirm = Επιβεβαίωση +# Strings for 2FA login +login-2fa-button-recovery-code = Κωδικός επαναφοράς +# Strings for the "login expired" view on login +login-expired-title = Η σύνδεση σας έχει λέξει +# Strings for the "login expired" view on login +login-expired-message = + Η σύνοδος για αυτόν τον λογαριασμό έχει λέξει. + Παρακαλώ εισάγετε το συνθηματικό σας ξανά. +# Strings for the "login expired" view on login +login-expired-password-watermark = Συνθηματικό +# Strings for the "forgot password" view on login +login-forgot-message = Αν έχετε ξεχάσει το συνθηματικό σας. Μπορείτε να εισάγετε το email που είναι συνδεδεμένο με τον λογαριασμό σας για να λάβετε link επαναφοράς. +# Strings for the "forgot password" view on login +login-forgot-email-watermark = Το email σας +# Strings for the "forgot password" view on login +login-forgot-button-submit = Υποβολή +# Strings for the login screen +login-log-launcher = Log Launcher +# Strings for the "forgot password" view on login +login-forgot-success-title = Το email επαναφοράς έχει σταλεί +# Strings for the "login" view on login +login-login-busy-logging-in = Γίνετε σύνδεση… +# Strings for the general main window layout of the launcher +main-window-title = Space Station 14 Launcher +# Long region names for server tag filters (shown in tooltip) +region-asia-south-east = Νοτιοανατολική Ασία +# Long region names for server tag filters (shown in tooltip) +region-north-america-east = Βόρεια Αμερική Ανατολικά +# Long region names for server tag filters (shown in tooltip) +region-north-america-west = Βόρεια Αμερική Δύση +# Strings for the server filters menu +filters-title-language = Γλώσσα +# Short region names for server tag filters (shown in filter check box) +region-short-asia-east = Ανατολική Ασία +# Strings for the "servers" tab +filters = Φίλτρα ({ $filteredServers } / { $totalServers }) +# Strings for the server filters menu +filters-title = Φίλτρα +# Strings for entries in the server list (including home page) +server-entry-add-favorite = Προσθέστε Αγαπημένο +# Strings for entries in the server list (including home page) +server-entry-player-count = + { $players } / { $max -> + [0] ∞ + *[1] { $max } + } +# Strings for the "forgot password" view on login +login-forgot-button-back = Επιστροφή στη σελίδα εισόδου +# Strings for the "forgot password" view on login +login-forgot-busy-sending = Αποστολή email… +# Strings for the "login" view on login +login-login-title = Σύνδεση +# Strings for the "login" view on login +login-login-button-forgot = Ξέχασες τον κωδικό σου; +# Strings for the "login" view on login +login-login-button-resend = Ξαναστείλε email επιβεβαίωσης +# Strings for the "login" view on login +login-login-button-register = Δεν έχετε λογαριασμό; Κάντε εγγραφή! +# Strings for the general main window layout of the launcher +main-window-header-link-discord = Discord +# Strings for the general main window layout of the launcher +main-window-header-link-website = Ιστοσελίδα +# Long region names for server tag filters (shown in tooltip) +region-africa-south = Νότια Αφρική +# Long region names for server tag filters (shown in tooltip) +region-africa-north = Βόρεια Αφρική +# Long region names for server tag filters (shown in tooltip) +region-antarctica = Ανταρκτική +# Long region names for server tag filters (shown in tooltip) +region-asia-east = Ανατολική Ασία +# Long region names for server tag filters (shown in tooltip) +region-asia-north = Βόρεια Ασία +# Long region names for server tag filters (shown in tooltip) +region-central-america = Κεντρική Αμερική +# Long region names for server tag filters (shown in tooltip) +region-greenland = Γροιλανδία +# Long region names for server tag filters (shown in tooltip) +region-india = Ινδία +# Long region names for server tag filters (shown in tooltip) +region-middle-east = Μέση Ανατολή +# Long region names for server tag filters (shown in tooltip) +region-the-moon = Το φεγγάρι +# Long region names for server tag filters (shown in tooltip) +region-north-america-central = Βόρεια Αμερική Κεντρική +# Strings for the general main window layout of the launcher +main-window-out-of-date-exit = Έξοδος +# Strings for the general main window layout of the launcher +main-window-early-access-title = Προσοχή! +# Strings for the general main window layout of the launcher +main-window-early-access-accept = Κατάλαβα! +# Long region names for server tag filters (shown in tooltip) +region-africa-central = Κεντρική Αφρική +# Long region names for server tag filters (shown in tooltip) +region-oceania = Ωκεανία +# Long region names for server tag filters (shown in tooltip) +region-south-america-east = Νότια Αμερική Ανατολικά +# Long region names for server tag filters (shown in tooltip) +region-south-america-south = Νότια Αμερική Νότια +# Long region names for server tag filters (shown in tooltip) +region-south-america-west = Νότια Αμερική Δύση +# Short region names for server tag filters (shown in filter check box) +region-short-africa-central = Κεντρική Αφρική +# Short region names for server tag filters (shown in filter check box) +region-short-africa-north = Βόρεια Αφρική +# Short region names for server tag filters (shown in filter check box) +region-short-africa-south = Νότια Αφρική +# Short region names for server tag filters (shown in filter check box) +region-short-antarctica = Ανταρκτική +# Short region names for server tag filters (shown in filter check box) +region-short-asia-north = Βόρεια Ασία +# Short region names for server tag filters (shown in filter check box) +region-short-asia-south-east = Νοτιοανατολική Ασία +# Short region names for server tag filters (shown in filter check box) +region-short-central-america = Κεντρική Αμερική +# Short region names for server tag filters (shown in filter check box) +region-short-greenland = Γροιλανδία +# Short region names for server tag filters (shown in filter check box) +region-short-india = Ινδία +# Short region names for server tag filters (shown in filter check box) +region-short-middle-east = Μέση Ανατολή +# Short region names for server tag filters (shown in filter check box) +region-short-the-moon = Το φεγγάρι +# Short region names for server tag filters (shown in filter check box) +region-short-oceania = Ωκεανία +# Strings for the "servers" tab +tab-servers-title = Εξυπηρετητές +# Strings for the "servers" tab +tab-servers-refresh = Ανανέωση +# Strings for the "servers" tab +tab-servers-table-players = Παίκτες +# Strings for the "servers" tab +tab-servers-table-name = Όνομα διακομιστή +# Strings for the server filters menu +filters-title-region = Περιοχή +# Strings for the server filters menu +filters-title-player-count = Αριθμός παικτών +# Strings for the server filters menu +filters-title-18 = 18+ +# Strings for the server filters menu +filters-title-hub = Hub +# Strings for the server filters menu +filters-18-yes = Ναι +# Strings for the server filters menu +filters-18-yes-desc = Ναι +# Strings for the server filters menu +filters-18-no = Όχι +# Strings for the server filters menu +filters-18-no-desc = Όχι +# Strings for entries in the server list (including home page) +server-entry-connect = Σύνδεση +# Strings for entries in the server list (including home page) +server-entry-remove-favorite = Αφαίρεση αγαπημένου +# Strings for entries in the server list (including home page) +server-entry-offline = OFFLINE +# Strings for the "options" tab +tab-options-hub-settings = Ρυθμίσεις Hub +# Strings for the "register confirmation" view on login +login-confirmation-button-cancel = Ακύρωση +# Strings for the "register confirmation" view on login +login-confirmation-busy = Γίνετε σύνδεση… diff --git a/SS14.Launcher/Assets/Locale/en-US/text.ftl b/SS14.Launcher/Assets/Locale/en-US/text.ftl new file mode 100644 index 00000000..54d45ae4 --- /dev/null +++ b/SS14.Launcher/Assets/Locale/en-US/text.ftl @@ -0,0 +1,339 @@ +## Strings for the drop-down window to manage your active account + +account-drop-down-none-selected = No account selected +account-drop-down-not-logged-in = Not logged in +account-drop-down-log-out = Log out +account-drop-down-log-out-of = Log out of { $name } +account-drop-down-switch-account = Switch account: +account-drop-down-select-account = Select account: +account-drop-down-add-account = Add account + +## Localization for the "add favorite server" dialog window + +add-favorite-window-title = Add Favorite Server +add-favorite-window-address-invalid = Address is invalid +add-favorite-window-label-name = Name: +add-favorite-window-label-address = Address: +# 'Example' name shown as a watermark in the name input box +add-favorite-window-example-name = Honk Station + +## Strings for the "connecting" menu that appears when connecting to a server. + +connecting-title-connecting = Connecting… +connecting-title-content-bundle = Loading… +connecting-cancel = Cancel +connecting-status-none = Starting connection… +connecting-status-update-error = There was an error while downloading server content. Please ask on Discord for support if the problem persists. +connecting-status-updating = Updating: { $status } +connecting-status-connecting = Fetching connection info from server… +connecting-status-connection-failed = Failed to connect to server! +connecting-status-starting-client = Starting client… +connecting-status-not-a-content-bundle = File is not a valid content bundle! +connecting-status-client-crashed = Client seems to have crashed while starting. If this persists, please ask on Discord or GitHub for support. +connecting-update-status-checking-client-update = Checking for server content update… +connecting-update-status-downloading-engine = Downloading server content… +connecting-update-status-downloading-content = Downloading server content… +connecting-update-status-fetching-manifest = Fetching server manifest… +connecting-update-status-verifying = Verifying download integrity… +connecting-update-status-culling-engine = Clearing old content… +connecting-update-status-culling-content = Clearing old server content… +connecting-update-status-ready = Update done! +connecting-update-status-checking-engine-modules = Checking for additional dependencies… +connecting-update-status-downloading-engine-modules = Downloading extra dependencies… +connecting-update-status-committing-download = Synchronizing to disk… +connecting-update-status-loading-into-db = Storing assets in database… +connecting-update-status-loading-content-bundle = Loading content bundle… +connecting-update-status-unknown = You shouldn't see this + +## Strings for the "direct connect" dialog window. + +direct-connect-title = Direct Connect… +direct-connect-text = Enter server address to connect: +direct-connect-connect = Connect +direct-connect-address-invalid = Address is invalid + +## Strings for the "hub settings" dialog window. + +hub-settings-title = Hub Settings +hub-settings-button-done = Done +hub-settings-button-cancel = Cancel +hub-settings-button-reset = Reset +hub-settings-button-reset-tooltip = Reset to default settings +hub-settings-button-add-tooltip = Add hub +hub-settings-button-remove-tooltip = Remove hub +hub-settings-button-increase-priority-tooltip = Increase priority +hub-settings-button-decrease-priority-tooltip = Decrease priority +hub-settings-explanation = Here you can add extra hubs to fetch game servers from. You should only add hubs that you trust, as they can 'spoof' game servers from other hubs. The order of the hubs matters; if two hubs advertise the same game server the hub with the higher priority (higher in the list) will take precedence. +hub-settings-heading-default = Default +hub-settings-heading-custom = Custom +hub-settings-warning-invalid = Invalid hub (don't forget http(s)://) +hub-settings-warning-duplicate = Duplicate hubs + +## Strings for the login screen + +login-log-launcher = Log Launcher + +## Error messages for login + +login-error-invalid-credentials = Invalid login credentials +login-error-account-unconfirmed = The email address for this account still needs to be confirmed. Please confirm your email address before trying to log in +login-error-account-2fa-required = 2-factor authentication required +login-error-account-2fa-invalid = 2-factor authentication code invalid +login-error-account-account-locked = Account has been locked. Please contact us if you believe this to be in error. +login-error-unknown = Unknown error +login-errors-button-ok = Ok + +## Strings for 2FA login + +login-2fa-title = 2-factor authentication required +login-2fa-message = Please enter the authentication code from your app. +login-2fa-input-watermark = Authentication code +login-2fa-button-confirm = Confirm +login-2fa-button-recovery-code = Recovery code +login-2fa-button-cancel = Cancel + +## Strings for the "login expired" view on login + +login-expired-title = Login expired +login-expired-message = + The session for this account has expired. + Please re-enter your password. +login-expired-password-watermark = Password +login-expired-button-log-in = Log in +login-expired-button-log-out = Log out +login-expired-button-forgot-password = Forgot your password? + +## Strings for the "forgot password" view on login + +login-forgot-title = Forgot password? +login-forgot-message = If you've forgotten your password, you can enter the email address associated with your account here to receive a reset link. +login-forgot-email-watermark = Your email address +login-forgot-button-submit = Submit +login-forgot-button-back = Back to login +login-forgot-busy-sending = Sending email… +login-forgot-success-title = Reset email sent +login-forgot-success-message = A reset link has been sent to your email address. +login-forgot-error = Error + +## Strings for the "login" view on login + +login-login-title = Log in +login-login-username-watermark = Username or email +login-login-password-watermark = Password +login-login-button-log-in = Log in +login-login-button-forgot = Forgot your password? +login-login-button-resend = Resend email confirmation +login-login-button-register = Don't have an account? Register! +login-login-busy-logging-in = Logging in… +login-login-error-title = Unable to log in + +## Strings for the "register confirmation" view on login + +login-confirmation-confirmation-title = Register confirmation +login-confirmation-confirmation-message = Please check your email to confirm your account. Once you have confirmed your account, press the button below to log in. +login-confirmation-button-confirm = I have confirmed my account +login-confirmation-button-cancel = Cancel +login-confirmation-busy = Logging in… + +## Strings for the general main window layout of the launcher + +main-window-title = Space Station 14 Launcher +main-window-header-link-discord = Discord +main-window-header-link-website = Website +main-window-out-of-date = Launcher out of date +main-window-out-of-date-desc = + This launcher is out of date. + Please download a new version from our website. +main-window-out-of-date-desc-steam = + This launcher is out of date. + Please allow Steam to update the game. +main-window-out-of-date-exit = Exit +main-window-out-of-date-download-manual = Download (manual) +main-window-early-access-title = Heads up! +main-window-early-access-desc = Space Station 14 is still very much in alpha. We hope you like what you see, and maybe even stick around, but make sure to keep your expectations modest for the time being. +main-window-early-access-accept = Got it! +main-window-drag-drop-prompt = Drop to run game +main-window-busy-checking-update = Checking for launcher update… +main-window-busy-checking-login-status = Refreshing login status… +main-window-busy-checking-account-status = Checking account status +main-window-error-connecting-auth-server = Error connecting to authentication server +main-window-error-unknown = Unknown error occurred + +## Long region names for server tag filters (shown in tooltip) + +region-africa-central = Africa Central +region-africa-north = Africa North +region-africa-south = Africa South +region-antarctica = Antarctica +region-asia-east = Asia East +region-asia-north = Asia North +region-asia-south-east = Asia South East +region-central-america = Central America +region-europe-east = Europe East +region-europe-west = Europe West +region-greenland = Greenland +region-india = India +region-middle-east = Middle East +region-the-moon = The Moon +region-north-america-central = North America Central +region-north-america-east = North America East +region-north-america-west = North America West +region-oceania = Oceania +region-south-america-east = South America East +region-south-america-south = South America South +region-south-america-west = South America West + +## Short region names for server tag filters (shown in filter check box) + +region-short-africa-central = Africa Central +region-short-africa-north = Africa North +region-short-africa-south = Africa South +region-short-antarctica = Antarctica +region-short-asia-east = Asia East +region-short-asia-north = Asia North +region-short-asia-south-east = Asia South East +region-short-central-america = Central America +region-short-europe-east = Europe East +region-short-europe-west = Europe West +region-short-greenland = Greenland +region-short-india = India +region-short-middle-east = Middle East +region-short-the-moon = The Moon +region-short-north-america-central = NA Central +region-short-north-america-east = NA East +region-short-north-america-west = NA West +region-short-oceania = Oceania +region-short-south-america-east = SA East +region-short-south-america-south = SA South +region-short-south-america-west = SA West + +## Strings for the "servers" tab + +tab-servers-title = Servers +tab-servers-refresh = Refresh +filters = Filters ({ $filteredServers } / { $totalServers }) +tab-servers-search-watermark = Search For Servers… +tab-servers-table-players = Players +tab-servers-table-name = Server Name +tab-servers-list-status-error = There was an error fetching the master server lists. +tab-servers-list-status-partial-error = Failed to fetch some or all server lists. Ensure your hub configuration is correct. +tab-servers-list-status-updating-master = Fetching master server list… +tab-servers-list-status-none-filtered = No servers match your search or filter settings. +tab-servers-list-status-none = There are no public servers. Ensure your hub configuration is correct. + +## Strings for the server filters menu + +filters-title = Filters +filters-title-language = Language +filters-title-region = Region +filters-title-rp = Role-play level +filters-title-player-count = Player count +filters-title-18 = 18+ +filters-title-hub = Hub +filters-18-yes = Yes +filters-18-yes-desc = Yes +filters-18-no = No +filters-18-no-desc = No +filters-player-count-hide-empty = Hide empty +filters-player-count-hide-empty-desc = Servers with no players will not be shown +filters-player-count-hide-full = Hide full +filters-player-count-hide-full-desc = Servers that are full will not be shown +filters-player-count-minimum = Minimum: +filters-player-count-minimum-desc = Servers with less players will not be shown +filters-player-count-maximum = Maximum: +filters-player-count-maximum-desc = Servers with more players will not be shown +filters-unspecified-desc = Unspecified +filters-unspecified = Unspecified + +## Server roleplay levels for the filters menu + +filters-rp-none = None +filters-rp-none-desc = None +filters-rp-low = Low +filters-rp-low-desc = Low +filters-rp-medium = Medium +filters-rp-medium-desc = Medium +filters-rp-high = High +filters-rp-high-desc = High + +## Strings for entries in the server list (including home page) + +server-entry-connect = Connect +server-entry-add-favorite = Add Favorite +server-entry-remove-favorite = Remove Favorite +server-entry-offline = OFFLINE +server-entry-player-count = + { $players } / { $max -> + [0] ∞ + *[1] { $max } + } +server-entry-fetching = Fetching… +server-entry-description-offline = Unable to contact server +server-entry-description-fetching = Fetching server status… +server-entry-description-error = Error while fetching server description +server-entry-description-none = No server description provided +server-fetched-from-hub = Fetched from { $hub } + +## Strings for the "Development" tab +## These aren't shown to users so they're not very important + +tab-development-title = { "[" }DEV] +tab-development-title-override = { "[" }DEV (override active!!!)] +tab-development-disable-signing = Disable Engine Signature Checks +tab-development-disable-signing-desc = { "[" }DEV ONLY] Disables verification of engine signatures. DO NOT ENABLE UNLESS YOU KNOW EXACTLY WHAT YOU'RE DOING. +tab-development-enable-engine-override = Enable engine override +tab-development-enable-engine-override-desc = Override path to load engine zips from (release/ in RobustToolbox) + +## Strings for the "home" tab + +tab-home-title = Home +tab-home-favorite-servers = Favorite Servers: +tab-home-add-favorite = Add Favorite… +tab-home-refresh = Refresh +tab-home-direct-connect = Direct Connect To Server… +tab-home-run-content-bundle = Run content bundle/replay +tab-home-go-to-servers-tab = Go to the servers tab +tab-home-favorites-guide = Mark servers as favorite for easy access here + +## Strings for the "news" tab + +tab-news-title = News +tab-news-recent-news = Recent News: +tab-news-pulling-news = Pulling news… + +## Strings for the "options" tab + +tab-options-title = Options +tab-options-flip = { "*" }flip +tab-options-clear-engines = Clear installed engines +tab-options-clear-content = Clear installed server content +tab-options-open-log-directory = Open log directory +tab-options-account-settings = Account Settings +tab-options-account-settings-desc = You can manage your account settings, such as changing email or password, through our website. +tab-options-compatibility-mode = Compatibility Mode +tab-options-compatibility-mode-desc = This uses OpenGL ES 2 (via ANGLE if necessary), which is less likely to suffer from driver bugs. Try this if you are experiencing graphical issues or crashes. +tab-options-log-client = Log Client +tab-options-log-client-desc = Enables logging of any game client output. Useful for developers. +tab-options-log-launcher = Log Launcher +tab-options-log-launcher-desc = Enables logging of the launcher. Useful for developers. (requires launcher restart) +tab-options-verbose-launcher-logging = Verbose Launcher Logging +tab-options-verbose-launcher-logging-desc = For when the developers are *very* stumped with your problem. (requires launcher restart) +tab-options-seasonal-branding = Seasonal Branding +tab-options-seasonal-branding-desc = Whatever temporally relevant icons and logos we can come up with. +tab-options-disable-signing = Disable Engine Signature Checks +tab-options-disable-signing-desc = { "[" }DEV ONLY] Disables verification of engine signatures. DO NOT ENABLE UNLESS YOU KNOW EXACTLY WHAT YOU'RE DOING. +tab-options-hub-settings = Hub Settings +tab-options-hub-settings-desc = Change what hub server or servers you would like to use to fetch the server list. + +## For the language selection menu. + +# Text on the button that opens the menu. +language-selector-label = Language +# "Save" button. +language-selector-save = Save +# "Cancel" button. +language-selector-cancel = Cancel +language-selector-help-translate = Want to help translate? You can! +language-selector-system-language = System language ({ $languageName }) +# Used for contents of each language button. +language-selector-language = { $languageName } ({ $englishName }) diff --git a/SS14.Launcher/Assets/Locale/es/text.ftl b/SS14.Launcher/Assets/Locale/es/text.ftl new file mode 100644 index 00000000..375d5cfe --- /dev/null +++ b/SS14.Launcher/Assets/Locale/es/text.ftl @@ -0,0 +1,148 @@ +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-update-error = Hubo un error descargando el contenido del servidor. Por favor pregunte en Discord por soporte si el problema persiste. +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-updating = Actualizando:{ $status } +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connecting = Obteniendo info de conexion del server... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-starting-client = Iniciando cliente... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-client-crashed = El cliente ha crasheado mientras se iniciaba. Si el problema persiste, porfavor pregunte en Discord o Github por soporte. +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-client-update = Verificando por actualizaciones de contenido... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine = Descargando contenido del server... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-fetching-manifest = Buscando manifiesto del server... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-culling-engine = Limpiando contenido viejo... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-culling-content = Limpiando contenido viejo del server... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-ready = Actualizacion lista! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-engine-modules = Verificando por dependencia adicionales... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine-modules = Descargando dependencias adicionales... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-committing-download = Sincronizando al disco... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-loading-into-db = Guardando archivos a la base de datos... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-loading-content-bundle = Cargando paquete de contenido... +# Strings for the "direct connect" dialog window. +direct-connect-title = Conexion directa... +# Strings for the "direct connect" dialog window. +direct-connect-text = Ingresa la direccion de server: +# Strings for the "direct connect" dialog window. +direct-connect-connect = Conectar +# Strings for the "direct connect" dialog window. +direct-connect-address-invalid = Direccion invalida +# Strings for the "hub settings" dialog window. +hub-settings-title = Configuracion del Hub +# Strings for the "hub settings" dialog window. +hub-settings-button-done = Listo +# Strings for the "hub settings" dialog window. +hub-settings-button-cancel = Cancelar +# Strings for the "hub settings" dialog window. +hub-settings-button-reset = Reiniciar +# Strings for the "hub settings" dialog window. +hub-settings-button-reset-tooltip = Reiniciar a configuracion predeterminada +# Strings for the "hub settings" dialog window. +hub-settings-button-add-tooltip = Añadir hub +# Strings for the "hub settings" dialog window. +hub-settings-button-remove-tooltip = Remover hub +# Strings for the "hub settings" dialog window. +hub-settings-button-increase-priority-tooltip = Incrementar prioridad +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-verifying = Verificando la integridad de descarga... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connection-failed = Error de conexion al server! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-not-a-content-bundle = El archivo no es un paquete de contenido valido! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-unknown = No deberias ver esto +# Strings for the "hub settings" dialog window. +hub-settings-button-decrease-priority-tooltip = Reducir prioridad +# Strings for the "hub settings" dialog window. +hub-settings-explanation = Aqui puedes añadir hubs extra para mostrar mas servers. Solo añada hubs que confies, ya que puede 'spoofear' servers de otros hubs. El orden de los hubs importa; si dos hubs anuncian el mismo server el hub con mayor prioridad(mas arriba en la lista) tomara precedencia. +# Strings for the "forgot password" view on login +login-forgot-message = Si se olvido su contraseña, puede ingresar la direccion de email asociada con su cuenta aqui para recibir un link de restauracion. +# Strings for 2FA login +login-2fa-message = Por favor ingrese el codigo de autenticacion de la app. +# Strings for the "login expired" view on login +login-expired-button-forgot-password = ¿Olvido su contraseña? +# Strings for the "hub settings" dialog window. +hub-settings-heading-default = Default +# Strings for the "hub settings" dialog window. +hub-settings-heading-custom = Custom +# Strings for the "hub settings" dialog window. +hub-settings-warning-invalid = Hub Invalido (No olvides http(s)://) +# Strings for the "hub settings" dialog window. +hub-settings-warning-duplicate = Duplicar hubs +# Strings for the login screen +login-log-launcher = Logear Launcher +# Error messages for login +login-error-invalid-credentials = Credenciales de login invalidas +# Error messages for login +login-error-account-unconfirmed = La direccion de email para esta cuenta aun debe ser confirmada. Por favor confirma la direccion de email antes de intentar acceder +# Error messages for login +login-error-account-2fa-invalid = Codigo de auntenticacion de factores invalida +# Error messages for login +login-error-account-account-locked = Esta cuenta ha sido bloqueada. Por favor contactenos si crees que esto fue un error. +# Error messages for login +login-error-unknown = Error desconocido +# Error messages for login +login-errors-button-ok = Ok +# Error messages for login +login-error-account-2fa-required = Autenticacion en dos pasos requerida +# Strings for 2FA login +login-2fa-title = Autenticacion de dos pasos requerida +# Strings for 2FA login +login-2fa-input-watermark = Codigo de autenticacion +# Strings for 2FA login +login-2fa-button-confirm = Confirmar +# Strings for 2FA login +login-2fa-button-recovery-code = Codigo de recuperacion +# Strings for 2FA login +login-2fa-button-cancel = Cancelar +# Strings for the "login expired" view on login +login-expired-title = Login expirado +# Strings for the "login expired" view on login +login-expired-message = + La sesion para esta cuenta ha expirado. + Por favor reingrese su contraseña. +# Strings for the "login expired" view on login +login-expired-password-watermark = Contraseña +# Strings for the "login expired" view on login +login-expired-button-log-in = Acceder +# Strings for the "login expired" view on login +login-expired-button-log-out = Salir +# Strings for the "forgot password" view on login +login-forgot-title = ¿Olvido contraseña? +# Strings for the "forgot password" view on login +login-forgot-email-watermark = Su direccion de email +# Strings for the "forgot password" view on login +login-forgot-button-submit = Enviar +# Strings for the "forgot password" view on login +login-forgot-button-back = Regresar al login +# Strings for the "forgot password" view on login +login-forgot-busy-sending = Enviando email... +# Strings for the "forgot password" view on login +login-forgot-success-title = Email de reinicio enviado +# Strings for the "forgot password" view on login +login-forgot-success-message = Un link de reinicio ha sido enviado a su direccion de email. +# Strings for the "login" view on login +login-login-title = Acceder +# Strings for the "forgot password" view on login +login-forgot-error = Error +# Strings for the "login" view on login +login-login-button-resend = Reenviar email de confirmacion +# Strings for the "login" view on login +login-login-username-watermark = Nombre de usuario o email +# Strings for the "login" view on login +login-login-password-watermark = Contraseña +# Strings for the "login" view on login +login-login-button-log-in = Acceder +# Strings for the "login" view on login +login-login-button-forgot = ¿Olvido su contraseña? diff --git a/SS14.Launcher/Assets/Locale/nl/text.ftl b/SS14.Launcher/Assets/Locale/nl/text.ftl new file mode 100644 index 00000000..3c4fa04b --- /dev/null +++ b/SS14.Launcher/Assets/Locale/nl/text.ftl @@ -0,0 +1,525 @@ +# Strings for the drop-down window to manage your active account +account-drop-down-not-logged-in = Niet ingelogd +# Strings for the drop-down window to manage your active account +account-drop-down-log-out = Uitloggen +# Strings for the drop-down window to manage your active account +account-drop-down-none-selected = Geen account geselecteerd +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-fetching-manifest = Ophalen lijst van serverinhoud… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-verifying = Downloadintegriteit verifiëren… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-culling-engine = Oude inhoud verwijderen… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-ready = Update klaar! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-engine-modules = Zoeken voor extra onderdelen… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine-modules = Downloaden van extra onderdelen… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-committing-download = Synchroniseren met opslag… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-loading-into-db = Opslaan van bestanden in databank… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-loading-content-bundle = Laden van contentbundel… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-unknown = Je hoort dit niet te zien +# Strings for the "direct connect" dialog window. +direct-connect-title = Direct verbinden… +# Strings for the "direct connect" dialog window. +direct-connect-text = Voer serveradres in om te connecteren: +# Strings for the "direct connect" dialog window. +direct-connect-connect = Verbind +# Strings for the "direct connect" dialog window. +direct-connect-address-invalid = Adres is ongeldig +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connection-failed = Kan geen verbinding maken met de server! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-starting-client = Starten van client… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-client-update = Controleren op update van serverinhoud… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine = Downloaden van serverinhoud… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-not-a-content-bundle = Bestand is geen geldige contentbundel! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-content = Downloaden van serverinhoud… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-connecting = Bezig met verbinden… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-none = Starten van verbinding… +# Strings for the drop-down window to manage your active account +account-drop-down-log-out-of = Van { $name } uitloggen +# Localization for the "add favorite server" dialog window +add-favorite-window-title = Voeg favoriete server toe +# Strings for the drop-down window to manage your active account +account-drop-down-switch-account = Wissel account: +# Strings for the drop-down window to manage your active account +account-drop-down-select-account = Selecteer account: +# Localization for the "add favorite server" dialog window +add-favorite-window-address-invalid = Adres is ongeldig +# Localization for the "add favorite server" dialog window +add-favorite-window-label-name = Naam: +# Localization for the "add favorite server" dialog window +add-favorite-window-label-address = Adres: +# Localization for the "add favorite server" dialog window +# 'Example' name shown as a watermark in the name input box +add-favorite-window-example-name = Honk Station +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-content-bundle = Bezig met laden… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-cancel = Annuleer +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-updating = Updaten: { $status } +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connecting = Verbindingsgegevens ophalen van server… +# Strings for the "hub settings" dialog window. +hub-settings-button-done = Klaar +# Strings for the "hub settings" dialog window. +hub-settings-button-cancel = Annuleer +# Strings for the "hub settings" dialog window. +hub-settings-button-reset = Zet terug +# Strings for the "hub settings" dialog window. +hub-settings-button-reset-tooltip = Zet terug naar standaardinstellingen +# Strings for the "hub settings" dialog window. +hub-settings-button-add-tooltip = Voeg hub toe +# Strings for the "hub settings" dialog window. +hub-settings-button-remove-tooltip = Verwijder hub +# Strings for the "hub settings" dialog window. +hub-settings-button-decrease-priority-tooltip = Prioriteit verlagen +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-client-crashed = Het lijkt dat de client gecrasht is tijdens het starten. Als dit blijft gebeuren, vaag op Discord of GitHub om ondersteuning. +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-culling-content = Oude serverinhoud verwijderen… +# Strings for the "hub settings" dialog window. +hub-settings-title = Hubinstellingen +# Strings for the "hub settings" dialog window. +hub-settings-button-increase-priority-tooltip = Prioriteit verhogen +# Strings for the drop-down window to manage your active account +account-drop-down-add-account = Voeg account toe +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-update-error = Er was een fout tijdens het downloaden van serverinhoud. Vraag op Discord om ondersteuning als het probleem blijft bestaan. +# Strings for the "forgot password" view on login +login-forgot-title = Wachtwoord vergeten? +# Strings for the "forgot password" view on login +login-forgot-message = Als je jouw wachtwoord vergeten bent, kan je hier het e-mailadres van je account ingeven om een herstellink te ontvangen. +# Strings for the "hub settings" dialog window. +hub-settings-explanation = Hier kan je extra hubs toevoegen om spelservers van te halen. Voeg alleen hubs toe die je vertrouwt, want ze kunnen spelservers van andere hubs vals nabootsen. De volgorde van de hubs is belangrijk; als twee hubs dezelfde spelserver adverteren zal de hub met hogere prioriteit (hoger in de lijst) voorrang krijgen. +# Strings for the "hub settings" dialog window. +hub-settings-heading-default = Standaard +# Strings for the "hub settings" dialog window. +hub-settings-heading-custom = Toegevoegd +# Strings for the "hub settings" dialog window. +hub-settings-warning-invalid = Ongeldige hub (vergeet http(s):// niet) +# Strings for the "hub settings" dialog window. +hub-settings-warning-duplicate = Dubbele hubs +# Strings for the login screen +login-log-launcher = Log Launcher +# Error messages for login +login-error-invalid-credentials = Ongeldige inloggegevens +# Error messages for login +login-error-account-unconfirmed = Het e-mailadres voor deze account moet nog bevestigd worden. Bevestig uw e-mailadres voordat u probeert in te loggen +# Error messages for login +login-error-account-2fa-required = 2-factor authenticatie vereist +# Error messages for login +login-error-account-2fa-invalid = 2-factor authenticatie code ongeldig +# Error messages for login +login-error-account-account-locked = Account is vergrendeld. Neem contact met ons op als u denkt dat dit een fout is. +# Error messages for login +login-error-unknown = Onbekende fout +# Error messages for login +login-errors-button-ok = OK +# Strings for 2FA login +login-2fa-title = 2-factor authenticatie vereist +# Strings for 2FA login +login-2fa-message = Voer de authenticatiecode van je app in. +# Strings for 2FA login +login-2fa-input-watermark = Authenticatiecode +# Strings for 2FA login +login-2fa-button-confirm = Bevestig +# Strings for 2FA login +login-2fa-button-recovery-code = Herstelcode +# Strings for 2FA login +login-2fa-button-cancel = Annuleer +# Strings for the "login expired" view on login +login-expired-title = Sessie verlopen +# Strings for the "login expired" view on login +login-expired-message = + De sessie voor deze account is verlopen. + Voer uw wachtwoord opnieuw in. +# Strings for the "login expired" view on login +login-expired-password-watermark = Wachtwoord +# Strings for the "login expired" view on login +login-expired-button-log-in = Inloggen +# Strings for the "login expired" view on login +login-expired-button-log-out = Uitloggen +# Strings for the "login expired" view on login +login-expired-button-forgot-password = Wachtwoord vergeten? +# Strings for the "forgot password" view on login +login-forgot-email-watermark = Jouw e-mailadres +# Strings for the "forgot password" view on login +login-forgot-button-submit = Indienen +# Strings for the "forgot password" view on login +login-forgot-button-back = Terug naar inloggen +# Strings for the "forgot password" view on login +login-forgot-busy-sending = E-mail verzenden… +# Strings for the "forgot password" view on login +login-forgot-success-title = Herstele-mail verzonden +# Strings for the "forgot password" view on login +login-forgot-success-message = Er is een herstellink naar uw e-mailadres verzonden. +# Strings for the "forgot password" view on login +login-forgot-error = Fout +# Strings for the "login" view on login +login-login-title = Inloggen +# Strings for the "login" view on login +login-login-username-watermark = Gebruikersnaam of e-mail +# Strings for the "login" view on login +login-login-password-watermark = Wachtwoord +# Strings for the "login" view on login +login-login-button-log-in = Inloggen +# Strings for the "login" view on login +login-login-button-forgot = Wachtwoord vergeten? +# Strings for the "login" view on login +login-login-button-resend = Stuur e-mailbevestiging opnieuw +# Strings for the "login" view on login +login-login-busy-logging-in = Inloggen… +# Strings for the "login" view on login +login-login-error-title = Kan niet inloggen +# Strings for the "login" view on login +login-login-button-register = Heb je nog geen account? Registreer! +# Strings for entries in the server list (including home page) +server-entry-player-count = + { $players } / { $max -> + [0] ∞ + *[1] { $max } + } +# Strings for the server filters menu +filters-18-no = Nee +# Strings for the server filters menu +filters-18-no-desc = Nee +# Strings for the general main window layout of the launcher +main-window-title = Space Station 14 Launcher +# Strings for the general main window layout of the launcher +main-window-header-link-discord = Discord +# Strings for the general main window layout of the launcher +main-window-header-link-website = Website +# Strings for the general main window layout of the launcher +main-window-out-of-date = Launcher is te oud +# Strings for the general main window layout of the launcher +main-window-out-of-date-desc = + Deze launcher is te oud. + Download een nieuwe versie van onze website. +# Strings for the general main window layout of the launcher +main-window-out-of-date-desc-steam = + Deze launcher is te oud. + Laat Steam een update downloaden voor het spel. +# Strings for the general main window layout of the launcher +main-window-out-of-date-exit = Sluit launcher +# Strings for the general main window layout of the launcher +main-window-out-of-date-download-manual = Download (manueel) +# Strings for the general main window layout of the launcher +main-window-early-access-title = Opmerking! +# Strings for the general main window layout of the launcher +main-window-early-access-desc = Space Station 14 is nog steeds een alpha. We hopen dat het spel nu al leuk is en dat je hier blijft, maar zorg dat je verwachtingen niet te hoog liggen. +# Strings for the general main window layout of the launcher +main-window-busy-checking-update = Controleren op launcher-update… +# Strings for the general main window layout of the launcher +main-window-busy-checking-login-status = Login status controleren… +# Strings for the general main window layout of the launcher +main-window-busy-checking-account-status = Account status controleren +# Strings for the general main window layout of the launcher +main-window-error-connecting-auth-server = Verbindingsfout met authenticatieserver +# Strings for the general main window layout of the launcher +main-window-error-unknown = Onbekende fout opgetreden +# Long region names for server tag filters (shown in tooltip) +region-africa-central = Afrika Centraal +# Long region names for server tag filters (shown in tooltip) +region-africa-north = Afrika Noord +# Long region names for server tag filters (shown in tooltip) +region-africa-south = Afrika Zuid +# Long region names for server tag filters (shown in tooltip) +region-antarctica = Antarctica +# Long region names for server tag filters (shown in tooltip) +region-asia-east = Azië Oost +# Long region names for server tag filters (shown in tooltip) +region-asia-south-east = Azië Zuidoost +# Long region names for server tag filters (shown in tooltip) +region-central-america = Centraal Amerika +# Long region names for server tag filters (shown in tooltip) +region-europe-east = Europa Oost +# Long region names for server tag filters (shown in tooltip) +region-europe-west = Europa West +# Long region names for server tag filters (shown in tooltip) +region-greenland = Groenland +# Long region names for server tag filters (shown in tooltip) +region-india = Indië +# Long region names for server tag filters (shown in tooltip) +region-middle-east = Midden-Oosten +# Long region names for server tag filters (shown in tooltip) +region-the-moon = De Maan +# Long region names for server tag filters (shown in tooltip) +region-north-america-central = Noord-Amerika Centraal +# Long region names for server tag filters (shown in tooltip) +region-north-america-east = Noord-Amerika Oost +# Long region names for server tag filters (shown in tooltip) +region-north-america-west = Noord-Amerika West +# Long region names for server tag filters (shown in tooltip) +region-oceania = Oceanië +# Long region names for server tag filters (shown in tooltip) +region-south-america-south = Zuid-Amerika Zuid +# Long region names for server tag filters (shown in tooltip) +region-south-america-west = Zuid-Amerika West +# Short region names for server tag filters (shown in filter check box) +region-short-africa-central = Afrika Centraal +# Short region names for server tag filters (shown in filter check box) +region-short-africa-north = Afrika Noord +# Short region names for server tag filters (shown in filter check box) +region-short-africa-south = Afrika Zuid +# Short region names for server tag filters (shown in filter check box) +region-short-antarctica = Antarctica +# Short region names for server tag filters (shown in filter check box) +region-short-asia-east = Azië Oost +# Strings for the server filters menu +filters-18-yes-desc = Ja +# Short region names for server tag filters (shown in filter check box) +region-short-asia-south-east = Azië Zuidoost +# Short region names for server tag filters (shown in filter check box) +region-short-europe-east = Europa Oost +# Short region names for server tag filters (shown in filter check box) +region-short-europe-west = Europa West +# Short region names for server tag filters (shown in filter check box) +region-short-greenland = Groenland +# Short region names for server tag filters (shown in filter check box) +region-short-india = India +# Short region names for server tag filters (shown in filter check box) +region-short-middle-east = Midden-Oosten +# Short region names for server tag filters (shown in filter check box) +region-short-the-moon = De Maan +# Short region names for server tag filters (shown in filter check box) +region-short-north-america-central = N.A. Centraal +# Short region names for server tag filters (shown in filter check box) +region-short-north-america-east = N.A. Oost +# Short region names for server tag filters (shown in filter check box) +region-short-north-america-west = N.A. West +# Short region names for server tag filters (shown in filter check box) +region-short-oceania = Oceanië +# Short region names for server tag filters (shown in filter check box) +region-short-south-america-east = Z.A. Oost +# Short region names for server tag filters (shown in filter check box) +region-short-south-america-south = Z.A. Zuid +# Short region names for server tag filters (shown in filter check box) +region-short-south-america-west = Z.A. West +# Strings for the "servers" tab +tab-servers-title = Servers +# Strings for the "servers" tab +tab-servers-refresh = Herladen +# Strings for the "servers" tab +filters = Filters ({ $filteredServers } / { $totalServers }) +# Strings for the "servers" tab +tab-servers-search-watermark = Zoek naar servers… +# Strings for the "servers" tab +tab-servers-table-players = Spelers +# Strings for the "servers" tab +tab-servers-table-name = Servernaam +# Strings for the "servers" tab +tab-servers-list-status-partial-error = Kan sommige of alle serverlijsten niet ophalen. Zorg dat je hubconfiguratie klopt. +# Strings for the "servers" tab +tab-servers-list-status-updating-master = Ophalen van hoofdserverlijst… +# Strings for the "servers" tab +tab-servers-list-status-none-filtered = Er zijn geen servers die overeenkomen met je zoek- of filterinstellingen. +# Strings for the server filters menu +filters-title = Filters +# Strings for the server filters menu +filters-title-language = Taal +# Strings for the server filters menu +filters-title-region = Regio +# Strings for the server filters menu +filters-title-player-count = Aantal spelers +# Strings for the server filters menu +filters-title-18 = 18+ +# Strings for the server filters menu +filters-title-hub = Hub +# Strings for the server filters menu +filters-18-yes = Ja +# Strings for entries in the server list (including home page) +server-entry-remove-favorite = Verwijder favoriet +# Strings for entries in the server list (including home page) +server-entry-offline = OFFLINE +# Strings for the server filters menu +filters-player-count-hide-empty-desc = Servers met geen spelers zullen niet zichtbaar zijn +# Strings for the server filters menu +filters-player-count-hide-full = Verberg volle +# Strings for the server filters menu +filters-player-count-hide-full-desc = Servers die vol zijn zullen niet zichtbaar zijn +# Strings for the server filters menu +filters-player-count-minimum = Minimum: +# Strings for the server filters menu +filters-player-count-maximum = Maximum: +# Strings for the server filters menu +filters-player-count-maximum-desc = Servers met meer spelers zullen niet zichtbaar zijn +# Strings for the server filters menu +filters-unspecified-desc = Niet gespecificeerd +# Strings for the server filters menu +filters-unspecified = Niet gespec. +# Server roleplay levels for the filters menu +filters-rp-none = Geen +# Server roleplay levels for the filters menu +filters-rp-none-desc = Geen +# Server roleplay levels for the filters menu +filters-rp-low = Laag +# Server roleplay levels for the filters menu +filters-rp-low-desc = Laag +# Server roleplay levels for the filters menu +filters-rp-medium = Middelmatig +# Server roleplay levels for the filters menu +filters-rp-medium-desc = Middelmatig +# Server roleplay levels for the filters menu +filters-rp-high = Hoog +# Server roleplay levels for the filters menu +filters-rp-high-desc = Hoog +# Strings for entries in the server list (including home page) +server-entry-connect = Verbind +# Strings for entries in the server list (including home page) +server-entry-add-favorite = Voeg favoriet toe +# Strings for the general main window layout of the launcher +main-window-early-access-accept = Ik snap het! +# Strings for the general main window layout of the launcher +main-window-drag-drop-prompt = Laat vallen om spel te starten +# Long region names for server tag filters (shown in tooltip) +region-south-america-east = Zuid-Amerika Oost +# Short region names for server tag filters (shown in filter check box) +region-short-central-america = Centraal Amerika +# Strings for the "servers" tab +tab-servers-list-status-error = Er was een fout bij het ophalen van de hoofdserverlijsten. +# Strings for the "servers" tab +tab-servers-list-status-none = Er zijn geen publieke servers. Zorg dat je hubconfiguratie klopt. +# Strings for the "register confirmation" view on login +login-confirmation-button-confirm = Ik heb mijn account bevestigd +# Strings for the "register confirmation" view on login +login-confirmation-button-cancel = Annuleer +# Strings for the "register confirmation" view on login +login-confirmation-busy = Inloggen… +# Strings for the "register confirmation" view on login +login-confirmation-confirmation-title = Bevestig registratie +# Strings for the server filters menu +filters-player-count-minimum-desc = Servers met minder spelers zullen niet zichtbaar zijn +# Strings for the "register confirmation" view on login +login-confirmation-confirmation-message = Controleer je e-mail om je account te bevestigen. Nadat je jouw account bevestigd hebt kan je op de onderstaande knop duwen om in te loggen. +# Long region names for server tag filters (shown in tooltip) +region-asia-north = Azië Noord +# Short region names for server tag filters (shown in filter check box) +region-short-asia-north = Azië Noord +# Strings for the server filters menu +filters-player-count-hide-empty = Verberg lege +# Strings for the server filters menu +filters-title-rp = Rollenspelniveau +# Strings for entries in the server list (including home page) +server-entry-fetching = Ophalen… +# Strings for entries in the server list (including home page) +server-entry-description-offline = Kan de server niet bereiken +# Strings for entries in the server list (including home page) +server-entry-description-fetching = Serverstatus ophalen… +# Strings for the "home" tab +tab-home-direct-connect = Verbind direct met server… +# Strings for the "options" tab +tab-options-clear-content = Wis geïnstalleerde serverinhoud +# Strings for the "options" tab +tab-options-compatibility-mode-desc = Dit gebruikt OpenGL ES 3 (via ANGLE indien nodig), wat minder kans heeft op driverbugs. Probeer dit als je grafische problemen of crashes hebt. +# Strings for the "options" tab +tab-options-verbose-launcher-logging-desc = Voor wanneer de ontwikkelaars *erg* verbaasd zijn met je probleem. (herstarten van launcher vereist) +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-enable-engine-override = Zet engine overschrijding aan +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-disable-signing = Bevestig engine handtekeningen niet +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-disable-signing-desc = { "[" }DEV ONLY] Schakel bevestiging van engine handtekeningen uit. ZET DIT NIET AAN TENZIJ DAT JE WEET WAT JE AAN HET DOEN BENT. +# Strings for entries in the server list (including home page) +server-entry-description-error = Fout bij ophalen serverbeschrijving +# Strings for entries in the server list (including home page) +server-entry-description-none = Geen serverbeschrijving gegeven +# Strings for entries in the server list (including home page) +server-fetched-from-hub = Gehaald van { $hub } +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-title = { "[" }DEV] +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-title-override = { "[" }DEV (overschrijding actief!!!)] +# Strings for the "home" tab +tab-home-run-content-bundle = Loop contentbundel/replay +# Strings for the "home" tab +tab-home-go-to-servers-tab = Ga naar de serverstab +# Strings for the "home" tab +tab-home-favorites-guide = Markeer servers als favoriet om ze hier snel te bereiken +# Strings for the "news" tab +tab-news-title = Nieuws +# Strings for the "home" tab +tab-home-favorite-servers = Favoriete servers: +# Strings for the "home" tab +tab-home-add-favorite = Voeg favoriet toe… +# Strings for the "home" tab +tab-home-refresh = Herladen +# Strings for the "news" tab +tab-news-recent-news = Recent nieuws: +# Strings for the "news" tab +tab-news-pulling-news = Nieuws ophalen… +# Strings for the "options" tab +tab-options-title = Opties +# Strings for the "options" tab +tab-options-flip = { "*" }flip +# Strings for the "options" tab +tab-options-clear-engines = Wis geïnstalleerde engines +# Strings for the "options" tab +tab-options-open-log-directory = Open logdirectory +# Strings for the "options" tab +tab-options-account-settings = Accountinstellingen +# Strings for the "options" tab +tab-options-account-settings-desc = Via onze website kan je accountinstellingen, zoals e-mail en wachtwoord, beheren. +# Strings for the "options" tab +tab-options-compatibility-mode = Compatibiliteitsmodus +# Strings for the "options" tab +tab-options-log-launcher = Log Launcher +# Strings for the "options" tab +tab-options-log-client = Log Client +# Strings for the "options" tab +tab-options-log-client-desc = Zet logs aan voor de uitvoer van de spelclient. Nuttig voor de ontwikkelaars. +# Strings for the "options" tab +tab-options-log-launcher-desc = Zet logs aan voor de uitvoer van de launcher. Nuttig voor de ontwikkelaars. (herstarten van launcher vereist) +# Strings for the "options" tab +tab-options-verbose-launcher-logging = Gedetailleerde launcher logs +# Strings for the "options" tab +tab-options-seasonal-branding = Seizoensgebonden logo's +# Strings for the "options" tab +tab-options-seasonal-branding-desc = Laat tijdelijk relevante logo's en icoontjes die we verzinnen zien. +# Strings for the "options" tab +tab-options-disable-signing = Bevestig engine handtekeningen niet +# Strings for the "options" tab +tab-options-disable-signing-desc = { "[" }DEV ONLY] Schakel bevestiging van engine handtekeningen uit. ZET DIT NIET AAN TENZIJ DAT JE WEET WAT JE AAN HET DOEN BENT. +# Strings for the "options" tab +tab-options-hub-settings = Hubinstellingen +# Strings for the "options" tab +tab-options-hub-settings-desc = Pas aan welke hubservers je wilt gebruiken om de lijst van spelservers op te halen. +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-enable-engine-override-desc = Overschrijdingspad om engine zip van te laden (release/ in RobustToolbox) +# Strings for the "home" tab +tab-home-title = Thuis +# For the language selection menu. +# Used for contents of each language button. +language-selector-language = { $languageName } ({ $englishName }) +# For the language selection menu. +# Text on the button that opens the menu. +language-selector-label = Taal +# For the language selection menu. +# "Save" button. +language-selector-save = Opslaan +# For the language selection menu. +# "Cancel" button. +language-selector-cancel = Annuleer +# For the language selection menu. +language-selector-help-translate = Wil je helpen met vertalen? Dat kan! +# For the language selection menu. +language-selector-system-language = Systeemtaal ({ $languageName }) diff --git a/SS14.Launcher/Assets/Locale/pt/text.ftl b/SS14.Launcher/Assets/Locale/pt/text.ftl new file mode 100644 index 00000000..2e78b3b3 --- /dev/null +++ b/SS14.Launcher/Assets/Locale/pt/text.ftl @@ -0,0 +1,525 @@ +# Strings for the "direct connect" dialog window. +direct-connect-connect = Conectar +# Strings for the "hub settings" dialog window. +hub-settings-explanation = Aqui você pode adicionar mais hubs para encontrar servidores extras. Você deve adicionar apenas hubs que confia, pois eles podem "simular" servidores de outros hubs. A ordem dos hubs importa; se dois hubs anunciam o mesmo servidor, o hub com maior prioridade (mais alto na lista) tomará precedência. +# Strings for the "login expired" view on login +login-expired-button-log-out = Desconectar +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connecting = Adquirindo informação de conexão do servidor… +# Localization for the "add favorite server" dialog window +add-favorite-window-label-address = Endereço: +# Localization for the "add favorite server" dialog window +# 'Example' name shown as a watermark in the name input box +add-favorite-window-example-name = Honk Station +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-content = Baixando conteúdo do servidor… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-loading-into-db = Salvando dados em banco… +# Strings for the "hub settings" dialog window. +hub-settings-button-reset-tooltip = Resetar para configurações padrões +# Strings for the "login expired" view on login +login-expired-title = Login expirado +# Strings for the "forgot password" view on login +login-forgot-message = Se você esqueceu sua senha, você pode informar o endereço de e-mail associado a sua conta aqui para receber o link de reset. +# Strings for the general main window layout of the launcher +main-window-early-access-title = Preste atenção! +# Strings for the general main window layout of the launcher +main-window-early-access-desc = Space Station 14 ainda está em alpha. Esperamos que você goste do que ver, e até fique conosco por um tempo, mas garanta que suas expectativas para o jogo sejam moderadas por enquanto. +# Strings for the drop-down window to manage your active account +account-drop-down-none-selected = Nenhuma conta selecionada +# Strings for the drop-down window to manage your active account +account-drop-down-not-logged-in = Não conectado +# Strings for the drop-down window to manage your active account +account-drop-down-log-out = Desconectar +# Strings for the drop-down window to manage your active account +account-drop-down-switch-account = Trocar conta: +# Strings for the drop-down window to manage your active account +account-drop-down-select-account = Selecionar conta: +# Strings for the drop-down window to manage your active account +account-drop-down-add-account = Adicionar conta +# Localization for the "add favorite server" dialog window +add-favorite-window-title = Adicionar servidor favorito +# Localization for the "add favorite server" dialog window +add-favorite-window-address-invalid = Endereço inválido +# Localization for the "add favorite server" dialog window +add-favorite-window-label-name = Nome: +# Strings for the drop-down window to manage your active account +account-drop-down-log-out-of = Desconectar de { $name } +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-connecting = Conectando… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-content-bundle = Carregando… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-cancel = Cancelar +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-none = Iniciando conexão… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-update-error = Houve um erro ao tentar baixar o conteúdo do servidor. Por favor, solicite ajuda no Discord se o problema persistir. +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-updating = Atualizando: { $status } +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connection-failed = Falha ao conectar ao servidor! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-starting-client = Iniciando cliente… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-not-a-content-bundle = O arquivo não é um pacote de conteúdo válido! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-client-crashed = Parece que o cliente falhou ao iniciar. Se isso persistir, por favor solicite ajuda no Discord ou no Github. +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-client-update = Procurando por updates de conteúdo do servidor… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine = Baixando conteúdo do servidor… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-fetching-manifest = Buscando manifesto do servidor… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-verifying = Verificando integridade do download… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-culling-engine = Limpando conteúdo antigo… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-culling-content = Limpando conteúdo de servidor antigo… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-ready = Atualização finalizada! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-engine-modules = Procurando por dependências adicionais… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine-modules = Baixando dependências extras… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-committing-download = Sincronizando ao disco… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-loading-content-bundle = Carregando pacote de conteúdo… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-unknown = Você não deveria ver isso +# Strings for the "direct connect" dialog window. +direct-connect-title = Conexão direta… +# Strings for the "direct connect" dialog window. +direct-connect-text = Entre o endereço do servidor para conectar: +# Strings for the "direct connect" dialog window. +direct-connect-address-invalid = Endereço Inválido +# Strings for the "hub settings" dialog window. +hub-settings-title = Configurações de Hub +# Strings for the "hub settings" dialog window. +hub-settings-button-done = Feito +# Strings for the "hub settings" dialog window. +hub-settings-button-cancel = Cancelar +# Strings for the "hub settings" dialog window. +hub-settings-button-reset = Resetar +# Strings for the "hub settings" dialog window. +hub-settings-button-add-tooltip = Adicionar Hub +# Strings for the "hub settings" dialog window. +hub-settings-button-remove-tooltip = Remover Hub +# Strings for the "hub settings" dialog window. +hub-settings-button-increase-priority-tooltip = Aumentar prioridade +# Strings for the "hub settings" dialog window. +hub-settings-button-decrease-priority-tooltip = Abaixar prioridade +# Strings for the "hub settings" dialog window. +hub-settings-heading-default = Padrão +# Strings for the "hub settings" dialog window. +hub-settings-heading-custom = Customizado +# Strings for the "hub settings" dialog window. +hub-settings-warning-invalid = Hub inválido (não esqueça do http(s)://) +# Strings for the "hub settings" dialog window. +hub-settings-warning-duplicate = Hubs duplicados +# Strings for the login screen +login-log-launcher = Loggar Launcher +# Error messages for login +login-error-invalid-credentials = Credenciais de login inválidas +# Error messages for login +login-error-account-unconfirmed = O endereço de e-mail para essa conta ainda precisa ser confirmado. Por favor, confirme seu endereço de e-mail antes de tentar conectar novamente +# Error messages for login +login-error-account-2fa-required = Autenticação de dois fatores requerida +# Error messages for login +login-error-account-2fa-invalid = Código de autenticação de dois fatores inválido +# Error messages for login +login-error-account-account-locked = Conta bloqueada. Por favor, entre em contato conosco se você acredita que isso é um erro. +# Error messages for login +login-error-unknown = Erro desconhecido +# Error messages for login +login-errors-button-ok = Ok +# Strings for 2FA login +login-2fa-title = Autenticação de dois fatores requirida +# Strings for 2FA login +login-2fa-message = Por favor, informe o código de autenticação do seu aplicativo. +# Strings for 2FA login +login-2fa-input-watermark = Código de autenticação +# Strings for 2FA login +login-2fa-button-confirm = Confirmar +# Strings for 2FA login +login-2fa-button-recovery-code = Código de recuperação +# Strings for 2FA login +login-2fa-button-cancel = Cancelar +# Strings for the "login expired" view on login +login-expired-message = + A sessão para esta conta expirou. + Por favor, informe sua senha novamente. +# Strings for the "login expired" view on login +login-expired-password-watermark = Senha +# Strings for the "login expired" view on login +login-expired-button-log-in = Conectar +# Strings for the "login expired" view on login +login-expired-button-forgot-password = Esqueceu sua senha? +# Strings for the "forgot password" view on login +login-forgot-title = Esqueceu sua senha? +# Strings for the "forgot password" view on login +login-forgot-email-watermark = Seu endereço de e-mail +# Strings for the "forgot password" view on login +login-forgot-button-submit = Enviar +# Strings for the "forgot password" view on login +login-forgot-button-back = Voltar ao login +# Strings for the "forgot password" view on login +login-forgot-busy-sending = Enviando email… +# Strings for the "forgot password" view on login +login-forgot-success-title = Email de reset enviado +# Strings for the "forgot password" view on login +login-forgot-success-message = Um link de reset foi enviado para seu endereço de e-mail. +# Strings for the "forgot password" view on login +login-forgot-error = Erro +# Strings for the "login" view on login +login-login-title = Conectar +# Strings for the "login" view on login +login-login-username-watermark = Usuário ou senha +# Strings for the "login" view on login +login-login-password-watermark = Senha +# Strings for the "login" view on login +login-login-button-log-in = Conectar +# Strings for the "login" view on login +login-login-button-forgot = Esqueceu sua senha? +# Strings for the "login" view on login +login-login-button-resend = Reenviar e-mail de confirmação +# Strings for the "login" view on login +login-login-button-register = Não tem uma conta? Registre-se! +# Strings for the "login" view on login +login-login-busy-logging-in = Conectando… +# Strings for the "login" view on login +login-login-error-title = Falha ao conectar +# Strings for the general main window layout of the launcher +main-window-title = Space Station 14 Launcher +# Strings for the general main window layout of the launcher +main-window-header-link-discord = Discord +# Strings for the general main window layout of the launcher +main-window-header-link-website = Site +# Strings for the general main window layout of the launcher +main-window-out-of-date = Launcher desatualizado +# Strings for the general main window layout of the launcher +main-window-out-of-date-desc = + Este launcher está desatualizado. + Por favor baixe a versão mais atualizada no nosso site. +# Strings for the general main window layout of the launcher +main-window-out-of-date-desc-steam = + Este launcher está desatualizado. + Por favor permita que a Steam atualize seu jogo. +# Strings for the general main window layout of the launcher +main-window-out-of-date-exit = Sair +# Strings for the general main window layout of the launcher +main-window-out-of-date-download-manual = Baixar (manual)' +# Strings for the general main window layout of the launcher +main-window-early-access-accept = Entendido! +# Strings for the general main window layout of the launcher +main-window-busy-checking-update = Procurando por atualizações do launcher… +# Strings for the general main window layout of the launcher +main-window-drag-drop-prompt = Derrube para fazer o jogo rodar +# Strings for the general main window layout of the launcher +main-window-busy-checking-login-status = Atualizando status de login… +# Strings for the general main window layout of the launcher +main-window-busy-checking-account-status = Verificando status da conta +# Strings for the general main window layout of the launcher +main-window-error-connecting-auth-server = Erro ao conectar com o servidor de autenticação +# Strings for the general main window layout of the launcher +main-window-error-unknown = Um erro desconhecido aconteceu +# Long region names for server tag filters (shown in tooltip) +region-africa-central = África Central +# Long region names for server tag filters (shown in tooltip) +region-africa-north = Norte da África +# Long region names for server tag filters (shown in tooltip) +region-africa-south = Sul da África +# Long region names for server tag filters (shown in tooltip) +region-antarctica = Antártica +# Strings for the "register confirmation" view on login +login-confirmation-button-confirm = Eu confirmei minha conta +# Strings for the "register confirmation" view on login +login-confirmation-button-cancel = Cancelar +# Strings for the "register confirmation" view on login +login-confirmation-busy = Conectando… +# Strings for the server filters menu +filters-18-no = Não +# Strings for the "register confirmation" view on login +login-confirmation-confirmation-title = Registrar confirmação +# Strings for the "register confirmation" view on login +login-confirmation-confirmation-message = Por favor, verifique seu e-mail para confirmar sua conta. Assim que tiver confirmado sua conta, pressione o botão abaixo para logar. +# Short region names for server tag filters (shown in filter check box) +region-short-antarctica = Antártica +# Short region names for server tag filters (shown in filter check box) +region-short-middle-east = Oriente Médio +# Strings for the "servers" tab +filters = Filtros { $filteredServers }/{ $totalServers } +# Strings for the "servers" tab +tab-servers-list-status-partial-error = Houve um erro em adquirir algumas ou todas as listas de servidores. Verifique se sua configuração de hub está correta. +# Strings for the server filters menu +filters-title-18 = 18+ +# Strings for the server filters menu +filters-title-hub = Hub +# Strings for the server filters menu +filters-18-yes = Sim +# Strings for the server filters menu +filters-18-yes-desc = Sim +# Strings for the server filters menu +filters-player-count-hide-empty = Esconder vazios +# Strings for the server filters menu +filters-player-count-hide-empty-desc = Servidores sem jogadores não serão mostrados +# Server roleplay levels for the filters menu +filters-rp-high = Alto +# Strings for entries in the server list (including home page) +server-entry-description-fetching = Adquirindo status de servidor… +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-disable-signing-desc = { "[" }SOMENTE DEV] Desativa verificação de assinaturas de engine. NÃO ATIVE SEM TER CERTEZA ABSOLUTA DO QUE ESTÁ FAZENDO. +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-enable-engine-override = Ativar override de engine +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-enable-engine-override-desc = Override caminho para carregar zips de engine de (release/ no RobustToolbox) +# Strings for the "options" tab +tab-options-account-settings-desc = Você pode manusear as configurações da sua conta, como mudar e-mail ou senha, através do nosso site. +# Strings for the "options" tab +tab-options-compatibility-mode-desc = Isto usa OpenGL ES 2 (através de ANGLE se necessário), que é menos propenso a sofrer de bugs de drivers. Tente esta opção se você estiver com problemas gráficos ou crashes. +# Strings for the "options" tab +tab-options-disable-signing-desc = { "[" }SOMENTE DEV] Desativa verificação de assinaturas de engine. NÃO ATIVE SEM TER CERTEZA ABSOLUTA DO QUE ESTÁ FAZENDO. +# Strings for the server filters menu +filters-18-no-desc = Não +# Long region names for server tag filters (shown in tooltip) +region-asia-east = Leste da Ásia +# Long region names for server tag filters (shown in tooltip) +region-asia-north = Norte da Ásia +# Long region names for server tag filters (shown in tooltip) +region-asia-south-east = Sudeste da Ásia +# Long region names for server tag filters (shown in tooltip) +region-central-america = América Central +# Long region names for server tag filters (shown in tooltip) +region-europe-east = Leste da Europa +# Long region names for server tag filters (shown in tooltip) +region-europe-west = Oeste da Europa +# Long region names for server tag filters (shown in tooltip) +region-greenland = Groenlândia +# Long region names for server tag filters (shown in tooltip) +region-india = Índia +# Long region names for server tag filters (shown in tooltip) +region-middle-east = Oriente Médio +# Long region names for server tag filters (shown in tooltip) +region-the-moon = A lua +# Long region names for server tag filters (shown in tooltip) +region-north-america-central = Centro da América do Norte +# Long region names for server tag filters (shown in tooltip) +region-north-america-east = Leste da América do Norte +# Long region names for server tag filters (shown in tooltip) +region-north-america-west = Oeste da América do Norte +# Long region names for server tag filters (shown in tooltip) +region-oceania = Oceânia +# Long region names for server tag filters (shown in tooltip) +region-south-america-east = Leste da América do Sul +# Long region names for server tag filters (shown in tooltip) +region-south-america-south = Sul da América do Sul +# Long region names for server tag filters (shown in tooltip) +region-south-america-west = Oeste da América do Sul +# Short region names for server tag filters (shown in filter check box) +region-short-africa-central = Áfrical Central +# Short region names for server tag filters (shown in filter check box) +region-short-africa-north = Norte da África +# Short region names for server tag filters (shown in filter check box) +region-short-africa-south = Sul da África +# Short region names for server tag filters (shown in filter check box) +region-short-asia-east = Leste da Ásia +# Short region names for server tag filters (shown in filter check box) +region-short-asia-north = Norte da Ásia +# Short region names for server tag filters (shown in filter check box) +region-short-asia-south-east = Sudeste da Ásia +# Short region names for server tag filters (shown in filter check box) +region-short-central-america = América Central +# Short region names for server tag filters (shown in filter check box) +region-short-europe-east = Leste da Europa +# Short region names for server tag filters (shown in filter check box) +region-short-europe-west = Oeste da Europa +# Short region names for server tag filters (shown in filter check box) +region-short-greenland = Groenlândia +# Short region names for server tag filters (shown in filter check box) +region-short-india = Índia +# Short region names for server tag filters (shown in filter check box) +region-short-the-moon = A lua +# Short region names for server tag filters (shown in filter check box) +region-short-north-america-central = Norte América Central +# Short region names for server tag filters (shown in filter check box) +region-short-north-america-east = Leste da Norte América +# Short region names for server tag filters (shown in filter check box) +region-short-north-america-west = Oeste da Norte América +# Short region names for server tag filters (shown in filter check box) +region-short-oceania = Oceânia +# Short region names for server tag filters (shown in filter check box) +region-short-south-america-east = Leste da América do Sul +# Short region names for server tag filters (shown in filter check box) +region-short-south-america-south = Sul da América do Sul +# Short region names for server tag filters (shown in filter check box) +region-short-south-america-west = Oeste da América do Sul +# Strings for the "servers" tab +tab-servers-title = Servidores +# Strings for the "servers" tab +tab-servers-refresh = Recarregar +# Strings for the "servers" tab +tab-servers-search-watermark = Procurar por servidores… +# Strings for the "servers" tab +tab-servers-table-players = Jogadores +# Strings for the "servers" tab +tab-servers-table-name = Nome do Servidor +# Strings for the "servers" tab +tab-servers-list-status-error = Houve um erro na tentiva de adquirir a lista de servidores mestres. +# Strings for the "servers" tab +tab-servers-list-status-updating-master = Adquirindo lista de servidores master… +# Strings for the "servers" tab +tab-servers-list-status-none-filtered = Nenhum servidor se encaixa nas suas configurações de filtro ou pesquisa. +# Strings for the "servers" tab +tab-servers-list-status-none = Não existem servidores públicos. Verifique se sua configuração de hub está correta. +# Strings for the server filters menu +filters-title = Filtros +# Strings for the server filters menu +filters-title-language = Línguagem +# Strings for the server filters menu +filters-title-region = Região +# Strings for the server filters menu +filters-title-rp = Nível de Role-play +# Strings for the server filters menu +filters-title-player-count = Contagem de Jogadores +# Strings for the server filters menu +filters-player-count-hide-full = Esconder cheios +# Strings for the server filters menu +filters-player-count-hide-full-desc = Servidores cheios não serão mostrados +# Strings for the server filters menu +filters-player-count-minimum = Mínimo: +# Strings for the server filters menu +filters-player-count-minimum-desc = Servidores com menos jogadores não serão mostrados +# Strings for the server filters menu +filters-player-count-maximum = Máximo: +# Strings for the server filters menu +filters-player-count-maximum-desc = Servidores com mais jogadores não serão mostrados +# Strings for the server filters menu +filters-unspecified-desc = Não especificado +# Strings for the server filters menu +filters-unspecified = Não especificado +# Server roleplay levels for the filters menu +filters-rp-none = Nenhum +# Server roleplay levels for the filters menu +filters-rp-none-desc = Nenhum +# Server roleplay levels for the filters menu +filters-rp-low = Baixo +# Server roleplay levels for the filters menu +filters-rp-low-desc = Baixo +# Server roleplay levels for the filters menu +filters-rp-medium = Médio +# Server roleplay levels for the filters menu +filters-rp-medium-desc = Médio +# Server roleplay levels for the filters menu +filters-rp-high-desc = Alto +# Strings for entries in the server list (including home page) +server-entry-connect = Conectar +# Strings for entries in the server list (including home page) +server-entry-add-favorite = Adicionar Favorito +# Strings for entries in the server list (including home page) +server-entry-remove-favorite = Remover Favorito +# Strings for entries in the server list (including home page) +server-entry-offline = OFFLINE +# Strings for entries in the server list (including home page) +server-entry-fetching = Adquirindo… +# Strings for entries in the server list (including home page) +server-entry-description-offline = Não foi possível contatar o servidor +# Strings for entries in the server list (including home page) +server-entry-description-error = Erro ao tentar adquirir a descrição do servidor +# Strings for entries in the server list (including home page) +server-entry-description-none = Nenhuma descrição de servidor fornecida +# Strings for entries in the server list (including home page) +server-fetched-from-hub = Adquirido do { $hub } +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-title = { "[" }DEV] +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-title-override = { "[" }DEV (override ativo!!!)] +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-disable-signing = Desativando Verificações de Assinatura de Engine +# Strings for entries in the server list (including home page) +server-entry-player-count = + { $players } / { $max -> + [0] ∞ + *[1] { $max } + } +# Strings for the "home" tab +tab-home-title = Página Inicial +# Strings for the "home" tab +tab-home-favorite-servers = Servidores Favoritos: +# Strings for the "home" tab +tab-home-add-favorite = Adicionar Favorito… +# Strings for the "home" tab +tab-home-refresh = Recarregar +# Strings for the "home" tab +tab-home-direct-connect = Conectar diretamente ao Servidor… +# Strings for the "home" tab +tab-home-run-content-bundle = Rodar pacote de arquivos/replay +# Strings for the "home" tab +tab-home-go-to-servers-tab = Ir para aba de servidores +# Strings for the "home" tab +tab-home-favorites-guide = Marque servidores como favorito para ter acesso fácil aqui +# Strings for the "news" tab +tab-news-title = Novidades +# Strings for the "news" tab +tab-news-recent-news = Novidades Recentes: +# Strings for the "news" tab +tab-news-pulling-news = Baixando novidades… +# Strings for the "options" tab +tab-options-title = Opções +# Strings for the "options" tab +tab-options-flip = { "*" }girar +# Strings for the "options" tab +tab-options-clear-engines = Limpar engines instaladas +# Strings for the "options" tab +tab-options-clear-content = Limpar conteúdo de servidores instalados +# Strings for the "options" tab +tab-options-open-log-directory = Abrir pasta de log +# Strings for the "options" tab +tab-options-account-settings = Configurações de conta +# Strings for the "options" tab +tab-options-compatibility-mode = Modo de Compatibilidade +# Strings for the "options" tab +tab-options-log-client = Loggar Client +# Strings for the "options" tab +tab-options-log-client-desc = Ativa logging de qualquer saída de cliente. Útil para desenvolvedores. +# Strings for the "options" tab +tab-options-log-launcher = Loggar Launcher +# Strings for the "options" tab +tab-options-log-launcher-desc = Ativa logging para o launcher. Útil para desenvolvedores. (Requer reinicialização do launcher) +# Strings for the "options" tab +tab-options-verbose-launcher-logging = Logging Verboso do Launcher +# Strings for the "options" tab +tab-options-verbose-launcher-logging-desc = Para quando os desenvolvedores estão *muito* perdidos com o seu problema. (Requer reinicialização do launcher) +# Strings for the "options" tab +tab-options-seasonal-branding = Marca Sasonal +# Strings for the "options" tab +tab-options-seasonal-branding-desc = Qualquer ícone e logo relevante e temporário que nós criarmos. +# Strings for the "options" tab +tab-options-disable-signing = Desativa Verificações de Assinatura de Engine +# Strings for the "options" tab +tab-options-hub-settings = Configurações de Hub +# Strings for the "options" tab +tab-options-hub-settings-desc = Muda qual servidor de hub você gostaria de usar para adquirir sua lista de servidores. +# For the language selection menu. +# Text on the button that opens the menu. +language-selector-label = Línguagem +# For the language selection menu. +language-selector-system-language = Idioma do Sistema { $languageName } +# For the language selection menu. +language-selector-help-translate = Quer ajudar a traduzir? Você pode! +# For the language selection menu. +# "Save" button. +language-selector-save = Salvar +# For the language selection menu. +# "Cancel" button. +language-selector-cancel = Cancelar +# For the language selection menu. +# Used for contents of each language button. +language-selector-language = { $languageName } { $englishName } diff --git a/SS14.Launcher/Assets/Locale/ru/text.ftl b/SS14.Launcher/Assets/Locale/ru/text.ftl new file mode 100644 index 00000000..214ca19c --- /dev/null +++ b/SS14.Launcher/Assets/Locale/ru/text.ftl @@ -0,0 +1,405 @@ +# Strings for the "register confirmation" view on login +login-confirmation-confirmation-title = Подтверждение регистрации +# Strings for the "register confirmation" view on login +login-confirmation-button-confirm = Я подтвердил свой аккаунт +# Strings for the "register confirmation" view on login +login-confirmation-busy = Вход... +# Localization for the "add favorite server" dialog window +# 'Example' name shown as a watermark in the name input box +add-favorite-window-example-name = Honk Station +# Strings for the "register confirmation" view on login +login-confirmation-button-cancel = Отмена +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-unknown = Вы не должны видеть это +# Strings for the "hub settings" dialog window. +hub-settings-button-remove-tooltip = Убрать хаб +# Strings for the general main window layout of the launcher +main-window-header-link-discord = Discord +# Strings for the drop-down window to manage your active account +account-drop-down-log-out-of = Выйти из { $name } +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-connecting = Подключение… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-update-error = Произошла ошибка во время загрузки сереврного контента. Пожалуйста, обратитесь в Discord за помощью, если проблема не исчезнет. +# Strings for the "hub settings" dialog window. +hub-settings-explanation = Здесь вы можете добавлять дополнительные хабы для получения игровых серверов. Вы должны добавлять только хабы, которым вы доверятете, так как они могут подделывать игровые сервера других хабов. Порядок хабов важен. Если два хаба рекламируют сервер дважды, то приоритет будет иметь хаб с большим приоритетом (расположен выше в списке). +# Long region names for server tag filters (shown in tooltip) +region-north-america-west = Западная Северная Америка +# Strings for the "hub settings" dialog window. +hub-settings-warning-duplicate = Дублированные хабы +# Error messages for login +login-error-account-unconfirmed = E-mail адрес для этого аккаунта всё ещё требует подтверждения. Пожалуйста, подтвердите ваш e-mail адрес перед тем, как пытаться войти +# Strings for the "register confirmation" view on login +login-confirmation-confirmation-message = Пожалуйста, проверьте ваш e-mail для подтверждения вашего аккаунта. После подтверждения аккаунта, нажмите кнопку ниже для входа. +# Long region names for server tag filters (shown in tooltip) +region-central-america = Центральная Америка +# Strings for the "servers" tab +tab-servers-list-status-partial-error = Не удалось получить некоторые или все списки серверов. Убедитесь в правильности вашей настройки хабов. +# Strings for the "servers" tab +tab-servers-list-status-updating-master = Получение главного списка серверов... +# Strings for the server filters menu +filters-player-count-maximum-desc = Серверы с большим количеством игроков не будут показаны +# Strings for the "login" view on login +login-login-button-resend = Отправить ещё раз e-mail подтверждение +# Strings for the general main window layout of the launcher +main-window-out-of-date-desc = + Данный лаунчер устарел. + Пожалуйста, скачайте новую версию с нашего веб-сайта. +# Strings for the general main window layout of the launcher +main-window-early-access-desc = Space Station 14 всё еще в стадии альфа-версии. Мы надеемся, вам нравится, что вы видите, и, возможно, вы даже останетесь здесь, однако постарайтесь пока что придержать свои скромные ожидания. +# Long region names for server tag filters (shown in tooltip) +region-north-america-east = Восточная Северная Америка +# Strings for the "servers" tab +filters = Фильтры ({ $filteredServers } / { $totalServers }) +# Strings for the "servers" tab +tab-servers-list-status-error = Произошла ошибка во время получения списка главных серверов. +# Strings for the server filters menu +filters-title-rp = Уровень отыгрыша +# Strings for the server filters menu +filters-player-count-hide-full-desc = Заполненные серверы не будут показаны +# Short region names for server tag filters (shown in filter check box) +region-short-asia-south-east = Юго-Восточная Азия +# Strings for entries in the server list (including home page) +server-entry-player-count = + { $players } / { $max -> + [0] ∞ + *[1] { $max } + } +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-disable-signing = Отключить проверки сигнатуры движка +# Error messages for login +login-errors-button-ok = ОК +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-cancel = Отмена +# Strings for the drop-down window to manage your active account +account-drop-down-none-selected = Не выбран аккаунт +# Strings for the drop-down window to manage your active account +account-drop-down-log-out = Выйти +# Strings for the drop-down window to manage your active account +account-drop-down-switch-account = Сменить аккаунт: +# Strings for the drop-down window to manage your active account +account-drop-down-select-account = Выбрать аккаунт: +# Strings for the drop-down window to manage your active account +account-drop-down-add-account = Добавить аккаунт +# Localization for the "add favorite server" dialog window +add-favorite-window-title = Добавить избранный сервер +# Localization for the "add favorite server" dialog window +add-favorite-window-address-invalid = Неправильный адрес +# Localization for the "add favorite server" dialog window +add-favorite-window-label-name = Название: +# Localization for the "add favorite server" dialog window +add-favorite-window-label-address = Адрес: +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-content-bundle = Загрузка… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-updating = Обновление: { $status } +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connecting = Получение информации о подключении от сервера... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-connection-failed = Не удалось подключиться к серверу! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-starting-client = Запуск клиента... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-status-not-a-content-bundle = Файл не является допустимым набором контента! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-client-update = Проверка на обновление серверного контента... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-fetching-manifest = Получение манифеста сервера... +# Strings for the "hub settings" dialog window. +hub-settings-button-cancel = Отмена +# Error messages for login +login-error-unknown = Неизвестная ошибка +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-ready = Обновление завершено! +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-checking-engine-modules = Проверка дополнительных зависимостей... +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-update-status-downloading-engine-modules = Скачивание дополнительных зависимостей... +# Strings for the "direct connect" dialog window. +direct-connect-title = Прямое подключение... +# Strings for the "direct connect" dialog window. +direct-connect-text = Введите адрес сервера для подключения: +# Strings for the "direct connect" dialog window. +direct-connect-connect = Подключиться +# Strings for the "direct connect" dialog window. +direct-connect-address-invalid = Неправильный адрес +# Strings for the "hub settings" dialog window. +hub-settings-title = Настройки хаба +# Strings for the "hub settings" dialog window. +hub-settings-button-done = Готово +# Strings for the "hub settings" dialog window. +hub-settings-button-reset = Сбросить +# Strings for the "hub settings" dialog window. +hub-settings-button-reset-tooltip = Сбросить к настройкам по умолчанию +# Strings for the "hub settings" dialog window. +hub-settings-button-add-tooltip = Добавить хаб +# Strings for the "hub settings" dialog window. +hub-settings-button-increase-priority-tooltip = Увеличить приоритет +# Strings for the "hub settings" dialog window. +hub-settings-button-decrease-priority-tooltip = Уменьшить приоритет +# Strings for the "hub settings" dialog window. +hub-settings-heading-default = По умолчанию +# Strings for the "hub settings" dialog window. +hub-settings-heading-custom = Пользовательские +# Strings for the "hub settings" dialog window. +hub-settings-warning-invalid = Неправильный хаб (не забудьте http(s)://) +# Strings for the login screen +login-log-launcher = Логировать ланучер +# Error messages for login +login-error-invalid-credentials = Неправильные данные для входа +# Error messages for login +login-error-account-2fa-required = Требуется двухфакторная аутентификация +# Error messages for login +login-error-account-2fa-invalid = Неправильный код двухфакторной аутентификации +# Error messages for login +login-error-account-account-locked = Аккаунт был заблокирован. Пожалуйста, свяжитесь с нами, если считаете, что это ошибка. +# Strings for entries in the server list (including home page) +server-entry-description-offline = Не удалось связаться с сервером +# Strings for 2FA login +login-2fa-button-cancel = Отмена +# Strings for 2FA login +login-2fa-title = Требуется двухфакторная аутентификация +# Strings for 2FA login +login-2fa-message = Пожалуйста, введите код аутентификации из вашего приложения. +# Strings for 2FA login +login-2fa-input-watermark = Код аутентификации +# Strings for 2FA login +login-2fa-button-confirm = Подтвердить +# Strings for 2FA login +login-2fa-button-recovery-code = Код восстановления +# Strings for the "login expired" view on login +login-expired-title = Срок действия входа истёк +# Strings for the "login expired" view on login +login-expired-message = + Сессия для этого аккаунта истекла. + Пожалуйста, введите ваш пароль заново. +# Strings for the "login expired" view on login +login-expired-password-watermark = Пароль +# Strings for the "login expired" view on login +login-expired-button-log-in = Войти +# Strings for the "login expired" view on login +login-expired-button-log-out = Выйти +# Strings for the "login expired" view on login +login-expired-button-forgot-password = Забыли пароль? +# Strings for the "forgot password" view on login +login-forgot-title = Забыли пароль? +# Strings for the "forgot password" view on login +login-forgot-message = Если вы забыли пароль, вы можете ввести здесь e-mail адрес, привязанный к вашему аккаунту, для получения ссылки сброса. +# Strings for the "forgot password" view on login +login-forgot-email-watermark = Ваш e-mail адрес +# Strings for the "forgot password" view on login +login-forgot-button-submit = Отправить +# Strings for the "forgot password" view on login +login-forgot-busy-sending = Отправка e-mail письма... +# Strings for the "forgot password" view on login +login-forgot-success-title = E-mail письмо для сброса отправлено +# Strings for the "forgot password" view on login +login-forgot-success-message = Ссылка для сброса была отправлена на ваш e-mail адрес. +# Strings for the "forgot password" view on login +login-forgot-error = Ошибка +# Strings for the "login" view on login +login-login-title = Войти +# Strings for the "login" view on login +login-login-username-watermark = Имя пользователя или e-mail +# Strings for the "login" view on login +login-login-password-watermark = Пароль +# Strings for the "login" view on login +login-login-button-log-in = Войти +# Strings for the "login" view on login +login-login-button-forgot = Забыли пароль? +# Strings for the "login" view on login +login-login-button-register = Нет аккаунта? Зарегистрироваться! +# Strings for the "login" view on login +login-login-busy-logging-in = Вход... +# Strings for the "login" view on login +login-login-error-title = Не удалось войти +# Strings for the general main window layout of the launcher +main-window-title = Space Station 14 Launcher +# Strings for the general main window layout of the launcher +main-window-header-link-website = Веб-сайт +# Strings for the general main window layout of the launcher +main-window-out-of-date = Лаунчер устарел +# Strings for the general main window layout of the launcher +main-window-out-of-date-desc-steam = + Данный лаунчер устарел. + Пожалуйста, разрешите Steam обновить игру. +# Strings for the general main window layout of the launcher +main-window-out-of-date-exit = Выйти +# Strings for the general main window layout of the launcher +main-window-out-of-date-download-manual = Скачать (вручную) +# Strings for the general main window layout of the launcher +main-window-early-access-title = Берегись! +# Strings for the general main window layout of the launcher +main-window-early-access-accept = Понятно! +# Strings for the general main window layout of the launcher +main-window-drag-drop-prompt = Отпустите для запуска игры +# Strings for the general main window layout of the launcher +main-window-busy-checking-update = Проверка обновления лаунчера... +# Strings for the general main window layout of the launcher +main-window-busy-checking-login-status = Обновление статуса входа... +# Strings for the general main window layout of the launcher +main-window-busy-checking-account-status = Проверка статуса аккаунта +# Strings for the general main window layout of the launcher +main-window-error-connecting-auth-server = Ошибка подключения к серверу аутентификации +# Strings for the general main window layout of the launcher +main-window-error-unknown = Произошла неизвестная ошибка +# Long region names for server tag filters (shown in tooltip) +region-africa-central = Центральная Африка +# Long region names for server tag filters (shown in tooltip) +region-africa-north = Северная Африка +# Long region names for server tag filters (shown in tooltip) +region-africa-south = Южная Африка +# Long region names for server tag filters (shown in tooltip) +region-antarctica = Антарктида +# Long region names for server tag filters (shown in tooltip) +region-asia-east = Восточная Азия +# Long region names for server tag filters (shown in tooltip) +region-asia-north = Северная Азия +# Long region names for server tag filters (shown in tooltip) +region-asia-south-east = Юго-Восточная Азия +# Long region names for server tag filters (shown in tooltip) +region-europe-east = Восточная Европа +# Long region names for server tag filters (shown in tooltip) +region-europe-west = Западная Европа +# Long region names for server tag filters (shown in tooltip) +region-greenland = Гренландия +# Long region names for server tag filters (shown in tooltip) +region-india = Индия +# Long region names for server tag filters (shown in tooltip) +region-middle-east = Средний Восток +# Long region names for server tag filters (shown in tooltip) +region-the-moon = Луна +# Long region names for server tag filters (shown in tooltip) +region-north-america-central = Центральная Северная Америка +# Long region names for server tag filters (shown in tooltip) +region-oceania = Океания +# Long region names for server tag filters (shown in tooltip) +region-south-america-east = Восточная Южная Америка +# Short region names for server tag filters (shown in filter check box) +region-short-africa-central = Центральная Африка +# Short region names for server tag filters (shown in filter check box) +region-short-africa-north = Северная Африка +# Short region names for server tag filters (shown in filter check box) +region-short-africa-south = Южная Африка +# Short region names for server tag filters (shown in filter check box) +region-short-antarctica = Антарктида +# Short region names for server tag filters (shown in filter check box) +region-short-asia-east = Восточная Азия +# Short region names for server tag filters (shown in filter check box) +region-short-asia-north = Северная Азия +# Short region names for server tag filters (shown in filter check box) +region-short-central-america = Центральная Америка +# Short region names for server tag filters (shown in filter check box) +region-short-europe-east = Восточная Европа +# Short region names for server tag filters (shown in filter check box) +region-short-europe-west = Западная Европа +# Short region names for server tag filters (shown in filter check box) +region-short-greenland = Гренландия +# Short region names for server tag filters (shown in filter check box) +region-short-india = Индия +# Short region names for server tag filters (shown in filter check box) +region-short-middle-east = Средний Восток +# Short region names for server tag filters (shown in filter check box) +region-short-the-moon = Луна +# Short region names for server tag filters (shown in filter check box) +region-short-oceania = Океания +# Strings for the "servers" tab +tab-servers-title = Серверы +# Strings for the "servers" tab +tab-servers-refresh = Обновить +# Strings for the "servers" tab +tab-servers-search-watermark = Поиск серверов... +# Strings for the "servers" tab +tab-servers-table-players = Игроки +# Strings for the "servers" tab +tab-servers-table-name = Название сервера +# Strings for the "servers" tab +tab-servers-list-status-none-filtered = Ни один сервер не удовлетворяет вашему поиску или фильтру. +# Strings for the "servers" tab +tab-servers-list-status-none = Публичных серверов нет. Убедитесь в правильности вашей настройки хабов. +# Strings for the server filters menu +filters-title = Фильтры +# Strings for the server filters menu +filters-title-language = Язык +# Strings for the server filters menu +filters-title-region = Регион +# Strings for the server filters menu +filters-title-player-count = Количество игроков +# Strings for the server filters menu +filters-title-18 = 18+ +# Strings for the server filters menu +filters-title-hub = Хаб +# Strings for the server filters menu +filters-18-yes = Да +# Strings for the server filters menu +filters-18-yes-desc = Да +# Strings for the server filters menu +filters-18-no = Нет +# Strings for the server filters menu +filters-18-no-desc = Нет +# Strings for the server filters menu +filters-player-count-hide-empty = Скрыть пустые +# Strings for the server filters menu +filters-player-count-hide-empty-desc = Серверы без игроков не будут показаны +# Strings for the server filters menu +filters-player-count-hide-full = Скрыть заполненные +# Strings for the server filters menu +filters-player-count-minimum = Минимум: +# Strings for the server filters menu +filters-player-count-minimum-desc = Серверы с меньшим количеством игроков не будут показаны +# Strings for the server filters menu +filters-player-count-maximum = Максимум: +# Strings for the server filters menu +filters-unspecified-desc = Не указано +# Strings for the server filters menu +filters-unspecified = Не указано +# Server roleplay levels for the filters menu +filters-rp-none = Нет +# Server roleplay levels for the filters menu +filters-rp-none-desc = Нет +# Server roleplay levels for the filters menu +filters-rp-low = Низкий +# Server roleplay levels for the filters menu +filters-rp-low-desc = Низкий +# Server roleplay levels for the filters menu +filters-rp-medium = Средний +# Server roleplay levels for the filters menu +filters-rp-medium-desc = Средний +# Server roleplay levels for the filters menu +filters-rp-high = Высокий +# Server roleplay levels for the filters menu +filters-rp-high-desc = Высокий +# Strings for entries in the server list (including home page) +server-entry-connect = Подключиться +# Strings for entries in the server list (including home page) +server-entry-add-favorite = Добавить в избранное +# Strings for entries in the server list (including home page) +server-entry-remove-favorite = Убрать из избранного +# Strings for entries in the server list (including home page) +server-entry-offline = OFFLINE +# Strings for entries in the server list (including home page) +server-entry-fetching = Получение... +# Strings for entries in the server list (including home page) +server-entry-description-fetching = Получение статуса сервера... +# Strings for entries in the server list (including home page) +server-entry-description-error = Произошла ошибка во время получения описания сервера +# Strings for entries in the server list (including home page) +server-entry-description-none = Описание сервера не указано +# Strings for entries in the server list (including home page) +server-fetched-from-hub = Получено из { $hub } +# Strings for the "Development" tab +# These aren't shown to users so they're not very important +tab-development-title = { "[" }DEV] +# Strings for the "home" tab +tab-home-title = Главная +# Strings for the "home" tab +tab-home-favorite-servers = Избранные серверы: +# Strings for the "home" tab +tab-home-add-favorite = Добавить в избранное... +# Strings for the "home" tab +tab-home-refresh = Обновить +# Strings for the "home" tab +tab-home-run-content-bundle = Запустить набор контента / потвор +# Strings for the "home" tab +tab-home-go-to-servers-tab = Перейти к вкладке серверов diff --git a/SS14.Launcher/Assets/Locale/sv/text.ftl b/SS14.Launcher/Assets/Locale/sv/text.ftl new file mode 100644 index 00000000..e69de29b diff --git a/SS14.Launcher/Assets/Locale/tok/text.ftl b/SS14.Launcher/Assets/Locale/tok/text.ftl new file mode 100644 index 00000000..e8dceddf --- /dev/null +++ b/SS14.Launcher/Assets/Locale/tok/text.ftl @@ -0,0 +1,22 @@ +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-title-content-bundle = o awen… +# Strings for the "connecting" menu that appears when connecting to a server. +connecting-cancel = ala +# Strings for the "hub settings" dialog window. +hub-settings-button-done = pini +# Strings for the "hub settings" dialog window. +hub-settings-button-cancel = ala +# Strings for the "hub settings" dialog window. +hub-settings-button-add-tooltip = pana kulupu +# Error messages for login +login-errors-button-ok = pona +# Strings for 2FA login +login-2fa-button-cancel = ala +# Strings for the "register confirmation" view on login +login-confirmation-button-cancel = ala +# Strings for the general main window layout of the launcher +main-window-out-of-date-exit = weka +# Strings for the general main window layout of the launcher +main-window-early-access-accept = pona a! +# Strings for the "home" tab +tab-home-title = tomo diff --git a/SS14.Launcher/Assets/Locale/tr/text.ftl b/SS14.Launcher/Assets/Locale/tr/text.ftl new file mode 100644 index 00000000..e69de29b diff --git a/SS14.Launcher/Assets/Locale/uk/text.ftl b/SS14.Launcher/Assets/Locale/uk/text.ftl new file mode 100644 index 00000000..e69de29b diff --git a/SS14.Launcher/Assets/check.png b/SS14.Launcher/Assets/check.png new file mode 100644 index 00000000..786b5244 Binary files /dev/null and b/SS14.Launcher/Assets/check.png differ diff --git a/SS14.Launcher/Assets/cross.png b/SS14.Launcher/Assets/cross.png new file mode 100644 index 00000000..fcf18f10 Binary files /dev/null and b/SS14.Launcher/Assets/cross.png differ diff --git a/SS14.Launcher/ConfigConstants.cs b/SS14.Launcher/ConfigConstants.cs index a1ccb149..99f2262a 100644 --- a/SS14.Launcher/ConfigConstants.cs +++ b/SS14.Launcher/ConfigConstants.cs @@ -36,6 +36,7 @@ public static class ConfigConstants public const string WebsiteUrl = "https://spacestation14.com"; public const string DownloadUrl = "https://spacestation14.com/about/nightlies/"; public const string NewsFeedUrl = "https://spacestation14.com/post/index.xml"; + public const string TranslateUrl = "https://do cs.spacestation14.com/en/general-development/contributing-translations.html"; private static readonly UrlFallbackSet RobustBuildsBaseUrl = new([ "https://robust-builds.cdn.spacestation14.com/", diff --git a/SS14.Launcher/Localization/LocExtension.cs b/SS14.Launcher/Localization/LocExtension.cs new file mode 100644 index 00000000..4b3e8056 --- /dev/null +++ b/SS14.Launcher/Localization/LocExtension.cs @@ -0,0 +1,20 @@ +using System; +using Splat; + +namespace SS14.Launcher.Localization; + +public sealed class LocExtension +{ + public string Key { get; } + + public LocExtension(string key) + { + Key = key; + } + + public object ProvideValue(IServiceProvider services) + { + var locMgr = Locator.Current.GetService()!; + return locMgr.GetString(Key); + } +} diff --git a/SS14.Launcher/Localization/LocalizationManager.cs b/SS14.Launcher/Localization/LocalizationManager.cs new file mode 100644 index 00000000..1d383dbb --- /dev/null +++ b/SS14.Launcher/Localization/LocalizationManager.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using Avalonia.Platform; +using Linguini.Bundle; +using Linguini.Bundle.Builder; +using Linguini.Shared.Types.Bundle; +using Linguini.Syntax.Parser; +using Serilog; +using Splat; +using SS14.Launcher.Models.Data; +using SS14.Launcher.Utility; + +namespace SS14.Launcher.Localization; + +public sealed class LocalizationManager +{ + private readonly DataManager _dataManager; + + public static readonly ImmutableArray AvailableLanguages = + [ + new LanguageInfo(FallbackCulture), + new LanguageInfo("nl"), + new LanguageInfo("el"), + new LanguageInfo("de"), + new LanguageInfo("ru"), + new LanguageInfo("pt"), + new LanguageInfo("es"), + ]; + + private const string FallbackCulture = "en"; + private const string FallbackCultureSub = "en-US"; + + private FluentBundle _bundle = default!; + + public CultureInfo SystemCulture { get; private set; } = CultureInfo.InvariantCulture; + + public event Action? LanguageSwitched; + + public LocalizationManager(DataManager dataManager) + { + _dataManager = dataManager; + } + + public void Initialize() + { + var currentUiCulture = CultureInfo.CurrentUICulture; + Log.Debug("CurrentUICulture: {Culture}", currentUiCulture); + SystemCulture = MatchCultureAgainstAvailable(currentUiCulture) ?? new CultureInfo(FallbackCulture); + Log.Debug("Matched available system culture: {Culture}", SystemCulture); + var setLanguage = _dataManager.GetCVar(CVars.Language); + if (string.IsNullOrEmpty(setLanguage)) + { + Log.Verbose("No language saved in options, using system culture"); + LoadCulture(SystemCulture); + } + else + { + Log.Verbose("Using culture from options: {Culture}", setLanguage); + LoadCulture(new CultureInfo(setLanguage)); + } + } + + public string GetString(string key) + { + return _bundle.GetMessage(key) ?? key; + } + + public string GetString(string key, params (string, object?)[] args) + { + var argsDict = new Dictionary(args.Length); + + foreach (var (argKey, argValue) in args) + { + argsDict.Add(argKey, ToFluentType(argValue)); + } + + return _bundle.GetMessage(key, args: argsDict) ?? key; + } + + private static IFluentType ToFluentType(object? o) + { + return o switch + { + string s => new FluentString(s), + float f => (FluentNumber)f, + double d => (FluentNumber)d, + int i => (FluentNumber)i, + long l => (FluentNumber)l, + null => FluentNone.None, + _ => new FluentString(o.ToString()) + }; + } + + private void LoadCulture(CultureInfo culture) + { + Log.Debug("initializing localization for culture: {CultureName} ({CultureDisplayName})", culture.Name, culture.DisplayName); + + var bundle = LinguiniBuilder.Builder() + .CultureInfo(culture) + .SkipResources() + .SetUseIsolating(false) + .UseConcurrent() + .UncheckedBuild(); + + AddLanguageFiles(bundle, new CultureInfo(FallbackCultureSub)); + + AddLanguageFiles(bundle, culture); + + _bundle = bundle; + + CultureInfo.CurrentUICulture = culture; + } + + private void AddLanguageFiles(FluentBundle bundle, CultureInfo culture) + { + if (!culture.Parent.Equals(CultureInfo.InvariantCulture)) + AddLanguageFiles(bundle, culture.Parent); + + var count = 0; + foreach (var ftl in AssetLoader.GetAssets(new Uri($"avares://SS14.Launcher/Assets/Locale/{culture.Name}"), null)) + { + using var asset = AssetLoader.Open(ftl); + using var reader = new StreamReader(asset, Encoding.UTF8); + var resource = new LinguiniParser(reader).Parse(); + foreach (var resourceError in resource.Errors) + { + Log.Error("Error in loc {LocFile}: {Error}", ftl, resourceError); + } + bundle.AddResourceOverriding(resource); + count += 1; + } + + Log.Verbose("Loaded {Count} files for locale: {CultureName} ({CultureDisplayName})", count, culture.Name, culture.DisplayName); + } + + public void SwitchToLanguage(CultureInfo? culture) + { + LoadCulture(culture ?? SystemCulture); + // Trigger re-creation of main window view which will refresh localization strings everywhere. + LanguageSwitched?.Invoke(); + } + + private static CultureInfo? MatchCultureAgainstAvailable(CultureInfo culture) + { + foreach (var parent in EnumerateParents(culture)) + { + if (AvailableLanguages.Any(lang => lang.Name == parent.Name)) + { + return parent; + } + } + + return null; + } + + private static IEnumerable EnumerateParents(CultureInfo culture) + { + while (!culture.Equals(CultureInfo.InvariantCulture)) + { + yield return culture; + culture = culture.Parent; + } + } + + public static LocalizationManager Instance => Locator.Current.GetRequiredService(); + + // ReSharper disable once NotAccessedPositionalProperty.Global + public sealed record LanguageInfo(string Name) + { + public CultureInfo Culture { get; } = new(Name); + } +} diff --git a/SS14.Launcher/Models/Data/CVars.cs b/SS14.Launcher/Models/Data/CVars.cs index 85aa577b..331889b7 100644 --- a/SS14.Launcher/Models/Data/CVars.cs +++ b/SS14.Launcher/Models/Data/CVars.cs @@ -109,6 +109,11 @@ public static readonly CVarDef HasDismissedEarlyAccessWarning /// Stores whether the user has seen the Wine warning. /// public static readonly CVarDef WineWarningShown = CVarDef.Create("WineWarningShown", false); + + /// + /// Language the user selected. Null means it should be automatically selected based on system language. + /// + public static readonly CVarDef Language = CVarDef.Create("Language", null); } /// @@ -132,7 +137,6 @@ private protected CVarDef(string name, object? defaultValue, Type type) public static CVarDef Create( string name, T defaultValue) - where T : notnull { return new CVarDef(name, defaultValue); } diff --git a/SS14.Launcher/Models/Data/DataManager.cs b/SS14.Launcher/Models/Data/DataManager.cs index 96e79d21..7a01c0c6 100644 --- a/SS14.Launcher/Models/Data/DataManager.cs +++ b/SS14.Launcher/Models/Data/DataManager.cs @@ -281,7 +281,7 @@ private void LoadSqliteConfig(SqliteConnection sqliteConnection) continue; if (entry.Type == typeof(string)) - Set((string) v); + Set((string?) v); else if (entry.Type == typeof(bool)) Set((long) v != 0); else if (entry.Type == typeof(int)) diff --git a/SS14.Launcher/Models/ServerStatus/ServerListCache.cs b/SS14.Launcher/Models/ServerStatus/ServerListCache.cs index 889cad51..1b43efc3 100644 --- a/SS14.Launcher/Models/ServerStatus/ServerListCache.cs +++ b/SS14.Launcher/Models/ServerStatus/ServerListCache.cs @@ -129,8 +129,6 @@ public async void RefreshServerList(CancellationToken cancel) } } - Status = RefreshListStatus.Updating; - _allServers.AddItems(entries.Select(entry => { var statusData = new ServerStatusData(entry.Address, entry.HubAddress); @@ -201,11 +199,6 @@ public enum RefreshListStatus /// UpdatingMaster, - /// - /// Fetched master server list and currently fetching information from master servers. - /// - Updating, - /// /// Fetched information from ALL servers from the hub. /// diff --git a/SS14.Launcher/Program.cs b/SS14.Launcher/Program.cs index e3526e3a..dea3b683 100644 --- a/SS14.Launcher/Program.cs +++ b/SS14.Launcher/Program.cs @@ -15,6 +15,7 @@ using Serilog.Sinks.SystemConsole.Themes; using Splat; using SS14.Launcher.Api; +using SS14.Launcher.Localization; using SS14.Launcher.Models; using SS14.Launcher.Models.ContentManagement; using SS14.Launcher.Models.Data; @@ -231,12 +232,14 @@ private static AppBuilder BuildAvaloniaApp(DataManager cfg) http.DefaultRequestHeaders.Add("SS14-Launcher-Fingerprint", cfg.Fingerprint.ToString()); Locator.CurrentMutable.RegisterConstant(http); + var loc = new LocalizationManager(cfg); var authApi = new AuthApi(http); var hubApi = new HubApi(http); var launcherInfo = new LauncherInfoManager(http); var overrideAssets = new OverrideAssetsManager(cfg, http, launcherInfo); var loginManager = new LoginManager(cfg, authApi); + locator.RegisterConstant(loc); locator.RegisterConstant(new ContentManager()); locator.RegisterConstant(new EngineManagerDynamic()); locator.RegisterConstant(new Updater()); @@ -261,13 +264,15 @@ private static AppBuilder BuildAvaloniaApp(DataManager cfg) // container, etc. private static void AppMain(Application app, string[] args) { + var loc = Locator.Current.GetRequiredService(); var msgr = Locator.Current.GetRequiredService(); var contentManager = Locator.Current.GetRequiredService(); var overrideAssets = Locator.Current.GetRequiredService(); var launcherInfo = Locator.Current.GetRequiredService(); - contentManager.Initialize(); + loc.Initialize(); launcherInfo.Initialize(); + contentManager.Initialize(); overrideAssets.Initialize(); var viewModel = new MainWindowViewModel(); @@ -277,6 +282,14 @@ private static void AppMain(Application app, string[] args) }; viewModel.OnWindowInitialized(); + loc.LanguageSwitched += () => + { + window.ReloadContent(); + + // Reloading content isn't a smooth process anyway, so let's do some housekeeping while we're at it. + GC.Collect(); + }; + var lc = new LauncherCommands(viewModel); lc.RunCommandTask(); Locator.CurrentMutable.RegisterConstant(lc); diff --git a/SS14.Launcher/SS14.Launcher.csproj b/SS14.Launcher/SS14.Launcher.csproj index a68de02d..d95c2883 100644 --- a/SS14.Launcher/SS14.Launcher.csproj +++ b/SS14.Launcher/SS14.Launcher.csproj @@ -64,6 +64,7 @@ + diff --git a/SS14.Launcher/Theme/Theme.xaml b/SS14.Launcher/Theme/Theme.xaml index 88479248..4c9db0dd 100644 --- a/SS14.Launcher/Theme/Theme.xaml +++ b/SS14.Launcher/Theme/Theme.xaml @@ -76,4 +76,11 @@ + + + diff --git a/SS14.Launcher/Theme/ThemeDropDown.xaml b/SS14.Launcher/Theme/ThemeDropDown.xaml index 21e03301..1156c1f1 100644 --- a/SS14.Launcher/Theme/ThemeDropDown.xaml +++ b/SS14.Launcher/Theme/ThemeDropDown.xaml @@ -26,7 +26,9 @@ MinWidth="{Binding Bounds.Width, RelativeSource={RelativeSource TemplatedParent}}" Name="PART_Popup" PlacementTarget="{TemplateBinding}" - IsOpen="{TemplateBinding IsDropDownOpen,Mode=TwoWay}"> + Placement="{TemplateBinding Placement}" + IsOpen="{TemplateBinding IsDropDownOpen,Mode=TwoWay}" + IsLightDismissEnabled="True"> diff --git a/SS14.Launcher/Theme/ThemeIconLabel.xaml b/SS14.Launcher/Theme/ThemeIconLabel.xaml index e41e4e4b..1e1699a4 100644 --- a/SS14.Launcher/Theme/ThemeIconLabel.xaml +++ b/SS14.Launcher/Theme/ThemeIconLabel.xaml @@ -7,6 +7,7 @@ diff --git a/SS14.Launcher/Theme/ThemeResources.xaml b/SS14.Launcher/Theme/ThemeResources.xaml index ad17f306..d3a85b84 100644 --- a/SS14.Launcher/Theme/ThemeResources.xaml +++ b/SS14.Launcher/Theme/ThemeResources.xaml @@ -3,6 +3,7 @@ xmlns:sys="clr-namespace:System;assembly=mscorlib"> #25252A + #202025 #EEEEEE #666 @@ -22,6 +23,7 @@ #00575B7F + diff --git a/SS14.Launcher/Utility/LocatorExt.cs b/SS14.Launcher/Utility/LocatorExt.cs index 42e163a0..ab7d4f80 100644 --- a/SS14.Launcher/Utility/LocatorExt.cs +++ b/SS14.Launcher/Utility/LocatorExt.cs @@ -1,5 +1,6 @@ using System; using Splat; +using SS14.Launcher.Localization; namespace SS14.Launcher.Utility; diff --git a/SS14.Launcher/ViewModels/AccountDropDownViewModel.cs b/SS14.Launcher/ViewModels/AccountDropDownViewModel.cs index 545d48bb..f5544c78 100644 --- a/SS14.Launcher/ViewModels/AccountDropDownViewModel.cs +++ b/SS14.Launcher/ViewModels/AccountDropDownViewModel.cs @@ -8,6 +8,7 @@ using Serilog; using Splat; using SS14.Launcher.Api; +using SS14.Launcher.Localization; using SS14.Launcher.Models.Data; using SS14.Launcher.Models.Logins; using SS14.Launcher.Utility; @@ -21,6 +22,7 @@ public class AccountDropDownViewModel : ViewModelBase private readonly AuthApi _authApi; private readonly LoginManager _loginMgr; private readonly ReadOnlyObservableCollection _accounts; + private readonly LocalizationManager _loc; public ReadOnlyObservableCollection Accounts => _accounts; @@ -32,6 +34,7 @@ public AccountDropDownViewModel(MainWindowViewModel mainVm) _cfg = Locator.Current.GetRequiredService(); _authApi = Locator.Current.GetRequiredService(); _loginMgr = Locator.Current.GetRequiredService(); + _loc = LocalizationManager.Instance; this.WhenAnyValue(x => x._loginMgr.ActiveAccount) .Subscribe(_ => @@ -66,12 +69,17 @@ public AccountDropDownViewModel(MainWindowViewModel mainVm) } public string LoginText => _loginMgr.ActiveAccount?.Username ?? - (EnableMultiAccounts ? "No account selected" : "Not logged in"); + (EnableMultiAccounts ? _loc.GetString("account-drop-down-none-selected") : _loc.GetString("account-drop-down-not-logged-in")); - public string LogoutText => _cfg.Logins.Count == 1 ? "Log out" : $"Log out of {_loginMgr.ActiveAccount?.Username}"; + public string LogoutText => _cfg.Logins.Count == 1 + ? _loc.GetString("account-drop-down-log-out") + : _loc.GetString("account-drop-down-log-out-of", ("name", _loginMgr.ActiveAccount?.Username)); public bool AccountSwitchVisible => _cfg.Logins.Count > 1 || _loginMgr.ActiveAccount == null; - public string AccountSwitchText => _loginMgr.ActiveAccount != null ? "Switch account:" : "Select account:"; + public string AccountSwitchText => _loginMgr.ActiveAccount != null + ? _loc.GetString("account-drop-down-switch-account") + : _loc.GetString("account-drop-down-select-account"); + public bool AccountControlsVisible => _loginMgr.ActiveAccount != null; [Reactive] public bool IsDropDownOpen { get; set; } diff --git a/SS14.Launcher/ViewModels/ConnectingViewModel.cs b/SS14.Launcher/ViewModels/ConnectingViewModel.cs index 355532d5..4d446756 100644 --- a/SS14.Launcher/ViewModels/ConnectingViewModel.cs +++ b/SS14.Launcher/ViewModels/ConnectingViewModel.cs @@ -4,6 +4,7 @@ using Avalonia.Platform.Storage; using ReactiveUI; using Splat; +using SS14.Launcher.Localization; using SS14.Launcher.Models; using SS14.Launcher.Utility; @@ -15,6 +16,7 @@ public class ConnectingViewModel : ViewModelBase private readonly Updater _updater; private readonly MainWindowViewModel _windowVm; private readonly ConnectionType _connectionType; + private readonly LocalizationManager _loc; private readonly CancellationTokenSource _cancelSource = new CancellationTokenSource(); @@ -36,6 +38,7 @@ public class ConnectingViewModel : ViewModelBase public ConnectingViewModel(Connector connector, MainWindowViewModel windowVm, string? givenReason, ConnectionType connectionType) { _updater = Locator.Current.GetRequiredService(); + _loc = LocalizationManager.Instance; _connector = connector; _windowVm = windowVm; _connectionType = connectionType; @@ -157,40 +160,39 @@ public string SpeedText public string StatusText => _connectorStatus switch { - Connector.ConnectionStatus.None => "Starting connection..." + _reasonSuffix, - Connector.ConnectionStatus.UpdateError => - "There was an error while downloading server content. Please ask on Discord for support if the problem persists.", - Connector.ConnectionStatus.Updating => ("Updating: " + _updaterStatus switch + Connector.ConnectionStatus.None => _loc.GetString("connecting-status-none") + _reasonSuffix, + Connector.ConnectionStatus.UpdateError => _loc.GetString("connecting-status-update-error"), + Connector.ConnectionStatus.Updating => _loc.GetString("connecting-status-updating", ("status", _loc.GetString(_updaterStatus switch { - Updater.UpdateStatus.CheckingClientUpdate => "Checking for server content update...", - Updater.UpdateStatus.DownloadingEngineVersion => "Downloading server content...", - Updater.UpdateStatus.DownloadingClientUpdate => "Downloading server content...", - Updater.UpdateStatus.FetchingClientManifest => "Fetching server manifest...", - Updater.UpdateStatus.Verifying => "Verifying download integrity...", - Updater.UpdateStatus.CullingEngine => "Clearing old content...", - Updater.UpdateStatus.CullingContent => "Clearing old server content...", - Updater.UpdateStatus.Ready => "Update done!", - Updater.UpdateStatus.CheckingEngineModules => "Checking for additional dependencies...", - Updater.UpdateStatus.DownloadingEngineModules => "Downloading extra dependencies...", - Updater.UpdateStatus.CommittingDownload => "Synchronizing to disk...", - Updater.UpdateStatus.LoadingIntoDb => "Storing assets in database...", - Updater.UpdateStatus.LoadingContentBundle => "Loading content bundle...", - _ => "You shouldn't see this" - }) + _reasonSuffix, - Connector.ConnectionStatus.Connecting => "Fetching connection info from server..." + _reasonSuffix, - Connector.ConnectionStatus.ConnectionFailed => "Failed to connect to server!", - Connector.ConnectionStatus.StartingClient => "Starting client..." + _reasonSuffix, - Connector.ConnectionStatus.NotAContentBundle => "File is not a valid content bundle!", + Updater.UpdateStatus.CheckingClientUpdate => "connecting-update-status-checking-client-update", + Updater.UpdateStatus.DownloadingEngineVersion => "connecting-update-status-downloading-engine", + Updater.UpdateStatus.DownloadingClientUpdate => "connecting-update-status-downloading-content", + Updater.UpdateStatus.FetchingClientManifest => "connecting-update-status-fetching-manifest", + Updater.UpdateStatus.Verifying => "connecting-update-status-verifying", + Updater.UpdateStatus.CullingEngine => "connecting-update-status-culling-engine", + Updater.UpdateStatus.CullingContent => "connecting-update-status-culling-content", + Updater.UpdateStatus.Ready => "connecting-update-status-ready", + Updater.UpdateStatus.CheckingEngineModules => "connecting-update-status-checking-engine-modules", + Updater.UpdateStatus.DownloadingEngineModules => "connecting-update-status-downloading-engine-modules", + Updater.UpdateStatus.CommittingDownload => "connecting-update-status-committing-download", + Updater.UpdateStatus.LoadingIntoDb => "connecting-update-status-loading-into-db", + Updater.UpdateStatus.LoadingContentBundle => "connecting-update-status-loading-content-bundle", + _ => "connecting-update-status-unknown" + }))) + _reasonSuffix, + Connector.ConnectionStatus.Connecting => _loc.GetString("connecting-status-connecting") + _reasonSuffix, + Connector.ConnectionStatus.ConnectionFailed => _loc.GetString("connecting-status-connection-failed"), + Connector.ConnectionStatus.StartingClient => _loc.GetString("connecting-status-starting-client") + _reasonSuffix, + Connector.ConnectionStatus.NotAContentBundle => _loc.GetString("connecting-status-not-a-content-bundle"), Connector.ConnectionStatus.ClientExited => _connector.ClientExitedBadly - ? "Client seems to have crashed while starting. If this persists, please ask on Discord or GitHub for support." + ? _loc.GetString("connecting-status-client-crashed") : "", _ => "" }; public string TitleText => _connectionType switch { - ConnectionType.Server => "Connecting...", - ConnectionType.ContentBundle => "Loading...", + ConnectionType.Server => _loc.GetString("connecting-title-connecting"), + ConnectionType.ContentBundle => _loc.GetString("connecting-title-content-bundle"), _ => "" }; diff --git a/SS14.Launcher/ViewModels/LanguageSelectorViewModel.cs b/SS14.Launcher/ViewModels/LanguageSelectorViewModel.cs new file mode 100644 index 00000000..335a22e3 --- /dev/null +++ b/SS14.Launcher/ViewModels/LanguageSelectorViewModel.cs @@ -0,0 +1,134 @@ +using System; +using System.Globalization; +using System.Linq; +using Microsoft.Toolkit.Mvvm.ComponentModel; +using Splat; +using SS14.Launcher.Localization; +using SS14.Launcher.Models.Data; +using SS14.Launcher.Utility; + +namespace SS14.Launcher.ViewModels; + +public sealed class LanguageSelectorViewModel : ObservableRecipient +{ + private readonly LocalizationManager _localization; + private readonly DataManager _dataManager; + private readonly LanguageSelectorLanguageViewModel _systemDefaultLanguage; + + private bool _isDropDownOpen; + private bool _isChangeSelected; + + // The language currently set in the config. + private LanguageSelectorLanguageViewModel? _configValue; + + public LanguageSelectorLanguageViewModel[] Languages { get; } + + public bool IsDropDownOpen + { + get => _isDropDownOpen; + set + { + var wasChanged = SetProperty(ref _isDropDownOpen, value); + if (wasChanged && value) + { + UpdateSelectedOnOpen(); + } + } + } + + public bool IsChangeSelected + { + get => _isChangeSelected; + set => SetProperty(ref _isChangeSelected, value); + } + + public LanguageSelectorViewModel() + { + _localization = LocalizationManager.Instance; + _dataManager = Locator.Current.GetRequiredService(); + + _systemDefaultLanguage = new LanguageSelectorLanguageViewModel(_localization, this, null); + Languages = + [ + // System default + _systemDefaultLanguage, + ..LocalizationManager.AvailableLanguages + .OrderBy(x => x.Culture.EnglishName) + .Select(x => new LanguageSelectorLanguageViewModel(_localization, this, x.Culture)) + ]; + } + + private void UpdateSelectedOnOpen() + { + var language = _dataManager.GetCVar(CVars.Language); + if (language == "") + language = null; + + _configValue = Languages.SingleOrDefault(l => l.Culture?.Name == language); + if (_configValue == null) + return; + + _configValue.IsChecked = true; + } + + public void OnHelpTranslateButtonPressed() + { + Helpers.OpenUri(new Uri(ConfigConstants.TranslateUrl)); + } + + public void OnSaveButtonPressed() + { + IsDropDownOpen = false; + + var selected = Languages.SingleOrDefault(x => x.IsChecked) ?? _systemDefaultLanguage; + _dataManager.SetCVar(CVars.Language, selected.Culture?.Name); + _dataManager.CommitConfig(); + _localization.SwitchToLanguage(selected.Culture); + } + + public void OnCancelButtonPressed() + { + IsDropDownOpen = false; + } + + public void UpdateLanguageChecked() + { + IsChangeSelected = !(_configValue?.IsChecked ?? false); + } +} + +public sealed class LanguageSelectorLanguageViewModel( + LocalizationManager loc, + LanguageSelectorViewModel parent, + CultureInfo? culture) : ObservableObject +{ + private bool _isChecked; + public CultureInfo? Culture { get; } = culture; + + public bool IsChecked + { + get => _isChecked; + set + { + SetProperty(ref _isChecked, value); + parent.UpdateLanguageChecked(); + } + } + + public string Text + { + get + { + if (Culture == null) + { + return loc.GetString("language-selector-system-language", + ("languageName", loc.SystemCulture.NativeName)); + } + + return loc.GetString( + "language-selector-language", + ("languageName", Culture.NativeName), + ("englishName", Culture.EnglishName)); + } + } +} diff --git a/SS14.Launcher/ViewModels/Login/AuthErrorsOverlayViewModel.cs b/SS14.Launcher/ViewModels/Login/AuthErrorsOverlayViewModel.cs index e155cac7..3e6ad3cf 100644 --- a/SS14.Launcher/ViewModels/Login/AuthErrorsOverlayViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/AuthErrorsOverlayViewModel.cs @@ -1,4 +1,5 @@ using SS14.Launcher.Api; +using SS14.Launcher.Localization; namespace SS14.Launcher.ViewModels.Login; @@ -20,23 +21,20 @@ public static string[] AuthCodeToErrors(string[] errors, AuthApi.AuthenticateDen if (code == AuthApi.AuthenticateDenyResponseCode.UnknownError) return errors; + var loc = LocalizationManager.Instance; var err = code switch { - AuthApi.AuthenticateDenyResponseCode.InvalidCredentials => "Invalid login credentials", - AuthApi.AuthenticateDenyResponseCode.AccountUnconfirmed => - "The email address for this account still needs to be confirmed. " + - "Please confirm your email address before trying to log in", + AuthApi.AuthenticateDenyResponseCode.InvalidCredentials => "login-error-invalid-credentials", + AuthApi.AuthenticateDenyResponseCode.AccountUnconfirmed => "login-error-account-unconfirmed", // Never shown I hope. - AuthApi.AuthenticateDenyResponseCode.TfaRequired => "2-factor authentication required", - AuthApi.AuthenticateDenyResponseCode.TfaInvalid => "2-factor authentication code invalid", - - AuthApi.AuthenticateDenyResponseCode.AccountLocked => - "Account has been locked. Please contact us if you believe this to be in error.", - _ => "Unknown error" + AuthApi.AuthenticateDenyResponseCode.TfaRequired => "login-error-account-2fa-required", + AuthApi.AuthenticateDenyResponseCode.TfaInvalid => "login-error-account-2fa-invalid", + AuthApi.AuthenticateDenyResponseCode.AccountLocked => "login-error-account-account-locked", + _ => "login-error-unknown" }; - return new[] { err }; + return new[] { loc.GetString(err) }; } public void Ok() diff --git a/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs b/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs index 98d45bd9..7ebe3ac2 100644 --- a/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs @@ -1,12 +1,13 @@ using ReactiveUI.Fody.Helpers; using SS14.Launcher.Api; -using SS14.Launcher.Models.Data; +using SS14.Launcher.Localization; namespace SS14.Launcher.ViewModels.Login; public sealed class ForgotPasswordViewModel : BaseLoginViewModel { private readonly AuthApi _authApi; + private readonly LocalizationManager _loc = LocalizationManager.Instance; [Reactive] public string EditingEmail { get; set; } = ""; @@ -36,14 +37,14 @@ public async void SubmitPressed() if (!_errored) { // This isn't an error lol but that's what I called the control. - OverlayControl = new AuthErrorsOverlayViewModel(this, "Reset email sent", new[] + OverlayControl = new AuthErrorsOverlayViewModel(this, _loc.GetString("login-forgot-success-title"), new[] { - "A reset link has been sent to your email address." + _loc.GetString("login-forgot-success-message") }); } else { - OverlayControl = new AuthErrorsOverlayViewModel(this, "Error", errors!); + OverlayControl = new AuthErrorsOverlayViewModel(this, _loc.GetString("login-forgot-error"), errors!); } } finally diff --git a/SS14.Launcher/ViewModels/Login/LoginViewModel.cs b/SS14.Launcher/ViewModels/Login/LoginViewModel.cs index 955b2fd2..64c17c7b 100644 --- a/SS14.Launcher/ViewModels/Login/LoginViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/LoginViewModel.cs @@ -3,6 +3,7 @@ using ReactiveUI; using ReactiveUI.Fody.Helpers; using SS14.Launcher.Api; +using SS14.Launcher.Localization; using SS14.Launcher.Models.Data; using SS14.Launcher.Models.Logins; @@ -13,6 +14,7 @@ public class LoginViewModel : BaseLoginViewModel private readonly AuthApi _authApi; private readonly LoginManager _loginMgr; private readonly DataManager _dataManager; + private readonly LocalizationManager _loc = LocalizationManager.Instance; [Reactive] public string EditingUsername { get; set; } = ""; [Reactive] public string EditingPassword { get; set; } = ""; @@ -22,7 +24,7 @@ public class LoginViewModel : BaseLoginViewModel public LoginViewModel(MainWindowLoginViewModel parentVm, AuthApi authApi, LoginManager loginMgr, DataManager dataManager) : base(parentVm) { - BusyText = "Logging in..."; + BusyText = _loc.GetString("login-login-busy-logging-in"); _authApi = authApi; _loginMgr = loginMgr; _dataManager = dataManager; @@ -62,6 +64,7 @@ public static async Task DoLogin( AuthApi authApi) where T : BaseLoginViewModel, IErrorOverlayOwner { + var loc = LocalizationManager.Instance; if (resp.IsSuccess) { var loginInfo = resp.LoginInfo; @@ -93,7 +96,7 @@ public static async Task DoLogin( } var errors = AuthErrorsOverlayViewModel.AuthCodeToErrors(resp.Errors, resp.Code); - vm.OverlayControl = new AuthErrorsOverlayViewModel(vm, "Unable to log in", errors); + vm.OverlayControl = new AuthErrorsOverlayViewModel(vm, loc.GetString("login-login-error-title"), errors); return false; } diff --git a/SS14.Launcher/ViewModels/Login/RegisterNeedsConfirmationViewModel.cs b/SS14.Launcher/ViewModels/Login/RegisterNeedsConfirmationViewModel.cs index f1efa295..bcf1549e 100644 --- a/SS14.Launcher/ViewModels/Login/RegisterNeedsConfirmationViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/RegisterNeedsConfirmationViewModel.cs @@ -3,6 +3,7 @@ using ReactiveUI; using ReactiveUI.Fody.Helpers; using SS14.Launcher.Api; +using SS14.Launcher.Localization; using SS14.Launcher.Models.Data; using SS14.Launcher.Models.Logins; @@ -13,6 +14,7 @@ public class RegisterNeedsConfirmationViewModel : BaseLoginViewModel private const int TimeoutSeconds = 5; private readonly AuthApi _authApi; + private readonly LocalizationManager _loc = LocalizationManager.Instance; private readonly string _loginUsername; private readonly string _loginPassword; @@ -25,7 +27,7 @@ public string ConfirmButtonText { get { - var text = "I have confirmed my account"; + var text = _loc.GetString("login-confirmation-button-confirm"); if (TimeoutSecondsLeft != 0) { text = $"{text} ({TimeoutSecondsLeft})"; @@ -42,7 +44,7 @@ public RegisterNeedsConfirmationViewModel( AuthApi authApi, string username, string password, LoginManager loginMgr, DataManager dataManager) : base(parentVm) { - BusyText = "Logging in..."; + BusyText = _loc.GetString("login-confirmation-busy"); _authApi = authApi; _loginUsername = username; diff --git a/SS14.Launcher/ViewModels/MainWindowLoginViewModel.cs b/SS14.Launcher/ViewModels/MainWindowLoginViewModel.cs index dc8758f1..18502028 100644 --- a/SS14.Launcher/ViewModels/MainWindowLoginViewModel.cs +++ b/SS14.Launcher/ViewModels/MainWindowLoginViewModel.cs @@ -15,6 +15,8 @@ public class MainWindowLoginViewModel : ViewModelBase private readonly LoginManager _loginMgr; private BaseLoginViewModel _screen; + public LanguageSelectorViewModel LanguageSelector { get; } = new(); + public BaseLoginViewModel Screen { get => _screen; diff --git a/SS14.Launcher/ViewModels/MainWindowTabs/DevelopmentTabViewModel.cs b/SS14.Launcher/ViewModels/MainWindowTabs/DevelopmentTabViewModel.cs index 9f0de056..3d06d516 100644 --- a/SS14.Launcher/ViewModels/MainWindowTabs/DevelopmentTabViewModel.cs +++ b/SS14.Launcher/ViewModels/MainWindowTabs/DevelopmentTabViewModel.cs @@ -1,5 +1,6 @@ using ReactiveUI; using Splat; +using SS14.Launcher.Localization; using SS14.Launcher.Models.Data; using SS14.Launcher.Utility; @@ -7,6 +8,7 @@ namespace SS14.Launcher.ViewModels.MainWindowTabs; public sealed class DevelopmentTabViewModel : MainWindowTabViewModel { + private readonly LocalizationManager _loc = LocalizationManager.Instance; public DataManager Cfg { get; } public DevelopmentTabViewModel() @@ -20,7 +22,9 @@ public DevelopmentTabViewModel() }; } - public override string Name => Cfg.GetCVar(CVars.EngineOverrideEnabled) ? "[DEV (override active!!!)]" : "[DEV]"; + public override string Name => Cfg.GetCVar(CVars.EngineOverrideEnabled) + ? _loc.GetString("tab-development-title-override") + : _loc.GetString("tab-development-title"); public bool DisableSigning { diff --git a/SS14.Launcher/ViewModels/MainWindowTabs/HomePageViewModel.cs b/SS14.Launcher/ViewModels/MainWindowTabs/HomePageViewModel.cs index 2bc74e5c..363c6aac 100644 --- a/SS14.Launcher/ViewModels/MainWindowTabs/HomePageViewModel.cs +++ b/SS14.Launcher/ViewModels/MainWindowTabs/HomePageViewModel.cs @@ -9,6 +9,7 @@ using DynamicData.Alias; using ReactiveUI.Fody.Helpers; using Splat; +using SS14.Launcher.Localization; using SS14.Launcher.Models.Data; using SS14.Launcher.Models.ServerStatus; using SS14.Launcher.Utility; @@ -61,7 +62,7 @@ public HomePageViewModel(MainWindowViewModel mainWindowViewModel) [Reactive] public bool FavoritesEmpty { get; private set; } = true; - public override string Name => "Home"; + public override string Name => LocalizationManager.Instance.GetString("tab-home-title"); public Control? Control { get; set; } public async void DirectConnectPressed() diff --git a/SS14.Launcher/ViewModels/MainWindowTabs/NewsTabViewModel.cs b/SS14.Launcher/ViewModels/MainWindowTabs/NewsTabViewModel.cs index 6421e40c..09410b65 100644 --- a/SS14.Launcher/ViewModels/MainWindowTabs/NewsTabViewModel.cs +++ b/SS14.Launcher/ViewModels/MainWindowTabs/NewsTabViewModel.cs @@ -3,6 +3,7 @@ using System.Collections.ObjectModel; using CodeHollow.FeedReader; using ReactiveUI; +using SS14.Launcher.Localization; namespace SS14.Launcher.ViewModels.MainWindowTabs; @@ -54,5 +55,5 @@ private async void PullNews() public ObservableCollection NewsEntries { get; } - public override string Name => "News"; + public override string Name => LocalizationManager.Instance.GetString("tab-news-title"); } diff --git a/SS14.Launcher/ViewModels/MainWindowTabs/OptionsTabViewModel.cs b/SS14.Launcher/ViewModels/MainWindowTabs/OptionsTabViewModel.cs index 063f75b9..eee12897 100644 --- a/SS14.Launcher/ViewModels/MainWindowTabs/OptionsTabViewModel.cs +++ b/SS14.Launcher/ViewModels/MainWindowTabs/OptionsTabViewModel.cs @@ -1,5 +1,6 @@ using System.Diagnostics; using Splat; +using SS14.Launcher.Localization; using SS14.Launcher.Models.ContentManagement; using SS14.Launcher.Models.Data; using SS14.Launcher.Models.EngineManager; @@ -13,6 +14,8 @@ public class OptionsTabViewModel : MainWindowTabViewModel private readonly IEngineManager _engineManager; private readonly ContentManager _contentManager; + public LanguageSelectorViewModel Language { get; } = new(); + public OptionsTabViewModel() { Cfg = Locator.Current.GetRequiredService(); @@ -26,7 +29,7 @@ public OptionsTabViewModel() public bool HideDisableSigning => false; #endif - public override string Name => "Options"; + public override string Name => LocalizationManager.Instance.GetString("tab-options-title"); public bool CompatMode { diff --git a/SS14.Launcher/ViewModels/MainWindowTabs/ServerEntryViewModel.cs b/SS14.Launcher/ViewModels/MainWindowTabs/ServerEntryViewModel.cs index eb125512..aecb7243 100644 --- a/SS14.Launcher/ViewModels/MainWindowTabs/ServerEntryViewModel.cs +++ b/SS14.Launcher/ViewModels/MainWindowTabs/ServerEntryViewModel.cs @@ -2,6 +2,7 @@ using System.ComponentModel; using Microsoft.Toolkit.Mvvm.ComponentModel; using Microsoft.Toolkit.Mvvm.Messaging; +using SS14.Launcher.Localization; using SS14.Launcher.Models.Data; using SS14.Launcher.Models.ServerStatus; using static SS14.Launcher.Utility.HubUtility; @@ -10,6 +11,7 @@ namespace SS14.Launcher.ViewModels.MainWindowTabs; public sealed class ServerEntryViewModel : ObservableRecipient, IRecipient, IViewModelBase { + private readonly LocalizationManager _loc = LocalizationManager.Instance; private readonly ServerStatusData _cacheData; private readonly IServerSource _serverSource; private readonly DataManager _cfg; @@ -65,7 +67,9 @@ public bool IsExpanded } public string Name => Favorite?.Name ?? _cacheData.Name ?? _fallbackName; - public string FavoriteButtonText => IsFavorite ? "Remove Favorite" : "Add Favorite"; + public string FavoriteButtonText => IsFavorite + ? _loc.GetString("server-entry-remove-favorite") + : _loc.GetString("server-entry-add-favorite"); private bool IsFavorite => _cfg.FavoriteServers.Lookup(Address).HasValue; public bool ViewedInFavoritesPane { get; set; } @@ -77,19 +81,13 @@ public string ServerStatusString switch (_cacheData.Status) { case ServerStatusCode.Offline: - return "OFFLINE"; + return _loc.GetString("server-entry-offline"); case ServerStatusCode.Online: // Give a ratio for servers with a defined player count, or just a current number for those without. - if (_cacheData.SoftMaxPlayerCount > 0) - { - return $"{_cacheData.PlayerCount} / {_cacheData.SoftMaxPlayerCount}"; - } - else - { - return $"{_cacheData.PlayerCount} / ∞"; - } + return _loc.GetString("server-entry-player-count", + ("players", _cacheData.PlayerCount), ("max", _cacheData.SoftMaxPlayerCount)); case ServerStatusCode.FetchingStatus: - return "Fetching..."; + return _loc.GetString("server-entry-fetching"); default: throw new NotSupportedException(); } @@ -103,17 +101,17 @@ public string Description switch (_cacheData.Status) { case ServerStatusCode.Offline: - return "Unable to contact server"; + return _loc.GetString("server-entry-description-offline"); case ServerStatusCode.FetchingStatus: - return "Fetching server status..."; + return _loc.GetString("server-entry-description-fetching"); } return _cacheData.StatusInfo switch { - ServerStatusInfoCode.NotFetched => "Fetching server description...", - ServerStatusInfoCode.Fetching => "Fetching server description...", - ServerStatusInfoCode.Error => "Error while fetching server description", - ServerStatusInfoCode.Fetched => _cacheData.Description ?? "No server description provided", + ServerStatusInfoCode.NotFetched => _loc.GetString("server-entry-description-fetching"), + ServerStatusInfoCode.Fetching => _loc.GetString("server-entry-description-fetching"), + ServerStatusInfoCode.Error => _loc.GetString("server-entry-description-error"), + ServerStatusInfoCode.Fetched => _cacheData.Description ?? _loc.GetString("server-entry-description-none"), _ => throw new ArgumentOutOfRangeException() }; } @@ -139,7 +137,9 @@ public string? FetchedFrom { if (_cfg.HasCustomHubs) { - return _cacheData.HubAddress == null ? null : $"Fetched from {GetHubShortName(_cacheData.HubAddress)}"; + return _cacheData.HubAddress == null + ? null + : _loc.GetString("server-fetched-from-hub", ("hub", GetHubShortName(_cacheData.HubAddress))); } return null; diff --git a/SS14.Launcher/ViewModels/MainWindowTabs/ServerListFiltersViewModel.Tables.cs b/SS14.Launcher/ViewModels/MainWindowTabs/ServerListFiltersViewModel.Tables.cs index 70b65582..a8dcf934 100644 --- a/SS14.Launcher/ViewModels/MainWindowTabs/ServerListFiltersViewModel.Tables.cs +++ b/SS14.Launcher/ViewModels/MainWindowTabs/ServerListFiltersViewModel.Tables.cs @@ -5,67 +5,77 @@ namespace SS14.Launcher.ViewModels.MainWindowTabs; public sealed partial class ServerListFiltersViewModel { - private static readonly Dictionary RegionNamesEnglish = new() + private static readonly Dictionary RegionNamesLoc = new() { // @formatter:off - { Tags.RegionAfricaCentral, "Africa Central" }, - { Tags.RegionAfricaNorth, "Africa North" }, - { Tags.RegionAfricaSouth, "Africa South" }, - { Tags.RegionAntarctica, "Antarctica" }, - { Tags.RegionAsiaEast, "Asia East" }, - { Tags.RegionAsiaNorth, "Asia North" }, - { Tags.RegionAsiaSouthEast, "Asia South East" }, - { Tags.RegionCentralAmerica, "Central America" }, - { Tags.RegionEuropeEast, "Europe East" }, - { Tags.RegionEuropeWest, "Europe West" }, - { Tags.RegionGreenland, "Greenland" }, - { Tags.RegionIndia, "India" }, - { Tags.RegionMiddleEast, "Middle East" }, - { Tags.RegionMoon, "The Moon" }, - { Tags.RegionNorthAmericaCentral, "North America Central" }, - { Tags.RegionNorthAmericaEast, "North America East" }, - { Tags.RegionNorthAmericaWest, "North America West" }, - { Tags.RegionOceania, "Oceania" }, - { Tags.RegionSouthAmericaEast, "South America East" }, - { Tags.RegionSouthAmericaSouth, "South America South" }, - { Tags.RegionSouthAmericaWest, "South America West" }, + { Tags.RegionAfricaCentral, "region-africa-central" }, + { Tags.RegionAfricaNorth, "region-africa-north" }, + { Tags.RegionAfricaSouth, "region-africa-south" }, + { Tags.RegionAntarctica, "region-antarctica" }, + { Tags.RegionAsiaEast, "region-asia-east" }, + { Tags.RegionAsiaNorth, "region-asia-north" }, + { Tags.RegionAsiaSouthEast, "region-asia-south-east" }, + { Tags.RegionCentralAmerica, "region-central-america" }, + { Tags.RegionEuropeEast, "region-europe-east" }, + { Tags.RegionEuropeWest, "region-europe-west" }, + { Tags.RegionGreenland, "region-greenland" }, + { Tags.RegionIndia, "region-india" }, + { Tags.RegionMiddleEast, "region-middle-east" }, + { Tags.RegionMoon, "region-the-moon" }, + { Tags.RegionNorthAmericaCentral, "region-north-america-central" }, + { Tags.RegionNorthAmericaEast, "region-north-america-east" }, + { Tags.RegionNorthAmericaWest, "region-north-america-west" }, + { Tags.RegionOceania, "region-oceania" }, + { Tags.RegionSouthAmericaEast, "region-south-america-east" }, + { Tags.RegionSouthAmericaSouth, "region-south-america-south" }, + { Tags.RegionSouthAmericaWest, "region-south-america-west" }, // @formatter:on }; - private static readonly Dictionary RegionNamesShortEnglish = new() + private static readonly Dictionary RegionNamesShortLoc = new() { // @formatter:off - { Tags.RegionAfricaCentral, "Africa Central" }, - { Tags.RegionAfricaNorth, "Africa North" }, - { Tags.RegionAfricaSouth, "Africa South" }, - { Tags.RegionAntarctica, "Antarctica" }, - { Tags.RegionAsiaEast, "Asia East" }, - { Tags.RegionAsiaNorth, "Asia North" }, - { Tags.RegionAsiaSouthEast, "Asia South East" }, - { Tags.RegionCentralAmerica, "Central America" }, - { Tags.RegionEuropeEast, "Europe East" }, - { Tags.RegionEuropeWest, "Europe West" }, - { Tags.RegionGreenland, "Greenland" }, - { Tags.RegionIndia, "India" }, - { Tags.RegionMiddleEast, "Middle East" }, - { Tags.RegionMoon, "The Moon" }, - { Tags.RegionNorthAmericaCentral, "NA Central" }, - { Tags.RegionNorthAmericaEast, "NA East" }, - { Tags.RegionNorthAmericaWest, "NA West" }, - { Tags.RegionOceania, "Oceania" }, - { Tags.RegionSouthAmericaEast, "SA East" }, - { Tags.RegionSouthAmericaSouth, "SA South" }, - { Tags.RegionSouthAmericaWest, "SA West" }, + { Tags.RegionAfricaCentral, "region-short-africa-central" }, + { Tags.RegionAfricaNorth, "region-short-africa-north" }, + { Tags.RegionAfricaSouth, "region-short-africa-south" }, + { Tags.RegionAntarctica, "region-short-antarctica" }, + { Tags.RegionAsiaEast, "region-short-asia-east" }, + { Tags.RegionAsiaNorth, "region-short-asia-north" }, + { Tags.RegionAsiaSouthEast, "region-short-asia-south-east" }, + { Tags.RegionCentralAmerica, "region-short-central-america" }, + { Tags.RegionEuropeEast, "region-short-europe-east" }, + { Tags.RegionEuropeWest, "region-short-europe-west" }, + { Tags.RegionGreenland, "region-short-greenland" }, + { Tags.RegionIndia, "region-short-india" }, + { Tags.RegionMiddleEast, "region-short-middle-east" }, + { Tags.RegionMoon, "region-short-the-moon" }, + { Tags.RegionNorthAmericaCentral, "region-short-north-america-central" }, + { Tags.RegionNorthAmericaEast, "region-short-north-america-east" }, + { Tags.RegionNorthAmericaWest, "region-short-north-america-west" }, + { Tags.RegionOceania, "region-short-oceania" }, + { Tags.RegionSouthAmericaEast, "region-short-south-america-east" }, + { Tags.RegionSouthAmericaSouth, "region-short-south-america-south" }, + { Tags.RegionSouthAmericaWest, "region-short-south-america-west" }, // @formatter:on }; private static readonly Dictionary RolePlayNames = new() { // @formatter:off - { Tags.RolePlayNone, "None" }, - { Tags.RolePlayLow, "Low" }, - { Tags.RolePlayMedium, "Medium" }, - { Tags.RolePlayHigh, "High" }, + { Tags.RolePlayNone, "filters-rp-none-desc" }, + { Tags.RolePlayLow, "filters-rp-low-desc" }, + { Tags.RolePlayMedium, "filters-rp-medium-desc" }, + { Tags.RolePlayHigh, "filters-rp-high-desc" }, + // @formatter:on + }; + + private static readonly Dictionary RolePlayNamesShort = new() + { + // @formatter:off + { Tags.RolePlayNone, "filters-rp-none" }, + { Tags.RolePlayLow, "filters-rp-low" }, + { Tags.RolePlayMedium, "filters-rp-medium" }, + { Tags.RolePlayHigh, "filters-rp-high" }, // @formatter:on }; diff --git a/SS14.Launcher/ViewModels/MainWindowTabs/ServerListFiltersViewModel.cs b/SS14.Launcher/ViewModels/MainWindowTabs/ServerListFiltersViewModel.cs index cbc49160..939c5aeb 100644 --- a/SS14.Launcher/ViewModels/MainWindowTabs/ServerListFiltersViewModel.cs +++ b/SS14.Launcher/ViewModels/MainWindowTabs/ServerListFiltersViewModel.cs @@ -5,6 +5,7 @@ using System.Globalization; using System.Linq; using Microsoft.Toolkit.Mvvm.ComponentModel; +using SS14.Launcher.Localization; using SS14.Launcher.Models.Data; using SS14.Launcher.Models.ServerStatus; using SS14.Launcher.Utility; @@ -15,6 +16,7 @@ namespace SS14.Launcher.ViewModels.MainWindowTabs; public sealed partial class ServerListFiltersViewModel : ObservableObject { + private readonly LocalizationManager _loc; private readonly DataManager _dataManager; private int _totalServers; @@ -51,37 +53,48 @@ public int FilteredServers set => SetProperty(ref _filteredServers, value); } - public ServerListFiltersViewModel(DataManager dataManager) + public string FiltersText => _loc.GetString( + "filters", + ("filteredServers", FilteredServers), + ("totalServers", TotalServers)); + + public ServerListFiltersViewModel(DataManager dataManager, LocalizationManager loc) { _dataManager = dataManager; + _loc = loc; - FiltersEighteenPlus.Add(new ServerFilterViewModel("Yes", "Yes", + FiltersEighteenPlus.Add(new ServerFilterViewModel( + _loc.GetString("filters-18-yes-desc"), + _loc.GetString("filters-18-yes"), new ServerFilter(ServerFilterCategory.EighteenPlus, ServerFilter.DataTrue), this)); - FiltersEighteenPlus.Add(new ServerFilterViewModel("No", "No", + + FiltersEighteenPlus.Add(new ServerFilterViewModel( + _loc.GetString("filters-18-no-desc"), + _loc.GetString("filters-18-no"), new ServerFilter(ServerFilterCategory.EighteenPlus, ServerFilter.DataFalse), this)); FilterPlayerCountHideEmpty = new ServerFilterViewModel( - "Servers with no players will not be shown", - "Hide empty", + _loc.GetString("filters-player-count-hide-empty-desc"), + _loc.GetString("filters-player-count-hide-empty"), ServerFilter.PlayerCountHideEmpty, this); FilterPlayerCountHideFull = new ServerFilterViewModel( - "Servers that are full will not be shown", - "Hide full", + _loc.GetString("filters-player-count-hide-full-desc"), + _loc.GetString("filters-player-count-hide-full"), ServerFilter.PlayerCountHideFull, this); FilterPlayerCountMinimum = new ServerFilterCounterViewModel( - "Servers with less players will not be shown", - "Minimum: ", + _loc.GetString("filters-player-count-minimum-desc"), + _loc.GetString("filters-player-count-minimum"), ServerFilter.PlayerCountMin, _dataManager.GetCVarEntry(CVars.FilterPlayerCountMinValue), this); FilterPlayerCountMaximum = new ServerFilterCounterViewModel( - "Servers with more players will not be shown", - "Maximum: ", + _loc.GetString("filters-player-count-maximum-desc"), + _loc.GetString("filters-player-count-maximum"), ServerFilter.PlayerCountMax, _dataManager.GetCVarEntry(CVars.FilterPlayerCountMaxValue), this); @@ -107,14 +120,15 @@ public void UpdatePresentFilters(IEnumerable servers) { region = region.ToLowerInvariant(); - if (!RegionNamesEnglish.TryGetValue(region, out var name)) + if (!RegionNamesLoc.TryGetValue(region, out var name)) continue; var filter = new ServerFilter(ServerFilterCategory.Region, region); if (!alreadyAdded.Add(filter)) continue; - var nameShort = RegionNamesShortEnglish[region]; + var nameShort = _loc.GetString(RegionNamesShortLoc[region]); + name = _loc.GetString(name); var vm = new ServerFilterViewModel(name, nameShort, filter, this); filtersRegion.Add(vm); @@ -138,7 +152,7 @@ public void UpdatePresentFilters(IEnumerable servers) continue; } - var name = culture.EnglishName; + var name = culture.DisplayName; var vm = new ServerFilterViewModel(name, name, filter, this); filtersLanguage.Add(vm); } @@ -146,14 +160,17 @@ public void UpdatePresentFilters(IEnumerable servers) { rolePlay = rolePlay.ToLowerInvariant(); - if (!RolePlayNames.TryGetValue(rolePlay, out var rpName)) + if (!RolePlayNames.TryGetValue(rolePlay, out var rpLocName)) continue; + var rpName = _loc.GetString(rpLocName); + var rpDesc = _loc.GetString(RolePlayNamesShort[rolePlay]); + var filter = new ServerFilter(ServerFilterCategory.RolePlay, rolePlay); if (!alreadyAdded.Add(filter)) continue; - var vm = new ServerFilterViewModel(rpName, rpName, filter, this); + var vm = new ServerFilterViewModel(rpDesc, rpName, filter, this); filtersRolePlay.Add(vm); } } @@ -175,12 +192,15 @@ public void UpdatePresentFilters(IEnumerable servers) filtersRolePlay.Sort(ServerFilterDataOrderComparer.InstanceRolePlay); filtersHub.Sort(ServerFilterShortNameComparer.Instance); + var unspecified = _loc.GetString("filters-unspecified"); + var unspecifiedDesc = _loc.GetString("filters-unspecified-desc"); + // Unspecified always comes last. - filtersLanguage.Add(new ServerFilterViewModel("Unspecified", "Unspecified", + filtersLanguage.Add(new ServerFilterViewModel(unspecifiedDesc, unspecified, new ServerFilter(ServerFilterCategory.Language, ServerFilter.DataUnspecified), this)); - filtersRegion.Add(new ServerFilterViewModel("Unspecified", "Unspecified", + filtersRegion.Add(new ServerFilterViewModel(unspecifiedDesc, unspecified, new ServerFilter(ServerFilterCategory.Region, ServerFilter.DataUnspecified), this)); - filtersRolePlay.Add(new ServerFilterViewModel("Unspecified", "Unspecified", + filtersRolePlay.Add(new ServerFilterViewModel(unspecifiedDesc, unspecified, new ServerFilter(ServerFilterCategory.RolePlay, ServerFilter.DataUnspecified), this)); // Set. @@ -267,6 +287,7 @@ public void ApplyFilters(List list) } FilteredServers = list.Count; + OnPropertyChanged(nameof(FiltersText)); bool DoesServerMatch(ServerStatusData server) { diff --git a/SS14.Launcher/ViewModels/MainWindowTabs/ServerListTabViewModel.cs b/SS14.Launcher/ViewModels/MainWindowTabs/ServerListTabViewModel.cs index 96f20d21..8d06e116 100644 --- a/SS14.Launcher/ViewModels/MainWindowTabs/ServerListTabViewModel.cs +++ b/SS14.Launcher/ViewModels/MainWindowTabs/ServerListTabViewModel.cs @@ -5,6 +5,7 @@ using ReactiveUI; using ReactiveUI.Fody.Helpers; using Splat; +using SS14.Launcher.Localization; using SS14.Launcher.Models.ServerStatus; using SS14.Launcher.Utility; @@ -12,6 +13,7 @@ namespace SS14.Launcher.ViewModels.MainWindowTabs; public class ServerListTabViewModel : MainWindowTabViewModel { + private readonly LocalizationManager _loc = LocalizationManager.Instance; private readonly MainWindowViewModel _windowVm; private readonly ServerListCache _serverListCache; @@ -19,7 +21,7 @@ public class ServerListTabViewModel : MainWindowTabViewModel private string? _searchString; - public override string Name => "Servers"; + public override string Name => _loc.GetString("tab-servers-title"); public string? SearchString { @@ -42,23 +44,21 @@ public string ListText switch (status) { case RefreshListStatus.Error: - return "There was an error fetching the master server lists."; + return _loc.GetString("tab-servers-list-status-error"); case RefreshListStatus.PartialError: - return "Failed to fetch some or all server lists. Ensure your hub configuration is correct."; + return _loc.GetString("tab-servers-list-status-partial-error"); case RefreshListStatus.UpdatingMaster: - return "Fetching master server list..."; - case RefreshListStatus.Updating: - return "Discovering servers..."; + return _loc.GetString("tab-servers-list-status-updating-master"); case RefreshListStatus.NotUpdated: return ""; case RefreshListStatus.Updated: default: if (SearchedServers.Count == 0 && _serverListCache.AllServers.Count != 0) // TODO: Actually make this show up or just remove it entirely - return "No servers match your search or filter settings."; + return _loc.GetString("tab-servers-list-status-none-filtered"); if (_serverListCache.AllServers.Count == 0) - return "There are no public servers. Ensure your hub configuration is correct."; + return _loc.GetString("tab-servers-list-status-none"); return ""; } @@ -71,7 +71,7 @@ public string ListText public ServerListTabViewModel(MainWindowViewModel windowVm) { - Filters = new ServerListFiltersViewModel(windowVm.Cfg); + Filters = new ServerListFiltersViewModel(windowVm.Cfg, _loc); Filters.FiltersUpdated += FiltersOnFiltersUpdated; _windowVm = windowVm; diff --git a/SS14.Launcher/ViewModels/MainWindowViewModel.cs b/SS14.Launcher/ViewModels/MainWindowViewModel.cs index fcdc6e21..4e256fd9 100644 --- a/SS14.Launcher/ViewModels/MainWindowViewModel.cs +++ b/SS14.Launcher/ViewModels/MainWindowViewModel.cs @@ -12,6 +12,7 @@ using Serilog; using Splat; using SS14.Launcher.Api; +using SS14.Launcher.Localization; using SS14.Launcher.Models; using SS14.Launcher.Models.Data; using SS14.Launcher.Models.Logins; @@ -28,6 +29,7 @@ public sealed class MainWindowViewModel : ViewModelBase, IErrorOverlayOwner private readonly LoginManager _loginMgr; private readonly HttpClient _http; private readonly LauncherInfoManager _infoManager; + private readonly LocalizationManager _loc; private int _selectedIndex; @@ -45,6 +47,7 @@ public MainWindowViewModel() _loginMgr = Locator.Current.GetRequiredService(); _http = Locator.Current.GetRequiredService(); _infoManager = Locator.Current.GetRequiredService(); + _loc = LocalizationManager.Instance; ServersTab = new ServerListTabViewModel(this); NewsTab = new NewsTabViewModel(); @@ -69,8 +72,6 @@ public MainWindowViewModel() { this.RaisePropertyChanged(nameof(Username)); this.RaisePropertyChanged(nameof(LoggedIn)); - this.RaisePropertyChanged(nameof(LoginText)); - this.RaisePropertyChanged(nameof(ManageAccountText)); }); _cfg.Logins.Connect() @@ -99,8 +100,6 @@ public MainWindowViewModel() public IReadOnlyList Tabs { get; } public bool LoggedIn => _loginMgr.ActiveAccount != null; - public string LoginText => LoggedIn ? $"'Logged in' as {Username}." : "Not logged in."; - public string ManageAccountText => LoggedIn ? "Change Account..." : "Log in..."; private string? Username => _loginMgr.ActiveAccount?.Username; public bool AccountDropDownVisible => _loginMgr.Logins.Count != 0; @@ -138,9 +137,9 @@ private void RunSelectedOnTab() public async void OnWindowInitialized() { - BusyTask = "Checking for launcher update..."; + BusyTask = _loc.GetString("main-window-busy-checking-update"); await CheckLauncherUpdate(); - BusyTask = "Refreshing login status..."; + BusyTask = _loc.GetString("main-window-busy-checking-login-status"); await CheckAccounts(); BusyTask = null; @@ -231,7 +230,7 @@ public void TrySwitchToAccount(LoggedInAccount account) private async void TrySelectUnsureAccount(LoggedInAccount account) { - BusyTask = "Checking account status"; + BusyTask = _loc.GetString("main-window-busy-checking-account-status"); try { await _loginMgr.UpdateSingleAccountStatus(account); @@ -243,10 +242,10 @@ private async void TrySelectUnsureAccount(LoggedInAccount account) catch (AuthApiException e) { Log.Warning(e, "AuthApiException while trying to refresh account {login}", account.LoginInfo); - OverlayViewModel = new AuthErrorsOverlayViewModel(this, "Error connecting to authentication server", + OverlayViewModel = new AuthErrorsOverlayViewModel(this, _loc.GetString("main-window-error-connecting-auth-server"), new[] { - e.InnerException?.Message ?? "Unknown error occured" + e.InnerException?.Message ?? _loc.GetString("main-window-error-unknown") }); } finally diff --git a/SS14.Launcher/Views/AccountDropDown.xaml b/SS14.Launcher/Views/AccountDropDown.xaml index b08fd708..f3666c91 100644 --- a/SS14.Launcher/Views/AccountDropDown.xaml +++ b/SS14.Launcher/Views/AccountDropDown.xaml @@ -4,6 +4,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:vm="clr-namespace:SS14.Launcher.ViewModels" xmlns:v="clr-namespace:SS14.Launcher.Views" + xmlns:loc="clr-namespace:SS14.Launcher.Localization" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="SS14.Launcher.Views.AccountDropDown"> @@ -13,11 +14,11 @@ - +