add more translations

This commit is contained in:
HF 2021-01-29 23:48:12 +01:00
parent 840a172816
commit f595c6d2ed
19 changed files with 706 additions and 279 deletions

1
.gitignore vendored
View File

@ -11,6 +11,7 @@ lol-cleaned.png
clean.png
utils/ocean-tiles/ocean
utils/osm-tiles/osm
i18n/*.mo
# Created by https://www.gitignore.io/api/node,webstorm

Binary file not shown.

View File

@ -1,35 +1,96 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Plural-Forms: nplurals = 2; plural = (n != 1);\n"
"Language: de\n"
"mime-version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de\n"
"MIME-Version: 1.0\n"
"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.3\n"
#: src/components/ForgotPasswordModal.jsx:20 src/components/RegisterModal.jsx:21
#: src/components/UserAreaModal.jsx:128
msgid "Consider joining us on Guilded:"
msgstr "Triff uns und andere Spieler auf guilded:"
#: src/components/ExpandMenuButton.jsx:19
msgid "Close Menu"
msgstr "Schließe Menü"
#: src/components/HelpModal.jsx:63 src/components/HelpModal.jsx:80
msgid "Controls"
msgstr "Steuerung"
#: src/components/ExpandMenuButton.jsx:19
msgid "Open Menu"
msgstr "Öffne Menü"
#: src/components/HelpModal.jsx:65
msgid "Click a color in palette to select it"
msgstr "Klicke auf eine Farbe in der Palette um sie auszuwählen"
#: src/components/ChatButton.jsx:61
msgid "Close Chat"
msgstr "Schließe Chat"
#: src/components/HelpModal.jsx:66
#, javascript-format
msgid "Press ${ bindG } to toggle grid"
msgstr "Drücke ${ bindG } um das Raster ein- und auszuschalten"
#: src/components/ChatButton.jsx:61
msgid "Open Chat"
msgstr "Öffne Chat"
#: src/components/OnlineBox.jsx:22
msgid "User online"
msgstr "Spieler anwesend"
#: src/components/OnlineBox.jsx:25
msgid "Pixel gesetzt"
msgstr "Pixel plaziert"
#: src/components/CanvasSwitchButton.jsx:20
msgid "Canvas Selection"
msgstr "Leinwand auswahl"
#: 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"
#: src/components/Chat.jsx:152
msgid "maximize"
msgstr "maximieren"
#: src/components/Chat.jsx:168
msgid "Start chatting here"
msgstr "Beginne hier zu chatten"
#: src/components/Chat.jsx:200
msgid "Chat here"
msgstr "Chatte hier"
#: src/components/Chat.jsx:219
msgid "You must be logged in to chat"
msgstr "Melde dich an um zu chatten"
#: src/components/GlobeButton.jsx:31
msgid "Globe View"
msgstr "Globus Ansicht"
#: src/components/PalselButton.jsx:25
msgid "Close Palette"
msgstr "Schließe Palette"
#: src/components/PalselButton.jsx:25
msgid "Open Palette"
msgstr "Öffne Palette"
#: src/components/HelpModal.jsx:34 src/components/HelpModal.jsx:35
msgid "Privacy Policy"
@ -41,11 +102,38 @@ msgstr "Nutzungsbedingungen"
#: src/components/HelpModal.jsx:40
msgid "your IP"
msgstr "deine IP"
msgstr "deiner IP"
#: src/components/HelpModal.jsx:46
msgid "Place color pixels on a large canvas with other players online!"
msgstr "Zeichne gemeinsam mit anderen Spielern auf einer großen Leinwand online!"
msgstr ""
"Zeichne gemeinsam mit anderen Spielern auf einer großen Leinwand online!"
#: src/components/HelpModal.jsx:47
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 requiremnts 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 ""
"Unsere standard Leinwand ist eine große Weltkarte. Pixel können überall "
"gesetzen werden, aber es kann nur eine begrenzte Anzahl and Pixels per Zeit "
"platziert werden. Die Vorraussetzungen und die Wartezeit sind im Auswahlmenu "
"zu sehen (Globus Taste am oberen Bildschirmrand). Manche Leinwände haben "
"eine niedrigere Wartezeit für ungesetzte Pixel im Vergleich zu von anderen "
"Spielern gesetzte Pixel. z.B. 4s/7s heißt dass man 4s für jedes neue Pixel "
"warten muss, allerdings 7s wenn man über ein Pixel eines anderen Spielers "
"setzt."
#: src/components/HelpModal.jsx:51
msgid ""
"Higher zoomlevels take some time to update, the 3D globe gets updated at "
"least once per day."
msgstr ""
"Die höheren Zoomlevel brauchen etwas Zeit um aktualisiert zu werden, der 3D "
"Globus wird mindestens einmal pro tag neu geladen."
#: src/components/HelpModal.jsx:52
msgid "Have fun!"
@ -63,6 +151,15 @@ msgstr "Quelltext auf "
msgid "Map Data"
msgstr "Karten Dateien"
#: src/components/HelpModal.jsx:57
msgid ""
"The bare map data that we use, together with converted OpenStreetMap tiles "
"for orientation, can be downloaded from mega.nz here: "
msgstr ""
"Die Kartendaten welche wir benutzen, zusammen mit konvertierten "
"OpenStreetMap Kacheln zur orientierung können auf mega.nz heruntergeladen "
"werden: "
#: src/components/HelpModal.jsx:59
msgid "Detected as Proxy?"
msgstr "Als Proxy erkannt?"
@ -70,14 +167,27 @@ msgstr "Als Proxy erkannt?"
#: src/components/HelpModal.jsx:61
#, 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."
"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 ""
"Solltest do als Proxy erkannt sein, aber du benutzt keines, bitte kontaktiere uns "
"auf ${ guildedLink } oder sende uns eine Mail mit ${ getIPLink } auf "
"${ mailLink }. Sende deine IP zu niemanden sonst. Wir entschuldigen uns für die "
"Unannehmlichkeiten."
"Solltest do als Proxy erkannt sein, aber du benutzt keines, bitte "
"kontaktiere uns auf ${ guildedLink } oder sende uns eine Mail mit "
"${ getIPLink } auf ${ mailLink }. Sende deine IP zu niemanden sonst. Wir "
"entschuldigen uns für die Unannehmlichkeiten."
#: src/components/HelpModal.jsx:63 src/components/HelpModal.jsx:80
msgid "Controls"
msgstr "Steuerung"
#: src/components/HelpModal.jsx:65
msgid "Click a color in palette to select it"
msgstr "Klicke auf eine Farbe in der Palette um sie auszuwählen"
#: src/components/HelpModal.jsx:66
#, javascript-format
msgid "Press ${ bindG } to toggle grid"
msgstr "Drücke ${ bindG } um das Raster ein- und auszuschalten"
#: src/components/HelpModal.jsx:67
msgid "Press ${ bindX } to toggle showing of pixel activity"
@ -104,7 +214,8 @@ msgstr "Drücke ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } zum navigieren"
#: src/components/HelpModal.jsx:72 src/components/HelpModal.jsx:83
#, javascript-format
msgid "Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move"
msgid ""
"Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move"
msgstr ""
"Drücke ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } zum "
"navigieren"
@ -112,7 +223,8 @@ msgstr ""
#: src/components/HelpModal.jsx:73
msgid "Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move"
msgstr ""
"Ziehe mit der ${ mouseSymbol } Maus oder ${ touchSymbol } wische zum navigieren"
"Ziehe mit der ${ mouseSymbol } Maus oder ${ touchSymbol } wische zum "
"navigieren"
#: src/components/HelpModal.jsx:74
#, javascript-format
@ -124,24 +236,32 @@ msgstr ""
#: src/components/HelpModal.jsx:75
msgid "Hold left ${ bindShift } for placing while moving mouse"
msgstr ""
"Halte die linke ${ bindShift } Taste gedrückt um Pixel unter der Maus zu setzen"
"Halte die linke ${ bindShift } Taste gedrückt um Pixel unter der Maus zu "
"setzen"
#: src/components/HelpModal.jsx:76
#, javascript-format
msgid ""
"Hold right ${ bindShift } for placing while moving mouse according to historical "
"view"
"Hold right ${ bindShift } for placing while moving mouse according to "
"historical view"
msgstr ""
"Halte die rechte ${ bindShift } Taste gedrückt um Pixel unter der Maus nach der "
"aktuellen historischen Ansicht zu setzen"
"Halte die rechte ${ bindShift } Taste gedrückt um Pixel unter der Maus nach "
"der aktuellen historischen Ansicht zu setzen"
#: src/components/HelpModal.jsx:77 src/components/HelpModal.jsx:88
#, 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/HelpModal.jsx:78 src/components/HelpModal.jsx:90
msgid ""
"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to select "
"current hovering color"
"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to "
"select current hovering color"
msgstr ""
"Klicke ${ mouseSymbol } die mittlere Maustaste oder ${ touchSymbol } tippe lange "
"um eine Farbe von der Leinwand auszuwählen"
"Klicke ${ mouseSymbol } die mittlere Maustaste oder ${ touchSymbol } tippe "
"lange um eine Farbe von der Leinwand auszuwählen"
#: src/components/HelpModal.jsx:84
msgid "Press ${ bindE } and ${ bindC } to fly up and down"
@ -150,35 +270,31 @@ msgstr "Drücke ${ bindE } oder ${ bindC } um hoch und runter zu fliegen"
#: src/components/HelpModal.jsx:85
#, 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"
msgstr ""
"${ mouseSymbol } Halte die linke Maustaste gedrückt und ziehe um zu rotieren"
#: src/components/HelpModal.jsx:86
#, javascript-format
msgid ""
"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse button "
"and drag to zoom"
"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse "
"button and drag to zoom"
msgstr ""
"${ mouseSymbol } Scrolle mit dem Mausrad oder halte ${ mouseSymbol } die mittlere "
"Maustaste gedrückt und ziehe um zu zoomen"
"${ mouseSymbol } Scrolle mit dem Mausrad oder halte ${ mouseSymbol } die "
"mittlere Maustaste gedrückt und ziehe um zu zoomen"
#: src/components/HelpModal.jsx:87
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/HelpModal.jsx:77 src/components/HelpModal.jsx:88
#, javascript-format
msgid "${ mouseSymbol } Left click or ${ touchSymbol } tap to place a pixel"
msgstr ""
"${ mouseSymbol } Linksklick oder ${ touchSymbol } tippe um ein Pixel zu platzieren"
"${ mouseSymbol } Halte die rechte Maustaste gedrückt und ziehe um dich zu "
"bewegen"
#: src/components/HelpModal.jsx:89
#, javascript-format
msgid ""
"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a pixel"
msgstr ""
"${ mouseSymbol } Rechtsklick oder ${ touchSymbol } tippe zweimal um ein Voxel zu "
"entfernen"
"${ mouseSymbol } Rechtsklick oder ${ touchSymbol } tippe zweimal um ein "
"Voxel zu entfernen"
#: src/components/HelpModal.jsx:92
msgid "Partners:"
@ -190,13 +306,13 @@ msgid ""
"This site is protected by reCAPTCHA and the Google ${ reCaptchaPP } and "
"${ reCaptchaTOS } apply."
msgstr ""
"Diese Seite ist mit Google reCaptcha geschützt und deren ${ reCaptchaPP } und "
"${ reCaptchaTOS } gelten."
"Diese Seite ist mit Google reCaptcha geschützt und deren ${ reCaptchaPP } "
"und ${ reCaptchaTOS } gelten."
#: src/components/HelpModal.jsx:103
msgid ""
"This site is protected by hCAPTCHA and its ${ hCaptchaPP } and ${ hCaptchaTOS } "
"apply."
"This site is protected by hCAPTCHA and its ${ hCaptchaPP } and "
"${ hCaptchaTOS } apply."
msgstr ""
"Diese Seite ist mit hCaptcha geschützt und deren ${ hCaptchaPP } und "
"${ hCaptchaTOS } gelten."
@ -205,125 +321,211 @@ msgstr ""
msgid "Welcome to PixelPlanet.fun"
msgstr "Willkommen auf PixelPlanet.fun"
#: src/components/HelpModal.jsx:47
#: src/components/UserAreaModal.jsx:33
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:"
#: src/components/UserAreaModal.jsx:42
msgid "I forgot my Password."
msgstr "Ich habe mein Passwort vergessen"
#: src/components/UserAreaModal.jsx:84
msgid "or register here:"
msgstr "oder registriere dich hier:"
#: src/components/UserAreaModal.jsx:85
msgid "Register"
msgstr "Registrieren"
#: src/components/UserAreaModal.jsx:123
msgid "Loading..."
msgstr "Lade..."
#: src/components/ForgotPasswordModal.jsx:20
#: src/components/RegisterModal.jsx:21 src/components/UserAreaModal.jsx:130
msgid "Consider joining us on Guilded:"
msgstr "Triff uns und andere Spieler auf guilded:"
#: src/components/RegisterModal.jsx:18
msgid "Register new account here"
msgstr "Registriere ein neues Konto hier"
#: src/components/RegisterModal.jsx:38
msgid "Register New Account"
msgstr "Registriere neues Konto"
#: src/components/SettingsModal.jsx:123
msgid "Show Grid"
msgstr "Zeige Raster"
#: src/components/SettingsModal.jsx:124
msgid "Turn on grid to highlight pixel borders."
msgstr "Aktiviere das Raster um Pixelgrenzen zu sehen."
#: src/components/SettingsModal.jsx:130
msgid "Show Pixel Activity"
msgstr "Zeige Pixelaktivität"
#: src/components/SettingsModal.jsx:131
msgid "Show circles where pixels are placed."
msgstr "Zeige Kreise wo Pixel von Spielern gesetzt werden"
#: src/components/SettingsModal.jsx:137
msgid "Disable Game Sounds"
msgstr "Deaktiviere Spiel Ton"
#: src/components/SettingsModal.jsx:139
msgid "All sound effects will be disabled."
msgstr "alle Toneffekte werden ausgeschaltet"
#: src/components/SettingsModal.jsx:145
msgid "Enable chat notifications"
msgstr "Aktiviere Chat Benachrichtigungen"
#: src/components/SettingsModal.jsx:146
msgid "Play a sound when new chat messages arrive"
msgstr "Spiele ein Geräusch wenn eine neue Chat Nachricht eintrifft"
#: src/components/SettingsModal.jsx:151
msgid "Auto Zoom In"
msgstr "Automaticher Zoom"
#: src/components/SettingsModal.jsx:153
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 requiremnts 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."
"Zoom in instead of placing a pixel when you tap the canvas and your zoom is "
"small."
msgstr ""
"Unsere standard Leinwand ist eine große Weltkarte. Pixel können überall gesetzen "
"werden, aber es kann nur eine begrenzte Anzahl and Pixels per Zeit platziert "
"werden. Die Vorraussetzungen und die Wartezeit sind im Auswahlmenu zu sehen "
"(Globus Taste am oberen Bildschirmrand). Manche Leinwände haben eine niedrigere "
"Wartezeit für ungesetzte Pixel im Vergleich zu von anderen Spielern gesetzte "
"Pixel. z.B. 4s/7s heißt dass man 4s für jedes neue Pixel warten muss, allerdings "
"7s wenn man über ein Pixel eines anderen Spielers setzt."
"Zoome rein anstatt ein Pixel zu setzen wenn auf kleineren Zoomlevel geklickt "
"wird."
#: src/components/HelpModal.jsx:51
#: src/components/SettingsModal.jsx:158
msgid "Compact Palette"
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"
#: src/components/SettingsModal.jsx:165
msgid "Potato Mode"
msgstr "Erdapfel Modus"
#: src/components/SettingsModal.jsx:166
msgid "For when you are playing on a potato."
msgstr "Wenn du auf einer Kartoffel spielst."
#: src/components/SettingsModal.jsx:171
msgid "Light Grid"
msgstr "Helles Raster"
#: src/components/SettingsModal.jsx:172
msgid "Show Grid in white instead of black."
msgstr "Zeige das Raster in weiß anstatt schwarz"
#: src/components/SettingsModal.jsx:179
msgid "Historical View"
msgstr "Historische Ansicht"
#: src/components/SettingsModal.jsx:180
msgid "Check out past versions of the canvas."
msgstr "Siehe vergangene Versionen der Leinwand"
#: src/components/SettingsModal.jsx:188
msgid "Themes"
msgstr "Themen"
#: src/components/SettingsModal.jsx:189
msgid "How pixelplanet should look like."
msgstr "Wähle aus wie pixelplanet aussehen soll"
#: src/components/ArchiveModal.jsx:20
msgid ""
"Higher zoomlevels take some time to update, the 3D globe gets updated at least "
"once per day."
"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 ""
"Die höheren Zoomlevel brauchen etwas Zeit um aktualisiert zu werden, der 3D "
"Globus wird mindestens einmal pro tag neu geladen."
#: src/components/HelpModal.jsx:57
#: src/components/ArchiveModal.jsx:22
msgid ""
"The bare map data that we use, together with converted OpenStreetMap tiles for "
"orientation, can be downloaded from mega.nz here: "
"Here we collect those canvases to archive them in a proper way (which is "
"currently just one)."
msgstr ""
"Die Kartendaten welche wir benutzen, zusammen mit konvertierten OpenStreetMap "
"Kacheln zur orientierung können auf mega.nz heruntergeladen werden: "
"Hier sammeln wir vergangene Leinwände um sie ordentlich zu archivieren (zur "
"Zeit nur eine)."
#: src/components/CanvasSwitchButton.jsx:20
msgid "Canvas Selection"
msgstr "Leinwand auswahl"
#: src/components/ArchiveModal.jsx:24
msgid "Political Compass Canvas"
msgstr "Politischer Kompass Leinwand"
#: src/components/Chat.jsx:143
msgid "Channel settings"
msgstr "Channel Einstellungen"
#: src/components/ArchiveModal.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 coolodwn 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/Chat.jsx:152
msgid "maximize"
msgstr "maximieren"
#: src/components/ArchiveModal.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 ""
"Wir haben uns entschieden sie in der Form eines Zeitraffers in verlustfrei "
"kodiertes webm zu archivieren. Eine Bildschirmaufnahme aus dem Video ergibt "
"eine perfekte 1:1 Abbildung der Leinwand zu dieser Zeit."
#: src/components/Chat.jsx:168
msgid "Start chatting here"
msgstr "Beginne hier zu chatten"
#: src/components/ArchiveModal.jsx:50
msgid "Canvas Archive"
msgstr "Leinwand Archiv"
#: src/components/Chat.jsx:200
msgid "Chat here"
msgstr "Chatte hier"
#: 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."
#: src/components/ChatButton.jsx:61
msgid "Close Chat"
msgstr "Schließe Chat"
#: src/components/ForgotPasswordModal.jsx:37
msgid "Restore my Password"
msgstr "Passwort wiederherstellen"
#: src/components/ChatButton.jsx:61
msgid "Open Chat"
msgstr "Öffne Chat"
#: src/components/ChatModal.jsx:35
msgid "Chat"
msgstr "Unterhaltung"
#: src/components/CoordinatesBox.jsx:26
msgid "Copy to Clipboard"
msgstr "Kopiere in die Zwischenablage"
#: src/components/LogInForm.jsx:104
msgid "Name or Email"
msgstr "Name oder Email"
#: src/components/DownloadButton.jsx:37
msgid "Make Screenshot"
msgstr "Erstelle eine Bildschirmaufnahme"
#: src/components/LogInForm.jsx:111
msgid "Password"
msgstr "Passwort"
#: src/components/ExpandMenuButton.jsx:19
msgid "Close Menu"
msgstr "Schließe Menü"
#: src/components/LogInForm.jsx:115
msgid "LogIn"
msgstr "Einloggen"
#: src/components/ExpandMenuButton.jsx:19
msgid "Open Menu"
msgstr "Öffne Menü"
#: 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/GlobeButton.jsx:31
msgid "Globe View"
msgstr "Globus Ansicht"
#: src/components/HelpButton.jsx:20
msgid "Help"
msgstr "Hilfe"
#: src/components/LogInButton.jsx:20
msgid "User Area"
msgstr "Spielerbereich"
#: src/components/OnlineBox.jsx:21
msgid "User online"
msgstr "Spieler anwesend"
#: src/components/OnlineBox.jsx:23
msgid "Pixel gesetzt"
msgstr "Pixel plaziert"
#: src/components/PalselButton.jsx:25
msgid "Close Palette"
msgstr "Schließe Palette"
#: src/components/PalselButton.jsx:25
msgid "Open Palette"
msgstr "Öffne Palette"
#: src/components/SettingsButton.jsx:20
msgid "Settings"
msgstr "Einstellungen"
#: src/components/HelpModal.jsx:15
#: src/components/HelpModal.jsx:15 src/components/SettingsModal.jsx:125
msgctxt "keybinds"
msgid "G"
msgstr ""
#: src/components/HelpModal.jsx:16
#: src/components/HelpModal.jsx:16 src/components/SettingsModal.jsx:132
msgctxt "keybinds"
msgid "X"
msgstr ""
#: src/components/HelpModal.jsx:17
#: src/components/HelpModal.jsx:17 src/components/SettingsModal.jsx:182
msgctxt "keybinds"
msgid "H"
msgstr ""
@ -338,6 +540,11 @@ msgctxt "keybinds"
msgid "Q"
msgstr ""
#: src/components/HelpModal.jsx:20
msgctxt "keybinds"
msgid "E"
msgstr ""
#: src/components/HelpModal.jsx:21
msgctxt "keybinds"
msgid "W"
@ -358,11 +565,6 @@ msgctxt "keybinds"
msgid "D"
msgstr ""
#: src/components/HelpModal.jsx:20
msgctxt "keybinds"
msgid "E"
msgstr ""
#: src/components/HelpModal.jsx:31
msgctxt "keybinds"
msgid "Shift"
@ -372,3 +574,8 @@ msgstr ""
msgctxt "keybinds"
msgid "C"
msgstr ""
#: src/components/SettingsModal.jsx:140
msgctxt "keybinds"
msgid "M"
msgstr ""

View File

@ -11,14 +11,6 @@ msgstr ""
msgid "Open Menu"
msgstr ""
#: src/components/OnlineBox.jsx:22
msgid "User online"
msgstr ""
#: src/components/OnlineBox.jsx:25
msgid "Pixel gesetzt"
msgstr ""
#: src/components/ChatButton.jsx:61
msgid "Close Chat"
msgstr ""
@ -27,6 +19,14 @@ msgstr ""
msgid "Open Chat"
msgstr ""
#: src/components/OnlineBox.jsx:22
msgid "User online"
msgstr ""
#: src/components/OnlineBox.jsx:25
msgid "Pixel gesetzt"
msgstr ""
#: src/components/CanvasSwitchButton.jsx:20
msgid "Canvas Selection"
msgstr ""
@ -39,12 +39,14 @@ msgstr ""
msgid "Make Screenshot"
msgstr ""
#: src/components/SettingsButton.jsx:20
msgid "Settings"
#: src/components/LogInButton.jsx:20
#: src/components/UserAreaModal.jsx:160
msgid "User Area"
msgstr ""
#: src/components/LogInButton.jsx:20
msgid "User Area"
#: src/components/SettingsButton.jsx:20
#: src/components/SettingsModal.jsx:267
msgid "Settings"
msgstr ""
#: src/components/HelpButton.jsx:20
@ -75,6 +77,14 @@ msgstr ""
msgid "Globe View"
msgstr ""
#: src/components/PalselButton.jsx:25
msgid "Close Palette"
msgstr ""
#: src/components/PalselButton.jsx:25
msgid "Open Palette"
msgstr ""
#: src/components/HelpModal.jsx:34
#: src/components/HelpModal.jsx:35
msgid "Privacy Policy"
@ -268,31 +278,205 @@ msgstr ""
msgid "Welcome to PixelPlanet.fun"
msgstr ""
#: src/components/PalselButton.jsx:25
msgid "Close Palette"
#: src/components/UserAreaModal.jsx:33
msgid "Login to access more features and stats."
msgstr ""
#: src/components/PalselButton.jsx:25
msgid "Open Palette"
#: src/components/UserAreaModal.jsx:35
msgid "Login with Mail:"
msgstr ""
#: src/components/UserAreaModal.jsx:42
msgid "I forgot my Password."
msgstr ""
#: src/components/UserAreaModal.jsx:84
msgid "or register here:"
msgstr ""
#: src/components/UserAreaModal.jsx:85
msgid "Register"
msgstr ""
#: src/components/UserAreaModal.jsx:123
msgid "Loading..."
msgstr ""
#: src/components/ForgotPasswordModal.jsx:20
#: src/components/RegisterModal.jsx:21
#: src/components/UserAreaModal.jsx:128
#: src/components/UserAreaModal.jsx:130
msgid "Consider joining us on Guilded:"
msgstr ""
#: src/components/RegisterModal.jsx:18
msgid "Register new account here"
msgstr ""
#: src/components/RegisterModal.jsx:38
msgid "Register New Account"
msgstr ""
#: src/components/SettingsModal.jsx:123
msgid "Show Grid"
msgstr ""
#: src/components/SettingsModal.jsx:124
msgid "Turn on grid to highlight pixel borders."
msgstr ""
#: src/components/SettingsModal.jsx:130
msgid "Show Pixel Activity"
msgstr ""
#: src/components/SettingsModal.jsx:131
msgid "Show circles where pixels are placed."
msgstr ""
#: src/components/SettingsModal.jsx:137
msgid "Disable Game Sounds"
msgstr ""
#: src/components/SettingsModal.jsx:139
msgid "All sound effects will be disabled."
msgstr ""
#: src/components/SettingsModal.jsx:145
msgid "Enable chat notifications"
msgstr ""
#: src/components/SettingsModal.jsx:146
msgid "Play a sound when new chat messages arrive"
msgstr ""
#: src/components/SettingsModal.jsx:151
msgid "Auto Zoom In"
msgstr ""
#: src/components/SettingsModal.jsx:153
msgid ""
"Zoom in instead of placing a pixel when you tap the canvas and your zoom is "
"small."
msgstr ""
#: src/components/SettingsModal.jsx:158
msgid "Compact Palette"
msgstr ""
#: src/components/SettingsModal.jsx:160
msgid "Display Palette in a compact form that takes less screen space."
msgstr ""
#: src/components/SettingsModal.jsx:165
msgid "Potato Mode"
msgstr ""
#: src/components/SettingsModal.jsx:166
msgid "For when you are playing on a potato."
msgstr ""
#: src/components/SettingsModal.jsx:171
msgid "Light Grid"
msgstr ""
#: src/components/SettingsModal.jsx:172
msgid "Show Grid in white instead of black."
msgstr ""
#: src/components/SettingsModal.jsx:179
msgid "Historical View"
msgstr ""
#: src/components/SettingsModal.jsx:180
msgid "Check out past versions of the canvas."
msgstr ""
#: src/components/SettingsModal.jsx:188
msgid "Themes"
msgstr ""
#: src/components/SettingsModal.jsx:189
msgid "How pixelplanet should look like."
msgstr ""
#: src/components/ArchiveModal.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/ArchiveModal.jsx:22
msgid ""
"Here we collect those canvases to archive them in a proper way (which is "
"currently just one)."
msgstr ""
#: src/components/ArchiveModal.jsx:24
msgid "Political Compass Canvas"
msgstr ""
#: src/components/ArchiveModal.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 coolodwn 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/ArchiveModal.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/ArchiveModal.jsx:50
msgid "Canvas Archive"
msgstr ""
#: src/components/ForgotPasswordModal.jsx:16
msgid "Enter your mail adress and we will send you a new password:"
msgstr ""
#: src/components/ForgotPasswordModal.jsx:37
msgid "Restore my Password"
msgstr ""
#: src/components/ChatModal.jsx:35
msgid "Chat"
msgstr ""
#: src/components/LogInForm.jsx:104
msgid "Name or Email"
msgstr ""
#: src/components/LogInForm.jsx:111
msgid "Password"
msgstr ""
#: src/components/LogInForm.jsx:115
msgid "LogIn"
msgstr ""
#: src/components/Rankings.jsx:49
msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC."
msgstr ""
#: src/components/HelpModal.jsx:15
#: src/components/SettingsModal.jsx:125
msgctxt "keybinds"
msgid "G"
msgstr ""
#: src/components/HelpModal.jsx:16
#: src/components/SettingsModal.jsx:132
msgctxt "keybinds"
msgid "X"
msgstr ""
#: src/components/HelpModal.jsx:17
#: src/components/SettingsModal.jsx:182
msgctxt "keybinds"
msgid "H"
msgstr ""
@ -340,4 +524,9 @@ msgstr ""
#: src/components/HelpModal.jsx:32
msgctxt "keybinds"
msgid "C"
msgstr ""
#: src/components/SettingsModal.jsx:140
msgctxt "keybinds"
msgid "M"
msgstr ""

View File

@ -5,6 +5,7 @@
/* eslint-disable max-len */
import React from 'react';
import { t } from 'ttag';
const imageStyle = {
maxWidth: '20%',
@ -16,19 +17,19 @@ const imageStyle = {
const ArchiveModal = () => (
<p style={{ textAlign: 'center', paddingLeft: '5%', paddingRight: '5%' }}>
<p className="modaltext">
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&apos;t worth being kept active, we decide to remove them.<br />
Here we collect those canvases to archive them in a proper way (which is currently just one).
{t`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&apos;t worth being kept active, we decide to remove them.`}<br />
{t`Here we collect those canvases to archive them in a proper way (which is currently just one).`}
</p>
<p className="modaltitle">Political Compass Canvas</p>
<p className="modaltitle">{t`Political Compass Canvas`}</p>
<img
style={imageStyle}
alt="political-compass"
src="https://storage.pixelplanet.fun/compass-preview.png"
/>
<p className="modaltext">
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 coolodwn and 60s stacking. It got launched on May 11th and remained active for months till it got shut down on November 30th.<br />
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.
{t`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 coolodwn and 60s stacking. It got launched on May 11th and remained active for months till it got shut down on November 30th.`}<br />
{t`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.`}
</p>
<p>
Timelapse:
@ -46,7 +47,7 @@ const ArchiveModal = () => (
const data = {
content: ArchiveModal,
title: 'Canvas Archive',
title: t`Canvas Archive`,
};
export default data;

View File

@ -5,6 +5,7 @@
import React from 'react';
import { connect } from 'react-redux';
import { t } from 'ttag';
import { THREE_CANVAS_HEIGHT } from '../core/constants';
import { selectCanvas } from '../actions';
@ -42,25 +43,25 @@ const CanvasItem = ({ canvasId, canvas, changeCanvas }) => (
<p className="modalcvtext">
<span className="modaltitle">{canvas.title}</span><br />
<span className="modalinfo">{canvas.desc}</span><br />
Cooldown:
&nbsp;
{t`Cooldown`}:&nbsp;
<span className="modalinfo">
{(canvas.bcd !== canvas.pcd)
? <span> {canvas.bcd / 1000}s / {canvas.pcd / 1000}s</span>
: <span> {canvas.bcd / 1000}s</span>}
</span><br />
Stacking till
{t`Stacking till`}:&nbsp;
<span className="modalinfo"> {canvas.cds / 1000}s</span><br />
Ranked:
&nbsp;
{t`Ranked`}:&nbsp;
<span className="modalinfo">{(canvas.ranked) ? 'Yes' : 'No'}</span><br />
{(canvas.req !== -1) ? <span>Requirements:<br /></span> : null}
{(canvas.req !== -1) ? <span>{t`Requirements`}:<br /></span> : null}
<span className="modalinfo">
{(canvas.req !== -1) ? <span>User Account </span> : null}
{(canvas.req > 0) ? <span> and {canvas.req} Pixels set</span> : null}
{(canvas.req !== -1) ? <span>{t`User Account`} </span> : null}
{(canvas.req > 0)
? <span> {t`and ${canvas.req} Pixels set`}</span>
: null}
</span>
{(canvas.req !== -1) ? <br /> : null}
Dimensions:
{t`Dimensions`}:&nbsp;
<span className="modalinfo"> {canvas.size} x {canvas.size}
{(canvas.v)
? <span> x {THREE_CANVAS_HEIGHT} Voxels</span>

View File

@ -5,6 +5,7 @@
import React from 'react';
import { connect } from 'react-redux';
import { t } from 'ttag';
import CanvasItem from './CanvasItem';
import { showArchiveModal } from '../actions';
@ -25,24 +26,23 @@ const CanvasSelectModal = ({
}}
>
<p className="modaltext">
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&nbsp;
{t`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:`}&nbsp;
<span
role="button"
tabIndex={0}
className="modallink"
onClick={showArchive}
>here</span>.
>{t`Archive`}</span>)
</p>
{
Object.keys(canvases).map((canvasId) => (
(canvases[canvasId].hid && !showHiddenCanvases)
? null
: <CanvasItem canvasId={canvasId} canvas={canvases[canvasId]} />
))
}
Object.keys(canvases).map((canvasId) => (
(canvases[canvasId].hid && !showHiddenCanvases)
? null
: <CanvasItem canvasId={canvasId} canvas={canvases[canvasId]} />
))
}
</p>
);
@ -64,7 +64,7 @@ function mapStateToProps(state: State) {
const data = {
content: connect(mapStateToProps, mapDispatchToProps)(CanvasSelectModal),
title: 'Canvas Selection',
title: t`Canvas Selection`,
};
export default data;

View File

@ -200,6 +200,7 @@ const Chat = ({
placeholder={t`Chat here`}
/>
<button
id="sendbtn"
style={{ flexGrow: 0 }}
type="submit"
>

View File

@ -4,6 +4,7 @@
*/
import React from 'react';
import { t } from 'ttag';
import Chat from './Chat';
@ -31,7 +32,7 @@ const ChatModal = () => (
const data = {
content: ChatModal,
title: 'Chat',
title: t`Chat`,
};
export default data;

View File

@ -7,6 +7,7 @@ import React, { useState, useEffect } from 'react';
import { connect } from 'react-redux';
import fileDownload from 'js-file-download';
import { utils, applyPalette } from 'image-q';
import { jt, t } from 'ttag';
import type { State } from '../reducers';
import printGIMPPalette from '../core/exportGPL';
@ -261,9 +262,16 @@ function Converter({
aa: scalingAA,
} = scaleData;
const gimpLink = <a href="https://www.gimp.org">GIMP</a>;
const starhouseLink = (
<a href="https://twitter.com/starhousedev">
starhouse
</a>
);
return (
<p style={{ textAlign: 'center' }}>
<p className="modalcotext">Choose Canvas:&nbsp;
<p className="modalcotext">{t`Choose Canvas`}:&nbsp;
<select
onChange={(e) => {
const sel = e.target;
@ -289,9 +297,9 @@ function Converter({
}
</select>
</p>
<h3 className="modaltitle">Palette Download</h3>
<h3 className="modaltitle">{t`Palette Download`}</h3>
<p className="modalcotext">
Palette for <a href="https://www.gimp.org">GIMP</a>:&nbsp;
{jt`Palette for ${gimpLink}`}:&nbsp;
<button
type="button"
style={{ display: 'inline' }}
@ -308,11 +316,12 @@ function Converter({
>
Download
</button>
<p>Credit for the Palette of the Moon goes to&nbsp;
<a href="https://twitter.com/starhousedev">starhouse</a>.</p>
<p>
{jt`Credit for the Palette of the Moon goes to ${starhouseLink}.`}
</p>
</p>
<h3 className="modaltitle">Image Converter</h3>
<p className="modalcotext">Convert an image to canvas colors</p>
<h3 className="modaltitle">{t`Image Converter`}</h3>
<p className="modalcotext">{t`Convert an image to canvas colors`}</p>
<input
type="file"
id="imgfile"
@ -323,7 +332,7 @@ function Converter({
readFile(file, selectFile, setScaleData);
}}
/>
<p className="modalcotext">Choose Strategy:&nbsp;
<p className="modalcotext">{t`Choose Strategy`}:&nbsp;
<select
onChange={(e) => {
const sel = e.target;
@ -350,7 +359,7 @@ function Converter({
}
</select>
</p>
<p className="modalcotext">Choose Color Mode:&nbsp;
<p className="modalcotext">{t`Choose Color Mode`}:&nbsp;
<select
onChange={(e) => {
const sel = e.target;
@ -388,7 +397,7 @@ function Converter({
});
}}
/>
Add Grid (uncheck if you need a 1:1 template)
{t`Add Grid (uncheck if you need a 1:1 template)`}
</p>
{(gridEnabled)
? (
@ -411,9 +420,9 @@ function Converter({
});
}}
/>
Light Grid
{t`Light Grid`}
</p>
<span className="modalcotext">Offset X:&nbsp;
<span className="modalcotext">{t`Offset`} X:&nbsp;
<input
type="number"
step="1"
@ -429,7 +438,7 @@ function Converter({
}}
/>&nbsp;
</span>
<span className="modalcotext">Offset Y:&nbsp;
<span className="modalcotext">{t`Offset`} Y:&nbsp;
<input
type="number"
step="1"
@ -459,7 +468,7 @@ function Converter({
});
}}
/>
Scale Image
{t`Scale Image`}
</p>
{(scalingEnabled)
? (
@ -471,7 +480,7 @@ function Converter({
display: 'inline-block',
}}
>
<span className="modalcotext">Width:&nbsp;
<span className="modalcotext">{t`Width`}:&nbsp;
<input
type="number"
step="1"
@ -501,7 +510,7 @@ function Converter({
}}
/>&nbsp;
</span>
<span className="modalcotext">Height:&nbsp;
<span className="modalcotext">{t`Height`}:&nbsp;
<input
type="number"
step="1"
@ -539,7 +548,7 @@ function Converter({
selectScaleKeepRatio(e.target.checked);
}}
/>
Keep Ratio
{t`Keep Ratio`}
</p>
<p style={{ fontHeight: 16 }} className="modalcotext">
<input
@ -552,7 +561,7 @@ function Converter({
});
}}
/>
Anti Aliasing
{t`Anti Aliasing`}
</p>
<button
type="button"
@ -566,7 +575,7 @@ function Converter({
}
}}
>
Reset
{t`Reset`}
</button>
</div>
)
@ -585,7 +594,7 @@ function Converter({
type="button"
onClick={downloadOutput}
>
Download Template
{t`Download Template`}
</button>
{(typeof ClipboardItem === 'undefined')
? null
@ -597,7 +606,7 @@ function Converter({
copyCanvasToClipboard(output);
}}
>
Copy to Clipboard
{t`Copy to Clipboard`}
</button>
)}
</div>

View File

@ -13,7 +13,7 @@ import NewPasswordForm from './NewPasswordForm';
const ForgotPasswordModal = ({ login }) => (
<p style={{ paddingLeft: '5%', paddingRight: '5%' }}>
<p className="modaltext">
Enter your mail adress and we will send you a new password:
{t`Enter your mail adress and we will send you a new password:`}
</p><br />
<p style={{ textAlign: 'center' }}>
<NewPasswordForm back={login} />
@ -34,7 +34,7 @@ function mapDispatchToProps(dispatch) {
const data = {
content: connect(null, mapDispatchToProps)(ForgotPasswordModal),
title: 'Restore my Password',
title: t`Restore my Password`,
};
export default data;

View File

@ -4,6 +4,8 @@
*/
import React from 'react';
import { connect } from 'react-redux';
import { t } from 'ttag';
import {
validateEMail, validateName, validatePassword, parseAPIresponse,
} from '../utils/validation';
@ -99,18 +101,18 @@ class LogInForm extends React.Component {
style={inputStyles}
onChange={(evt) => this.setState({ nameoremail: evt.target.value })}
type="text"
placeholder="Name or Email"
placeholder={t`Name or Email`}
/><br />
<input
value={password}
style={inputStyles}
onChange={(evt) => this.setState({ password: evt.target.value })}
type="password"
placeholder="Password"
placeholder={t`Password`}
/>
<p>
<button type="submit">
{(submitting) ? '...' : 'LogIn'}
{(submitting) ? '...' : t`LogIn`}
</button>
</p>
</form>

View File

@ -9,6 +9,7 @@ import React from 'react';
import Modal from 'react-modal';
import { connect } from 'react-redux';
import { MdClose } from 'react-icons/md';
import { t } from 'ttag';
import {
hideModal,
@ -56,6 +57,7 @@ const ModalRoot = ({ modalType, modalOpen, close }) => {
className="ModalClose"
role="button"
label="close"
title={t`Close`}
tabIndex={-1}
><MdClose /></div>
<SpecificModal />

View File

@ -3,7 +3,10 @@
* @flow
*/
/* eslint-disable max-len */
import React from 'react';
import { t } from 'ttag';
import TotalRankings from './TotalRankings';
import DailyRankings from './DailyRankings';
@ -31,7 +34,7 @@ class Rankings extends React.Component {
onClick={() => {
this.setState({ orderDaily: false });
}}
>Total</span> |
>{t`Total`}</span> |
<span
role="button"
tabIndex={-1}
@ -39,11 +42,11 @@ class Rankings extends React.Component {
(orderDaily) ? 'modallinkselected' : 'modallink'
}
onClick={() => { this.setState({ orderDaily: true }); }}
>Daily</span>
>{t`Daily`}</span>
</p>
{(orderDaily) ? <DailyRankings /> : <TotalRankings />}
<p className="modaltext">
Ranking updates every 5 min. Daily rankings get reset at midnight UTC.
{t`Ranking updates every 5 min. Daily rankings get reset at midnight UTC.`}
</p>
</div>
);

View File

@ -15,7 +15,7 @@ import SignUpForm from './SignUpForm';
const RegisterModal = ({ login }) => (
<p style={{ paddingLeft: '5%', paddingRight: '5%' }}>
<p className="modaltext">Register new account here</p><br />
<p className="modaltext">{t`Register new account here`}</p><br />
<p style={{ textAlign: 'center' }}>
<SignUpForm back={login} />
<p>{t`Consider joining us on Guilded:`}&nbsp;
@ -35,7 +35,7 @@ function mapDispatchToProps(dispatch) {
const data = {
content: connect(null, mapDispatchToProps)(RegisterModal),
title: 'Register New Account',
title: t`Register New Account`,
};
export default data;

View File

@ -5,6 +5,7 @@
import React from 'react';
import { connect } from 'react-redux';
import { c, t } from 'ttag';
import MdToggleButtonHover from './MdToggleButtonHover';
import {
@ -119,73 +120,73 @@ function SettingsModal({
return (
<p style={{ paddingLeft: '5%', paddingRight: '5%', paddingTop: 30 }}>
<SettingsItem
title="Show Grid"
description="Turn on grid to highlight pixel borders."
keyBind="G"
title={t`Show Grid`}
description={t`Turn on grid to highlight pixel borders.`}
keyBind={c('keybinds').t`G`}
value={isGridShown}
onToggle={onToggleGrid}
/>
<SettingsItem
title="Show Pixel Activity"
description="Show circles where pixels are placed."
keyBind="X"
title={t`Show Pixel Activity`}
description={t`Show circles where pixels are placed.`}
keyBind={c('keybinds').t`X`}
value={isPixelNotifyShown}
onToggle={onTogglePixelNotify}
/>
<SettingsItem
title="Disable Game Sounds"
title={t`Disable Game Sounds`}
// eslint-disable-next-line max-len
description="All sound effects will be disabled."
keyBind="M"
description={t`All sound effects will be disabled.`}
keyBind={c('keybinds').t`M`}
value={isMuted}
onToggle={onMute}
/>
<SettingsItem
title="Enable chat notifications"
description="Play a sound when new chat messages arrive"
title={t`Enable chat notifications`}
description={t`Play a sound when new chat messages arrive`}
value={chatNotify}
onToggle={onToggleChatNotify}
/>
<SettingsItem
title="Auto Zoom In"
title={t`Auto Zoom In`}
// eslint-disable-next-line max-len
description="Zoom in instead of placing a pixel when you tap the canvas and your zoom is small."
description={t`Zoom in instead of placing a pixel when you tap the canvas and your zoom is small.`}
value={autoZoomIn}
onToggle={onToggleAutoZoomIn}
/>
<SettingsItem
title="Compact Palette"
title={t`Compact Palette`}
// eslint-disable-next-line max-len
description="Display Palette in a compact form that takes less screen space."
description={t`Display Palette in a compact form that takes less screen space.`}
value={compactPalette}
onToggle={onToggleCompactPalette}
/>
<SettingsItem
title="Potato Mode"
description="For when you are playing on a potato."
title={t`Potato Mode`}
description={t`For when you are playing on a potato.`}
value={isPotato}
onToggle={onTogglePotatoMode}
/>
<SettingsItem
title="Light Grid"
description="Show Grid in white instead of black."
title={t`Light Grid`}
description={t`Show Grid in white instead of black.`}
value={isLightGrid}
onToggle={onToggleLightGrid}
/>
{ (window.backupurl)
? (
<SettingsItem
title="Historical View"
description="Check out past versions of the canvas."
title={t`Historical View`}
description={t`Check out past versions of the canvas.`}
value={isHistoricalView}
keyBind="H"
keyBind={c('keybinds').t`H`}
onToggle={onToggleHistoricalView}
/>
) : null }
{(typeof window.availableStyles !== 'undefined') && (
<SettingsItemSelect
title="Themes"
description="How pixelplanet should look like."
title={t`Themes`}
description={t`How pixelplanet should look like.`}
values={Object.keys(window.availableStyles)}
selected={selectedStyle}
onSelect={onSelectStyle}
@ -263,7 +264,7 @@ function mapDispatchToProps(dispatch) {
const data = {
content: connect(mapStateToProps, mapDispatchToProps)(SettingsModal),
title: 'Settings',
title: t`Settings`,
};
export default data;

View File

@ -5,6 +5,7 @@
import React from 'react';
import { connect } from 'react-redux';
import { t } from 'ttag';
import type { State } from '../reducers';
@ -53,31 +54,31 @@ class UserArea extends React.Component {
<p style={{ textAlign: 'center' }}>
<UserMessages />
<Stat
text="Todays Placed Pixels"
text={t`Todays Placed Pixels`}
value={stats.dailyTotalPixels}
/>
<Stat
text="Daily Rank"
text={t`Daily Rank`}
value={stats.dailyRanking}
rank
/>
<Stat
text="Placed Pixels"
text={t`Placed Pixels`}
value={stats.totalPixels}
/>
<Stat
text="Total Rank"
text={t`Total Rank`}
value={stats.ranking}
rank
/>
<p className="modaltext">
<p>Your name is: {name}</p>(
<p>{t`Your name is: ${name}`}</p>(
<span
role="button"
tabIndex={-1}
className="modallink"
onClick={logout}
> Log out</span> |
> {t`Log out`}</span> |
<span
role="button"
tabIndex={-1}
@ -89,7 +90,7 @@ class UserArea extends React.Component {
deleteAccountExtended: false,
socialSettingsExtended: false,
})}
> Change Username</span> |
> {t`Change Username`}</span> |
{(mailreg)
&& (
<span>
@ -104,7 +105,7 @@ class UserArea extends React.Component {
deleteAccountExtended: false,
socialSettingsExtended: false,
})}
> Change Mail</span> |
> {t`Change Mail`}</span> |
</span>
)}
<span
@ -118,7 +119,7 @@ class UserArea extends React.Component {
deleteAccountExtended: false,
socialSettingsExtended: false,
})}
> Change Password</span> |
> {t`Change Password`}</span> |
<span
role="button"
tabIndex={-1}
@ -130,7 +131,7 @@ class UserArea extends React.Component {
deleteAccountExtended: true,
socialSettingsExtended: false,
})}
> Delete Account</span> )
> {t`Delete Account`}</span> )
<br />(
<span
role="button"
@ -143,7 +144,7 @@ class UserArea extends React.Component {
deleteAccountExtended: false,
socialSettingsExtended: true,
})}
> Social Settings</span> )
> {t`Social Settings`}</span> )
</p>
<p className="modaltext" />
{(changePasswdExtended)

View File

@ -29,16 +29,18 @@ const logoStyle = {
const LogInArea = ({ register, forgotPassword, me }) => (
<p style={{ textAlign: 'center' }}>
<p className="modaltext">Login to access more features and stats.</p><br />
<h2>Login with Mail:</h2>
<p className="modaltext">
{t`Login to access more features and stats.`}
</p><br />
<h2>{t`Login with Mail:`}</h2>
<LogInForm me={me} />
<p
className="modallink"
onClick={forgotPassword}
role="presentation"
>
I forgot my Password.</p>
<h2>or login with:</h2>
{t`I forgot my Password.`}</p>
<h2>{t`or login with:`}</h2>
<a href="./api/auth/discord">
<img
style={logoStyle}
@ -79,8 +81,8 @@ const LogInArea = ({ register, forgotPassword, me }) => (
alt="Reddit"
/>
</a>
<h2>or register here:</h2>
<button type="button" onClick={register}>Register</button>
<h2>{t`or register here:`}</h2>
<button type="button" onClick={register}>{t`Register`}</button>
</p>
);
@ -102,23 +104,23 @@ const UserAreaModal = ({
)
: (
<Tabs>
<div label="Profile">
<div label={t`Profile`}>
<UserArea
setName={setUserName}
setMailreg={setUserMailreg}
/>
</div>
<div label="Ranking">
<div label={t`Ranking`}>
<Rankings />
</div>
<div label="Converter">
<div label={t`Converter`}>
<Suspense fallback={<div>Loading...</div>}>
<Converter />
</Suspense>
</div>
{userlvl && (
<div label={(userlvl === 1) ? 'Admintools' : 'Modtools'}>
<Suspense fallback={<div>Loading...</div>}>
<div label={(userlvl === 1) ? t`Admintools` : t`Modtools`}>
<Suspense fallback={<div>{t`Loading...`}</div>}>
<Admintools />
</Suspense>
</div>
@ -155,7 +157,7 @@ function mapStateToProps(state: State) {
const data = {
content: connect(mapStateToProps, mapDispatchToProps)(UserAreaModal),
title: 'User Area',
title: t`User Area`,
};
export default data;

View File

@ -90,6 +90,12 @@ a:hover {
padding: 0.5rem 0.75rem;
}
.tab-list-item:hover {
background-color: #6d6d6d;
border: solid #ccc;
border-width: 1px 1px 0 1px;
}
.tab-list-active {
background-color: white;
border: solid #ccc;
@ -519,7 +525,7 @@ tr:nth-child(even) {
height: 22px;
}
.chn.selected, .chn:hover, .channelbtn.selected, .channelbtn:hover {
.chn.selected, .chn:hover, .channelbtn.selected, .channelbtn:hover, #sendbtn:hover {
cursor: pointer;
background-color: #c9c9c9;
}