Added french, fixed thai and automated i18n.js, also some cleanup
authorRemixDev <deezloaderremix@gmail.com>
Mon, 16 Sep 2019 11:24:33 +0000 (13:24 +0200)
committerRemixDev <deezloaderremix@gmail.com>
Mon, 16 Sep 2019 11:24:33 +0000 (13:24 +0200)
app/i18n.js
app/package-lock.json
app/package.json
app/public/js/appBase.js
app/public/js/frontend.js
app/public/locales/fr.json [new file with mode: 0644]
app/public/locales/th.json
app/views/index.ejs
package-lock.json
package.json

index fbfc7c70f6218900b2caaee82e203f2a55119bd8..caf6e918f31e05021815c5983bcc59dc85a22ef5 100644 (file)
@@ -1,8 +1,17 @@
-var i18n = require('i18n');
+const i18n = require('i18n');
+const path = require('path');
+const fs = require('fs');
+const directoryPath = path.join(__dirname, '/public/locales');
+var locales = []
+var files = fs.readdirSync(directoryPath)
+files.forEach(function (file) {
+               // Do whatever you want to do with the file
+               locales.push(file.slice(0, -5))
+});
 
 i18n.configure({
   // setup some locales - other locales default to en silently
-  locales:['en', 'it', 'de', 'es', 'tr', 'pt-BR', 'fa', 'th', 'uwu'],
+  locales: locales,
 
   // where to store json files - defaults to './locales' relative to modules directory
   directory: __dirname + '/public/locales',
index 1693f966732cb96f2ce4d3afd0158653eb910ee2..718bd97c2485a5dfb3bac056bfa959b0070014d7 100644 (file)
                                }\r
                        }\r
                },\r
-               "ansi-regex": {\r
-                       "version": "4.1.0",\r
-                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",\r
-                       "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="\r
-               },\r
-               "ansi-styles": {\r
-                       "version": "3.2.1",\r
-                       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",\r
-                       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",\r
-                       "requires": {\r
-                               "color-convert": "^1.9.0"\r
-                       }\r
-               },\r
-               "app-root-path": {\r
-                       "version": "1.4.0",\r
-                       "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-1.4.0.tgz",\r
-                       "integrity": "sha1-YzXYZclkDQ+tmQBOWnkjIjjpLfo="\r
-               },\r
                "array-flatten": {\r
                        "version": "1.1.1",\r
                        "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",\r
                        "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",\r
                        "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="\r
                },\r
-               "astral-regex": {\r
-                       "version": "1.0.0",\r
-                       "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",\r
-                       "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="\r
-               },\r
                "async": {\r
                        "version": "3.1.0",\r
                        "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz",\r
                        "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",\r
                        "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="\r
                },\r
-               "cli-truncate": {\r
-                       "version": "2.0.0",\r
-                       "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.0.0.tgz",\r
-                       "integrity": "sha512-C4hp+8GCIFVsUUiXcw+ce+7wexVWImw8rQrgMBFsqerx9LvvcGlwm6sMjQYAEmV/Xb87xc1b5Ttx505MSpZVqg==",\r
-                       "requires": {\r
-                               "slice-ansi": "^2.1.0",\r
-                               "string-width": "^4.1.0"\r
-                       }\r
-               },\r
-               "color-convert": {\r
-                       "version": "1.9.3",\r
-                       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",\r
-                       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",\r
-                       "requires": {\r
-                               "color-name": "1.1.3"\r
-                       }\r
-               },\r
-               "color-name": {\r
-                       "version": "1.1.3",\r
-                       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",\r
-                       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="\r
-               },\r
                "combined-stream": {\r
                        "version": "1.0.7",\r
                        "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",\r
                        "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.1.tgz",\r
                        "integrity": "sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ=="\r
                },\r
-               "electron-context-menu": {\r
-                       "version": "0.15.0",\r
-                       "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-0.15.0.tgz",\r
-                       "integrity": "sha512-XLdtbX90NPkWycG3IzwtCmfX4ggu+lofNOW1nVRStb+ScFs49WTourW1k77Z4DTyThR3gUHg3UPXVBMbW1gNsg==",\r
-                       "requires": {\r
-                               "cli-truncate": "^2.0.0",\r
-                               "electron-dl": "^1.2.0",\r
-                               "electron-is-dev": "^1.0.1"\r
-                       }\r
-               },\r
-               "electron-dl": {\r
-                       "version": "1.14.0",\r
-                       "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-1.14.0.tgz",\r
-                       "integrity": "sha512-4okyei42a1mLsvLK7hLrIfd20EQzB18nIlLTwBV992aMSmTGLUEFRTmO1MfSslGNrzD8nuPuy1l/VxO8so4lig==",\r
-                       "requires": {\r
-                               "ext-name": "^5.0.0",\r
-                               "pupa": "^1.0.0",\r
-                               "unused-filename": "^1.0.0"\r
-                       }\r
-               },\r
-               "electron-is-dev": {\r
-                       "version": "1.1.0",\r
-                       "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.1.0.tgz",\r
-                       "integrity": "sha512-Z1qA/1oHNowGtSBIcWk0pcLEqYT/j+13xUw/MYOrBUOL4X7VN0i0KCTf5SqyvMPmW5pSPKbo28wkxMxzZ20YnQ=="\r
-               },\r
-               "electron-window-state-manager": {\r
-                       "version": "0.3.2",\r
-                       "resolved": "https://registry.npmjs.org/electron-window-state-manager/-/electron-window-state-manager-0.3.2.tgz",\r
-                       "integrity": "sha1-pVLqNUcCl8mZx0TYGrsqjIpRdw4=",\r
-                       "requires": {\r
-                               "app-root-path": "^1.3.0",\r
-                               "fs-jetpack": "^0.9.2"\r
-                       }\r
-               },\r
-               "emoji-regex": {\r
-                       "version": "8.0.0",\r
-                       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",\r
-                       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="\r
-               },\r
                "encodeurl": {\r
                        "version": "1.0.2",\r
                        "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",\r
                                }\r
                        }\r
                },\r
-               "ext-list": {\r
-                       "version": "2.2.2",\r
-                       "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",\r
-                       "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",\r
-                       "requires": {\r
-                               "mime-db": "^1.28.0"\r
-                       }\r
-               },\r
-               "ext-name": {\r
-                       "version": "5.0.0",\r
-                       "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",\r
-                       "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",\r
-                       "requires": {\r
-                               "ext-list": "^2.0.0",\r
-                               "sort-keys-length": "^1.0.0"\r
-                       }\r
-               },\r
                "extend": {\r
                        "version": "3.0.2",\r
                        "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",\r
                                "universalify": "^0.1.0"\r
                        }\r
                },\r
-               "fs-jetpack": {\r
-                       "version": "0.9.2",\r
-                       "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-0.9.2.tgz",\r
-                       "integrity": "sha1-k7QU29B4AYY9ZMgadq3APYUMm1Y=",\r
-                       "requires": {\r
-                               "minimatch": "^3.0.2",\r
-                               "mkdirp": "^0.5.1",\r
-                               "q": "^1.0.1",\r
-                               "rimraf": "^2.2.8"\r
-                       }\r
-               },\r
-               "fs.realpath": {\r
-                       "version": "1.0.0",\r
-                       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",\r
-                       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="\r
-               },\r
                "getpass": {\r
                        "version": "0.1.7",\r
                        "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",\r
                        }\r
                },\r
                "glob": {\r
-                       "version": "7.1.4",\r
-                       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",\r
-                       "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",\r
+                       "version": "6.0.4",\r
+                       "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",\r
+                       "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",\r
                        "requires": {\r
-                               "fs.realpath": "^1.0.0",\r
                                "inflight": "^1.0.4",\r
                                "inherits": "2",\r
-                               "minimatch": "^3.0.4",\r
+                               "minimatch": "2 || 3",\r
                                "once": "^1.3.0",\r
                                "path-is-absolute": "^1.0.0"\r
                        }\r
                        "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",\r
                        "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="\r
                },\r
