diff --git a/README.md b/README.md
index 9ee82d8f..2ee209b1 100644
--- a/README.md
+++ b/README.md
@@ -124,28 +124,27 @@ Notes:
- The HTML for SocialMedia logins is in src/componets/UserAreaModal.js , delete stuff from there if you don't need it
- The HTML for the Help Screen is in src/components/HelpModal.js
-Canvas specific configuartion like colors and cooldown is in `canvases.json` for all canvases. The titles and descriptions of the canvases are also in `src/canvasesDesc.js` for translation reasons. Changing them requires a rebuild.
+Canvas specific configuartion like colors and cooldown is in `canvases.json` for all canvases. The titles and descriptions of the canvases are in `src/canvasesDesc.js` for translation reasons. Changing them requires a rebuild.
Meaning of some values:
-| Key | Description |
-|--------|:--------------------------------------------------|
-| ident | Unique character used in the url |
-| title | Title |
-| size | canvas size, power of 4 and between 256 and 65536 |
-| bcd | Base cooldown for unset pixels |
-| pcd | Cooldown for placing on set pixels |
-| cds | Stack time of Cooldown |
-| cli | Number of colors on the palette to ignore |
-| ranked | If pixels on canvas count on player statistic |
-| req | requieremt to place on the canvas |
-| sd | Start-date of the canvas for historical view |
-| desc | Small desctiption text |
-| v | If 3D voxel canvas (boolean) |
-| hid | Hidden canvases, can be just seen by pressing P |
+| Key | Description |
+|--------|:----------------------------------------------------------------|
+| ident | Unique character used in the url |
+| size | canvas size, power of 4 and between 256 and 65536 |
+| bcd | Base cooldown for unset pixels |
+| pcd | Cooldown for placing on set pixels (defaults to same as bcd) |
+| cds | Stack time of Cooldown |
+| cli | Number of leading colors on the palette to ignore (default: 0) |
+| ranked | If pixels on canvas count on player statistic (default: false) |
+| req | requieremt to place on the canvas |
+| sd | Start-date of the canvas for historical view |
+| v | If 3D voxel canvas (boolean) (default: false) |
+| hid | Hidden canvases, can be just seen by pressing P (default: false)|
+Values that have defaults and `req` are optional.
The canvas size limit can be surpassed by changing the websocket packages in src/socket/packages/ to send chunk coordinates in 16bit.
-req is an integer and if >0 is the amount of total pixels placed before being allowed to play there, if -1 it has no requirement and if 0 it is limited to registered users.
-The colors that are ignored via cli are used for making the canvas (blue ocean and white continents) and to know if the pixel is already set by a user or not.
+If `req` is 0, the canvas is only available for registered Useers. If it is a number >0 it is the amount of total pixels placed before a player is allowed to play there. If it is `top`, then it is only accessible for the Top10 players of the previous day.
+The colors that are ignored via `cli` are used for making the canvas (blue ocean and white continents) and to know if the pixel is already set by a user or not.
If you want to add a new canvas, be sure that you additionally create `public/loading${canvasId}.png`, `public/assets3d/normal${canvasId}.jpg`, `public/preview${canvasId}.png` and `public/assets3d/specular${canvasId}.jpg`, check out the existing ones to see what those files are for.
The default configuration values can be seen in `src/core/config.js` and for the canvases in `src/core/constats.js`
diff --git a/i18n/de.po b/i18n/de.po
index 6fe79b43..97d87859 100644
--- a/i18n/de.po
+++ b/i18n/de.po
@@ -10,46 +10,46 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals = 2; plural = (n != 1);\n"
-"X-Generator: Poedit 2.4.3\n"
+"X-Generator: Poedit 3.0.1\n"
-#: src/controls/keypress.js:39
+#: src/controls/keypress.js:41
#, javascript-format
msgid "Switched to ${ canvasName }"
msgstr "Gewechselt zu ${ canvasName }"
-#: src/controls/keypress.js:61
+#: src/controls/keypress.js:64
msgid "Grid ON"
msgstr "Raster Ein"
-#: src/controls/keypress.js:62
+#: src/controls/keypress.js:65
msgid "Grid OFF"
msgstr "Raster Aus"
-#: src/controls/keypress.js:70
+#: src/controls/keypress.js:75
msgid "Pixel Notify ON"
msgstr "Pixelaktivität Ein"
-#: src/controls/keypress.js:71
+#: src/controls/keypress.js:76
msgid "Pixel Notify OFF"
msgstr "Pixelaktivität Aus"
-#: src/controls/keypress.js:76
+#: src/controls/keypress.js:81
msgid "Muted Sound"
msgstr "Ton stummgeschaltet"
-#: src/controls/keypress.js:77
+#: src/controls/keypress.js:82
msgid "Unmuted Sound"
msgstr "Ton eingeschaltet"
-#: src/components/CoordinatesBox.jsx:29 src/controls/keypress.js:83
+#: src/components/CoordinatesBox.jsx:29 src/controls/keypress.js:88
msgid "Copied!"
msgstr "Kopiert!"
-#: src/controls/keypress.js:89
+#: src/controls/keypress.js:94
msgid "Show Hidden Canvases"
msgstr "Zeige versteckte Leinwände"
-#: src/controls/keypress.js:90
+#: src/controls/keypress.js:95
msgid "Hide Hidden Canvases"
msgstr "Verstecke geheime Leinwände"
@@ -63,7 +63,7 @@ msgstr ""
"Keine Antwort von pixelplanet erhalten. Vielleicht versuche die Seite neu zu "
"laden?"
-#: src/ui/placePixel.js:56 src/ui/placePixel.js:237 src/ui/placePixel.js:256
+#: src/ui/placePixel.js:56 src/ui/placePixel.js:237 src/ui/placePixel.js:260
msgid "OK"
msgstr "OK"
@@ -132,43 +132,63 @@ msgid "You are using a Proxy."
msgstr "Du benutzt ein Proxy."
#: src/ui/placePixel.js:246
+msgid "Not allowed"
+msgstr "Nicht erlaubt"
+
+#: src/ui/placePixel.js:247
+msgid "Just the Top10 of yesterday can place here"
+msgstr "Nur die Top10 Spieler von gestern dürfen hier spielen"
+
+#: src/ui/placePixel.js:250
msgid "Weird"
msgstr "Komisch"
-#: src/ui/placePixel.js:247
+#: src/ui/placePixel.js:251
msgid "Couldn't set Pixel"
msgstr "Konnte ein Pixel setzen"
-#: src/ui/placePixel.js:253
+#: src/ui/placePixel.js:257
#, javascript-format
msgid "Error ${ retCode }"
msgstr "Fehler ${ retCode }"
-#: src/actions/index.js:627
+#: src/ui/renderer.js:36
+msgid "Canvas Error"
+msgstr "Leinwand Fehler"
+
+#: src/ui/renderer.js:37
+msgid "Can't render 3D canvas, do you have WebGL2 disabled?"
+msgstr "Kann die 3D Leinwand nicht laden. Ist WebGL2 im Browser deaktiviert?"
+
+#: src/actions/index.js:632
msgid "Register New Account"
msgstr "Registriere neues Konto"
-#: src/actions/index.js:634
+#: src/actions/index.js:639
msgid "Restore my Password"
msgstr "Passwort wiederherstellen"
-#: src/actions/index.js:641
+#: src/actions/index.js:646
msgid "Welcome to PixelPlanet.fun"
msgstr "Willkommen auf PixelPlanet.fun"
-#: src/actions/index.js:647
+#: src/actions/index.js:652
msgid "Look at past Canvases"
msgstr "Zeige vergangene Leinwände"
-#: src/components/Converter.jsx:615 src/components/CoordinatesBox.jsx:32
+#: src/components/Converter.jsx:559 src/components/CoordinatesBox.jsx:32
msgid "Copy to Clipboard"
msgstr "Kopiere in die Zwischenablage"
-#: src/components/OnlineBox.jsx:30
-msgid "User online"
-msgstr "Spieler anwesend"
+#: src/components/OnlineBox.jsx:41
+msgid "Online Users on Canvas"
+msgstr "Spieler auf dieser Leinwand"
-#: src/components/OnlineBox.jsx:33
+#: src/components/OnlineBox.jsx:48
+msgid "Total Online Users"
+msgstr "Spieler insgesamt"
+
+#: src/components/OnlineBox.jsx:56
msgid "Pixels placed"
msgstr "Pixels gesetzt"
@@ -182,7 +202,34 @@ msgstr "Schließen"
msgid "Restore"
msgstr "Wiederherstellen"
-#: src/components/buttons/CanvasSwitchButton.jsx:23
+#: src/actions/fetch.js:39
+msgid "You made too many requests"
+msgstr "Zu viele Anfragen gesendet"
+
+#: src/actions/fetch.js:43
+#, javascript-format
+msgid "try again after ${ ti }min"
+msgstr "versuche es nach ${ ti }min nochmal"
+
+#: src/actions/fetch.js:54
+msgid "Connection error ${ code } :("
+msgstr "Verbindungsfehler ${ code } :("
+
+#: src/actions/fetch.js:79 src/actions/fetch.js:98
+msgid "Could not connect to server, please try again later :("
+msgstr ""
+"Kann nich zum Server verbinden, bitte versuche es später noch einmal :("
+
+#: src/actions/fetch.js:120 src/actions/fetch.js:139 src/actions/fetch.js:158
+#: src/actions/fetch.js:177
+msgid "Unknown Error"
+msgstr "Unbekannter Fehler"
+
+#: src/actions/fetch.js:187
+msgid "Server answered with gibberish :("
+msgstr "Server antwortete mit wirrwarr :("
+
+#: src/components/buttons/CanvasSwitchButton.jsx:22
#: src/components/windows/index.js:22
msgid "Canvas Selection"
msgstr "Leinwand auswahl"
@@ -203,32 +250,9 @@ msgstr "Schließe Menü"
msgid "Open Menu"
msgstr "Öffne Menü"
-#: src/actions/fetch.js:40
-msgid "You made too many requests"
-msgstr "Zu viele Anfragen gesendet"
-
-#: src/actions/fetch.js:44
-#, javascript-format
-msgid "try again after ${ ti }min"
-msgstr "versuche es nach ${ ti }min nochmal"
-
-#: src/actions/fetch.js:55
-msgid "Connection error ${ code } :("
-msgstr "Verbindungsfehler ${ code } :("
-
-#: src/actions/fetch.js:80 src/actions/fetch.js:99
-msgid "Could not connect to server, please try again later :("
-msgstr ""
-"Kann nich zum Server verbinden, bitte versuche es später noch einmal :("
-
-#: src/actions/fetch.js:121 src/actions/fetch.js:140 src/actions/fetch.js:159
-#: src/actions/fetch.js:178
-msgid "Unknown Error"
-msgstr "Unbekannter Fehler"
-
-#: src/actions/fetch.js:188
-msgid "Server answered with gibberish :("
-msgstr "Server antwortete mit wirrwarr :("
+#: src/components/buttons/HelpButton.jsx:23 src/components/windows/index.js:16
+msgid "Help"
+msgstr "Hilfe"
#: src/components/HistorySelect.jsx:144
msgid "Loading"
@@ -254,10 +278,6 @@ msgstr "Maximieren"
msgid "Resize"
msgstr "Größe ändern"
-#: src/components/buttons/HelpButton.jsx:23 src/components/windows/index.js:16
-msgid "Help"
-msgstr "Hilfe"
-
#: src/components/buttons/SettingsButton.jsx:23
#: src/components/windows/index.js:17
msgid "Settings"
@@ -283,10 +303,6 @@ msgstr "Schließe Palette"
msgid "Open Palette"
msgstr "Öffne Palette"
-#: src/components/contextmenus/ChannelContextMenu.jsx:55
-msgid "Mute"
-msgstr "Stummschalten"
-
#: src/components/contextmenus/UserContextMenu.jsx:53
msgid "Ping"
msgstr "Erwähnen"
@@ -299,6 +315,10 @@ msgstr "DM"
msgid "Block"
msgstr "Blocke"
+#: src/components/contextmenus/ChannelContextMenu.jsx:55
+msgid "Mute"
+msgstr "Stummschalten"
+
#: src/components/windows/index.js:19
msgid "Registration"
msgstr "Registrieren"
@@ -361,16 +381,16 @@ msgstr "Abbrechen"
msgid "Send"
msgstr "Senden"
-#: src/components/windows/Help.jsx:35
+#: src/components/windows/Help.jsx:36
msgid "your IP"
msgstr "deiner IP"
-#: src/components/windows/Help.jsx:41
+#: src/components/windows/Help.jsx:42
msgid "Place color pixels on a large canvas with other players online!"
msgstr ""
"Zeichne gemeinsam mit anderen Spielern auf einer großen Leinwand online!"
-#: src/components/windows/Help.jsx:42
+#: src/components/windows/Help.jsx:43
msgid ""
"Our main canvas is a huge worldmap, you can place wherever you like, but you "
"will have to wait a specific Cooldown between pixels. You can check out the "
@@ -388,7 +408,7 @@ msgstr ""
"warten muss, allerdings 7s wenn man über ein Pixel eines anderen Spielers "
"setzt."
-#: src/components/windows/Help.jsx:46
+#: src/components/windows/Help.jsx:47
msgid ""
"Higher zoomlevels take some time to update, the 3D globe gets updated at "
"least once per day."
@@ -396,23 +416,23 @@ msgstr ""
"Die höheren Zoomlevel brauchen etwas Zeit um aktualisiert zu werden, der 3D "
"Globus wird mindestens einmal pro tag neu geladen."
-#: src/components/windows/Help.jsx:47
+#: src/components/windows/Help.jsx:48
msgid "Have fun!"
msgstr "Viel Spaß!"
-#: src/components/windows/Help.jsx:49
+#: src/components/windows/Help.jsx:50
msgid "recommended"
msgstr "empfohlen"
-#: src/components/windows/Help.jsx:50
+#: src/components/windows/Help.jsx:51
msgid "Source on "
msgstr "Quelltext auf "
-#: src/components/windows/Help.jsx:51
+#: src/components/windows/Help.jsx:52
msgid "Map Data"
msgstr "Karten Dateien"
-#: src/components/windows/Help.jsx:52
+#: src/components/windows/Help.jsx:53
msgid ""
"The bare map data that we use, together with converted OpenStreetMap tiles "
"for orientation, can be downloaded from mega.nz here: "
@@ -421,11 +441,11 @@ msgstr ""
"OpenStreetMap Kacheln zur orientierung können auf mega.nz heruntergeladen "
"werden: "
-#: src/components/windows/Help.jsx:54
+#: src/components/windows/Help.jsx:55
msgid "Detected as Proxy?"
msgstr "Als Proxy erkannt?"
-#: src/components/windows/Help.jsx:56
+#: src/components/windows/Help.jsx:57
#, javascript-format
msgid ""
"If you got detected as proxy, but you are none, please go to our "
@@ -437,43 +457,43 @@ msgstr ""
"${ getIPLink } auf ${ mailLink }. Sende deine IP zu niemanden sonst. Wir "
"entschuldigen uns für die Unannehmlichkeiten."
-#: src/components/windows/Help.jsx:58 src/components/windows/Help.jsx:75
+#: src/components/windows/Help.jsx:59 src/components/windows/Help.jsx:76
msgid "Controls"
msgstr "Steuerung"
-#: src/components/windows/Help.jsx:60
+#: src/components/windows/Help.jsx:61
msgid "Click a color in palette to select it"
msgstr "Klicke auf eine Farbe in der Palette um sie auszuwählen"
-#: src/components/windows/Help.jsx:61
+#: src/components/windows/Help.jsx:62
#, javascript-format
msgid "Press ${ bindG } to toggle grid"
msgstr "Drücke ${ bindG } um das Raster ein- und auszuschalten"
-#: src/components/windows/Help.jsx:62
+#: src/components/windows/Help.jsx:63
msgid "Press ${ bindX } to toggle showing of pixel activity"
msgstr "Drücke ${ bindX } um Pixel Aktivität anzuzeigen"
-#: src/components/windows/Help.jsx:63
+#: src/components/windows/Help.jsx:64
#, javascript-format
msgid "Press ${ bindH } to toggle historical view"
msgstr "Drücke ${ bindH } um zur historischen Ansicht zu wechseln"
-#: src/components/windows/Help.jsx:64
+#: src/components/windows/Help.jsx:65
msgid "Press ${ bindR } to copy coordinates"
msgstr "Drücke ${ bindR } um aktuelle Koordinaten zu kopieren"
-#: src/components/windows/Help.jsx:65
+#: src/components/windows/Help.jsx:66
#, javascript-format
msgid "Press ${ bindQ } or ${ bindE } to zoom"
msgstr "Drücke ${ bindQ } oder ${ bindE } um zu zoomen"
-#: src/components/windows/Help.jsx:66 src/components/windows/Help.jsx:77
+#: src/components/windows/Help.jsx:67 src/components/windows/Help.jsx:78
#, javascript-format
msgid "Press ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } to move"
msgstr "Drücke ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } zum navigieren"
-#: src/components/windows/Help.jsx:67 src/components/windows/Help.jsx:78
+#: src/components/windows/Help.jsx:68 src/components/windows/Help.jsx:79
#, javascript-format
msgid ""
"Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move"
@@ -481,26 +501,26 @@ msgstr ""
"Drücke ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } zum "
"navigieren"
-#: src/components/windows/Help.jsx:68
+#: src/components/windows/Help.jsx:69
msgid "Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move"
msgstr ""
"Ziehe mit der ${ mouseSymbol } Maus oder ${ touchSymbol } wische zum "
"navigieren"
-#: src/components/windows/Help.jsx:69
+#: src/components/windows/Help.jsx:70
#, javascript-format
msgid "Scroll ${ mouseSymbol } mouse wheel or ${ touchSymbol } pinch to zoom"
msgstr ""
"Scrolle ${ mouseSymbol } mit them Mausrad oder ${ touchSymbol } benutze Zwei-"
"Finger-Zoom um zu zoomen"
-#: src/components/windows/Help.jsx:70
+#: src/components/windows/Help.jsx:71
msgid "Hold left ${ bindShift } for placing while moving mouse"
msgstr ""
"Halte die linke ${ bindShift } Taste gedrückt um Pixel unter der Maus zu "
"setzen"
-#: src/components/windows/Help.jsx:71
+#: src/components/windows/Help.jsx:72
#, javascript-format
msgid ""
"Hold right ${ bindShift } for placing while moving mouse according to "
@@ -509,14 +529,14 @@ msgstr ""
"Halte die rechte ${ bindShift } Taste gedrückt um Pixel unter der Maus nach "
"der aktuellen historischen Ansicht zu setzen"
-#: src/components/windows/Help.jsx:72 src/components/windows/Help.jsx:83
+#: src/components/windows/Help.jsx:73 src/components/windows/Help.jsx:84
#, javascript-format
msgid "${ mouseSymbol } Left click or ${ touchSymbol } tap to place a pixel"
msgstr ""
"${ mouseSymbol } Linksklick oder ${ touchSymbol } tippe um ein Pixel zu "
"platzieren"
-#: src/components/windows/Help.jsx:73 src/components/windows/Help.jsx:85
+#: src/components/windows/Help.jsx:74 src/components/windows/Help.jsx:86
msgid ""
"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to "
"select current hovering color"
@@ -524,17 +544,17 @@ msgstr ""
"Klicke ${ mouseSymbol } die mittlere Maustaste oder ${ touchSymbol } tippe "
"lange um eine Farbe von der Leinwand auszuwählen"
-#: src/components/windows/Help.jsx:79
+#: src/components/windows/Help.jsx:80
msgid "Press ${ bindE } and ${ bindC } to fly up and down"
msgstr "Drücke ${ bindE } oder ${ bindC } um hoch und runter zu fliegen"
-#: src/components/windows/Help.jsx:80
+#: src/components/windows/Help.jsx:81
#, javascript-format
msgid "${ mouseSymbol } Hold left mouse button and drag mouse to rotate"
msgstr ""
"${ mouseSymbol } Halte die linke Maustaste gedrückt und ziehe um zu rotieren"
-#: src/components/windows/Help.jsx:81
+#: src/components/windows/Help.jsx:82
#, javascript-format
msgid ""
"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse "
@@ -543,13 +563,13 @@ msgstr ""
"${ mouseSymbol } Scrolle mit dem Mausrad oder halte ${ mouseSymbol } die "
"mittlere Maustaste gedrückt und ziehe um zu zoomen"
-#: src/components/windows/Help.jsx:82
+#: src/components/windows/Help.jsx:83
msgid "${ mouseSymbol } Right click and drag mouse to pan"
msgstr ""
"${ mouseSymbol } Halte die rechte Maustaste gedrückt und ziehe um dich zu "
"bewegen"
-#: src/components/windows/Help.jsx:84
+#: src/components/windows/Help.jsx:85
#, javascript-format
msgid ""
"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a pixel"
@@ -557,9 +577,22 @@ msgstr ""
"${ mouseSymbol } Rechtsklick oder ${ touchSymbol } tippe zweimal um ein "
"Voxel zu entfernen"
-#: src/components/windows/Help.jsx:87
-msgid "Partners:"
-msgstr "Partner:"
+#: src/components/windows/Help.jsx:90
+msgid ""
+"We thanks those artists very much, they offered their palettes to the public "
+"on"
+msgstr ""
+"Wir bedanken uns bei diesen Künstlern für ihre Paletten, welche sie der "
+"Öffentlichkeit zugänglich machten auf"
+
+#: src/components/windows/Help.jsx:93
+#, javascript-format
+msgid "Credit for the Palette of the Moon goes to ${ starhouseLink }."
+msgstr "Vielen Dank an ${ starhouseLink } für die Palette der Mond Leinwand."
+
+#: src/components/windows/Help.jsx:96
+msgid "Credit for the Palette of the Top10 canvas goes to ${ vinikLink }."
+msgstr "Vielen Dank an ${ vinikLink } für die Palette der Top10 Leinwand."
#: src/components/windows/Settings.jsx:133
msgid "Show Grid"
@@ -630,7 +663,7 @@ msgstr "Erdapfel Modus"
msgid "For when you are playing on a potato."
msgstr "Wenn du auf einer Kartoffel spielst."
-#: src/components/Converter.jsx:429 src/components/windows/Settings.jsx:195
+#: src/components/Converter.jsx:374 src/components/windows/Settings.jsx:195
msgid "Light Grid"
msgstr "Helles Raster"
@@ -709,14 +742,14 @@ msgid "Confirm Password"
msgstr "Passwort bestätigen"
#: src/components/Admintools.jsx:311 src/components/Admintools.jsx:392
-#: src/components/Admintools.jsx:466 src/components/Admintools.jsx:510
-#: src/components/Admintools.jsx:594
+#: src/components/Admintools.jsx:467 src/components/Admintools.jsx:512
+#: src/components/Admintools.jsx:595
#: src/components/windows/ForgotPassword.jsx:86
#: src/components/windows/Register.jsx:119
msgid "Submit"
msgstr "Absenden"
-#: src/components/windows/CanvasSelect.jsx:32
+#: src/components/windows/CanvasSelect.jsx:33
msgid ""
"Select the canvas you want to use. Every canvas is unique and has different "
"palettes, cooldown and requirements. Archive of closed canvases can be "
@@ -726,7 +759,7 @@ msgstr ""
"einzigartig und hat unterschiedliche Parletten, Abklingzeiten und "
"Vorraussetzungen. Archiv von vergangenen Leinwänden kann hier gesehen werden:"
-#: src/components/windows/CanvasSelect.jsx:40
+#: src/components/windows/CanvasSelect.jsx:41
msgid "Archive"
msgstr "Archiv"
@@ -777,14 +810,6 @@ msgstr ""
"kodiertes webm zu archivieren. Eine Bildschirmaufnahme aus dem Video ergibt "
"eine perfekte 1:1 Abbildung der Leinwand zu dieser Zeit."
-#: src/components/windows/ForgotPassword.jsx:60
-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/windows/ForgotPassword.jsx:71
-msgid "Enter your mail address and we will send you a new password:"
-msgstr "Gib deine Mail Adresse an und wir senden dir ein neues Passwort:"
-
#: src/components/windows/Chat.jsx:146
msgid "Channel settings"
msgstr "Kanal Einstellungen"
@@ -801,6 +826,14 @@ msgstr "Chatte hier"
msgid "You must be logged in to chat"
msgstr "Melde dich an um dich zu unterhalten"
+#: src/components/windows/ForgotPassword.jsx:60
+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/windows/ForgotPassword.jsx:71
+msgid "Enter your mail address and we will send you a new password:"
+msgstr "Gib deine Mail Adresse an und wir senden dir ein neues Passwort:"
+
#: src/utils/validation.js:18
msgid "Email can't be empty."
msgstr "Email Feld kann nicht leer sein."
@@ -878,101 +911,6 @@ msgstr "oder registriere dich hier:"
msgid "Register"
msgstr "Registrieren"
-#: src/components/Admintools.jsx:184
-msgid "Build image on canvas."
-msgstr "Zeiche Bild auf Leinwand."
-
-#: src/components/Admintools.jsx:187
-msgid "Build image and set it to protected."
-msgstr "Lade Bild und schütze es."
-
-#: src/components/Admintools.jsx:190
-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:253
-msgid "Image Upload"
-msgstr "Bild Hochladen"
-
-#: src/components/Admintools.jsx:254
-msgid "Upload images to canvas"
-msgstr "Lade ein Bild zur Leinwand hoch"
-
-#: src/components/Admintools.jsx:256
-msgid "File"
-msgstr "Datei"
-
-#: src/components/Admintools.jsx:276
-msgid "Coordinates in X_Y format:"
-msgstr "Koordinaten in X_Y Format:"
-
-#: src/components/Admintools.jsx:316
-msgid "Pixel Protection"
-msgstr "Pixel beschützen"
-
-#: src/components/Admintools.jsx:318
-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:397
-msgid "Rollback to Date"
-msgstr "Spule zum Datum zurück"
-
-#: src/components/Admintools.jsx:399
-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:473
-msgid "IP Actions"
-msgstr "IP Aktionen"
-
-#: src/components/Admintools.jsx:475
-msgid "Do stuff with IPs (one IP per line)"
-msgstr "Mache etwas mit IPs (eine IP pro Zeile)"
-
-#: src/components/Admintools.jsx:515
-msgid "Manage Moderators"
-msgstr "Verwalte Moderatoren"
-
-#: src/components/Admintools.jsx:517
-msgid "Remove Moderator"
-msgstr "Entferne Moderator"
-
-#: src/components/Admintools.jsx:549
-msgid "There are no mods"
-msgstr "Es gibt keine Moderatoren"
-
-#: src/components/Admintools.jsx:554
-msgid "Assign new Mod"
-msgstr "Moderator zuweisen"
-
-#: src/components/Admintools.jsx:557
-msgid "Enter UserName of new Mod"
-msgstr "Gebe Name des neuen Moderators ein"
-
-#: src/components/Admintools.jsx:566
-msgid "User Name"
-msgstr "Spielerbereich"
-
-#: src/components/Rankings.jsx:28
-msgid "Total"
-msgstr "Gesamt"
-
-#: src/components/Rankings.jsx:36
-msgid "Daily"
-msgstr "Täglich"
-
-#: src/components/Rankings.jsx:40
-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/UserAreaContent.jsx:63
msgid "Todays Placed Pixels"
msgstr "Heutige Pixel"
@@ -1018,102 +956,220 @@ msgstr "Lösche Konto"
msgid "Social Settings"
msgstr "Soziale Einstellungen"
-#: src/components/Converter.jsx:280
+#: src/components/Admintools.jsx:184
+msgid "Build image on canvas."
+msgstr "Zeiche Bild auf Leinwand."
+
+#: src/components/Admintools.jsx:187
+msgid "Build image and set it to protected."
+msgstr "Lade Bild und schütze es."
+
+#: src/components/Admintools.jsx:190
+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:253
+msgid "Image Upload"
+msgstr "Bild Hochladen"
+
+#: src/components/Admintools.jsx:254
+msgid "Upload images to canvas"
+msgstr "Lade ein Bild zur Leinwand hoch"
+
+#: src/components/Admintools.jsx:256
+msgid "File"
+msgstr "Datei"
+
+#: src/components/Admintools.jsx:276
+msgid "Coordinates in X_Y format:"
+msgstr "Koordinaten in X_Y Format:"
+
+#: src/components/Admintools.jsx:316
+msgid "Pixel Protection"
+msgstr "Pixel beschützen"
+
+#: src/components/Admintools.jsx:318
+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:398
+msgid "Rollback to Date"
+msgstr "Spule zum Datum zurück"
+
+#: src/components/Admintools.jsx:400
+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:475
+msgid "IP Actions"
+msgstr "IP Aktionen"
+
+#: src/components/Admintools.jsx:477
+msgid "Do stuff with IPs (one IP per line)"
+msgstr "Mache etwas mit IPs (eine IP pro Zeile)"
+
+#: src/components/Admintools.jsx:516
+msgid "Manage Moderators"
+msgstr "Verwalte Moderatoren"
+
+#: src/components/Admintools.jsx:518
+msgid "Remove Moderator"
+msgstr "Entferne Moderator"
+
+#: src/components/Admintools.jsx:550
+msgid "There are no mods"
+msgstr "Es gibt keine Moderatoren"
+
+#: src/components/Admintools.jsx:555
+msgid "Assign new Mod"
+msgstr "Moderator zuweisen"
+
+#: src/components/Admintools.jsx:558
+msgid "Enter UserName of new Mod"
+msgstr "Gebe Name des neuen Moderators ein"
+
+#: src/components/Admintools.jsx:567
+msgid "User Name"
+msgstr "Spielerbereich"
+
+#: src/components/Rankings.jsx:28
+msgid "Total"
+msgstr "Gesamt"
+
+#: src/components/Rankings.jsx:36
+msgid "Daily"
+msgstr "Täglich"
+
+#: src/components/Rankings.jsx:40
+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/Converter.jsx:190
msgid "Choose Canvas"
msgstr "Wähle Leinwand"
-#: src/components/Converter.jsx:306
+#: src/components/Converter.jsx:216
msgid "Palette Download"
msgstr "Palette herunterladen"
-#: src/components/Converter.jsx:308
+#: src/components/Converter.jsx:218
#, javascript-format
msgid "Palette for ${ gimpLink }"
msgstr "Palette für ${ gimpLink }"
-#: src/components/Converter.jsx:326
-#, javascript-format
-msgid "Credit for the Palette of the Moon goes to ${ starhouseLink }."
-msgstr "Vielen Dank an ${ starhouseLink } für die Palette der Mond Leinwand."
-
-#: src/components/Converter.jsx:329
+#: src/components/Converter.jsx:236
msgid "Image Converter"
msgstr "Bild Konverter"
-#: src/components/Converter.jsx:330
+#: src/components/Converter.jsx:237
msgid "Convert an image to canvas colors"
msgstr "Konvertiere ein Bild zu Leinwand Farben"
-#: src/components/Converter.jsx:341
+#: src/components/Converter.jsx:256
msgid "Choose Strategy"
msgstr "Wähle Strategie"
-#: src/components/Converter.jsx:368
+#: src/components/Converter.jsx:293
+msgid "Serpentine"
+msgstr "Serpentine"
+
+#: src/components/Converter.jsx:295
+msgid "Minimum Color Distance"
+msgstr "Minimum Farb Distanz"
+
+#: src/components/Converter.jsx:322
+msgid "Calculate like GIMP"
+msgstr "Berechne wie GIMP"
+
+#: src/components/Converter.jsx:326
msgid "Choose Color Mode"
msgstr "Wähle Farb Modus"
-#: src/components/Converter.jsx:406
+#: src/components/Converter.jsx:354
msgid "Add Grid (uncheck if you need a 1:1 template)"
msgstr "Zeichne Raster (deaktiviere falls du eine 1:1 Vorlage benötigst)"
-#: src/components/Converter.jsx:431 src/components/Converter.jsx:447
+#: src/components/Converter.jsx:376 src/components/Converter.jsx:392
msgid "Offset"
msgstr "Abweichung"
-#: src/components/Converter.jsx:477
+#: src/components/Converter.jsx:421
msgid "Scale Image"
msgstr "Skaliere Bild"
-#: src/components/Converter.jsx:489
+#: src/components/Converter.jsx:432
msgid "Width"
msgstr "Breite"
-#: src/components/Converter.jsx:519
+#: src/components/Converter.jsx:463
msgid "Height"
msgstr "Höhe"
-#: src/components/Converter.jsx:557
+#: src/components/Converter.jsx:502
msgid "Keep Ratio"
msgstr "Seitenverhältniss beibehalten"
-#: src/components/Converter.jsx:570
+#: src/components/Converter.jsx:515
msgid "Anti Aliasing"
msgstr "Kantenglättung"
-#: src/components/Converter.jsx:584
+#: src/components/Converter.jsx:529
msgid "Reset"
msgstr "Zurücksetzen"
-#: src/components/Converter.jsx:603
+#: src/components/Converter.jsx:547
msgid "Download Template"
msgstr "Bild herunterladen"
-#: src/components/CanvasItem.jsx:27
+#: src/components/CanvasItem.jsx:30
+msgid "Online Users"
+msgstr "Spieler online"
+
+#: src/components/CanvasItem.jsx:35
msgid "Cooldown"
msgstr "Abklingzeit"
-#: src/components/CanvasItem.jsx:33
+#: src/components/CanvasItem.jsx:41
msgid "Stacking till"
msgstr "Gesamtzeit"
-#: src/components/CanvasItem.jsx:35
+#: src/components/CanvasItem.jsx:43
msgid "Ranked"
msgstr "Gewertet"
-#: src/components/CanvasItem.jsx:37
+#: src/components/CanvasItem.jsx:45
+msgid "Yes"
+msgstr "Ja"
+
+#: src/components/CanvasItem.jsx:45
+msgid "No"
+msgstr "Nein"
+
+#: src/components/CanvasItem.jsx:51
msgid "Requirements"
msgstr "Vorraussetzungen"
-#: src/components/CanvasItem.jsx:39
+#: src/components/CanvasItem.jsx:54
msgid "User Account"
msgstr "Konto"
-#: src/components/CanvasItem.jsx:41
+#: src/components/CanvasItem.jsx:56
#, javascript-format
msgid "and ${ canvas.req } Pixels set"
msgstr "und ${ canvas.req } gesetzte Pixel"
-#: src/components/CanvasItem.jsx:45
+#: src/components/CanvasItem.jsx:59
+msgid "Top 10 Daily Ranking"
+msgstr "Top 10 Platzierung am Vortag"
+
+#: src/components/CanvasItem.jsx:65
msgid "Dimensions"
msgstr "Dimensionen"
@@ -1125,22 +1181,6 @@ msgstr "Name oder Email"
msgid "LogIn"
msgstr "Einloggen"
-#: src/components/UserMessages.jsx:28
-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:49
-msgid "A new verification mail is getting sent to you."
-msgstr "Eine neue Bestätigungsmail wurde gesendet."
-
-#: src/components/UserMessages.jsx:53
-msgid "Click here to request a new verification mail."
-msgstr "Klicke hier um eine neue Bestätigungsmail zu beantragen."
-
#: src/components/ChangePassword.jsx:22
msgid "Passwords do not match."
msgstr "Passwörter stimmen nicht überein."
@@ -1161,6 +1201,22 @@ msgstr "Neues Passwort"
msgid "Confirm New Password"
msgstr "Neues Passwort bestätigen"
+#: src/components/UserMessages.jsx:28
+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:49
+msgid "A new verification mail is getting sent to you."
+msgstr "Eine neue Bestätigungsmail wurde gesendet."
+
+#: src/components/UserMessages.jsx:53
+msgid "Click here to request a new verification mail."
+msgstr "Klicke hier um eine neue Bestätigungsmail zu beantragen."
+
#: src/components/ChangeName.jsx:64
msgid "New Username"
msgstr "Neuer Name"
@@ -1193,62 +1249,62 @@ msgstr "Entblocke Spieler"
msgid "You have no users blocked"
msgstr "Du hast keinen Spieler geblockt"
-#: src/components/windows/Help.jsx:15 src/components/windows/Settings.jsx:134
+#: src/components/windows/Help.jsx:14 src/components/windows/Settings.jsx:134
msgctxt "keybinds"
msgid "G"
msgstr "G"
-#: src/components/windows/Help.jsx:16 src/components/windows/Settings.jsx:142
+#: src/components/windows/Help.jsx:15 src/components/windows/Settings.jsx:142
msgctxt "keybinds"
msgid "X"
msgstr "X"
-#: src/components/windows/Help.jsx:17 src/components/windows/Settings.jsx:205
+#: src/components/windows/Help.jsx:16 src/components/windows/Settings.jsx:205
msgctxt "keybinds"
msgid "H"
msgstr "H"
-#: src/components/windows/Help.jsx:18
+#: src/components/windows/Help.jsx:17
msgctxt "keybinds"
msgid "R"
msgstr "R"
-#: src/components/windows/Help.jsx:19
+#: src/components/windows/Help.jsx:18
msgctxt "keybinds"
msgid "Q"
msgstr "Q"
-#: src/components/windows/Help.jsx:20
+#: src/components/windows/Help.jsx:19
msgctxt "keybinds"
msgid "E"
msgstr "E"
-#: src/components/windows/Help.jsx:21
+#: src/components/windows/Help.jsx:20
msgctxt "keybinds"
msgid "W"
msgstr "W"
-#: src/components/windows/Help.jsx:22
+#: src/components/windows/Help.jsx:21
msgctxt "keybinds"
msgid "A"
msgstr "A"
-#: src/components/windows/Help.jsx:23
+#: src/components/windows/Help.jsx:22
msgctxt "keybinds"
msgid "S"
msgstr "S"
-#: src/components/windows/Help.jsx:24
+#: src/components/windows/Help.jsx:23
msgctxt "keybinds"
msgid "D"
msgstr "D"
-#: src/components/windows/Help.jsx:31
+#: src/components/windows/Help.jsx:30
msgctxt "keybinds"
msgid "Shift"
msgstr "Shift"
-#: src/components/windows/Help.jsx:32
+#: src/components/windows/Help.jsx:31
msgctxt "keybinds"
msgid "C"
msgstr "C"
@@ -1258,6 +1314,12 @@ msgctxt "keybinds"
msgid "M"
msgstr "M"
+#~ msgid "Partners:"
+#~ msgstr "Partner:"
+
+#~ msgid "User online"
+#~ msgstr "Spieler anwesend"
+
#~ msgid "You successfully linked your mc account."
#~ msgstr "Minecraft Konto wurde erfolgreich verknüpft."
diff --git a/i18n/ssr-de.po b/i18n/ssr-de.po
index c6d228f2..4c2a3299 100644
--- a/i18n/ssr-de.po
+++ b/i18n/ssr-de.po
@@ -10,61 +10,57 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals = 2; plural = (n != 1);\n"
-"X-Generator: Poedit 2.4.3\n"
+"X-Generator: Poedit 3.0.1\n"
-#: src/core/ChatProvider.js:287
+#: src/core/ChatProvider.js:327
msgid "You can not send chat messages with proxy"
msgstr "Du kannst keine Nachrichten senden wenn du ein Proxy benutzt"
-#: src/core/ChatProvider.js:292
-msgid "Couldn't send your message, pls log out and back in again."
-msgstr "Konnte die Nachricht nicht senden, bitte logge duch aus und wieder an."
-
-#: src/core/ChatProvider.js:306
+#: src/core/ChatProvider.js:341
#, javascript-format
msgid "You are sending messages too fast, you have to wait ${ waitTime }s :("
msgstr "Du sendest zu viele Nachrichten, du musst ${ waitTime }s warten :("
-#: src/core/ChatProvider.js:310
+#: src/core/ChatProvider.js:345
msgid "You don't have access to this channel"
msgstr "Du hast keinen Zugriff zu diesen Kanal"
-#: src/core/ChatProvider.js:326
+#: src/core/ChatProvider.js:361
msgid "Your mail has to be verified in order to chat"
msgstr "E-Mail muss verifiziert sein um Nachrichten zu senden"
-#: src/core/ChatProvider.js:331
+#: src/core/ChatProvider.js:366
msgid "You are permanently muted, join our guilded to apppeal the mute"
msgstr ""
"Du bsit permanent stummgeschaltet, gehe zu unser guilded um dagegen "
"einzusprechen"
-#: src/core/ChatProvider.js:336
+#: src/core/ChatProvider.js:371
#, javascript-format
msgid "You are muted for another ${ timeMin } minutes"
msgstr "Du bist für ${ timeMin } Minuten stummgeschaltet"
-#: src/core/ChatProvider.js:338
+#: src/core/ChatProvider.js:373
msgid "You are muted for another ${ muted } seconds"
msgstr "Du bist for ${ muted } Sekunden stummgeschaltet"
-#: src/core/ChatProvider.js:346
+#: src/core/ChatProvider.js:381
msgid "Ow no! Spam protection decided to mute you"
msgstr "Oh nein! Spam-Schutz hat dich stummgeschaltet"
-#: src/core/ChatProvider.js:357
+#: src/core/ChatProvider.js:392
msgid "You can't send a message this long :("
msgstr "Do kannst keine so langen Nachrichten senden"
-#: src/core/ChatProvider.js:361
+#: src/core/ChatProvider.js:396
msgid "Please use int channel"
msgstr "Bitte benutze int Kanal"
-#: src/core/ChatProvider.js:365
+#: src/core/ChatProvider.js:400
msgid "Your country is temporary muted from chat"
msgstr "Dein Land ist temporär stummgeschaltet"
-#: src/core/ChatProvider.js:373
+#: src/core/ChatProvider.js:408
msgid "Stop flooding."
msgstr "Stoppe zu spamen."
@@ -84,39 +80,39 @@ msgstr "PixelPlanet.Fun 3D Globus"
msgid "A 3D globe of our whole map"
msgstr "Ein interaktvier 3D Globus unserer gesamten Karte"
-#: src/ssr-components/Main.jsx:73
+#: src/ssr-components/Main.jsx:70
msgid "PixelPlanet.fun"
msgstr "PixelPlanet.Fun"
-#: src/ssr-components/Main.jsx:75
+#: src/ssr-components/Main.jsx:72
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/routes/reset_password.js:58
+#: src/routes/reset_password.js:41
msgid "You sent an empty password or invalid data :("
msgstr "Du hast ein ungültiges Passwort oder Daten gesendet :("
-#: src/routes/reset_password.js:70
+#: src/routes/reset_password.js:53
msgid "This password-reset link isn't valid anymore :("
msgstr "Dieser Passwort-Wiederherstellungslink ist nichtmehr gültig :("
-#: src/routes/reset_password.js:81
+#: src/routes/reset_password.js:64
msgid "Your passwords do not match :("
msgstr "Passwörter stimmen nicht überein :("
-#: src/routes/reset_password.js:96
+#: src/routes/reset_password.js:79
msgid "User doesn't exist in our database :("
msgstr "Spieler existiert nicht in unserer Datenbank :("
-#: src/routes/reset_password.js:108
+#: src/routes/reset_password.js:91
msgid "Passowrd successfully changed."
msgstr "Passwort erfolgreich geändert."
-#: src/routes/reset_password.js:127
+#: src/routes/reset_password.js:110
msgid "Invalid url :( Please check your mail again."
msgstr "Ungültige Adresse :( Bitte kontrolliere die Mail nochmal."
-#: src/routes/reset_password.js:140
+#: src/routes/reset_password.js:123
msgid ""
"This passwort reset link is wrong or already expired, please request a new "
"one (Note: you can use those links just once)"
@@ -331,10 +327,6 @@ msgstr "Konnte keinen neuen Benutzer erstellen :("
msgid "Failed to establish session after register :("
msgstr "Konnte keine Sitzung nach registrierung starten :("
-#: 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"
@@ -351,6 +343,10 @@ msgstr ""
"Dein E-Mail verifikations Code ist ungültig oder bereits abgelaufen :(, "
"bitte fordere einen neuen an."
+#: src/routes/api/auth/logout.js:13
+msgid "You are not even logged in."
+msgstr "Du bist nichteinmal angemeldet."
+
#: src/routes/api/auth/change_mail.js:41
#: src/routes/api/auth/change_passwd.js:37
#: src/routes/api/auth/delete_account.js:38
@@ -376,34 +372,38 @@ msgstr "Oder ${ clickHere } um zu pixelplanet zurückzukehren"
msgid "PixelPlanet.fun Accounts"
msgstr "PixelPlanet.Fun Konten"
-#: src/canvasesDesc.js:19
+#: src/canvasesDesc.js:18
msgid "Earth"
msgstr "Erde"
-#: src/canvasesDesc.js:20
+#: src/canvasesDesc.js:19
msgid "Moon"
msgstr "Mond"
-#: src/canvasesDesc.js:21
+#: src/canvasesDesc.js:20
msgid "3D Canvas"
msgstr "3D Leinwand"
-#: src/canvasesDesc.js:22
+#: src/canvasesDesc.js:21
msgid "Coronavirus"
msgstr "Coronavirus"
-#: src/canvasesDesc.js:23
+#: src/canvasesDesc.js:22
msgid "PixelZone"
msgstr "PixelZone"
-#: src/canvasesDesc.js:24
+#: src/canvasesDesc.js:23
msgid "PixelCanvas"
msgstr "PixelCanvas"
-#: src/canvasesDesc.js:25
+#: src/canvasesDesc.js:24
msgid "1bit"
msgstr "1bit"
+#: src/canvasesDesc.js:25
+msgid "Top10"
+msgstr "Top10"
+
#: src/canvasesDesc.js:28
msgid "Our main canvas, a huge map of the world. Place everywhere you like"
msgstr ""
@@ -437,6 +437,21 @@ msgstr "Kopie von PixelCanvas"
msgid "Black and White canvas"
msgstr "Schwarz/Weiß Leinwand"
+#: src/canvasesDesc.js:35
+msgid ""
+"A canvas for the most active players from the the previous day. Daily "
+"ranking updates at 00:00 UTC."
+msgstr ""
+"Eine Leinwand für die zehn aktivsten Spieler des Vortages. Tägliche Reihung "
+"wird um 00:00 UTC aktualisiert."
+
+#~ msgid "Top10 Only Canvas"
+#~ msgstr "Tip10 Exklusiv"
+
+#~ msgid "Couldn't send your message, pls log out and back in again."
+#~ msgstr ""
+#~ "Konnte die Nachricht nicht senden, bitte logge duch aus und wieder an."
+
#~ msgid "Could not connect to server, please try again later :("
#~ msgstr ""
#~ "Konnte nicht zum Server verbinden, bitte versuche es später erneut :("
diff --git a/i18n/template-ssr.pot b/i18n/template-ssr.pot
index 98cceb59..45e578df 100644
--- a/i18n/template-ssr.pot
+++ b/i18n/template-ssr.pot
@@ -77,31 +77,31 @@ msgstr ""
msgid "Place color pixels on an map styled canvas with other players online"
msgstr ""
-#: src/routes/reset_password.js:58
+#: src/routes/reset_password.js:41
msgid "You sent an empty password or invalid data :("
msgstr ""
-#: src/routes/reset_password.js:70
+#: src/routes/reset_password.js:53
msgid "This password-reset link isn't valid anymore :("
msgstr ""
-#: src/routes/reset_password.js:81
+#: src/routes/reset_password.js:64
msgid "Your passwords do not match :("
msgstr ""
-#: src/routes/reset_password.js:96
+#: src/routes/reset_password.js:79
msgid "User doesn't exist in our database :("
msgstr ""
-#: src/routes/reset_password.js:108
+#: src/routes/reset_password.js:91
msgid "Passowrd successfully changed."
msgstr ""
-#: src/routes/reset_password.js:127
+#: src/routes/reset_password.js:110
msgid "Invalid url :( Please check your mail again."
msgstr ""
-#: src/routes/reset_password.js:140
+#: src/routes/reset_password.js:123
msgid ""
"This passwort reset link is wrong or already expired, please request a new "
"one (Note: you can use those links just once)"
@@ -374,32 +374,42 @@ msgstr ""
msgid "1bit"
msgstr ""
-#: src/canvasesDesc.js:27
-msgid "Our main canvas, a huge map of the world. Place everywhere you like"
+#: src/canvasesDesc.js:25
+msgid "Top10"
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) or art larger than 1.5k x 1.5k pixels."
msgstr ""
-#: src/canvasesDesc.js:29
+#: src/canvasesDesc.js:30
msgid "Place Voxels on a 3D canvas with others"
msgstr ""
-#: src/canvasesDesc.js:30
+#: src/canvasesDesc.js:31
msgid "Special canvas to spread awareness of SARS-CoV2"
msgstr ""
-#: src/canvasesDesc.js:31
+#: src/canvasesDesc.js:32
msgid "Mirror of PixelZone"
msgstr ""
-#: src/canvasesDesc.js:32
+#: src/canvasesDesc.js:33
msgid "Mirror of PixelCanvas"
msgstr ""
-#: src/canvasesDesc.js:33
+#: src/canvasesDesc.js:34
msgid "Black and White canvas"
+msgstr ""
+
+#: src/canvasesDesc.js:35
+msgid ""
+"A canvas for the most active players from the the previous day. Daily "
+"ranking updates at 00:00 UTC."
msgstr ""
\ No newline at end of file
diff --git a/i18n/template.pot b/i18n/template.pot
index 32e77777..8bb10e98 100644
--- a/i18n/template.pot
+++ b/i18n/template.pot
@@ -3,16 +3,155 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: src/components/OnlineBox.jsx:41
-msgid "Online Users on Canvas"
+#: src/controls/keypress.js:41
+#, javascript-format
+msgid "Switched to ${ canvasName }"
msgstr ""
-#: src/components/OnlineBox.jsx:48
-msgid "Total Online Users"
+#: src/controls/keypress.js:64
+msgid "Grid ON"
msgstr ""
-#: src/components/OnlineBox.jsx:56
-msgid "Pixels placed"
+#: src/controls/keypress.js:65
+msgid "Grid OFF"
+msgstr ""
+
+#: src/controls/keypress.js:75
+msgid "Pixel Notify ON"
+msgstr ""
+
+#: src/controls/keypress.js:76
+msgid "Pixel Notify OFF"
+msgstr ""
+
+#: src/controls/keypress.js:81
+msgid "Muted Sound"
+msgstr ""
+
+#: src/controls/keypress.js:82
+msgid "Unmuted Sound"
+msgstr ""
+
+#: src/components/CoordinatesBox.jsx:29
+#: src/controls/keypress.js:88
+msgid "Copied!"
+msgstr ""
+
+#: src/controls/keypress.js:94
+msgid "Show Hidden Canvases"
+msgstr ""
+
+#: src/controls/keypress.js:95
+msgid "Hide Hidden Canvases"
+msgstr ""
+
+#: src/ui/placePixel.js:53
+msgid "Error :("
+msgstr ""
+
+#: src/ui/placePixel.js:54
+msgid "Didn't get an answer from pixelplanet. Maybe try to refresh?"
+msgstr ""
+
+#: src/ui/placePixel.js:56
+#: src/ui/placePixel.js:237
+#: src/ui/placePixel.js:260
+msgid "OK"
+msgstr ""
+
+#: src/ui/placePixel.js:197
+msgid "Invalid Canvas"
+msgstr ""
+
+#: src/ui/placePixel.js:198
+msgid "This canvas doesn't exist"
+msgstr ""
+
+#: src/ui/placePixel.js:201
+#: src/ui/placePixel.js:205
+#: src/ui/placePixel.js:209
+msgid "Invalid Coordinates"
+msgstr ""
+
+#: src/ui/placePixel.js:202
+msgid "x out of bounds"
+msgstr ""
+
+#: src/ui/placePixel.js:206
+msgid "y out of bounds"
+msgstr ""
+
+#: src/ui/placePixel.js:210
+msgid "z out of bounds"
+msgstr ""
+
+#: src/ui/placePixel.js:213
+msgid "Wrong Color"
+msgstr ""
+
+#: src/ui/placePixel.js:214
+msgid "Invalid color selected"
+msgstr ""
+
+#: src/ui/placePixel.js:217
+msgid "Just for registered Users"
+msgstr ""
+
+#: src/ui/placePixel.js:218
+msgid "You have to be logged in to place on this canvas"
+msgstr ""
+
+#: src/ui/placePixel.js:221
+msgid "Place more :)"
+msgstr ""
+
+#: src/ui/placePixel.js:223
+msgid "You can not access this canvas yet. You need to place more pixels"
+msgstr ""
+
+#: src/ui/placePixel.js:226
+msgid "Pixel protected!"
+msgstr ""
+
+#: src/ui/placePixel.js:235
+msgid "Please prove that you are human"
+msgstr ""
+
+#: src/ui/placePixel.js:242
+msgid "No Proxies Allowed :("
+msgstr ""
+
+#: src/ui/placePixel.js:243
+msgid "You are using a Proxy."
+msgstr ""
+
+#: src/ui/placePixel.js:246
+msgid "Not allowed"
+msgstr ""
+
+#: src/ui/placePixel.js:247
+msgid "Just the Top10 of yesterday can place here"
+msgstr ""
+
+#: src/ui/placePixel.js:250
+msgid "Weird"
+msgstr ""
+
+#: src/ui/placePixel.js:251
+msgid "Couldn't set Pixel"
+msgstr ""
+
+#: src/ui/placePixel.js:257
+#, javascript-format
+msgid "Error ${ retCode }"
+msgstr ""
+
+#: src/ui/renderer.js:36
+msgid "Canvas Error"
+msgstr ""
+
+#: src/ui/renderer.js:37
+msgid "Can't render 3D canvas, do you have WebGL2 disabled?"
msgstr ""
#: src/actions/index.js:632
@@ -31,6 +170,912 @@ msgstr ""
msgid "Look at past Canvases"
msgstr ""
+#: src/components/Converter.jsx:559
+#: src/components/CoordinatesBox.jsx:32
+msgid "Copy to Clipboard"
+msgstr ""
+
+#: src/components/OnlineBox.jsx:41
+msgid "Online Users on Canvas"
+msgstr ""
+
+#: src/components/OnlineBox.jsx:48
+msgid "Total Online Users"
+msgstr ""
+
+#: src/components/OnlineBox.jsx:56
+msgid "Pixels placed"
+msgstr ""
+
+#: src/components/Admintools.jsx:224
+#: src/components/ModalRoot.jsx:69
+#: src/components/Window.jsx:138
+#: src/components/contextmenus/ChannelContextMenu.jsx:67
+msgid "Close"
+msgstr ""
+
+#: src/components/ModalRoot.jsx:78
+msgid "Restore"
+msgstr ""
+
+#: src/actions/fetch.js:39
+msgid "You made too many requests"
+msgstr ""
+
+#: src/actions/fetch.js:43
+#, javascript-format
+msgid "try again after ${ ti }min"
+msgstr ""
+
+#: src/actions/fetch.js:54
+msgid "Connection error ${ code } :("
+msgstr ""
+
+#: src/actions/fetch.js:79
+#: src/actions/fetch.js:98
+msgid "Could not connect to server, please try again later :("
+msgstr ""
+
+#: src/actions/fetch.js:120
+#: src/actions/fetch.js:139
+#: src/actions/fetch.js:158
+#: src/actions/fetch.js:177
+msgid "Unknown Error"
+msgstr ""
+
+#: src/actions/fetch.js:187
+msgid "Server answered with gibberish :("
+msgstr ""
+
+#: src/components/buttons/CanvasSwitchButton.jsx:22
+#: src/components/windows/index.js:22
+msgid "Canvas Selection"
+msgstr ""
+
+#: src/components/buttons/ChatButton.jsx:92
+msgid "Close Chat"
+msgstr ""
+
+#: src/components/buttons/ChatButton.jsx:92
+msgid "Open Chat"
+msgstr ""
+
+#: src/components/buttons/ExpandMenuButton.jsx:23
+msgid "Close Menu"
+msgstr ""
+
+#: src/components/buttons/ExpandMenuButton.jsx:23
+msgid "Open Menu"
+msgstr ""
+
+#: src/components/buttons/HelpButton.jsx:23
+#: src/components/windows/index.js:16
+msgid "Help"
+msgstr ""
+
+#: src/components/HistorySelect.jsx:144
+msgid "Loading"
+msgstr ""
+
+#: src/components/HistorySelect.jsx:145
+msgid "Select Date above"
+msgstr ""
+
+#: src/components/Window.jsx:117
+msgid "Clone"
+msgstr ""
+
+#: src/components/Window.jsx:124
+msgid "Move"
+msgstr ""
+
+#: src/components/Window.jsx:131
+msgid "Maximize"
+msgstr ""
+
+#: src/components/Window.jsx:145
+msgid "Resize"
+msgstr ""
+
+#: src/components/buttons/SettingsButton.jsx:23
+#: src/components/windows/index.js:17
+msgid "Settings"
+msgstr ""
+
+#: src/components/buttons/LogInButton.jsx:23
+#: src/components/windows/index.js:18
+msgid "User Area"
+msgstr ""
+
+#: src/components/buttons/DownloadButton.jsx:37
+msgid "Make Screenshot"
+msgstr ""
+
+#: src/components/buttons/GlobeButton.jsx:35
+msgid "Globe View"
+msgstr ""
+
+#: src/components/buttons/PalselButton.jsx:31
+msgid "Close Palette"
+msgstr ""
+
+#: src/components/buttons/PalselButton.jsx:31
+msgid "Open Palette"
+msgstr ""
+
+#: src/components/contextmenus/UserContextMenu.jsx:53
+msgid "Ping"
+msgstr ""
+
+#: src/components/contextmenus/UserContextMenu.jsx:78
+msgid "DM"
+msgstr ""
+
+#: src/components/contextmenus/UserContextMenu.jsx:88
+msgid "Block"
+msgstr ""
+
+#: src/components/contextmenus/ChannelContextMenu.jsx:55
+msgid "Mute"
+msgstr ""
+
+#: src/components/windows/index.js:19
+msgid "Registration"
+msgstr ""
+
+#: src/components/windows/index.js:20
+msgid "Forgot Password"
+msgstr ""
+
+#: src/components/windows/index.js:21
+msgid "Chat"
+msgstr ""
+
+#: src/components/windows/index.js:23
+msgid "Canvas Archive"
+msgstr ""
+
+#: src/components/Captcha.jsx:43
+#: src/components/ChangeMail.jsx:72
+#: src/components/ChangeName.jsx:58
+#: src/components/ChangePassword.jsx:80
+#: src/components/DeleteAccount.jsx:55
+#: src/components/LogInForm.jsx:69
+#: src/components/windows/ForgotPassword.jsx:75
+#: src/components/windows/Register.jsx:83
+msgid "Error"
+msgstr ""
+
+#: src/components/Captcha.jsx:47
+msgid "Type the characters from the following image:"
+msgstr ""
+
+#: src/components/Captcha.jsx:50
+msgid "Tip: Not case-sensitive; I and l are the same"
+msgstr ""
+
+#: src/components/Captcha.jsx:74
+msgid "Could not load captcha"
+msgstr ""
+
+#: src/components/Captcha.jsx:78
+msgid "Can't read? Reload:"
+msgstr ""
+
+#: src/components/Captcha.jsx:82
+msgid "Reload"
+msgstr ""
+
+#: src/components/Captcha.jsx:94
+msgid "Enter Characters"
+msgstr ""
+
+#: src/components/Captcha.jsx:120
+#: src/components/ChangeMail.jsx:93
+#: src/components/ChangeName.jsx:70
+#: src/components/ChangePassword.jsx:116
+#: src/components/DeleteAccount.jsx:68
+#: src/components/windows/ForgotPassword.jsx:88
+#: src/components/windows/Register.jsx:125
+msgid "Cancel"
+msgstr ""
+
+#: src/components/Captcha.jsx:127
+msgid "Send"
+msgstr ""
+
+#: src/components/windows/Help.jsx:36
+msgid "your IP"
+msgstr ""
+
+#: src/components/windows/Help.jsx:42
+msgid "Place color pixels on a large canvas with other players online!"
+msgstr ""
+
+#: src/components/windows/Help.jsx:43
+msgid ""
+"Our main canvas is a huge worldmap, you can place wherever you like, but "
+"you will have to wait a specific Cooldown between pixels. You can check out "
+"the cooldown and requirements on the Canvas Selection menu (globe button on "
+"top). Some canvases have a different cooldown for replacing a user-set "
+"pixels than placing on a unset pixel. i.e. 4s/7s means 4s on fresh pixels "
+"and 7s on already set pixels."
+msgstr ""
+
+#: src/components/windows/Help.jsx:47
+msgid ""
+"Higher zoomlevels take some time to update, the 3D globe gets updated at "
+"least once per day."
+msgstr ""
+
+#: src/components/windows/Help.jsx:48
+msgid "Have fun!"
+msgstr ""
+
+#: src/components/windows/Help.jsx:50
+msgid "recommended"
+msgstr ""
+
+#: src/components/windows/Help.jsx:51
+msgid "Source on "
+msgstr ""
+
+#: src/components/windows/Help.jsx:52
+msgid "Map Data"
+msgstr ""
+
+#: src/components/windows/Help.jsx:53
+msgid ""
+"The bare map data that we use, together with converted OpenStreetMap tiles "
+"for orientation, can be downloaded from mega.nz here: "
+msgstr ""
+
+#: src/components/windows/Help.jsx:55
+msgid "Detected as Proxy?"
+msgstr ""
+
+#: src/components/windows/Help.jsx:57
+#, javascript-format
+msgid ""
+"If you got detected as proxy, but you are none, please go to our ${ "
+"guildedLink } or send us an e-mail with ${ getIPLink } to ${ mailLink }. Do "
+"not post your IP anywhere else. We are sorry for the inconvenience."
+msgstr ""
+
+#: src/components/windows/Help.jsx:59
+#: src/components/windows/Help.jsx:76
+msgid "Controls"
+msgstr ""
+
+#: src/components/windows/Help.jsx:61
+msgid "Click a color in palette to select it"
+msgstr ""
+
+#: src/components/windows/Help.jsx:62
+#, javascript-format
+msgid "Press ${ bindG } to toggle grid"
+msgstr ""
+
+#: src/components/windows/Help.jsx:63
+msgid "Press ${ bindX } to toggle showing of pixel activity"
+msgstr ""
+
+#: src/components/windows/Help.jsx:64
+#, javascript-format
+msgid "Press ${ bindH } to toggle historical view"
+msgstr ""
+
+#: src/components/windows/Help.jsx:65
+msgid "Press ${ bindR } to copy coordinates"
+msgstr ""
+
+#: src/components/windows/Help.jsx:66
+#, javascript-format
+msgid "Press ${ bindQ } or ${ bindE } to zoom"
+msgstr ""
+
+#: src/components/windows/Help.jsx:67
+#: src/components/windows/Help.jsx:78
+#, javascript-format
+msgid "Press ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } to move"
+msgstr ""
+
+#: src/components/windows/Help.jsx:68
+#: src/components/windows/Help.jsx:79
+#, javascript-format
+msgid "Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move"
+msgstr ""
+
+#: src/components/windows/Help.jsx:69
+msgid "Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move"
+msgstr ""
+
+#: src/components/windows/Help.jsx:70
+#, javascript-format
+msgid "Scroll ${ mouseSymbol } mouse wheel or ${ touchSymbol } pinch to zoom"
+msgstr ""
+
+#: src/components/windows/Help.jsx:71
+msgid "Hold left ${ bindShift } for placing while moving mouse"
+msgstr ""
+
+#: src/components/windows/Help.jsx:72
+#, javascript-format
+msgid ""
+"Hold right ${ bindShift } for placing while moving mouse according to "
+"historical view"
+msgstr ""
+
+#: src/components/windows/Help.jsx:73
+#: src/components/windows/Help.jsx:84
+#, javascript-format
+msgid "${ mouseSymbol } Left click or ${ touchSymbol } tap to place a pixel"
+msgstr ""
+
+#: src/components/windows/Help.jsx:74
+#: src/components/windows/Help.jsx:86
+msgid ""
+"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to "
+"select current hovering color"
+msgstr ""
+
+#: src/components/windows/Help.jsx:80
+msgid "Press ${ bindE } and ${ bindC } to fly up and down"
+msgstr ""
+
+#: src/components/windows/Help.jsx:81
+#, javascript-format
+msgid "${ mouseSymbol } Hold left mouse button and drag mouse to rotate"
+msgstr ""
+
+#: src/components/windows/Help.jsx:82
+#, javascript-format
+msgid ""
+"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse "
+"button and drag to zoom"
+msgstr ""
+
+#: src/components/windows/Help.jsx:83
+msgid "${ mouseSymbol } Right click and drag mouse to pan"
+msgstr ""
+
+#: src/components/windows/Help.jsx:85
+#, javascript-format
+msgid ""
+"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a "
+"pixel"
+msgstr ""
+
+#: src/components/windows/Help.jsx:90
+msgid ""
+"We thanks those artists very much, they offered their palettes to the "
+"public on"
+msgstr ""
+
+#: src/components/windows/Help.jsx:93
+#, javascript-format
+msgid "Credit for the Palette of the Moon goes to ${ starhouseLink }."
+msgstr ""
+
+#: src/components/windows/Help.jsx:96
+msgid "Credit for the Palette of the Top10 canvas goes to ${ vinikLink }."
+msgstr ""
+
+#: src/components/windows/Settings.jsx:133
+msgid "Show Grid"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:138
+msgid "Turn on grid to highlight pixel borders."
+msgstr ""
+
+#: src/components/windows/Settings.jsx:141
+msgid "Show Pixel Activity"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:146
+msgid "Show circles where pixels are placed."
+msgstr ""
+
+#: src/components/windows/Settings.jsx:149
+msgid "Disable Game Sounds"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:155
+msgid "All sound effects will be disabled."
+msgstr ""
+
+#: src/components/windows/Settings.jsx:159
+msgid ""
+"Your Browser doesn't allow us to use AudioContext to play sounds. Do you "
+"have some privacy feature blocking us?"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:165
+msgid "Enable chat notifications"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:169
+msgid "Play a sound when new chat messages arrive"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:172
+msgid "Auto Zoom In"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:177
+msgid ""
+"Zoom in instead of placing a pixel when you tap the canvas and your zoom is "
+"small."
+msgstr ""
+
+#: src/components/windows/Settings.jsx:180
+msgid "Compact Palette"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:185
+msgid "Display Palette in a compact form that takes less screen space."
+msgstr ""
+
+#: src/components/windows/Settings.jsx:188
+msgid "Potato Mode"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:192
+msgid "For when you are playing on a potato."
+msgstr ""
+
+#: src/components/Converter.jsx:374
+#: src/components/windows/Settings.jsx:195
+msgid "Light Grid"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:199
+msgid "Show Grid in white instead of black."
+msgstr ""
+
+#: src/components/windows/Settings.jsx:203
+msgid "Historical View"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:208
+msgid "Check out past versions of the canvas."
+msgstr ""
+
+#: src/components/windows/Settings.jsx:213
+msgid "Themes"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:218
+msgid "How pixelplanet should look like."
+msgstr ""
+
+#: src/components/windows/Settings.jsx:225
+msgid "Select Language"
+msgstr ""
+
+#: src/components/windows/UserArea.jsx:27
+msgid "Profile"
+msgstr ""
+
+#: src/components/windows/UserArea.jsx:30
+msgid "Ranking"
+msgstr ""
+
+#: src/components/windows/UserArea.jsx:33
+msgid "Converter"
+msgstr ""
+
+#: src/components/windows/UserArea.jsx:39
+msgid "Admintools"
+msgstr ""
+
+#: src/components/windows/UserArea.jsx:39
+msgid "Modtools"
+msgstr ""
+
+#: src/components/windows/UserArea.jsx:40
+msgid "Loading..."
+msgstr ""
+
+#: src/components/windows/UserArea.jsx:47
+msgid "Consider joining us on Guilded:"
+msgstr ""
+
+#: src/components/windows/Register.jsx:81
+msgid "Register new account here"
+msgstr ""
+
+#: src/components/windows/Register.jsx:92
+msgid "Name"
+msgstr ""
+
+#: src/components/windows/ForgotPassword.jsx:82
+#: src/components/windows/Register.jsx:100
+msgid "Email"
+msgstr ""
+
+#: src/components/ChangeMail.jsx:80
+#: src/components/DeleteAccount.jsx:62
+#: src/components/LogInForm.jsx:83
+#: src/components/windows/Register.jsx:108
+msgid "Password"
+msgstr ""
+
+#: src/components/windows/Register.jsx:116
+msgid "Confirm Password"
+msgstr ""
+
+#: src/components/Admintools.jsx:311
+#: src/components/Admintools.jsx:392
+#: src/components/Admintools.jsx:467
+#: src/components/Admintools.jsx:512
+#: src/components/Admintools.jsx:595
+#: src/components/windows/ForgotPassword.jsx:86
+#: src/components/windows/Register.jsx:119
+msgid "Submit"
+msgstr ""
+
+#: src/components/windows/CanvasSelect.jsx:33
+msgid ""
+"Select the canvas you want to use. Every canvas is unique and has "
+"different palettes, cooldown and requirements. Archive of closed canvases "
+"can be accessed here:"
+msgstr ""
+
+#: src/components/windows/CanvasSelect.jsx:41
+msgid "Archive"
+msgstr ""
+
+#: src/components/windows/Archive.jsx:20
+msgid ""
+"While we tend to not delete canvases, some canvases are started for fun or "
+"as a request by users who currently like a meme. Those canvases can get "
+"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 ""
+
+#: src/components/windows/Archive.jsx:22
+msgid ""
+"Here we collect those canvases to archive them in a proper way (which is "
+"currently just one)."
+msgstr ""
+
+#: src/components/windows/Archive.jsx:24
+msgid "Political Compass Canvas"
+msgstr ""
+
+#: src/components/windows/Archive.jsx:31
+msgid ""
+"This canvas got requested during a time of political conflicts on the main "
+"Earth canvas. It was a 1024x1024 representation of the political compass "
+"with a 5s cooldown and 60s stacking. It got launched on May 11th and "
+"remained active for months till it got shut down on November 30th."
+msgstr ""
+
+#: src/components/windows/Archive.jsx:32
+msgid ""
+"We decided to archive it as a timelapse with lossless encoded webm. Taking "
+"a screenshot from the timelapse results in a perfect 1:1 representation of "
+"how the canvas was at that time."
+msgstr ""
+
+#: src/components/windows/Chat.jsx:146
+msgid "Channel settings"
+msgstr ""
+
+#: src/components/windows/Chat.jsx:161
+msgid "Start chatting here"
+msgstr ""
+
+#: src/components/windows/Chat.jsx:198
+msgid "Chat here"
+msgstr ""
+
+#: src/components/windows/Chat.jsx:221
+msgid "You must be logged in to chat"
+msgstr ""
+
+#: src/components/windows/ForgotPassword.jsx:60
+msgid "Sent you a mail with instructions to reset your password."
+msgstr ""
+
+#: src/components/windows/ForgotPassword.jsx:71
+msgid "Enter your mail address and we will send you a new password:"
+msgstr ""
+
+#: src/utils/validation.js:18
+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:30
+msgid "Name can't be empty."
+msgstr ""
+
+#: src/utils/validation.js:31
+msgid "Name must be at least 4 characters long"
+msgstr ""
+
+#: src/utils/validation.js:32
+msgid "Name must be shorter than 26 characters"
+msgstr ""
+
+#: src/utils/validation.js:39
+msgid "Name contains invalid character like @, /, \\ or #"
+msgstr ""
+
+#: 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:60
+msgid "Password must be shorter than 60 characters."
+msgstr ""
+
+#: src/components/ChangeMail.jsx:91
+#: src/components/ChangeName.jsx:68
+#: src/components/ChangePassword.jsx:110
+#: src/components/LanguageSelect.jsx:73
+msgid "Save"
+msgstr ""
+
+#: src/components/LogInArea.jsx:21
+msgid "Login to access more features and stats."
+msgstr ""
+
+#: src/components/LogInArea.jsx:23
+msgid "Login with Name or Mail:"
+msgstr ""
+
+#: src/components/LogInArea.jsx:30
+msgid "I forgot my Password."
+msgstr ""
+
+#: src/components/LogInArea.jsx:31
+msgid "or login with:"
+msgstr ""
+
+#: src/components/LogInArea.jsx:72
+msgid "or register here:"
+msgstr ""
+
+#: src/components/LogInArea.jsx:79
+msgid "Register"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:63
+msgid "Todays Placed Pixels"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:67
+msgid "Daily Rank"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:72
+msgid "Placed Pixels"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:76
+msgid "Total Rank"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:81
+#, javascript-format
+msgid "Your name is: ${ name }"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:87
+msgid "Log out"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:93
+msgid "Change Username"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:102
+msgid "Change Mail"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:110
+msgid "Change Password"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:116
+msgid "Delete Account"
+msgstr ""
+
+#: src/components/UserAreaContent.jsx:123
+msgid "Social Settings"
+msgstr ""
+
+#: src/components/Admintools.jsx:184
+msgid "Build image on canvas."
+msgstr ""
+
+#: src/components/Admintools.jsx:187
+msgid "Build image and set it to protected."
+msgstr ""
+
+#: src/components/Admintools.jsx:190
+msgid "Build image, but reset cooldown to unset-pixel cd."
+msgstr ""
+
+#: src/components/Admintools.jsx:253
+msgid "Image Upload"
+msgstr ""
+
+#: src/components/Admintools.jsx:254
+msgid "Upload images to canvas"
+msgstr ""
+
+#: src/components/Admintools.jsx:256
+msgid "File"
+msgstr ""
+
+#: src/components/Admintools.jsx:276
+msgid "Coordinates in X_Y format:"
+msgstr ""
+
+#: src/components/Admintools.jsx:316
+msgid "Pixel Protection"
+msgstr ""
+
+#: src/components/Admintools.jsx:318
+msgid ""
+"Set protection of areas (if you need finer grained control, "
+"use protect with image upload and alpha layers)"
+msgstr ""
+
+#: src/components/Admintools.jsx:398
+msgid "Rollback to Date"
+msgstr ""
+
+#: src/components/Admintools.jsx:400
+msgid "Rollback an area of the canvas to a set date (00:00 UTC)"
+msgstr ""
+
+#: src/components/Admintools.jsx:475
+msgid "IP Actions"
+msgstr ""
+
+#: src/components/Admintools.jsx:477
+msgid "Do stuff with IPs (one IP per line)"
+msgstr ""
+
+#: src/components/Admintools.jsx:516
+msgid "Manage Moderators"
+msgstr ""
+
+#: src/components/Admintools.jsx:518
+msgid "Remove Moderator"
+msgstr ""
+
+#: src/components/Admintools.jsx:550
+msgid "There are no mods"
+msgstr ""
+
+#: src/components/Admintools.jsx:555
+msgid "Assign new Mod"
+msgstr ""
+
+#: src/components/Admintools.jsx:558
+msgid "Enter UserName of new Mod"
+msgstr ""
+
+#: src/components/Admintools.jsx:567
+msgid "User Name"
+msgstr ""
+
+#: src/components/Rankings.jsx:28
+msgid "Total"
+msgstr ""
+
+#: src/components/Rankings.jsx:36
+msgid "Daily"
+msgstr ""
+
+#: src/components/Rankings.jsx:40
+msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC."
+msgstr ""
+
+#: src/components/Converter.jsx:190
+msgid "Choose Canvas"
+msgstr ""
+
+#: src/components/Converter.jsx:216
+msgid "Palette Download"
+msgstr ""
+
+#: src/components/Converter.jsx:218
+#, javascript-format
+msgid "Palette for ${ gimpLink }"
+msgstr ""
+
+#: src/components/Converter.jsx:236
+msgid "Image Converter"
+msgstr ""
+
+#: src/components/Converter.jsx:237
+msgid "Convert an image to canvas colors"
+msgstr ""
+
+#: src/components/Converter.jsx:256
+msgid "Choose Strategy"
+msgstr ""
+
+#: src/components/Converter.jsx:293
+msgid "Serpentine"
+msgstr ""
+
+#: src/components/Converter.jsx:295
+msgid "Minimum Color Distance"
+msgstr ""
+
+#: src/components/Converter.jsx:322
+msgid "Calculate like GIMP"
+msgstr ""
+
+#: src/components/Converter.jsx:326
+msgid "Choose Color Mode"
+msgstr ""
+
+#: src/components/Converter.jsx:354
+msgid "Add Grid (uncheck if you need a 1:1 template)"
+msgstr ""
+
+#: src/components/Converter.jsx:376
+#: src/components/Converter.jsx:392
+msgid "Offset"
+msgstr ""
+
+#: src/components/Converter.jsx:421
+msgid "Scale Image"
+msgstr ""
+
+#: src/components/Converter.jsx:432
+msgid "Width"
+msgstr ""
+
+#: src/components/Converter.jsx:463
+msgid "Height"
+msgstr ""
+
+#: src/components/Converter.jsx:502
+msgid "Keep Ratio"
+msgstr ""
+
+#: src/components/Converter.jsx:515
+msgid "Anti Aliasing"
+msgstr ""
+
+#: src/components/Converter.jsx:529
+msgid "Reset"
+msgstr ""
+
+#: src/components/Converter.jsx:547
+msgid "Download Template"
+msgstr ""
+
#: src/components/CanvasItem.jsx:30
msgid "Online Users"
msgstr ""
@@ -55,19 +1100,163 @@ msgstr ""
msgid "No"
msgstr ""
-#: src/components/CanvasItem.jsx:48
+#: src/components/CanvasItem.jsx:51
msgid "Requirements"
msgstr ""
-#: src/components/CanvasItem.jsx:50
+#: src/components/CanvasItem.jsx:54
msgid "User Account"
msgstr ""
-#: src/components/CanvasItem.jsx:52
+#: src/components/CanvasItem.jsx:56
#, javascript-format
msgid "and ${ canvas.req } Pixels set"
msgstr ""
-#: src/components/CanvasItem.jsx:56
+#: src/components/CanvasItem.jsx:59
+msgid "Top 10 Daily Ranking"
+msgstr ""
+
+#: src/components/CanvasItem.jsx:65
msgid "Dimensions"
+msgstr ""
+
+#: src/components/LogInForm.jsx:76
+msgid "Name or Email"
+msgstr ""
+
+#: src/components/LogInForm.jsx:87
+msgid "LogIn"
+msgstr ""
+
+#: src/components/ChangePassword.jsx:22
+msgid "Passwords do not match."
+msgstr ""
+
+#: src/components/ChangePassword.jsx:45
+msgid "Changed Password successfully."
+msgstr ""
+
+#: src/components/ChangePassword.jsx:89
+msgid "Old Password"
+msgstr ""
+
+#: src/components/ChangePassword.jsx:97
+msgid "New Password"
+msgstr ""
+
+#: src/components/ChangePassword.jsx:104
+msgid "Confirm New Password"
+msgstr ""
+
+#: src/components/UserMessages.jsx:28
+msgid ""
+"Please verify your mail address \n"
+"or your account could get deleted after a few days."
+msgstr ""
+
+#: src/components/UserMessages.jsx:49
+msgid "A new verification mail is getting sent to you."
+msgstr ""
+
+#: src/components/UserMessages.jsx:53
+msgid "Click here to request a new verification mail."
+msgstr ""
+
+#: src/components/ChangeName.jsx:64
+msgid "New Username"
+msgstr ""
+
+#: src/components/ChangeMail.jsx:59
+msgid ""
+"Changed Mail successfully. We sent you a verification mail, "
+"please verify your new mail address."
+msgstr ""
+
+#: src/components/ChangeMail.jsx:87
+msgid "New Mail"
+msgstr ""
+
+#: src/components/DeleteAccount.jsx:66
+msgid "Yes, Delete My Account!"
+msgstr ""
+
+#: src/components/SocialSettings.jsx:38
+msgid "Block all Private Messages"
+msgstr ""
+
+#: src/components/SocialSettings.jsx:56
+msgid "Unblock Users"
+msgstr ""
+
+#: src/components/SocialSettings.jsx:80
+msgid "You have no users blocked"
+msgstr ""
+
+#: src/components/windows/Help.jsx:14
+#: src/components/windows/Settings.jsx:134
+msgctxt "keybinds"
+msgid "G"
+msgstr ""
+
+#: src/components/windows/Help.jsx:15
+#: src/components/windows/Settings.jsx:142
+msgctxt "keybinds"
+msgid "X"
+msgstr ""
+
+#: src/components/windows/Help.jsx:16
+#: src/components/windows/Settings.jsx:205
+msgctxt "keybinds"
+msgid "H"
+msgstr ""
+
+#: src/components/windows/Help.jsx:17
+msgctxt "keybinds"
+msgid "R"
+msgstr ""
+
+#: src/components/windows/Help.jsx:18
+msgctxt "keybinds"
+msgid "Q"
+msgstr ""
+
+#: src/components/windows/Help.jsx:19
+msgctxt "keybinds"
+msgid "E"
+msgstr ""
+
+#: src/components/windows/Help.jsx:20
+msgctxt "keybinds"
+msgid "W"
+msgstr ""
+
+#: src/components/windows/Help.jsx:21
+msgctxt "keybinds"
+msgid "A"
+msgstr ""
+
+#: src/components/windows/Help.jsx:22
+msgctxt "keybinds"
+msgid "S"
+msgstr ""
+
+#: src/components/windows/Help.jsx:23
+msgctxt "keybinds"
+msgid "D"
+msgstr ""
+
+#: src/components/windows/Help.jsx:30
+msgctxt "keybinds"
+msgid "Shift"
+msgstr ""
+
+#: src/components/windows/Help.jsx:31
+msgctxt "keybinds"
+msgid "C"
+msgstr ""
+
+#: src/components/windows/Settings.jsx:150
+msgctxt "keybinds"
+msgid "M"
msgstr ""
\ No newline at end of file
diff --git a/public/loading8.png b/public/loading8.png
new file mode 100644
index 00000000..752c7180
Binary files /dev/null and b/public/loading8.png differ
diff --git a/public/preview8.png b/public/preview8.png
new file mode 100644
index 00000000..db7af015
Binary files /dev/null and b/public/preview8.png differ
diff --git a/src/canvases.json b/src/canvases.json
index ddd2581b..ed049e07 100644
--- a/src/canvases.json
+++ b/src/canvases.json
@@ -1,7 +1,6 @@
{
"0": {
"ident":"d",
- "title": "Earth",
"colors": [
[ 202, 227, 255 ],
[ 255, 255, 255 ],
@@ -37,19 +36,15 @@
[ 130, 0, 128 ]
],
"size": 65536,
- "hid": false,
"cli": 2,
"bcd": 4000,
"pcd" : 7000,
"cds": 60000,
"ranked" : true,
- "req": -1,
- "sd": "2020-01-07",
- "desc": "Our main canvas, a huge map of the world. Place everywhere you like"
+ "sd": "2020-01-07"
},
"1": {
"ident": "m",
- "title": "Moon",
"colors" : [
[ 49, 46, 47 ],
[ 99, 92, 90 ],
@@ -91,19 +86,15 @@
4096
]
],
- "hid": false,
"cli": 2,
"bcd": 15000,
- "pcd": 15000,
"cds": 900000,
"ranked" : true,
"req": 20000,
- "sd": "2020-01-08",
- "desc": "Moon canvas. Safe space for art. No flags or large text (unless part of art)"
+ "sd": "2020-01-08"
},
"2": {
"ident":"v",
- "title": "3D Canvas",
"colors": [
[ 255, 255, 255 ],
[ 255, 255, 255 ],
@@ -169,20 +160,15 @@
[ 174, 215, 185 ]
],
"size": 1024,
- "hid": false,
"v": true,
"cli": 2,
"bcd": 2000,
- "pcd" : 2000,
"cds": 60000,
- "ranked" : false,
"req": 0,
- "sd": "2020-01-08",
- "desc": "Place Voxels on a 3D canvas with others"
+ "sd": "2020-01-08"
},
"3": {
"ident": "c",
- "title": "Coronavirus",
"colors" : [
[ 226, 218, 0 ],
[ 33, 28, 15 ],
@@ -208,19 +194,14 @@
[ 230, 206, 172 ]
],
"size" : 256,
- "hid": false,
"cli": 2,
"bcd": 500,
- "pcd": 500,
"cds": 60000,
- "ranked" : false,
"req": 0,
- "sd": "2020-03-15",
- "desc": "Special canvas to spread awareness of SARS-CoV2"
+ "sd": "2020-03-15"
},
"5": {
"ident": "y",
- "title": "PixelZone",
"colors": [
[ 38, 38, 38 ],
[ 0, 0, 0 ],
@@ -241,18 +222,12 @@
],
"size": 16384,
"hid": true,
- "cli": 0,
"bcd": 4000,
- "pcd": 4000,
"cds": 4000,
- "ranked": false,
- "req": -1,
- "sd": "2020-07-05",
- "desc": "Mirror of PixelZone"
+ "sd": "2020-07-05"
},
"6": {
"ident": "z",
- "title": "PixelCanvas",
"colors": [
[ 255, 255, 255 ],
[ 228, 228, 228 ],
@@ -273,18 +248,12 @@
],
"size": 16384,
"hid": true,
- "cli": 0,
"bcd": 10000,
- "pcd": 10000,
"cds": 10000,
- "ranked": false,
- "req": -1,
- "sd": "2020-07-05",
- "desc": "Mirror of PixelCanvas"
+ "sd": "2020-07-05"
},
"7": {
"ident": "w",
- "title": "1bit",
"colors": [
[ 0, 0, 0 ],
[ 255, 255, 255 ],
@@ -292,14 +261,46 @@
[ 255, 255, 255 ]
],
"size": 65536,
- "hid": false,
"cli": 2,
"bcd": 7000,
"pcd": 15000,
"cds": 1000000,
"ranked": true,
"req": 5000,
- "sd": "2020-11-09",
- "desc": "Black and White canvas"
+ "sd": "2020-11-09"
+ },
+ "8": {
+ "ident": "t",
+ "colors": [
+ [ 197, 204, 184 ],
+ [ 111, 103, 118 ],
+ [ 154, 154, 151 ],
+ [ 139, 85, 128 ],
+ [ 195, 136, 144 ],
+ [ 165, 147, 165 ],
+ [ 102, 96, 146 ],
+ [ 154, 79, 80 ],
+ [ 194, 141, 117 ],
+ [ 124, 161, 192 ],
+ [ 65, 106, 163 ],
+ [ 141, 98, 104 ],
+ [ 190, 149, 92 ],
+ [ 104, 172, 169 ],
+ [ 56, 112, 128 ],
+ [ 110, 105, 98 ],
+ [ 147, 161, 103 ],
+ [ 110, 170, 120 ],
+ [ 85, 112, 100 ],
+ [ 157, 159, 127 ],
+ [ 126, 158, 153 ],
+ [ 93, 104, 114 ],
+ [ 67, 52, 85 ],
+ [ 0, 0, 0 ]
+ ],
+ "size": 1024,
+ "bcd": 15000,
+ "cds": 900000,
+ "req": "top",
+ "sd": "2022-01"
}
}
diff --git a/src/canvasesDesc.js b/src/canvasesDesc.js
index 829b8d1a..77c2a4c4 100644
--- a/src/canvasesDesc.js
+++ b/src/canvasesDesc.js
@@ -22,6 +22,7 @@ function getCanvases(t) {
5: t`PixelZone`,
6: t`PixelCanvas`,
7: t`1bit`,
+ 8: t`Top10`,
};
const canvasDesc = {
0: t`Our main canvas, a huge map of the world. Place everywhere you like`,
@@ -31,6 +32,7 @@ function getCanvases(t) {
5: t`Mirror of PixelZone`,
6: t`Mirror of PixelCanvas`,
7: t`Black and White canvas`,
+ 8: t`A canvas for the most active players from the the previous day. Daily ranking updates at 00:00 UTC.`,
};
/*
* no edit below here needed when adding/removing canvas
@@ -42,8 +44,12 @@ function getCanvases(t) {
for (let i = 0; i < canvasKeys.length; i += 1) {
const key = canvasKeys[i];
localicedCanvases[key] = { ...canvases[key] };
- localicedCanvases[key].desc = canvasDesc[key] || `Canvas ${key}`;
- localicedCanvases[key].title = canvasTitles[key] || `Canvas ${key}`;
+ localicedCanvases[key].desc = canvasDesc[key]
+ || canvases[key].desc
+ || `Canvas ${key}`;
+ localicedCanvases[key].title = canvasTitles[key]
+ || canvases[key].title
+ || `Canvas ${key}`;
}
return localicedCanvases;
diff --git a/src/components/CanvasItem.jsx b/src/components/CanvasItem.jsx
index 45af014d..31caa6b0 100644
--- a/src/components/CanvasItem.jsx
+++ b/src/components/CanvasItem.jsx
@@ -34,7 +34,7 @@ const CanvasItem = ({
{canvas.desc}
- {jt`Credit for the Palette of the Moon goes to ${starhouseLink}.`}
- {t`Convert an image to canvas colors`}
{t`Cooldown`}:
- {(canvas.bcd !== canvas.pcd)
+ {(canvas.pcd && canvas.bcd !== canvas.pcd)
? {canvas.bcd / 1000}s / {canvas.pcd / 1000}s
: {canvas.bcd / 1000}s}
@@ -45,14 +45,23 @@ const CanvasItem = ({
(canvas.ranked) ? t`Yes` : t`No`
}
- {(canvas.req !== -1) ? {t`Requirements`}:
: null}
-
- {(canvas.req !== -1) ? {t`User Account`} : null}
- {(canvas.req > 0)
- ? {t`and ${canvas.req} Pixels set`}
- : null}
-
- {(canvas.req !== -1) ?
: null}
+ {(canvas.req !== undefined) && (
+ <>
+
+ {t`Requirements`}:
+
+ {(typeof canvas.req === 'number')
+ ? {t`User Account`} : null}
+ {(canvas.req > 0)
+ ? {t`and ${canvas.req} Pixels set`}
+ : null}
+ {(canvas.req === 'top')
+ && {t`Top 10 Daily Ranking`}}
+
+
+
+ >
+ )}
{t`Dimensions`}:
{canvas.size} x {canvas.size}
{(canvas.v)
diff --git a/src/components/Converter.jsx b/src/components/Converter.jsx
index 9932e6fa..33177236 100644
--- a/src/components/Converter.jsx
+++ b/src/components/Converter.jsx
@@ -126,7 +126,7 @@ function Converter() {
if (inputImageCanvas) {
const canvas = canvases[selectedCanvas];
renderOutputImage({
- colors: canvas.colors.slice(canvas.cli),
+ colors: (canvas.cli) ? canvas.colors.slice(canvas.cli) : canvas.colors,
imgCanvas: inputImageCanvas,
ditherOpts: {
strategy: selectedStrategy,
@@ -184,11 +184,6 @@ function Converter() {
}, [scaleData.enabled]);
const gimpLink = GIMP;
- const starhouseLink = (
-
- starhouse
-
- );
return (
{t`Image Converter`}
+ {jt`Credit for the Palette of the Moon goes to ${starhouseLink}.`} +
++ {jt`Credit for the Palette of the Top10 canvas goes to ${vinikLink}.`} +
+