add more translations
This commit is contained in:
parent
e7eafbf450
commit
a5881d11ac
491
i18n/de.po
491
i18n/de.po
|
@ -134,32 +134,16 @@ msgid "User online"
|
|||
msgstr "Spieler anwesend"
|
||||
|
||||
#: src/components/OnlineBox.jsx:25
|
||||
msgid "Pixel gesetzt"
|
||||
msgstr "Pixel plaziert"
|
||||
msgid "Pixels placed"
|
||||
msgstr "Pixels gesetzt"
|
||||
|
||||
#: src/components/Converter.jsx:609 src/components/CoordinatesBox.jsx:26
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Kopiere in die Zwischenablage"
|
||||
|
||||
#: src/components/DownloadButton.jsx:37
|
||||
msgid "Make Screenshot"
|
||||
msgstr "Erstelle eine Bildschirmaufnahme"
|
||||
|
||||
#: src/components/LogInButton.jsx:20 src/components/UserAreaModal.jsx:160
|
||||
msgid "User Area"
|
||||
msgstr "Spielerbereich"
|
||||
|
||||
#: src/components/SettingsButton.jsx:20 src/components/SettingsModal.jsx:267
|
||||
msgid "Settings"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: src/components/HelpButton.jsx:20
|
||||
msgid "Help"
|
||||
msgstr "Hilfe"
|
||||
|
||||
#: src/components/Chat.jsx:143
|
||||
msgid "Channel settings"
|
||||
msgstr "Channel Einstellungen"
|
||||
msgstr "Kanal Einstellungen"
|
||||
|
||||
#: src/components/Chat.jsx:152
|
||||
msgid "maximize"
|
||||
|
@ -177,6 +161,22 @@ msgstr "Chatte hier"
|
|||
msgid "You must be logged in to chat"
|
||||
msgstr "Melde dich an um dich zu unterhalten"
|
||||
|
||||
#: src/components/DownloadButton.jsx:37
|
||||
msgid "Make Screenshot"
|
||||
msgstr "Erstelle eine Bildschirmaufnahme"
|
||||
|
||||
#: src/components/LogInButton.jsx:20 src/components/UserAreaModal.jsx:160
|
||||
msgid "User Area"
|
||||
msgstr "Spielerbereich"
|
||||
|
||||
#: src/components/SettingsButton.jsx:20 src/components/SettingsModal.jsx:267
|
||||
msgid "Settings"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: src/components/HelpButton.jsx:20
|
||||
msgid "Help"
|
||||
msgstr "Hilfe"
|
||||
|
||||
#: src/components/GlobeButton.jsx:31
|
||||
msgid "Globe View"
|
||||
msgstr "Globus Ansicht"
|
||||
|
@ -203,7 +203,7 @@ msgstr "Deaktiviere Spiel Ton"
|
|||
|
||||
#: src/components/SettingsModal.jsx:139
|
||||
msgid "All sound effects will be disabled."
|
||||
msgstr "alle Toneffekte werden ausgeschaltet"
|
||||
msgstr "Alle Toneffekte werden ausgeschaltet."
|
||||
|
||||
#: src/components/SettingsModal.jsx:145
|
||||
msgid "Enable chat notifications"
|
||||
|
@ -232,7 +232,7 @@ msgstr "Kompakte Palette"
|
|||
#: src/components/SettingsModal.jsx:160
|
||||
msgid "Display Palette in a compact form that takes less screen space."
|
||||
msgstr ""
|
||||
"Zeige die Palette in einer kleineren Form an, welche weniger Platz benötigt"
|
||||
"Zeige die Palette in einer kleineren Form an, welche weniger Platz benötigt."
|
||||
|
||||
#: src/components/SettingsModal.jsx:165
|
||||
msgid "Potato Mode"
|
||||
|
@ -248,7 +248,7 @@ msgstr "Helles Raster"
|
|||
|
||||
#: src/components/SettingsModal.jsx:172
|
||||
msgid "Show Grid in white instead of black."
|
||||
msgstr "Zeige das Raster in weiß anstatt schwarz"
|
||||
msgstr "Zeige das Raster in weiß anstatt schwarz."
|
||||
|
||||
#: src/components/SettingsModal.jsx:179
|
||||
msgid "Historical View"
|
||||
|
@ -256,7 +256,7 @@ msgstr "Historische Ansicht"
|
|||
|
||||
#: src/components/SettingsModal.jsx:180
|
||||
msgid "Check out past versions of the canvas."
|
||||
msgstr "Siehe vergangene Versionen der Leinwand"
|
||||
msgstr "Siehe vergangene Versionen der Leinwand."
|
||||
|
||||
#: src/components/SettingsModal.jsx:188
|
||||
msgid "Themes"
|
||||
|
@ -264,7 +264,7 @@ msgstr "Themen"
|
|||
|
||||
#: src/components/SettingsModal.jsx:189
|
||||
msgid "How pixelplanet should look like."
|
||||
msgstr "Wähle aus wie pixelplanet aussehen soll"
|
||||
msgstr "Wähle aus wie pixelplanet aussehen soll."
|
||||
|
||||
#: src/components/HelpModal.jsx:34 src/components/HelpModal.jsx:35
|
||||
msgid "Privacy Policy"
|
||||
|
@ -497,19 +497,19 @@ msgstr "Willkommen auf PixelPlanet.fun"
|
|||
|
||||
#: src/components/ChannelContextMenu.jsx:73
|
||||
msgid "Mute"
|
||||
msgstr ""
|
||||
msgstr "Stummschalten"
|
||||
|
||||
#: src/components/UserContextMenu.jsx:72
|
||||
msgid "Ping"
|
||||
msgstr ""
|
||||
msgstr "Erwähnen"
|
||||
|
||||
#: src/components/UserContextMenu.jsx:97
|
||||
msgid "DM"
|
||||
msgstr ""
|
||||
msgstr "DM"
|
||||
|
||||
#: src/components/UserContextMenu.jsx:107
|
||||
msgid "Block"
|
||||
msgstr ""
|
||||
msgstr "Blocke"
|
||||
|
||||
#: src/components/PalselButton.jsx:25
|
||||
msgid "Close Palette"
|
||||
|
@ -537,12 +537,12 @@ msgid "Login to access more features and stats."
|
|||
msgstr "Melde dich and um mehr Funktionen und Statistikan zu sehen."
|
||||
|
||||
#: src/components/UserAreaModal.jsx:35
|
||||
msgid "Login with Mail:"
|
||||
msgstr "Mit Mail anmelden:"
|
||||
msgid "Login with Name or Mail:"
|
||||
msgstr "Mit Name oder Mail anmelden:"
|
||||
|
||||
#: src/components/UserAreaModal.jsx:42
|
||||
msgid "I forgot my Password."
|
||||
msgstr "Ich habe mein Passwort vergessen"
|
||||
msgstr "Ich habe mein Passwort vergessen."
|
||||
|
||||
#: src/components/UserAreaModal.jsx:43
|
||||
msgid "or login with:"
|
||||
|
@ -582,7 +582,7 @@ msgstr "Lade..."
|
|||
|
||||
#: src/components/ForgotPasswordModal.jsx:16
|
||||
msgid "Enter your mail adress and we will send you a new password:"
|
||||
msgstr "Gib deine Mail Adresse an und wir senden dir ein neues Passwort."
|
||||
msgstr "Gib deine Mail Adresse an und wir senden dir ein neues Passwort:"
|
||||
|
||||
#: src/components/ForgotPasswordModal.jsx:37
|
||||
msgid "Restore my Password"
|
||||
|
@ -599,6 +599,11 @@ msgid ""
|
|||
"boring after a while and after weeks of no major change and if they really "
|
||||
"aren't worth being kept active, we decide to remove them."
|
||||
msgstr ""
|
||||
"Wir versuchen so wenig wie möglich Leinwände zu entfernen. Manche werden "
|
||||
"allerding aus Spaß gestarted oder von Spielern angefragt oder sind nur "
|
||||
"Memes. Diese Leinwände können nach einiger Zeit langweilig werden und nach "
|
||||
"Wochen ohne erwähnenswerte Aktivität und falls sie es wirklich nicht wert "
|
||||
"sind, behalten zu werden, entscheiden wir uns side zu entfernen."
|
||||
|
||||
#: src/components/ArchiveModal.jsx:22
|
||||
msgid ""
|
||||
|
@ -619,6 +624,10 @@ msgid ""
|
|||
"with a 5s coolodwn and 60s stacking. It got launched on May 11th and "
|
||||
"remained active for months till it got shut down on November 30th."
|
||||
msgstr ""
|
||||
"Diese Leinwand wurde zu Zeiten politscher Konlikte auf der Erd-Leinwand "
|
||||
"gestarted. Es war eine 1024x1024 Abbildung des politischen Kompass mit 5s "
|
||||
"Abklingzeit und 60s gesamter Wartezeit. Es wurde am 11. Mai 2020 gestartet "
|
||||
"und war für Monate aktiv bis es am 30. November geschlossen wurde."
|
||||
|
||||
#: src/components/ArchiveModal.jsx:32
|
||||
msgid ""
|
||||
|
@ -640,17 +649,27 @@ msgid ""
|
|||
"palettes, cooldown and requirements. Archive of closed canvases can be "
|
||||
"accessed here:"
|
||||
msgstr ""
|
||||
"Wähle die Leinwand aus welche du benutzen willst. Jede Leinwand ist "
|
||||
"einzigartig und hat unterschiedliche Parletten, Abklingzeiten und "
|
||||
"Vorraussetzungen. Archiv von vergangenen Leinwänden kann hier gesehen werden:"
|
||||
|
||||
#: src/components/CanvasSelectModal.jsx:37
|
||||
msgid "Archive"
|
||||
msgstr "Archiv"
|
||||
|
||||
#: src/components/ChangeMail.jsx:104 src/components/ChangeName.jsx:82
|
||||
#: src/components/ChangePassword.jsx:120 src/components/DeleteAccount.jsx:82
|
||||
#: src/components/LogInForm.jsx:97 src/components/NewPasswordForm.jsx:93
|
||||
#: src/components/SignUpForm.jsx:118
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: src/components/LogInForm.jsx:104
|
||||
msgid "Name or Email"
|
||||
msgstr "Name oder Email"
|
||||
|
||||
#: src/components/ChangeMail.jsx:109 src/components/DeleteAccount.jsx:88
|
||||
#: src/components/LogInForm.jsx:111 src/components/SignUpForm.jsx:139
|
||||
#: src/components/ChangeMail.jsx:112 src/components/DeleteAccount.jsx:89
|
||||
#: src/components/LogInForm.jsx:111 src/components/SignUpForm.jsx:140
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
|
@ -658,6 +677,20 @@ msgstr "Passwort"
|
|||
msgid "LogIn"
|
||||
msgstr "Einloggen"
|
||||
|
||||
#: src/components/Rankings.jsx:37
|
||||
msgid "Total"
|
||||
msgstr "Gesamt"
|
||||
|
||||
#: src/components/Rankings.jsx:45
|
||||
msgid "Daily"
|
||||
msgstr "Täglich"
|
||||
|
||||
#: src/components/Rankings.jsx:49
|
||||
msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC."
|
||||
msgstr ""
|
||||
"Die Rangliste wird alle 5min aktualisiert. Die tägliche Liste wird um "
|
||||
"Mitternacht UTC zurückgestellt."
|
||||
|
||||
#: src/components/UserArea.jsx:57
|
||||
msgid "Todays Placed Pixels"
|
||||
msgstr "Heutige Pixel"
|
||||
|
@ -703,23 +736,38 @@ msgstr "Lösche Konto"
|
|||
msgid "Social Settings"
|
||||
msgstr "Soziale Einstellungen"
|
||||
|
||||
#: src/components/Rankings.jsx:37
|
||||
msgid "Total"
|
||||
msgstr "Gesamt"
|
||||
#: src/components/SignUpForm.jsx:126
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: src/components/Rankings.jsx:45
|
||||
msgid "Daily"
|
||||
msgstr "Täglich"
|
||||
#: src/components/NewPasswordForm.jsx:100 src/components/SignUpForm.jsx:133
|
||||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
#: src/components/Rankings.jsx:49
|
||||
msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC."
|
||||
msgstr ""
|
||||
"Die Rangliste wird alle 5min aktualisiert. Die tägliche Liste wird um "
|
||||
"Mitternacht UTC zurückgestellt."
|
||||
#: src/components/SignUpForm.jsx:149
|
||||
msgid "Confirm Password"
|
||||
msgstr "Passwort bestätigen"
|
||||
|
||||
#: src/components/Admintools.jsx:306 src/components/Admintools.jsx:387
|
||||
#: src/components/Admintools.jsx:461 src/components/Admintools.jsx:505
|
||||
#: src/components/Admintools.jsx:589 src/components/NewPasswordForm.jsx:104
|
||||
#: src/components/SignUpForm.jsx:152
|
||||
msgid "Submit"
|
||||
msgstr "Absenden"
|
||||
|
||||
#: src/components/ChangeMail.jsx:125 src/components/ChangeName.jsx:94
|
||||
#: src/components/ChangePassword.jsx:152 src/components/DeleteAccount.jsx:95
|
||||
#: src/components/NewPasswordForm.jsx:106 src/components/SignUpForm.jsx:158
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#: src/components/NewPasswordForm.jsx:83
|
||||
msgid "Sent you a mail with instructions to reset your password."
|
||||
msgstr "Sendete eine E-Mail mit Instruktionen um das Passwort zurückzusetzen."
|
||||
|
||||
#: src/components/CanvasItem.jsx:46
|
||||
msgid "Cooldown"
|
||||
msgstr "Wartezeit"
|
||||
msgstr "Abklingzeit"
|
||||
|
||||
#: src/components/CanvasItem.jsx:52
|
||||
msgid "Stacking till"
|
||||
|
@ -746,103 +794,6 @@ msgstr "und ${ canvas.req } gesetzte Pixel"
|
|||
msgid "Dimensions"
|
||||
msgstr "Dimensionen"
|
||||
|
||||
#: src/components/Admintools.jsx:179
|
||||
msgid "Build image on canvas."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:182
|
||||
msgid "Build image and set it to protected."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:185
|
||||
msgid "Build image, but reset cooldown to unset-pixel cd."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:248
|
||||
msgid "Image Upload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:249
|
||||
msgid "Upload images to canvas"
|
||||
msgstr "Lade ein Bild zur Leinwand hoch"
|
||||
|
||||
#: src/components/Admintools.jsx:251
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:271
|
||||
msgid "Coordinates in X_Y format:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:306 src/components/Admintools.jsx:387
|
||||
#: src/components/Admintools.jsx:461 src/components/Admintools.jsx:505
|
||||
#: src/components/Admintools.jsx:589 src/components/SignUpForm.jsx:151
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:311
|
||||
msgid "Pixel Protection"
|
||||
msgstr "Pixel beschützen"
|
||||
|
||||
#: src/components/Admintools.jsx:313
|
||||
msgid ""
|
||||
"Set protection of areas (if you need finer grained control, "
|
||||
"use protect with image upload and alpha layers)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:392
|
||||
msgid "Rollback to Date"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:394
|
||||
msgid "Rollback an area of the canvas to a set date (00:00 UTC)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:468
|
||||
msgid "IP Actions"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:470
|
||||
msgid "Do stuff with IPs (one IP per line)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:510
|
||||
msgid "Manage Moderators"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:512
|
||||
msgid "Remove Moderator"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:544
|
||||
msgid "There are no mods"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:549
|
||||
msgid "Assign new Mod"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:552
|
||||
msgid "Enter UserName of new Mod"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/SignUpForm.jsx:125
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/SignUpForm.jsx:132
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/SignUpForm.jsx:148
|
||||
msgid "Confirm Password"
|
||||
msgstr "Passwort bestätigen"
|
||||
|
||||
#: src/components/ChangeMail.jsx:122 src/components/ChangePassword.jsx:151
|
||||
#: src/components/DeleteAccount.jsx:94 src/components/SignUpForm.jsx:157
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#: src/components/Converter.jsx:274
|
||||
msgid "Choose Canvas"
|
||||
msgstr "Wähle Leinwand"
|
||||
|
@ -913,169 +864,305 @@ msgstr "Zurücksetzen"
|
|||
msgid "Download Template"
|
||||
msgstr "Bild herunterladen"
|
||||
|
||||
#: src/utils/validation.js:15
|
||||
msgid "Email can't be empty."
|
||||
msgstr ""
|
||||
#: src/components/Admintools.jsx:179
|
||||
msgid "Build image on canvas."
|
||||
msgstr "Zeiche Bild auf Leinwand."
|
||||
|
||||
#: src/utils/validation.js:16
|
||||
msgid "Email should be at least 5 characters long."
|
||||
msgstr ""
|
||||
#: src/components/Admintools.jsx:182
|
||||
msgid "Build image and set it to protected."
|
||||
msgstr "Lade Bild und schütze es."
|
||||
|
||||
#: src/utils/validation.js:17
|
||||
msgid "Email can't be longer than 40 characters."
|
||||
#: src/components/Admintools.jsx:185
|
||||
msgid "Build image, but reset cooldown to unset-pixel cd."
|
||||
msgstr "Lade Bild und setze Abklingzeit wenn möglich zurück."
|
||||
|
||||
#: src/components/Admintools.jsx:248
|
||||
msgid "Image Upload"
|
||||
msgstr "Bild Hochladen"
|
||||
|
||||
#: src/components/Admintools.jsx:249
|
||||
msgid "Upload images to canvas"
|
||||
msgstr "Lade ein Bild zur Leinwand hoch"
|
||||
|
||||
#: src/components/Admintools.jsx:251
|
||||
msgid "File"
|
||||
msgstr "Datei"
|
||||
|
||||
#: src/components/Admintools.jsx:271
|
||||
msgid "Coordinates in X_Y format:"
|
||||
msgstr "Koordinaten in X_Y Format:"
|
||||
|
||||
#: src/components/Admintools.jsx:311
|
||||
msgid "Pixel Protection"
|
||||
msgstr "Pixel beschützen"
|
||||
|
||||
#: src/components/Admintools.jsx:313
|
||||
msgid ""
|
||||
"Set protection of areas (if you need finer grained control, "
|
||||
"use protect with image upload and alpha layers)"
|
||||
msgstr ""
|
||||
"Setze Gebiet auf geschützt (falls genauere Kontrolle erwünscht, lade Bild "
|
||||
"mit Transparenz mit \"protect\" hoch)"
|
||||
|
||||
#: src/components/Admintools.jsx:392
|
||||
msgid "Rollback to Date"
|
||||
msgstr "Spule zum Datum zurück"
|
||||
|
||||
#: src/components/Admintools.jsx:394
|
||||
msgid "Rollback an area of the canvas to a set date (00:00 UTC)"
|
||||
msgstr ""
|
||||
"Spule einen Beraich auf der Leinwand zum angegebenen Datum zurück (00:00 UTC)"
|
||||
|
||||
#: src/components/Admintools.jsx:468
|
||||
msgid "IP Actions"
|
||||
msgstr "IP Aktionen"
|
||||
|
||||
#: src/components/Admintools.jsx:470
|
||||
msgid "Do stuff with IPs (one IP per line)"
|
||||
msgstr "Mache etwas mit IPs (eine IP pro Zeile)"
|
||||
|
||||
#: src/components/Admintools.jsx:510
|
||||
msgid "Manage Moderators"
|
||||
msgstr "Verwalte Moderatoren"
|
||||
|
||||
#: src/components/Admintools.jsx:512
|
||||
msgid "Remove Moderator"
|
||||
msgstr "Entferne Moderator"
|
||||
|
||||
#: src/components/Admintools.jsx:544
|
||||
msgid "There are no mods"
|
||||
msgstr "Es gibt keine Moderatoren"
|
||||
|
||||
#: src/components/Admintools.jsx:549
|
||||
msgid "Assign new Mod"
|
||||
msgstr "Moderator zuweisen"
|
||||
|
||||
#: src/components/Admintools.jsx:552
|
||||
msgid "Enter UserName of new Mod"
|
||||
msgstr "Gebe Name des neuen Moderators ein"
|
||||
|
||||
#: src/components/Admintools.jsx:561
|
||||
msgid "User Name"
|
||||
msgstr "Spielerbereich"
|
||||
|
||||
#: src/utils/validation.js:18
|
||||
msgid "Email should at least contain a dot"
|
||||
msgstr ""
|
||||
msgid "Email can't be empty."
|
||||
msgstr "Email Feld kann nicht leer sein."
|
||||
|
||||
#: src/utils/validation.js:19
|
||||
msgid "Email should be at least 5 characters long."
|
||||
msgstr "Email sollte zumindest 5 Zeichen lang sein."
|
||||
|
||||
#: src/utils/validation.js:20
|
||||
msgid "Email can't be longer than 40 characters."
|
||||
msgstr "Email kann nicht länger als 40 Zeichen sein."
|
||||
|
||||
#: src/utils/validation.js:21
|
||||
msgid "Email should at least contain a dot"
|
||||
msgstr "Email sollte zumindest einen Punkt beinhalten"
|
||||
|
||||
#: src/utils/validation.js:23
|
||||
msgid "Email should contain a @"
|
||||
msgstr ""
|
||||
msgstr "Email sollte ein @ beinhalten"
|
||||
|
||||
#: src/utils/validation.js:27
|
||||
#: src/utils/validation.js:30
|
||||
msgid "Name can't be empty."
|
||||
msgstr ""
|
||||
msgstr "Email Feld kann nicht leer sein."
|
||||
|
||||
#: src/utils/validation.js:28
|
||||
#: src/utils/validation.js:31
|
||||
msgid "Name must be at least 4 characters long"
|
||||
msgstr ""
|
||||
msgstr "Name muss mindestens 4 Zeichen lang sein"
|
||||
|
||||
#: src/utils/validation.js:29
|
||||
#: src/utils/validation.js:32
|
||||
msgid "Name must be shorter than 26 characters"
|
||||
msgstr ""
|
||||
msgstr "Name muss kleiner als 26 Zeichen sein"
|
||||
|
||||
#: src/utils/validation.js:36
|
||||
#: src/utils/validation.js:39
|
||||
msgid "Name contains invalid character like @, /, \\ or #"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:51
|
||||
msgid "Password must be at least 6 characters long."
|
||||
msgstr "Passwort muss mindestens 6 Zeichen lang sein"
|
||||
msgstr "Ungültige Zeichen im Namen wie @,/.\\ oder #"
|
||||
|
||||
#: src/utils/validation.js:54
|
||||
msgid "Password must be shorter than 60 characters."
|
||||
msgstr ""
|
||||
msgid "No password given."
|
||||
msgstr "Kein Passwort eingegeben."
|
||||
|
||||
#: src/utils/validation.js:68
|
||||
msgid "Could not connect to server, please try again later :("
|
||||
msgstr ""
|
||||
#: src/utils/validation.js:57
|
||||
msgid "Password must be at least 6 characters long."
|
||||
msgstr "Passwort muss mindestens 6 Zeichen lang sein."
|
||||
|
||||
#: src/utils/validation.js:60
|
||||
msgid "Password must be shorter than 60 characters."
|
||||
msgstr "Passwort muss kleiner als 60 Zeichen sein."
|
||||
|
||||
#: src/utils/validation.js:74
|
||||
msgid "I think we experienced some error :("
|
||||
msgid "Could not connect to server, please try again later :("
|
||||
msgstr ""
|
||||
"Kann nich zum Server verbinden, bitte versuche es später noch einmal :("
|
||||
|
||||
#: src/components/DeleteAccount.jsx:92
|
||||
#: src/utils/validation.js:80
|
||||
msgid "I think we experienced some error :("
|
||||
msgstr "Ich glaube wir haben einen Fehler :("
|
||||
|
||||
#: src/components/DeleteAccount.jsx:93
|
||||
msgid "Yes, Delete My Account!"
|
||||
msgstr "Ja, löche mein Konto!"
|
||||
|
||||
#: src/components/SocialSettings.jsx:39
|
||||
msgid "Block all Private Messages"
|
||||
msgstr "Blockiere alle Privaten Nachrichten"
|
||||
|
||||
#: src/components/SocialSettings.jsx:57
|
||||
msgid "Unblock Users"
|
||||
msgstr "Entblocke Spieler"
|
||||
|
||||
#: src/components/SocialSettings.jsx:81
|
||||
msgid "You have no users blocked"
|
||||
msgstr "Du hast keinen Spieler geblockt"
|
||||
|
||||
#: src/components/ChangeMail.jsx:89
|
||||
msgid ""
|
||||
"Changed Mail successfully. We sent you a verification mail, "
|
||||
"please verify your new mail adress."
|
||||
msgstr ""
|
||||
"Erfolgreich änderte Mail Adresse. Wir haben dir eine neue Bestätigungsmail "
|
||||
"gesendet."
|
||||
|
||||
#: src/components/ChangeMail.jsx:116
|
||||
#: src/components/ChangeMail.jsx:119
|
||||
msgid "New Mail"
|
||||
msgstr "Neue Mail"
|
||||
|
||||
#: src/components/ChangeMail.jsx:120 src/components/ChangePassword.jsx:149
|
||||
#: src/components/ChangeMail.jsx:123 src/components/ChangeName.jsx:92
|
||||
#: src/components/ChangePassword.jsx:150
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
msgstr "Speichern"
|
||||
|
||||
#: src/components/ChangePassword.jsx:18
|
||||
msgid "Passwords do not match."
|
||||
msgstr ""
|
||||
msgstr "Passwörter stimmen nicht überein."
|
||||
|
||||
#: src/components/ChangePassword.jsx:103
|
||||
msgid "Changed Password successfully."
|
||||
msgstr "Passwort erfolgreich geändert"
|
||||
msgstr "Passwort erfolgreich geändert."
|
||||
|
||||
#: src/components/ChangePassword.jsx:128
|
||||
#: src/components/ChangePassword.jsx:129
|
||||
msgid "Old Password"
|
||||
msgstr "Altes Passwort"
|
||||
|
||||
#: src/components/ChangePassword.jsx:136
|
||||
#: src/components/ChangePassword.jsx:137
|
||||
msgid "New Password"
|
||||
msgstr "Neues Passwort"
|
||||
|
||||
#: src/components/ChangePassword.jsx:145
|
||||
#: src/components/ChangePassword.jsx:146
|
||||
msgid "Confirm New Password"
|
||||
msgstr "Neues Passwort bestätigen"
|
||||
|
||||
#: src/components/SocialSettings.jsx:39
|
||||
msgid "Block all Private Messages"
|
||||
msgstr ""
|
||||
#: src/components/ChangeName.jsx:88
|
||||
msgid "New Username"
|
||||
msgstr "Neuer Name"
|
||||
|
||||
#: src/components/SocialSettings.jsx:57
|
||||
msgid "Unblock Users"
|
||||
msgstr ""
|
||||
#: src/components/UserMessages.jsx:41
|
||||
msgid "A new verification mail is getting sent to you."
|
||||
msgstr "Eine neue Bestätigungsmail wurde gesendet."
|
||||
|
||||
#: src/components/SocialSettings.jsx:81
|
||||
msgid "You have no users blocked"
|
||||
#: src/components/UserMessages.jsx:75
|
||||
msgid "You successfully linked your mc account."
|
||||
msgstr "Minecraft Konto wurde erfolgreich verknüpft."
|
||||
|
||||
#: src/components/UserMessages.jsx:76
|
||||
msgid "You denied."
|
||||
msgstr "Abgelehnt."
|
||||
|
||||
#: src/components/UserMessages.jsx:94
|
||||
msgid ""
|
||||
"Please verify your mail address \n"
|
||||
"or your account could get deleted after a few days."
|
||||
msgstr ""
|
||||
"Bitte bestätige deine E-Mail Adresse oder dein Konto könnte nach einigen "
|
||||
"Tagen gelöscht werden."
|
||||
|
||||
#: src/components/UserMessages.jsx:111
|
||||
msgid "Click here to request a new verification mail."
|
||||
msgstr "Klicke hier um eine neue Bestätigungsmail zu beantragen."
|
||||
|
||||
#: src/components/UserMessages.jsx:120
|
||||
#, javascript-format
|
||||
msgid "You requested to link your mc account ${ minecraftname }."
|
||||
msgstr "Anfrage um das Minecraft Konto ${ minecraftname } zu verknüpfen."
|
||||
|
||||
#: src/components/UserMessages.jsx:140
|
||||
msgid "Accept"
|
||||
msgstr "Annehmen"
|
||||
|
||||
#: src/components/UserMessages.jsx:150
|
||||
msgid "Deny"
|
||||
msgstr "Ablehnen"
|
||||
|
||||
#: src/components/HelpModal.jsx:15 src/components/SettingsModal.jsx:125
|
||||
msgctxt "keybinds"
|
||||
msgid "G"
|
||||
msgstr ""
|
||||
msgstr "G"
|
||||
|
||||
#: src/components/HelpModal.jsx:16 src/components/SettingsModal.jsx:132
|
||||
msgctxt "keybinds"
|
||||
msgid "X"
|
||||
msgstr ""
|
||||
msgstr "X"
|
||||
|
||||
#: src/components/SettingsModal.jsx:140
|
||||
msgctxt "keybinds"
|
||||
msgid "M"
|
||||
msgstr ""
|
||||
msgstr "M"
|
||||
|
||||
#: src/components/HelpModal.jsx:17 src/components/SettingsModal.jsx:182
|
||||
msgctxt "keybinds"
|
||||
msgid "H"
|
||||
msgstr ""
|
||||
msgstr "H"
|
||||
|
||||
#: src/components/HelpModal.jsx:18
|
||||
msgctxt "keybinds"
|
||||
msgid "R"
|
||||
msgstr ""
|
||||
msgstr "R"
|
||||
|
||||
#: src/components/HelpModal.jsx:19
|
||||
msgctxt "keybinds"
|
||||
msgid "Q"
|
||||
msgstr ""
|
||||
msgstr "Q"
|
||||
|
||||
#: src/components/HelpModal.jsx:20
|
||||
msgctxt "keybinds"
|
||||
msgid "E"
|
||||
msgstr ""
|
||||
msgstr "E"
|
||||
|
||||
#: src/components/HelpModal.jsx:21
|
||||
msgctxt "keybinds"
|
||||
msgid "W"
|
||||
msgstr ""
|
||||
msgstr "W"
|
||||
|
||||
#: src/components/HelpModal.jsx:22
|
||||
msgctxt "keybinds"
|
||||
msgid "A"
|
||||
msgstr ""
|
||||
msgstr "A"
|
||||
|
||||
#: src/components/HelpModal.jsx:23
|
||||
msgctxt "keybinds"
|
||||
msgid "S"
|
||||
msgstr ""
|
||||
msgstr "S"
|
||||
|
||||
#: src/components/HelpModal.jsx:24
|
||||
msgctxt "keybinds"
|
||||
msgid "D"
|
||||
msgstr ""
|
||||
msgstr "D"
|
||||
|
||||
#: src/components/HelpModal.jsx:31
|
||||
msgctxt "keybinds"
|
||||
msgid "Shift"
|
||||
msgstr ""
|
||||
msgstr "Shift"
|
||||
|
||||
#: src/components/HelpModal.jsx:32
|
||||
msgctxt "keybinds"
|
||||
msgid "C"
|
||||
msgstr ""
|
||||
msgstr "C"
|
||||
|
||||
#~ msgid "Error: ${ error }"
|
||||
#~ msgstr "Fehler: ${ error }"
|
||||
|
||||
#~ msgid "Pixel gesetzt"
|
||||
#~ msgstr "Pixel plaziert"
|
||||
|
|
256
i18n/ssr-de.po
256
i18n/ssr-de.po
|
@ -12,9 +12,17 @@ msgstr ""
|
|||
"Plural-Forms: nplurals = 2; plural = (n != 1);\n"
|
||||
"X-Generator: Poedit 2.3\n"
|
||||
|
||||
#: src/ssr-components/Main.jsx:53
|
||||
msgid "PixelPlanet.fun"
|
||||
msgstr "PixelPlanet.Fun"
|
||||
|
||||
#: src/ssr-components/Main.jsx:55
|
||||
msgid "Place color pixels on an map styled canvas with other players online"
|
||||
msgstr "Zeichne mit farbigen Pixel auf einer Weltkarte mit anderen Spielern"
|
||||
|
||||
#: src/ssr-components/Globe.jsx:44
|
||||
msgid "Double click on globe to go back."
|
||||
msgstr "Doppelklick um zurück zu gehen"
|
||||
msgstr "Doppelklick um zurück zu gehen."
|
||||
|
||||
#: src/ssr-components/Globe.jsx:45
|
||||
msgid "Loading..."
|
||||
|
@ -28,35 +36,37 @@ msgstr "PixelPlanet.Fun 3D Globus"
|
|||
msgid "A 3D globe of our whole map"
|
||||
msgstr "Ein interaktvier 3D Globus unserer gesamten Karte"
|
||||
|
||||
#: src/routes/reset_password.js:63
|
||||
#: src/routes/reset_password.js:65
|
||||
msgid "You sent an empty password or invalid data :("
|
||||
msgstr ""
|
||||
msgstr "Du hast ein ungültiges Passwort oder Daten gesendet :("
|
||||
|
||||
#: src/routes/reset_password.js:74
|
||||
#: src/routes/reset_password.js:77
|
||||
msgid "This password-reset link isn't valid anymore :("
|
||||
msgstr ""
|
||||
msgstr "Dieser Passwort-Wiederherstellungslink ist nichtmehr gültig :("
|
||||
|
||||
#: src/routes/reset_password.js:84
|
||||
#: src/routes/reset_password.js:88
|
||||
msgid "Your passwords do not match :("
|
||||
msgstr ""
|
||||
msgstr "Passwörter stimmen nicht überein :("
|
||||
|
||||
#: src/routes/reset_password.js:98
|
||||
#: src/routes/reset_password.js:103
|
||||
msgid "User doesn't exist in our database :("
|
||||
msgstr ""
|
||||
msgstr "Spieler existiert nicht in unserer Datenbank :("
|
||||
|
||||
#: src/routes/reset_password.js:109
|
||||
#: src/routes/reset_password.js:115
|
||||
msgid "Passowrd successfully changed."
|
||||
msgstr ""
|
||||
msgstr "Passwort erfolgreich geändert."
|
||||
|
||||
#: src/routes/reset_password.js:126
|
||||
#: src/routes/reset_password.js:134
|
||||
msgid "Invalid url :( Please check your mail again."
|
||||
msgstr ""
|
||||
msgstr "Ungültige Adresse :( Bitte kontrolliere die Mail nochmal."
|
||||
|
||||
#: src/routes/reset_password.js:138
|
||||
#: src/routes/reset_password.js:147
|
||||
msgid ""
|
||||
"This passwort reset link is wrong or already expired, please request a new "
|
||||
"one (Note: you can use those links just once)"
|
||||
msgstr ""
|
||||
"Dieser Passwort Wiederherstellungslink ist falsch oder abgelaufen, bitte "
|
||||
"beantrage einen neuen (Hinweis: Du kannst diese Links nur einmal verwenden)"
|
||||
|
||||
#: src/core/mail.js:65
|
||||
#, javascript-format
|
||||
|
@ -64,66 +74,79 @@ msgid ""
|
|||
"We already sent you a verification mail, you can request another one in "
|
||||
"${ minLeft } minutes."
|
||||
msgstr ""
|
||||
"Wir sendeten dir bereits eine Wiederherstellung Mail, du kannst die nächste "
|
||||
"in ${ minLeft } minuten anfordern."
|
||||
|
||||
#: src/core/mail.js:75
|
||||
msgid "Welcome ${ name } to PixelPlanet, plese verify your mail"
|
||||
msgstr ""
|
||||
"Willkommen ${ name } auf PixelPlnet, bitte verifiziere deine Mail Adresse"
|
||||
|
||||
#: src/core/mail.js:77
|
||||
#, javascript-format
|
||||
msgid "Hello ${ name }"
|
||||
msgstr ""
|
||||
msgstr "Hallo ${ name }"
|
||||
|
||||
#: src/core/mail.js:78
|
||||
msgid ""
|
||||
"welcome to our little community of pixelplacers, to use your account, you "
|
||||
"have to verify your mail. You can do that here: "
|
||||
msgstr ""
|
||||
"wilkommen in unserer kleinen Gemeinschaft aus Pixel schubser, um dein Konto "
|
||||
"zu verwenden musst du deine E-Mail Adresse verifizieren. Du kannst das hier "
|
||||
"erledigen: "
|
||||
|
||||
#: src/core/mail.js:78
|
||||
msgid "Click to Verify"
|
||||
msgstr ""
|
||||
msgstr "Klicke zum verifizieren"
|
||||
|
||||
#: src/core/mail.js:78 src/core/mail.js:128
|
||||
msgid "Or by copying following url:"
|
||||
msgstr ""
|
||||
msgstr "Oder kopiere den folgenden Link:"
|
||||
|
||||
#: src/core/mail.js:79
|
||||
msgid ""
|
||||
"Have fun and don't hesitate to contact us if you encouter any problems :)"
|
||||
msgstr ""
|
||||
"Viel Spaß und scheue dich nicht uns zu kontaktieren wenn du Probleme hast :)"
|
||||
|
||||
#: src/core/mail.js:80 src/core/mail.js:130
|
||||
msgid "Thanks"
|
||||
msgstr ""
|
||||
msgstr "Danke"
|
||||
|
||||
#: src/core/mail.js:98
|
||||
msgid ""
|
||||
"We already sent you a mail with instructions. Please wait before requesting "
|
||||
"another mail."
|
||||
msgstr ""
|
||||
"Wir sendeten dir bereits eine E-Mail mit Instruktionen. Bitte warte bevor du "
|
||||
"eine neue beantragts."
|
||||
|
||||
#: src/core/mail.js:106
|
||||
msgid "Couldn't find this mail in our database"
|
||||
msgstr ""
|
||||
msgstr "Konnten diese E-Mail nicht in unserer Datenbank finden"
|
||||
|
||||
#: src/core/mail.js:125
|
||||
msgid "You forgot your password for PixelPlanet? Get a new one here"
|
||||
msgstr ""
|
||||
"Du hast dein Passwort für PixelPlanet vergessen? Bekomme ein neues hier"
|
||||
|
||||
#: src/core/mail.js:127
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
msgstr "Hallo"
|
||||
|
||||
#: src/core/mail.js:128
|
||||
msgid ""
|
||||
"You requested to get a new password. You can change your password within the "
|
||||
"next 30min here: "
|
||||
msgstr ""
|
||||
"Du hast ein neues Passwort beantragt. Du kannst es nun während der nächsten "
|
||||
"30min hier ändern:"
|
||||
|
||||
#: src/core/mail.js:128
|
||||
#: src/core/mail.js:128 src/ssr-components/PasswordReset.jsx:19
|
||||
#: src/ssr-components/PasswordReset.jsx:28
|
||||
msgid "Reset Password"
|
||||
msgstr ""
|
||||
msgstr "Passwort zurücksetzen"
|
||||
|
||||
#: src/core/mail.js:129
|
||||
#, javascript-format
|
||||
|
@ -131,107 +154,216 @@ msgid ""
|
|||
"If you did not request this mail, please just ignore it (the ip that "
|
||||
"requested this mail was ${ ip })."
|
||||
msgstr ""
|
||||
"Falls du diese Mail nicht beantragt hast, bitte ignoriere sie (die IP welche "
|
||||
"diese Nachricht beantragt hat war ${ ip })."
|
||||
|
||||
#: src/utils/validation.js:15
|
||||
msgid "Email can't be empty."
|
||||
msgstr ""
|
||||
#: src/ssr-components/PasswordReset.jsx:21
|
||||
#: src/ssr-components/RedirectionPage.jsx:15
|
||||
msgid "Click here"
|
||||
msgstr "Klicke hier"
|
||||
|
||||
#: src/utils/validation.js:16
|
||||
msgid "Email should be at least 5 characters long."
|
||||
msgstr ""
|
||||
#: src/ssr-components/PasswordReset.jsx:22
|
||||
msgid "to go back to pixelplanet"
|
||||
msgstr "um zu pixelplanet zurückzukehren"
|
||||
|
||||
#: src/utils/validation.js:17
|
||||
msgid "Email can't be longer than 40 characters."
|
||||
msgstr ""
|
||||
#: src/ssr-components/PasswordReset.jsx:29
|
||||
#, javascript-format
|
||||
msgid "Hello ${ name }, you can set your new password here:"
|
||||
msgstr "Hallo ${ name }, du kannst dein neues Passwort hier setzen:"
|
||||
|
||||
#: src/ssr-components/PasswordReset.jsx:33
|
||||
msgid "New Password"
|
||||
msgstr "Neues Passwort"
|
||||
|
||||
#: src/ssr-components/PasswordReset.jsx:41
|
||||
msgid "Confirm New Password"
|
||||
msgstr "Bestätige neues Passwort"
|
||||
|
||||
#: src/ssr-components/PasswordReset.jsx:47
|
||||
msgid "Submit"
|
||||
msgstr "Absenden"
|
||||
|
||||
#: src/ssr-components/PasswordReset.jsx:52
|
||||
msgid "PixelPlanet.fun Password Reset"
|
||||
msgstr "PixelPlanet.Fun Passwort Wiederherstellung"
|
||||
|
||||
#: src/ssr-components/PasswordReset.jsx:53
|
||||
msgid "Reset your password here"
|
||||
msgstr "Setze hier dein Passwort zurück"
|
||||
|
||||
#: src/utils/validation.js:18
|
||||
msgid "Email should at least contain a dot"
|
||||
msgstr ""
|
||||
msgid "Email can't be empty."
|
||||
msgstr "E-Mail Feld kann nicht leer sein."
|
||||
|
||||
#: src/utils/validation.js:19
|
||||
msgid "Email should be at least 5 characters long."
|
||||
msgstr "E-Mail sollte mindestens 5 Zeichen lang sein."
|
||||
|
||||
#: src/utils/validation.js:20
|
||||
msgid "Email can't be longer than 40 characters."
|
||||
msgstr "E-Mail kann nicht länger als 40 Zeichen sein."
|
||||
|
||||
#: src/utils/validation.js:21
|
||||
msgid "Email should at least contain a dot"
|
||||
msgstr "E-Mail sollte zumindest einen Punkt beinhalten"
|
||||
|
||||
#: src/utils/validation.js:23
|
||||
msgid "Email should contain a @"
|
||||
msgstr ""
|
||||
msgstr "E-Mail sollte zumindest ein @ beinhalten"
|
||||
|
||||
#: src/utils/validation.js:27
|
||||
#: src/utils/validation.js:30
|
||||
msgid "Name can't be empty."
|
||||
msgstr ""
|
||||
msgstr "Name kann nicht leer sein."
|
||||
|
||||
#: src/utils/validation.js:28
|
||||
#: src/utils/validation.js:31
|
||||
msgid "Name must be at least 4 characters long"
|
||||
msgstr ""
|
||||
msgstr "Name muss mindestens 4 Zeichen lang sein"
|
||||
|
||||
#: src/utils/validation.js:29
|
||||
#: src/utils/validation.js:32
|
||||
msgid "Name must be shorter than 26 characters"
|
||||
msgstr ""
|
||||
msgstr "Name muss kürzer als 26 Zeichen sein"
|
||||
|
||||
#: src/utils/validation.js:36
|
||||
#: src/utils/validation.js:39
|
||||
msgid "Name contains invalid character like @, /, \\ or #"
|
||||
msgstr ""
|
||||
msgstr "Name beinhalted ungültige Zeichen wie @,/.\\ oder #"
|
||||
|
||||
#: src/utils/validation.js:51
|
||||
#: src/utils/validation.js:54
|
||||
msgid "No password given."
|
||||
msgstr "Kein Passwort angegeben."
|
||||
|
||||
#: src/utils/validation.js:57
|
||||
msgid "Password must be at least 6 characters long."
|
||||
msgstr "Passwort muss mindestens 6 Zeichen lang sein."
|
||||
|
||||
#: src/utils/validation.js:54
|
||||
#: src/utils/validation.js:60
|
||||
msgid "Password must be shorter than 60 characters."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:68
|
||||
msgid "Could not connect to server, please try again later :("
|
||||
msgstr ""
|
||||
msgstr "Passwort muss kürzer als 60 Zeichen sein"
|
||||
|
||||
#: src/utils/validation.js:74
|
||||
msgid "Could not connect to server, please try again later :("
|
||||
msgstr "Konnte nicht zum Server verbinden, bitte versuche es später erneut :("
|
||||
|
||||
#: src/utils/validation.js:80
|
||||
msgid "I think we experienced some error :("
|
||||
msgstr ""
|
||||
msgstr "Ich glaube wir haben ein Problem :("
|
||||
|
||||
#: src/routes/api/auth/change_mail.js:41
|
||||
#: src/routes/api/auth/change_passwd.js:37
|
||||
#: src/routes/api/auth/delete_account.js:38
|
||||
msgid "You are not authenticated."
|
||||
msgstr ""
|
||||
msgstr "Du bist nicht auhtentifiziert."
|
||||
|
||||
#: src/routes/api/auth/change_mail.js:50
|
||||
#: src/routes/api/auth/change_passwd.js:46
|
||||
#: src/routes/api/auth/delete_account.js:48
|
||||
msgid "Incorrect password!"
|
||||
msgstr "Falsches Passwort!"
|
||||
|
||||
#: src/routes/api/auth/logout.js:13
|
||||
msgid "You are not even logged in."
|
||||
msgstr "Du bist nichteinmal angemeldet."
|
||||
|
||||
#: src/routes/api/auth/verify.js:25 src/routes/api/auth/verify.js:32
|
||||
msgid "Mail verification"
|
||||
msgstr "E-Mail verifizieren"
|
||||
|
||||
#: src/routes/api/auth/verify.js:26
|
||||
msgid "You are now verified :)"
|
||||
msgstr "Du bist nun verifiziert :)"
|
||||
|
||||
#: src/routes/api/auth/verify.js:32
|
||||
msgid ""
|
||||
"Your mail verification code is invalid or already expired :(, please request "
|
||||
"a new one."
|
||||
msgstr ""
|
||||
"Dein E-Mail verifikations Code ist ungültig oder bereits abgelaufen :(, "
|
||||
"bitte fordere einen neuen an."
|
||||
|
||||
#: src/routes/api/auth/register.js:31
|
||||
msgid "E-Mail already in use."
|
||||
msgstr "E-Mail wird bereits verwendet."
|
||||
|
||||
#: src/routes/api/auth/register.js:33
|
||||
msgid "Username already in use."
|
||||
msgstr "Name wird bereits verwendet."
|
||||
|
||||
#: src/routes/api/auth/register.js:61
|
||||
msgid "Failed to create new user :("
|
||||
msgstr ""
|
||||
msgstr "Konnte keinen neuen Benutzer erstellen :("
|
||||
|
||||
#: src/routes/api/auth/register.js:77
|
||||
msgid "Failed to establish session after register :("
|
||||
msgstr ""
|
||||
msgstr "Konnte keine Sitzung nach registrierung starten :("
|
||||
|
||||
#: src/ssr-components/RedirectionPage.jsx:20
|
||||
msgid "You will be automatically redirected after 15s"
|
||||
msgstr "Du wirst automatisch weitergeleitet nach 15s"
|
||||
|
||||
#: src/ssr-components/RedirectionPage.jsx:21
|
||||
#, javascript-format
|
||||
msgid "Or ${ clickHere } to go back to pixelplanet"
|
||||
msgstr "oder ${ clickHere } um zu pixelplanet zurückzukehren"
|
||||
|
||||
#: src/ssr-components/RedirectionPage.jsx:25
|
||||
msgid "PixelPlanet.fun Accounts"
|
||||
msgstr "PixelPlanet.Fun Konten"
|
||||
|
||||
#: src/canvasesDesc.js:19
|
||||
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
|
||||
msgstr ""
|
||||
"Unsere Hauptleinwand, eine große Weltkarte. Zeichnen ist überall möglich."
|
||||
msgid "Earth"
|
||||
msgstr "Erde"
|
||||
|
||||
#: src/canvasesDesc.js:20
|
||||
msgid "Moon"
|
||||
msgstr "Mond"
|
||||
|
||||
#: src/canvasesDesc.js:21
|
||||
msgid "3D Canvas"
|
||||
msgstr "3D Leinwand"
|
||||
|
||||
#: src/canvasesDesc.js:22
|
||||
msgid "Coronavirus"
|
||||
msgstr "Coronavirus"
|
||||
|
||||
#: src/canvasesDesc.js:23
|
||||
msgid "PixelZone"
|
||||
msgstr "PixelZone"
|
||||
|
||||
#: src/canvasesDesc.js:24
|
||||
msgid "PixelCanvas"
|
||||
msgstr "PixelCanvas"
|
||||
|
||||
#: src/canvasesDesc.js:25
|
||||
msgid "1bit"
|
||||
msgstr "1bit"
|
||||
|
||||
#: src/canvasesDesc.js:28
|
||||
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
|
||||
msgstr ""
|
||||
"Unsere Hauptleinwand, eine große Weltkarte. Zeichnen ist überall möglich"
|
||||
|
||||
#: src/canvasesDesc.js:29
|
||||
msgid ""
|
||||
"Moon canvas. Safe space for art. No flags or large text (unless part of art)"
|
||||
msgstr ""
|
||||
"Mond Leinwand. Kunst erwünscht. Keine Flaggen oder großer Text außer als "
|
||||
"Teil von Kunst."
|
||||
|
||||
#: src/canvasesDesc.js:21
|
||||
#: src/canvasesDesc.js:30
|
||||
msgid "Place Voxels on a 3D canvas with others"
|
||||
msgstr "Zeichne mit Voxeln in einer 3D Umgebung."
|
||||
msgstr "Zeichne mit Voxeln in einer 3D Umgebung"
|
||||
|
||||
#: src/canvasesDesc.js:22
|
||||
#: src/canvasesDesc.js:31
|
||||
msgid "Special canvas to spread awareness of SARS-CoV2"
|
||||
msgstr "Kleine Leinwand im SARS-CoV2 Thema"
|
||||
|
||||
#: src/canvasesDesc.js:23
|
||||
#: src/canvasesDesc.js:32
|
||||
msgid "Mirror of PixelZone"
|
||||
msgstr "Kopie von PixelZone"
|
||||
|
||||
#: src/canvasesDesc.js:24
|
||||
#: src/canvasesDesc.js:33
|
||||
msgid "Mirror of PixelCanvas"
|
||||
msgstr "Kopie von PixelCanvas"
|
||||
|
||||
#: src/canvasesDesc.js:25
|
||||
#: src/canvasesDesc.js:34
|
||||
msgid "Black and White canvas"
|
||||
msgstr "Schwarz/Weiß Leinwand"
|
||||
|
|
|
@ -3,6 +3,14 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
|
||||
#: src/ssr-components/Main.jsx:53
|
||||
msgid "PixelPlanet.fun"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr-components/Main.jsx:55
|
||||
msgid "Place color pixels on an map styled canvas with other players online"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr-components/Globe.jsx:44
|
||||
msgid "Double click on globe to go back."
|
||||
msgstr ""
|
||||
|
@ -19,31 +27,31 @@ msgstr ""
|
|||
msgid "A 3D globe of our whole map"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/reset_password.js:63
|
||||
#: src/routes/reset_password.js:65
|
||||
msgid "You sent an empty password or invalid data :("
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/reset_password.js:74
|
||||
#: src/routes/reset_password.js:77
|
||||
msgid "This password-reset link isn't valid anymore :("
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/reset_password.js:84
|
||||
#: src/routes/reset_password.js:88
|
||||
msgid "Your passwords do not match :("
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/reset_password.js:98
|
||||
#: src/routes/reset_password.js:103
|
||||
msgid "User doesn't exist in our database :("
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/reset_password.js:109
|
||||
#: src/routes/reset_password.js:115
|
||||
msgid "Passowrd successfully changed."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/reset_password.js:126
|
||||
#: src/routes/reset_password.js:134
|
||||
msgid "Invalid url :( Please check your mail again."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/reset_password.js:138
|
||||
#: src/routes/reset_password.js:147
|
||||
msgid ""
|
||||
"This passwort reset link is wrong or already expired, please request a new "
|
||||
"one (Note: you can use those links just once)"
|
||||
|
@ -114,6 +122,8 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: src/core/mail.js:128
|
||||
#: src/ssr-components/PasswordReset.jsx:19
|
||||
#: src/ssr-components/PasswordReset.jsx:28
|
||||
msgid "Reset Password"
|
||||
msgstr ""
|
||||
|
||||
|
@ -124,55 +134,93 @@ msgid ""
|
|||
"requested this mail was ${ ip })."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:15
|
||||
msgid "Email can't be empty."
|
||||
#: src/ssr-components/PasswordReset.jsx:21
|
||||
#: src/ssr-components/RedirectionPage.jsx:15
|
||||
msgid "Click here"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:16
|
||||
msgid "Email should be at least 5 characters long."
|
||||
#: src/ssr-components/PasswordReset.jsx:22
|
||||
msgid "to go back to pixelplanet"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:17
|
||||
msgid "Email can't be longer than 40 characters."
|
||||
#: src/ssr-components/PasswordReset.jsx:29
|
||||
#, javascript-format
|
||||
msgid "Hello ${ name }, you can set your new password here:"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr-components/PasswordReset.jsx:33
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr-components/PasswordReset.jsx:41
|
||||
msgid "Confirm New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr-components/PasswordReset.jsx:47
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr-components/PasswordReset.jsx:52
|
||||
msgid "PixelPlanet.fun Password Reset"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr-components/PasswordReset.jsx:53
|
||||
msgid "Reset your password here"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:18
|
||||
msgid "Email should at least contain a dot"
|
||||
msgid "Email can't be empty."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:19
|
||||
msgid "Email should be at least 5 characters long."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:20
|
||||
msgid "Email can't be longer than 40 characters."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:21
|
||||
msgid "Email should at least contain a dot"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:23
|
||||
msgid "Email should contain a @"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:27
|
||||
#: src/utils/validation.js:30
|
||||
msgid "Name can't be empty."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:28
|
||||
#: src/utils/validation.js:31
|
||||
msgid "Name must be at least 4 characters long"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:29
|
||||
#: src/utils/validation.js:32
|
||||
msgid "Name must be shorter than 26 characters"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:36
|
||||
#: src/utils/validation.js:39
|
||||
msgid "Name contains invalid character like @, /, \\ or #"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:51
|
||||
#: src/utils/validation.js:54
|
||||
msgid "No password given."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:57
|
||||
msgid "Password must be at least 6 characters long."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:54
|
||||
#: src/utils/validation.js:60
|
||||
msgid "Password must be shorter than 60 characters."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:68
|
||||
#: src/utils/validation.js:74
|
||||
msgid "Could not connect to server, please try again later :("
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:74
|
||||
#: src/utils/validation.js:80
|
||||
msgid "I think we experienced some error :("
|
||||
msgstr ""
|
||||
|
||||
|
@ -188,6 +236,33 @@ msgstr ""
|
|||
msgid "Incorrect password!"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/logout.js:13
|
||||
msgid "You are not even logged in."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/verify.js:25
|
||||
#: src/routes/api/auth/verify.js:32
|
||||
msgid "Mail verification"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/verify.js:26
|
||||
msgid "You are now verified :)"
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/verify.js:32
|
||||
msgid ""
|
||||
"Your mail verification code is invalid or already expired :(, please "
|
||||
"request a new one."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/register.js:31
|
||||
msgid "E-Mail already in use."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/register.js:33
|
||||
msgid "Username already in use."
|
||||
msgstr ""
|
||||
|
||||
#: src/routes/api/auth/register.js:61
|
||||
msgid "Failed to create new user :("
|
||||
msgstr ""
|
||||
|
@ -196,30 +271,71 @@ msgstr ""
|
|||
msgid "Failed to establish session after register :("
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr-components/RedirectionPage.jsx:20
|
||||
msgid "You will be automatically redirected after 15s"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr-components/RedirectionPage.jsx:21
|
||||
#, javascript-format
|
||||
msgid "Or ${ clickHere } to go back to pixelplanet"
|
||||
msgstr ""
|
||||
|
||||
#: src/ssr-components/RedirectionPage.jsx:25
|
||||
msgid "PixelPlanet.fun Accounts"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:19
|
||||
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
|
||||
msgid "Earth"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:20
|
||||
msgid "Moon canvas. Safe space for art. No flags or large text (unless part of art)"
|
||||
msgid "Moon"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:21
|
||||
msgid "Place Voxels on a 3D canvas with others"
|
||||
msgid "3D Canvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:22
|
||||
msgid "Special canvas to spread awareness of SARS-CoV2"
|
||||
msgid "Coronavirus"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:23
|
||||
msgid "Mirror of PixelZone"
|
||||
msgid "PixelZone"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:24
|
||||
msgid "Mirror of PixelCanvas"
|
||||
msgid "PixelCanvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:25
|
||||
msgid "1bit"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:28
|
||||
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:29
|
||||
msgid "Moon canvas. Safe space for art. No flags or large text (unless part of art)"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:30
|
||||
msgid "Place Voxels on a 3D canvas with others"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:31
|
||||
msgid "Special canvas to spread awareness of SARS-CoV2"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:32
|
||||
msgid "Mirror of PixelZone"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:33
|
||||
msgid "Mirror of PixelCanvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/canvasesDesc.js:34
|
||||
msgid "Black and White canvas"
|
||||
msgstr ""
|
|
@ -128,7 +128,7 @@ msgid "User online"
|
|||
msgstr ""
|
||||
|
||||
#: src/components/OnlineBox.jsx:25
|
||||
msgid "Pixel gesetzt"
|
||||
msgid "Pixels placed"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Converter.jsx:609
|
||||
|
@ -136,24 +136,6 @@ msgstr ""
|
|||
msgid "Copy to Clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/DownloadButton.jsx:37
|
||||
msgid "Make Screenshot"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/LogInButton.jsx:20
|
||||
#: src/components/UserAreaModal.jsx:160
|
||||
msgid "User Area"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/SettingsButton.jsx:20
|
||||
#: src/components/SettingsModal.jsx:267
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/HelpButton.jsx:20
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Chat.jsx:143
|
||||
msgid "Channel settings"
|
||||
msgstr ""
|
||||
|
@ -174,6 +156,24 @@ msgstr ""
|
|||
msgid "You must be logged in to chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/DownloadButton.jsx:37
|
||||
msgid "Make Screenshot"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/LogInButton.jsx:20
|
||||
#: src/components/UserAreaModal.jsx:160
|
||||
msgid "User Area"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/SettingsButton.jsx:20
|
||||
#: src/components/SettingsModal.jsx:267
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/HelpButton.jsx:20
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/GlobeButton.jsx:31
|
||||
msgid "Globe View"
|
||||
msgstr ""
|
||||
|
@ -497,7 +497,7 @@ msgid "Login to access more features and stats."
|
|||
msgstr ""
|
||||
|
||||
#: src/components/UserAreaModal.jsx:35
|
||||
msgid "Login with Mail:"
|
||||
msgid "Login with Name or Mail:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserAreaModal.jsx:42
|
||||
|
@ -600,14 +600,24 @@ msgstr ""
|
|||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:104
|
||||
#: src/components/ChangeName.jsx:82
|
||||
#: src/components/ChangePassword.jsx:120
|
||||
#: src/components/DeleteAccount.jsx:82
|
||||
#: src/components/LogInForm.jsx:97
|
||||
#: src/components/NewPasswordForm.jsx:93
|
||||
#: src/components/SignUpForm.jsx:118
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/LogInForm.jsx:104
|
||||
msgid "Name or Email"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:109
|
||||
#: src/components/DeleteAccount.jsx:88
|
||||
#: src/components/ChangeMail.jsx:112
|
||||
#: src/components/DeleteAccount.jsx:89
|
||||
#: src/components/LogInForm.jsx:111
|
||||
#: src/components/SignUpForm.jsx:139
|
||||
#: src/components/SignUpForm.jsx:140
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
|
@ -615,6 +625,18 @@ msgstr ""
|
|||
msgid "LogIn"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Rankings.jsx:37
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Rankings.jsx:45
|
||||
msgid "Daily"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Rankings.jsx:49
|
||||
msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserArea.jsx:57
|
||||
msgid "Todays Placed Pixels"
|
||||
msgstr ""
|
||||
|
@ -660,16 +682,40 @@ msgstr ""
|
|||
msgid "Social Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Rankings.jsx:37
|
||||
msgid "Total"
|
||||
#: src/components/SignUpForm.jsx:126
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Rankings.jsx:45
|
||||
msgid "Daily"
|
||||
#: src/components/NewPasswordForm.jsx:100
|
||||
#: src/components/SignUpForm.jsx:133
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Rankings.jsx:49
|
||||
msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC."
|
||||
#: src/components/SignUpForm.jsx:149
|
||||
msgid "Confirm Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:306
|
||||
#: src/components/Admintools.jsx:387
|
||||
#: src/components/Admintools.jsx:461
|
||||
#: src/components/Admintools.jsx:505
|
||||
#: src/components/Admintools.jsx:589
|
||||
#: src/components/NewPasswordForm.jsx:104
|
||||
#: src/components/SignUpForm.jsx:152
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:125
|
||||
#: src/components/ChangeName.jsx:94
|
||||
#: src/components/ChangePassword.jsx:152
|
||||
#: src/components/DeleteAccount.jsx:95
|
||||
#: src/components/NewPasswordForm.jsx:106
|
||||
#: src/components/SignUpForm.jsx:158
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/NewPasswordForm.jsx:83
|
||||
msgid "Sent you a mail with instructions to reset your password."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/CanvasItem.jsx:46
|
||||
|
@ -701,108 +747,6 @@ msgstr ""
|
|||
msgid "Dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:179
|
||||
msgid "Build image on canvas."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:182
|
||||
msgid "Build image and set it to protected."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:185
|
||||
msgid "Build image, but reset cooldown to unset-pixel cd."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:248
|
||||
msgid "Image Upload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:249
|
||||
msgid "Upload images to canvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:251
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:271
|
||||
msgid "Coordinates in X_Y format:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:306
|
||||
#: src/components/Admintools.jsx:387
|
||||
#: src/components/Admintools.jsx:461
|
||||
#: src/components/Admintools.jsx:505
|
||||
#: src/components/Admintools.jsx:589
|
||||
#: src/components/SignUpForm.jsx:151
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:311
|
||||
msgid "Pixel Protection"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:313
|
||||
msgid ""
|
||||
"Set protection of areas (if you need finer grained control, "
|
||||
"use protect with image upload and alpha layers)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:392
|
||||
msgid "Rollback to Date"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:394
|
||||
msgid "Rollback an area of the canvas to a set date (00:00 UTC)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:468
|
||||
msgid "IP Actions"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:470
|
||||
msgid "Do stuff with IPs (one IP per line)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:510
|
||||
msgid "Manage Moderators"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:512
|
||||
msgid "Remove Moderator"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:544
|
||||
msgid "There are no mods"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:549
|
||||
msgid "Assign new Mod"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:552
|
||||
msgid "Enter UserName of new Mod"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/SignUpForm.jsx:125
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/SignUpForm.jsx:132
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/SignUpForm.jsx:148
|
||||
msgid "Confirm Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:122
|
||||
#: src/components/ChangePassword.jsx:151
|
||||
#: src/components/DeleteAccount.jsx:94
|
||||
#: src/components/SignUpForm.jsx:157
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Converter.jsx:274
|
||||
msgid "Choose Canvas"
|
||||
msgstr ""
|
||||
|
@ -874,97 +818,144 @@ msgstr ""
|
|||
msgid "Download Template"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:15
|
||||
msgid "Email can't be empty."
|
||||
#: src/components/Admintools.jsx:179
|
||||
msgid "Build image on canvas."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:16
|
||||
msgid "Email should be at least 5 characters long."
|
||||
#: src/components/Admintools.jsx:182
|
||||
msgid "Build image and set it to protected."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:17
|
||||
msgid "Email can't be longer than 40 characters."
|
||||
#: src/components/Admintools.jsx:185
|
||||
msgid "Build image, but reset cooldown to unset-pixel cd."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:248
|
||||
msgid "Image Upload"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:249
|
||||
msgid "Upload images to canvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:251
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:271
|
||||
msgid "Coordinates in X_Y format:"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:311
|
||||
msgid "Pixel Protection"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:313
|
||||
msgid ""
|
||||
"Set protection of areas (if you need finer grained control, "
|
||||
"use protect with image upload and alpha layers)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:392
|
||||
msgid "Rollback to Date"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:394
|
||||
msgid "Rollback an area of the canvas to a set date (00:00 UTC)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:468
|
||||
msgid "IP Actions"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:470
|
||||
msgid "Do stuff with IPs (one IP per line)"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:510
|
||||
msgid "Manage Moderators"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:512
|
||||
msgid "Remove Moderator"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:544
|
||||
msgid "There are no mods"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:549
|
||||
msgid "Assign new Mod"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:552
|
||||
msgid "Enter UserName of new Mod"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/Admintools.jsx:561
|
||||
msgid "User Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:18
|
||||
msgid "Email should at least contain a dot"
|
||||
msgid "Email can't be empty."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:19
|
||||
msgid "Email should be at least 5 characters long."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:20
|
||||
msgid "Email can't be longer than 40 characters."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:21
|
||||
msgid "Email should at least contain a dot"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:23
|
||||
msgid "Email should contain a @"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:27
|
||||
#: src/utils/validation.js:30
|
||||
msgid "Name can't be empty."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:28
|
||||
#: src/utils/validation.js:31
|
||||
msgid "Name must be at least 4 characters long"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:29
|
||||
#: src/utils/validation.js:32
|
||||
msgid "Name must be shorter than 26 characters"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:36
|
||||
#: src/utils/validation.js:39
|
||||
msgid "Name contains invalid character like @, /, \\ or #"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:51
|
||||
#: src/utils/validation.js:54
|
||||
msgid "No password given."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:57
|
||||
msgid "Password must be at least 6 characters long."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:54
|
||||
#: src/utils/validation.js:60
|
||||
msgid "Password must be shorter than 60 characters."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:68
|
||||
#: src/utils/validation.js:74
|
||||
msgid "Could not connect to server, please try again later :("
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/validation.js:74
|
||||
#: src/utils/validation.js:80
|
||||
msgid "I think we experienced some error :("
|
||||
msgstr ""
|
||||
|
||||
#: src/components/DeleteAccount.jsx:92
|
||||
#: src/components/DeleteAccount.jsx:93
|
||||
msgid "Yes, Delete My Account!"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:89
|
||||
msgid ""
|
||||
"Changed Mail successfully. We sent you a verification mail, "
|
||||
"please verify your new mail adress."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:116
|
||||
msgid "New Mail"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:120
|
||||
#: src/components/ChangePassword.jsx:149
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:18
|
||||
msgid "Passwords do not match."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:103
|
||||
msgid "Changed Password successfully."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:128
|
||||
msgid "Old Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:136
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:145
|
||||
msgid "Confirm New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/SocialSettings.jsx:39
|
||||
msgid "Block all Private Messages"
|
||||
msgstr ""
|
||||
|
@ -977,6 +968,81 @@ msgstr ""
|
|||
msgid "You have no users blocked"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:89
|
||||
msgid ""
|
||||
"Changed Mail successfully. We sent you a verification mail, "
|
||||
"please verify your new mail adress."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:119
|
||||
msgid "New Mail"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeMail.jsx:123
|
||||
#: src/components/ChangeName.jsx:92
|
||||
#: src/components/ChangePassword.jsx:150
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:18
|
||||
msgid "Passwords do not match."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:103
|
||||
msgid "Changed Password successfully."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:129
|
||||
msgid "Old Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:137
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangePassword.jsx:146
|
||||
msgid "Confirm New Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ChangeName.jsx:88
|
||||
msgid "New Username"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserMessages.jsx:41
|
||||
msgid "A new verification mail is getting sent to you."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserMessages.jsx:75
|
||||
msgid "You successfully linked your mc account."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserMessages.jsx:76
|
||||
msgid "You denied."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserMessages.jsx:94
|
||||
msgid ""
|
||||
"Please verify your mail address \n"
|
||||
"or your account could get deleted after a few days."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserMessages.jsx:111
|
||||
msgid "Click here to request a new verification mail."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserMessages.jsx:120
|
||||
#, javascript-format
|
||||
msgid "You requested to link your mc account ${ minecraftname }."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserMessages.jsx:140
|
||||
msgid "Accept"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/UserMessages.jsx:150
|
||||
msgid "Deny"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/HelpModal.jsx:15
|
||||
#: src/components/SettingsModal.jsx:125
|
||||
msgctxt "keybinds"
|
||||
|
|
|
@ -44,7 +44,8 @@
|
|||
"cds": 60000,
|
||||
"ranked" : true,
|
||||
"req": -1,
|
||||
"sd": "2020-01-07"
|
||||
"sd": "2020-01-07",
|
||||
"desc": "Our main canvas, a huge map of the world. Place everywhere you like"
|
||||
},
|
||||
"1": {
|
||||
"ident": "m",
|
||||
|
@ -91,7 +92,8 @@
|
|||
"cds": 900000,
|
||||
"ranked" : true,
|
||||
"req": 20000,
|
||||
"sd": "2020-01-08"
|
||||
"sd": "2020-01-08",
|
||||
"desc": "Moon canvas. Safe space for art. No flags or large text (unless part of art)"
|
||||
},
|
||||
"2": {
|
||||
"ident":"v",
|
||||
|
@ -169,7 +171,8 @@
|
|||
"cds": 60000,
|
||||
"ranked" : false,
|
||||
"req": 0,
|
||||
"sd": "2020-01-08"
|
||||
"sd": "2020-01-08",
|
||||
"desc": "Place Voxels on a 3D canvas with others"
|
||||
},
|
||||
"3": {
|
||||
"ident": "c",
|
||||
|
@ -206,7 +209,8 @@
|
|||
"cds": 60000,
|
||||
"ranked" : false,
|
||||
"req": 0,
|
||||
"sd": "2020-03-15"
|
||||
"sd": "2020-03-15",
|
||||
"desc": "Special canvas to spread awareness of SARS-CoV2"
|
||||
},
|
||||
"5": {
|
||||
"ident": "y",
|
||||
|
@ -237,7 +241,8 @@
|
|||
"cds": 4000,
|
||||
"ranked": false,
|
||||
"req": -1,
|
||||
"sd": "2020-07-05"
|
||||
"sd": "2020-07-05",
|
||||
"desc": "Mirror of PixelZone"
|
||||
},
|
||||
"6": {
|
||||
"ident": "z",
|
||||
|
@ -268,7 +273,8 @@
|
|||
"cds": 10000,
|
||||
"ranked": false,
|
||||
"req": -1,
|
||||
"sd": "2020-07-05"
|
||||
"sd": "2020-07-05",
|
||||
"desc": "Mirror of PixelCanvas"
|
||||
},
|
||||
"7": {
|
||||
"ident": "w",
|
||||
|
@ -287,6 +293,7 @@
|
|||
"cds": 1000000,
|
||||
"ranked": true,
|
||||
"req": 5000,
|
||||
"sd": "2020-11-09"
|
||||
"sd": "2020-11-09",
|
||||
"desc": "Black and White canvas"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,9 +12,18 @@ import ttag from './core/ttag';
|
|||
|
||||
function getCanvases(t) {
|
||||
/*
|
||||
* add descriptions of canvases here
|
||||
* add descriptions and titles of canvases here
|
||||
* Use the t tab and right `backquotes`
|
||||
*/
|
||||
const canvasTitles = {
|
||||
0: t`Earth`,
|
||||
1: t`Moon`,
|
||||
2: t`3D Canvas`,
|
||||
3: t`Coronavirus`,
|
||||
5: t`PixelZone`,
|
||||
6: t`PixelCanvas`,
|
||||
7: t`1bit`,
|
||||
};
|
||||
const canvasDesc = {
|
||||
0: t`Our main canvas, a huge map of the world. Place everywhere you like`,
|
||||
1: t`Moon canvas. Safe space for art. No flags or large text (unless part of art)`,
|
||||
|
@ -34,6 +43,7 @@ function getCanvases(t) {
|
|||
for (let i = 0; i < canvasKeys.length; i += 1) {
|
||||
const key = canvasKeys[i];
|
||||
localicedCanvases[key].desc = canvasDesc[key] || `Canvas ${key}`;
|
||||
localicedCanvases[key].title = canvasTitles[key] || `Canvas ${key}`;
|
||||
}
|
||||
|
||||
return localicedCanvases;
|
||||
|
|
|
@ -558,7 +558,7 @@ function Admintools({
|
|||
maxWidth: '20em',
|
||||
}}
|
||||
type="text"
|
||||
placeholder="User Name"
|
||||
placeholder={t`User Name`}
|
||||
onChange={(evt) => {
|
||||
const co = evt.target.value.trim();
|
||||
selectModName(co);
|
||||
|
|
|
@ -100,7 +100,10 @@ class ChangeMail extends React.Component {
|
|||
<div className="inarea">
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
{errors.map((error) => (
|
||||
<p key={error} className="errormessage">Error: {error}</p>
|
||||
<p key={error} className="errormessage">
|
||||
<span>{t`Error`}</span>:
|
||||
{error}
|
||||
</p>
|
||||
))}
|
||||
<input
|
||||
value={password}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { t } from 'ttag';
|
||||
import { validateName, parseAPIresponse } from '../utils/validation';
|
||||
|
||||
|
||||
|
@ -77,19 +78,20 @@ class ChangeName extends React.Component {
|
|||
<div className="inarea">
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
{errors.map((error) => (
|
||||
<p key={error} className="errormessage">Error: {error}</p>
|
||||
<p key={error} className="errormessage">
|
||||
<span>{t`Error`}</span>: {error}</p>
|
||||
))}
|
||||
<input
|
||||
value={name}
|
||||
onChange={(evt) => this.setState({ name: evt.target.value })}
|
||||
type="text"
|
||||
placeholder="New Username"
|
||||
placeholder={t`New Username`}
|
||||
/>
|
||||
<br />
|
||||
<button type="submit">
|
||||
{(submitting) ? '...' : 'Save'}
|
||||
{(submitting) ? '...' : t`Save`}
|
||||
</button>
|
||||
<button type="button" onClick={done}>Cancel</button>
|
||||
<button type="button" onClick={done}>{t`Cancel`}</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -117,7 +117,8 @@ class ChangePassword extends React.Component {
|
|||
<div className="inarea">
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
{errors.map((error) => (
|
||||
<p key={error} className="errormessage">Error: {error}</p>
|
||||
<p key={error} className="errormessage"><span>{t`Error`}</span>
|
||||
: {error}</p>
|
||||
))}
|
||||
{(mailreg)
|
||||
&& (
|
||||
|
|
|
@ -79,7 +79,8 @@ class DeleteAccount extends React.Component {
|
|||
<div className="inarea" style={{ backgroundColor: '#ff6666' }}>
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
{errors.map((error) => (
|
||||
<p key={error} className="errormessage">Error: {error}</p>
|
||||
<p key={error} className="errormessage"><span>{t`Error`}</span>
|
||||
: {error}</p>
|
||||
))}
|
||||
<input
|
||||
value={password}
|
||||
|
|
|
@ -18,10 +18,8 @@ function validate(nameoremail, password) {
|
|||
? validateEMail(nameoremail)
|
||||
: validateName(nameoremail);
|
||||
if (mailerror) errors.push(mailerror);
|
||||
/*
|
||||
const passworderror = validatePassword(password);
|
||||
if (passworderror) errors.push(passworderror);
|
||||
*/
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
@ -96,7 +94,7 @@ class LogInForm extends React.Component {
|
|||
return (
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
{errors.map((error) => (
|
||||
<p key={error}>Error: {error}</p>
|
||||
<p key={error}><span>{t`Error`}</span>: {error}</p>
|
||||
))}
|
||||
<input
|
||||
value={nameoremail}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* @flow
|
||||
*/
|
||||
import React from 'react';
|
||||
import { t } from 'ttag';
|
||||
import { validateEMail, parseAPIresponse } from '../utils/validation';
|
||||
|
||||
function validate(email) {
|
||||
|
@ -79,7 +80,7 @@ class NewPasswordForm extends React.Component {
|
|||
return (
|
||||
<div>
|
||||
<p className="modalmessage">
|
||||
Sent you a mail with instructions to reset your password.
|
||||
{t`Sent you a mail with instructions to reset your password.`}
|
||||
</p>
|
||||
<button type="button" onClick={back}>Back</button>
|
||||
</div>
|
||||
|
@ -89,20 +90,20 @@ class NewPasswordForm extends React.Component {
|
|||
return (
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
{errors.map((error) => (
|
||||
<p key={error}>Error: {error}</p>
|
||||
<p key={error}><span>{t`Error`}</span>: {error}</p>
|
||||
))}
|
||||
<input
|
||||
style={inputStyles}
|
||||
value={email}
|
||||
onChange={(evt) => this.setState({ email: evt.target.value })}
|
||||
type="text"
|
||||
placeholder="Email"
|
||||
placeholder={t`Email`}
|
||||
/>
|
||||
<br />
|
||||
<button type="submit">
|
||||
{(submitting) ? '...' : 'Submit'}
|
||||
{(submitting) ? '...' : t`Submit`}
|
||||
</button>
|
||||
<button type="button" onClick={back}>Cancel</button>
|
||||
<button type="button" onClick={back}>{t`Cancel`}</button>
|
||||
</form>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ const OnlineBox = ({ online, totalPixels, name }) => (
|
|||
&& <span title={t`User online`}>{online} <FaUser /> </span>}
|
||||
{(name != null)
|
||||
&& (
|
||||
<span title={t`Pixel gesetzt`}>
|
||||
<span title={t`Pixels placed`}>
|
||||
{numberToString(totalPixels)} <FaPaintBrush />
|
||||
</span>
|
||||
)}
|
||||
|
|
|
@ -115,7 +115,8 @@ class SignUpForm extends React.Component {
|
|||
return (
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
{errors.map((error) => (
|
||||
<p key={error} className="errormessage">Error: {error}</p>
|
||||
<p key={error} className="errormessage"><span>{t`Error`}</span>
|
||||
: {error}</p>
|
||||
))}
|
||||
<input
|
||||
style={inputStyles}
|
||||
|
|
|
@ -32,7 +32,7 @@ const LogInArea = ({ register, forgotPassword, me }) => (
|
|||
<p className="modaltext">
|
||||
{t`Login to access more features and stats.`}
|
||||
</p><br />
|
||||
<h2>{t`Login with Mail:`}</h2>
|
||||
<h2>{t`Login with Name or Mail:`}</h2>
|
||||
<LogInForm me={me} />
|
||||
<p
|
||||
className="modallink"
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { t } from 'ttag';
|
||||
|
||||
import { parseAPIresponse } from '../utils/validation';
|
||||
import { setMinecraftName, remFromMessages } from '../actions';
|
||||
|
@ -37,7 +38,7 @@ class UserMessages extends React.Component {
|
|||
const { errors } = await parseAPIresponse(response);
|
||||
const verifyAnswer = (errors)
|
||||
? errors[0]
|
||||
: 'A new verification mail is getting sent to you.';
|
||||
: t`A new verification mail is getting sent to you.`;
|
||||
this.setState({
|
||||
verifyAnswer,
|
||||
});
|
||||
|
@ -71,8 +72,8 @@ class UserMessages extends React.Component {
|
|||
remFromUserMessages('not_mc_verified');
|
||||
this.setState({
|
||||
linkAnswer: (accepted)
|
||||
? 'You successfully linked your mc account.'
|
||||
: 'You denied.',
|
||||
? t`You successfully linked your mc account.`
|
||||
: t`You denied.`,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -90,8 +91,8 @@ class UserMessages extends React.Component {
|
|||
&& messages.splice(messages.indexOf('not_verified'), 1))
|
||||
? (
|
||||
<p className="usermessages">
|
||||
Please verify your mail address
|
||||
or your account could get deleted after a few days.
|
||||
{t`Please verify your mail address
|
||||
or your account could get deleted after a few days.`}
|
||||
{(verifyAnswer)
|
||||
? (
|
||||
<span
|
||||
|
@ -107,7 +108,7 @@ class UserMessages extends React.Component {
|
|||
className="modallink"
|
||||
onClick={this.submitResendVerify}
|
||||
>
|
||||
Click here to request a new verification mail.
|
||||
{t`Click here to request a new verification mail.`}
|
||||
</span>
|
||||
)}
|
||||
</p>
|
||||
|
@ -116,7 +117,7 @@ class UserMessages extends React.Component {
|
|||
&& messages.splice(messages.indexOf('not_mc_verified'), 1))
|
||||
? (
|
||||
<p className="usermessages">
|
||||
You requested to link your mc account {minecraftname}.
|
||||
{t`You requested to link your mc account ${minecraftname}.`}
|
||||
|
||||
{(linkAnswer)
|
||||
? (
|
||||
|
@ -136,7 +137,7 @@ class UserMessages extends React.Component {
|
|||
this.submitMcLink(true);
|
||||
}}
|
||||
>
|
||||
Accept
|
||||
{t`Accept`}
|
||||
</span> or
|
||||
<span
|
||||
role="button"
|
||||
|
@ -146,7 +147,7 @@ class UserMessages extends React.Component {
|
|||
this.submitMcLink(false);
|
||||
}}
|
||||
>
|
||||
Deny
|
||||
{t`Deny`}
|
||||
</span>.
|
||||
</span>
|
||||
)}
|
||||
|
|
|
@ -3,22 +3,21 @@
|
|||
* @flow
|
||||
*/
|
||||
import { TTag } from 'ttag';
|
||||
import deLocale from '../../i18n/ssr-de.po';
|
||||
import { languageFromLocalisation } from '../utils/location';
|
||||
|
||||
const LOCALES = {
|
||||
de: deLocale,
|
||||
};
|
||||
// eslint-disable-next-line max-len
|
||||
const localeImports = require.context('../../i18n', false, /^\.[/\\]ssr-.+\.po$/);
|
||||
|
||||
const ttags = {
|
||||
default: new TTag(),
|
||||
};
|
||||
|
||||
(() => {
|
||||
const langs = Object.keys(LOCALES);
|
||||
langs.forEach((lang) => {
|
||||
localeImports.keys().forEach((file) => {
|
||||
const ttag = new TTag();
|
||||
ttag.addLocale(lang, LOCALES[lang]);
|
||||
// ./ssr-de.po
|
||||
const lang = file.replace('./ssr-', '').replace('.po', '');
|
||||
ttag.addLocale(lang, localeImports(file).default);
|
||||
ttag.useLocale(lang);
|
||||
ttags[lang] = ttag;
|
||||
});
|
||||
|
|
|
@ -16,7 +16,7 @@ function validate(email, password, gettext) {
|
|||
|
||||
const passerror = gettext(validatePassword(password));
|
||||
if (passerror) errors.push(passerror);
|
||||
const mailerror = validateEMail(email);
|
||||
const mailerror = gettext(validateEMail(email));
|
||||
if (mailerror) errors.push(mailerror);
|
||||
|
||||
return errors;
|
||||
|
|
|
@ -108,7 +108,10 @@ export default (passport) => {
|
|||
if (err) {
|
||||
const host = getHostFromRequest(req);
|
||||
logger.info(`Authentification error ${err}`);
|
||||
const index = getHtml('OAuth Authentification', err.message, host);
|
||||
const index = getHtml(
|
||||
'OAuth Authentification',
|
||||
err.message, host, req.lang,
|
||||
);
|
||||
res.status(400).send(index);
|
||||
} else {
|
||||
next();
|
||||
|
|
|
@ -6,10 +6,11 @@ import type { Request, Response } from 'express';
|
|||
|
||||
export default async (req: Request, res: Response) => {
|
||||
const { user } = req;
|
||||
const { t } = req.ttag;
|
||||
if (!user) {
|
||||
res.status(401);
|
||||
res.json({
|
||||
errors: ['You are not even logged in.'],
|
||||
errors: [t`You are not even logged in.`],
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -18,9 +18,9 @@ import {
|
|||
validatePassword,
|
||||
} from '../../../utils/validation';
|
||||
|
||||
async function validate(email, name, password, gettext) {
|
||||
async function validate(email, name, password, t, gettext) {
|
||||
const errors = [];
|
||||
const emailerror = validateEMail(email);
|
||||
const emailerror = gettext(validateEMail(email));
|
||||
if (emailerror) errors.push(emailerror);
|
||||
const nameerror = validateName(name);
|
||||
if (nameerror) errors.push(nameerror);
|
||||
|
@ -28,9 +28,9 @@ async function validate(email, name, password, gettext) {
|
|||
if (passworderror) errors.push(passworderror);
|
||||
|
||||
let reguser = await RegUser.findOne({ where: { email } });
|
||||
if (reguser) errors.push('E-Mail already in use.');
|
||||
if (reguser) errors.push(t`E-Mail already in use.`);
|
||||
reguser = await RegUser.findOne({ where: { name } });
|
||||
if (reguser) errors.push('Username already in use.');
|
||||
if (reguser) errors.push(t`Username already in use.`);
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ async function validate(email, name, password, gettext) {
|
|||
export default async (req: Request, res: Response) => {
|
||||
const { email, name, password } = req.body;
|
||||
const { t, gettext } = req.ttag;
|
||||
const errors = await validate(email, name, password, gettext);
|
||||
const errors = await validate(email, name, password, t, gettext);
|
||||
if (errors.length > 0) {
|
||||
res.status(400);
|
||||
res.json({
|
||||
|
|
|
@ -10,9 +10,9 @@ import mailProvider from '../../../core/mail';
|
|||
import { validateEMail } from '../../../utils/validation';
|
||||
import { getHostFromRequest } from '../../../utils/ip';
|
||||
|
||||
async function validate(email) {
|
||||
async function validate(email, gettext) {
|
||||
const errors = [];
|
||||
const emailerror = validateEMail(email);
|
||||
const emailerror = gettext(validateEMail(email));
|
||||
if (emailerror) errors.push(emailerror);
|
||||
|
||||
return errors;
|
||||
|
@ -21,8 +21,9 @@ async function validate(email) {
|
|||
export default async (req: Request, res: Response) => {
|
||||
const ip = req.trueIp;
|
||||
const { email } = req.body;
|
||||
const { gettext } = req.ttag;
|
||||
|
||||
const errors = await validate(email);
|
||||
const errors = validate(email, gettext);
|
||||
if (errors.length > 0) {
|
||||
res.status(400);
|
||||
res.json({
|
||||
|
|
|
@ -12,6 +12,8 @@ import mailProvider from '../../../core/mail';
|
|||
|
||||
export default async (req: Request, res: Response) => {
|
||||
const { token } = req.query;
|
||||
const { lang } = req;
|
||||
const { t } = req.ttag;
|
||||
const name = await mailProvider.verify(token);
|
||||
const host = getHostFromRequest(req);
|
||||
if (name) {
|
||||
|
@ -19,11 +21,15 @@ export default async (req: Request, res: Response) => {
|
|||
// thats a bit counter productive because it directly links to the websocket
|
||||
webSockets.notifyChangedMe(name);
|
||||
// ---
|
||||
const index = getHtml('Mail verification', 'You are now verified :)', host);
|
||||
const index = getHtml(
|
||||
t`Mail verification`,
|
||||
t`You are now verified :)`,
|
||||
host, lang,
|
||||
);
|
||||
res.status(200).send(index);
|
||||
} else {
|
||||
// eslint-disable-next-line max-len
|
||||
const index = getHtml('Mail verification', 'Your mail verification code is invalid or already expired :(, please request a new one.', host);
|
||||
const index = getHtml(t`Mail verification`, t`Your mail verification code is invalid or already expired :(, please request a new one.`, host, lang);
|
||||
res.status(400).send(index);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -54,12 +54,14 @@ router.use(expressTTag);
|
|||
*/
|
||||
router.post('/', async (req: Request, res: Response) => {
|
||||
const { pass, passconf, code } = req.body;
|
||||
const { lang } = req;
|
||||
const { t } = req.ttag;
|
||||
|
||||
if (!pass || !passconf || !code) {
|
||||
const html = getPasswordResetHtml(
|
||||
null,
|
||||
null,
|
||||
lang,
|
||||
t`You sent an empty password or invalid data :(`,
|
||||
);
|
||||
res.status(400).send(html);
|
||||
|
@ -71,6 +73,7 @@ router.post('/', async (req: Request, res: Response) => {
|
|||
const html = getPasswordResetHtml(
|
||||
null,
|
||||
null,
|
||||
lang,
|
||||
t`This password-reset link isn't valid anymore :(`,
|
||||
);
|
||||
res.status(401).send(html);
|
||||
|
@ -81,6 +84,7 @@ router.post('/', async (req: Request, res: Response) => {
|
|||
const html = getPasswordResetHtml(
|
||||
null,
|
||||
null,
|
||||
lang,
|
||||
t`Your passwords do not match :(`,
|
||||
);
|
||||
res.status(400).send(html);
|
||||
|
@ -95,6 +99,7 @@ router.post('/', async (req: Request, res: Response) => {
|
|||
const html = getPasswordResetHtml(
|
||||
null,
|
||||
null,
|
||||
lang,
|
||||
t`User doesn't exist in our database :(`,
|
||||
);
|
||||
res.status(400).send(html);
|
||||
|
@ -106,6 +111,7 @@ router.post('/', async (req: Request, res: Response) => {
|
|||
const html = getPasswordResetHtml(
|
||||
null,
|
||||
null,
|
||||
lang,
|
||||
t`Passowrd successfully changed.`,
|
||||
);
|
||||
res.status(200).send(html);
|
||||
|
@ -117,12 +123,14 @@ router.post('/', async (req: Request, res: Response) => {
|
|||
*/
|
||||
router.get('/', async (req: Request, res: Response) => {
|
||||
const { token } = req.query;
|
||||
const { lang } = req;
|
||||
const { t } = req.ttag;
|
||||
|
||||
if (!token) {
|
||||
const html = getPasswordResetHtml(
|
||||
null,
|
||||
null,
|
||||
lang,
|
||||
t`Invalid url :( Please check your mail again.`,
|
||||
);
|
||||
res.status(400).send(html);
|
||||
|
@ -134,6 +142,7 @@ router.get('/', async (req: Request, res: Response) => {
|
|||
const html = getPasswordResetHtml(
|
||||
null,
|
||||
null,
|
||||
lang,
|
||||
// eslint-disable-next-line max-len
|
||||
t`This passwort reset link is wrong or already expired, please request a new one (Note: you can use those links just once)`,
|
||||
);
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
import React from 'react';
|
||||
import ReactDOM from 'react-dom/server';
|
||||
|
||||
import { getTTag } from '../core/ttag';
|
||||
import Html from './Html';
|
||||
/* this one is set by webpack */
|
||||
// eslint-disable-next-line import/no-unresolved
|
||||
|
@ -45,12 +46,13 @@ function generateMainPage(countryCoords: Cell, lang: string): string {
|
|||
const scripts = (assets[`client-${lang}`])
|
||||
? assets[`client-${lang}`].js.map((s) => ASSET_SERVER + s)
|
||||
: defaultScripts;
|
||||
const { t } = getTTag(lang);
|
||||
// eslint-disable-next-line
|
||||
const html = ReactDOM.renderToStaticMarkup(
|
||||
<Html
|
||||
title="PixelPlanet.fun"
|
||||
title={t`PixelPlanet.fun`}
|
||||
// eslint-disable-next-line max-len
|
||||
description="Place color pixels on an map styled canvas with other players online"
|
||||
description={t`Place color pixels on an map styled canvas with other players online`}
|
||||
scripts={scripts}
|
||||
css={css}
|
||||
code={`${code}window.coordx=${x};window.coordy=${y};`}
|
||||
|
|
|
@ -6,50 +6,57 @@ import React from 'react';
|
|||
import ReactDOM from 'react-dom/server';
|
||||
import Html from './Html';
|
||||
|
||||
const PasswordReset = ({ name, code }) => (
|
||||
<form method="post" action="reset_password">
|
||||
<h3>Reset Password</h3>
|
||||
<p>Hello {name}, you can set your new password here:</p>
|
||||
<input
|
||||
type="password"
|
||||
name="pass"
|
||||
placeholder="New Password"
|
||||
style={{
|
||||
maxWidth: '35em',
|
||||
}}
|
||||
/>
|
||||
<input
|
||||
type="password"
|
||||
name="passconf"
|
||||
placeholder="Confirm New Password"
|
||||
style={{
|
||||
maxWidth: '35em',
|
||||
}}
|
||||
/>
|
||||
<input type="hidden" name="code" value={code} />
|
||||
<button type="submit" name="submit">Submit</button>
|
||||
</form>
|
||||
);
|
||||
import { getTTag } from '../core/ttag';
|
||||
|
||||
const PasswordResetError = ({ message }) => (
|
||||
<div>
|
||||
<h3>Reset Password</h3>
|
||||
<p>{message}</p>
|
||||
<p><a href="./">Click here</a> to go back to pixelplanet</p>
|
||||
</div>
|
||||
);
|
||||
export default function getPasswordResetHtml(name, code, lang, message = null) {
|
||||
const { t } = getTTag(lang);
|
||||
|
||||
let body = '';
|
||||
|
||||
if (message) {
|
||||
body = (
|
||||
<div>
|
||||
<h3>{t`Reset Password`}</h3>
|
||||
<p>{message}</p>
|
||||
<p><a href="./">{t`Click here`}</a>
|
||||
{t`to go back to pixelplanet`}</p>
|
||||
</div>
|
||||
);
|
||||
} else {
|
||||
body = (
|
||||
<form method="post" action="reset_password">
|
||||
<h3>{t`Reset Password`}</h3>
|
||||
<p>{t`Hello ${name}, you can set your new password here:`}</p>
|
||||
<input
|
||||
type="password"
|
||||
name="pass"
|
||||
placeholder={t`New Password`}
|
||||
style={{
|
||||
maxWidth: '35em',
|
||||
}}
|
||||
/>
|
||||
<input
|
||||
type="password"
|
||||
name="passconf"
|
||||
placeholder={t`Confirm New Password`}
|
||||
style={{
|
||||
maxWidth: '35em',
|
||||
}}
|
||||
/>
|
||||
<input type="hidden" name="code" value={code} />
|
||||
<button type="submit" name="submit">{t`Submit`}</button>
|
||||
</form>
|
||||
);
|
||||
}
|
||||
|
||||
const title = t`PixelPlanet.fun Password Reset`;
|
||||
const description = t`Reset your password here`;
|
||||
|
||||
export default function getPasswordResetHtml(name, code, message = null) {
|
||||
const title = 'PixelPlanet.fun Password Reset';
|
||||
const description = 'reset your password here';
|
||||
const body = (message)
|
||||
? <PasswordResetError message={message} />
|
||||
: <PasswordReset name={name} code={code} />;
|
||||
const index = `<!doctype html>${
|
||||
ReactDOM.renderToStaticMarkup(<Html
|
||||
title={title}
|
||||
description={description}
|
||||
body={body}
|
||||
title={title}
|
||||
description={description}
|
||||
body={body}
|
||||
/>)}`;
|
||||
return index;
|
||||
}
|
||||
|
|
|
@ -7,17 +7,22 @@ import React from 'react';
|
|||
import ReactDOM from 'react-dom/server';
|
||||
import Html from './Html';
|
||||
|
||||
const RedirectionPage = ({ text, host }) => (
|
||||
<div>
|
||||
<h3>{text}</h3>
|
||||
<p>You will be automatically redirected after 15s</p>
|
||||
<p>Or <a href={host}>Click here</a> to go back to pixelplanet</p>
|
||||
</div>
|
||||
);
|
||||
import { getTTag } from '../core/ttag';
|
||||
|
||||
function getHtml(description, text, host) {
|
||||
const title = 'PixelPlanet.fun Accounts';
|
||||
const body = <RedirectionPage text={text} host={host} />;
|
||||
function getHtml(description, text, host, lang) {
|
||||
const { jt, t } = getTTag(lang);
|
||||
|
||||
const clickHere = <a href={host}>{t`Click here`}</a>;
|
||||
|
||||
const body = (
|
||||
<div>
|
||||
<h3>{text}</h3>
|
||||
<p>{t`You will be automatically redirected after 15s`}</p>
|
||||
<p>{jt`Or ${clickHere} to go back to pixelplanet`}</p>
|
||||
</div>
|
||||
);
|
||||
|
||||
const title = t`PixelPlanet.fun Accounts`;
|
||||
// eslint-disable-next-line max-len
|
||||
const code = `window.setTimeout(function(){window.location.href="${host}";},15000)`;
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
* @flow
|
||||
*/
|
||||
|
||||
import { t } from 'ttag/dist/mock';
|
||||
import { t } from 'ttag';
|
||||
|
||||
// eslint-disable-next-line no-useless-escape, max-len
|
||||
const mailTester = /^[-!#$%&'*+\/0-9=?A-Z^_a-z{|}~](\.?[-!#$%&'*+\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\.?[a-zA-Z0-9])*\.[a-zA-Z](-?[a-zA-Z0-9])+$/;
|
||||
|
|
Loading…
Reference in New Issue
Block a user