-               "is-fullwidth-code-point": {\r
-                       "version": "2.0.0",\r
-                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",\r
-                       "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="\r
-               },\r
-               "is-plain-obj": {\r
-                       "version": "1.1.0",\r
-                       "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",\r
-                       "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="\r
-               },\r
                "is-typedarray": {\r
                        "version": "1.0.0",\r
                        "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",\r
                        "integrity": "sha1-IDOgO6wpC487uRJY9lud9+iwHKc=",\r
                        "requires": {\r
                                "minimist": "^1.2.0"\r
-                       },\r
-                       "dependencies": {\r
-                               "minimist": {\r
-                                       "version": "1.2.0",\r
-                                       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",\r
-                                       "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",\r
-                                       "optional": true\r
-                               }\r
                        }\r
                },\r
                "math-interval-parser": {\r
                                        "version": "1.5.2",\r
                                        "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",\r
                                        "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="\r
-                               },\r
-                               "glob": {\r
-                                       "version": "6.0.4",\r
-                                       "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",\r
-                                       "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",\r
-                                       "requires": {\r
-                                               "inflight": "^1.0.4",\r
-                                               "inherits": "2",\r
-                                               "minimatch": "2 || 3",\r
-                                               "once": "^1.3.0",\r
-                                               "path-is-absolute": "^1.0.0"\r
-                                       }\r
                                }\r
                        }\r
                },\r
                        }\r
                },\r
                "minimist": {\r
-                       "version": "0.0.8",\r
-                       "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",\r
-                       "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="\r
-               },\r
-               "mkdirp": {\r
-                       "version": "0.5.1",\r
-                       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",\r
-                       "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",\r
-                       "requires": {\r
-                               "minimist": "0.0.8"\r
-                       }\r
-               },\r
-               "modify-filename": {\r
-                       "version": "1.1.0",\r
-                       "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz",\r
-                       "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE="\r
+                       "version": "1.2.0",\r
+                       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",\r
+                       "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",\r
+                       "optional": true\r
                },\r
                "ms": {\r
                        "version": "2.0.0",\r
                        "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",\r
                        "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="\r
                },\r
-               "path-exists": {\r
-                       "version": "3.0.0",\r
-                       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",\r
-                       "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="\r
-               },\r
                "path-is-absolute": {\r
                        "version": "1.0.1",\r
                        "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",\r
                        "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",\r
                        "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="\r
                },\r
-               "pupa": {\r
-                       "version": "1.0.0",\r
-                       "resolved": "https://registry.npmjs.org/pupa/-/pupa-1.0.0.tgz",\r
-                       "integrity": "sha1-mpVopa9+ZXuEYqbp1TKHQ1YM7/Y="\r
-               },\r
-               "q": {\r
-                       "version": "1.5.1",\r
-                       "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",\r
-                       "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="\r
-               },\r
                "qs": {\r
                        "version": "6.5.2",\r
                        "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",\r
                                "lodash": "^4.17.11"\r
                        }\r
                },\r
-               "rimraf": {\r
-                       "version": "2.7.1",\r
-                       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",\r
-                       "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",\r
-                       "requires": {\r
-                               "glob": "^7.1.3"\r
-                       }\r
-               },\r
                "safe-buffer": {\r
                        "version": "5.1.2",\r
                        "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",\r
                        "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",\r
                        "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="\r
                },\r
-               "slice-ansi": {\r
-                       "version": "2.1.0",\r
-                       "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",\r
-                       "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",\r
-                       "requires": {\r
-                               "ansi-styles": "^3.2.0",\r
-                               "astral-regex": "^1.0.0",\r
-                               "is-fullwidth-code-point": "^2.0.0"\r
-                       }\r
-               },\r
                "socket.io": {\r
                        "version": "2.2.0",\r
                        "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz",\r
                                }\r
                        }\r
                },\r
-               "sort-keys": {\r
-                       "version": "1.1.2",\r
-                       "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",\r
-                       "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",\r
-                       "requires": {\r
-                               "is-plain-obj": "^1.0.0"\r
-                       }\r
-               },\r
-               "sort-keys-length": {\r
-                       "version": "1.0.1",\r
-                       "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",\r
-                       "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=",\r
-                       "requires": {\r
-                               "sort-keys": "^1.0.0"\r
-                       }\r
-               },\r
                "spotify-web-api-node": {\r
                        "version": "4.0.0",\r
                        "resolved": "https://registry.npmjs.org/spotify-web-api-node/-/spotify-web-api-node-4.0.0.tgz",\r
                                "debug": "2"\r
                        }\r
                },\r
-               "string-width": {\r
-                       "version": "4.1.0",\r
-                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz",\r
-                       "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==",\r
-                       "requires": {\r
-                               "emoji-regex": "^8.0.0",\r
-                               "is-fullwidth-code-point": "^3.0.0",\r
-                               "strip-ansi": "^5.2.0"\r
-                       },\r
-                       "dependencies": {\r
-                               "is-fullwidth-code-point": {\r
-                                       "version": "3.0.0",\r
-                                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",\r
-                                       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="\r
-                               }\r
-                       }\r
-               },\r
                "string_decoder": {\r
                        "version": "1.1.1",\r
                        "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",\r
                                "safe-buffer": "~5.1.0"\r
                        }\r
                },\r
-               "strip-ansi": {\r
-                       "version": "5.2.0",\r
-                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",\r
-                       "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",\r
-                       "requires": {\r
-                               "ansi-regex": "^4.1.0"\r
-                       }\r
-               },\r
                "superagent": {\r
                        "version": "3.8.3",\r
                        "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",\r
                        "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",\r
                        "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="\r
                },\r
