diff --git a/i18n/da.po b/i18n/da.po new file mode 100644 index 00000000..0d6d4ae7 --- /dev/null +++ b/i18n/da.po @@ -0,0 +1,1570 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: da\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 3.2.2\n" + +#: src/controls/keypress.js:41 +#, javascript-format +msgid "Switched to ${ canvasName }" +msgstr "Skiftede til ${ canvasName }" + +#: src/controls/keypress.js:64 +msgid "Grid ON" +msgstr "Gitter På" + +#: src/controls/keypress.js:65 +msgid "Grid OFF" +msgstr "Gitter Fra" + +#: src/controls/keypress.js:75 +msgid "Pixel Notify ON" +msgstr "Pixel Notificer På" + +#: src/controls/keypress.js:76 +msgid "Pixel Notify OFF" +msgstr "Pixel Notificer Fra" + +#: src/controls/keypress.js:81 +msgid "Muted Sound" +msgstr "Stummet Lyd" + +#: src/controls/keypress.js:82 +msgid "Unmuted Sound" +msgstr "Ustummet Lyd" + +#: src/components/CoordinatesBox.jsx:28 src/components/GetIID.jsx:51 +#: src/controls/keypress.js:88 +msgid "Copied!" +msgstr "Kopieret!" + +#: src/controls/keypress.js:94 +msgid "Show Hidden Canvases" +msgstr "Vis Gemte Kanvasser" + +#: src/controls/keypress.js:95 +msgid "Hide Hidden Canvases" +msgstr "Skjul Skjulte Kanvasser" + +#: src/ui/PixelTransferController.js:63 +msgid "Error :(" +msgstr "Fejl :(" + +#: src/ui/PixelTransferController.js:64 +msgid "Didn't get an answer from pixelplanet. Maybe try to refresh?" +msgstr "Fik ikke et svar fra pixelplanet. Måske prøv at genindlæse?" + +#: src/ui/PixelTransferController.js:96 +msgid "Invalid Canvas" +msgstr "Ugyldig Kanvas" + +#: src/ui/PixelTransferController.js:97 +msgid "This canvas doesn't exist" +msgstr "Dette Kanvas existerer ikke" + +#: src/ui/PixelTransferController.js:100 src/ui/PixelTransferController.js:104 +#: src/ui/PixelTransferController.js:108 +msgid "Invalid Coordinates" +msgstr "Ugyldige Koordinater" + +#: src/ui/PixelTransferController.js:101 +msgid "x out of bounds" +msgstr "x ud af grænsen" + +#: src/ui/PixelTransferController.js:105 +msgid "y out of bounds" +msgstr "y ud af grænsen" + +#: src/ui/PixelTransferController.js:109 +msgid "z out of bounds" +msgstr "z ud af grænsen" + +#: src/ui/PixelTransferController.js:112 +msgid "Wrong Color" +msgstr "Forkerte Farve" + +#: src/ui/PixelTransferController.js:113 +msgid "Invalid color selected" +msgstr "Ugyldig farve valgt" + +#: src/ui/PixelTransferController.js:116 +msgid "Just for registered Users" +msgstr "Kun for registrerede Brugere" + +#: src/ui/PixelTransferController.js:117 +msgid "You have to be logged in to place on this canvas" +msgstr "Du har brug for at være logget in for at placere på dette kanvas" + +#: src/ui/PixelTransferController.js:120 +msgid "Place more :)" +msgstr "Placer mere :)" + +#: src/ui/PixelTransferController.js:122 +msgid "You can not access this canvas yet. You need to place more pixels" +msgstr "" +"Du kan ikke få adgang til dette kanvas endnu. Du har brug for at placere " +"flere pixels" + +#: src/ui/PixelTransferController.js:125 +msgid "Pixel protected!" +msgstr "Pixel beskyttet!" + +#: src/ui/PixelTransferController.js:132 +msgid "Please prove that you are human" +msgstr "Venligst bevis at du er et menneske" + +#: src/ui/PixelTransferController.js:136 +msgid "No Proxies Allowed :(" +msgstr "Ingen Proxier Tilladt :(" + +#: src/ui/PixelTransferController.js:137 +msgid "You are using a Proxy." +msgstr "Du bruger en Proxy." + +#: src/ui/PixelTransferController.js:140 +msgid "Not allowed" +msgstr "Ikke tilladt" + +#: src/ui/PixelTransferController.js:141 +msgid "Just the Top10 of yesterday can place here" +msgstr "Kun de Top10 fra i går kan placere her" + +#: src/ui/PixelTransferController.js:144 +msgid "You are weird" +msgstr "Du er mærkelig" + +#: src/ui/PixelTransferController.js:146 +msgid "" +"Server got confused by your pixels. Are you playing on multiple devices?" +msgstr "Server blev forvirret af dine pixels. Spiller du på flere enheder?" + +#: src/ui/PixelTransferController.js:149 +msgid "Banned" +msgstr "Bannet" + +#: src/ui/PixelTransferController.js:153 +msgid "Range Banned" +msgstr "Rækkevide Forbudt" + +#: src/ui/PixelTransferController.js:154 +msgid "Your Internet Provider is banned from playing this game" +msgstr "Din Internetudbyder er forbudt for at spille dette spil" + +#: src/ui/PixelTransferController.js:157 +msgid "Timeout" +msgstr "Timeout" + +#: src/ui/PixelTransferController.js:159 +msgid "" +"Didn't get an answer from pixelplanet. Maybe try to refresh if problem " +"persists?" +msgstr "" +"Fik ikke et svar fra pixelplanet. Måske prøv at genindlæse hvis problemet " +"vedvarer?" + +#: src/ui/PixelTransferController.js:162 +msgid "Weird" +msgstr "Underligt" + +#: src/ui/PixelTransferController.js:163 +msgid "Couldn't set Pixel" +msgstr "Kun ikke placere Pixel" + +#: src/ui/PixelTransferController.js:168 +#, javascript-format +msgid "Error ${ retCode }" +msgstr "Fejl ${ retCode }" + +#: src/ui/renderer.js:35 +msgid "Canvas Error" +msgstr "Kanvas Fejl" + +#: src/ui/renderer.js:36 +msgid "Can't render 3D canvas, do you have WebGL2 disabled?" +msgstr "Kan ikke gengive 3D-Kanvas, har du WebGL2 deaktiveret?" + +#: src/components/BanInfo.jsx:136 src/store/actions/index.js:7 +msgid "OK" +msgstr "OK" + +#: src/store/actions/fetch.js:55 +msgid "You made too many requests" +msgstr "Du lavede for mange anmodninger" + +#: src/store/actions/fetch.js:59 +#, javascript-format +msgid "try again after ${ ti }min" +msgstr "prøv igen efter ${ ti }min" + +#: src/store/actions/fetch.js:70 +msgid "Connection error ${ code } :(" +msgstr "Forbindelse fejl ${ code } :(" + +#: src/store/actions/fetch.js:103 src/store/actions/fetch.js:129 +msgid "Could not connect to server, please try again later :(" +msgstr "Kun ikke forbinde til server, prøv venligst igen senere :(" + +#: src/store/actions/fetch.js:151 src/store/actions/fetch.js:170 +#: src/store/actions/fetch.js:189 src/store/actions/fetch.js:208 +#: src/store/actions/fetch.js:227 +msgid "Unknown Error" +msgstr "Ukendt Fejl" + +#: src/store/actions/fetch.js:237 +msgid "Server answered with gibberish :(" +msgstr "Server svarede med volapyk :(" + +#: src/store/middleware/notifications.js:33 +msgid "Your next pixels are ready" +msgstr "Dine næste pixels er klar" + +#: src/store/middleware/notifications.js:37 +msgid "You can now place more on pixelplanet.fun :)" +msgstr "Du kan nu placere mere på pixelplanet.fun :)" + +#: src/store/middleware/notifications.js:54 +msgid "mentioned you" +msgstr "nævnte dig" + +#: src/store/middleware/notifications.js:58 +msgid "You have new messages in chat" +msgstr "Du har nye beskeder i chat" + +#: src/components/Converter.jsx:561 src/components/CoordinatesBox.jsx:31 +#: src/components/ModWatchtools.jsx:371 +msgid "Copy to Clipboard" +msgstr "Kopier til Klipboard" + +#: src/components/OnlineBox.jsx:40 +msgid "Online Users on Canvas" +msgstr "Online Brugere på Kanvas" + +#: src/components/OnlineBox.jsx:47 +msgid "Total Online Users" +msgstr "Online Brugere i alt" + +#: src/components/OnlineBox.jsx:55 +msgid "Pixels placed" +msgstr "Pixels placeret" + +#: src/components/buttons/ChatButton.jsx:88 +msgid "Close Chat" +msgstr "Luk Chat" + +#: src/components/buttons/ChatButton.jsx:88 +msgid "Open Chat" +msgstr "Åben Chat" + +#: src/components/buttons/CanvasSwitchButton.jsx:20 +#: src/components/windows/index.js:19 +msgid "Canvas Selection" +msgstr "Kanvas Udvælgelse" + +#: src/components/buttons/ExpandMenuButton.jsx:22 +msgid "Close Menu" +msgstr "Luk Menu" + +#: src/components/buttons/ExpandMenuButton.jsx:22 +msgid "Open Menu" +msgstr "Åben Menu" + +#: src/components/HistorySelect.jsx:144 +msgid "Loading" +msgstr "Indlæser" + +#: src/components/HistorySelect.jsx:145 +msgid "Select Date above" +msgstr "Vælg Dato Ovenfor" + +#: src/components/Admintools.jsx:103 src/components/ModCanvastools.jsx:222 +#: src/components/ModWatchtools.jsx:118 src/components/Window.jsx:157 +#: src/components/Window.jsx:260 +#: src/components/contextmenus/ChannelContextMenu.jsx:59 +msgid "Close" +msgstr "Luk" + +#: src/components/Window.jsx:173 +msgid "PopUp" +msgstr "PopUp" + +#: src/components/Window.jsx:184 +msgid "Restore" +msgstr "Gendan" + +#: src/components/Window.jsx:221 +msgid "Clone" +msgstr "Klon" + +#: src/components/Window.jsx:229 +msgid "Move" +msgstr "Bevæg" + +#: src/components/Window.jsx:252 +msgid "Maximize" +msgstr "Maximer" + +#: src/components/Window.jsx:268 +msgid "Resize" +msgstr "Ændre størrelse" + +#: src/components/buttons/DownloadButton.jsx:36 +msgid "Make Screenshot" +msgstr "Lav Skærmbillede" + +#: src/components/buttons/LogInButton.jsx:20 src/components/windows/index.js:15 +msgid "User Area" +msgstr "Bruger Område" + +#: src/components/buttons/PalselButton.jsx:30 +msgid "Close Palette" +msgstr "Luk Palet" + +#: src/components/buttons/PalselButton.jsx:30 +msgid "Open Palette" +msgstr "Åben" + +#: src/components/buttons/GlobeButton.jsx:34 +msgid "Globe View" +msgstr "Globus Visning" + +#: src/components/BanInfo.jsx:75 src/components/buttons/HelpButton.jsx:20 +#: src/components/windows/index.js:13 +msgid "Help" +msgstr "Hjælp" + +#: src/components/buttons/SettingsButton.jsx:21 +#: src/components/windows/index.js:14 +msgid "Settings" +msgstr "Indstillinger" + +#: src/components/windows/index.js:16 +msgid "Registration" +msgstr "Registering" + +#: src/components/windows/index.js:17 +msgid "Forgot Password" +msgstr "Glemt Adgangskode" + +#: src/components/windows/index.js:18 +msgid "Chat" +msgstr "Chat" + +#: src/components/windows/index.js:20 +msgid "Canvas Archive" +msgstr "Kanvas Arkiv" + +#: src/components/GlobalCaptcha.jsx:47 +msgid "You took too long, try again." +msgstr "Du tog for lang tid, prøv igen." + +#: src/components/GlobalCaptcha.jsx:50 +msgid "You failed your captcha" +msgstr "Du fejlede captchaen" + +#: src/components/GlobalCaptcha.jsx:53 +msgid "No or invalid captcha text" +msgstr "Ingen eller ugyldig captcha text" + +#: src/components/GlobalCaptcha.jsx:56 +msgid "No captcha id given" +msgstr "Ingen captcha id givet" + +#: src/components/GlobalCaptcha.jsx:59 +msgid "Unknown Captcha Error" +msgstr "Ukendt Captcha fejl" + +#: src/components/BanInfo.jsx:80 src/components/Captcha.jsx:77 +#: src/components/ChangeMail.jsx:72 src/components/ChangeName.jsx:58 +#: src/components/ChangePassword.jsx:79 src/components/DeleteAccount.jsx:55 +#: src/components/GlobalCaptcha.jsx:71 src/components/LogInForm.jsx:70 +#: src/components/windows/ForgotPassword.jsx:73 +#: src/components/windows/Register.jsx:89 +msgid "Error" +msgstr "Fejl" + +#: src/components/ChangeMail.jsx:93 src/components/ChangeName.jsx:70 +#: src/components/ChangePassword.jsx:115 src/components/DeleteAccount.jsx:68 +#: src/components/GlobalCaptcha.jsx:80 +#: src/components/windows/ForgotPassword.jsx:89 +#: src/components/windows/Register.jsx:133 +msgid "Cancel" +msgstr "Annuller" + +#: src/components/GlobalCaptcha.jsx:86 +msgid "Send" +msgstr "Send" + +#: src/components/BanInfo.jsx:66 +msgid "You are banned. You think it is unjustifed? Check out the " +msgstr "Du er bannet. Tror du at det er uretfærdigt? Tjek ud " + +#: src/components/BanInfo.jsx:76 +msgid " on how to appeal." +msgstr " på hvordan man kan appellerer." + +#: src/components/BanInfo.jsx:85 src/components/ModIIDtools.jsx:73 +msgid "Reason" +msgstr "Grund" + +#: src/components/BanInfo.jsx:91 +msgid "By Mod" +msgstr "Fra Mod" + +#: src/components/BanInfo.jsx:97 src/components/ModIIDtools.jsx:84 +msgid "Duration" +msgstr "Varighed" + +#: src/components/BanInfo.jsx:99 +msgid "Your ban expires at " +msgstr "Din ban udløber på " + +#: src/components/BanInfo.jsx:101 +msgid " which is in " +msgstr " som er i " + +#: src/components/BanInfo.jsx:112 +msgid "Unbanned" +msgstr "Ophævet Ban" + +#: src/components/BanInfo.jsx:113 +msgid "Now that you have seen this message, you are no longer banned." +msgstr "Nu når du har set denne besked, er du ikke længere bannet." + +#: src/components/BanInfo.jsx:127 +msgid "Why?" +msgstr "Hvorfor?" + +#: src/components/windows/Help.jsx:42 +msgid "Place color pixels on a large canvas with other players online!" +msgstr "Placer farvede pixels på en stor kanvas med andre spillere online!" + +#: 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 "" +"Vores hovedkanvas er et kæmpe verdenskort, man kan placere hvor henne man " +"vil, men du vil have brug for at vente et specifikt Nedkøling i mellem " +"pixels. Du kan tjekke ud Nedkølingen og krav på Kanvas Udvælgelse menuen " +"(globus knap på toppen). Nogle Kanvasser har forskellige nedkølninger for at " +"erstatte en bruger-sat pixels end at placere på et uberørt pixel. D.v.s. " +"4s/7s betyder 4s på friske pixels og 7s på allerede placerede pixels." + +#: 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 "" +"Højere zoomniveauer tager noget tid til at opdatere, 3D kloden bliver " +"opdateret på mindst en gang hver dag." + +#: src/components/windows/Help.jsx:48 +msgid "Have fun!" +msgstr "Hav' det sjovt!" + +#: src/components/windows/Help.jsx:50 +msgid "recommended" +msgstr "anbefalede" + +#: src/components/windows/Help.jsx:51 +msgid "Source on " +msgstr "Kilde på " + +#: src/components/windows/Help.jsx:52 +msgid "Map Data" +msgstr "Kort Data" + +#: 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 "" +"Det kortdata som vi bruger, sammen med konverterede OpenStreetMap fliser for " +"orientering, kan blive downloadet fra mega.nz her: " + +#: src/components/windows/Help.jsx:55 +msgid "Banned? Detected as Proxy?" +msgstr "Bannet? Detekted som Proxy?" + +#: src/components/windows/Help.jsx:57 +#, javascript-format +msgid "" +"If you got detected as proxy, but you are none, or think that you got " +"wrongfully banned, please go to our ${ guildedLink } or send us an e-mail to " +"${ mailLink } and include the following IID:" +msgstr "" +"Hvis du blev detektet som en proxy, men du ikke er en, eller tror at du blev " +"uretmæssigt bannet, venligst gå til vores ${ guildedLink } eller send os en " +"e-mail til ${ mailLink } og inkluder den følgene IID:" + +#: src/components/windows/Help.jsx:60 src/components/windows/Help.jsx:77 +msgid "Controls" +msgstr "Kontroller" + +#: src/components/windows/Help.jsx:62 +msgid "Click a color in palette to select it" +msgstr "Klik på en farve i paletten for at vælge den" + +#: src/components/windows/Help.jsx:63 +#, javascript-format +msgid "Press ${ bindG } to toggle grid" +msgstr "Tryk ${ bindG } for at til/fra gitter" + +#: src/components/windows/Help.jsx:64 +msgid "Press ${ bindX } to toggle showing of pixel activity" +msgstr "Tryk på ${ bindX } for at til/fra visningen af pixel aktivitet" + +#: src/components/windows/Help.jsx:65 +#, javascript-format +msgid "Press ${ bindH } to toggle historical view" +msgstr "Tryk på ${ bindH } for at til/fra historisk visning" + +#: src/components/windows/Help.jsx:66 +msgid "Press ${ bindR } to copy coordinates" +msgstr "Tryk på ${ bindR } for at kopiere koordinater" + +#: src/components/windows/Help.jsx:67 +#, javascript-format +msgid "Press ${ bindQ } or ${ bindE } to zoom" +msgstr "Tryk på ${ bindQ } eller ${ bindE } for at zoome" + +#: src/components/windows/Help.jsx:68 src/components/windows/Help.jsx:79 +#, javascript-format +msgid "Press ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } to move" +msgstr "Tryk ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } for at bevæge sig" + +#: src/components/windows/Help.jsx:69 src/components/windows/Help.jsx:80 +#, javascript-format +msgid "" +"Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move" +msgstr "" +"Tryk på ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } for at " +"bevæge sig" + +#: src/components/windows/Help.jsx:70 +msgid "Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move" +msgstr "" +"Træk ${ mouseSymbol } mus eller ${ touchSymbol } panorer for at bevæge sig" + +#: src/components/windows/Help.jsx:71 +#, javascript-format +msgid "Scroll ${ mouseSymbol } mouse wheel or ${ touchSymbol } pinch to zoom" +msgstr "" +"Skrol ${ mouseSymbol } mus hjul eller ${ touchSymbol } knib for at zoome" + +#: src/components/windows/Help.jsx:72 +msgid "Hold left ${ bindShift } for placing while moving mouse" +msgstr "Hold venstre ${ bindShift } for at placere imens man bevæger musen" + +#: src/components/windows/Help.jsx:73 +#, javascript-format +msgid "" +"Hold right ${ bindShift } for placing while moving mouse according to " +"historical view" +msgstr "" +"Hold højre ${ bindShift } for at placere imens man bevæger sin mus ifølge " +"historisk visning" + +#: src/components/windows/Help.jsx:74 src/components/windows/Help.jsx:85 +#, javascript-format +msgid "${ mouseSymbol } Left click or ${ touchSymbol } tap to place a pixel" +msgstr "" +"${ mouseSymbol } Venstre klik eller ${ touchSymbol } tryk for at placere en " +"pixel" + +#: src/components/windows/Help.jsx:75 src/components/windows/Help.jsx:87 +msgid "" +"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to " +"select current hovering color" +msgstr "" +"Tryk ${ mouseSymbol } midterste museknap eller${ touchSymbol } hold inde for " +"at vælge farven af pixellen som du rør" + +#: src/components/windows/Help.jsx:81 +msgid "Press ${ bindE } and ${ bindC } to fly up and down" +msgstr "Tryk ${ bindE } og ${ bindC } for at flyve op og ned" + +#: src/components/windows/Help.jsx:82 +#, javascript-format +msgid "${ mouseSymbol } Hold left mouse button and drag mouse to rotate" +msgstr "${ mouseSymbol } Hold venstre museknap og træk din mus for at rotere" + +#: src/components/windows/Help.jsx:83 +#, javascript-format +msgid "" +"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse " +"button and drag to zoom" +msgstr "" +"${ mouseSymbol } Skrol musehjulet eller hold ${ mouseSymbol } midterste " +"museknap og træk for at zoome" + +#: src/components/windows/Help.jsx:84 +msgid "${ mouseSymbol } Right click and drag mouse to pan" +msgstr "${ mouseSymbol } Højreklik og træk din mus for at panorere" + +#: src/components/windows/Help.jsx:86 +#, javascript-format +msgid "" +"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a pixel" +msgstr "" +"${ mouseSymbol } Højreklik eller ${ touchSymbol } dobbelt-tryk for at fjerne " +"en pixel" + +#: src/components/windows/Help.jsx:91 +msgid "" +"We thanks those artists very much, they offered their palettes to the public " +"on" +msgstr "" +"Vi takker disse artister meget, de offerede deres paletter til " +"offentligheden på" + +#: src/components/windows/Help.jsx:94 +#, javascript-format +msgid "Credit for the Palette of the Moon goes to ${ starhouseLink }." +msgstr "Kredit for Paletten for månen går til ${ starhouseLink }." + +#: src/components/windows/Help.jsx:97 +msgid "Credit for the Palette of the Top10 canvas goes to ${ vinikLink }." +msgstr "Kredit til paletten for Top10 Kanvasset går til ${ vinikLink }." + +#: src/components/windows/UserArea.jsx:36 +#: src/components/windows/UserArea.jsx:56 +msgid "Profile" +msgstr "Profil" + +#: src/components/windows/UserArea.jsx:59 +msgid "Statistics" +msgstr "Statistikker" + +#: src/components/windows/UserArea.jsx:64 +msgid "Converter" +msgstr "Konverter" + +#: src/components/windows/UserArea.jsx:70 +msgid "Modtools" +msgstr "Modværktøjer" + +#: src/components/windows/UserArea.jsx:71 +msgid "Loading..." +msgstr "Indlæser..." + +#: src/components/windows/UserArea.jsx:78 +msgid "Consider joining us on Guilded:" +msgstr "Overvej at joine os på Guilded:" + +#: src/components/windows/Register.jsx:87 +msgid "Register new account here" +msgstr "Registrer en ny konto her" + +#: src/components/windows/Register.jsx:92 +#: src/components/windows/Register.jsx:98 +msgid "Name" +msgstr "Navn" + +#: src/components/windows/ForgotPassword.jsx:80 +#: src/components/windows/Register.jsx:100 +#: src/components/windows/Register.jsx:106 +msgid "Email" +msgstr "Email" + +#: src/components/ChangeMail.jsx:80 src/components/DeleteAccount.jsx:62 +#: src/components/LogInForm.jsx:84 src/components/windows/Register.jsx:108 +#: src/components/windows/Register.jsx:114 +msgid "Password" +msgstr "Adgangskode" + +#: src/components/windows/Register.jsx:116 +#: src/components/windows/Register.jsx:122 +msgid "Confirm Password" +msgstr "Bekræft Adgangskode" + +#: src/components/windows/Register.jsx:124 +msgid "Captcha" +msgstr "Captcha" + +#: src/components/Admintools.jsx:154 src/components/Admintools.jsx:238 +#: src/components/ModCanvastools.jsx:302 src/components/ModCanvastools.jsx:382 +#: src/components/ModCanvastools.jsx:455 src/components/ModCanvastools.jsx:546 +#: src/components/ModIIDtools.jsx:135 +#: src/components/windows/ForgotPassword.jsx:84 +#: src/components/windows/Register.jsx:127 +msgid "Submit" +msgstr "Indsend" + +#: src/components/windows/Settings.jsx:86 +msgid "Show Grid" +msgstr "Vis Gitter" + +#: src/components/windows/Settings.jsx:91 +msgid "Turn on grid to highlight pixel borders." +msgstr "Tænd for gitter for at fremhæve pixel grænser." + +#: src/components/windows/Settings.jsx:94 +msgid "Show Pixel Activity" +msgstr "Vis Pixel Aktivitet" + +#: src/components/windows/Settings.jsx:99 +msgid "Show circles where pixels are placed." +msgstr "Vis cirkler hvor pixels er placeret." + +#: src/components/windows/Settings.jsx:102 +msgid "Disable Game Sounds" +msgstr "Deaktiver Spil Lyde" + +#: src/components/windows/Settings.jsx:108 +msgid "All sound effects will be disabled." +msgstr "Alle lyde vil blive deaktiveret." + +#: src/components/windows/Settings.jsx:112 +msgid "" +"Your Browser doesn't allow us to use AudioContext to play sounds. Do you " +"have some privacy feature blocking us?" +msgstr "" +"Din Browser tillader os ikke til at bruge AudioContext til at spille lyde. " +"Har du en privat funktion der blokere os?" + +#: src/components/windows/Settings.jsx:118 +msgid "Enable chat notifications" +msgstr "Aktiver chat notificationer" + +#: src/components/windows/Settings.jsx:122 +msgid "Play a sound when new chat messages arrive" +msgstr "Spil en lyd når nye chat beskeder ankommer" + +#: src/components/windows/Settings.jsx:125 +msgid "Auto Zoom In" +msgstr "Auto Zoom in" + +#: src/components/windows/Settings.jsx:130 +msgid "" +"Zoom in instead of placing a pixel when you tap the canvas and your zoom is " +"small." +msgstr "" +"Zoom ind i stedet for at placere en pixel når du trykker på kanvasset og dit " +"zoom er lille." + +#: src/components/windows/Settings.jsx:133 +msgid "Compact Palette" +msgstr "Kompakt Palet" + +#: src/components/windows/Settings.jsx:138 +msgid "Display Palette in a compact form that takes less screen space." +msgstr "Vis Palet i en kompakt form der tager mindre skærm plads." + +#: src/components/windows/Settings.jsx:141 +msgid "Potato Mode" +msgstr "Kartoffeltilstand" + +#: src/components/windows/Settings.jsx:145 +msgid "For when you are playing on a potato." +msgstr "For når du spiller på en kartoffel." + +#: src/components/Converter.jsx:376 src/components/windows/Settings.jsx:148 +msgid "Light Grid" +msgstr "Lys Gitter" + +#: src/components/windows/Settings.jsx:152 +msgid "Show Grid in white instead of black." +msgstr "Vis Gitter i hvid i stedet for sort." + +#: src/components/windows/Settings.jsx:156 +msgid "Historical View" +msgstr "Historisk Visning" + +#: src/components/windows/Settings.jsx:161 +msgid "Check out past versions of the canvas." +msgstr "Tjek tidligere versioner af kanvasset ud." + +#: src/components/windows/Settings.jsx:166 +msgid "Themes" +msgstr "Temaer" + +#: src/components/windows/Settings.jsx:171 +msgid "How pixelplanet should look like." +msgstr "Hvordan pixelplanet burde se ud." + +#: src/components/windows/Settings.jsx:178 +msgid "Select Language" +msgstr "Vælg Sprog" + +#: src/components/windows/CanvasSelect.jsx:29 +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 "" +"Vælg det kanvas som du vil gerne bruge. Hvert kanvas er unikt og har " +"forskellige paletter, nedkøling og krav. Arkiv af lukkede kanvasser kan " +"blive tilgået her:" + +#: src/components/windows/CanvasSelect.jsx:37 +msgid "Archive" +msgstr "Arkiv" + +#: src/components/windows/Archive.jsx:16 +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 "" +"Selvom vi plejer at ikke slette kanvasser, nogle kanvasser er started for " +"sjov, eller som en anmodning fra brugere som i øjeblikket kan lide et meme. " +"De kanvasser kan blive kedelige efter noget tid og after uger med ingen stor " +"forandring og hvis de virkelig ikke are værd at blive holdt aktive, vi " +"beslutter at fjerne dem." + +#: src/components/windows/Archive.jsx:18 +msgid "" +"Here we collect those canvases to archive them in a proper way (which is " +"currently just one)." +msgstr "" +"Her indsamler vi de kanvasser for at arkivere dem i en ordentlig måde (som " +"er i øjeblikket kun en)." + +#: src/components/windows/Archive.jsx:20 +msgid "Political Compass Canvas" +msgstr "Politisk Kompas Kanvas" + +#: src/components/windows/Archive.jsx:27 +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 "" +"Dette kanvas blev anmodet om i løbet af en tid af politiske konflikter på " +"Jorden kanvasset. Det var et 1024x1024 representation af det politiske " +"kompas med et 5s nedkøling og 60s stabling. Den blev iværksat i Maj 11th og " +"forblev aktiv i måneder indtil det blev lukket ned i November 30th." + +#: src/components/windows/Archive.jsx:28 +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 "" +"We besluttede at arkivere det som et tidforskydning med tabsfri kodet webm. " +"Hvis man tager et skærmbillede fra tidsforskydningen resultere i et perfect " +"1:1 repræsentation af hvordan kanvasset var på det tidspunk." + +#: src/components/windows/Chat.jsx:180 +msgid "Start chatting here" +msgstr "Begynd at chatte her" + +#: src/components/windows/Chat.jsx:217 +msgid "Chat here" +msgstr "Chat her" + +#: src/components/windows/Chat.jsx:243 +msgid "You must be logged in to chat" +msgstr "Du skal være logget ind for at chatte" + +#: src/components/windows/Chat.jsx:273 +msgid "Channel settings" +msgstr "Kanal indstillinger" + +#: src/components/windows/ForgotPassword.jsx:58 +msgid "Sent you a mail with instructions to reset your password." +msgstr "" +"Sendte dig en mail med instruktioner om hvordan man nustiller sin " +"adgangskode." + +#: src/components/windows/ForgotPassword.jsx:69 +msgid "Enter your mail address and we will send you a new password:" +msgstr "Indsæt din mailadresse og vi vil sende dig en ny adgangskode:" + +#: src/components/Captcha.jsx:51 src/components/Captcha.jsx:105 +msgid "Could not load captcha" +msgstr "Kun ikke indlæse captchaen" + +#: src/components/Captcha.jsx:69 +msgid "Type the characters from the following image:" +msgstr "Skriv tegnene fra det følgene billede:" + +#: src/components/Captcha.jsx:72 +msgid "Tip: Not case-sensitive; I and l are the same" +msgstr "Tip: Ikke case-sensitiv; I og l er det samme" + +#: src/components/Captcha.jsx:114 +msgid "Load Captcha" +msgstr "Indlæs Captcha" + +#: src/components/Captcha.jsx:119 +msgid "Click to Load Captcha" +msgstr "Klik for at indlæse Captcha" + +#: src/components/Captcha.jsx:124 +msgid "Can't read? Reload:" +msgstr "Kan ikke læse? Genindlæs:" + +#: src/components/Captcha.jsx:128 +msgid "Reload" +msgstr "Genindlæs" + +#: src/components/Captcha.jsx:138 +msgid "Enter Characters" +msgstr "Indtast Tegnene" + +#: src/utils/validation.js:17 +msgid "Email can't be empty." +msgstr "Email må ikke være tom." + +#: src/utils/validation.js:18 +msgid "Email should be at least 5 characters long." +msgstr "Email skal være mindst 5 tegn lang." + +#: src/utils/validation.js:19 +msgid "Email can't be longer than 40 characters." +msgstr "Email kan ikke være længere end 40 tegn." + +#: src/utils/validation.js:20 +msgid "Email should at least contain a dot" +msgstr "Email skal indholde i det mindste én prik" + +#: src/utils/validation.js:22 +msgid "Email should contain a @" +msgstr "Email skal indholde et @" + +#: src/utils/validation.js:29 +msgid "Name can't be empty." +msgstr "Navn kan ikke være tomt." + +#: src/utils/validation.js:30 +msgid "Name must be at least 2 characters long" +msgstr "Navn må være mindst 2 tegn langt" + +#: src/utils/validation.js:31 +msgid "Name must be shorter than 26 characters" +msgstr "Navn må være kortere end 26 tegn" + +#: src/utils/validation.js:38 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "Navn indeholder ugyldige tegn f.eks. @, /, \\ eller #" + +#: src/utils/validation.js:53 +msgid "No password given." +msgstr "Ingen adgangskode angivet." + +#: src/utils/validation.js:56 +msgid "Password must be at least 6 characters long." +msgstr "Adgangskode må mindst være 6 tegn lang." + +#: src/utils/validation.js:59 +msgid "Password must be shorter than 60 characters." +msgstr "Adgangskode skal være kortere end 60 tegn." + +#: src/components/GetIID.jsx:44 +msgid "Get IID" +msgstr "Få IID" + +#: src/components/GetIID.jsx:53 +msgid "Copy" +msgstr "Kopi" + +#: src/components/LogInArea.jsx:19 +msgid "Login to access more features and stats." +msgstr "Login for at få adgang til flere funktioner og statistikker." + +#: src/components/LogInArea.jsx:21 +msgid "Login with Name or Mail:" +msgstr "Login med Navn eller Mail:" + +#: src/components/LogInArea.jsx:28 +msgid "I forgot my Password." +msgstr "Jeg glemte min Adgangskode." + +#: src/components/LogInArea.jsx:29 +msgid "or login with:" +msgstr "eller login med:" + +#: src/components/LogInArea.jsx:70 +msgid "or register here:" +msgstr "eller register her:" + +#: src/components/LogInArea.jsx:75 +msgid "Register" +msgstr "Register" + +#: src/components/UserAreaContent.jsx:62 +msgid "Todays Placed Pixels" +msgstr "Dagens Placerede Pixels" + +#: src/components/UserAreaContent.jsx:66 +msgid "Daily Rank" +msgstr "Daglig Rang" + +#: src/components/UserAreaContent.jsx:71 +msgid "Placed Pixels" +msgstr "Placerede Pixels" + +#: src/components/UserAreaContent.jsx:75 +msgid "Total Rank" +msgstr "Samlet Rang" + +#: src/components/UserAreaContent.jsx:80 +#, javascript-format +msgid "Your name is: ${ name }" +msgstr "Dit navn er: ${ name }" + +#: src/components/UserAreaContent.jsx:86 +msgid "Log out" +msgstr "Log ud" + +#: src/components/UserAreaContent.jsx:93 +msgid "Change Username" +msgstr "Ændre Brugernavn" + +#: src/components/UserAreaContent.jsx:103 +msgid "Change Mail" +msgstr "Ændre Mail" + +#: src/components/UserAreaContent.jsx:112 +msgid "Change Password" +msgstr "Skift Adgangskode" + +#: src/components/UserAreaContent.jsx:119 +msgid "Delete Account" +msgstr "Slet Konto" + +#: src/components/UserAreaContent.jsx:126 +msgid "Social Settings" +msgstr "Sociale Indstillinger" + +#: src/components/Converter.jsx:190 src/components/ModCanvastools.jsx:226 +msgid "Choose Canvas" +msgstr "Vælg Kanvas" + +#: src/components/Converter.jsx:216 +msgid "Palette Download" +msgstr "Palet Download" + +#: src/components/Converter.jsx:218 +#, javascript-format +msgid "Palette for ${ gimpLink }" +msgstr "Palet for ${ gimpLink }" + +#: src/components/Converter.jsx:236 +msgid "Image Converter" +msgstr "Billede Konverter" + +#: src/components/Converter.jsx:237 +msgid "Convert an image to canvas colors" +msgstr "Konverter et billede til Canvas farver" + +#: src/components/Converter.jsx:256 +msgid "Choose Strategy" +msgstr "Vælg Strategi" + +#: src/components/Converter.jsx:294 +msgid "Serpentine" +msgstr "Serpentin" + +#: src/components/Converter.jsx:296 +msgid "Minimum Color Distance" +msgstr "Minimum Farve Afstand" + +#: src/components/Converter.jsx:323 +msgid "Calculate like GIMP" +msgstr "Beregn som GIMP" + +#: src/components/Converter.jsx:327 +msgid "Choose Color Mode" +msgstr "Vælg Farvetilstand" + +#: src/components/Converter.jsx:356 +msgid "Add Grid (uncheck if you need a 1:1 template)" +msgstr "" +"TIlføj Gitter (fjern markeringen, hvis du har brug for en 1:1 skabelon)" + +#: src/components/Converter.jsx:378 src/components/Converter.jsx:394 +msgid "Offset" +msgstr "Offset" + +#: src/components/Converter.jsx:423 +msgid "Scale Image" +msgstr "Skaler Billede" + +#: src/components/Converter.jsx:434 +msgid "Width" +msgstr "Bredde" + +#: src/components/Converter.jsx:465 +msgid "Height" +msgstr "Højde" + +#: src/components/Converter.jsx:504 +msgid "Keep Ratio" +msgstr "Behold Forhold" + +#: src/components/Converter.jsx:517 +msgid "Anti Aliasing" +msgstr "Anti Aliasing" + +#: src/components/Converter.jsx:531 +msgid "Reset" +msgstr "Nulstil" + +#: src/components/Converter.jsx:549 +msgid "Download Template" +msgstr "Hent Template" + +#: src/components/Rankings.jsx:147 +msgid "Total" +msgstr "I Alt" + +#: src/components/Rankings.jsx:156 +msgid "Today" +msgstr "I Dag" + +#: src/components/Rankings.jsx:165 +msgid "Yesterday" +msgstr "I Går" + +#: src/components/Rankings.jsx:174 +msgid "Countries Today" +msgstr "Lande i Dag" + +#: src/components/Rankings.jsx:183 +msgid "Charts" +msgstr "Diagrammer" + +#: src/components/Rankings.jsx:201 src/components/Rankings.jsx:210 +#: src/components/Rankings.jsx:219 +msgid "User" +msgstr "Bruger" + +#: src/components/Rankings.jsx:226 +msgid "Country" +msgstr "Land" + +#: src/components/Rankings.jsx:286 +msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC." +msgstr "" +"Rangerne opdaterer hver 5 min. Daglige rang bliver nulstillet ved midnat UTC." + +#: src/components/ChangeMail.jsx:91 src/components/ChangeName.jsx:68 +#: src/components/ChangePassword.jsx:109 src/components/LanguageSelect.jsx:80 +msgid "Save" +msgstr "Gem" + +#: src/components/CanvasItem.jsx:29 +msgid "Online Users" +msgstr "Online Brugerer" + +#: src/components/CanvasItem.jsx:34 +msgid "Cooldown" +msgstr "Nedkøling" + +#: src/components/CanvasItem.jsx:40 +msgid "Stacking till" +msgstr "Stabler indtil" + +#: src/components/CanvasItem.jsx:42 +msgid "Ranked" +msgstr "Rangeret" + +#: src/components/CanvasItem.jsx:44 +msgid "Yes" +msgstr "Ja" + +#: src/components/CanvasItem.jsx:44 +msgid "No" +msgstr "Nej" + +#: src/components/CanvasItem.jsx:50 +msgid "Requirements" +msgstr "Krav" + +#: src/components/CanvasItem.jsx:53 +msgid "User Account" +msgstr "Bruger Konto" + +#: src/components/CanvasItem.jsx:55 +#, javascript-format +msgid "and ${ canvas.req } Pixels set" +msgstr "og ${ canvas.req } Pixels indstillet" + +#: src/components/CanvasItem.jsx:58 +msgid "Top 10 Daily Ranking" +msgstr "Top 10 Daglig Rangering" + +#: src/components/CanvasItem.jsx:64 +msgid "Dimensions" +msgstr "Dimensioner" + +#: src/core/chartSettings.js:30 +msgid "Top 10 Countries [pxls / day]" +msgstr "Top 10 Lande [pxls / day]" + +#: src/core/chartSettings.js:127 +msgid "Players and Pixels per hour" +msgstr "Spillere og Pixels per time" + +#: src/core/chartSettings.js:221 +msgid "Top 10 Players [pxls / day]" +msgstr "Top 10 Spillere [pxls / day]" + +#: src/core/chartSettings.js:294 +msgid "Countries by Pixels Today" +msgstr "Lande efter Pixels I dag" + +#: src/core/chartSettings.js:352 +msgid "Total Pixels placed per day" +msgstr "Antal Pixels placeret pr. dag" + +#: src/components/LogInForm.jsx:77 +msgid "Name or Email" +msgstr "Navn eller Email" + +#: src/components/LogInForm.jsx:88 +msgid "LogIn" +msgstr "LogIn" + +#: src/components/ChangePassword.jsx:21 +msgid "Passwords do not match." +msgstr "Adgangskoder matcher ikke." + +#: src/components/ChangePassword.jsx:44 +msgid "Changed Password successfully." +msgstr "Ændrede Adgangskoder succesfuldt." + +#: src/components/ChangePassword.jsx:88 +msgid "Old Password" +msgstr "Gamle Adgangskode" + +#: src/components/ChangePassword.jsx:96 +msgid "New Password" +msgstr "Nye Adgangskode" + +#: src/components/ChangePassword.jsx:103 +msgid "Confirm New Password" +msgstr "Bekræft Nye Adgangskode" + +#: src/components/UserMessages.jsx:28 +msgid "" +"Please verify your mail address or your account could get deleted after a " +"few days." +msgstr "" +"Venligst bekræft dine mailaddresse eller din konto kunne blive slettet after " +"nogle par dage." + +#: src/components/UserMessages.jsx:49 +msgid "A new verification mail is getting sent to you." +msgstr "En ny bekræftelsesmail bliver sent til dig." + +#: src/components/UserMessages.jsx:53 +msgid "Click here to request a new verification mail." +msgstr "Klik her for at anmode om et nyt bekræftelsesmail." + +#: src/components/ChangeMail.jsx:59 +msgid "" +"Changed Mail successfully. We sent you a verification mail, " +"please verify your new mail address." +msgstr "" +"Ændrede Mail succesfuldt. Vi sendte dig en bekræftelsesmail, " +"venligst bekræft din nye mail adresse." + +#: src/components/ChangeMail.jsx:87 +msgid "New Mail" +msgstr "Nye Mail" + +#: src/components/ChangeName.jsx:64 +msgid "New Username" +msgstr "Nye Brugernavn" + +#: src/components/DeleteAccount.jsx:66 +msgid "Yes, Delete My Account!" +msgstr "Ja, Slet Min Konto!" + +#: src/components/ModCanvastools.jsx:168 +msgid "Build image on canvas." +msgstr "Byg billede på kanvas." + +#: src/components/ModCanvastools.jsx:171 +msgid "Build image and set it to protected." +msgstr "Byg billede og sæt det til beskyttet." + +#: src/components/ModCanvastools.jsx:174 +msgid "Build image, but reset cooldown to unset-pixel cd." +msgstr "Byg billede, men nulstil nedkøling til ikke-sat pixel cd." + +#: src/components/ModCanvastools.jsx:184 +msgid "Clean spare pixels that are surrounded by unset pixels" +msgstr "Rengør pixels der er omringet af ikke-sat pixels" + +#: src/components/ModCanvastools.jsx:188 +msgid "" +"Clean spare pixels that are surrounded by unset pixels and up to 1 other set " +"pixels" +msgstr "" +"Rengør pixels der er omringet af ikke-sat pixels og op til 1 anden set pixels" + +#: src/components/ModCanvastools.jsx:192 +msgid "" +"Clean spare pixels that are surrounded by a single other color or unset " +"pixels (VERY AGGRESSIVE ON CANVASES THAT ALLOW UNSET PIXELS (where there are " +"two cooldowns)!)" +msgstr "" +"Rengør pixels der or omringet af en eneste anden farve eller ikke-sat pixels " +"(MEGET AGGRESSIV PÅ KANVASSER DER TILLADER IKKE-SAT PIXELS (hvor der er to " +"nedkølinger)" + +#: src/components/ModCanvastools.jsx:203 +msgid "Status: Not running" +msgstr "Status: Ikke oppe" + +#: src/components/ModCanvastools.jsx:245 +msgid "Image Upload" +msgstr "Billede Upload" + +#: src/components/ModCanvastools.jsx:246 +msgid "Upload images to canvas" +msgstr "Upload Billeder til Kanvas" + +#: src/components/ModCanvastools.jsx:248 +msgid "File" +msgstr "Fil" + +#: src/components/ModCanvastools.jsx:269 +msgid "Coordinates in X_Y format:" +msgstr "Koordinater i X_Y format:" + +#: src/components/ModCanvastools.jsx:307 +msgid "Pixel Protection" +msgstr "Pixel Beskyttelse" + +#: src/components/ModCanvastools.jsx:309 +msgid "" +"Set protection of areas (if you need finer grained control, " +"use protect with image upload and alpha layers)" +msgstr "" +"Set beskyttelse af områder (hvis du får brug for mere finkornet " +"kontrol, brug beskyttelse med billedupload og alfalag)" + +#: src/components/ModCanvastools.jsx:330 src/components/ModCanvastools.jsx:403 +#: src/components/ModCanvastools.jsx:486 src/components/ModWatchtools.jsx:174 +msgid "Top-left corner" +msgstr "Øverste-venstre hjørne" + +#: src/components/ModCanvastools.jsx:347 src/components/ModCanvastools.jsx:420 +#: src/components/ModCanvastools.jsx:503 src/components/ModWatchtools.jsx:191 +msgid "Bottom-right corner" +msgstr "Nederste-højre hjørne" + +#: src/components/ModCanvastools.jsx:388 +msgid "Rollback to Date" +msgstr "Rul tilbage til Dato" + +#: src/components/ModCanvastools.jsx:390 +msgid "Rollback an area of the canvas to a set date (00:00 UTC)" +msgstr "Rul tilbage et område af kanvasset til en sæt dato 00:00 UTC)" + +#: src/components/ModCanvastools.jsx:461 +msgid "Canvas Cleaner" +msgstr "Kanvas Rengører" + +#: src/components/ModCanvastools.jsx:463 +msgid "Apply a filter to clean trash in large canvas areas." +msgstr "Påfør et filter til at rense affald i store kanvas områder." + +#: src/components/ModCanvastools.jsx:564 +msgid "Stop Cleaner" +msgstr "Stop Rengører" + +#: src/components/Admintools.jsx:109 +msgid "IP Actions" +msgstr "IP Handlinger" + +#: src/components/Admintools.jsx:111 +msgid "Do stuff with IPs (one IP per line)" +msgstr "Gør ting med IP'er (én IP pr. linje)" + +#: src/components/Admintools.jsx:158 +msgid "Manage Moderators" +msgstr "Administrer Moderatorer" + +#: src/components/Admintools.jsx:160 +msgid "Remove Moderator" +msgstr "Fjern Moderator" + +#: src/components/Admintools.jsx:193 +msgid "There are no mods" +msgstr "Der er ingen nye mods" + +#: src/components/Admintools.jsx:198 +msgid "Assign new Mod" +msgstr "Tildel ny Mod" + +#: src/components/Admintools.jsx:201 +msgid "Enter UserName of new Mod" +msgstr "Indsæt BrugerNavn af ny mod" + +#: src/components/Admintools.jsx:210 +msgid "User Name" +msgstr "Bruger Navn" + +#: src/components/SocialSettings.jsx:35 +msgid "Block DMs" +msgstr "Bloker DM'er" + +#: src/components/SocialSettings.jsx:42 +msgid "Block all Private Messages" +msgstr "Bloker alle Private Beskeder" + +#: src/components/SocialSettings.jsx:44 +msgid "Private" +msgstr "Privat" + +#: src/components/SocialSettings.jsx:51 +msgid "Don't show me in global stats" +msgstr "Vis mig ikke i globale statistikker" + +#: src/components/SocialSettings.jsx:57 +msgid "Unblock Users" +msgstr "Fjern Blokering af Brugere" + +#: src/components/SocialSettings.jsx:82 +msgid "You have no users blocked" +msgstr "Du har ingen brugere blokeret" + +#: src/components/ModIIDtools.jsx:20 +msgid "You must enter a duration" +msgstr "Du skal angive en varighed" + +#: src/components/ModIIDtools.jsx:24 +msgid "You must enter an IID" +msgstr "Du skal angive en IID" + +#: src/components/ModIIDtools.jsx:53 +msgid "IID Actions" +msgstr "IID Handlinger" + +#: src/components/ModIIDtools.jsx:80 +msgid "Enter Reason" +msgstr "Angiv Begrundelse" + +#: src/components/ModIIDtools.jsx:97 +msgid "(0 = infinite)" +msgstr "(0 = uendelig" + +#: src/components/ModWatchtools.jsx:48 +msgid "Interval is invalid" +msgstr "Interval er ugyldigt" + +#: src/components/ModWatchtools.jsx:122 +msgid "Check who placed in an area" +msgstr "Tjek hvem placerede i et område" + +#: src/components/ModWatchtools.jsx:123 +msgid "Canvas" +msgstr "Kanvas" + +#: src/components/ModWatchtools.jsx:142 +msgid "Interval" +msgstr "Interval" + +#: src/components/ModWatchtools.jsx:157 +msgid "IID (optional)" +msgstr "IID (valgfrit)" + +#: src/components/ModWatchtools.jsx:236 +msgid "Get Pixels" +msgstr "Få Pixels" + +#: src/components/ModWatchtools.jsx:267 +msgid "Get Users" +msgstr "Få Brugere" + +#: src/components/contextmenus/UserContextMenu.jsx:49 +msgid "Ping" +msgstr "Ping" + +#: src/components/contextmenus/UserContextMenu.jsx:75 +msgid "DM" +msgstr "DM" + +#: src/components/contextmenus/UserContextMenu.jsx:86 +msgid "Block" +msgstr "Bloker" + +#: src/components/contextmenus/ChannelContextMenu.jsx:46 +msgid "Mute" +msgstr "Gør Stum" + +#: src/components/windows/Help.jsx:15 src/components/windows/Settings.jsx:87 +msgctxt "keybinds" +msgid "G" +msgstr "G" + +#: src/components/windows/Help.jsx:16 src/components/windows/Settings.jsx:95 +msgctxt "keybinds" +msgid "X" +msgstr "X" + +#: src/components/windows/Help.jsx:17 src/components/windows/Settings.jsx:158 +msgctxt "keybinds" +msgid "H" +msgstr "H" + +#: src/components/windows/Help.jsx:18 +msgctxt "keybinds" +msgid "R" +msgstr "R" + +#: src/components/windows/Help.jsx:19 +msgctxt "keybinds" +msgid "Q" +msgstr "Q" + +#: src/components/windows/Help.jsx:20 +msgctxt "keybinds" +msgid "E" +msgstr "E" + +#: src/components/windows/Help.jsx:21 +msgctxt "keybinds" +msgid "W" +msgstr "W" + +#: src/components/windows/Help.jsx:22 +msgctxt "keybinds" +msgid "A" +msgstr "A" + +#: src/components/windows/Help.jsx:23 +msgctxt "keybinds" +msgid "S" +msgstr "S" + +#: src/components/windows/Help.jsx:24 +msgctxt "keybinds" +msgid "D" +msgstr "D" + +#: src/components/windows/Help.jsx:31 +msgctxt "keybinds" +msgid "Shift" +msgstr "Shift" + +#: src/components/windows/Help.jsx:32 +msgctxt "keybinds" +msgid "C" +msgstr "C" + +#: src/components/windows/Settings.jsx:103 +msgctxt "keybinds" +msgid "M" +msgstr "M" diff --git a/i18n/ssr-da.po b/i18n/ssr-da.po new file mode 100644 index 00000000..5c6fbfe2 --- /dev/null +++ b/i18n/ssr-da.po @@ -0,0 +1,471 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: da\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 3.2.2\n" + +#: src/core/ChatProvider.js:434 +msgid "You can not send chat messages with proxy" +msgstr "Du kan ikke sende chat beskeder med proxy" + +#: src/core/ChatProvider.js:436 +msgid "Your country is temporary muted from this chat channel" +msgstr "Dit land er midlertidigt gjort stum i denne chat kanal" + +#: src/core/ChatProvider.js:439 +msgid "You are permanently muted, join our guilded to apppeal the mute" +msgstr "" +"Du er permanent gjort stum, Tilslut dig til vores Guilded for at appellere " +"om at du blev gjort stum" + +#: src/core/ChatProvider.js:441 +msgid "You are banned" +msgstr "Du er bannet" + +#: src/core/ChatProvider.js:443 +msgid "Your Internet Provider is banned" +msgstr "Din Internetudbyder er bannet" + +#: src/core/ChatProvider.js:448 +#, javascript-format +msgid "You are muted for another ${ timeMin } minutes" +msgstr "Du er gjort stum for en anden ${ timeMin } minutes" + +#: src/core/ChatProvider.js:450 +msgid "You are muted for another ${ ttl } seconds" +msgstr "Du er gjort stum for en anden ${ ttl } Sekunder" + +#: src/core/ChatProvider.js:467 +#, javascript-format +msgid "You are sending messages too fast, you have to wait ${ waitTime }s :(" +msgstr "Du sender beskeder for hurtigt, du skal vente ${ waitTime }s :(" + +#: src/core/ChatProvider.js:471 +msgid "You don't have access to this channel" +msgstr "Du har ikke tilladelse til at se denne kanal" + +#: src/core/ChatProvider.js:488 +msgid "Your mail has to be verified in order to chat" +msgstr "Din mail skal være bekræftet for at chatte" + +#: src/core/ChatProvider.js:498 +msgid "You can't send a message this long :(" +msgstr "Du kan ikke sende en besked så lang :(" + +#: src/core/ChatProvider.js:502 +msgid "Please use int channel" +msgstr "Venligst brug int kanal" + +#: src/core/ChatProvider.js:510 +msgid "Stop flooding." +msgstr "Lad være med at oversvømme chatten." + +#: src/routes/reset_password.js:39 +msgid "You sent an empty password or invalid data :(" +msgstr "Du sendte en tom adgangskode eller ugyldig data :(" + +#: src/routes/reset_password.js:51 +msgid "This password-reset link isn't valid anymore :(" +msgstr "Dette adgangskode-nulstillings link er ikke længere gyldig :(" + +#: src/routes/reset_password.js:62 +msgid "Your passwords do not match :(" +msgstr "Dine adgangskoder matcher ikke :(" + +#: src/routes/reset_password.js:77 +msgid "User doesn't exist in our database :(" +msgstr "Bruger eksisterer ikke i vores database :(" + +#: src/routes/reset_password.js:89 +msgid "Passowrd successfully changed." +msgstr "Adgangskode blev succesfuldt ændret." + +#: src/routes/reset_password.js:108 +msgid "Invalid url :( Please check your mail again." +msgstr "Ugyldig url :( Venligst tjek din mail igen." + +#: src/ssr/Globe.jsx:32 +msgid "PixelPlanet.Fun 3DGlobe" +msgstr "PixelPlanet.Fun 3DGlobus" + +#: src/ssr/Globe.jsx:33 +msgid "A 3D globe of our whole map" +msgstr "En 3D klode af hele vores kort" + +#: src/ssr/Globe.jsx:46 +msgid "Double click on globe to go back." +msgstr "Dobbeltklik på kloden for at gå tilbage." + +#: src/ssr/Globe.jsx:47 +msgid "Loading..." +msgstr "Indlæser..." + +#: src/ssr/PopUp.jsx:58 +msgid "ppfun" +msgstr "ppfun" + +#: src/ssr/PopUp.jsx:59 +msgid "PixelPlanet.Fun PopUp" +msgstr "PixelPlanet.Fun PopUp" + +#: src/ssr/Main.jsx:67 +msgid "PixelPlanet.Fun" +msgstr "PixelPlanet.Fun" + +#: src/ssr/Main.jsx:68 +msgid "Place color pixels on an map styled canvas with other players online" +msgstr "" +"Placer farvede pixels på et kort-stilet kanvas med andre spillere online" + +#: src/utils/validation.js:17 +msgid "Email can't be empty." +msgstr "Email må ikke være tom." + +#: src/utils/validation.js:18 +msgid "Email should be at least 5 characters long." +msgstr "Email skal være mindst 5 tegn lang." + +#: src/utils/validation.js:19 +msgid "Email can't be longer than 40 characters." +msgstr "Email kan ikke være længere end 40 tegn." + +#: src/utils/validation.js:20 +msgid "Email should at least contain a dot" +msgstr "Email skal indeholde i det mindste én prik" + +#: src/utils/validation.js:22 +msgid "Email should contain a @" +msgstr "Email skal indeholde et @" + +#: src/utils/validation.js:29 +msgid "Name can't be empty." +msgstr "Navn kan ikke være tomt." + +#: src/utils/validation.js:30 +msgid "Name must be at least 2 characters long" +msgstr "Navn skal være mindst 2 tegn langt" + +#: src/utils/validation.js:31 +msgid "Name must be shorter than 26 characters" +msgstr "Navn skal være kortere end 26 tegn" + +#: src/utils/validation.js:38 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "Navn indeholder ugyldige tegn f.eks. @, /, \\ eller #" + +#: src/utils/validation.js:53 +msgid "No password given." +msgstr "Ingen adgangskode angivet." + +#: src/utils/validation.js:56 +msgid "Password must be at least 6 characters long." +msgstr "Adgangskode skal være mindst 6 tegn lang." + +#: src/utils/validation.js:59 +msgid "Password must be shorter than 60 characters." +msgstr "Adgangskode skal være kortere end 60 tegn." + +#: src/ssr/PasswordReset.jsx:20 src/ssr/PasswordReset.jsx:40 +msgid "PixelPlanet.fun Password Reset" +msgstr "PixelPlanet.fun Adgangskode Nulstilling" + +#: src/ssr/PasswordReset.jsx:21 src/ssr/PasswordReset.jsx:41 +msgid "Reset your password here" +msgstr "Nulstil din adgangskode her" + +#: src/core/MailProvider.js:105 src/ssr/PasswordReset.jsx:28 +#: src/ssr/PasswordReset.jsx:49 +msgid "Reset Password" +msgstr "Nulstil Adgangskode" + +#: src/ssr/PasswordReset.jsx:30 src/ssr/RedirectionPage.jsx:12 +msgid "Click here" +msgstr "Klik her" + +#: src/ssr/PasswordReset.jsx:30 +msgid "to go back to pixelplanet" +msgstr "for at gå tilbage til pixelplanet" + +#: src/ssr/PasswordReset.jsx:50 +#, javascript-format +msgid "Hello ${ name }, you can set your new password here:" +msgstr "Hej ${ name }, du kan skrive din nye adgangskode her:" + +#: src/ssr/PasswordReset.jsx:54 +msgid "New Password" +msgstr "Nye adgangskode" + +#: src/ssr/PasswordReset.jsx:60 +msgid "Confirm New Password" +msgstr "Bekræft Nye Adgangskode" + +#: src/ssr/PasswordReset.jsx:65 +msgid "Submit" +msgstr "Indsend" + +#: src/routes/api/modtools.js:53 +msgid "You are not logged in" +msgstr "Du er ikke logget ind" + +#: src/routes/api/modtools.js:65 +msgid "You are not allowed to access this page" +msgstr "Du er ikke tilladt til at få adgang til denne side" + +#: src/routes/api/modtools.js:207 +msgid "Just admins can do that" +msgstr "Kun administratorer kan gøre det" + +#: src/routes/api/baninfo.js:32 +msgid "You are not banned" +msgstr "Du er ikke bannet" + +#: src/routes/api/auth/change_mail.js:21 src/routes/api/auth/register.js:24 +msgid "This email provider is not allowed" +msgstr "Denne email udbyder er ikke tilladt" + +#: src/routes/api/auth/register.js:31 +msgid "No Captcha given" +msgstr "Ingen Captcha angivet" + +#: src/routes/api/auth/register.js:34 +msgid "E-Mail already in use." +msgstr "E-Mail allerede i brug." + +#: src/routes/api/auth/register.js:36 +msgid "Username already in use." +msgstr "Brugernavn allerede i brug." + +#: src/routes/api/auth/register.js:59 +msgid "You took too long, try again." +msgstr "Du tog for lang tid, prøv igen." + +#: src/routes/api/auth/register.js:62 +msgid "You failed your captcha" +msgstr "Du fejlede din captcha" + +#: src/routes/api/auth/register.js:65 +msgid "Unknown Captcha Error" +msgstr "Ukendt Captcha Fejl" + +#: src/routes/api/auth/register.js:89 +msgid "Failed to create new user :(" +msgstr "Kunne ikke oprette ny bruger :(" + +#: src/routes/api/auth/register.js:105 +msgid "Failed to establish session after register :(" +msgstr "Kunne ikke oprette session efter registrering :(" + +#: src/routes/api/auth/logout.js:11 +msgid "You are not even logged in." +msgstr "Du er engang logget in." + +#: src/routes/api/auth/delete_account.js:55 src/routes/api/auth/logout.js:20 +msgid "Server error when logging out." +msgstr "Server fejl ved log ud." + +#: src/routes/api/auth/change_mail.js:43 +#: src/routes/api/auth/change_passwd.js:34 +#: src/routes/api/auth/delete_account.js:35 +msgid "You are not authenticated." +msgstr "Du er ikke godkendt." + +#: src/routes/api/auth/change_mail.js:52 +#: src/routes/api/auth/change_passwd.js:43 +#: src/routes/api/auth/delete_account.js:45 +msgid "Incorrect password!" +msgstr "Forkerte adgangskode!" + +#: src/routes/api/auth/verify.js:26 src/routes/api/auth/verify.js:35 +msgid "Mail verification" +msgstr "Mail Bekræftelse" + +#: src/routes/api/auth/verify.js:27 +msgid "You are now verified :)" +msgstr "Du er nu bekræftet" + +#: src/routes/api/auth/verify.js:35 +msgid "" +"Your mail verification code is invalid or already expired :(, please request " +"a new one." +msgstr "" +"Din mail bekræftelseskode er ugyldig eller allerede udløbet :(, venligst " +"anmod om en ny en." + +#: src/ssr/RedirectionPage.jsx:19 +msgid "PixelPlanet.fun Accounts" +msgstr "PixelPlanet.fun Kontoer" + +#: src/ssr/RedirectionPage.jsx:29 +msgid "You will be automatically redirected after 15s" +msgstr "Du vil blive automatisk omdirigeret efter 15s" + +#: src/ssr/RedirectionPage.jsx:30 +#, javascript-format +msgid "Or ${ clickHere } to go back to pixelplanet" +msgstr "Eller ${ clickHere } for at gå tilbage til pixelplanet" + +#: src/canvasesDesc.js:19 +msgid "Earth" +msgstr "Jorden" + +#: src/canvasesDesc.js:20 +msgid "Moon" +msgstr "Måne" + +#: src/canvasesDesc.js:21 +msgid "3D Canvas" +msgstr "3D Kanvas" + +#: src/canvasesDesc.js:22 +msgid "Coronavirus" +msgstr "Koronavirus" + +#: src/canvasesDesc.js:23 +msgid "PixelZone" +msgstr "PixelZone" + +#: src/canvasesDesc.js:24 +msgid "PixelCanvas" +msgstr "PixelKanvas" + +#: src/canvasesDesc.js:25 +msgid "1bit" +msgstr "1bit" + +#: src/canvasesDesc.js:26 +msgid "Top10" +msgstr "Top10" + +#: src/canvasesDesc.js:29 +msgid "Our main canvas, a huge map of the world. Place everywhere you like" +msgstr "Vores hovedkanvas, et kæmpe verdenskort. Placer hvor end du vil" + +#: src/canvasesDesc.js:30 +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 "" +"Måne kanvas. Sikkert sted for kunst. Ingen flager eller stor text (undtagen " +"hvis del af kunst) eller større end 1,5k x 1,5k pixels." + +#: src/canvasesDesc.js:31 +msgid "Place Voxels on a 3D canvas with others" +msgstr "Placer Voxels på et 3D kanvas med andre" + +#: src/canvasesDesc.js:32 +msgid "Special canvas to spread awareness of SARS-CoV2" +msgstr "Specielt kanvas for at sprede viden om SARS-CoV2" + +#: src/canvasesDesc.js:33 +msgid "Mirror of PixelZone" +msgstr "Spejl af PixelZone" + +#: src/canvasesDesc.js:34 +msgid "Mirror of PixelCanvas" +msgstr "Spejl af Pixelcanvas" + +#: src/canvasesDesc.js:35 +msgid "Black and White canvas" +msgstr "Sort og hvid kanvas" + +#: src/canvasesDesc.js:36 +msgid "" +"A canvas for the most active players from the the previous day. Daily " +"ranking updates at 00:00 UTC." +msgstr "" +"Et kanvas for de mest aktive spillere fra den tidligere dag. Daglig " +"rangering opdaterer kl. 00:00 UTC." + +#: src/core/MailProvider.js:66 +#, javascript-format +msgid "Welcome ${ name } to PixelPlanet, plese verify your mail" +msgstr "Velkommen ${ name } til PixelPlanet, venligst bekræft din mail" + +#: src/core/MailProvider.js:67 +msgid "Hello ${ name }" +msgstr "Hej ${ name }" + +#: src/core/MailProvider.js:68 +msgid "" +"welcome to our little community of pixelplacers, to use your account, you " +"have to verify your mail. You can do that here: " +msgstr "" +"velkommen til vores lille samfund of pixelplacere, for at bruge din konto, " +"har du brug for at bekræfte din mail. Du kan gøre det her: " + +#: src/core/MailProvider.js:68 +msgid "Click to Verify" +msgstr "Klik for at Bekræfte" + +#: src/core/MailProvider.js:68 src/core/MailProvider.js:105 +msgid "Or by copying following url:" +msgstr "Eller ved at kopiere følgende url:" + +#: src/core/MailProvider.js:69 +msgid "" +"Have fun and don't hesitate to contact us if you encouter any problems :)" +msgstr "" +"Hav' det sjovt og tøv ikke med at kontakte os hvis du støder på nogle " +"problemer :)" + +#: src/core/MailProvider.js:70 src/core/MailProvider.js:107 +msgid "Thanks" +msgstr "Tak" + +#: src/core/MailProvider.js:87 +#, javascript-format +msgid "" +"We already sent you a verification mail, you can request another one in " +"${ minLeft } minutes." +msgstr "" +"Vi har allerede sendt dig en bekræftelsesmail, du kan anmode om endnu en om " +"${ minLeft } minutter." + +#: src/core/MailProvider.js:103 +msgid "You forgot your password for PixelPlanet? Get a new one here" +msgstr "Glemt din adgangskode for PixelPlanet? Få en ny en her" + +#: src/core/MailProvider.js:104 +msgid "Hello" +msgstr "Hello" + +#: src/core/MailProvider.js:105 +msgid "" +"You requested to get a new password. You can change your password within the " +"next 30min here: " +msgstr "" +"Du anmodet om en ny adgangskode. Du kan ændre din adgangskode inden for de " +"næste 30min her: " + +#: src/core/MailProvider.js:106 +#, javascript-format +msgid "" +"If you did not request this mail, please just ignore it (the ip that " +"requested this mail was ${ ip })." +msgstr "" +"Hvis du ikke anmodet om denne mail, venligst bare ignorerer den (ip'en der " +"anmodet om denne mail var ${ ip })." + +#: src/core/MailProvider.js:114 +msgid "Mail is not configured on the server" +msgstr "Mail er ikke konfigureret på serveren" + +#: src/core/MailProvider.js:122 +msgid "" +"We already sent you a mail with instructions. Please wait before requesting " +"another mail." +msgstr "" +"Vi har allerede sendt dig en mail med instruktioner. Venligst vent før du " +"anmoder om en ny mail." + +#: src/core/MailProvider.js:130 +msgid "Couldn't find this mail in our database" +msgstr "Kunne ikke finde denne mail i vores database" diff --git a/src/backup.js b/src/backup.js index 24083e29..eae7a7e4 100644 --- a/src/backup.js +++ b/src/backup.js @@ -18,9 +18,9 @@ import { createClient } from 'redis'; import { - updateBackupRedis, createPngBackup, - incrementialBackupRedis, + incrementalBackupRedis, + updateBackupRedis, } from './core/tilesBackup'; import canvases from './core/canvases'; @@ -122,8 +122,7 @@ function getDateFolder() { if (month < 10) month = `0${month}`; if (day < 10) day = `0${day}`; const dayDir = `${date.getUTCFullYear()}/${month}/${day}`; - const backupDir = `${dir}/${dayDir}`; - return backupDir; + return `${dir}/${dayDir}`; } async function dailyBackup() { @@ -139,25 +138,25 @@ async function dailyBackup() { await createPngBackup(backupRedis, canvases, backupDir); } catch (e) { fs.rmSync(backupDir, { recursive: true }); - console.log('Error occured during daily backup', e); + console.log('Error occurred during daily backup', e); } console.log('Daily full backup done'); } -async function incrementialBackup() { +async function incrementalBackup() { const backupDir = getDateFolder(); if (!fs.existsSync(backupDir)) { fs.mkdirSync(backupDir, { recursive: true }); } try { - await incrementialBackupRedis( + await incrementalBackupRedis( canvasRedis, backupRedis, canvases, backupDir, ); } catch (e) { - console.log('Error occured during incremential backup', e); + console.log('Error occurred during incremental backup', e); } } @@ -166,7 +165,7 @@ async function trigger() { if (!fs.existsSync(backupDir)) { await dailyBackup(); } else { - await incrementialBackup(); + await incrementalBackup(); } if (CMD) { runCmd(CMD); diff --git a/src/canvasesDesc.js b/src/canvasesDesc.js index 2c2500ce..37397e01 100644 --- a/src/canvasesDesc.js +++ b/src/canvasesDesc.js @@ -39,21 +39,21 @@ function getCanvases(t) { * no edit below here needed when adding/removing canvas */ - const localicedCanvases = {}; + const localizedCanvases = {}; const canvasKeys = Object.keys(canvases); for (let i = 0; i < canvasKeys.length; i += 1) { const key = canvasKeys[i]; - localicedCanvases[key] = { ...canvases[key] }; - localicedCanvases[key].desc = canvasDesc[key] + localizedCanvases[key] = { ...canvases[key] }; + localizedCanvases[key].desc = canvasDesc[key] || canvases[key].desc || `Canvas ${key}`; - localicedCanvases[key].title = canvasTitles[key] + localizedCanvases[key].title = canvasTitles[key] || canvases[key].title || `Canvas ${key}`; } - return localicedCanvases; + return localizedCanvases; } const lCanvases = {}; @@ -64,7 +64,7 @@ const lCanvases = {}; }); })(); -export function getLocalicedCanvases(lang) { +export function getLocalizedCanvases(lang) { return lCanvases[lang] || lCanvases.default; } diff --git a/src/components/BanInfo.jsx b/src/components/BanInfo.jsx index 5679b84e..d7e93934 100644 --- a/src/components/BanInfo.jsx +++ b/src/components/BanInfo.jsx @@ -63,7 +63,7 @@ const BanInfo = ({ close }) => { return (
- {t`You are banned. You think it is unjustifed? Check out the `}
+ {t`You are banned. You think it is unjustified? Check out the `}
{
const desc = getLinkDesc(href);
- // treat pixelplanet links seperately
+ // treat pixelplanet links separately
if (desc === window.location.hostname && href.includes('/#')) {
const coords = href.substring(href.indexOf('/#') + 1);
if (isPopUp() && window.opener && !window.opener.closed) {
diff --git a/src/components/Palette.jsx b/src/components/Palette.jsx
index 098bc84e..50751fa3 100644
--- a/src/components/Palette.jsx
+++ b/src/components/Palette.jsx
@@ -40,7 +40,7 @@ function getStylesByWindowSize(
paletteCols = 5;
flexDirection = 'row';
} else {
- // ordinary palette (one or two colums)
+ // ordinary palette (one or two columns)
spanSize = 24;
paletteCols = (windowHeight < 801) ? 2 : 1;
flexDirection = 'column';
diff --git a/src/components/UIPopUp.jsx b/src/components/UIPopUp.jsx
index f3d21dfa..a8500f31 100644
--- a/src/components/UIPopUp.jsx
+++ b/src/components/UIPopUp.jsx
@@ -5,7 +5,7 @@
import React, { useMemo } from 'react';
import { useSelector, useDispatch } from 'react-redux';
-import { selectWindowType, selectWIndowArgs } from '../store/selectors/popup';
+import { selectWindowType, selectWindowArgs } from '../store/selectors/popup';
import {
setWindowArgs,
setWindowTitle,
@@ -16,7 +16,7 @@ import COMPONENTS from './windows';
const UIPopUp = () => {
const windowType = useSelector(selectWindowType);
- const args = useSelector(selectWIndowArgs);
+ const args = useSelector(selectWindowArgs);
const [Content] = COMPONENTS[windowType];
@@ -27,7 +27,7 @@ const UIPopUp = () => {
setArgs: (newArgs) => dispatch(setWindowArgs(newArgs)),
setTitle: (title) => dispatch(setWindowTitle(title)),
// eslint-disable-next-line max-len
- changeType: (newType, newTitel, newArgs) => dispatch(changeWindowType(newType, newTitel, newArgs)),
+ changeType: (newType, newTitle, newArgs) => dispatch(changeWindowType(newType, newTitle, newArgs)),
}), [args]);
return (
diff --git a/src/components/UserAreaContent.jsx b/src/components/UserAreaContent.jsx
index 59f675f7..63f4cad2 100644
--- a/src/components/UserAreaContent.jsx
+++ b/src/components/UserAreaContent.jsx
@@ -59,7 +59,7 @@ const UserAreaContent = () => {
${t`welcome to our little community of pixelplacers, to use your account, you have to verify your mail. You can do that here: `} ${t`Click to Verify`}. ${t`Or by copying following url:`}
${verifyUrl}\n
- ${t`Have fun and don't hesitate to contact us if you encouter any problems :)`}
+ ${t`Have fun and don't hesitate to contact us if you encounter any problems :)`}
${t`Thanks`}
`;
this.sendMail(to, subject, html);
@@ -132,7 +132,7 @@ export class MailProvider {
/*
* not sure if this is needed yet
- * does it matter if spaming password reset mails or verifications mails?
+ * does it matter if spamming password reset mails or verifications mails?
*
if(!reguser.verified) {
logger.info(`Password reset mail for ${to} requested by ${ip} - mail not verified`);
@@ -169,7 +169,7 @@ export class MailProvider {
/*
* we do not use this right now
static cleanUsers() {
- // delete users that requier verification for more than 4 days
+ // delete users that require verification for more than 4 days
RegUser.destroy({
where: {
verificationReqAt: {
diff --git a/src/core/MarkdownParser.js b/src/core/MarkdownParser.js
index 6e6f0e28..be90564f 100644
--- a/src/core/MarkdownParser.js
+++ b/src/core/MarkdownParser.js
@@ -3,8 +3,8 @@
*
* We do not support all markdown, but do additionally parse extra
* stuff like pixelplanet coords and usernames and bare links.
- * This code is written in preparation for a possible imporementation in
- * WebAssambly, so it's all in a big loop
+ * This code is written in preparation for a possible implementation in
+ * WebAssembly, so it's all in a big loop
*/
import MString from './MString';
@@ -142,7 +142,7 @@ function parseMParagraph(text, opts, breakChar) {
/*
* parse Code Block
* start is first character after the initializing ```
- * we just parse till the ending occures
+ * we just parse till the ending occurs
*/
function parseCodeBlock(text) {
text.skipSpaces(false);
@@ -183,7 +183,7 @@ function parseQuote(text, opts) {
* parses Section (contains paragraphs, lists, etc. but no headings or quotes)
* @param text MString
* @param headingLevel the number of heading headingLevels we are in
- * @param indent ndentation that should be considered (when inside list)
+ * @param indent indentation that should be considered (when inside list)
* returns when encountering heading of <= headingLevel (iter is at # position)
* or heading-cancel with three spaces (iter is past newlines)
* or ident is smaller than given
@@ -264,7 +264,7 @@ function parseMSection(
curIndent + 1,
);
childMdArray = ['-', childMdArray];
- // lists are encapsuled
+ // lists are encapsulated
const capsule = (isUnorderedList) ? 'ul' : 'ol';
if (!mdArray.length || mdArray[mdArray.length - 1][0] !== capsule) {
mdArray.push([capsule, [childMdArray]]);
diff --git a/src/core/RpgEvent.js b/src/core/RpgEvent.js
index dd62443e..8f3e229d 100644
--- a/src/core/RpgEvent.js
+++ b/src/core/RpgEvent.js
@@ -167,7 +167,7 @@ class RpgEvent {
// make sure that its the center of a 3x3 area
const i = Math.floor(Math.random() * (canvasSize / TILE_SIZE - 2)) + 1;
const j = Math.floor(Math.random() * (canvasSize / TILE_SIZE - 2)) + 1;
- // backup it and schedul next event in 1h
+ // backup it and schedule next event in 1h
await setNextEvent(EVENT_GAP_MIN, i, j);
const timestamp = await nextEvent();
const x = i * TILE_SIZE - canvasSize / 2;
@@ -194,7 +194,7 @@ class RpgEvent {
async runEventLoop() {
/*
* if we aren't the main shard, we just wait and regularly check,
- * re-intilializing if we become it
+ * re-initializing if we become it
*/
if (!socketEvents.amIImportant()) {
this.iAmNotImportant = true;
@@ -281,7 +281,7 @@ class RpgEvent {
}
setTimeout(this.runEventLoop, 1000);
} else if (eventMinutes > STEPS[4]) {
- // 1min till Event: blinking solid cross red small fase
+ // 1min till Event: blinking solid cross red small faze
if (eventState !== 9 && eventState !== 10) {
this.eventState = 9;
RpgEvent.broadcastChatMessage(
diff --git a/src/core/Tile.js b/src/core/Tile.js
index 34de45b5..a2d7f42c 100644
--- a/src/core/Tile.js
+++ b/src/core/Tile.js
@@ -1,5 +1,5 @@
/*
- * basic functions for creating zommed tiles
+ * basic functions for creating zoomed tiles
* Used by tilewriter worker thread, so dont import too much.
*
* */
@@ -492,7 +492,7 @@ async function createEmptyTile(
/*
* created 4096x4096 texture of default canvas
- * @param canvasId numberical Id of canvas
+ * @param canvasId numerical Id of canvas
* @param canvas canvas data
* @param canvasTileFolder root folder where to save texture
*
diff --git a/src/core/Void.js b/src/core/Void.js
index 2f6128c0..1e885aed 100644
--- a/src/core/Void.js
+++ b/src/core/Void.js
@@ -29,7 +29,7 @@ class Void {
// Uint8Array to log pixels in area
area;
userArea;
- // current numberical data
+ // current numerical data
curRadius;
curAngle;
curAngleDelta;
@@ -129,7 +129,7 @@ class Void {
while (true) {
this.curAngle += this.curAngleDelta;
if (this.curAngle > 2 * Math.PI) {
- // it does skip some pixel, but thats ok
+ // it does skip some pixel, but that's ok
this.curRadius += 1;
if (this.curRadius > TARGET_RADIUS) {
this.cancel();
diff --git a/src/core/adminfunctions.js b/src/core/adminfunctions.js
index 5333bbe4..f8723036 100644
--- a/src/core/adminfunctions.js
+++ b/src/core/adminfunctions.js
@@ -48,7 +48,7 @@ import rollbackCanvasArea from './rollback';
/*
* Execute IP based actions (banning, whitelist, etc.)
* @param action what to do with the ip
- * @param ip already sanizized ip
+ * @param ip already sanitized ip
* @return text of success
*/
export async function executeIPAction(action, ips, logger = null) {
@@ -79,7 +79,7 @@ export async function executeIPAction(action, ips, logger = null) {
/*
* Execute IID based actions
* @param action what to do with the iid
- * @param iid already sanizized iid
+ * @param iid already sanitized iid
* @return text of success
*/
export async function executeIIDAction(
@@ -265,7 +265,7 @@ export async function executeImageAction(
}
/*
- * retgister responses on socket for Watch Actions
+ * register responses on socket for Watch Actions
*/
socketEvents.onReq('watch', (action, ...args) => {
if (action === 'getIIDSummary') {
@@ -466,7 +466,7 @@ export async function executeProtAction(
const width = u - x + 1;
const height = v - y + 1;
if (width * height > 10000000) {
- return [403, 'Can not set protection to more than 10m pixels at onec'];
+ return [403, 'Can not set protection to more than 10m pixels at once'];
}
const protect = action === 'protect';
const pxlCount = await protectCanvasArea(
diff --git a/src/core/chartSettings.js b/src/core/chartSettings.js
index da4a8b64..52b35867 100644
--- a/src/core/chartSettings.js
+++ b/src/core/chartSettings.js
@@ -296,8 +296,7 @@ export function getCPieOpts(isDarkMode) {
},
};
if (isDarkMode) {
- const sColor = '#e6e6e6';
- options.plugins.title.color = sColor;
+ options.plugins.title.color = '#e6e6e6';
}
return options;
}
diff --git a/src/core/config.js b/src/core/config.js
index 01590b27..ef371bed 100644
--- a/src/core/config.js
+++ b/src/core/config.js
@@ -51,7 +51,7 @@ export const HOURLY_EVENT = parseInt(process.env.HOURLY_EVENT, 10) || false;
// Accounts
export const APISOCKET_KEY = process.env.APISOCKET_KEY || null;
-// Comma seperated list of user ids of Admins
+// Comma separated list of user ids of Admins
export const ADMIN_IDS = (process.env.ADMIN_IDS)
? process.env.ADMIN_IDS.split(',').map((z) => parseInt(z, 10)) : [];
diff --git a/src/core/constants.js b/src/core/constants.js
index d5dbba68..975781e6 100644
--- a/src/core/constants.js
+++ b/src/core/constants.js
@@ -2,7 +2,7 @@
*/
// canvas size (width and height) MUST be 256 * 4^n to be able to stick
-// to established tiling convetions.
+// to established tiling conventions.
// (basically by sticking to that, we keep ourself many options open for the future)
// see OSM tiling: https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
export const MAX_SCALE = 40; // 52 in log2
diff --git a/src/core/draw.js b/src/core/draw.js
index 9e1e1e7b..71d7bbe4 100644
--- a/src/core/draw.js
+++ b/src/core/draw.js
@@ -43,13 +43,13 @@ setInterval(() => {
/**
*
- * By Offset is prefered on server side
+ * By Offset is preferred on server side
* This gets used by websocket pixel placing requests
* @param user user that can be registered, but doesn't have to
* @param canvasId
* @param i Chunk coordinates
* @param j
- * @param pixels Array of indiviual pixels within the chunk, with:
+ * @param pixels Array of individual pixels within the chunk, with:
* [[offset, color], [offset2, color2],...]
* Offset is the offset of the pixel within the chunk
* @return Promise