From c45a7bab7f7ae5260602f75c84e39658a1b5d249 Mon Sep 17 00:00:00 2001 From: HF Date: Mon, 1 Feb 2021 20:16:01 +0100 Subject: [PATCH] change webpack config variables from arguments to env --- README.md | 4 + i18n/dz.po | 140 +++-- i18n/fr.po | 2 +- i18n/template.pot | 1016 ++++++++++++++++++++++++++++++++ i18n/template.txt | 677 --------------------- package.json | 1 + src/core/constants.js | 2 - webpack.config.client.babel.js | 34 +- webpack.config.web.babel.js | 217 ++++--- 9 files changed, 1218 insertions(+), 875 deletions(-) delete mode 100644 i18n/template.txt diff --git a/README.md b/README.md index fb4fd35..f861f5c 100644 --- a/README.md +++ b/README.md @@ -255,6 +255,10 @@ Run `npm run lint:src` to check for code errors and warnings or `npm run lint -- Please do not produce too many additional warnings. [ttag](https://github.com/ttag-org/ttag/) is used for handling translations. For server-side rendering the `Accept-Language` header gets checked and the first locale used and on-the-fly translated (`src/core/ttag.js` provides the functions for it). On the client-side a seperate bundle for every language gets provided. +To update the language definitions in `i18n/template.pot` and `i18n/template-ssr.pot` run +``` +npm run extract +``` You can use `npm run babel-node ./your/script.js` to execute a script with local babel. diff --git a/i18n/dz.po b/i18n/dz.po index e7ec0c6..943689f 100644 --- a/i18n/dz.po +++ b/i18n/dz.po @@ -3,7 +3,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" "Project-Id-Version: \n" -"PO-Revision-Date: 2021-01-31 11:31+0100\n" +"PO-Revision-Date: 2021-02-01 20:15+0100\n" "Last-Translator: \n" "Language-Team: Dzongkha\n" "Language: dz\n" @@ -134,42 +134,41 @@ msgstr "གཟུགས་ཀྱི་ཡན་ལག ཁར་ཁིར།" msgid "Pixels placed" msgstr "གློག་རིག་ཡོངས་འབྲེལ། སྐུ་དང་མཆོད་རྟེན་གྱི་སྲོག་ཤིང༌།" -#: src/components/CanvasSelectModal.jsx:67 -#: src/components/CanvasSwitchButton.jsx:20 +#: src/components/CanvasSelectModal.jsx:67 src/components/CanvasSwitchButton.jsx:20 msgid "Canvas Selection" -msgstr "" +msgstr "རྒྱ་ལས་ཐོན་པའི་ཁ་ཤ་དར་རས། ཟོགཔོ་ཕར་བསལ་ནི།" #: src/components/DownloadButton.jsx:37 msgid "Make Screenshot" -msgstr "" +msgstr "གསར་གཏོད་འབད་མི། གསལ་གཞི། ཀྲོབ་མདའི་མདེའུ། " #: src/components/LogInButton.jsx:20 src/components/UserAreaModal.jsx:160 msgid "User Area" -msgstr "" +msgstr "རྩེདམོ་རྩེ་མི། ལུང་ཕྱོགས། " #: src/components/SettingsButton.jsx:20 src/components/SettingsModal.jsx:267 msgid "Settings" -msgstr "" +msgstr "ཟོགཔོ་ཕར་བསལ་ནི།" #: src/components/HelpButton.jsx:20 msgid "Help" -msgstr "" +msgstr "གྲོགས་རམ།" #: src/components/Chat.jsx:143 msgid "Channel settings" -msgstr "" +msgstr "ཕྱོགས་གཅིག་ཤུགས་བཏོན། ཟོགཔོ་ཕར་བསལ་ནི།" #: src/components/Chat.jsx:152 msgid "maximize" -msgstr "" +msgstr "ཡོངས་སྤྱོད།" #: src/components/Chat.jsx:168 msgid "Start chatting here" -msgstr "" +msgstr "གོ་སྐབས། ངག་གཤིས། ཚུར། " #: src/components/Chat.jsx:200 msgid "Chat here" -msgstr "" +msgstr "ངག་གཤིས། ཚུར།" #: src/components/Chat.jsx:220 msgid "You must be logged in to chat" @@ -177,58 +176,59 @@ msgstr "" #: src/components/PalselButton.jsx:25 msgid "Close Palette" -msgstr "" +msgstr "ཁེ་བཙོང༌། རྩྭ་གདན། " #: src/components/PalselButton.jsx:25 msgid "Open Palette" -msgstr "" +msgstr "ཀུན་མཐོང་མཛད་རིམ། རྩྭ་གདན" #: src/components/GlobeButton.jsx:31 msgid "Globe View" -msgstr "" +msgstr "ཐད་རིལ་རི། གཟུགས་སྣང༌། " #: src/components/UserContextMenu.jsx:72 msgid "Ping" -msgstr "" +msgstr "གསལ་བསྒྲགས་འབད་བ།" #: src/components/UserContextMenu.jsx:97 msgid "DM" -msgstr "" +msgstr "གང་ཟག་གི་མིང་ཚབ། ཁ་འཐེན། " #: src/components/UserContextMenu.jsx:107 msgid "Block" -msgstr "" +msgstr "ཁང་སྡེ། " #: src/components/HelpModal.jsx:34 src/components/HelpModal.jsx:35 msgid "Privacy Policy" -msgstr "" +msgstr "རང་གསང༌། ཉེན་ལེན་གན་ཡིག " #: src/components/HelpModal.jsx:36 src/components/HelpModal.jsx:37 msgid "Terms of Service" -msgstr "" +msgstr "གནས་ཡུན་དང་ཆ་རྐྱེན། " #: src/components/HelpModal.jsx:40 msgid "your IP" -msgstr "" +msgstr "ཁྱོད་ར། གློག་རིག་ཡོངས་འབྲེལ། ཁ་གསལ་སྦེ་བྲི་ནི།" #: src/components/HelpModal.jsx:46 msgid "Place color pixels on a large canvas with other players online!" msgstr "" +"གནས་གཟུང་བ། ཚིག་དོན་ཁ་གསལ་ཡོད་པ། གྲུ་བཞི། གཅིག ཁྱབ་ཆེ་ཏོག་ཏོ། རྒྱ་ལས་ཐོན་པའི་ཁ་ཤ་དར་རས། གཅིག་ཁར་ཟེར་བའི་དོན། " +"རྩེདམོ་རྩེ་མི།" #: 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." +"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 "" #: src/components/HelpModal.jsx:51 msgid "" -"Higher zoomlevels take some time to update, the 3D globe gets updated at " -"least once per day." +"Higher zoomlevels take some time to update, the 3D globe gets updated at least once per " +"day." msgstr "" #: src/components/HelpModal.jsx:52 @@ -249,8 +249,8 @@ msgstr "" #: 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: " +"The bare map data that we use, together with converted OpenStreetMap tiles for " +"orientation, can be downloaded from mega.nz here: " msgstr "" #: src/components/HelpModal.jsx:59 @@ -260,9 +260,9 @@ msgstr "" #: 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 "" #: src/components/HelpModal.jsx:63 src/components/HelpModal.jsx:80 @@ -303,8 +303,7 @@ msgstr "" #: 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 "" #: src/components/HelpModal.jsx:73 @@ -322,9 +321,7 @@ msgstr "" #: src/components/HelpModal.jsx:76 #, javascript-format -msgid "" -"Hold right ${ bindShift } for placing while moving mouse according to " -"historical view" +msgid "Hold right ${ bindShift } for placing while moving mouse according to historical view" msgstr "" #: src/components/HelpModal.jsx:77 src/components/HelpModal.jsx:88 @@ -334,8 +331,8 @@ msgstr "" #: 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 "" #: src/components/HelpModal.jsx:84 @@ -350,8 +347,8 @@ msgstr "" #: 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 "" #: src/components/HelpModal.jsx:87 @@ -360,8 +357,7 @@ msgstr "" #: src/components/HelpModal.jsx:89 #, javascript-format -msgid "" -"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a pixel" +msgid "${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a pixel" msgstr "" #: src/components/HelpModal.jsx:92 @@ -371,14 +367,13 @@ msgstr "" #: src/components/HelpModal.jsx:97 #, javascript-format msgid "" -"This site is protected by reCAPTCHA and the Google ${ reCaptchaPP } and " -"${ reCaptchaTOS } apply." +"This site is protected by reCAPTCHA and the Google ${ reCaptchaPP } and ${ reCaptchaTOS } " +"apply." msgstr "" #: 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 "" #: src/components/HelpModal.jsx:113 @@ -426,9 +421,7 @@ 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." +msgid "Zoom in instead of placing a pixel when you tap the canvas and your zoom is small." msgstr "" #: src/components/SettingsModal.jsx:158 @@ -475,8 +468,8 @@ msgstr "" msgid "Register new account here" msgstr "" -#: src/components/ForgotPasswordModal.jsx:20 -#: src/components/RegisterModal.jsx:21 src/components/UserAreaModal.jsx:130 +#: src/components/ForgotPasswordModal.jsx:20 src/components/RegisterModal.jsx:21 +#: src/components/UserAreaModal.jsx:130 msgid "Consider joining us on Guilded:" msgstr "" @@ -534,16 +527,16 @@ 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." +"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)." +"Here we collect those canvases to archive them in a proper way (which is currently just " +"one)." msgstr "" #: src/components/ArchiveModal.jsx:24 @@ -552,17 +545,17 @@ 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." +"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." +"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 @@ -571,9 +564,8 @@ msgstr "" #: src/components/CanvasSelectModal.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:" +"Select the canvas you want to use. Every canvas is unique and has different palettes, " +"cooldown and requirements. Archive of closed canvases can be accessed here:" msgstr "" #: src/components/CanvasSelectModal.jsx:37 @@ -761,8 +753,8 @@ msgstr "" #: src/components/Admintools.jsx:313 msgid "" -"Set protection of areas (if you need finer grained control, " -"use protect with image upload and alpha layers)" +"Set protection of areas (if you need finer grained control, use protect " +"with image upload and alpha layers)" msgstr "" #: src/components/Admintools.jsx:392 @@ -945,8 +937,8 @@ msgstr "" #: src/components/ChangeMail.jsx:89 msgid "" -"Changed Mail successfully. We sent you a verification mail, " -"please verify your new mail adress." +"Changed Mail successfully. We sent you a verification mail, please verify " +"your new mail adress." msgstr "" #: src/components/ChangeMail.jsx:119 diff --git a/i18n/fr.po b/i18n/fr.po index 64b5dbe..eae2f3a 100644 --- a/i18n/fr.po +++ b/i18n/fr.po @@ -422,7 +422,7 @@ msgid "" "This site is protected by hCAPTCHA and its ${ hCaptchaPP } and " "${ hCaptchaTOS } apply." msgstr "" -"Ce site est protégé par hCAPTCHA et son ${ hCaptchaPP } et ${ hCaptcha TOS } " +"Ce site est protégé par hCAPTCHA et son ${ hCaptchaPP } et ${ hCaptchaTOS } " "s'appliquent." #: src/components/HelpModal.jsx:113 diff --git a/i18n/template.pot b/i18n/template.pot index 9630c59..5b3f5d7 100644 --- a/i18n/template.pot +++ b/i18n/template.pot @@ -91,6 +91,1022 @@ msgstr "" msgid "Error ${ retCode }" msgstr "" +#: src/components/CoordinatesBox.jsx:37 #: src/controls/keypress.js:59 msgid "Copied!" +msgstr "" + +#: src/components/ExpandMenuButton.jsx:19 +msgid "Close Menu" +msgstr "" + +#: src/components/ExpandMenuButton.jsx:19 +msgid "Open Menu" +msgstr "" + +#: src/components/Admintools.jsx:219 +#: src/components/ChannelContextMenu.jsx:85 +#: src/components/ModalRoot.jsx:60 +msgid "Close" +msgstr "" + +#: src/components/ChatButton.jsx:61 +msgid "Close Chat" +msgstr "" + +#: src/components/ChatButton.jsx:61 +msgid "Open Chat" +msgstr "" + +#: src/components/OnlineBox.jsx:22 +msgid "User online" +msgstr "" + +#: src/components/OnlineBox.jsx:25 +msgid "Pixels placed" +msgstr "" + +#: src/components/CanvasSelectModal.jsx:67 +#: src/components/CanvasSwitchButton.jsx:20 +msgid "Canvas Selection" +msgstr "" + +#: src/components/Converter.jsx:609 +#: src/components/CoordinatesBox.jsx:26 +msgid "Copy to Clipboard" +msgstr "" + +#: src/components/ChannelContextMenu.jsx:73 +msgid "Mute" +msgstr "" + +#: src/components/UserContextMenu.jsx:72 +msgid "Ping" +msgstr "" + +#: src/components/UserContextMenu.jsx:97 +msgid "DM" +msgstr "" + +#: src/components/UserContextMenu.jsx:107 +msgid "Block" +msgstr "" + +#: src/components/PalselButton.jsx:25 +msgid "Close Palette" +msgstr "" + +#: src/components/PalselButton.jsx:25 +msgid "Open Palette" +msgstr "" + +#: src/components/GlobeButton.jsx:31 +msgid "Globe View" +msgstr "" + +#: src/components/SettingsButton.jsx:20 +#: src/components/SettingsModal.jsx:267 +msgid "Settings" +msgstr "" + +#: src/components/LogInButton.jsx:20 +#: src/components/UserAreaModal.jsx:160 +msgid "User Area" +msgstr "" + +#: src/components/HelpButton.jsx:20 +msgid "Help" +msgstr "" + +#: src/components/DownloadButton.jsx:37 +msgid "Make Screenshot" +msgstr "" + +#: src/components/Chat.jsx:143 +msgid "Channel settings" +msgstr "" + +#: src/components/Chat.jsx:152 +msgid "maximize" +msgstr "" + +#: src/components/Chat.jsx:168 +msgid "Start chatting here" +msgstr "" + +#: src/components/Chat.jsx:200 +msgid "Chat here" +msgstr "" + +#: src/components/Chat.jsx:220 +msgid "You must be logged in to chat" +msgstr "" + +#: src/components/ForgotPasswordModal.jsx:16 +msgid "Enter your mail adress and we will send you a new password:" +msgstr "" + +#: src/components/ForgotPasswordModal.jsx:20 +#: src/components/RegisterModal.jsx:21 +#: src/components/UserAreaModal.jsx:130 +msgid "Consider joining us on Guilded:" +msgstr "" + +#: src/components/ForgotPasswordModal.jsx:37 +msgid "Restore my Password" +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/ChatModal.jsx:35 +msgid "Chat" +msgstr "" + +#: src/components/RegisterModal.jsx:18 +msgid "Register new account here" +msgstr "" + +#: src/components/RegisterModal.jsx:38 +msgid "Register New Account" +msgstr "" + +#: src/components/CanvasSelectModal.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 "" + +#: src/components/CanvasSelectModal.jsx:37 +msgid "Archive" +msgstr "" + +#: src/components/UserAreaModal.jsx:33 +msgid "Login to access more features and stats." +msgstr "" + +#: src/components/UserAreaModal.jsx:35 +msgid "Login with Name or Mail:" +msgstr "" + +#: src/components/UserAreaModal.jsx:42 +msgid "I forgot my Password." +msgstr "" + +#: src/components/UserAreaModal.jsx:43 +msgid "or login with:" +msgstr "" + +#: src/components/UserAreaModal.jsx:84 +msgid "or register here:" +msgstr "" + +#: src/components/UserAreaModal.jsx:85 +msgid "Register" +msgstr "" + +#: src/components/UserAreaModal.jsx:107 +msgid "Profile" +msgstr "" + +#: src/components/UserAreaModal.jsx:113 +msgid "Ranking" +msgstr "" + +#: src/components/UserAreaModal.jsx:116 +msgid "Converter" +msgstr "" + +#: src/components/UserAreaModal.jsx:122 +msgid "Admintools" +msgstr "" + +#: src/components/UserAreaModal.jsx:122 +msgid "Modtools" +msgstr "" + +#: src/components/UserAreaModal.jsx:123 +msgid "Loading..." +msgstr "" + +#: src/components/HelpModal.jsx:34 +#: src/components/HelpModal.jsx:35 +msgid "Privacy Policy" +msgstr "" + +#: src/components/HelpModal.jsx:36 +#: src/components/HelpModal.jsx:37 +msgid "Terms of Service" +msgstr "" + +#: src/components/HelpModal.jsx:40 +msgid "your IP" +msgstr "" + +#: src/components/HelpModal.jsx:46 +msgid "Place color pixels on a large canvas with other players online!" +msgstr "" + +#: 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 "" + +#: src/components/HelpModal.jsx:51 +msgid "" +"Higher zoomlevels take some time to update, the 3D globe gets updated at " +"least once per day." +msgstr "" + +#: src/components/HelpModal.jsx:52 +msgid "Have fun!" +msgstr "" + +#: src/components/HelpModal.jsx:54 +msgid "recommended" +msgstr "" + +#: src/components/HelpModal.jsx:55 +msgid "Source on " +msgstr "" + +#: src/components/HelpModal.jsx:56 +msgid "Map Data" +msgstr "" + +#: 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 "" + +#: src/components/HelpModal.jsx:59 +msgid "Detected as Proxy?" +msgstr "" + +#: 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." +msgstr "" + +#: src/components/HelpModal.jsx:63 +#: src/components/HelpModal.jsx:80 +msgid "Controls" +msgstr "" + +#: src/components/HelpModal.jsx:65 +msgid "Click a color in palette to select it" +msgstr "" + +#: src/components/HelpModal.jsx:66 +#, javascript-format +msgid "Press ${ bindG } to toggle grid" +msgstr "" + +#: src/components/HelpModal.jsx:67 +msgid "Press ${ bindX } to toggle showing of pixel activity" +msgstr "" + +#: src/components/HelpModal.jsx:68 +#, javascript-format +msgid "Press ${ bindH } to toggle historical view" +msgstr "" + +#: src/components/HelpModal.jsx:69 +msgid "Press ${ bindR } to copy coordinates" +msgstr "" + +#: src/components/HelpModal.jsx:70 +#, javascript-format +msgid "Press ${ bindQ } or ${ bindE } to zoom" +msgstr "" + +#: src/components/HelpModal.jsx:71 +#: src/components/HelpModal.jsx:82 +#, javascript-format +msgid "Press ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } to move" +msgstr "" + +#: src/components/HelpModal.jsx:72 +#: src/components/HelpModal.jsx:83 +#, javascript-format +msgid "Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move" +msgstr "" + +#: src/components/HelpModal.jsx:73 +msgid "Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move" +msgstr "" + +#: src/components/HelpModal.jsx:74 +#, javascript-format +msgid "Scroll ${ mouseSymbol } mouse wheel or ${ touchSymbol } pinch to zoom" +msgstr "" + +#: src/components/HelpModal.jsx:75 +msgid "Hold left ${ bindShift } for placing while moving mouse" +msgstr "" + +#: src/components/HelpModal.jsx:76 +#, javascript-format +msgid "" +"Hold right ${ bindShift } for placing while moving mouse according to " +"historical view" +msgstr "" + +#: src/components/HelpModal.jsx:77 +#: src/components/HelpModal.jsx:88 +#, javascript-format +msgid "${ mouseSymbol } Left click or ${ touchSymbol } tap to place a pixel" +msgstr "" + +#: 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" +msgstr "" + +#: src/components/HelpModal.jsx:84 +msgid "Press ${ bindE } and ${ bindC } to fly up and down" +msgstr "" + +#: src/components/HelpModal.jsx:85 +#, javascript-format +msgid "${ mouseSymbol } Hold left mouse button and drag mouse to rotate" +msgstr "" + +#: src/components/HelpModal.jsx:86 +#, javascript-format +msgid "" +"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse " +"button and drag to zoom" +msgstr "" + +#: src/components/HelpModal.jsx:87 +msgid "${ mouseSymbol } Right click and drag mouse to pan" +msgstr "" + +#: src/components/HelpModal.jsx:89 +#, javascript-format +msgid "" +"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a " +"pixel" +msgstr "" + +#: src/components/HelpModal.jsx:92 +msgid "Partners:" +msgstr "" + +#: src/components/HelpModal.jsx:97 +#, javascript-format +msgid "" +"This site is protected by reCAPTCHA and the Google ${ reCaptchaPP } and ${ " +"reCaptchaTOS } apply." +msgstr "" + +#: src/components/HelpModal.jsx:103 +msgid "" +"This site is protected by hCAPTCHA and its ${ hCaptchaPP } and ${ " +"hCaptchaTOS } apply." +msgstr "" + +#: src/components/HelpModal.jsx:113 +msgid "Welcome to PixelPlanet.fun" +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/Converter.jsx:423 +#: 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/ChangeMail.jsx:104 +#: src/components/ChangeName.jsx:82 +#: src/components/ChangePassword.jsx:120 +#: src/components/DeleteAccount.jsx:82 +#: src/components/LogInForm.jsx:97 +#: src/components/NewPasswordForm.jsx:93 +#: src/components/SignUpForm.jsx:118 +msgid "Error" +msgstr "" + +#: src/components/SignUpForm.jsx:126 +msgid "Name" +msgstr "" + +#: src/components/NewPasswordForm.jsx:100 +#: src/components/SignUpForm.jsx:133 +msgid "Email" +msgstr "" + +#: src/components/ChangeMail.jsx:112 +#: src/components/DeleteAccount.jsx:89 +#: src/components/LogInForm.jsx:111 +#: src/components/SignUpForm.jsx:140 +msgid "Password" +msgstr "" + +#: src/components/SignUpForm.jsx:149 +msgid "Confirm Password" +msgstr "" + +#: src/components/Admintools.jsx:306 +#: src/components/Admintools.jsx:387 +#: src/components/Admintools.jsx:461 +#: src/components/Admintools.jsx:505 +#: src/components/Admintools.jsx:589 +#: src/components/NewPasswordForm.jsx:104 +#: src/components/SignUpForm.jsx:152 +msgid "Submit" +msgstr "" + +#: src/components/ChangeMail.jsx:125 +#: src/components/ChangeName.jsx:94 +#: src/components/ChangePassword.jsx:152 +#: src/components/DeleteAccount.jsx:95 +#: src/components/NewPasswordForm.jsx:106 +#: src/components/SignUpForm.jsx:158 +msgid "Cancel" +msgstr "" + +#: src/components/NewPasswordForm.jsx:83 +msgid "Sent you a mail with instructions to reset your password." +msgstr "" + +#: src/components/CanvasItem.jsx:46 +msgid "Cooldown" +msgstr "" + +#: src/components/CanvasItem.jsx:52 +msgid "Stacking till" +msgstr "" + +#: src/components/CanvasItem.jsx:54 +msgid "Ranked" +msgstr "" + +#: src/components/CanvasItem.jsx:56 +msgid "Requirements" +msgstr "" + +#: src/components/CanvasItem.jsx:58 +msgid "User Account" +msgstr "" + +#: src/components/CanvasItem.jsx:60 +#, javascript-format +msgid "and ${ canvas.req } Pixels set" +msgstr "" + +#: src/components/CanvasItem.jsx:64 +msgid "Dimensions" +msgstr "" + +#: src/components/Rankings.jsx:37 +msgid "Total" +msgstr "" + +#: src/components/Rankings.jsx:45 +msgid "Daily" +msgstr "" + +#: src/components/Rankings.jsx:49 +msgid "Ranking updates every 5 min. Daily rankings get reset at midnight UTC." +msgstr "" + +#: src/components/LogInForm.jsx:104 +msgid "Name or Email" +msgstr "" + +#: src/components/LogInForm.jsx:115 +msgid "LogIn" +msgstr "" + +#: src/components/UserArea.jsx:57 +msgid "Todays Placed Pixels" +msgstr "" + +#: src/components/UserArea.jsx:61 +msgid "Daily Rank" +msgstr "" + +#: src/components/UserArea.jsx:66 +msgid "Placed Pixels" +msgstr "" + +#: src/components/UserArea.jsx:70 +msgid "Total Rank" +msgstr "" + +#: src/components/UserArea.jsx:75 +#, javascript-format +msgid "Your name is: ${ name }" +msgstr "" + +#: src/components/UserArea.jsx:81 +msgid "Log out" +msgstr "" + +#: src/components/UserArea.jsx:93 +msgid "Change Username" +msgstr "" + +#: src/components/UserArea.jsx:108 +msgid "Change Mail" +msgstr "" + +#: src/components/UserArea.jsx:122 +msgid "Change Password" +msgstr "" + +#: src/components/UserArea.jsx:134 +msgid "Delete Account" +msgstr "" + +#: src/components/UserArea.jsx:147 +msgid "Social Settings" +msgstr "" + +#: src/components/Admintools.jsx:179 +msgid "Build image on canvas." +msgstr "" + +#: src/components/Admintools.jsx:182 +msgid "Build image and set it to protected." +msgstr "" + +#: src/components/Admintools.jsx:185 +msgid "Build image, but reset cooldown to unset-pixel cd." +msgstr "" + +#: src/components/Admintools.jsx:248 +msgid "Image Upload" +msgstr "" + +#: src/components/Admintools.jsx:249 +msgid "Upload images to canvas" +msgstr "" + +#: src/components/Admintools.jsx:251 +msgid "File" +msgstr "" + +#: src/components/Admintools.jsx:271 +msgid "Coordinates in X_Y format:" +msgstr "" + +#: src/components/Admintools.jsx:311 +msgid "Pixel Protection" +msgstr "" + +#: src/components/Admintools.jsx:313 +msgid "" +"Set protection of areas (if you need finer grained control, " +"use protect with image upload and alpha layers)" +msgstr "" + +#: src/components/Admintools.jsx:392 +msgid "Rollback to Date" +msgstr "" + +#: src/components/Admintools.jsx:394 +msgid "Rollback an area of the canvas to a set date (00:00 UTC)" +msgstr "" + +#: src/components/Admintools.jsx:468 +msgid "IP Actions" +msgstr "" + +#: src/components/Admintools.jsx:470 +msgid "Do stuff with IPs (one IP per line)" +msgstr "" + +#: src/components/Admintools.jsx:510 +msgid "Manage Moderators" +msgstr "" + +#: src/components/Admintools.jsx:512 +msgid "Remove Moderator" +msgstr "" + +#: src/components/Admintools.jsx:544 +msgid "There are no mods" +msgstr "" + +#: src/components/Admintools.jsx:549 +msgid "Assign new Mod" +msgstr "" + +#: src/components/Admintools.jsx:552 +msgid "Enter UserName of new Mod" +msgstr "" + +#: src/components/Admintools.jsx:561 +msgid "User Name" +msgstr "" + +#: src/components/Converter.jsx:274 +msgid "Choose Canvas" +msgstr "" + +#: src/components/Converter.jsx:300 +msgid "Palette Download" +msgstr "" + +#: src/components/Converter.jsx:302 +#, javascript-format +msgid "Palette for ${ gimpLink }" +msgstr "" + +#: src/components/Converter.jsx:320 +#, javascript-format +msgid "Credit for the Palette of the Moon goes to ${ starhouseLink }." +msgstr "" + +#: src/components/Converter.jsx:323 +msgid "Image Converter" +msgstr "" + +#: src/components/Converter.jsx:324 +msgid "Convert an image to canvas colors" +msgstr "" + +#: src/components/Converter.jsx:335 +msgid "Choose Strategy" +msgstr "" + +#: src/components/Converter.jsx:362 +msgid "Choose Color Mode" +msgstr "" + +#: src/components/Converter.jsx:400 +msgid "Add Grid (uncheck if you need a 1:1 template)" +msgstr "" + +#: src/components/Converter.jsx:425 +#: src/components/Converter.jsx:441 +msgid "Offset" +msgstr "" + +#: src/components/Converter.jsx:471 +msgid "Scale Image" +msgstr "" + +#: src/components/Converter.jsx:483 +msgid "Width" +msgstr "" + +#: src/components/Converter.jsx:513 +msgid "Height" +msgstr "" + +#: src/components/Converter.jsx:551 +msgid "Keep Ratio" +msgstr "" + +#: src/components/Converter.jsx:564 +msgid "Anti Aliasing" +msgstr "" + +#: src/components/Converter.jsx:578 +msgid "Reset" +msgstr "" + +#: src/components/Converter.jsx:597 +msgid "Download Template" +msgstr "" + +#: src/utils/validation.js:18 +msgid "Email can't be empty." +msgstr "" + +#: src/utils/validation.js:19 +msgid "Email should be at least 5 characters long." +msgstr "" + +#: src/utils/validation.js:20 +msgid "Email can't be longer than 40 characters." +msgstr "" + +#: src/utils/validation.js:21 +msgid "Email should at least contain a dot" +msgstr "" + +#: src/utils/validation.js:23 +msgid "Email should contain a @" +msgstr "" + +#: src/utils/validation.js:30 +msgid "Name can't be empty." +msgstr "" + +#: src/utils/validation.js:31 +msgid "Name must be at least 4 characters long" +msgstr "" + +#: src/utils/validation.js:32 +msgid "Name must be shorter than 26 characters" +msgstr "" + +#: src/utils/validation.js:39 +msgid "Name contains invalid character like @, /, \\ or #" +msgstr "" + +#: src/utils/validation.js:54 +msgid "No password given." +msgstr "" + +#: src/utils/validation.js:57 +msgid "Password must be at least 6 characters long." +msgstr "" + +#: src/utils/validation.js:60 +msgid "Password must be shorter than 60 characters." +msgstr "" + +#: src/utils/validation.js:74 +msgid "Could not connect to server, please try again later :(" +msgstr "" + +#: src/utils/validation.js:80 +msgid "I think we experienced some error :(" +msgstr "" + +#: src/components/SocialSettings.jsx:39 +msgid "Block all Private Messages" +msgstr "" + +#: src/components/SocialSettings.jsx:57 +msgid "Unblock Users" +msgstr "" + +#: src/components/SocialSettings.jsx:81 +msgid "You have no users blocked" +msgstr "" + +#: src/components/DeleteAccount.jsx:93 +msgid "Yes, Delete My Account!" +msgstr "" + +#: src/components/ChangeMail.jsx:89 +msgid "" +"Changed Mail successfully. We sent you a verification mail, " +"please verify your new mail adress." +msgstr "" + +#: src/components/ChangeMail.jsx:119 +msgid "New Mail" +msgstr "" + +#: src/components/ChangeMail.jsx:123 +#: src/components/ChangeName.jsx:92 +#: src/components/ChangePassword.jsx:150 +msgid "Save" +msgstr "" + +#: src/components/ChangeName.jsx:88 +msgid "New Username" +msgstr "" + +#: src/components/ChangePassword.jsx:18 +msgid "Passwords do not match." +msgstr "" + +#: src/components/ChangePassword.jsx:103 +msgid "Changed Password successfully." +msgstr "" + +#: src/components/ChangePassword.jsx:129 +msgid "Old Password" +msgstr "" + +#: src/components/ChangePassword.jsx:137 +msgid "New Password" +msgstr "" + +#: src/components/ChangePassword.jsx:146 +msgid "Confirm New Password" +msgstr "" + +#: src/components/UserMessages.jsx:41 +msgid "A new verification mail is getting sent to you." +msgstr "" + +#: src/components/UserMessages.jsx:75 +msgid "You successfully linked your mc account." +msgstr "" + +#: src/components/UserMessages.jsx:76 +msgid "You denied." +msgstr "" + +#: src/components/UserMessages.jsx:94 +msgid "" +"Please verify your mail address \n" +"or your account could get deleted after a few days." +msgstr "" + +#: src/components/UserMessages.jsx:111 +msgid "Click here to request a new verification mail." +msgstr "" + +#: src/components/UserMessages.jsx:120 +#, javascript-format +msgid "You requested to link your mc account ${ minecraftname }." +msgstr "" + +#: src/components/UserMessages.jsx:140 +msgid "Accept" +msgstr "" + +#: src/components/UserMessages.jsx:150 +msgid "Deny" +msgstr "" + +#: src/components/HelpModal.jsx:15 +#: src/components/SettingsModal.jsx:125 +msgctxt "keybinds" +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 "" + +#: src/components/HelpModal.jsx:18 +msgctxt "keybinds" +msgid "R" +msgstr "" + +#: src/components/HelpModal.jsx:19 +msgctxt "keybinds" +msgid "Q" +msgstr "" + +#: src/components/HelpModal.jsx:20 +msgctxt "keybinds" +msgid "E" +msgstr "" + +#: src/components/HelpModal.jsx:21 +msgctxt "keybinds" +msgid "W" +msgstr "" + +#: src/components/HelpModal.jsx:22 +msgctxt "keybinds" +msgid "A" +msgstr "" + +#: src/components/HelpModal.jsx:23 +msgctxt "keybinds" +msgid "S" +msgstr "" + +#: src/components/HelpModal.jsx:24 +msgctxt "keybinds" +msgid "D" +msgstr "" + +#: src/components/HelpModal.jsx:31 +msgctxt "keybinds" +msgid "Shift" +msgstr "" + +#: src/components/HelpModal.jsx:32 +msgctxt "keybinds" +msgid "C" +msgstr "" + +#: src/components/SettingsModal.jsx:140 +msgctxt "keybinds" +msgid "M" msgstr "" \ No newline at end of file diff --git a/i18n/template.txt b/i18n/template.txt deleted file mode 100644 index fb3a23d..0000000 --- a/i18n/template.txt +++ /dev/null @@ -1,677 +0,0 @@ -"Copied!" - -"Error :(" - -"Didn't get an answer from pixelplanet. Maybe try to refresh?" - -"OK" - -"Invalid Canvas" - -"This canvas doesn't exist" - -"Invalid Coordinates" - -"x out of bounds" - -"y out of bounds" - -"z out of bounds" - -"Wrong Color" - -"Invalid color selected" - -"Just for registered Users" - -"You have to be logged in to place on this canvas" - -"Place more :)" - -"You can not access this canvas yet. You need to place more pixels" - -"Pixel protected!" - -"No Proxies Allowed :(" - -"You are using a Proxy." - -"Weird" - -"Couldn't set Pixel" - -"Error ${ retCode }" - -"Close" - -"Close Menu" - -"Open Menu" - -"Close Chat" - -"Open Chat" - -"Copy to Clipboard" - -"User online" - -"Pixels placed" - -"Canvas Selection" - -"Make Screenshot" - -"User Area" - -"Settings" - -"Help" - -"Channel settings" - -"maximize" - -"Start chatting here" - -"Chat here" - -"You must be logged in to chat" - -"Close Palette" - -"Open Palette" - -"Globe View" - -"Ping" - -"DM" - -"Block" - -"Privacy Policy" - -"Terms of Service" - -"your IP" - -"Place color pixels on a large canvas with other players online!" - -"" -"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." - -"" -"Higher zoomlevels take some time to update, the 3D globe gets updated at " -"least once per day." - -"Have fun!" - -"recommended" - -"Source on " - -"Map Data" - -"" -"The bare map data that we use, together with converted OpenStreetMap tiles " -"for orientation, can be downloaded from mega.nz here: " - -"Detected as Proxy?" - -"" -"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." - -"Controls" - -"Click a color in palette to select it" - -"Press ${ bindG } to toggle grid" - -"Press ${ bindX } to toggle showing of pixel activity" - -"Press ${ bindH } to toggle historical view" - -"Press ${ bindR } to copy coordinates" - -"Press ${ bindQ } or ${ bindE } to zoom" - -"Press ${ bindW }, ${ bindA }, ${ bindS }, ${ bindD } to move" - -"Press ${ bindAUp }, ${ bindALeft }, ${ bindADown }, ${ bindARight } to move" - -"Drag ${ mouseSymbol } mouse or ${ touchSymbol } pan to move" - -"Scroll ${ mouseSymbol } mouse wheel or ${ touchSymbol } pinch to zoom" - -"Hold left ${ bindShift } for placing while moving mouse" - -"" -"Hold right ${ bindShift } for placing while moving mouse according to " -"historical view" - -"${ mouseSymbol } Left click or ${ touchSymbol } tap to place a pixel" - -"" -"Click ${ mouseSymbol } middle mouse button or ${ touchSymbol } long-tap to " -"select current hovering color" - -"Press ${ bindE } and ${ bindC } to fly up and down" - -"${ mouseSymbol } Hold left mouse button and drag mouse to rotate" - -"" -"${ mouseSymbol } Scroll mouse wheel or hold ${ mouseSymbol } middle mouse " -"button and drag to zoom" - -"${ mouseSymbol } Right click and drag mouse to pan" - -"" -"${ mouseSymbol } Right click or ${ touchSymbol } double-tap to remove a " -"pixel" - -"Partners:" - -"" -"This site is protected by reCAPTCHA and the Google ${ reCaptchaPP } and ${ " -"reCaptchaTOS } apply." - -"" -"This site is protected by hCAPTCHA and its ${ hCaptchaPP } and ${ " -"hCaptchaTOS } apply." - -"Welcome to PixelPlanet.fun" - -"Mute" - -"Show Grid" - -"Turn on grid to highlight pixel borders." - -"Show Pixel Activity" - -"Show circles where pixels are placed." - -"Disable Game Sounds" - -"All sound effects will be disabled." - -"Enable chat notifications" - -"Play a sound when new chat messages arrive" - -"Auto Zoom In" - -"" -"Zoom in instead of placing a pixel when you tap the canvas and your zoom is " -"small." - -"Compact Palette" - -"Display Palette in a compact form that takes less screen space." - -"Potato Mode" - -"For when you are playing on a potato." - -"Light Grid" - -"Show Grid in white instead of black." - -"Historical View" - -"Check out past versions of the canvas." - -"Themes" - -"How pixelplanet should look like." - -"Register new account here" - -"Consider joining us on Guilded:" - -"Register New Account" - -"Login to access more features and stats." - -"Login with Name or Mail:" - -"I forgot my Password." - -"or login with:" - -"or register here:" - -"Register" - -"Profile" - -"Ranking" - -"Converter" - -"Admintools" - -"Modtools" - -"Loading..." - -"" -"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." - -"" -"Here we collect those canvases to archive them in a proper way (which is " -"currently just one)." - -"Political Compass Canvas" - -"" -"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." - -"" -"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." - -"Canvas Archive" - -"" -"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:" - -"Archive" - -"Enter your mail adress and we will send you a new password:" - -"Restore my Password" - -"Chat" - -"Error" - -"Name or Email" - -"Password" - -"LogIn" - -"Todays Placed Pixels" - -"Daily Rank" - -"Placed Pixels" - -"Total Rank" - -"Your name is: ${ name }" - -"Log out" - -"Change Username" - -"Change Mail" - -"Change Password" - -"Delete Account" - -"Social Settings" - -"Total" - -"Daily" - -"Ranking updates every 5 min. Daily rankings get reset at midnight UTC." - -"Cooldown" - -"Stacking till" - -"Ranked" - -"Requirements" - -"User Account" - -"and ${ canvas.req } Pixels set" - -"Dimensions" - -"Sent you a mail with instructions to reset your password." - -"Email" - -"Submit" - -"Cancel" - -"Name" - -"Confirm Password" - -"Build image on canvas." - -"Build image and set it to protected." - -"Build image, but reset cooldown to unset-pixel cd." - -"Image Upload" - -"Upload images to canvas" - -"File" - -"Coordinates in X_Y format:" - -"Pixel Protection" - -"" -"Set protection of areas (if you need finer grained control, " -"use protect with image upload and alpha layers)" - -"Rollback to Date" - -"Rollback an area of the canvas to a set date (00:00 UTC)" - -"IP Actions" - -"Do stuff with IPs (one IP per line)" - -"Manage Moderators" - -"Remove Moderator" - -"There are no mods" - -"Assign new Mod" - -"Enter UserName of new Mod" - -"User Name" - -"Choose Canvas" - -"Palette Download" - -"Palette for ${ gimpLink }" - -"Credit for the Palette of the Moon goes to ${ starhouseLink }." - -"Image Converter" - -"Convert an image to canvas colors" - -"Choose Strategy" - -"Choose Color Mode" - -"Add Grid (uncheck if you need a 1:1 template)" - -"Offset" - -"Scale Image" - -"Width" - -"Height" - -"Keep Ratio" - -"Anti Aliasing" - -"Reset" - -"Download Template" - -"Email can't be empty." - -"Email should be at least 5 characters long." - -"Email can't be longer than 40 characters." - -"Email should at least contain a dot" - -"Email should contain a @" - -"Name can't be empty." - -"Name must be at least 4 characters long" - -"Name must be shorter than 26 characters" - -"Name contains invalid character like @, /, \\ or #" - -"No password given." - -"Password must be at least 6 characters long." - -"Password must be shorter than 60 characters." - -"Could not connect to server, please try again later :(" - -"I think we experienced some error :(" - -"Block all Private Messages" - -"Unblock Users" - -"You have no users blocked" - -"" -"Changed Mail successfully. We sent you a verification mail, " -"please verify your new mail adress." - -"New Mail" - -"Save" - -"Passwords do not match." - -"Changed Password successfully." - -"Old Password" - -"New Password" - -"Confirm New Password" - -"Yes, Delete My Account!" - -"A new verification mail is getting sent to you." - -"You successfully linked your mc account." - -"You denied." - -"" -"Please verify your mail address \n" -"or your account could get deleted after a few days." - -"Click here to request a new verification mail." - -"You requested to link your mc account ${ minecraftname }." - -"Accept" - -"Deny" - -"New Username" - -"Place color pixels on an map styled canvas with other players online" - -"Double click on globe to go back." - -"Loading..." - -"PixelPlanet.Fun 3DGlobe" - -"A 3D globe of our whole map" - -"You sent an empty password or invalid data :(" - -"This password-reset link isn't valid anymore :(" - -"Your passwords do not match :(" - -"User doesn't exist in our database :(" - -"Passowrd successfully changed." - -"Invalid url :( Please check your mail again." - -"This passwort reset link is wrong or already expired, please request a new " -"one (Note: you can use those links just once)" - -"" -"We already sent you a verification mail, you can request another one in ${ " -"minLeft } minutes." - -"Welcome ${ name } to PixelPlanet, plese verify your mail" - -"Hello ${ name }" - -"" -"welcome to our little community of pixelplacers, to use your account, you " -"have to verify your mail. You can do that here: " - -"Click to Verify" - -"Or by copying following url:" - -"Have fun and don't hesitate to contact us if you encouter any problems :)" - -"Thanks" - -"" -"We already sent you a mail with instructions. Please wait before requesting " -"another mail." - -"Couldn't find this mail in our database" - -"You forgot your password for PixelPlanet? Get a new one here" - -"Hello" - -"" -"You requested to get a new password. You can change your password within " -"the next 30min here: " - -"Reset Password" - -"" -"If you did not request this mail, please just ignore it (the ip that " -"requested this mail was ${ ip })." - -"Click here" - -"to go back to pixelplanet" - -"Hello ${ name }, you can set your new password here:" - -"New Password" - -"Confirm New Password" - -"Submit" - -"PixelPlanet.fun Password Reset" - -"Reset your password here" - -"Email can't be empty." - -"Email should be at least 5 characters long." - -"Email can't be longer than 40 characters." - -"Email should at least contain a dot" - -"Email should contain a @" - -"Name can't be empty." - -"Name must be at least 4 characters long" - -"Name must be shorter than 26 characters" - -"Name contains invalid character like @, /, \\ or #" - -"No password given." - -"Password must be at least 6 characters long." - -"Password must be shorter than 60 characters." - -"Could not connect to server, please try again later :(" - -"I think we experienced some error :(" - -"You are not authenticated." - -"Incorrect password!" - -"You are not even logged in." - -"Mail verification" - -"You are now verified :)" - -"" -"Your mail verification code is invalid or already expired :(, please " -"request a new one." - -"E-Mail already in use." - -"Username already in use." - -"Failed to create new user :(" - -"Failed to establish session after register :(" - -"You will be automatically redirected after 15s" - -"Or ${ clickHere } to go back to pixelplanet" - -"PixelPlanet.fun Accounts" - -"Earth" - -"Moon" - -"3D Canvas" - -"Coronavirus" - -"PixelZone" - -"PixelCanvas" - -"1bit" - -"Our main canvas, a huge map of the world. Place everywhere you like" - -"Moon canvas. Safe space for art. No flags or large text (unless part of art)" - -"Place Voxels on a 3D canvas with others" - -"Special canvas to spread awareness of SARS-CoV2" - -"Mirror of PixelZone" - -"Mirror of PixelCanvas" - -"Black and White canvas" diff --git a/package.json b/package.json index 7c67b1e..e8394b6 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "build": "babel-node scripts/run prebuild && npm run webpack", "clean": "babel-node scripts/run clean", "webpack": "webpack --config ./webpack.config.web.babel.js && parallel-webpack --config ./webpack.config.client.babel.js", + "extract": "webpack --env extract --config ./webpack.config.web.babel.js && webpack --env extract --config ./webpack.config.client.babel.js", "babel-node": "cd $INIT_CWD && babel-node", "lint": "cd $INIT_CWD && eslint --ext .jsx --ext .js", "lint:src": "eslint --ext .jsx --ext .js src", diff --git a/src/core/constants.js b/src/core/constants.js index a949ecb..f5e46e2 100644 --- a/src/core/constants.js +++ b/src/core/constants.js @@ -87,8 +87,6 @@ export const CHAT_CHANNELS = [ name: 'en', }, { name: 'int', - }, { - name: 'pol', }, { name: 'art', }, diff --git a/webpack.config.client.babel.js b/webpack.config.client.babel.js index 2b27d39..5d2abf2 100644 --- a/webpack.config.client.babel.js +++ b/webpack.config.client.babel.js @@ -21,7 +21,12 @@ const assetPlugin = new AssetsPlugin({ }); -export function buildWebpackClientConfig(development, analyze, locale) { +export function buildWebpackClientConfig( + development, + analyze, + locale, + extract, +) { const ttag = { resolve: { translations: (locale !== 'default') @@ -30,10 +35,10 @@ export function buildWebpackClientConfig(development, analyze, locale) { }, }; - if (locale === 'default') { + if (extract) { ttag.extract = { output: path.resolve(__dirname, 'i18n', 'template.pot'), - } + }; } const babelPlugins = [ @@ -117,7 +122,7 @@ export function buildWebpackClientConfig(development, analyze, locale) { path.resolve(__dirname, 'src'), ], options: { - cacheDirectory: true, + cacheDirectory: !extract, babelrc: false, presets: [ ['@babel/preset-env', { @@ -199,7 +204,10 @@ export function buildWebpackClientConfig(development, analyze, locale) { }, /* - * this does not much tbqh + * maybe some day in the future it might be + * better than babel-loader cacheDirectory, + * but right now it isn't + * cache: { type: 'filesystem', cacheDirectory: path.resolve( @@ -218,7 +226,7 @@ export function buildWebpackClientConfig(development, analyze, locale) { */ function buildWebpackClientConfigAllLangs(development, analyze) { let webpackConfigClient = [ - buildWebpackClientConfig(development, analyze, 'default'), + buildWebpackClientConfig(development, analyze, 'default', false), ]; /* * get available translations @@ -234,7 +242,13 @@ function buildWebpackClientConfigAllLangs(development, analyze) { return webpackConfigClient; } -export default buildWebpackClientConfigAllLangs( - process.argv.includes('--debug'), - process.argv.includes('--analyse') || process.argv.includes('--analyze'), -); +export default ({ + debug, analyze, extract, locale, +}) => { + if (extract || locale) { + return buildWebpackClientConfig( + debug, analyze, locale || 'default', extract, + ); + } + return buildWebpackClientConfigAllLangs(debug, analyze); +}; diff --git a/webpack.config.web.babel.js b/webpack.config.web.babel.js index 4bd4a55..cf8a24e 100644 --- a/webpack.config.web.babel.js +++ b/webpack.config.web.babel.js @@ -2,7 +2,6 @@ */ import path from 'path'; -import fs from 'fs'; import webpack from 'webpack'; import nodeExternals from 'webpack-node-externals'; import GeneratePackageJsonPlugin from 'generate-package-json-webpack-plugin'; @@ -10,18 +9,6 @@ import GeneratePackageJsonPlugin from 'generate-package-json-webpack-plugin'; import patch from './scripts/patch'; import pkg from './package.json'; -const isDebug = process.argv.includes('--debug'); - -/* - * check which ssr translations are available - * Maybe we will use thi later to auto-populat src/core/ttag.js - * -const langDir = path.resolve(__dirname, 'i18n'); -const langs = fs.readdirSync(langDir) - .filter((e) => (e.endsWith('.po') && e.startsWith('ssr'))); -fs.writeFileSync(path.resolve(langDir, 'ssr-list.json'), JSON.stringify(langs)); -*/ - patch(); const basePackageValues = { @@ -37,6 +24,8 @@ const basePackageValues = { }, }; +const ttag = {}; + const babelPlugins = [ '@babel/transform-flow-strip-types', ['@babel/plugin-proposal-decorators', { legacy: true }], @@ -51,116 +40,122 @@ const babelPlugins = [ '@babel/transform-react-inline-elements', 'transform-react-remove-prop-types', 'transform-react-pure-class-to-function', - ['ttag', { - extract: { - output: path.resolve(__dirname, 'i18n', 'template-ssr.pot'), - }, - discover: ['t', 'jt'], - }], + ['ttag', ttag], ]; -export default { - name: 'web', - target: 'node', +export default ({ + debug, extract, +}) => { + if (extract) { + ttag.extract = { + output: path.resolve(__dirname, 'i18n', 'template-ssr.pot'), + }; + ttag.discover = ['t', 'jt']; + } - context: __dirname, - mode: (isDebug) ? 'development' : 'production', + return { + name: 'web', + target: 'node', - entry: { - web: [path.resolve(__dirname, 'src', 'web.js')], - backup: [path.resolve(__dirname, 'src', 'backup.js')], - }, + context: __dirname, + mode: (debug) ? 'development' : 'production', - output: { - path: path.resolve(__dirname, 'build'), - libraryTarget: 'commonjs2', - }, + entry: { + web: [path.resolve(__dirname, 'src', 'web.js')], + backup: [path.resolve(__dirname, 'src', 'backup.js')], + }, - resolve: { - extensions: ['.js', '.jsx', '.json', '.ts', '.tsx'], - }, + output: { + path: path.resolve(__dirname, 'build'), + libraryTarget: 'commonjs2', + }, - module: { - rules: [ - { - test: /\.(js|jsx|ts|tsx)$/, - loader: 'babel-loader', - include: [ - path.resolve(__dirname, 'src'), - ], - options: { - cacheDirectory: isDebug, + resolve: { + extensions: ['.js', '.jsx', '.json', '.ts', '.tsx'], + }, - babelrc: false, - presets: [ - ['@babel/preset-env', { - targets: { - node: pkg.engines.node.replace(/^\D+/g, ''), - }, - modules: false, - useBuiltIns: false, - debug: false, - }], - '@babel/typescript', - '@babel/react', + module: { + rules: [ + { + test: /\.(js|jsx|ts|tsx)$/, + loader: 'babel-loader', + include: [ + path.resolve(__dirname, 'src'), ], - plugins: babelPlugins, - }, - }, - { - test: /\.css/, - use: [ - { - loader: 'css-loader', - options: { - importLoaders: 1, - sourceMap: false, - modules: false, - }, + options: { + cacheDirectory: false, + + babelrc: false, + presets: [ + ['@babel/preset-env', { + targets: { + node: pkg.engines.node.replace(/^\D+/g, ''), + }, + modules: false, + useBuiltIns: false, + debug: false, + }], + '@babel/typescript', + '@babel/react', + ], + plugins: babelPlugins, }, - ], - }, - { - test: [/\.po$/], - loader: 'ttag-po-loader', - }, - ], - }, - - externals: [ - /\/proxies\.json$/, - /\/canvases\.json$/, - /^\.\/styleassets\.json$/, - /^\.\/assets\.json$/, - nodeExternals(), - ], - - plugins: [ - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': isDebug ? '"development"' : '"production"', - 'process.env.BROWSER': false, - }), - // create package.json for deployment - new GeneratePackageJsonPlugin(basePackageValues, { - sourcePackageFilenames: [ - path.resolve(__dirname, 'package.json'), + }, + { + test: /\.css/, + use: [ + { + loader: 'css-loader', + options: { + importLoaders: 1, + sourceMap: false, + modules: false, + }, + }, + ], + }, + { + test: [/\.po$/], + loader: 'ttag-po-loader', + }, ], - }), - ], + }, - stats: { - colors: true, - reasons: false, - hash: false, - version: false, - timings: true, - chunkModules: false, - }, + externals: [ + /\/proxies\.json$/, + /\/canvases\.json$/, + /^\.\/styleassets\.json$/, + /^\.\/assets\.json$/, + nodeExternals(), + ], - node: { - global: false, - __filename: false, - __dirname: false, - }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env.NODE_ENV': debug ? '"development"' : '"production"', + 'process.env.BROWSER': false, + }), + // create package.json for deployment + new GeneratePackageJsonPlugin(basePackageValues, { + sourcePackageFilenames: [ + path.resolve(__dirname, 'package.json'), + ], + }), + ], + + stats: { + colors: true, + reasons: false, + hash: false, + version: false, + timings: true, + chunkModules: false, + }, + + node: { + global: false, + __filename: false, + __dirname: false, + }, + }; };