-               "unused-filename": {\r
-                       "version": "1.0.0",\r
-                       "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-1.0.0.tgz",\r
-                       "integrity": "sha1-00CID3GuIRXrqhMlvvBcxmhEacY=",\r
-                       "requires": {\r
-                               "modify-filename": "^1.1.0",\r
-                               "path-exists": "^3.0.0"\r
-                       }\r
-               },\r
                "uri-js": {\r
                        "version": "4.2.2",\r
                        "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",\r
index b7b11fa0353ae2edc48be3957fec6e6c75f8c3d2..7b07bae5bb8e9fbac746110e7261b2c43f357b80 100644 (file)
@@ -12,8 +12,6 @@
                "dateformat": "latest",
                "deezer-api": "git+https://notabug.org/RemixDevs/deezer-api.git#master",
                "ejs": "latest",
-               "electron-context-menu": "^0.15.0",
-               "electron-window-state-manager": "latest",
                "express": "latest",
                "fs-extra": "latest",
                "i18n": "latest",
index d1226e2d9988b16a0ccb929a317bdf4f1d504a2d..7b83acab4f6a776b1665f1f69572751572f72e3f 100644 (file)
@@ -8,9 +8,29 @@ if(typeof require !== "undefined"){
 }
 const version = (typeof packageFile === 'undefined') ? $("#appVersionFallback").text() : packageFile.version;
 
-(function () {
+function setCookie(name,value,days){
+       var expires = "";
+       if (days) {
+               var date = new Date();
+               date.setTime(date.getTime() + (days*24*60*60*1000));
+               expires = "; expires=" + date.toUTCString();
+       }
+       document.cookie = name + "=" + (value || "")  + expires + "; path=/";
+}
+
+function getCookie(name){
+       var nameEQ = name + "=";
+       var ca = document.cookie.split(';');
+       for(var i=0;i < ca.length;i++) {
+               var c = ca[i];
+               while (c.charAt(0)==' ') c = c.substring(1,c.length);
+               if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
+       }
+}
 
 
+(function () {
+
        // selectAll-"feature"...its really crappy to wait for document change
        // but since the materialize modal initialization is a fucking callback hell,
        // this is pretty much the only option...will (hopefully) be refactored in
index 3b3ab44ce4759bddd856726d40b4fee43216dffe..a91ddf4b4cb87d50229d728dbe800f9c376c01d7 100644 (file)
@@ -29,25 +29,6 @@ $.getJSON(`/locales/${currentLang}.json`, function(json) {
        })
 })
 
-function setCookie(name,value,days){
-  var expires = "";
-  if (days) {
-    var date = new Date();
-    date.setTime(date.getTime() + (days*24*60*60*1000));
-    expires = "; expires=" + date.toUTCString();
-  }
-  document.cookie = name + "=" + (value || "")  + expires + "; path=/";
-}
-function getCookie(name){
-  var nameEQ = name + "=";
-  var ca = document.cookie.split(';');
-  for(var i=0;i < ca.length;i++) {
-         var c = ca[i];
-         while (c.charAt(0)==' ') c = c.substring(1,c.length);
-         if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
-       }
-}
-
 // Popup message listener
 socket.on("message", function(desc){
        message(desc.title, desc.msg)
@@ -338,17 +319,12 @@ $(document).ready(function () {
        })
 
        // Language options
-       currentLang = getCookie("lang")
-       if (currentLang === undefined){
-               currentLang = "en"
-       }
-       setCookie("lang", currentLang, 60)
+       setCookie("lang", currentLang, 90)
        $('#modal_settings_select_lang').val(currentLang).formSelect()
        $("#modal_settings_select_lang").change(function(){
-               currentLang = getCookie("lang")
                selectedLang = $(this).val()
                if (currentLang !== selectedLang){
-                       setCookie("lang", selectedLang, 60)
+                       setCookie("lang", selectedLang, 90)
                        message(i18n('Please restart the app'), i18n('To change the language you need to refresh the page or restart the app!'))
                }
        })
diff --git a/app/public/locales/fr.json b/app/public/locales/fr.json
new file mode 100644 (file)
index 0000000..7f10fcf
--- /dev/null
@@ -0,0 +1,210 @@
+{\r
+       "Please login to your deezer account": "Veuillez vous connecter à votre compte deezer",\r
+       "Email": "Email",\r
+       "Password": "Mot de passe",\r
+       "userToken": "Jeton utilisateur",\r
+       "How do I get my userToken?": "Comment récupérer mon jeton utilisateur ?",\r
+       "Log in": "S'identifier",\r
+       "Sign up": "S'inscrire",\r
+       "Settings": "Paramètres",\r
+       "Path Settings": "Paramètres de chemin",\r
+       "Download folder path": "Chemin du dossier de téléchargement",\r
+       "Tracknames template": "Modèle de noms de piste",\r
+       "Supported variables are": "Les variables supportées sont",\r
+       "Album tracknames template": "Modèle de noms de piste d'album",\r
+       "Album names template": "Modèle de noms d'album",\r
+       "Playlist tracknames template": "Modèle de noms de piste de liste de lecture",\r
+       "More Path Settings": "Plus de paramètres de chemin",\r
+       "Create folders for Artists": "Créer des dossiers pour les artistes",\r
+       "Create folders for Albums": "Créer des dossiers pour les albums",\r
+       "Create folders for CDs": "Créer des dossiers pour les CD",\r
+       "Create Artist, Albums and CDs folders for Playlists too": "Créer également des dossiers d'artistes, d'albums et de CD pour les listes de lecture",\r
+       "Write all Artists in track filename": "Inscrire tous les artistes dans le nom du fichier",\r
+       "Adds 0s before %number% to have the same character length": "Ajoute des 0 avant %number% pour avoir la même longueur de caractères",\r
+       "Add padding to track numbers": "Ajouter des zéro aux numéros de piste",\r
+       "Overwrite padding size": "Nombre de zéro à ajouter",\r
+       "App Settings": "Paramètres de l'application",\r
+       "Concurrent download limit": "Limite de téléchargement simultané",\r
+       "Preferred bitrate": "Débit préféré",\r
+       "Fallback to lower bitrates if preferred is not available": "Retour vers débits inférieurs si le choix n'est pas disponible",\r
+       "Fallback to search if song is not available": "Retour à la reherche si la chanson n'est pas disponible",\r
+       "Download albums with one track as a single track": "Télécharger des albums avec une seule piste comme un morceau unique",\r
+       "Create log file for Errors inside download folder": "Créer un fichier journal pour les erreurs dans le dossier de téléchargement",\r
+       "Create log file for Alternatives inside download folder": "Créer un fichier journal pour les messages alternatifs dans le dossier de téléchargement",\r
+       "Create M3U8 (Playlist) File": "Créer un fichier M3U8 (liste de lecture)",\r
+       "Download Synced Lyrics File (.lrc)": "Télécharger le fichier de paroles synchronisées (.lrc)",\r
+       "Minimize to system tray": "Réduire dans la barre d'état système",\r
+       "Artworks": "Images",\r
+       "Artwork Size": "Taille de l'image",\r
+       "Save Album Artwork": "Sauvegarder la pochette de l'album",\r
+       "Album Artwork Name Template": "Modèle de nom de la pochette d'album",\r
+       "Save Artist Artwork": "Sauvegarder l'image de l'artiste",\r
+       "Artist Artwork Name Template": "Modèle de nom de l'image d'artiste",\r
+       "Download images as PNGs": "Télécharger les images au format PNG",\r
+       "Tags": "Tags",\r
+       "Null Character": "Caractère null",\r
+       "with space": "Avec espace",\r
+       "Multitag Separator": "Séparateur de tags multiples",\r
+       "YY": "AA",\r
+       "MM": "MM",\r
+       "DD": "JJ",\r
+       "Date Format": "Format de date",\r
+       "digit": "chiffre",\r
+       "Year Format": "Format de l'année",\r
+       "Replaces albums tags with the playlist ones": "Remplace les tags des albums par ceux de la liste de lecture",\r
+       "Save Playlist as Compilation": "Sauvegarder la liste de lecture comme compilation",\r
+       "Remove \"(Album Version)\" from tracknames": "Supprimer \"(version de l'album)\" des noms de pistes",\r
+       "Choose Which Tags To Save": "Choisir les tags à enregistrer",\r
+       "Spotify Features": "Fonctionnalités Spotify",\r
+       "SpotifyFeatures_Info": "Les \"fonctionnalités Spotify\" <b>ne téléchargeront pas</b> de musique à partir de Spotify.<br/>Cela permet d’utiliser un convertisseur de métadonnées dans l’application. Si une chanson ne figure pas sur Deezer, elle ne peut pas être téléchargée<br/>Vous pouvez voir comment obtenir les identifiants client et secret <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/wiki/Spotify+Features\">ici</a>",\r
+       "Client ID": "Identifiant client",\r
+       "Client Secret": "Secret client",\r
+       "Spotify Username (for the Playlists Tab)": "Nom d'utilisateur Spotify (pour l'onglet Listes de lecture)",\r
+       "You are logged in as": "Vous êtes connecté en tant que",\r
+       "Logout": "Déconnexion",\r
+       "Save": "Enregistrer",\r
+       "Default Settings": "Paramètres par défaut",\r
+       "Close": "Fermer",\r
+       "Saved Tags": "Tags sauvegardés",\r
+       "About the App": "À propos de l'application",\r
+       "About": "À propos",\r
+       "Search": "Recherche",\r
+       "Charts": "Hit-parade",\r
+       "Playlists": "Listes de lecture",\r
+       "Link Analyzer": "Analyseur de lien",\r
+       "Download from URL": "Télécharger depuis l'URL",\r
+       "Downloads": "Téléchargements",\r
+       "Enable Night Mode": "Activer le mode nuit",\r
+       "Start searching...": "Commencer à chercher...",\r
+       "Song": "Musique",\r
+       "Album": "Album",\r
+       "Artist": "Artiste",\r
+       "Playlist": "Liste de lecture",\r
+       "Songs": "Musiques",\r
+       "Type": "Type",\r
+       "Albums": "Albums",\r
+       "Name": "Nom",\r
+       "Nothing found!": "Rien n'a été trouvé !",\r
+       "Country": "Pays",\r
+       "Download Playlist": "Télécharger la liste de lecture",\r
+       "Refresh Playlists": "Rafraîchir les listes de lecture",\r
+       "See Available Countries": "Voir les pays disponibles",\r
+       "Alternative Link": "Lien alternatif",\r
+       "Duration": "Durée",\r
+       "Disc Number": "Numéro du disque",\r
+       "Track Number": "Numéro de piste",\r
+       "Release Date": "Date de sortie",\r
+       "Show Tracklist": "Voir la tracklist",\r
+       "Label": "Libellé",\r
+       "Record Type": "Type d'enregistrement",\r
+       "Genres": "Genres",\r
+       "Open Downloads Folder": "Ouvrir le dossier des téléchargements",\r
+       "Cancel All Downloads": "Annuler tous les téléchargements",\r
+       "Clear List": "Effacer la liste",\r
+       "Size": "Taille",\r
+       "Downloaded": "Téléchargé",\r
+       "Failed": "Échoué",\r
+       "original code by ZzMTV": "code original de ZzMTV",\r
+       "Title": "Titre",\r
+       "Cover": "Couverture",\r
+       "Track Total": "Total de pistes",\r
+       "Disc Total": "Total de disques",\r
+       "Album Artist": "Artiste de l'album",\r
+       "Genre": "Genre",\r
+       "Year": "Année",\r
+       "Date": "Date",\r
+       "Explicit": "Explicite",\r
+       "Length": "Longueur",\r
+       "Barcode": "Code barre",\r
+       "Replay Gain": "Gain de relecture",\r
+       "Unsynchronised Lyrics": "Paroles non synchronisées",\r
+       "Copyright": "Copyright",\r
+       "Publisher": "Éditeur",\r
+       "Composer": "Compositeur",\r
+       "Mixer": "Mixeur",\r
+       "Author": "Auteur",\r
+       "Writer": "Parolier",\r
+       "Engineer": "Ingénieur",\r
+       "Producer": "Producteur",\r
+       "Branch": "Branche",\r
+       "Version": "Version",\r
+       "Based on": "Basé sur",\r
+       "Maintainers": "Mainteneurs",\r
+       "Repo": "Repo",\r
+       "FAQ": "FAQ",\r
+       "Official mirrors": "Miroirs officiels",\r
+       "Interface": "Interface",\r
+       "Telegram Contacts": "Contacts de telegram",\r
+       "News Channel": "Chaîne d'informations",\r
+       "Betas Channel": "Chaîne des Betas",\r
+       "Stable Releases Channel": "Chaîne des sorties stables",\r
+       "Special Thanks to": "Remerciement spécial à",\r
+       "Feedback": "Retour d'information",\r
+       "Feedback_Text": "Avez-vous des commentaires ou souhaitez-vous demander de nouvelles fonctionnalités? Ouvrez un <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/issues/new\" target=\"_blank\">nouveau problème</a> et ajoutez le libellé de la 'Fonctionnalité'.",\r
+       "Reporting Bugs": "Signaler des bogues",\r
+       "Bugs_Text": "Si vous rencontrez des bugs, consultez d'abord la <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/wiki/FAQ\" target=\"_blank\">page de FAQ</a>.<br/>Si vous ne trouvez pas de solution à votre problème, ouvrez un <a href=\"https://github.com/RemixDev/DRemixIssues/issues/new/choose\" target=\"_blank\">new issue</a> et envoyer le rapport de bogue ici, merci.",\r
+       "Contacts": "Contacts",\r
+       "Contacts_Text": "Si vous souhaitez discuter ou aider l'application, vous pouvez le faire dans le <a href=\"https://t.me/DeezloaderRemixCommunity\" target=\"_blank\">groupe de telegram</a> !",\r
+       "Attention!": "Attention !",\r
+       "Attention_Text": "Les auteurs n'appellent pas à commettre de crimes !<br/>L'utilisation de cet outil peut être illégale dans votre pays, informez-vous !<br/>Les auteurs ne donnent aucune garantie et ne sont pas responsables des dommages éventuels de toute sorte résultant de l'utilisation de ce logiciel !",\r
+       "Changelog": "Journal des modifications",\r
+       "Full Changelog Here": "Journal des modifications complet ici",\r
+       "License": "License",\r
+       "Contributions": "Contributions",\r
+       "Contributions_Text": "<h5>Vous souhaitez contribuer à ce projet ? Vous pouvez le faire <b>de différentes façons !</b></h5><p>Si vous connaissez JavaScript, HTML, CSS ou Node.js, vous pouvez contribuer à l'écriture du code, correction de bogues et ajout de fonctionnalités à l'aide du <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix\" target=\"_blank\">repo officiel</a>.</p><p>Si vous êtes doué en graphisme et en design, vous pouvez aider en soumettant un nouveau design. Vous pouvez ouvrir un nouveau problème avec un design <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/issues/new\" target=\"_ blank\">ici</a>.<br/><p>N'oubliez pas que nous suivons (en quelque sorte) les <a href=\"https://material.io/\" target=\"_blank\">principes de material design</a>.</p>Si vous êtes doué pour la recherche de bogues, vous pouvez aider la version bêta de cette application. Testez l'application avant sa publication.<br/>Rejoignez notre <a href=\"https://t.me/DeezloaderRemixCommunity\" target=\"_blank\">Groupe Telegram</a> pour être averti lorsque les versions bêta sont publiées !</p><hr/><h5>Vous souhaitez contribuer financièrement ? Vous pouvez faire un don !</h5><p>Si vous pouvez faire un don, vous pouvez le faire avec ces liens.<br/>Vous devez vous rappeler que <b>ceci est un projet gratuit</b> et <b>vous devez soutenir les artistes que vous aimez</b> avant de soutenir le développeur.<br/>Ne vous sentez-pas obligé de faire un don, je vous apprécie quand même !</p>",\r
+       "I got it!": "J'ai compris !",\r
+       "Available Countries for": "Pays disponibles pour",\r
+       "Song/Album URL": "URL du morceau/album",\r
+       "LinkAnalyzer_Info": "Vous pouvez utiliser cette section pour trouver plus d’informations sur le lien que vous essayez de télécharger.<br/>Ceci est utile si vous essayez de télécharger des morceaux qui ne sont pas disponibles dans votre pays et que vous voulez savoir où ils sont disponibles.",\r
+       "DownloadURL_Info": "URL de la chanson/liste de lecture/album/artiste, séparés par un ';'",\r
+       "Download selection": "Télécharger la sélection",\r
+       "Save ID3v1 tags as well": "Enregistrez également les tags ID3v1",\r
+       "Language": "Langue",\r
+       "You setted it up wrong!": "Vous l'avez mal réglé !",\r
+       "Somehow you managed to fuck it up. Good job.<br>Now go do the guide again.<br><br>If you need the link again <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/wiki/Spotify+Features\">Here it is</a>": "D'une façon ou d'une autre, vous avez réussi à tout foirer. Bon travail.<br/>Maintenant, refaites le guide.<br/><br/>Si vous avez besoin du lien à nouveau <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/wiki/Spotify+Features\">le voici</a>",\r
+       "You need to restart the app to apply the changes": "Vous devez redémarrer l'application pour appliquer les modifications",\r
+       "Changing the spotify settings id and secret requires an app restart": "Changer les paramètres id et secret de spotify nécessite le redémarrage de l'application",\r
+       "Spotify Features is not enabled": "Les fonctionnalités de Spotify ne sont pas activées",\r
+       "spotifyFeaturesMessage": "Vous devez ajouter les identifiants clientId et secret client de Spotify dans les paramètres, puis redémarrer l'application pour utiliser cette fonctionnalité. Vous pouvez voir comment procéder dans <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/wiki/Spotify+Features\">ce guide</a><br/><br/>CETTE FONCTION NE VOUS PERMET PAS DE TELECHARGER DEPUIS SPOTIFY. Cela permet simplement d'activer un convertisseur pratique de métadonnées dans l'application. Si une chanson n'est pas sur Deezer, elle ne peut pas être téléchargée.",\r
+       "Can't find the track on Deezer!": "Impossible de trouver la piste sur Deezer !",\r
+       "Can't find the album on Deezer!": "Impossible de trouver l'album sur Deezer !",\r
+       "Logging in...": "Se connecter...",\r
+       "Error: Captcha wasn't solved." : "Erreur: le Captcha n'a pas été résolu.",\r
+       "For security reasons, this button will do nothing." : "Pour des raisons de sécurité, ce bouton ne fera rien.",\r
+       "Warning" : "Attention",\r
+       "Saving replay gain causes tracks to be quieter for some users." : "L'enregistrement du gain de relecture rend les pistes plus silencieuses pour certains utilisateurs.",\r
+       "Disable Night Mode" : "Désactiver le mode nuit",\r
+       "Please restart the app": "S'il vous plaît redémarrez l'application",\r
+       "To change the language you need to refresh the page or restart the app!" : "Pour changer la langue, vous devez actualiser la page ou redémarrer l'application !",\r
+       "Loading..." : "Chargement...",\r
+       "Can't get data" : "Impossible d'obtenir des données",\r
+       "Well, there seems to be a problem with this part of the app. Please notify the developer." : "Eh bien, il semble y avoir un problème avec cette partie de l'application. S'il vous plaît informez le développeur.",\r
+       "Album Title" : "Titre de l'album",\r
+       "Wrong Type!" : "Mauvais type !",\r
+       "Blank URL Field": "Champ d'URL vide",\r
+       "You need to insert an URL to download it!" : "Vous devez insérer une URL pour la télécharger !",\r
+       "Wrong URL": "Mauvaise URL",\r
+       "The URL seems to be wrong. Please check it and try it again." : "L'URL semble être fausse. S'il vous plaît vérifiez et essayez à nouveau.",\r
+       "Already in download-queue!" : "Déjà en file d'attente de téléchargement !",\r
+       "Wrong ID!" : "Mauvaise identification !",\r
+       "Added to download-queue" : "Ajouté à la file d'attente de téléchargement",\r
+       "Completed!" : "Terminé !",\r
+       "Failed!" : "Échoué !",\r
+       "Completed with errors!" : "Terminé avec des erreurs !",\r
+       "ID": "Identifiant",\r
+       "Error" : "Erreur",\r
+       "All downloads completed!" : "Tous les téléchargements sont terminés !",\r
+       "One download removed!" : "Un téléchargement supprimé !",\r
+       "All downloads removed!" : "Tous les téléchargements sont supprimés !",\r
+       "Download {{ type }}": "Téléchargement {{ type }}",\r
+  "Download FLAC": "Téléchargement FLAC",\r
+  "Download MP3 320kbps": "Téléchargement MP3 320kbps",\r
+  "Download MP3 128kbps": "Téléchargement MP3 128kbps",\r
+  "Spotify Playlist": "Liste de lecture Spotify",\r
+  "%n songs":[\r
+    [0, 0, "%n musiques"],\r
+    [1, 1, "%n musique"],\r
+    [2, null, "%n musiques"]\r
+  ],\r
+  "by %{name}": "par %{name}"\r
+}\r
index b33f7f0c482cda26b6d678590c81c4858a0142fc..dd178ccc2fbeccd3758a4d4ad74718234421ad1c 100644 (file)
@@ -1,5 +1,5 @@
 {
-       "Please login to your deezer account": "กรุณาเข้าสู่ระบบบัญชี deezer ของคุณ",
+       "Please login to your deezer account": "à¸\81รุà¸\93าà¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9aà¸\94à¹\89วยà¸\9aัà¸\8dà¸\8aี deezer à¸\82อà¸\87à¸\84ุà¸\93",
        "Email": "อีเมล",
        "Password": "รหัสผ่าน",
        "userToken": "userToken",
@@ -10,7 +10,7 @@
        "Path Settings": "การตั้งค่าพาธ",
        "Download folder path": "พาธโฟลเดอร์ดาวน์โหลด",
        "Tracknames template": "แม่แบบชื่อเพลง",
-       "Supported variables are": "ตัวแปรที่รองรับได้แก่",
+       "Supported variables are": "ตัวแปรที่รองรับ",
        "Album tracknames template": "แม่แบบชื่อเพลงอัลบั้ม",
        "Album names template": "แม่แบบชื่ออัลบั้ม",
        "Playlist tracknames template": "แม่แบบเพลย์ลิสต์ชื่อเพลง",
        "Create folders for Artists": "สร้างโฟลเดอร์สำหรับศิลปิน",
        "Create folders for Albums": "สร้างโฟลเดอร์สำหรับอัลบั้ม",
        "Create folders for CDs": "สร้างโฟลเดอร์สำหรับซีดี",
-       "Create Artist, Albums and CDs folders for Playlists too": "สร้างโฟลเดอร์ศิลปินอัลบั้มและซีดีสำหรับเพลย์ลิสต์ด้วย",
-       "Write all Artists in track filename": "à¹\80à¸\82ียà¸\99ชื่อศิลปินทั้งหมดในชื่อไฟล์เพลง",
-       "Adds 0s before %number% to have the same character length": "à¹\80à¸\9eิà¹\88ม 0 à¸\81à¹\88อà¸\99หà¸\99à¹\89า %number% à¹\80à¸\9eืà¹\88อà¹\83หà¹\89มีà¸\84วามยาวอัà¸\81à¸\82ระà¹\80หมือà¸\99กัน",
+       "Create Artist, Albums and CDs folders for Playlists too": "สร้างโฟลเดอร์ศิลปิน อัลบั้ม และซีดี สำหรับเพลย์ลิสต์ด้วย",
+       "Write all Artists in track filename": "à¸\9aัà¸\99à¸\97ึà¸\81ชื่อศิลปินทั้งหมดในชื่อไฟล์เพลง",
+       "Adds 0s before %number% to have the same character length": "à¹\80à¸\9eิà¹\88ม 0 à¸\81à¹\88อà¸\99หà¸\99à¹\89า %number% à¹\80à¸\9eืà¹\88อà¹\83หà¹\89มีà¸\84วามยาวอัà¸\81à¸\82ระà¹\80à¸\97à¹\88ากัน",
        "Add padding to track numbers": "เพิ่มช่องว่างคั่นลำดับเพลง",
-       "Overwrite padding size": "à¹\80à¸\82ียà¸\99ทับขนาดช่องว่าง",
+       "Overwrite padding size": "à¸\9aัà¸\99à¸\97ึà¸\81ทับขนาดช่องว่าง",
        "App Settings": "การตั้งค่าแอป",
        "Concurrent download limit": "ดาวน์โหลดพร้อมกันสูงสุด",
        "Preferred bitrate": "Bitrate ที่ต้องการ",
        "Create log file for Alternatives inside download folder": "สร้างไฟล์บันทึกสำหรับไฟล์ทางเลือกในโฟลเดอร์ดาวน์โหลด",
        "Create M3U8 (Playlist) File": "สร้างไฟล์ M3U8 (เพลย์ลิสต์)",
        "Download Synced Lyrics File (.lrc)": "ดาวน์โหลดไฟล์เนื้อเพลงแบบซิงค์ (.lrc)",
-       "Minimize to system tray": "ลดขนาดลงในถาดระบบ",
-       "Artworks": "อาร์ตเวิร์ก",
+       "Minimize to system tray": "ลà¸\94à¸\82à¸\99าà¸\94à¹\81อà¸\9bลà¸\87à¹\83à¸\99à¸\96าà¸\94ระà¸\9aà¸\9a",
+       "Artworks": "ภาà¸\9eอารà¹\8cà¸\95à¹\80วิรà¹\8cà¸\81",
        "Artwork Size": "ขนาดภาพอาร์ตเวิร์ก",
-       "Save Album Artwork": "บันทึกภาพอาร์ตเวิร์กอัลบั้ม",
-       "Album Artwork Name Template": "à¹\81มà¹\88à¹\81à¸\9aà¸\9aà¸\8aืà¹\88ออารà¹\8cà¸\95à¹\80วิรà¹\8cกอัลบั้ม",
+       "Save Album Artwork": "à¸\9aัà¸\99à¸\97ึà¸\81ภาà¸\9eอารà¹\8cà¸\95à¹\80วิรà¹\8cà¸\81à¸\9bà¸\81อัลà¸\9aัà¹\89ม",
+       "Album Artwork Name Template": "à¹\81มà¹\88à¹\81à¸\9aà¸\9aà¸\8aืà¹\88อà¹\84à¸\9fลà¹\8cภาà¸\9eอารà¹\8cà¸\95à¹\80วิรà¹\8cà¸\81à¸\9bกอัลบั้ม",
        "Save Artist Artwork": "บันทึกภาพอาร์ตเวิร์กศิลปิน",
-       "Artist Artwork Name Template": "แม่แบบชื่ออาร์ตเวิร์กศิลปิน",
+       "Artist Artwork Name Template": "à¹\81มà¹\88à¹\81à¸\9aà¸\9aà¸\8aืà¹\88อà¹\84à¸\9fลà¹\8cภาà¸\9eอารà¹\8cà¸\95à¹\80วิรà¹\8cà¸\81ศิลà¸\9bิà¸\99",
        "Download images as PNGs": "ดาวน์โหลดภาพเป็นไฟล์ PNG",
        "Tags": "แท็ก",
        "Null Character": "อักษรว่าง",
        "Year Format": "รูปแบบปี",
        "Replaces albums tags with the playlist ones": "แทนที่แท็กอัลบั้มด้วยแท็กเพลย์ลิสต์",
        "Save Playlist as Compilation": "บันทึกเพลย์ลิสต์เป็นคอลเลกชัน",
-       "Remove \"(Album Version)\" from tracknames": "ลบ \"(Album Version)\" ออกจากชื่อเพลง",
+       "Remove \"(Album Version)\" from tracknames": "ลบ \"(อัลบั้มเวอร์ชัน)\" ออกจากชื่อเพลง",
        "Choose Which Tags To Save": "เลือกแท็กที่จะบันทึก",
        "Spotify Features": "คุณสมบัติ Spotify",
-       "SpotifyFeatures_Info": "\"Spotify Features\" <b>ไม่ใช่</b>การดาวน์โหลดเพลงจาก Spotify<br>นี่เป็นเพียงการเปิดใช้งานตัวแปลงข้อมูลเมตาของแอป หากเพลงนั้นไม่ได้อยู่ใน Deezer ก็จะไม่สามารถดาวน์โหลดได้<br>คุณสามารถดูวิธีรับ Client ID และ Client Secret ได้<a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/wiki/Spotify+Features\">ที่นี่</a>",
+       "SpotifyFeatures_Info": "\"คุณสมบัติ Spotify\" <b>ไม่ใช่</b>การดาวน์โหลดเพลงจาก Spotify<br>นี่เป็นเพียงการเปิดใช้งานตัวแปลงข้อมูลเมตาของแอป หากเพลงนั้นไม่ได้อยู่ใน Deezer ก็จะไม่สามารถดาวน์โหลดได้<br>คุณสามารถดูวิธีรับ Client ID และ Client Secret ได้<a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/wiki/Spotify+Features\">ที่นี่</a>",
        "Client ID": "Client ID",
        "Client Secret": "Client Secret",
        "Spotify Username (for the Playlists Tab)": "ชื่อผู้ใช้ Spotify (สำหรับแท็บเพลย์ลิสต์)",
        "Maintainers": "ผู้ดูแล",
        "Repo": "Repo",
        "FAQ": "คำถามที่พบบ่อย",
-       "Official mirrors": "มิเรอร์ทางการ",
+       "Official mirrors": "มิà¹\80รอรà¹\8cà¹\84à¸\8bà¸\95à¹\8cà¸\94าวà¸\99à¹\8cà¹\82หลà¸\94à¸\97าà¸\87à¸\81าร",
        "Interface": "ส่วนต่อประสาน",
        "Telegram Contacts": "ช่องทางการติดต่อผ่าน Telegram",
        "News Channel": "ช่องข่าวสาร",
        "Feedback": "ข้อเสนอแนะ",
        "Feedback_Text": "คุณมีข้อเสนอแนะหรืออยากได้คุณสมบัติใหม่ใช่ไหม? ตั้งกระทู้<a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/issues/new\" target=\"_blank\">ปัญหาใหม่</a>และติดป้ายกำกับ 'Feature'",
        "Reporting Bugs": "รายงานบั๊ก",
-       "Bugs_Text": "หากคุณพบบั๊กใด ๆ ก่อนอื่นให้ตรวจสอบที่ <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/wiki/FAQ\" target=\"_blank\">หน้าคำถามที่พบบ่อย</a>.<br> หากคุณไม่สามารถหาวิธีแก้ไขปัญหาได้ ให้ตั้งกระทู้ <a href=\"https://github.com/RemixDev/DRemixIssues/issues/new/choose\" target=\"_blank\">ปัญหาใหม่</a> และส่งข้อมูลเกี่ยวกับบั๊กที่นั่น ขอบคุณ",
+       "Bugs_Text": "หากคุณพบบั๊กใด ๆ ก่อนอื่นให้ตรวจสอบที่ <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/wiki/FAQ\" target=\"_blank\">หน้าคำถามที่พบบ่อย</a><br> หากคุณไม่สามารถหาวิธีแก้ไขปัญหาได้ ให้ตั้งกระทู้ <a href=\"https://github.com/RemixDev/DRemixIssues/issues/new/choose\" target=\"_blank\">ปัญหาใหม่</a> และส่งข้อมูลเกี่ยวกับบั๊กที่นั่น ขอบคุณ",
        "Contacts": "ช่องทางการติดต่อ",
        "Contacts_Text": "หากคุณอยากพูดคุยหรือช่วยเหลือเกี่ยวกับแอปนี้ คุณสามารถทำได้ที่ <a href=\"https://t.me/DeezloaderRemixCommunity\" target=\"_blank\">กลุ่ม Telegram</a>! (ภาษาอังกฤษเท่านั้น)",
        "Attention!": "คำเตือน!",
-       "Attention_Text": "à¸\9cูà¹\89สรà¹\89าà¸\87สรรà¸\84à¹\8cà¹\84มà¹\88à¹\84à¸\94à¹\89สà¸\99ัà¸\9aสà¸\99ุà¸\99à¸\81ารà¸\81à¹\88ออาà¸\8aà¸\8dาà¸\81รรม!<br/>à¸\81ารà¹\83à¸\8aà¹\89à¹\80à¸\84รืà¹\88อà¸\87มือà¸\99ีà¹\89อาà¸\88à¸\9cิà¸\94à¸\81à¸\8eหมายà¹\83à¸\99à¸\9bระà¹\80à¸\97ศà¸\82อà¸\87à¸\84ุà¸\93 à¸\9eึà¸\87ระลึà¸\81à¹\84วà¹\89à¹\80สมอ!<br/>à¸\9cูà¹\89สรà¹\89าà¸\87สรรà¸\84à¹\8cà¹\84มà¹\88รัà¸\9aà¸\9bระà¸\81ัà¸\99à¹\83à¸\94 à¹\86 à¹\81ละà¸\88ะà¹\84มà¹\88รัà¸\9aà¸\9cิà¸\94à¸\8aอà¸\9aà¸\95à¹\88อà¸\84วามà¹\80สียหายหรืออัà¸\99à¸\95รายà¹\83à¸\94 à¹\86 à¸\97ีà¹\88à¹\80à¸\81ิà¸\94จากการใช้ซอฟต์แวร์นี้!",
+       "Attention_Text": "à¸\9cูà¹\89สรà¹\89าà¸\87สรรà¸\84à¹\8cà¹\84มà¹\88à¹\84à¸\94à¹\89สà¸\99ัà¸\9aสà¸\99ุà¸\99à¸\81ารà¸\81à¹\88ออาà¸\8aà¸\8dาà¸\81รรม!<br/>à¸\9eึà¸\87ระลึà¸\81à¹\84วà¹\89à¹\80สมอวà¹\88าà¸\81ารà¹\83à¸\8aà¹\89à¹\80à¸\84รืà¹\88อà¸\87มือà¸\99ีà¹\89อาà¸\88à¸\9cิà¸\94à¸\81à¸\8eหมายà¹\83à¸\99à¸\9bระà¹\80à¸\97ศà¸\82อà¸\87à¸\84ุà¸\93!<br/>à¸\9cูà¹\89สรà¹\89าà¸\87สรรà¸\84à¹\8cà¹\84มà¹\88รัà¸\9aà¸\9bระà¸\81ัà¸\99à¹\83à¸\94 à¹\86 à¹\81ละà¸\88ะà¹\84มà¹\88รัà¸\9aà¸\9cิà¸\94à¸\8aอà¸\9aà¸\95à¹\88อà¸\84วามà¹\80สียหายหรืออัà¸\99à¸\95รายà¹\83à¸\94 à¹\86 à¸\97ีà¹\88à¹\80à¸\81ิà¸\94à¸\82ึà¹\89à¸\99จากการใช้ซอฟต์แวร์นี้!",
        "Changelog": "บันทึกการเปลี่ยนแปลง",
        "Full Changelog Here": "ดูบันทึกการเปลี่ยนแปลงทั้งหมด",
        "License": "สัญญาอนุญาต",
        "Contributions": "การสนับสนุน",
-       "Contributions_Text": "<h5>คุณต้องการมีส่วนร่วมในโครงการนี้หรือไม่? คุณสามารถทำได้<b>หลากหลายวิธี!</b></h5><p>หากคุณเก่ง JavaScript, HTML, CSS หรือ Node.js คุณสามารถมีส่วนร่วมในการเขียนโค้ด แก้บั๊ก และเพิ่มคุณสมบัติใหม่ ๆ โดยใช้ <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix\" target=\"_blank\">Repo ทางการ</a>.</p><p>หากคุณเก่งด้านกราฟิกและการออกแบบ คุณสามารถช่วยส่งการออกแบบใหม่ได้ คุณสามารถนำเสนอการออกแบบใหม่ ๆ ได้โดยตั้งกระทู้  <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/issues/new\" target=\"_blank\">ที่นี่</a>.<br><p>โปรดทราบว่าเรา (ค่อนข้าง) ยึดแนวทางการออกแบบตามหลัก <a href=\"https://material.io/\" target=\"_blank\">Material Design</a>.</p>หากคุณเก่งในเรื่องการค้นหาบั๊กของโปรแกรม คุณสามารถช่วยทดสอบแอปรุ่นเบต้าก่อนออกรุ่นเผยแพร่ได้<br>เข้าร่วม <a href=\"https://t.me/DeezloaderRemixCommunity\" target=\"_blank\">กลุ่ม Telegram</a> เพื่อรับการแจ้งเตือนเมื่อมีการปล่อยรุ่นเบต้า!</p><hr><h5>คุณต้องการมีส่วนร่วมผ่านทางด้านการเงินใช่ไหม? คุณสามารถร่วมบริจาคได้!</h5><p>คุณสามารถบริจาคได้ผ่านลิงค์นี้<br>โปรดจำไว้ว่า<b>นี่เป็นโครงการฟรี</b>และ<b>คุณควรให้การสนับสนุนศิลปินที่คุณรัก</b>ก่อนที่จะหันมาสนับสนุนนักพัฒนา<br>อย่ารู้สึกเกรงใจที่จะต้องบริจาคเลย ยังไงเราก็รู้สึกขอบคุณอยู่แล้ว!</p>",
+       "Contributions_Text": "<h5>คุณต้องการมีส่วนร่วมในโครงการนี้หรือไม่? คุณสามารถทำได้<b>หลากหลายวิธี!</b></h5><p>หากคุณเก่ง JavaScript, HTML, CSS หรือ Node.js คุณสามารถมีส่วนร่วมในการเขียนโค้ด แก้บั๊ก และเพิ่มคุณสมบัติใหม่ ๆ โดยใช้ <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix\" target=\"_blank\">Repo ทางการ</a></p><p>หากคุณเก่งด้านกราฟิกและการออกแบบ คุณสามารถช่วยส่งการออกแบบใหม่ได้ คุณสามารถนำเสนอการออกแบบใหม่ ๆ ได้โดยตั้งกระทู้  <a href=\"https://notabug.org/RemixDevs/DeezloaderRemix/issues/new\" target=\"_blank\">ที่นี่</a><br><p>โปรดทราบว่าเรา (ค่อนข้าง) ยึดแนวทางการออกแบบตามหลัก <a href=\"https://material.io/\" target=\"_blank\">Material Design</a></p>หากคุณเก่งในเรื่องการค้นหาบั๊กของโปรแกรม คุณสามารถช่วยทดสอบแอปรุ่นเบต้าก่อนออกรุ่นเผยแพร่ได้<br>เข้าร่วม <a href=\"https://t.me/DeezloaderRemixCommunity\" target=\"_blank\">กลุ่ม Telegram</a> เพื่อรับการแจ้งเตือนเมื่อมีการปล่อยรุ่นเบต้า!</p><hr><h5>คุณต้องการมีส่วนร่วมผ่านทางด้านการเงินใช่ไหม? คุณสามารถร่วมบริจาคได้!</h5><p>คุณสามารถบริจาคได้ผ่านลิงค์ด้านล่างนี้<br>โปรดจำไว้ว่า<b>นี่เป็นโครงการฟรี</b>และ<b>คุณควรให้การสนับสนุนศิลปินที่คุณรัก</b>ก่อนที่จะหันมาสนับสนุนนักพัฒนา<br>อย่ารู้สึกเกรงใจที่จะต้องบริจาคเลย ยังไงเราก็รู้สึกขอบคุณอยู่แล้ว!</p>",
        "I got it!": "ฉันเข้าใจแล้ว!",
        "Available Countries for": "ประเทศที่ให้บริการสำหรับ",
        "Song/Album URL": "URL เพลง/อัลบั้ม",
index 3ef7825de60c8ec75fb909cb555753efc0764027..13ca513f8c70e3ac69d9d64714c007c9436c422e 100644 (file)
                        <div class="input-field col s12 m6">
                                <select name="lang" id="modal_settings_select_lang">
                                        <option value="en">English</option>
+                                       <option value="fr">Français</option>
                                        <option value="it">Italiano</option>
                                        <option value="de">Deutsch</option>
                                        <option value="es">Español</option>
                                                        Turkish: Metep<br>
                                                        Brazilian Portuguese: C4RLETH<br>
                                                        Thai: RadiusGreenhill<br>
+                                                       French: Didiou, kaypa<br>
                                                </p>
                                        </div>
                                </li>
index 9c82198f1bc0451c6b27fcea4ca132b36ec7bd80..984bb05c3512c953a95b8110839aa81fd978e148 100644 (file)
                                }
                        }
                },
+               "app-root-path": {
+                       "version": "1.4.0",
+                       "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-1.4.0.tgz",
+                       "integrity": "sha1-YzXYZclkDQ+tmQBOWnkjIjjpLfo=",
+                       "dev": true
+               },
                "argparse": {
                        "version": "1.0.10",
                        "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
                        "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
                        "dev": true
                },
+               "astral-regex": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+                       "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+                       "dev": true
+               },
                "async-exit-hook": {
                        "version": "2.0.1",
                        "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
                        "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
                        "dev": true
                },
+               "cli-truncate": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.0.0.tgz",
+                       "integrity": "sha512-C4hp+8GCIFVsUUiXcw+ce+7wexVWImw8rQrgMBFsqerx9LvvcGlwm6sMjQYAEmV/Xb87xc1b5Ttx505MSpZVqg==",
+                       "dev": true,
+                       "requires": {
+                               "slice-ansi": "^2.1.0",
+                               "string-width": "^4.1.0"
+                       },
+                       "dependencies": {
+                               "ansi-regex": {
+                                       "version": "4.1.0",
+                                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+                                       "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+                                       "dev": true
+                               },
+                               "emoji-regex": {
+                                       "version": "8.0.0",
+                                       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+                                       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+                                       "dev": true
+                               },
+                               "is-fullwidth-code-point": {
+                                       "version": "3.0.0",
+                                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+                                       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+                                       "dev": true
+                               },
+                               "string-width": {
+                                       "version": "4.1.0",
+                                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz",
+                                       "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==",
+                                       "dev": true,
+                                       "requires": {
+                                               "emoji-regex": "^8.0.0",
+                                               "is-fullwidth-code-point": "^3.0.0",
+                                               "strip-ansi": "^5.2.0"
+                                       }
+                               },
+                               "strip-ansi": {
+                                       "version": "5.2.0",
+                                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+                                       "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+                                       "dev": true,
+                                       "requires": {
+                                               "ansi-regex": "^4.1.0"
+                                       }
+                               }
+                       }
+               },
                "cliui": {
                        "version": "4.1.0",
                        "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
                                "yargs": "^13.2.2"
                        }
                },
+               "electron-context-menu": {
+                       "version": "0.15.0",
+                       "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-0.15.0.tgz",
+                       "integrity": "sha512-XLdtbX90NPkWycG3IzwtCmfX4ggu+lofNOW1nVRStb+ScFs49WTourW1k77Z4DTyThR3gUHg3UPXVBMbW1gNsg==",
+                       "dev": true,
+                       "requires": {
+                               "cli-truncate": "^2.0.0",
+                               "electron-dl": "^1.2.0",
+                               "electron-is-dev": "^1.0.1"
+                       }
+               },
+               "electron-dl": {
+                       "version": "1.14.0",
+                       "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-1.14.0.tgz",
+                       "integrity": "sha512-4okyei42a1mLsvLK7hLrIfd20EQzB18nIlLTwBV992aMSmTGLUEFRTmO1MfSslGNrzD8nuPuy1l/VxO8so4lig==",
+                       "dev": true,
+                       "requires": {
+                               "ext-name": "^5.0.0",
+                               "pupa": "^1.0.0",
+                               "unused-filename": "^1.0.0"
+                       }
+               },
                "electron-download": {
                        "version": "4.1.1",
                        "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz",
                                "sumchecker": "^2.0.2"
                        }
                },
+               "electron-is-dev": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.1.0.tgz",
+                       "integrity": "sha512-Z1qA/1oHNowGtSBIcWk0pcLEqYT/j+13xUw/MYOrBUOL4X7VN0i0KCTf5SqyvMPmW5pSPKbo28wkxMxzZ20YnQ==",
+                       "dev": true
+               },
                "electron-osx-sign": {
                        "version": "0.4.11",
                        "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz",
                                "mime": "^2.4.1"
                        }
                },
+               "electron-window-state-manager": {
+                       "version": "0.3.2",
+                       "resolved": "https://registry.npmjs.org/electron-window-state-manager/-/electron-window-state-manager-0.3.2.tgz",
+                       "integrity": "sha1-pVLqNUcCl8mZx0TYGrsqjIpRdw4=",
+                       "dev": true,
+                       "requires": {
+                               "app-root-path": "^1.3.0",
+                               "fs-jetpack": "^0.9.2"
+                       }
+               },
                "emoji-regex": {
                        "version": "7.0.3",
                        "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
                                }
                        }
                },
+               "ext-list": {
+                       "version": "2.2.2",
+                       "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
+                       "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
+                       "dev": true,
+                       "requires": {
+                               "mime-db": "^1.28.0"
+                       }
+               },
+               "ext-name": {
+                       "version": "5.0.0",
+                       "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
+                       "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
+                       "dev": true,
+                       "requires": {
+                               "ext-list": "^2.0.0",
+                               "sort-keys-length": "^1.0.0"
+                       }
+               },
                "extend": {
                        "version": "3.0.2",
                        "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
                                }
                        }
                },
+               "fs-jetpack": {
+                       "version": "0.9.2",
+                       "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-0.9.2.tgz",
+                       "integrity": "sha1-k7QU29B4AYY9ZMgadq3APYUMm1Y=",
+                       "dev": true,
+                       "requires": {
+                               "minimatch": "^3.0.2",
+                               "mkdirp": "^0.5.1",
+                               "q": "^1.0.1",
+                               "rimraf": "^2.2.8"
+                       }
+               },
+               "fs.realpath": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+                       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+                       "dev": true
+               },
                "get-caller-file": {
                        "version": "2.0.5",
                        "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
                                "assert-plus": "^1.0.0"
                        }
                },
+               "glob": {
+                       "version": "7.1.4",
+                       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+                       "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+                       "dev": true,
+                       "requires": {
+                               "fs.realpath": "^1.0.0",
+                               "inflight": "^1.0.4",
+                               "inherits": "2",
+                               "minimatch": "^3.0.4",
+                               "once": "^1.3.0",
+                               "path-is-absolute": "^1.0.0"
+                       }
+               },
                "global-dirs": {
                        "version": "0.1.1",
                        "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
                                "repeating": "^2.0.0"
                        }
                },
+               "inflight": {
+                       "version": "1.0.6",
+                       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+                       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+                       "dev": true,
+                       "requires": {
+                               "once": "^1.3.0",
+                               "wrappy": "1"
+                       }
+               },
                "inherits": {
                        "version": "2.0.3",
                        "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
                                "path-is-inside": "^1.0.1"
                        }
                },
+               "is-plain-obj": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+                       "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+                       "dev": true
+               },
                "is-redirect": {
                        "version": "1.0.0",
                        "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
                                }
                        }
                },
+               "modify-filename": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz",
+                       "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=",
+                       "dev": true
+               },
                "ms": {
                        "version": "2.1.1",
                        "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
                        "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
                        "dev": true
                },
+               "path-is-absolute": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+                       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+                       "dev": true
+               },
                "path-is-inside": {
                        "version": "1.0.2",
                        "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
                        "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
                        "dev": true
                },
+               "pupa": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/pupa/-/pupa-1.0.0.tgz",
+                       "integrity": "sha1-mpVopa9+ZXuEYqbp1TKHQ1YM7/Y=",
+                       "dev": true
+               },
+               "q": {
+                       "version": "1.5.1",
+                       "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+                       "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+                       "dev": true
+               },
                "qs": {
                        "version": "6.5.2",
                        "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
                                "path-parse": "^1.0.6"
                        }
                },
+               "rimraf": {
+                       "version": "2.7.1",
+                       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+                       "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+                       "dev": true,
+                       "requires": {
+                               "glob": "^7.1.3"
+                       }
+               },
                "safe-buffer": {
                        "version": "5.1.2",
                        "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
                                "string-width": "^1.0.1"
                        }
                },
+               "slice-ansi": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+                       "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+                       "dev": true,
+                       "requires": {
+                               "ansi-styles": "^3.2.0",
+                               "astral-regex": "^1.0.0",
+                               "is-fullwidth-code-point": "^2.0.0"
+                       },
+                       "dependencies": {
+                               "is-fullwidth-code-point": {
+                                       "version": "2.0.0",
+                                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+                                       "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+                                       "dev": true
+                               }
+                       }
+               },
+               "sort-keys": {
+                       "version": "1.1.2",
+                       "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+                       "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+                       "dev": true,
+                       "requires": {
+                               "is-plain-obj": "^1.0.0"
+                       }
+               },
+               "sort-keys-length": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
+                       "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=",
+                       "dev": true,
+                       "requires": {
+                               "sort-keys": "^1.0.0"
+                       }
+               },
                "source-map": {
                        "version": "0.6.1",
                        "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
                        "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
                        "dev": true
                },
+               "unused-filename": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-1.0.0.tgz",
+                       "integrity": "sha1-00CID3GuIRXrqhMlvvBcxmhEacY=",
+                       "dev": true,
+                       "requires": {
+                               "modify-filename": "^1.1.0",
+                               "path-exists": "^3.0.0"
+                       }
+               },
                "unzip-response": {
                        "version": "2.0.1",
                        "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
index 86cb9005035aabfcc5c6fb9db65dd12e9e241b0f..1406d55cff056fea8e8e2154d43f1de519324ec8 100644 (file)
@@ -10,7 +10,9 @@
        "devDependencies": {
                "cross-env": "latest",
                "electron": "^3.1.9",
-               "electron-builder": "^20.40.2"
+               "electron-builder": "^20.40.2",
+               "electron-context-menu": "^0.15.0",
+               "electron-window-state-manager": "latest"
        },
        "scripts": {
                "dist:win32": "electron-builder -w --ia32 --config.nsis.artifactName=\"${productName} ${version} Setup x32.${ext}\" --config.portable.artifactName=\"${productName} ${version} x32.${ext}\"",