diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c1f9368..ff0e8b6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -113,4 +113,4 @@ jobs: env: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} - timeout-minutes: 20 + timeout-minutes: 20 \ No newline at end of file diff --git a/README.md b/README.md index 5cf7495..29623f9 100644 --- a/README.md +++ b/README.md @@ -188,4 +188,4 @@ For any questions or suggestions, feel free to open an issue or contact me at: ## License -This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details. +This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 51e2c83..90d6646 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,12 +34,14 @@ "dayjs": "^1.11.13", "fast-xml-parser": "^5.2.5", "formik": "^2.4.6", + "heic-to": "^1.4.2", "heic2any": "^0.0.4", "i18next": "^25.3.2", "i18next-browser-languagedetector": "^8.2.0", "i18next-http-backend": "^3.0.2", "jimp": "^0.22.12", "js-quantities": "^1.8.0", + "jspdf": "^3.0.3", "jszip": "^3.10.1", "lint-staged": "^15.4.3", "locize": "^4.0.14", @@ -3487,6 +3489,11 @@ "integrity": "sha512-gDQJflz1rOgEcUXkMAl80bDGN46f5mp8GbcM5dyvq+zsFV6YRBRtmNxlJJ5mjY77T7BRkRFzdIBVmK90QYhCxA==", "license": "MIT" }, + "node_modules/@types/pako": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/@types/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==" + }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", @@ -3509,6 +3516,12 @@ "@types/node": "*" } }, + "node_modules/@types/raf": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", + "optional": true + }, "node_modules/@types/react": { "version": "18.3.25", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.25.tgz", @@ -4448,6 +4461,15 @@ "dev": true, "license": "MIT" }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "optional": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -4737,6 +4759,25 @@ ], "license": "CC-BY-4.0" }, + "node_modules/canvg": { + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/canvg/-/canvg-3.0.11.tgz", + "integrity": "sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/centra": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", @@ -5170,6 +5211,17 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "license": "MIT" }, + "node_modules/core-js": { + "version": "3.46.0", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.46.0.tgz", + "integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==", + "hasInstallScript": true, + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -5268,6 +5320,15 @@ "node": ">=4" } }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, "node_modules/css-select": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", @@ -5697,6 +5758,21 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-3.3.0.tgz", + "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==", + "optional": true, + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/dompurify/node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "optional": true + }, "node_modules/domutils": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", @@ -6728,6 +6804,21 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-png": { + "version": "6.4.0", + "resolved": "https://registry.npmmirror.com/fast-png/-/fast-png-6.4.0.tgz", + "integrity": "sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==", + "dependencies": { + "@types/pako": "^2.0.3", + "iobuffer": "^5.3.2", + "pako": "^2.1.0" + } + }, + "node_modules/fast-png/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, "node_modules/fast-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", @@ -6777,7 +6868,6 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", - "dev": true, "license": "MIT" }, "node_modules/file-entry-cache": { @@ -7523,6 +7613,12 @@ "node": ">= 0.4" } }, + "node_modules/heic-to": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/heic-to/-/heic-to-1.4.2.tgz", + "integrity": "sha512-y69thwxfNcEm2Vk8lbOD/cMabnvMJyOREfJYiCHcXCDqlfcPyJoBhyRc8+iDe1B95LRfpbTOpzxzY1xbRkdwBA==", + "license": "LGPL-3.0" + }, "node_modules/heic2any": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/heic2any/-/heic2any-0.0.4.tgz", @@ -7553,6 +7649,19 @@ "void-elements": "3.1.0" } }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "optional": true, + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/htmlparser2": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", @@ -7859,6 +7968,11 @@ "node": ">= 0.4" } }, + "node_modules/iobuffer": { + "version": "5.4.0", + "resolved": "https://registry.npmmirror.com/iobuffer/-/iobuffer-5.4.0.tgz", + "integrity": "sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==" + }, "node_modules/iota-array": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz", @@ -8589,6 +8703,22 @@ "node": "*" } }, + "node_modules/jspdf": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/jspdf/-/jspdf-3.0.3.tgz", + "integrity": "sha512-eURjAyz5iX1H8BOYAfzvdPfIKK53V7mCpBTe7Kb16PaM8JSXEcUQNBQaiWMI8wY5RvNOPj4GccMjTlfwRBd+oQ==", + "dependencies": { + "@babel/runtime": "^7.26.9", + "fast-png": "^6.2.0", + "fflate": "^0.8.1" + }, + "optionalDependencies": { + "canvg": "^3.0.11", + "core-js": "^3.6.0", + "dompurify": "^3.2.4", + "html2canvas": "^1.0.0-rc.5" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -10130,6 +10260,12 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "optional": true + }, "node_modules/phin": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", @@ -10831,6 +10967,15 @@ ], "license": "MIT" }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "optional": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, "node_modules/rc-slider": { "version": "11.1.9", "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.9.tgz", @@ -11406,6 +11551,15 @@ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "license": "MIT" }, + "node_modules/rgbcolor": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", + "optional": true, + "engines": { + "node": ">= 0.8.15" + } + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -11908,6 +12062,15 @@ "dev": true, "license": "MIT" }, + "node_modules/stackblur-canvas": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz", + "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==", + "optional": true, + "engines": { + "node": ">=0.1.14" + } + }, "node_modules/start-server-and-test": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-2.1.2.tgz", @@ -12615,6 +12778,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/synckit": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", @@ -12716,6 +12888,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -13173,6 +13354,15 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "optional": true, + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, "node_modules/uzip": { "version": "0.20201231.0", "resolved": "https://registry.npmjs.org/uzip/-/uzip-0.20201231.0.tgz", diff --git a/package.json b/package.json index d0f6d7e..427b58d 100644 --- a/package.json +++ b/package.json @@ -53,12 +53,14 @@ "dayjs": "^1.11.13", "fast-xml-parser": "^5.2.5", "formik": "^2.4.6", + "heic-to": "^1.4.2", "heic2any": "^0.0.4", "i18next": "^25.3.2", "i18next-browser-languagedetector": "^8.2.0", "i18next-http-backend": "^3.0.2", "jimp": "^0.22.12", "js-quantities": "^1.8.0", + "jspdf": "^3.0.3", "jszip": "^3.10.1", "lint-staged": "^15.4.3", "locize": "^4.0.14", diff --git a/public/locales/de/converters.json b/public/locales/de/converters.json new file mode 100644 index 0000000..708fe9d --- /dev/null +++ b/public/locales/de/converters.json @@ -0,0 +1,26 @@ +{ + "audioConverter": { + "description": "Konvertieren Sie Audiodateien zwischen verschiedenen Formaten.", + "inputTitle": "Audioeingabe", + "longDescription": "Dieses Tool ermöglicht es Ihnen, Audiodateien von einem Format in ein anderes zu konvertieren und unterstützt eine breite Palette von Audioformaten für eine nahtlose Konvertierung.", + "outputFormat": "Ausgabeformat", + "outputFormatDescription": "Wählen Sie das gewünschte Audioausgabeformat", + "outputTitle": "Konvertierte Audio", + "shortDescription": "Konvertieren Sie Audiodateien in verschiedene Formate.", + "title": "Audio-Konverter" + }, + "convertToWebp": { + "description": "Konvertieren Sie verschiedene Bildformate mit anpassbaren Qualitäts- und Hintergrundfarbeneinstellungen in das WebP-Format.", + "failedToConvert": "Die Konvertierung des Bildes/der Bilder in WebP ist fehlgeschlagen. Bitte versuchen Sie es erneut.", + "inputTitle": "Eingabebilder", + "options": { + "colorDescription": "Hintergrundfarbe (für transparente Bilder)", + "quality": "Konvertierungsqualität:", + "qualityDescription": "Höhere Werte = bessere Qualität, größere Dateigröße", + "title": "Konvertierungseinstellungen" + }, + "resultTitle": "WEBP-Bilder", + "shortDescription": "Konvertieren Sie Bilder in WebP-Format mit Qualitätskontrolle.", + "title": "Bilder in WebP konvertieren" + } +} diff --git a/public/locales/de/csv.json b/public/locales/de/csv.json index fdaa7b5..ab3dc8f 100644 --- a/public/locales/de/csv.json +++ b/public/locales/de/csv.json @@ -116,5 +116,10 @@ "longDescription": "Dieses Tool transponiert Komma-getrennte Werte (CSV). Es behandelt die CSV-Datei wie eine Datenmatrix und spiegelt alle Elemente entlang der Hauptdiagonale. Die Ausgabe enthält dieselben CSV-Daten wie die Eingabe, wobei nun alle Zeilen zu Spalten und alle Spalten zu Zeilen werden. Nach der Transposition weist die CSV-Datei entgegengesetzte Dimensionen auf. Wenn die Eingabedatei beispielsweise 4 Spalten und 3 Zeilen enthält, enthält die Ausgabedatei 3 Spalten und 4 Zeilen. Während der Konvertierung bereinigt das Programm die Daten außerdem von unnötigen Zeilen und korrigiert unvollständige Daten. Insbesondere löscht das Tool automatisch alle leeren Datensätze und Kommentare, die mit einem bestimmten Zeichen beginnen, das Sie in den Optionen festlegen können. Sollten die CSV-Daten beschädigt oder verloren gehen, ergänzt das Dienstprogramm die Datei zusätzlich mit leeren Feldern oder benutzerdefinierten Feldern, die Sie in den Optionen festlegen können. CSV-unverständlich!", "shortDescription": "Transponieren Sie schnell eine CSV-Datei.", "title": "CSV transponieren" + }, + "tsvToJson": { + "description": "Konvertieren Sie TSV-Daten (Tab-Separated Values) in das JSON-Format. Transformieren Sie tabellarische Daten in strukturierte JSON-Objekte.", + "shortDescription": "Konvertieren Sie TSV in das JSON-Format", + "title": "TSV zu JSON" } } diff --git a/public/locales/de/image.json b/public/locales/de/image.json index 85c1b2f..e388114 100644 --- a/public/locales/de/image.json +++ b/public/locales/de/image.json @@ -1,6 +1,6 @@ { "changeColors": { - "description": "Welt", + "description": "Ersetze ausgewahlte Farben in einem Bild schnell und prazise durch neue Farben.", "shortDescription": "Schnelles Austauschen der Farben in einem Bild", "title": "Farben im Bild ändern" }, @@ -33,13 +33,8 @@ "shortDescription": "Konvertieren Sie Ihre JPG-Bilder schnell in PNG", "title": "Konvertieren Sie JPG in PNG" }, - "convertToJpg": { - "description": "Konvertieren Sie verschiedene Bildformate (PNG, GIF, TIF, PSD, SVG, WEBP, HEIC, RAW) in JPG mit anpassbaren Qualitäts- und Hintergrundfarbeinstellungen.", - "shortDescription": "Konvertieren Sie Bilder mit Qualitätskontrolle in JPG", - "title": "Bilder in JPG konvertieren" - }, "createTransparent": { - "description": "Welt", + "description": "Mache den Hintergrund eines Bildes transparent, indem du die ausgewahlte Farbe entfernst.", "shortDescription": "Machen Sie ein Bild schnell transparent", "title": "Transparentes PNG erstellen" }, @@ -66,7 +61,7 @@ "title": "QR-Code-Generator" }, "removeBackground": { - "description": "Welt", + "description": "Entferne den Hintergrund eines Bildes automatisch und behalte das Hauptmotiv transparent bei.", "shortDescription": "Hintergründe automatisch aus Bildern entfernen", "title": "Hintergrund aus Bild entfernen" }, diff --git a/public/locales/de/json.json b/public/locales/de/json.json index c94b4b5..33c1dcf 100644 --- a/public/locales/de/json.json +++ b/public/locales/de/json.json @@ -46,11 +46,6 @@ "shortDescription": "Konvertieren Sie Objekte in JSON-Zeichenfolgen", "title": "Stringify JSON" }, - "tsvToJson": { - "description": "Konvertieren Sie TSV-Daten (Tab-Separated Values) in das JSON-Format. Transformieren Sie tabellarische Daten in strukturierte JSON-Objekte.", - "shortDescription": "Konvertieren Sie TSV in das JSON-Format", - "title": "TSV zu JSON" - }, "validateJson": { "description": "Überprüfen Sie, ob JSON gültig und wohlgeformt ist.", "inputTitle": "JSON-Eingabe", diff --git a/public/locales/de/list.json b/public/locales/de/list.json index b7545c8..19fc3b6 100644 --- a/public/locales/de/list.json +++ b/public/locales/de/list.json @@ -113,37 +113,6 @@ "trimItemsDescription": "Entfernen Sie vor dem Vergleichen von Elementen führende und nachfolgende Leerzeichen.", "uniqueItemOptions": "Einzigartige Artikeloptionen" }, - "group": { - "deleteEmptyItems": "Leere Elemente löschen", - "deleteEmptyItemsDescription": "Ignorieren Sie leere Elemente und nehmen Sie sie nicht in die Gruppen auf.", - "description": "Das weltweit einfachste browserbasierte Dienstprogramm zum Gruppieren von Listenelementen. Geben Sie Ihre Liste ein und legen Sie Gruppierungskriterien fest, um Elemente in logische Gruppen zu ordnen. Ideal zum Kategorisieren von Daten, Organisieren von Informationen oder Erstellen strukturierter Listen. Unterstützt benutzerdefinierte Trennzeichen und verschiedene Gruppierungsoptionen.", - "emptyItemsAndPadding": "Leere Elemente und Polsterung", - "groupNumberDescription": "Anzahl der Elemente in einer Gruppe", - "groupSeparatorDescription": "Gruppentrennzeichen", - "groupSizeAndSeparators": "Gruppengröße und Trennzeichen", - "inputItemSeparator": "Eingabeelement-Trennzeichen", - "inputTitle": "Eingabeliste", - "itemSeparatorDescription": "Elementtrennzeichen", - "leftWrapDescription": "Linkes Umbruchsymbol der Gruppe.", - "padNonFullGroups": "Nicht volle Gruppen auffüllen", - "padNonFullGroupsDescription": "Füllen Sie nicht volle Gruppen mit einem benutzerdefinierten Element (unten eingeben).", - "paddingCharDescription": "Verwenden Sie dieses Zeichen oder Element, um nicht volle Gruppen aufzufüllen.", - "resultTitle": "Gruppierte Elemente", - "rightWrapDescription": "Rechtes Umbruchsymbol der Gruppe.", - "shortDescription": "Gruppieren Sie Listenelemente nach gemeinsamen Eigenschaften", - "splitOperators": { - "regex": { - "description": "Begrenzen Sie die Elemente der Eingabeliste mit einem regulären Ausdruck.", - "title": "Verwenden Sie einen regulären Ausdruck zum Aufteilen" - }, - "symbol": { - "description": "Begrenzen Sie die Elemente der Eingabeliste durch ein Zeichen.", - "title": "Verwenden Sie ein Symbol zum Teilen" - } - }, - "splitSeparatorDescription": "Legen Sie ein Trennsymbol oder einen regulären Ausdruck fest.", - "title": "Gruppe" - }, "reverse": { "description": "Diese einfache browserbasierte Anwendung druckt alle Listenelemente rückwärts. Die Eingabeelemente können durch ein beliebiges Symbol getrennt werden. Sie können auch das Trennzeichen der umgekehrten Listenelemente ändern.", "inputTitle": "Eingabeliste", diff --git a/public/locales/de/pdf.json b/public/locales/de/pdf.json index 5d3ba8b..a424642 100644 --- a/public/locales/de/pdf.json +++ b/public/locales/de/pdf.json @@ -21,6 +21,11 @@ "shortDescription": "Komprimieren Sie PDF-Dateien sicher in Ihrem Browser", "title": "PDF komprimieren" }, + "convertToPdf": { + "description": "Verschiedene Bildformate (PNG, GIF, JPG, TIF, PSD, SVG, WEBP, HEIC, RAW) in PDF konvertieren, mit Optionen zum Skalieren des Bildes und zur Wahl der Seitenorientierung.", + "shortDescription": "Bilder in PDF mit Skalierungs- und Orientierungskontrolle konvertieren", + "title": "Bilder in PDF konvertieren" + }, "editor": { "description": "Erweiterter PDF-Editor mit Funktionen zum Kommentieren, Ausfüllen von Formularen, Hervorheben und Exportieren. Bearbeiten Sie Ihre PDFs direkt im Browser mit professionellen Tools wie Texteinfügung, Zeichnen, Hervorheben, Unterschreiben und Ausfüllen von Formularen.", "shortDescription": "Bearbeiten Sie PDFs mit erweiterten Werkzeugen zum Kommentieren, Signieren und Bearbeiten", @@ -81,8 +86,8 @@ "longDescription": "Ändern Sie die Ausrichtung von PDF-Seiten, indem Sie sie um 90, 180 oder 270 Grad drehen. Nützlich zum Korrigieren falsch gescannter Dokumente oder zum Vorbereiten von PDFs für den Druck.", "pageRangesDescription": "Geben Sie Seitenzahlen oder Bereiche durch Kommas getrennt ein (z. B. 1,3,5-7).", "pageRangesPlaceholder": "z.B. 1,5-8", - "pagesWillBeRotated": "{{count}} Seite{{count !== 1 ? 's' : ''}} wird gedreht", - "pdfPageCount": "PDF hat {{count}} Seite{{count !== 1 ? 's' : ''}}", + "pagesWillBeRotated": "{{count}} Seite{{plural}} wird gedreht", + "pdfPageCount": "PDF hat {{count}} Seite{{plural}}", "resultTitle": "Gedrehtes PDF", "rotatingPages": "Seiten drehen", "rotationAngle": "Drehwinkel", @@ -98,11 +103,11 @@ "description": "Extrahieren Sie bestimmte Seiten aus einem PDF-Dokument.", "extractingPages": "Seiten extrahieren", "inputTitle": "Eingabe-PDF", - "pageExtractionPreview": "{{count}} Seite{{count !== 1 ? 's' : ''}} wird extrahiert", + "pageExtractionPreview": "{{count}} Seite{{plural}} wird extrahiert", "pageRangesDescription": "Geben Sie Seitenzahlen oder Bereiche durch Kommas getrennt ein (z. B. 1,3,5-7).", "pageRangesPlaceholder": "z.B. 1,5-8", "pageSelection": "Seitenauswahl", - "pdfPageCount": "PDF hat {{count}} Seite{{count !== 1 ? 's' : ''}}", + "pdfPageCount": "PDF hat {{count}} Seite{{plural}}", "resultTitle": "Extrahiertes PDF", "shortDescription": "Extrahieren Sie bestimmte Seiten aus einer PDF-Datei", "title": "PDF teilen", diff --git a/public/locales/de/pl.json b/public/locales/de/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/public/locales/de/pl.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/de/time.json b/public/locales/de/time.json index ffe6c7c..2deb733 100644 --- a/public/locales/de/time.json +++ b/public/locales/de/time.json @@ -59,24 +59,29 @@ } }, "convertUnixToDate": { - "addUtcLabel": "Suffix „UTC“ hinzufügen", - "addUtcLabelDescription": "Anzeige „UTC“ nach dem konvertierten Datum (nur für den UTC-Modus)", - "description": "Konvertieren Sie einen Unix-Zeitstempel in ein für Menschen lesbares Datum.", + "addUtcLabel": "Suffix \"UTC\" hinzufügen", + "addUtcLabelDescription": "Anzeige \"UTC\" nach dem konvertierten Datum (nur für den UTC-Modus)", + "date-to-unix": "Datum → Unix", + "description": "Unix-Zeitstempel in lesbare Daten und Datumsangaben in Unix-Zeitstempel konvertieren (beide Richtungen).", + "optionsTitle": "Konvertierungsmodus", "outputOptions": "Ausgabeoptionen", - "shortDescription": "Unix-Zeitstempel in Datum konvertieren", - "title": "Konvertieren Sie Unix in Datum", + "shortDescription": "Unix-Zeitstempel und Daten in beide Richtungen konvertieren.", + "title": "Unix ↔ Datum konvertieren", "toolInfo": { - "description": "Dieses Tool konvertiert einen Unix-Zeitstempel (in Sekunden) in ein lesbares Datumsformat (z. B. JJJJ-MM-TT HH:MM:SS). Es unterstützt sowohl die lokale als auch die UTC-Ausgabe und eignet sich daher für die schnelle Interpretation von Zeitstempeln aus Protokollen, APIs oder Systemen, die Unix-Zeit verwenden.", - "title": "Konvertieren Sie Unix in Datum" + "description": "Dieses Tool konvertiert Unix-Zeitstempel (in Sekunden) in menschenlesbare Datumsformate wie YYYY-MM-DD HH:MM:SS und konvertiert auch formatierte Daten zurück in Unix-Zeitstempel. Sie können UTF-Ausgabe, lokale Zeitzone oder einen benutzerdefinierten UTC-Offset wählen (z.B.: YYYY-MM-DD HH:MM:SS +XX:XX). Wenn kein Offset angegeben und lokale Zeitzone nicht ausgewählt ist, wird standardmäßig UTC (+00:00) verwendet.", + "title": "Unix ↔ Datum konvertieren" }, + "tzOptions": "Zeitzonen-Optionen", + "unix-to-date": "Unix → Datum", "useLocalTime": "Lokale Zeit verwenden", - "useLocalTimeDescription": "Zeigen Sie das konvertierte Datum in Ihrer lokalen Zeitzone anstelle von UTC an", - "withLabel": "Optionen" + "useLocalTimeDescription": "Zeige das konvertierte Datum in deiner lokalen Zeitzone statt UTC an", + "useUTC": "UTC verwenden" }, "crontabGuru": { - "description": "Generieren und verstehen Sie Cron-Ausdrücke. Erstellen Sie Cron-Zeitpläne für automatisierte Aufgaben und Systemjobs.", - "shortDescription": "Cron-Ausdrücke generieren und verstehen", - "title": "Crontab Guru" + "title": "Crontab Guru", + "description": "Analysieren und erklären Sie Cron-Ausdrücke auf Deutsch. Verstehen Sie sofort, was ein Cron-Zeitplan bewirkt, validieren Sie die Syntax und verarbeiten Sie mehrere Ausdrücke gleichzeitig.", + "shortDescription": "Cron-Ausdrücke analysieren und verständlich erklären", + "longDescription": "Crontab Guru ist ein Cron-Ausdruck-Parser und -Validator, der komplexe Cron-Syntax in klare, lesbare Beschreibungen übersetzt. Egal ob Sie automatische Backups, Systemwartungsaufgaben oder CI/CD-Pipelines planen – dieses Tool hilft Ihnen zu verstehen, wann genau Ihre Jobs ausgeführt werden. Unterstützt standardmäßige 5-Feld-Cron-Ausdrücke, validiert die Syntax in Echtzeit und verarbeitet mehrere Ausdrücke gleichzeitig – einen pro Zeile. Verfügbar auf Englisch, Französisch, Spanisch, Deutsch, Japanisch, Chinesisch, Portugiesisch, Niederländisch und Russisch." }, "timeBetweenDates": { "description": "Berechnen Sie die Zeitdifferenz zwischen zwei Daten. Ermitteln Sie die genaue Dauer in Tagen, Stunden, Minuten und Sekunden.", diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json index e907627..cec7685 100644 --- a/public/locales/de/translation.json +++ b/public/locales/de/translation.json @@ -225,13 +225,10 @@ "loading": "Wird geladen... Dies kann einen Moment dauern.", "result": "Ergebnis" }, - "toolMultipleAudioInput": { - "inputTitle": "Eingang {{type}}", - "noFilesSelected": "Keine Dateien ausgewählt" - }, - "toolMultiplePdfInput": { - "inputTitle": "Eingang {{type}}", - "noFilesSelected": "Keine Dateien ausgewählt" + "toolMultipleInput": { + "inputTitle": "Eingabe {{type}}", + "noFilesSelected": "Keine Dateien ausgewählt", + "deleteFile": "Datei löschen" }, "toolOptions": { "title": "Werkzeugoptionen" diff --git a/public/locales/en/audio.json b/public/locales/en/audio.json index 5184efe..5984b69 100644 --- a/public/locales/en/audio.json +++ b/public/locales/en/audio.json @@ -41,16 +41,16 @@ } }, "trim": { - "description": "Cut and trim audio files to extract specific segments by specifying start and end times.", + "description": "Cut and trim audio files to extract specific segments by specifying start and end times with sub-second precision.", "endTime": "End Time", - "endTimeDescription": "End time in format HH:MM:SS (e.g., 00:01:30)", + "endTimeDescription": "End time in format HH:MM:SS.mmm (e.g., 00:01:30.450)", "inputTitle": "Input Audio", - "longDescription": "This tool allows you to trim audio files by specifying start and end times. You can extract specific segments from longer audio files, remove unwanted parts, or create shorter clips. Supports various audio formats including MP3, AAC, and WAV. Perfect for podcast editing, music production, or any audio editing needs.", + "longDescription": "This tool allows you to trim audio files by specifying start and end times with sub-second precision. You can extract specific segments from longer audio files, remove unwanted parts, or create shorter clips. Supports various audio formats including MP3, AAC, and WAV. Perfect for podcast editing, music production, or any audio editing needs.", "outputFormat": "Output Format", "resultTitle": "Trimmed Audio", - "shortDescription": "Trim audio files to extract specific time segments (MP3, AAC, WAV).", + "shortDescription": "Trim audio files to extract specific time segments with sub-second precision (MP3, AAC, WAV).", "startTime": "Start Time", - "startTimeDescription": "Start time in format HH:MM:SS (e.g., 00:00:30)", + "startTimeDescription": "Start time in format HH:MM:SS.mmm (e.g., 00:00:30.820)", "timeSettings": "Time Settings", "title": "Trim Audio", "toolInfo": { diff --git a/public/locales/en/converters.json b/public/locales/en/converters.json new file mode 100644 index 0000000..a2943af --- /dev/null +++ b/public/locales/en/converters.json @@ -0,0 +1,40 @@ +{ + "audioConverter": { + "description": "Convert audio files between different formats.", + "inputTitle": "Audio Input", + "longDescription": "This tool allows you to convert audio files from one format to another, supporting a wide range of audio formats for seamless conversion.", + "outputFormat": "output Format", + "outputFormatDescription": "Select the desired output audio format", + "outputTitle": "Converted Audio", + "shortDescription": "Convert audio files to various formats.", + "title": "Audio Converter" + }, + "convertToJPG": { + "description": "Convert various image formats to JPG with customizable quality and background color settings.", + "failedToConvert": "Conversion of image(s) to JPG failed. Please try again.", + "inputTitle": "Input Images", + "options": { + "colorDescription": "Background color (for transparent images)", + "quality": "Conversion Quality:", + "qualityDescription": "Higher values = better quality, larger file size", + "title": "Conversion Settings" + }, + "resultTitle": "JPG Images", + "shortDescription": "Convert images to JPG Format with quality control", + "title": "Convert Images to JPG" + }, + "convertToWebp": { + "description": "Convert various image formats to WebP format with customizable quality and background color settings.", + "failedToConvert": "Conversion of image(s) to WebP failed. Please try again.", + "inputTitle": "Input Images", + "options": { + "colorDescription": "Background color (for transparent images)", + "quality": "Conversion Quality:", + "qualityDescription": "Higher values = better quality, larger file size", + "title": "Conversion Settings" + }, + "resultTitle": "WEBP Images", + "shortDescription": "Convert Images to WebP Format with quality control.", + "title": "Convert Images to WebP" + } +} diff --git a/public/locales/en/csv.json b/public/locales/en/csv.json index 5f533d4..2833513 100644 --- a/public/locales/en/csv.json +++ b/public/locales/en/csv.json @@ -116,5 +116,10 @@ "longDescription": "This tool transposes Comma Separated Values (CSV). It treats the CSV as a matrix of data and flips all elements across the main diagonal. The output contains the same CSV data as the input, but now all the rows have become columns, and all the columns have become rows. After transposition, the CSV file will have opposite dimensions. For example, if the input file has 4 columns and 3 rows, the output file will have 3 columns and 4 rows. During conversion, the program also cleans the data from unnecessary lines and corrects incomplete data. Specifically, the tool automatically deletes all empty records and comments that begin with a specific character, which you can set in the option. Additionally, in cases where the CSV data is corrupted or lost, the utility completes the file with empty fields or custom fields that can be specified in the options. Csv-abulous!", "shortDescription": "Quickly transpose a CSV file.", "title": "Transpose CSV" + }, + "tsvToJson": { + "description": "Convert TSV (Tab-Separated Values) data to JSON format. Transform tabular data into structured JSON objects.", + "shortDescription": "Convert TSV to JSON format", + "title": "TSV to JSON" } } diff --git a/public/locales/en/image.json b/public/locales/en/image.json index 8119c32..fdc35de 100644 --- a/public/locales/en/image.json +++ b/public/locales/en/image.json @@ -1,6 +1,6 @@ { "changeColors": { - "description": "World", + "description": "Change specific colors in an image by selecting a source color and replacing it with a new one.", "shortDescription": "Quickly swap colors in a image", "title": "Change colors in image" }, @@ -10,18 +10,20 @@ "title": "Change image Opacity" }, "compress": { - "compressedSize": "Compressed Size", + "compressedSize": "Total compressed size", + "compressing": "Compressing images...", "compressionOptions": "Compression options", - "description": "Reduce image file size while maintaining quality.", - "failedToCompress": "Failed to compress image. Please try again.", + "description": "Reduce the file size of one or multiple images while preserving visual quality. Upload a batch of images and download them all at once as a ZIP archive.", + "failedToCompress": "Image(s) compression failed. Please try again.", "fileSizes": "File sizes", - "inputTitle": "Input image", - "maxFileSizeDescription": "Maximum file size in megabytes", - "originalSize": "Original Size", - "qualityDescription": "Image quality percentage (lower means smaller file size)", - "resultTitle": "Compressed image", - "shortDescription": "Compress images to reduce file size while maintaining reasonable quality.", - "title": "Compress Image" + "inputTitle": "Images Input", + "maxFileSizeDescription": "Maximum output file size per image in megabytes", + "originalSize": "Total original size", + "qualityDescription": "Image quality percentage — lower value means smaller file size", + "resultTitle": "Compressed images", + "shortDescription": "Compress one or multiple images at once.", + "someFailedToCompress": "Some images could not be compressed and were skipped.", + "title": "Compress Images" }, "compressPng": { "description": "This is a program that compresses PNG pictures. As soon as you paste your PNG picture in the input area, the program will compress it and show the result in the output area. In the options, you can adjust the compression level, as well as find the old and new picture file sizes.", @@ -33,13 +35,8 @@ "shortDescription": "Quickly convert your JPG images to PNG", "title": "Convert JPG to PNG" }, - "convertToJpg": { - "description": "Convert various image formats (PNG, GIF, TIF, PSD, SVG, WEBP, HEIC, RAW) to JPG with customizable quality and background color settings.", - "shortDescription": "Convert images to JPG with quality control", - "title": "Convert Images to JPG" - }, "createTransparent": { - "description": "World", + "description": "Create a transparent version of an image by removing the chosen background color.", "shortDescription": "Quickly make an image transparent", "title": "Create transparent PNG" }, @@ -62,19 +59,40 @@ }, "qrCode": { "description": "Generate QR codes for different data types: URL, Text, Email, Phone, SMS, WiFi, vCard, and more.", + "options": { + "address": "Address", + "company": "Company (optional)", + "email": "Email", + "emailBody": "Email Body (optional)", + "emailSubject": "Email Subject (optional)", + "encryptionType": "Encryption Type", + "fullName": "Full Name", + "job": "Job Title (optional)", + "message": "Message (optional)", + "name": "Name", + "password": "Password", + "phone": "Phone Number", + "qrType": "Select QR Code Type", + "size": "Size in pixels (100-1000)", + "ssid": "Network Name (SSID)", + "text": "Enter the text", + "url": "Enter the URL", + "website": "Website (optional)" + }, + "resultOutput": "Generated QR code", "shortDescription": "Create customized QR codes for various data formats.", "title": "QR Code Generator" }, "removeBackground": { - "description": "World", + "description": "Remove the background from an image to isolate the main subject with transparency.", "shortDescription": "Automatically remove backgrounds from images", "title": "Remove Background from Image" }, "resize": { - "description": "Resize images to different dimensions.", + "description": "Resize images using pixel dimensions or percentage scaling. Maintain aspect ratio and set width or height with automatic adjustment. Download results individually or as a ZIP archive.", "dimensionType": "Dimension Type", "heightDescription": "Height (in pixels)", - "inputTitle": "Input Image", + "inputTitle": "Input Images", "maintainAspectRatio": "Maintain Aspect Ratio", "maintainAspectRatioDescription": "Maintain the original aspect ratio of the image.", "percentage": "Percentage", @@ -84,16 +102,16 @@ "resizeByPixels": "Resize by Pixels", "resizeByPixelsDescription": "Resize by specifying dimensions in pixels.", "resizeMethod": "Resize Method", - "resultTitle": "Resized Image", + "resultTitle": "Resized Image(s)", "setHeight": "Set Height", "setHeightDescription": "Specify the height in pixels and calculate width based on aspect ratio.", "setWidth": "Set Width", "setWidthDescription": "Specify the width in pixels and calculate height based on aspect ratio.", - "shortDescription": "Resize images easily.", + "shortDescription": "Resize one or multiple images at once.", "title": "Resize Image", "toolInfo": { - "description": "This tool allows you to resize JPG, PNG, SVG, or GIF images. You can resize by specifying dimensions in pixels or by percentage, with options to maintain the original aspect ratio.", - "title": "Resize Image" + "description": "This tool allows you to resize one or multiple JPG, PNG, SVG, or GIF images at once. Upload a single image or a batch of images and resize them by specifying dimensions in pixels or by percentage, with options to maintain the original aspect ratio. When processing multiple images, results are bundled into a ZIP file for easy download.", + "title": "Resize Image(s)" }, "widthDescription": "Width (in pixels)" }, diff --git a/public/locales/en/json.json b/public/locales/en/json.json index 75f59d0..28cab4e 100644 --- a/public/locales/en/json.json +++ b/public/locales/en/json.json @@ -9,6 +9,31 @@ "shortDescription": "Escape special characters in JSON", "title": "Escape JSON" }, + "jsonToCsv": { + "delimiterOption": "Delimiter", + "description": "Convert JSON data to CSV format. Supports nested objects and arrays, automatic header detection, and configurable delimiters and quoting — ready for Excel, Google Sheets, or any spreadsheet application.", + "headerOption": "Headers", + "inputTitle": "Input JSON", + "options": { + "alwaysQuote": { + "description": "Wrap every cell in double-quotes, regardless of its content.", + "label": "Always quote" + }, + "autoQuote": { + "description": "Only quote cells that contain the delimiter, a double-quote, or a newline. Keeps output clean and minimal.", + "label": "Auto (recommended)" + }, + "delimiter": "Character used to separate values in each row (e.g. comma, semicolon, tab)", + "header": { + "description": "Use JSON keys as column names in the first row. Recommended for readability and import compatibility.", + "label": "Include header row" + } + }, + "outputTitle": "Output CSV", + "quotingOption": "String Quoting", + "shortDescription": "Convert JSON to CSV format", + "title": "JSON to CSV" + }, "jsonToXml": { "description": "Convert JSON data to XML format. Transform structured JSON objects into well-formed XML documents.", "shortDescription": "Convert JSON to XML format", diff --git a/public/locales/en/list.json b/public/locales/en/list.json index ddb04d1..df92671 100644 --- a/public/locales/en/list.json +++ b/public/locales/en/list.json @@ -1,4 +1,35 @@ { + "chunk": { + "deleteEmptyItems": "Delete Empty Items", + "deleteEmptyItemsDescription": "Ignore empty items and exclude them from the result.", + "description": "Split a list into consecutive chunks of a fixed size. This tool separates input items, chunks them sequentially, optionally pads incomplete chunks, and formats the output using custom separators and wrappers.", + "emptyItemsAndPadding": "Empty Items and Padding", + "groupNumberDescription": "Number of items per group", + "groupSeparatorDescription": "Separator placed between groups", + "groupSizeAndSeparators": "Group Size and Output Format", + "inputItemSeparator": "Input Item Separator", + "inputTitle": "Input list", + "itemSeparatorDescription": "Separator placed between items inside a group", + "leftWrapDescription": "Symbol added before each group", + "padNonFullGroups": "Pad Incomplete Groups", + "padNonFullGroupsDescription": "Fill the last group if it has fewer items than required.", + "paddingCharDescription": "Character or value used to pad incomplete groups.", + "resultTitle": "Grouped output", + "rightWrapDescription": "Symbol added after each group", + "shortDescription": "Split a list into fixed-size chunks", + "splitOperators": { + "regex": { + "description": "Split input items using a regular expression.", + "title": "Use Regex Splitting" + }, + "symbol": { + "description": "Split input items using a single character.", + "title": "Use Symbol Splitting" + } + }, + "splitSeparatorDescription": "Delimiter symbol or regular expression used to split input items.", + "title": "Chunk List" + }, "duplicate": { "concatenate": "Concatenate", "concatenateDescription": "Concatenate copies (if unchecked, items will be interweaved)", @@ -113,37 +144,6 @@ "trimItemsDescription": "Remove leading and trailing spaces before comparing items.", "uniqueItemOptions": "Unique Item Options" }, - "group": { - "deleteEmptyItems": "Delete Empty Items", - "deleteEmptyItemsDescription": "Ignore empty items and don't include them in the groups.", - "description": "World's simplest browser-based utility for grouping list items. Input your list and specify grouping criteria to organize items into logical groups. Perfect for categorizing data, organizing information, or creating structured lists. Supports custom separators and various grouping options.", - "emptyItemsAndPadding": "Empty Items and Padding", - "groupNumberDescription": "Number of items in a group", - "groupSeparatorDescription": "Group separator character", - "groupSizeAndSeparators": "Group Size and Separators", - "inputItemSeparator": "Input Item Separator", - "inputTitle": "Input list", - "itemSeparatorDescription": "Item separator character", - "leftWrapDescription": "Group's left wrap symbol.", - "padNonFullGroups": "Pad Non-full Groups", - "padNonFullGroupsDescription": "Fill non-full groups with a custom item (enter below).", - "paddingCharDescription": "Use this character or item to pad non-full groups.", - "resultTitle": "Grouped items", - "rightWrapDescription": "Group's right wrap symbol.", - "shortDescription": "Group list items by common properties", - "splitOperators": { - "regex": { - "description": "Delimit input list items with a regular expression.", - "title": "Use a Regex for Splitting" - }, - "symbol": { - "description": "Delimit input list items with a character.", - "title": "Use a Symbol for Splitting" - } - }, - "splitSeparatorDescription": "Set a delimiting symbol or regular expression.", - "title": "Group" - }, "reverse": { "description": "This is a super simple browser-based application prints all list items in reverse. The input items can be separated by any symbol and you can also change the separator of the reversed list items.", "inputTitle": "Input list", diff --git a/public/locales/en/number.json b/public/locales/en/number.json index bc2cfb4..559fa08 100644 --- a/public/locales/en/number.json +++ b/public/locales/en/number.json @@ -15,6 +15,19 @@ "title": "What is an Arithmetic Sequence?" } }, + "byteConverter": { + "description": "Convert data values between different byte units, supporting both SI (decimal) and IEC (binary) systems. It supports multiple lines conversion.", + "inputTitle": "Input Values", + "outputTitle": "Converted Output", + "shortDescription": "Quickly convert values between byte units", + "title": "Byte Converter", + "unit": { + "from": "Select the unit of the input values you are providing (e.g., KB, MB, GiB).", + "precision": "Number of decimal places to display in the converted output.", + "title": "Conversion Options", + "to": "Select the unit you want the input values to be converted into." + } + }, "generate": { "arithmeticSequenceOption": "Arithmetic sequence option", "description": "Generate a sequence of numbers with customizable parameters.", diff --git a/public/locales/en/pdf.json b/public/locales/en/pdf.json index b0e9b30..98c82e4 100644 --- a/public/locales/en/pdf.json +++ b/public/locales/en/pdf.json @@ -21,6 +21,23 @@ "shortDescription": "Compress PDF files securely in your browser", "title": "Compress PDF" }, + "convertToPdf": { + "description": "Convert various image formats (PNG, GIF, JPG, WEBP, HEIC, HEIF) to PDF, with options to scale the image and choose page orientation.", + "inputTitle": "Input Images", + "options": { + "a4": "A4 Page", + "fullsize": "Full Size (Image size)", + "image": "Image", + "landscape": "Landscape (Horizontal)", + "orientation": "Orientation", + "portrait": "Portrait (Vertical)", + "scale": "Scale", + "type": "PDF Type" + }, + "resultTitle": "Output PDF", + "shortDescription": "Convert images to PDF with scale and orientation control", + "title": "Images to PDF" + }, "editor": { "description": "Advanced PDF editor with annotation, form-fill, highlight, and export capabilities. Edit your PDFs directly in the browser with professional-grade tools including text insertion, drawing, highlighting, signing and form filling.", "shortDescription": "Edit PDFs with advanced annotation, signing and editing tools", @@ -81,8 +98,8 @@ "longDescription": "Change the orientation of PDF pages by rotating them 90, 180, or 270 degrees. Useful for fixing incorrectly scanned documents or preparing PDFs for printing.", "pageRangesDescription": "Enter page numbers or ranges separated by commas (e.g., 1,3,5-7)", "pageRangesPlaceholder": "e.g., 1,5-8", - "pagesWillBeRotated": "{{count}} page{{count !== 1 ? 's' : ''}} will be rotated", - "pdfPageCount": "PDF has {{count}} page{{count !== 1 ? 's' : ''}}", + "pagesWillBeRotated": "{{count}} page{{plural}} will be rotated", + "pdfPageCount": "PDF has {{count}} page{{plural}}", "resultTitle": "Rotated PDF", "rotatingPages": "Rotating pages", "rotationAngle": "Rotation Angle", @@ -98,11 +115,11 @@ "description": "Extract specific pages from a PDF document.", "extractingPages": "Extracting pages", "inputTitle": "Input PDF", - "pageExtractionPreview": "{{count}} page{{count !== 1 ? 's' : ''}} will be extracted", + "pageExtractionPreview": "{{count}} page{{ plural }} will be extracted", "pageRangesDescription": "Enter page numbers or ranges separated by commas (e.g., 1,3,5-7)", "pageRangesPlaceholder": "e.g., 1,5-8", "pageSelection": "Page Selection", - "pdfPageCount": "PDF has {{count}} page{{count !== 1 ? 's' : ''}}", + "pdfPageCount": "PDF has {{count}} page{{plural}}", "resultTitle": "Extracted PDF", "shortDescription": "Extract specific pages from a PDF file", "title": "Split PDF", diff --git a/public/locales/en/pl.json b/public/locales/en/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/public/locales/en/pl.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/en/string.json b/public/locales/en/string.json index c6176c1..f8fef9d 100644 --- a/public/locales/en/string.json +++ b/public/locales/en/string.json @@ -180,6 +180,19 @@ "title": "String Rotation" } }, + "slugGenerator": { + "description": "Convert any text into a URL-friendly slug.", + "inputTitle": "Input Text", + "longDescription": "Convert any text into clean, SEO-friendly slugs for use in URLs. The tool handles spaces, special characters, accented letters, and multiple lines at once — making it easy to batch-process blog post titles, product names, or page headings into consistent, readable URL segments.", + "options": { + "caseDescription": "Preserve the original casing of the input instead of converting to lowercase", + "caseLabel": "Case Sensitive", + "title": "Slug Options" + }, + "resultTitle": "URL Slugs", + "shortDescription": "Generate URL-friendly slugs from text.", + "title": "Slug Generator" + }, "split": { "charAfterChunkDescription": "Character after each chunk", "charBeforeChunkDescription": "Character before each chunk", @@ -276,6 +289,22 @@ }, "truncationSide": "Truncation Side" }, + "unicode": { + "caseOptionsTitle": "Case Options", + "decode": "Decode", + "description": "Convert text to Unicode escape sequences or decode them back to readable text.", + "encode": "Encode", + "inputTitle": "Input", + "optionsTitle": "Mode", + "resultTitle": "Processed Output", + "shortDescription": "Encode or decode text using Unicode escape sequences.", + "title": "Unicode Encoder / Decoder", + "toolInfo": { + "description": "This tool lets you convert plain text into Unicode escape sequences (e.g., \\uXXXX) and decode Unicode escape sequences back into standard text. You can also choose whether the hexadecimal output is formatted in uppercase or lowercase when encoding.", + "title": "Unicode Encoder / Decoder" + }, + "uppercase": "Uppercase Hex" + }, "uppercase": { "description": "Convert text to uppercase letters.", "inputTitle": "Input text", diff --git a/public/locales/en/time.json b/public/locales/en/time.json index 6bfb88e..7229067 100644 --- a/public/locales/en/time.json +++ b/public/locales/en/time.json @@ -47,6 +47,12 @@ "title": "What is a {{title}}?" } }, + "convertTimeToDecimal": { + "description": "Convert a formatted time duration (HH:MM:SS) into a decimal hour value.", + "longDescription": "Convert a formatted time string (HH:MM:SS or HH:MM) into its decimal-hour equivalent. Hours can be any positive number, while minutes and seconds accept values from 0-59 and can be single or double digits (e.g., '12:5' or '12:05'). This function interprets hours, minutes, and seconds, then calculates the total duration as a single decimal value. It is useful for productivity tracking, payroll calculations, time-based billing, data analysis, or any workflow that requires converting human-readable time into a numerical format that can be easily summed, compared, or processed. For example, '03:26:00' becomes 3.43 hours, and '12:5' becomes 12.08 hours.", + "shortDescription": "Convert human time to decimal time", + "title": "Convert time to decimal" + }, "convertTimeToSeconds": { "description": "Convert formatted time (HH:MM:SS) to seconds.", "inputTitle": "Input time", @@ -60,23 +66,27 @@ }, "convertUnixToDate": { "addUtcLabel": "Add 'UTC' suffix", - "addUtcLabelDescription": "Display 'UTC' after the converted date (only for UTC mode)", - "description": "Convert a Unix timestamp to a human-readable date.", - "outputOptions": "Output Options", - "shortDescription": "Convert Unix timestamp to date", - "title": "Convert Unix to Date", + "addUtcLabelDescription": "Append 'UTC' after the converted date (available only in UTC mode)", + "description": "Convert Unix timestamps to readable dates and convert dates back to Unix timestamps.", + "shortDescription": "Convert Unix timestamps and dates in both directions.", + "title": "Convert Unix ↔ Date", "toolInfo": { - "description": "This tool converts a Unix timestamp (in seconds) into a human-readable date format (e.g., YYYY-MM-DD HH:MM:SS). It supports both local and UTC output, making it useful for quickly interpreting timestamps from logs, APIs, or systems that use Unix time.", - "title": "Convert Unix to Date" + "title": "Convert Unix ↔ Date", + "description": "This tool converts Unix timestamps (in seconds) into human-readable date formats such as YYYY-MM-DD HH:MM:SS, and also converts formatted dates back into Unix timestamps. You can choose UTC output, local timezone output, or provide a custom UTC offset (for example: YYYY-MM-DD HH:MM:SS +XX:XX). If no offset is provided and local timezone is not selected, UTC (+00:00) is used by default." }, "useLocalTime": "Use Local Time", - "useLocalTimeDescription": "Show converted date in your local timezone instead of UTC", - "withLabel": "Options" + "useUTC": "Use UTC", + "useLocalTimeDescription": "Display the converted date in your local timezone instead of UTC", + "tzOptions": "Timezone Options", + "optionsTitle": "Conversion Mode", + "date-to-unix": "Date → Unix", + "unix-to-date": "Unix → Date" }, "crontabGuru": { - "description": "Generate and understand cron expressions. Create cron schedules for automated tasks and system jobs.", - "shortDescription": "Generate and understand cron expressions", - "title": "Crontab Guru" + "title": "Crontab Guru", + "description": "Parse and explain cron expressions in plain English. Instantly understand what any cron schedule does, validate syntax, and process multiple expressions at once.", + "shortDescription": "Parse and explain cron expressions in plain English", + "longDescription": "Crontab Guru is a cron expression parser and validator that translates complex cron syntax into plain, human-readable descriptions. Whether you're scheduling automated backups, system maintenance tasks, or CI/CD pipelines, this tool helps you understand exactly when your jobs will run. Supports standard 5-field cron expressions, validates syntax in real time, and processes multiple expressions at once — one per line. Available in English, French, Spanish, German, Japanese, Chinese, Portuguese, Dutch, and Russian." }, "timeBetweenDates": { "description": "Calculate the time difference between two dates. Get the exact duration in days, hours, minutes, and seconds.", @@ -113,5 +123,45 @@ "zeroPaddingDescription": "Make all time components always be two digits wide.", "zeroPrintDescription": "Display the dropped parts as zero values \"00\".", "zeroPrintTruncatedParts": "Zero-print Truncated Parts" + }, + "discordTimestamp": { + "name": "Discord Timestamp Generator", + "description": "Convert dates and times into Discord's special timestamp format that automatically adapts to each user's local timezone and language", + "shortDescription": "Generate Discord timestamps from dates", + "inputTitle": "Input Datetimes", + "outputTitle": "Discord Timestamps", + "formats": { + "title": "Timestamp Format", + "description": "Choose how the timestamp will appear in Discord — hover over each option to see an example", + "short_time": "Short Time (ex: 14:30)", + "long_time": "Long Time (ex: 14:30:00)", + "short_date": "Short Date (ex: 01/01/2025)", + "long_date": "Long Date (ex: 1 January 2025)", + "short_datetime": "Short Date & Time (ex: 1 January 2025 14:30)", + "long_datetime": "Long Date & Time (ex: Monday, 1 January 2025 14:30)", + "relative": "Relative (ex: 2 hours ago)" + }, + "utc": { + "title": "Input Options", + "label": "Enforce UTC", + "description": "Treat input datetimes as UTC. Disable to use your local timezone instead" + }, + "toolInfo": { + "title": "What is a Discord Timestamp?", + "description": "Discord timestamps are a special syntax that displays dates and times dynamically. Instead of showing a fixed time, they automatically convert to each viewer's local timezone and language — so everyone sees the correct time for their location. Simply enter one datetime per line, choose a format, and paste the results directly into Discord. The tool processes each line independently — blank lines are preserved in the output, invalid lines are flagged with ❌, and valid datetimes are converted instantly. Enable UTC mode to ensure consistent results regardless of your local timezone." + } + }, + "convertDateToUnix": { + "description": "Convert a human-readable date to a Unix Timestamp.", + "outputOptions": "Output Options", + "shortDescription": "Convert date to Unix timestamp.", + "title": "Convert Date to Unix", + "toolInfo": { + "description": "This tool converts a human-readable date format (e.g., YYYY-MM-DD HH:MM:SS) into a Unix Timestamp. The user can choose to specify a given UTC offset (e.g., YYYY-MM-DD HH:MM:SS +XX:XX) or use the local timezone. If the user doesn't provide either an offset or choose to use the local timezone, the result is given with an offset of +00:00. ", + "title": "Convert Date to Unix" + }, + "useLocalTime": "Use Local Time", + "useLocalTimeDescription": "The input time and date is processed as your browser's time zone. Additional specifications will be ignored.", + "options": "Options" } } diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index ce0a709..99b650c 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -22,6 +22,10 @@ "description": "Tools for working with audio – extract audio from video, adjusting audio speed, merging multiple audio files and much more.", "title": "Audio Tools" }, + "converters": { + "description": "Tools for converting data between different formats – convert images, audio, video, text, and more.", + "title": "Converter Tools" + }, "csv": { "description": "Tools for working with CSV files - convert CSV to different formats, manipulate CSV data, validate CSV structure, and process CSV files efficiently.", "title": "CSV Tools" @@ -73,6 +77,14 @@ "title": "XML Tools" } }, + "converters": { + "audioconverter": { + "description": "Convert audio files between different formats.", + "longDescription": "This tool allows you to convert audio files from one format to another, supporting a wide range of audio formats for seamless conversion.", + "shortDescription": "Convert audio files to various formats.", + "title": "Audio Converter" + } + }, "csv": { "findIncompleteCsvRecords": { "description": "Just upload your CSV file in the form below and this tool will automatically check if none of the rows or columns are missing values. In the tool options, you can adjust the input file format (specify the delimiter, quote character, and comment character). Additionally, you can enable checking for empty values, skip empty lines, and set a limit on the number of error messages in the output.", @@ -225,13 +237,10 @@ "loading": "Loading... This may take a moment.", "result": "Result" }, - "toolMultipleAudioInput": { + "toolMultipleInput": { "inputTitle": "Input {{type}}", - "noFilesSelected": "No files selected" - }, - "toolMultiplePdfInput": { - "inputTitle": "Input {{type}}", - "noFilesSelected": "No files selected" + "noFilesSelected": "No files selected", + "deleteFile": "Delete file" }, "toolOptions": { "title": "Tool options" diff --git a/public/locales/en/video.json b/public/locales/en/video.json index cb9d961..3be86a6 100644 --- a/public/locales/en/video.json +++ b/public/locales/en/video.json @@ -1,4 +1,33 @@ { + "addAudio": { + "audioFile": "Audio File", + "audioInputTitle": "Input Audio", + "description": "Easily add an audio track to any video file. You can choose to replace the original audio entirely or mix a new track with the existing one. Adjust the volume, set looping options, and trim the audio with precise start and end times. Supports all common video and audio formats for flexible editing and quick results.", + "durationMode": "Time Range", + "endTime": "End Time", + "endTimeDesc": "When the new audio stops playing (HH:MM:SS.mm).", + "loadingText": "Adding audio to video...", + "loop": "Loop (repeat audio until video end or defined end time)", + "loopOption": "Loop options", + "mode": "Audio Mode", + "modeMix": "Mix (Keep Original + Add New)", + "modeReplace": "Replace Original Audio", + "noLoop": "No Loop (play audio only once)", + "resultTitle": "Processed Video", + "shortDescription": "Add or replace audio track in video", + "startTime": "Start Time", + "startTimeDesc": "When the new audio starts playing (HH:MM:SS.mm).", + "timing": "Audio Timing", + "timingDefault": "Default (full video)", + "timingEnd": "Set End Time", + "timingModeDesc": "Choose when the new audio plays within the video timeline.", + "timingStart": "Set Start Time", + "timingStartEnd": "Set Start & End Time", + "title": "Add Audio to Video", + "videoInputTitle": "Input Video", + "volume": "New Audio Volume", + "volumeDesc": "Volume level for the new audio track." + }, "changeSpeed": { "defaultMultiplier": "Default multiplier: 2 means 2x faster", "description": "Change the playback speed of video files. Speed up or slow down videos while maintaining audio synchronization. Supports various speed multipliers and common video formats.", diff --git a/public/locales/es/converters.json b/public/locales/es/converters.json new file mode 100644 index 0000000..223d6e2 --- /dev/null +++ b/public/locales/es/converters.json @@ -0,0 +1,26 @@ +{ + "audioConverter": { + "description": "Convierte archivos de audio entre diferentes formatos.", + "inputTitle": "Entrada de Audio", + "longDescription": "Esta herramienta le permite convertir archivos de audio de un formato a otro, con soporte para una amplia gama de formatos de audio para una conversión perfecta.", + "outputFormat": "Formato de Salida", + "outputFormatDescription": "Seleccione el formato de audio de salida deseado", + "outputTitle": "Audio Convertido", + "shortDescription": "Convierte archivos de audio a varios formatos.", + "title": "Convertidor de Audio" + }, + "convertToWebp": { + "description": "Convierte varios formatos de imagen a formato WebP con configuración de calidad y color de fondo personalizables.", + "failedToConvert": "La conversión de la(s) imagen(es) a WebP falló. Por favor, inténtelo de nuevo.", + "inputTitle": "Imágenes de entrada", + "options": { + "colorDescription": "Color de fondo (para imágenes transparentes)", + "quality": "Calidad de conversión:", + "qualityDescription": "Valores más altos = mejor calidad, tamaño de archivo más grande", + "title": "Configuración de conversión" + }, + "resultTitle": "Imágenes WEBP", + "shortDescription": "Convierte imágenes a formato WebP con control de calidad.", + "title": "Convertir imágenes a WebP" + } +} diff --git a/public/locales/es/csv.json b/public/locales/es/csv.json index 5ef5982..7f83e1b 100644 --- a/public/locales/es/csv.json +++ b/public/locales/es/csv.json @@ -116,5 +116,10 @@ "longDescription": "Esta herramienta transpone valores separados por comas (CSV). Trata el CSV como una matriz de datos e invierte todos los elementos a lo largo de la diagonal principal. El resultado contiene los mismos datos CSV que la entrada, pero ahora todas las filas se han convertido en columnas y todas las columnas en filas. Tras la transposición, el archivo CSV tendrá dimensiones opuestas. Por ejemplo, si el archivo de entrada tiene 4 columnas y 3 filas, el archivo de salida tendrá 3 columnas y 4 filas. Durante la conversión, el programa también elimina las líneas innecesarias y corrige los datos incompletos. En concreto, la herramienta elimina automáticamente todos los registros vacíos y los comentarios que empiezan por un carácter específico, que se puede configurar en la opción. Además, si los datos CSV se corrompen o se pierden, la utilidad completa el archivo con campos vacíos o campos personalizados que se pueden especificar en las opciones. ¡Csv-abuloso!", "shortDescription": "Transponer rápidamente un archivo CSV.", "title": "Transponer CSV" + }, + "tsvToJson": { + "description": "Convierte datos TSV (Valores Separados por Tabulaciones) a formato JSON. Transforma datos tabulares en objetos JSON estructurados.", + "shortDescription": "Convertir TSV a formato JSON", + "title": "TSV a JSON" } } diff --git a/public/locales/es/image.json b/public/locales/es/image.json index a5a30c4..5e1f12b 100644 --- a/public/locales/es/image.json +++ b/public/locales/es/image.json @@ -1,6 +1,6 @@ { "changeColors": { - "description": "Mundo", + "description": "Reemplaza colores seleccionados en una imagen por nuevos colores de forma rapida y precisa.", "shortDescription": "Intercambia colores rápidamente en una imagen", "title": "Cambiar colores en la imagen" }, @@ -33,13 +33,8 @@ "shortDescription": "Convierte rápidamente tus imágenes JPG a PNG", "title": "Convertir JPG a PNG" }, - "convertToJpg": { - "description": "Convierte varios formatos de imagen (PNG, GIF, TIF, PSD, SVG, WEBP, HEIC, RAW) a JPG con configuraciones de color de fondo y calidad personalizables.", - "shortDescription": "Convierte imágenes a JPG con control de calidad", - "title": "Convertir imágenes a JPG" - }, "createTransparent": { - "description": "Mundo", + "description": "Haz transparente el fondo de una imagen eliminando el color seleccionado.", "shortDescription": "Hacer que una imagen sea transparente rápidamente", "title": "Crear PNG transparente" }, @@ -66,7 +61,7 @@ "title": "Generador de códigos QR" }, "removeBackground": { - "description": "Mundo", + "description": "Elimina automaticamente el fondo de una imagen y deja el sujeto principal listo con transparencia.", "shortDescription": "Eliminar automáticamente los fondos de las imágenes", "title": "Quitar el fondo de la imagen" }, diff --git a/public/locales/es/json.json b/public/locales/es/json.json index e7e4700..e62ef96 100644 --- a/public/locales/es/json.json +++ b/public/locales/es/json.json @@ -46,11 +46,6 @@ "shortDescription": "Convertir objetos en cadena JSON", "title": "Convertir JSON en cadenas" }, - "tsvToJson": { - "description": "Convierte datos TSV (Valores Separados por Tabulaciones) a formato JSON. Transforma datos tabulares en objetos JSON estructurados.", - "shortDescription": "Convertir TSV a formato JSON", - "title": "TSV a JSON" - }, "validateJson": { "description": "Comprueba si JSON es válido y está bien formado.", "inputTitle": "Entrada JSON", diff --git a/public/locales/es/list.json b/public/locales/es/list.json index 2db5af4..e7c68cf 100644 --- a/public/locales/es/list.json +++ b/public/locales/es/list.json @@ -113,37 +113,6 @@ "trimItemsDescription": "Elimine los espacios iniciales y finales antes de comparar elementos.", "uniqueItemOptions": "Opciones de artículos únicos" }, - "group": { - "deleteEmptyItems": "Eliminar elementos vacíos", - "deleteEmptyItemsDescription": "Ignore los elementos vacíos y no los incluya en los grupos.", - "description": "La utilidad basada en navegador más sencilla del mundo para agrupar elementos de listas. Introduce tu lista y especifica los criterios de agrupación para organizar los elementos en grupos lógicos. Perfecta para categorizar datos, organizar información o crear listas estructuradas. Admite separadores personalizados y diversas opciones de agrupación.", - "emptyItemsAndPadding": "Elementos vacíos y relleno", - "groupNumberDescription": "Número de elementos en un grupo", - "groupSeparatorDescription": "Carácter separador de grupo", - "groupSizeAndSeparators": "Tamaño del grupo y separadores", - "inputItemSeparator": "Separador de elementos de entrada", - "inputTitle": "Lista de entrada", - "itemSeparatorDescription": "Carácter separador de elementos", - "leftWrapDescription": "Símbolo de envoltura izquierda del grupo.", - "padNonFullGroups": "Grupos no llenos de Pad", - "padNonFullGroupsDescription": "Llene los grupos que no estén completos con un elemento personalizado (ingréselo a continuación).", - "paddingCharDescription": "Utilice este carácter o elemento para rellenar grupos que no estén completos.", - "resultTitle": "Elementos agrupados", - "rightWrapDescription": "Símbolo de envoltura derecha del grupo.", - "shortDescription": "Agrupar elementos de la lista por propiedades comunes", - "splitOperators": { - "regex": { - "description": "Delimitar los elementos de la lista de entrada con una expresión regular.", - "title": "Utilice una expresión regular para dividir" - }, - "symbol": { - "description": "Delimitar los elementos de la lista de entrada con un carácter.", - "title": "Utilice un símbolo para dividir" - } - }, - "splitSeparatorDescription": "Establezca un símbolo delimitador o una expresión regular.", - "title": "Grupo" - }, "reverse": { "description": "Esta sencilla aplicación basada en navegador imprime todos los elementos de la lista en orden inverso. Los elementos de entrada se pueden separar con cualquier símbolo y también se puede cambiar el separador de los elementos de la lista invertidos.", "inputTitle": "Lista de entrada", diff --git a/public/locales/es/pdf.json b/public/locales/es/pdf.json index 05a2f68..6b34cc8 100644 --- a/public/locales/es/pdf.json +++ b/public/locales/es/pdf.json @@ -21,6 +21,11 @@ "shortDescription": "Comprime archivos PDF de forma segura en tu navegador", "title": "Comprimir PDF" }, + "convertToPdf": { + "description": "Convertir varios formatos de imagen (PNG, GIF, JPG, TIF, PSD, SVG, WEBP, HEIC, RAW) a PDF, con opciones para escalar la imagen y elegir la orientación de la página.", + "shortDescription": "Convertir imágenes a PDF con control de escala y orientación", + "title": "Imágenes a PDF" + }, "editor": { "description": "Editor de PDF avanzado con funciones de anotación, rellenado de formularios, resaltado y exportación. Edite sus PDF directamente en el navegador con herramientas profesionales que incluyen inserción de texto, dibujo, resaltado, firma y rellenado de formularios.", "shortDescription": "Edite archivos PDF con herramientas avanzadas de anotación, firma y edición", @@ -81,8 +86,8 @@ "longDescription": "Cambie la orientación de las páginas PDF girándolas 90, 180 o 270 grados. Útil para corregir documentos escaneados incorrectamente o preparar archivos PDF para imprimir.", "pageRangesDescription": "Introduzca números de página o rangos separados por comas (por ejemplo, 1, 3, 5-7)", "pageRangesPlaceholder": "p. ej., 1,5-8", - "pagesWillBeRotated": "{{count}} página{{count !== 1 ? 's' : ''}} se rotará", - "pdfPageCount": "PDF tiene {{count}} página{{count !== 1 ? 's' : ''}}", + "pagesWillBeRotated": "{{count}} página{{plural}} se rotará", + "pdfPageCount": "PDF tiene {{count}} página{{plural}}", "resultTitle": "PDF rotado", "rotatingPages": "Páginas rotatorias", "rotationAngle": "Ángulo de rotación", @@ -98,11 +103,11 @@ "description": "Extraer páginas específicas de un documento PDF.", "extractingPages": "Extrayendo páginas", "inputTitle": "PDF de entrada", - "pageExtractionPreview": "{{count}} página{{count !== 1 ? 's' : ''}} se extraerán", + "pageExtractionPreview": "{{count}} página{{ plural }} se extraerán", "pageRangesDescription": "Introduzca números de página o rangos separados por comas (por ejemplo, 1, 3, 5-7)", "pageRangesPlaceholder": "p. ej., 1,5-8", "pageSelection": "Selección de página", - "pdfPageCount": "PDF tiene {{count}} página{{count !== 1 ? 's' : ''}}", + "pdfPageCount": "PDF tiene {{count}} página{{plural}}", "resultTitle": "PDF extraído", "shortDescription": "Extraer páginas específicas de un archivo PDF", "title": "PDF dividido", diff --git a/public/locales/es/pl.json b/public/locales/es/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/public/locales/es/pl.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/es/time.json b/public/locales/es/time.json index 418162f..c3ae82e 100644 --- a/public/locales/es/time.json +++ b/public/locales/es/time.json @@ -61,22 +61,27 @@ "convertUnixToDate": { "addUtcLabel": "Añadir el sufijo 'UTC'", "addUtcLabelDescription": "Mostrar 'UTC' después de la fecha convertida (solo para el modo UTC)", - "description": "Convierte una marca de tiempo de Unix en una fecha legible para humanos.", + "date-to-unix": "Fecha → Unix", + "description": "Convierte marcas de tiempo de Unix en fechas legibles y convierte fechas formateadas nuevamente en marcas de tiempo de Unix (en ambas direcciones).", + "optionsTitle": "Modo de conversión", "outputOptions": "Opciones de salida", - "shortDescription": "Convertir la marca de tiempo de Unix a fecha", - "title": "Convertir Unix a fecha", + "shortDescription": "Convierte marcas de tiempo de Unix y fechas en ambas direcciones.", + "title": "Convertir Unix ↔ Fecha", "toolInfo": { - "description": "Esta herramienta convierte una marca de tiempo Unix (en segundos) a un formato de fecha legible (p. ej., AAAA-MM-DD HH:MM:SS). Admite salida local y UTC, lo que la hace útil para interpretar rápidamente marcas de tiempo de registros, API o sistemas que usan hora Unix.", - "title": "Convertir Unix a fecha" + "description": "Esta herramienta convierte marcas de tiempo de Unix (en segundos) en formatos de fecha legibles para humanos como YYYY-MM-DD HH:MM:SS, y también convierte fechas formateadas nuevamente en marcas de tiempo de Unix. Puedes elegir salida UTC, salida de zona horaria local o proporcionar un desplazamiento UTC personalizado (por ejemplo: YYYY-MM-DD HH:MM:SS +XX:XX). Si no se proporciona ningún desplazamiento y no se selecciona la zona horaria local, se utiliza UTC (+00:00) por defecto.", + "title": "Convertir Unix ↔ Fecha" }, - "useLocalTime": "Utilice la hora local", + "tzOptions": "Opciones de zona horaria", + "unix-to-date": "Unix → Fecha", + "useLocalTime": "Utilizar la hora local", "useLocalTimeDescription": "Mostrar la fecha convertida en su zona horaria local en lugar de UTC", - "withLabel": "Opciones" + "useUTC": "Usar UTC" }, "crontabGuru": { - "description": "Generar y comprender expresiones cron. Crear programaciones cron para tareas automatizadas y trabajos del sistema.", - "shortDescription": "Generar y comprender expresiones cron", - "title": "Gurú de Crontab" + "title": "Crontab Guru", + "description": "Analiza y explica expresiones cron en español. Entiende al instante qué hace cualquier programación cron, valida la sintaxis y procesa múltiples expresiones a la vez.", + "shortDescription": "Analiza y explica expresiones cron en lenguaje claro", + "longDescription": "Crontab Guru es un analizador y validador de expresiones cron que traduce la compleja sintaxis cron en descripciones claras y legibles. Ya sea que estés programando copias de seguridad automáticas, tareas de mantenimiento del sistema o pipelines CI/CD, esta herramienta te ayuda a entender exactamente cuándo se ejecutarán tus tareas. Admite expresiones cron estándar de 5 campos, valida la sintaxis en tiempo real y procesa múltiples expresiones a la vez — una por línea. Disponible en inglés, francés, español, alemán, japonés, chino, portugués, neerlandés y ruso." }, "timeBetweenDates": { "description": "Calcula la diferencia horaria entre dos fechas. Obtén la duración exacta en días, horas, minutos y segundos.", diff --git a/public/locales/es/translation.json b/public/locales/es/translation.json index 6ddab10..6cbd44f 100644 --- a/public/locales/es/translation.json +++ b/public/locales/es/translation.json @@ -121,9 +121,9 @@ }, "navbar": { "buyMeACoffee": "Invítame a un café", + "hireMe": "Contrátame", "home": "Hogar", - "tools": "Herramientas", - "hireMe": "Contrátame" + "tools": "Herramientas" }, "number": { "generate": { @@ -225,13 +225,10 @@ "loading": "Cargando... Esto puede tardar un momento.", "result": "Resultado" }, - "toolMultipleAudioInput": { - "inputTitle": "Aporte {{type}}", - "noFilesSelected": "No hay archivos seleccionados" - }, - "toolMultiplePdfInput": { - "inputTitle": "Aporte {{type}}", - "noFilesSelected": "No hay archivos seleccionados" + "toolMultipleInput": { + "inputTitle": "Entrada {{type}}", + "noFilesSelected": "Ningún archivo seleccionado", + "deleteFile": "Eliminar archivo" }, "toolOptions": { "title": "Opciones de herramientas" diff --git a/public/locales/fr/converters.json b/public/locales/fr/converters.json new file mode 100644 index 0000000..ae45c72 --- /dev/null +++ b/public/locales/fr/converters.json @@ -0,0 +1,26 @@ +{ + "audioConverter": { + "description": "Convertissez des fichiers audio entre différents formats.", + "inputTitle": "Entrée Audio", + "longDescription": "Cet outil vous permet de convertir des fichiers audio d'un format à un autre, en support une large gamme de formats audio pour une conversion transparente.", + "outputFormat": "Format de Sortie", + "outputFormatDescription": "Sélectionnez le format audio de sortie souhaité", + "outputTitle": "Audio Converti", + "shortDescription": "Convertissez des fichiers audio en divers formats.", + "title": "Convertisseur Audio" + }, + "convertToWebp": { + "description": "Convertissez divers formats d'image au format WebP avec des paramètres de qualité et de couleur de fond personnalisables.", + "failedToConvert": "La conversion de l'image ou des images en WebP a échoué. Veuillez réessayer.", + "inputTitle": "Images d'entrée", + "options": { + "colorDescription": "Couleur de fond (pour les images transparentes)", + "quality": "Qualité de conversion:", + "qualityDescription": "Valeurs plus élevées = meilleure qualité, taille de fichier plus grande", + "title": "Paramètres de conversion" + }, + "resultTitle": "Images WEBP", + "shortDescription": "Convertissez les images au format WebP avec contrôle de la qualité.", + "title": "Convertir des images en WebP" + } +} diff --git a/public/locales/fr/csv.json b/public/locales/fr/csv.json index 422c002..1f0b1d1 100644 --- a/public/locales/fr/csv.json +++ b/public/locales/fr/csv.json @@ -116,5 +116,10 @@ "longDescription": "Cet outil transpose les fichiers CSV (valeurs séparées par des virgules). Il traite le fichier CSV comme une matrice de données et inverse tous les éléments sur la diagonale principale. Le fichier CSV de sortie contient les mêmes données CSV que le fichier d'entrée, mais toutes les lignes sont désormais des colonnes, et toutes les colonnes des lignes. Après la transposition, le fichier CSV aura des dimensions opposées. Par exemple, si le fichier d'entrée comporte 4 colonnes et 3 lignes, le fichier de sortie comportera 3 colonnes et 4 lignes. Lors de la conversion, le programme supprime également les lignes inutiles et corrige les données incomplètes. Plus précisément, l'outil supprime automatiquement tous les enregistrements vides et les commentaires commençant par un caractère spécifique, que vous pouvez définir dans l'option. De plus, en cas de corruption ou de perte des données CSV, l'utilitaire complète le fichier avec des champs vides ou personnalisés, que vous pouvez spécifier dans les options. Csv-abulous !", "shortDescription": "Transposer rapidement un fichier CSV.", "title": "Transposer CSV" + }, + "tsvToJson": { + "description": "Convertissez les données TSV (valeurs séparées par des tabulations) au format JSON. Transformez les données tabulaires en objets JSON structurés.", + "shortDescription": "Convertir le format TSV au format JSON", + "title": "TSV vers JSON" } } diff --git a/public/locales/fr/image.json b/public/locales/fr/image.json index a47bf08..ba0d2c3 100644 --- a/public/locales/fr/image.json +++ b/public/locales/fr/image.json @@ -1,6 +1,6 @@ { "changeColors": { - "description": "Monde", + "description": "Remplace rapidement et precisement les couleurs selectionnees dans une image par de nouvelles couleurs.", "shortDescription": "Échanger rapidement les couleurs d'une image", "title": "Changer une couleur dans une image" }, @@ -33,13 +33,8 @@ "shortDescription": "Convertir rapidement vos images JPG en PNG", "title": "Convertir un JPG en PNG" }, - "convertToJpg": { - "description": "Convertissez différents formats d'image (PNG, GIF, TIF, PSD, SVG, WEBP, HEIC, RAW) en JPG avec des paramètres de qualité et de couleur d'arrière-plan personnalisables.", - "shortDescription": "Convertir des images en JPG avec contrôle de la qualité", - "title": "Convertir des images en JPG" - }, "createTransparent": { - "description": "Monde", + "description": "Rends l'arriere-plan d'une image transparent en supprimant la couleur choisie.", "shortDescription": "Rendre rapidement une image transparente", "title": "Créer un PNG transparent" }, @@ -66,7 +61,7 @@ "title": "Générateur de code QR" }, "removeBackground": { - "description": "Monde", + "description": "Supprime automatiquement l'arriere-plan d'une image et conserve le sujet principal avec transparence.", "shortDescription": "Supprimer automatiquement les arrière-plans des images", "title": "Supprimer l'arrière-plan de l'image" }, diff --git a/public/locales/fr/json.json b/public/locales/fr/json.json index ebe4024..014e932 100644 --- a/public/locales/fr/json.json +++ b/public/locales/fr/json.json @@ -38,7 +38,7 @@ }, "useSpaces": "Utiliser les espaces", "useSpacesDescription": "Indenter la sortie avec des espaces", - "useTabs": "Utiliser les onglets", + "useTabs": "Utiliser les tabulations", "useTabsDescription": "Indenter la sortie avec des tabulations." }, "stringify": { @@ -46,11 +46,6 @@ "shortDescription": "Convertir des objets en chaîne JSON", "title": "Stringify JSON" }, - "tsvToJson": { - "description": "Convertissez les données TSV (valeurs séparées par des tabulations) au format JSON. Transformez les données tabulaires en objets JSON structurés.", - "shortDescription": "Convertir le format TSV au format JSON", - "title": "TSV vers JSON" - }, "validateJson": { "description": "Vérifiez si JSON est valide et bien formé.", "inputTitle": "Entrée JSON", diff --git a/public/locales/fr/list.json b/public/locales/fr/list.json index cc13a93..9156d93 100644 --- a/public/locales/fr/list.json +++ b/public/locales/fr/list.json @@ -113,37 +113,6 @@ "trimItemsDescription": "Supprimez les espaces de début et de fin avant de comparer les éléments.", "uniqueItemOptions": "Options d'articles uniques" }, - "group": { - "deleteEmptyItems": "Supprimer les éléments vides", - "deleteEmptyItemsDescription": "Ignorez les éléments vides et ne les incluez pas dans les groupes.", - "description": "L'utilitaire de regroupement d'éléments de liste le plus simple au monde, accessible depuis un navigateur. Saisissez votre liste et spécifiez des critères de regroupement pour organiser les éléments en groupes logiques. Idéal pour catégoriser des données, organiser des informations ou créer des listes structurées. Prend en charge les séparateurs personnalisés et diverses options de regroupement.", - "emptyItemsAndPadding": "Éléments vides et remplissage", - "groupNumberDescription": "Nombre d'éléments dans un groupe", - "groupSeparatorDescription": "Caractère séparateur de groupe", - "groupSizeAndSeparators": "Taille du groupe et séparateurs", - "inputItemSeparator": "Séparateur d'éléments d'entrée", - "inputTitle": "Liste d'entrée", - "itemSeparatorDescription": "Caractère séparateur d'éléments", - "leftWrapDescription": "Symbole d'enroulement gauche du groupe.", - "padNonFullGroups": "Groupes non complets de Pad", - "padNonFullGroupsDescription": "Remplissez les groupes non complets avec un élément personnalisé (saisissez ci-dessous).", - "paddingCharDescription": "Utilisez ce caractère ou cet objet pour compléter les groupes non complets.", - "resultTitle": "Articles groupés", - "rightWrapDescription": "Symbole d'enveloppement droit du groupe.", - "shortDescription": "Regrouper les éléments de la liste par propriétés communes", - "splitOperators": { - "regex": { - "description": "Délimitez les éléments de la liste d’entrée avec une expression régulière.", - "title": "Utiliser une expression régulière pour le fractionnement" - }, - "symbol": { - "description": "Délimitez les éléments de la liste d'entrée avec un caractère.", - "title": "Utiliser un symbole pour le fractionnement" - } - }, - "splitSeparatorDescription": "Définissez un symbole de délimitation ou une expression régulière.", - "title": "Groupe" - }, "reverse": { "description": "Cette application très simple, basée sur un navigateur, imprime tous les éléments d'une liste à l'envers. Les éléments saisis peuvent être séparés par n'importe quel symbole et vous pouvez également modifier le séparateur des éléments inversés.", "inputTitle": "Liste d'entrée", diff --git a/public/locales/fr/pdf.json b/public/locales/fr/pdf.json index b296a01..49564b0 100644 --- a/public/locales/fr/pdf.json +++ b/public/locales/fr/pdf.json @@ -21,6 +21,11 @@ "shortDescription": "Compresser des fichiers PDF en toute sécurité dans votre navigateur", "title": "Compresser le PDF" }, + "convertToPdf": { + "description": "Convertir divers formats d'image (PNG, GIF, JPG, TIF, PSD, SVG, WEBP, HEIC, RAW) en PDF, avec des options pour redimensionner l'image et choisir l'orientation de la page.", + "shortDescription": "Convertir des images en PDF avec contrôle de taille et d'orientation", + "title": "Images vers PDF" + }, "editor": { "description": "Éditeur PDF avancé avec fonctions d'annotation, de remplissage de formulaires, de surlignage et d'export. Modifiez vos PDF directement dans le navigateur avec des outils de qualité professionnelle, notamment l'insertion de texte, le dessin, le surlignage, la signature et le remplissage de formulaires.", "shortDescription": "Modifier les PDF avec des outils avancés d'annotation, de signature et d'édition", @@ -81,8 +86,8 @@ "longDescription": "Modifiez l'orientation des pages PDF en les faisant pivoter de 90, 180 ou 270 degrés. Utile pour corriger des documents mal numérisés ou préparer des PDF pour l'impression.", "pageRangesDescription": "Saisissez les numéros de page ou les plages séparés par des virgules (par exemple, 1, 3, 5-7)", "pageRangesPlaceholder": "par exemple, 1,5-8", - "pagesWillBeRotated": "{{count}} page{{count !== 1 ? 's' : ''}} sera tourné", - "pdfPageCount": "PDF a {{count}} page{{count !== 1 ? 's' : ''}}", + "pagesWillBeRotated": "{{count}} page{{plural}} sera tourné", + "pdfPageCount": "PDF a {{count}} page{{plural}}", "resultTitle": "PDF pivoté", "rotatingPages": "Rotation des pages", "rotationAngle": "Angle de rotation", @@ -98,11 +103,11 @@ "description": "Extraire des pages spécifiques d'un document PDF.", "extractingPages": "Extraire les pages", "inputTitle": "Entrée PDF", - "pageExtractionPreview": "{{count}} page{{count !== 1 ? 's' : ''}} sera(ont) extrait(s)", + "pageExtractionPreview": "{{count}} page{{plural}} sera(ont) extrait(s)", "pageRangesDescription": "Saisissez les numéros de page ou les plages séparés par des virgules (par exemple, 1, 3, 5-7)", "pageRangesPlaceholder": "par exemple, 1,5-8", "pageSelection": "Sélection de page", - "pdfPageCount": "PDF a {{count}} page{{count !== 1 ? 's' : ''}}", + "pdfPageCount": "PDF a {{count}} page{{plural}}", "resultTitle": "PDF extrait", "shortDescription": "Extraire des pages spécifiques d'un fichier PDF", "title": "Diviser le PDF", diff --git a/public/locales/fr/pl.json b/public/locales/fr/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/public/locales/fr/pl.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/fr/time.json b/public/locales/fr/time.json index 16fc138..a571a08 100644 --- a/public/locales/fr/time.json +++ b/public/locales/fr/time.json @@ -61,23 +61,27 @@ "convertUnixToDate": { "addUtcLabel": "Ajouter le suffixe 'UTC'", "addUtcLabelDescription": "Affiche 'UTC' après la date convertie (uniquement en mode UTC)", - "description": "Convertit un timestamp Unix en une date lisible par un humain.", - "longDescription": "Cet outil permet de convertir un timestamp Unix (en secondes) en une date lisible au format AAAA-MM-JJ HH:MM:SS. Il prend en charge l'affichage en UTC ou dans le fuseau horaire local, ce qui est pratique pour interpréter rapidement des horodatages issus de journaux, d'API ou de systèmes utilisant le temps Unix.", + "date-to-unix": "Date → Unix", + "description": "Convertir les horodatages Unix en dates lisibles et reconvertir les dates formatées en horodatages Unix (dans les deux directions).", + "optionsTitle": "Mode de conversion", "outputOptions": "Options de sortie", - "shortDescription": "Conversion de timestamp Unix en date", - "title": "Convertir un timestamp Unix en date", + "shortDescription": "Convertir les horodatages Unix et les dates dans les deux directions.", + "title": "Convertir Unix ↔ Date", "toolInfo": { - "description": "Cet outil convertit un timestamp Unix (en secondes) en une date lisible (par ex. AAAA-MM-JJ HH:MM:SS). Il prend en charge l'affichage en heure locale ou en UTC, ce qui le rend utile pour analyser rapidement des données issues de journaux ou d’APIs.", - "title": "Convertir un timestamp Unix en date" + "description": "Cet outil convertit les horodatages Unix (en secondes) en formats de date lisibles par l'homme tels que YYYY-MM-DD HH:MM:SS, et convertit également les dates formatées en horodatages Unix. Vous pouvez choisir la sortie UTC, la sortie du fuseau horaire local ou fournir un décalage UTC personnalisé (par exemple : YYYY-MM-DD HH:MM:SS +XX:XX). Si aucun décalage n'est fourni et que le fuseau horaire local n'est pas sélectionné, UTC (+00:00) est utilisé par défaut.", + "title": "Convertir Unix ↔ Date" }, - "useLocalTime": "Utiliser l’heure locale", - "useLocalTimeDescription": "Affiche la date convertie dans votre fuseau horaire local au lieu de l’heure UTC", - "withLabel": "Options" + "tzOptions": "Options de fuseau horaire", + "unix-to-date": "Unix → Date", + "useLocalTime": "Utiliser l'heure locale", + "useLocalTimeDescription": "Affiche la date convertie dans votre fuseau horaire local au lieu de l'heure UTC", + "useUTC": "Utiliser l'UTC" }, "crontabGuru": { - "description": "Générez et comprenez les expressions Cron. Créez des planifications Cron pour les tâches automatisées et les tâches système.", - "shortDescription": "Générer et comprendre les expressions cron", - "title": "Crontab Guru" + "title": "Crontab Guru", + "description": "Analysez et expliquez les expressions cron en français. Comprenez instantanément ce que fait un planning cron, validez la syntaxe et traitez plusieurs expressions à la fois.", + "shortDescription": "Analysez et expliquez les expressions cron en clair", + "longDescription": "Crontab Guru est un analyseur et validateur d'expressions cron qui traduit la syntaxe complexe des crons en descriptions claires et lisibles. Que vous planifiiez des sauvegardes automatiques, des tâches de maintenance système ou des pipelines CI/CD, cet outil vous aide à comprendre exactement quand vos tâches s'exécuteront. Prend en charge les expressions cron standard à 5 champs, valide la syntaxe en temps réel et traite plusieurs expressions à la fois — une par ligne. Disponible en anglais, français, espagnol, allemand, japonais, chinois, portugais, néerlandais et russe." }, "timeBetweenDates": { "description": "Calculez le décalage horaire entre deux dates. Obtenez la durée exacte en jours, heures, minutes et secondes.", diff --git a/public/locales/fr/translation.json b/public/locales/fr/translation.json index 2e27a0c..36da353 100644 --- a/public/locales/fr/translation.json +++ b/public/locales/fr/translation.json @@ -98,7 +98,7 @@ "title": "Faites avancer les choses rapidement avec" }, "inputFooter": { - "clear": "Clair", + "clear": "Supprimer les fichiers", "copyToClipboard": "Copier dans le presse-papiers", "importFromFile": "Importer à partir d'un fichier" }, @@ -225,13 +225,10 @@ "loading": "Chargement... Cela peut prendre un moment.", "result": "Résultat" }, - "toolMultipleAudioInput": { - "inputTitle": "Saisir {{type}}", - "noFilesSelected": "Aucun fichier sélectionné" - }, - "toolMultiplePdfInput": { - "inputTitle": "Saisir {{type}}", - "noFilesSelected": "Aucun fichier sélectionné" + "toolMultipleInput": { + "inputTitle": "Entrée {{type}}", + "noFilesSelected": "Aucun fichier sélectionné", + "deleteFile": "Supprimer le fichier" }, "toolOptions": { "title": "Options d'outils" diff --git a/public/locales/hi/converters.json b/public/locales/hi/converters.json new file mode 100644 index 0000000..5c1c498 --- /dev/null +++ b/public/locales/hi/converters.json @@ -0,0 +1,26 @@ +{ + "audioConverter": { + "description": "ऑडियो फ़ाइलों को विभिन्न प्रारूपों के बीच रूपांतरित करें।", + "inputTitle": "ऑडियो इनपुट", + "longDescription": "यह उपकरण आपको ऑडियो फ़ाइलों को एक प्रारूप से दूसरे में रूपांतरित करने की अनुमति देता है, निरंतर रूपांतरण के लिए ऑडियो प्रारूपों की एक विस्तृत श्रृंखला का समर्थन करता है।", + "outputFormat": "आउटपुट प्रारूप", + "outputFormatDescription": "वांछित आउटपुट ऑडियो प्रारूप का चयन करें", + "outputTitle": "परिवर्तित ऑडियो", + "shortDescription": "ऑडियो फ़ाइलों को विभिन्न प्रारूपों में रूपांतरित करें।", + "title": "ऑडियो कनवर्टर" + }, + "convertToWebp": { + "description": "विभिन्न छवि प्रारूपों को अनुकूलन योग्य गुणवत्ता और पृष्ठभूमि रंग सेटिंग के साथ WebP प्रारूप में रूपांतरित करें।", + "failedToConvert": "छवि(यों) को WebP में रूपांतरण विफल रहा। कृपया पुनः प्रयास करें।", + "inputTitle": "इनपुट छवियां", + "options": { + "colorDescription": "पृष्ठभूमि रंग (पारदर्शी छवियों के लिए)", + "quality": "रूपांतरण गुणवत्ता:", + "qualityDescription": "उच्च मान = बेहतर गुणवत्ता, बड़ी फ़ाइल आकार", + "title": "रूपांतरण सेटिंग" + }, + "resultTitle": "WEBP छवियां", + "shortDescription": "गुणवत्ता नियंत्रण के साथ छवियों को WebP प्रारूप में रूपांतरित करें।", + "title": "छवियों को WebP में रूपांतरित करें" + } +} diff --git a/public/locales/hi/csv.json b/public/locales/hi/csv.json index bb05c0e..7aee8a4 100644 --- a/public/locales/hi/csv.json +++ b/public/locales/hi/csv.json @@ -214,5 +214,18 @@ "shortDescription": "CSV फ़ाइल को शीघ्रता से ट्रांसपोज़ करें.", "title": "CSV ट्रांसपोज़ करें", "transposeOptions": "ट्रांसपोज़ विकल्प" + }, + "tsvToJson": { + "arrayFormat": "सरणी प्रारूप", + "conversionOptions": "रूपांतरण विकल्प", + "description": "TSV डेटा को JSON प्रारूप में बदलें।", + "firstRowAsHeaders": "पहली पंक्ति शीर्षक के रूप में", + "includeHeaders": "शीर्षक शामिल करें", + "inputTitle": "इनपुट TSV", + "objectFormat": "ऑब्जेक्ट प्रारूप", + "outputFormat": "आउटपुट प्रारूप", + "resultTitle": "JSON परिणाम", + "shortDescription": "TSV को JSON प्रारूप में परिवर्तित करें", + "title": "TSV से JSON" } } diff --git a/public/locales/hi/image.json b/public/locales/hi/image.json index 7831278..2a1b5d9 100644 --- a/public/locales/hi/image.json +++ b/public/locales/hi/image.json @@ -1,6 +1,6 @@ { "changeColors": { - "description": "दुनिया", + "description": "चित्र में चुने गए रंगों को जल्दी और सही तरीके से नए रंगों से बदलें।", "shortDescription": "किसी छवि में रंगों को शीघ्रता से बदलें", "title": "छवि में रंग बदलें" }, @@ -58,13 +58,8 @@ "shortDescription": "अपनी JPG छवियों को शीघ्रता से PNG में बदलें", "title": "JPG को PNG में बदलें" }, - "convertToJpg": { - "description": "अनुकूलन योग्य गुणवत्ता और पृष्ठभूमि रंग सेटिंग्स के साथ विभिन्न छवि प्रारूपों (PNG, GIF, TIF, PSD, SVG, WEBP, HEIC, RAW) को JPG में परिवर्तित करें।", - "shortDescription": "गुणवत्ता नियंत्रण के साथ छवियों को JPG में परिवर्तित करें", - "title": "छवियों को JPG में परिवर्तित करें" - }, "createTransparent": { - "description": "दुनिया", + "description": "चुने गए रंग को हटाकर चित्र की पृष्ठभूमि को पारदर्शी बनाएं।", "shortDescription": "किसी छवि को शीघ्रता से पारदर्शी बनाएँ", "title": "पारदर्शी PNG बनाएँ" }, @@ -138,7 +133,7 @@ "title": "क्यूआर कोड जनरेटर" }, "removeBackground": { - "description": "दुनिया", + "description": "चित्र की पृष्ठभूमि को अपने आप हटाएं और मुख्य विषय को पारदर्शी रूप में रखें।", "shortDescription": "छवियों से पृष्ठभूमि स्वचालित रूप से हटाएँ", "title": "छवि से पृष्ठभूमि हटाएँ" }, diff --git a/public/locales/hi/json.json b/public/locales/hi/json.json index b7e8ec4..5c67964 100644 --- a/public/locales/hi/json.json +++ b/public/locales/hi/json.json @@ -82,19 +82,6 @@ "stringifyOptions": "स्ट्रिंगिफाई विकल्प", "title": "JSON स्ट्रिंगिफाई" }, - "tsvToJson": { - "arrayFormat": "सरणी प्रारूप", - "conversionOptions": "रूपांतरण विकल्प", - "description": "TSV डेटा को JSON प्रारूप में बदलें।", - "firstRowAsHeaders": "पहली पंक्ति शीर्षक के रूप में", - "includeHeaders": "शीर्षक शामिल करें", - "inputTitle": "इनपुट TSV", - "objectFormat": "ऑब्जेक्ट प्रारूप", - "outputFormat": "आउटपुट प्रारूप", - "resultTitle": "JSON परिणाम", - "shortDescription": "TSV को JSON प्रारूप में परिवर्तित करें", - "title": "TSV से JSON" - }, "validateJson": { "allowComments": "टिप्पणियां अनुमति दें", "allowTrailingCommas": "अनुगामी कॉमा अनुमति दें", diff --git a/public/locales/hi/list.json b/public/locales/hi/list.json index 9ab070e..b2c2a98 100644 --- a/public/locales/hi/list.json +++ b/public/locales/hi/list.json @@ -130,44 +130,15 @@ "uniqueOptions": "अद्वितीय विकल्प" }, "group": { - "deleteEmptyItems": "खाली आइटम हटाएं", - "deleteEmptyItemsDescription": "खाली आइटमों को अनदेखा करें और उन्हें समूहों में शामिल न करें।", - "description": "सूची आइटम को समूहित करने के लिए सरल उपकरण।", - "emptyItemsAndPadding": "खाली आइटम और पैडिंग", "groupByFirstChar": "पहले वर्ण के अनुसार समूहित करें", "groupByLastChar": "अंतिम वर्ण के अनुसार समूहित करें", "groupByLength": "लंबाई के अनुसार समूहित करें", "groupByPattern": "पैटर्न के अनुसार समूहित करें", "groupHeaders": "समूह शीर्षक जोड़ें", - "groupNumberDescription": "एक समूह में वस्तुओं की संख्या", - "groupSeparatorDescription": "समूह विभाजक वर्ण", - "groupSizeAndSeparators": "समूह का आकार और विभाजक", "groupingOptions": "समूहीकरण विकल्प", - "inputItemSeparator": "इनपुट आइटम विभाजक", - "inputTitle": "इनपुट सूची", - "itemSeparatorDescription": "आइटम विभाजक वर्ण", - "leftWrapDescription": "समूह का बायां आवरण प्रतीक.", "outputFormat": "आउटपुट प्रारूप", - "padNonFullGroups": "पैड गैर-पूर्ण समूह", - "padNonFullGroupsDescription": "गैर-पूर्ण समूहों को कस्टम आइटम से भरें (नीचे दर्ज करें).", - "paddingCharDescription": "गैर-पूर्ण समूहों को पैड करने के लिए इस वर्ण या आइटम का उपयोग करें.", "patternPlaceholder": "रेगेक्स पैटर्न", - "resultTitle": "समूहित सूची", - "rightWrapDescription": "समूह का दायाँ आवरण प्रतीक.", - "separatorPlaceholder": "विभाजक", - "shortDescription": "सामान्य गुणों द्वारा सूची आइटम को समूहित करें", - "splitOperators": { - "regex": { - "description": "नियमित अभिव्यक्ति के साथ इनपुट सूची आइटम को सीमांकित करें.", - "title": "विभाजन के लिए रेगेक्स का उपयोग करें" - }, - "symbol": { - "description": "इनपुट सूची आइटम को किसी वर्ण से सीमांकित करें.", - "title": "विभाजन के लिए प्रतीक का उपयोग करें" - } - }, - "splitSeparatorDescription": "एक सीमांकक प्रतीक या नियमित अभिव्यक्ति सेट करें.", - "title": "सूची समूहित करें" + "separatorPlaceholder": "विभाजक" }, "reverse": { "description": "सूची में आइटम के क्रम को उलटा करें।", diff --git a/public/locales/hi/pdf.json b/public/locales/hi/pdf.json index 10cf326..e286d83 100644 --- a/public/locales/hi/pdf.json +++ b/public/locales/hi/pdf.json @@ -28,6 +28,11 @@ "shortDescription": "अपने ब्राउज़र में सुरक्षित रूप से पीडीएफ फ़ाइलों को संपीड़ित करें", "title": "PDF संपीड़ित करें" }, + "convertToPdf": { + "description": "विभिन्न छवि प्रारूपों (PNG, GIF, JPG, TIF, PSD, SVG, WEBP, HEIC, RAW) को PDF में परिवर्तित करें और छवि का आकार और पृष्ठ की अभिविन्यास समायोजित करें।", + "shortDescription": "छवियों को PDF में परिवर्तित करें, आकार और अभिविन्यास समायोजित करने योग्य", + "title": "PDF में छवि बदलें" + }, "editor": { "description": "एनोटेशन, फ़ॉर्म-फ़िल, हाइलाइट और निर्यात क्षमताओं वाला उन्नत PDF संपादक। टेक्स्ट इंसर्शन, ड्रॉइंग, हाइलाइटिंग, हस्ताक्षर और फ़ॉर्म भरने जैसे पेशेवर-स्तरीय टूल से सीधे ब्राउज़र में अपनी PDF फ़ाइलों को संपादित करें।", "shortDescription": "उन्नत एनोटेशन, हस्ताक्षर और संपादन टूल के साथ PDF संपादित करें", @@ -117,8 +122,8 @@ "pageRangesDescription": "पृष्ठ संख्या या श्रेणियाँ अल्पविराम से अलग करके दर्ज करें (उदाहरण के लिए, 1,3,5-7)", "pageRangesPlaceholder": "उदाहरणार्थ, 1,5-8", "pagesPlaceholder": "जैसे 1,3-5,7", - "pagesWillBeRotated": "{{count}} पृष्ठ{{count !== 1 ? 's' : ''}} घुमाया जाएगा", - "pdfPageCount": "पीडीएफ में है {{count}} पृष्ठ{{count !== 1 ? 's' : ''}}", + "pagesWillBeRotated": "{{count}} पृष्ठ घुमाया जाएगा", + "pdfPageCount": "पीडीएफ में है {{count}} पृष्ठ", "resultTitle": "घुमाया गया PDF", "rotatingPages": "घूमते हुए पृष्ठ", "rotationAngle": "घुमाने का कोण", @@ -137,12 +142,12 @@ "extractingPages": "पृष्ठ निकालना", "includeBookmarks": "बुकमार्क शामिल करें", "inputTitle": "इनपुट PDF", - "pageExtractionPreview": "{{count}} पृष्ठ{{count !== 1 ? 's' : ''}} निकाला जाएगा", + "pageExtractionPreview": "{{count}} पृष्ठ निकाला जाएगा", "pageRanges": "पेज श्रेणियां", "pageRangesDescription": "पृष्ठ संख्या या श्रेणियाँ अल्पविराम से अलग करके दर्ज करें (उदाहरण के लिए, 1,3,5-7)", "pageRangesPlaceholder": "उदाहरणार्थ, 1,5-8", "pageSelection": "पृष्ठ चयन", - "pdfPageCount": "पीडीएफ में है {{count}} पृष्ठ{{count !== 1 ? 's' : ''}}", + "pdfPageCount": "पीडीएफ में है {{count}} पृष्ठ", "rangesPlaceholder": "जैसे 1,3-5,7", "resultTitle": "विभाजित PDF फ़ाइलें", "shortDescription": "पीडीएफ फ़ाइल से विशिष्ट पेज निकालें", diff --git a/public/locales/hi/pl.json b/public/locales/hi/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/public/locales/hi/pl.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/hi/time.json b/public/locales/hi/time.json index d3345e7..01605bf 100644 --- a/public/locales/hi/time.json +++ b/public/locales/hi/time.json @@ -92,29 +92,27 @@ "convertUnixToDate": { "addUtcLabel": "'UTC' प्रत्यय जोड़ें", "addUtcLabelDescription": "परिवर्तित तिथि के बाद 'UTC' प्रदर्शित करें (केवल UTC मोड के लिए)", - "description": "यूनिक्स टाइमस्टैम्प को मानव-पठनीय दिनांक में परिवर्तित करें।", + "date-to-unix": "दिनांक → यूनिक्स", + "description": "यूनिक्स टाइमस्टैम्प को पठनीय दिनांकों में परिवर्तित करें और स्वरूपित दिनांकों को वापस यूनिक्स टाइमस्टैम्प में परिवर्तित करें (दोनों दिशाओं में)।", + "optionsTitle": "रूपांतरण मोड", "outputOptions": "आउटपुट विकल्प", - "shortDescription": "यूनिक्स टाइमस्टैम्प को दिनांक में परिवर्तित करें", - "title": "यूनिक्स को दिनांक में परिवर्तित करें", + "shortDescription": "यूनिक्स टाइमस्टैम्प और दिनांकों को दोनों दिशाओं में परिवर्तित करें।", + "title": "यूनिक्स ↔ दिनांक रूपांतरित करें", "toolInfo": { - "description": "यह उपकरण यूनिक्स टाइमस्टैम्प (सेकंड में) को मानव-पठनीय दिनांक प्रारूप (जैसे, YYYY-MM-DD HH:MM:SS) में परिवर्तित करता है। यह स्थानीय और UTC दोनों आउटपुट का समर्थन करता है, जिससे यह लॉग, API, या यूनिक्स समय का उपयोग करने वाले सिस्टम से टाइमस्टैम्प की त्वरित व्याख्या करने के लिए उपयोगी हो जाता है।", - "title": "यूनिक्स को दिनांक में परिवर्तित करें" + "description": "यह उपकरण यूनिक्स टाइमस्टैम्प (सेकंड में) को मानव-पठनीय दिनांक प्रारूप जैसे YYYY-MM-DD HH:MM:SS में परिवर्तित करता है, और स्वरूपित दिनांकों को वापस यूनिक्स टाइमस्टैम्प में भी परिवर्तित करता है। आप UTC आउटपुट, स्थानीय समय क्षेत्र आउटपुट, या कस्टम UTC ऑफ़सेट प्रदान कर सकते हैं (उदाहरण: YYYY-MM-DD HH:MM:SS +XX:XX)। यदि कोई ऑफ़सेट प्रदान नहीं किया गया है और स्थानीय समय क्षेत्र का चयन नहीं किया गया है, तो डिफ़ॉल्ट रूप से UTC (+00:00) का उपयोग किया जाता है।", + "title": "यूनिक्स ↔ दिनांक रूपांतरित करें" }, + "tzOptions": "समय क्षेत्र विकल्प", + "unix-to-date": "यूनिक्स → दिनांक", "useLocalTime": "स्थानीय समय का उपयोग करें", "useLocalTimeDescription": "परिवर्तित तिथि को UTC के बजाय अपने स्थानीय समय क्षेत्र में दिखाएँ", - "withLabel": "विकल्प" + "useUTC": "UTC का उपयोग करें" }, "crontabGuru": { - "countPlaceholder": "संख्या", - "cronOptions": "Cron विकल्प", - "description": "Cron एक्सप्रेशन को मानव-पठनीय प्रारूप में बदलें।", - "expressionPlaceholder": "जैसे */5 * * * *", - "inputTitle": "इनपुट Cron एक्सप्रेशन", - "resultTitle": "मानव-पठनीय विवरण", - "runCount": "रन की संख्या", - "shortDescription": "क्रॉन एक्सप्रेशन उत्पन्न करें और समझें", - "showNextRuns": "अगले रन दिखाएं", - "title": "Crontab गुरु" + "title": "Crontab Guru", + "description": "क्रॉन एक्सप्रेशन को हिंदी में पार्स और समझाएं। किसी भी क्रॉन शेड्यूल को तुरंत समझें, सिंटैक्स को वैलिडेट करें और एक साथ कई एक्सप्रेशन प्रोसेस करें।", + "shortDescription": "क्रॉन एक्सप्रेशन को सरल भाषा में पार्स और समझाएं", + "longDescription": "Crontab Guru एक क्रॉन एक्सप्रेशन पार्सर और वैलिडेटर है जो जटिल क्रॉन सिंटैक्स को स्पष्ट, पठनीय विवरणों में अनुवाद करता है। चाहे आप स्वचालित बैकअप, सिस्टम रखरखाव कार्य, या CI/CD पाइपलाइन शेड्यूल कर रहे हों, यह टूल आपको यह समझने में मदद करता है कि आपके जॉब्स ठीक कब चलेंगे। मानक 5-फील्ड क्रॉन एक्सप्रेशन का समर्थन करता है, रियल टाइम में सिंटैक्स वैलिडेट करता है और एक साथ कई एक्सप्रेशन प्रोसेस करता है — एक प्रति पंक्ति।" }, "timeBetweenDates": { "dateOptions": "तिथि विकल्प", diff --git a/public/locales/hi/translation.json b/public/locales/hi/translation.json index f30c7ee..1c68ebb 100644 --- a/public/locales/hi/translation.json +++ b/public/locales/hi/translation.json @@ -225,13 +225,10 @@ "loading": "लोड हो रहा है... इसमें कुछ समय लग सकता है।", "result": "परिणाम" }, - "toolMultipleAudioInput": { - "inputTitle": "इनपुट {{type}}", - "noFilesSelected": "कोई फ़ाइल चयनित नहीं" - }, - "toolMultiplePdfInput": { - "inputTitle": "इनपुट {{type}}", - "noFilesSelected": "कोई फ़ाइल चयनित नहीं" + "toolMultipleInput": { + "inputTitle": "{{type}} इनपुट करें", + "noFilesSelected": "कोई फ़ाइल नहीं चुनी गई", + "deleteFile": "फ़ाइल हटाएं" }, "toolOptions": { "title": "टूल विकल्प" diff --git a/public/locales/ja/converters.json b/public/locales/ja/converters.json new file mode 100644 index 0000000..d0562b3 --- /dev/null +++ b/public/locales/ja/converters.json @@ -0,0 +1,26 @@ +{ + "audioConverter": { + "description": "オーディオファイルを異なるフォーマット間で変換します。", + "inputTitle": "オーディオ入力", + "longDescription": "このツールは、オーディオファイルを1つのフォーマットから別のフォーマットに変換でき、シームレスな変換のための幅広いオーディオフォーマットをサポートしています。", + "outputFormat": "出力フォーマット", + "outputFormatDescription": "目的の出力オーディオフォーマットを選択してください", + "outputTitle": "変換済みオーディオ", + "shortDescription": "オーディオファイルをさまざまなフォーマットに変換します。", + "title": "オーディオコンバーター" + }, + "convertToWebp": { + "description": "カスタマイズ可能な品質と背景色の設定で、さまざまな画像形式をWebP形式に変換します。", + "failedToConvert": "画像のWebPへの変換に失敗しました。もう一度やり直してください。", + "inputTitle": "入力画像", + "options": { + "colorDescription": "背景色(透明な画像用)", + "quality": "変換品質:", + "qualityDescription": "値が高いほど品質が高く、ファイルサイズが大きくなります", + "title": "変換設定" + }, + "resultTitle": "WEBP画像", + "shortDescription": "品質制御を備えた画像をWebP形式に変換します。", + "title": "画像をWebPに変換" + } +} diff --git a/public/locales/ja/csv.json b/public/locales/ja/csv.json index 42118c8..64f767b 100644 --- a/public/locales/ja/csv.json +++ b/public/locales/ja/csv.json @@ -116,5 +116,10 @@ "longDescription": "このツールは、カンマ区切り値(CSV)を転置します。CSVをデータの行列として扱い、すべての要素を主対角線を挟んで反転します。出力には入力と同じCSVデータが含まれますが、すべての行が列になり、すべての列が行になります。転置後、CSVファイルの次元は逆になります。たとえば、入力ファイルに4列3行がある場合、出力ファイルは3列4行になります。変換中に、プログラムは不要な行のデータを削除し、不完全なデータを修正します。具体的には、ツールはオプションで設定できる特定の文字で始まるすべての空のレコードとコメントを自動的に削除します。さらに、CSVデータが破損または失われた場合、ユーティリティはオプションで指定できる空のフィールドまたはカスタムフィールドでファイルを補完します。CSV-abulous!", "shortDescription": "CSV ファイルをすばやく転置します。", "title": "CSV転置" + }, + "tsvToJson": { + "description": "TSV(タブ区切り値)データをJSON形式に変換します。表形式のデータを構造化されたJSONオブジェクトに変換します。", + "shortDescription": "TSVをJSON形式に変換する", + "title": "TSVからJSONへ" } } diff --git a/public/locales/ja/image.json b/public/locales/ja/image.json index d0d0934..1a01f8c 100644 --- a/public/locales/ja/image.json +++ b/public/locales/ja/image.json @@ -1,6 +1,6 @@ { "changeColors": { - "description": "世界", + "description": "画像内の選択した色をすばやく正確に新しい色へ置き換えます。", "shortDescription": "画像内の色を素早く入れ替える", "title": "画像の色を変更する" }, @@ -33,13 +33,8 @@ "shortDescription": "JPG画像をPNGに素早く変換", "title": "JPGをPNGに変換する" }, - "convertToJpg": { - "description": "さまざまな画像形式 (PNG、GIF、TIF、PSD、SVG、WEBP、HEIC、RAW) を、カスタマイズ可能な品質と背景色の設定で JPG に変換します。", - "shortDescription": "品質管理しながら画像をJPGに変換する", - "title": "画像をJPGに変換する" - }, "createTransparent": { - "description": "世界", + "description": "選択した色を削除して、画像の背景を透明にします。", "shortDescription": "画像を素早く透明にする", "title": "透明なPNGを作成する" }, @@ -66,7 +61,7 @@ "title": "QRコードジェネレーター" }, "removeBackground": { - "description": "世界", + "description": "画像の背景を自動で削除し、主要な被写体を透過状態で残します。", "shortDescription": "画像から背景を自動的に削除する", "title": "画像から背景を削除する" }, diff --git a/public/locales/ja/json.json b/public/locales/ja/json.json index 39df873..abe268b 100644 --- a/public/locales/ja/json.json +++ b/public/locales/ja/json.json @@ -46,11 +46,6 @@ "shortDescription": "オブジェクトをJSON文字列に変換する", "title": "JSONを文字列化する" }, - "tsvToJson": { - "description": "TSV(タブ区切り値)データをJSON形式に変換します。表形式のデータを構造化されたJSONオブジェクトに変換します。", - "shortDescription": "TSVをJSON形式に変換する", - "title": "TSVからJSONへ" - }, "validateJson": { "description": "JSON が有効かつ整形式であるかどうかを確認します。", "inputTitle": "入力JSON", diff --git a/public/locales/ja/list.json b/public/locales/ja/list.json index aaa8287..b26d8ff 100644 --- a/public/locales/ja/list.json +++ b/public/locales/ja/list.json @@ -113,37 +113,6 @@ "trimItemsDescription": "項目を比較する前に先頭と末尾のスペースを削除します。", "uniqueItemOptions": "ユニークなアイテムオプション" }, - "group": { - "deleteEmptyItems": "空のアイテムを削除する", - "deleteEmptyItemsDescription": "空の項目は無視し、グループに含めません。", - "description": "リスト項目をグループ化するための、世界で最もシンプルなブラウザベースのユーティリティです。リストを入力し、グループ化の条件を指定するだけで、項目を論理的なグループに整理できます。データの分類、情報の整理、構造化されたリストの作成に最適です。カスタムセパレーターと様々なグループ化オプションをサポートしています。", - "emptyItemsAndPadding": "空の項目とパディング", - "groupNumberDescription": "グループ内のアイテム数", - "groupSeparatorDescription": "グループ区切り文字", - "groupSizeAndSeparators": "グループサイズと区切り", - "inputItemSeparator": "入力項目セパレーター", - "inputTitle": "入力リスト", - "itemSeparatorDescription": "項目区切り文字", - "leftWrapDescription": "グループの左折り返し記号。", - "padNonFullGroups": "非フルグループのパディング", - "padNonFullGroupsDescription": "いっぱいでないグループをカスタム項目で埋めます (以下に入力)。", - "paddingCharDescription": "この文字または項目を使用して、完全でないグループを埋め込みます。", - "resultTitle": "グループ化されたアイテム", - "rightWrapDescription": "グループの右折り返し記号。", - "shortDescription": "共通のプロパティでリスト項目をグループ化する", - "splitOperators": { - "regex": { - "description": "入力リスト項目を正規表現で区切ります。", - "title": "正規表現を使用して分割する" - }, - "symbol": { - "description": "入力リスト項目を文字で区切ります。", - "title": "分割にシンボルを使用する" - } - }, - "splitSeparatorDescription": "区切り記号または正規表現を設定します。", - "title": "グループ" - }, "reverse": { "description": "これは、すべてのリスト項目を逆順に表示する、非常にシンプルなブラウザベースのアプリケーションです。入力項目は任意の記号で区切ることができ、逆順に表示するリスト項目の区切り文字を変更することもできます。", "inputTitle": "入力リスト", diff --git a/public/locales/ja/pdf.json b/public/locales/ja/pdf.json index 1a695a7..8a59210 100644 --- a/public/locales/ja/pdf.json +++ b/public/locales/ja/pdf.json @@ -21,6 +21,11 @@ "shortDescription": "ブラウザでPDFファイルを安全に圧縮", "title": "PDFを圧縮" }, + "convertToPdf": { + "description": "様々な画像形式(PNG、GIF、JPG、TIF、PSD、SVG、WEBP、HEIC、RAW)をPDFに変換します。画像サイズとページの向きを調整できます。", + "shortDescription": "画像を PDF に変換し、画像のサイズやページの向きを調整できます。", + "title": "画像を PDF に変換" + }, "editor": { "description": "注釈、フォーム入力、ハイライト、エクスポート機能を備えた高度なPDFエディター。テキスト挿入、描画、ハイライト、署名、フォーム入力などのプロ仕様のツールを使って、ブラウザ内で直接PDFを編集できます。", "shortDescription": "高度な注釈、署名、編集ツールでPDFを編集", @@ -81,8 +86,8 @@ "longDescription": "PDFページの向きを90度、180度、または270度回転して変更できます。スキャンミスを修正したり、印刷用のPDFを準備したりする際に便利です。", "pageRangesDescription": "ページ番号または範囲をコンマで区切って入力してください(例:1,3,5-7)", "pageRangesPlaceholder": "例:1.5-8", - "pagesWillBeRotated": "{{count}} ページ{{count !== 1 ? 's' : ''}} 回転します", - "pdfPageCount": "PDFには {{count}} ページ{{count !== 1 ? 's' : ''}}", + "pagesWillBeRotated": "{{count}} ページ 回転します", + "pdfPageCount": "PDFには {{count}} ページ", "resultTitle": "回転したPDF", "rotatingPages": "ページの回転", "rotationAngle": "回転角度", @@ -98,11 +103,11 @@ "description": "PDF ドキュメントから特定のページを抽出します。", "extractingPages": "ページの抽出", "inputTitle": "入力PDF", - "pageExtractionPreview": "{{count}} ページ{{count !== 1 ? 's' : ''}} 抽出されます", + "pageExtractionPreview": "{{count}} ページ 抽出されます", "pageRangesDescription": "ページ番号または範囲をコンマで区切って入力してください(例:1,3,5-7)", "pageRangesPlaceholder": "例:1.5-8", "pageSelection": "ページ選択", - "pdfPageCount": "PDFには {{count}} ページ{{count !== 1 ? 's' : ''}}", + "pdfPageCount": "PDFには {{count}} ページ", "resultTitle": "抽出されたPDF", "shortDescription": "PDFファイルから特定のページを抽出する", "title": "PDFを分割", diff --git a/public/locales/ja/pl.json b/public/locales/ja/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/public/locales/ja/pl.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/ja/time.json b/public/locales/ja/time.json index 2d810f6..fceccca 100644 --- a/public/locales/ja/time.json +++ b/public/locales/ja/time.json @@ -61,22 +61,27 @@ "convertUnixToDate": { "addUtcLabel": "「UTC」サフィックスを追加", "addUtcLabelDescription": "変換された日付の後に「UTC」を表示します(UTCモードのみ)", - "description": "Unix タイムスタンプを人間が読める日付に変換します。", + "date-to-unix": "日付 → Unix", + "description": "Unix タイムスタンプを読み取り可能な日付に変換し、フォーマットされた日付を Unix タイムスタンプに変換します(両方向)。", + "optionsTitle": "変換モード", "outputOptions": "出力オプション", - "shortDescription": "Unixタイムスタンプを日付に変換する", - "title": "Unix を日付に変換する", + "shortDescription": "Unix タイムスタンプと日付を両方向に変換します。", + "title": "Unix ↔ 日付を変換する", "toolInfo": { - "description": "このツールは、Unixタイムスタンプ(秒単位)を人間が判読できる日付形式(例:YYYY-MM-DD HH:MM:SS)に変換します。ローカルタイムスタンプとUTCタイムスタンプの両方の出力をサポートしているため、ログ、API、またはUnixタイムを使用するシステムからのタイムスタンプを素早く解釈するのに役立ちます。", - "title": "Unix を日付に変換する" + "description": "このツールは、Unix タイムスタンプ(秒単位)を YYYY-MM-DD HH:MM:SS などの人間が判読できる日付形式に変換し、フォーマットされた日付を Unix タイムスタンプに変換します。UTC出力、ローカルタイムゾーン出力、またはカスタム UTC オフセット(例:YYYY-MM-DD HH:MM:SS +XX:XX)を選択できます。オフセットが提供されず、ローカル タイムゾーンが選択されていない場合、デフォルトで UTC (+00:00) が使用されます。", + "title": "Unix ↔ 日付を変換する" }, + "tzOptions": "タイムゾーンオプション", + "unix-to-date": "Unix → 日付", "useLocalTime": "現地時間を使用する", "useLocalTimeDescription": "UTC ではなくローカルタイムゾーンで変換された日付を表示します", - "withLabel": "オプション" + "useUTC": "UTC を使用する" }, "crontabGuru": { - "description": "cron式を生成し、理解します。自動化されたタスクやシステムジョブのcronスケジュールを作成します。", - "shortDescription": "cron式を生成して理解する", - "title": "クロンタブの達人" + "title": "Crontab Guru", + "description": "cron式を日本語で解析・説明します。任意のcronスケジュールの動作を即座に理解し、構文を検証し、複数の式を一度に処理できます。", + "shortDescription": "cron式をわかりやすく解析・説明する", + "longDescription": "Crontab Guruは、複雑なcron構文をわかりやすい説明に変換するcron式パーサー・バリデーターです。自動バックアップ、システムメンテナンスタスク、CI/CDパイプラインのスケジュール設定など、ジョブがいつ実行されるかを正確に把握できます。標準的な5フィールドのcron式をサポートし、構文をリアルタイムで検証し、複数の式を一度に処理します(1行に1つ)。英語、フランス語、スペイン語、ドイツ語、日本語、中国語、ポルトガル語、オランダ語、ロシア語に対応しています。" }, "timeBetweenDates": { "description": "2つの日付間の時差を計算します。正確な日数、時間、分、秒を取得します。", diff --git a/public/locales/ja/translation.json b/public/locales/ja/translation.json index 4acaebc..b6ce855 100644 --- a/public/locales/ja/translation.json +++ b/public/locales/ja/translation.json @@ -225,13 +225,10 @@ "loading": "読み込み中... 少々時間がかかる場合があります。", "result": "結果" }, - "toolMultipleAudioInput": { - "inputTitle": "入力 {{type}}", - "noFilesSelected": "ファイルが選択されていません" - }, - "toolMultiplePdfInput": { - "inputTitle": "入力 {{type}}", - "noFilesSelected": "ファイルが選択されていません" + "toolMultipleInput": { + "inputTitle": "{{type}}を入力", + "noFilesSelected": "ファイルが選択されていません", + "deleteFile": "ファイルを削除" }, "toolOptions": { "title": "ツールオプション" diff --git a/public/locales/nl/converters.json b/public/locales/nl/converters.json new file mode 100644 index 0000000..6b75925 --- /dev/null +++ b/public/locales/nl/converters.json @@ -0,0 +1,26 @@ +{ + "audioConverter": { + "description": "Converteer audiobestanden tussen verschillende indelingen.", + "inputTitle": "Audio-invoer", + "longDescription": "Met deze tool kunt u audiobestanden van het ene naar het andere formaat converteren, met ondersteuning voor een breed scala aan audioformaten voor naadloze conversie.", + "outputFormat": "Uitvoerindeling", + "outputFormatDescription": "Selecteer het gewenste audio-uitvoerformat", + "outputTitle": "Geconverteerde Audio", + "shortDescription": "Converteer audiobestanden naar verschillende indelingen.", + "title": "Audio Converter" + }, + "convertToWebp": { + "description": "Converteer verschillende afbeeldingsindelingen naar WebP-indeling met aanpasbare instellingen voor kwaliteit en achtergrondkleur.", + "failedToConvert": "Conversie van afbeelding(en) naar WebP mislukt. Probeer het opnieuw.", + "inputTitle": "Invoerafbeeldingen", + "options": { + "colorDescription": "Achtergrondkleur (voor transparante afbeeldingen)", + "quality": "Conversiekwaliteit:", + "qualityDescription": "Hogere waarden = betere kwaliteit, groter bestandsformaat", + "title": "Conversie-instellingen" + }, + "resultTitle": "WEBP-afbeeldingen", + "shortDescription": "Converteer afbeeldingen naar WebP-indeling met kwaliteitsbeheer.", + "title": "Afbeeldingen naar WebP converteren" + } +} diff --git a/public/locales/nl/csv.json b/public/locales/nl/csv.json index 562e097..4b07e42 100644 --- a/public/locales/nl/csv.json +++ b/public/locales/nl/csv.json @@ -116,5 +116,10 @@ "longDescription": "Deze tool transponeert Comma Separated Values (CSV). Het behandelt de CSV als een matrix met data en draait alle elementen om over de hoofddiagonaal. De uitvoer bevat dezelfde CSV-data als de invoer, maar nu zijn alle rijen kolommen en alle kolommen rijen geworden. Na transpositie heeft het CSV-bestand tegengestelde afmetingen. Als het invoerbestand bijvoorbeeld 4 kolommen en 3 rijen heeft, heeft het uitvoerbestand 3 kolommen en 4 rijen. Tijdens de conversie zuivert het programma de data ook van onnodige regels en corrigeert het onvolledige data. De tool verwijdert automatisch alle lege records en opmerkingen die beginnen met een specifiek teken, dat u in de optie kunt instellen. Bovendien, in gevallen waarin de CSV-data beschadigd of verloren zijn, vult het hulpprogramma het bestand aan met lege velden of aangepaste velden die u in de opties kunt opgeven. Csv-abulous!", "shortDescription": "Snel een CSV-bestand transponeren.", "title": "CSV transponeren" + }, + "tsvToJson": { + "description": "Converteer TSV-gegevens (Tab-Separated Values) naar JSON-formaat. Transformeer tabelgegevens naar gestructureerde JSON-objecten.", + "shortDescription": "Converteer TSV naar JSON-formaat", + "title": "TSV naar JSON" } } diff --git a/public/locales/nl/image.json b/public/locales/nl/image.json index a5d394e..eaf5b3a 100644 --- a/public/locales/nl/image.json +++ b/public/locales/nl/image.json @@ -1,6 +1,6 @@ { "changeColors": { - "description": "Wereld", + "description": "Vervang geselecteerde kleuren in een afbeelding snel en nauwkeurig door nieuwe kleuren.", "shortDescription": "Snel kleuren in een afbeelding verwisselen", "title": "Kleuren in afbeelding wijzigen" }, @@ -33,13 +33,8 @@ "shortDescription": "Converteer uw JPG-afbeeldingen snel naar PNG", "title": "JPG naar PNG converteren" }, - "convertToJpg": { - "description": "Converteer verschillende afbeeldingsformaten (PNG, GIF, TIF, PSD, SVG, WEBP, HEIC, RAW) naar JPG met aanpasbare instellingen voor de kwaliteit en achtergrondkleur.", - "shortDescription": "Converteer afbeeldingen naar JPG met kwaliteitscontrole", - "title": "Afbeeldingen naar JPG converteren" - }, "createTransparent": { - "description": "Wereld", + "description": "Maak de achtergrond van een afbeelding transparant door de gekozen kleur te verwijderen.", "shortDescription": "Snel een afbeelding transparant maken", "title": "Transparante PNG maken" }, @@ -66,7 +61,7 @@ "title": "QR-codegenerator" }, "removeBackground": { - "description": "Wereld", + "description": "Verwijder automatisch de achtergrond van een afbeelding en behoud het hoofdonderwerp met transparantie.", "shortDescription": "Achtergronden automatisch uit afbeeldingen verwijderen", "title": "Achtergrond uit afbeelding verwijderen" }, diff --git a/public/locales/nl/json.json b/public/locales/nl/json.json index 5e679a8..17d6c46 100644 --- a/public/locales/nl/json.json +++ b/public/locales/nl/json.json @@ -46,11 +46,6 @@ "shortDescription": "Objecten converteren naar JSON-string", "title": "Stringify JSON" }, - "tsvToJson": { - "description": "Converteer TSV-gegevens (Tab-Separated Values) naar JSON-formaat. Transformeer tabelgegevens naar gestructureerde JSON-objecten.", - "shortDescription": "Converteer TSV naar JSON-formaat", - "title": "TSV naar JSON" - }, "validateJson": { "description": "Controleer of JSON geldig en correct is geformuleerd.", "inputTitle": "Invoer JSON", diff --git a/public/locales/nl/list.json b/public/locales/nl/list.json index 1cf02d1..97e9219 100644 --- a/public/locales/nl/list.json +++ b/public/locales/nl/list.json @@ -113,37 +113,6 @@ "trimItemsDescription": "Verwijder spaties voor en na de items voordat u ze vergelijkt.", "uniqueItemOptions": "Unieke itemopties" }, - "group": { - "deleteEmptyItems": "Lege items verwijderen", - "deleteEmptyItemsDescription": "Negeer lege items en neem ze niet op in de groepen.", - "description": "'s Werelds eenvoudigste browsergebaseerde hulpprogramma voor het groeperen van lijstitems. Voer uw lijst in en specificeer groeperingscriteria om items in logische groepen te ordenen. Perfect voor het categoriseren van gegevens, het organiseren van informatie of het maken van gestructureerde lijsten. Ondersteunt aangepaste scheidingstekens en diverse groeperingsopties.", - "emptyItemsAndPadding": "Lege items en opvulling", - "groupNumberDescription": "Aantal items in een groep", - "groupSeparatorDescription": "Groepsscheidingsteken", - "groupSizeAndSeparators": "Groepsgrootte en scheidingstekens", - "inputItemSeparator": "Scheidingsteken voor invoeritems", - "inputTitle": "Invoerlijst", - "itemSeparatorDescription": "Itemscheidingsteken", - "leftWrapDescription": "Linksomloopsymbool van de groep.", - "padNonFullGroups": "Pad Niet-volledige groepen", - "padNonFullGroupsDescription": "Vul niet-volledige groepen met een aangepast item (voer hieronder in).", - "paddingCharDescription": "Gebruik dit karakter of item om groepen aan te vullen die niet vol zijn.", - "resultTitle": "Gegroepeerde items", - "rightWrapDescription": "Symbool voor de rechteromslag van de groep.", - "shortDescription": "Groepeer lijstitems op basis van gemeenschappelijke eigenschappen", - "splitOperators": { - "regex": { - "description": "Beperk de items in de invoerlijst met een reguliere expressie.", - "title": "Gebruik een Regex voor het splitsen" - }, - "symbol": { - "description": "Beperk de items in de invoerlijst met een teken.", - "title": "Gebruik een symbool voor splitsen" - } - }, - "splitSeparatorDescription": "Stel een scheidingsteken of reguliere expressie in.", - "title": "Groep" - }, "reverse": { "description": "Dit is een supereenvoudige browserapplicatie die alle items in de lijst in spiegelbeeld afdrukt. De invoeritems kunnen worden gescheiden door een willekeurig symbool en u kunt ook de scheidingstekens van de omgekeerde items in de lijst wijzigen.", "inputTitle": "Invoerlijst", diff --git a/public/locales/nl/pdf.json b/public/locales/nl/pdf.json index 27dca31..ce3d0fe 100644 --- a/public/locales/nl/pdf.json +++ b/public/locales/nl/pdf.json @@ -21,6 +21,11 @@ "shortDescription": "Comprimeer PDF-bestanden veilig in uw browser", "title": "PDF comprimeren" }, + "convertToPdf": { + "description": "Verschillende afbeeldingsformaten (PNG, GIF, JPG, TIF, PSD, SVG, WEBP, HEIC, RAW) naar PDF converteren, met opties om de afbeelding te schalen en de paginaoriëntatie te kiezen.", + "shortDescription": "Afbeeldingen naar PDF converteren met schaal- en oriëntatiecontrole", + "title": "Afbeeldingen naar PDF" + }, "editor": { "description": "Geavanceerde PDF-editor met mogelijkheden voor annotatie, formulieren invullen, markeren en exporteren. Bewerk uw PDF's rechtstreeks in de browser met professionele tools zoals tekst invoegen, tekenen, markeren, ondertekenen en formulieren invullen.", "shortDescription": "Bewerk PDF's met geavanceerde hulpmiddelen voor annotatie, ondertekening en bewerking", @@ -81,8 +86,8 @@ "longDescription": "Wijzig de oriëntatie van PDF-pagina's door ze 90, 180 of 270 graden te draaien. Handig voor het corrigeren van onjuist gescande documenten of het voorbereiden van PDF's voor afdrukken.", "pageRangesDescription": "Voer paginanummers of bereiken in, gescheiden door komma's (bijv. 1, 3, 5-7)", "pageRangesPlaceholder": "bijv. 1,5-8", - "pagesWillBeRotated": "{{count}} pagina{{count !== 1 ? 's' : ''}} zal worden gedraaid", - "pdfPageCount": "PDF heeft {{count}} pagina{{count !== 1 ? 's' : ''}}", + "pagesWillBeRotated": "{{count}} pagina{{plural}} zal worden gedraaid", + "pdfPageCount": "PDF heeft {{count}} pagina{{plural}}", "resultTitle": "Gedraaide PDF", "rotatingPages": "Roterende pagina's", "rotationAngle": "Rotatiehoek", @@ -98,11 +103,11 @@ "description": "Specifieke pagina's uit een PDF-document extraheren.", "extractingPages": "Pagina's extraheren", "inputTitle": "PDF-invoer", - "pageExtractionPreview": "{{count}} pagina{{count !== 1 ? 's' : ''}} zal worden geëxtraheerd", + "pageExtractionPreview": "{{count}} pagina{{ plural }} zal worden geëxtraheerd", "pageRangesDescription": "Voer paginanummers of bereiken in, gescheiden door komma's (bijv. 1, 3, 5-7)", "pageRangesPlaceholder": "bijv. 1,5-8", "pageSelection": "Paginaselectie", - "pdfPageCount": "PDF heeft {{count}} pagina{{count !== 1 ? 's' : ''}}", + "pdfPageCount": "PDF heeft {{count}} pagina{{plural}}", "resultTitle": "Geëxtraheerde PDF", "shortDescription": "Specifieke pagina's uit een PDF-bestand extraheren", "title": "PDF splitsen", diff --git a/public/locales/nl/pl.json b/public/locales/nl/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/public/locales/nl/pl.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/nl/time.json b/public/locales/nl/time.json index 8ed1bb2..66b4c57 100644 --- a/public/locales/nl/time.json +++ b/public/locales/nl/time.json @@ -61,22 +61,27 @@ "convertUnixToDate": { "addUtcLabel": "Voeg 'UTC'-achtervoegsel toe", "addUtcLabelDescription": "'UTC' weergeven na de geconverteerde datum (alleen voor UTC-modus)", - "description": "Converteer een Unix-tijdstempel naar een voor mensen leesbare datum.", + "date-to-unix": "Datum → Unix", + "description": "Converteer Unix-tijdstempels naar leesbare datums en converteer geformatteerde datums terug naar Unix-tijdstempels (in beide richtingen).", + "optionsTitle": "Conversie-modus", "outputOptions": "Uitvoeropties", - "shortDescription": "Unix-tijdstempel naar datum converteren", - "title": "Unix naar Date converteren", + "shortDescription": "Converteer Unix-tijdstempels en datums in beide richtingen.", + "title": "Unix ↔ Datum converteren", "toolInfo": { - "description": "Deze tool converteert een Unix-tijdstempel (in seconden) naar een voor mensen leesbaar datumformaat (bijv. JJJJ-MM-DD UU:MM:SS). De tool ondersteunt zowel lokale als UTC-uitvoer, waardoor het handig is voor het snel interpreteren van tijdstempels uit logs, API's of systemen die Unix-tijd gebruiken.", - "title": "Unix naar Date converteren" + "description": "Deze tool converteert Unix-tijdstempels (in seconden) naar voor mensen leesbare datumformaten zoals JJJJ-MM-DD UU:MM:SS, en converteert ook geformatteerde datums terug naar Unix-tijdstempels. U kunt UTC-uitvoer, lokale tijdzoneuitvoer of een aangepaste UTC-offset opgeven (bijvoorbeeld: JJJJ-MM-DD UU:MM:SS +XX:XX). Als er geen offset is opgegeven en lokale tijdzone niet is geselecteerd, wordt standaard UTC (+00:00) gebruikt.", + "title": "Unix ↔ Datum converteren" }, + "tzOptions": "Tijdzone-opties", + "unix-to-date": "Unix → Datum", "useLocalTime": "Gebruik lokale tijd", "useLocalTimeDescription": "Toon de geconverteerde datum in uw lokale tijdzone in plaats van UTC", - "withLabel": "Opties" + "useUTC": "UTC gebruiken" }, "crontabGuru": { - "description": "Genereer en begrijp cron-expressies. Maak cron-schema's voor geautomatiseerde taken en systeemtaken.", - "shortDescription": "Genereer en begrijp cron-expressies", - "title": "Crontab-goeroe" + "title": "Crontab Guru", + "description": "Parseer en verklaar cron-expressies in het Nederlands. Begrijp direct wat een cron-schema doet, valideer de syntaxis en verwerk meerdere expressies tegelijk.", + "shortDescription": "Cron-expressies parseren en in begrijpelijke taal uitleggen", + "longDescription": "Crontab Guru is een cron-expressie-parser en -validator die complexe cron-syntaxis vertaalt naar duidelijke, leesbare beschrijvingen. Of u nu automatische back-ups, systeemonderhoudstaken of CI/CD-pipelines plant, deze tool helpt u precies te begrijpen wanneer uw taken worden uitgevoerd. Ondersteunt standaard cron-expressies met 5 velden, valideert de syntaxis in realtime en verwerkt meerdere expressies tegelijk — één per regel. Beschikbaar in het Engels, Frans, Spaans, Duits, Japans, Chinees, Portugees, Nederlands en Russisch." }, "timeBetweenDates": { "description": "Bereken het tijdsverschil tussen twee datums. Bereken de exacte duur in dagen, uren, minuten en seconden.", diff --git a/public/locales/nl/translation.json b/public/locales/nl/translation.json index b95d610..d117aae 100644 --- a/public/locales/nl/translation.json +++ b/public/locales/nl/translation.json @@ -225,13 +225,10 @@ "loading": "Bezig met laden... Dit kan even duren.", "result": "Resultaat" }, - "toolMultipleAudioInput": { + "toolMultipleInput": { "inputTitle": "Invoer {{type}}", - "noFilesSelected": "Geen bestanden geselecteerd" - }, - "toolMultiplePdfInput": { - "inputTitle": "Invoer {{type}}", - "noFilesSelected": "Geen bestanden geselecteerd" + "noFilesSelected": "Geen bestanden geselecteerd", + "deleteFile": "Bestand verwijderen" }, "toolOptions": { "title": "Gereedschapsopties" diff --git a/public/locales/pt/converters.json b/public/locales/pt/converters.json new file mode 100644 index 0000000..59505ec --- /dev/null +++ b/public/locales/pt/converters.json @@ -0,0 +1,26 @@ +{ + "audioConverter": { + "description": "Converta arquivos de áudio entre diferentes formatos.", + "inputTitle": "Entrada de Áudio", + "longDescription": "Esta ferramenta permite que você converta arquivos de áudio de um formato para outro, suportando uma ampla gama de formatos de áudio para conversão perfeita.", + "outputFormat": "Formato de Saída", + "outputFormatDescription": "Selecione o formato de áudio de saída desejado", + "outputTitle": "Áudio Convertido", + "shortDescription": "Converta arquivos de áudio para vários formatos.", + "title": "Conversor de Áudio" + }, + "convertToWebp": { + "description": "Converta vários formatos de imagem para o formato WebP com configurações personalizáveis de qualidade e cor de fundo.", + "failedToConvert": "A conversão da(s) imagem(ns) para WebP falhou. Por favor, tente novamente.", + "inputTitle": "Imagens de entrada", + "options": { + "colorDescription": "Cor de fundo (para imagens transparentes)", + "quality": "Qualidade de conversão:", + "qualityDescription": "Valores mais altos = melhor qualidade, tamanho de arquivo maior", + "title": "Configurações de conversão" + }, + "resultTitle": "Imagens WEBP", + "shortDescription": "Converta imagens para o formato WebP com controle de qualidade.", + "title": "Converter imagens para WebP" + } +} diff --git a/public/locales/pt/csv.json b/public/locales/pt/csv.json index a42cc16..a3fb5e8 100644 --- a/public/locales/pt/csv.json +++ b/public/locales/pt/csv.json @@ -116,5 +116,10 @@ "longDescription": "Esta ferramenta transpõe valores separados por vírgula (CSV). Ela trata o CSV como uma matriz de dados e inverte todos os elementos na diagonal principal. A saída contém os mesmos dados CSV que a entrada, mas agora todas as linhas se tornaram colunas e todas as colunas se tornaram linhas. Após a transposição, o arquivo CSV terá dimensões opostas. Por exemplo, se o arquivo de entrada tiver 4 colunas e 3 linhas, o arquivo de saída terá 3 colunas e 4 linhas. Durante a conversão, o programa também limpa os dados de linhas desnecessárias e corrige dados incompletos. Especificamente, a ferramenta exclui automaticamente todos os registros e comentários vazios que começam com um caractere específico, que você pode definir na opção. Além disso, nos casos em que os dados CSV são corrompidos ou perdidos, o utilitário completa o arquivo com campos vazios ou campos personalizados que podem ser especificados nas opções. CSV-abulous!", "shortDescription": "Transponha rapidamente um arquivo CSV.", "title": "Transpor CSV" + }, + "tsvToJson": { + "description": "Converta dados TSV (Valores Separados por Tabulação) para o formato JSON. Transforme dados tabulares em objetos JSON estruturados.", + "shortDescription": "Converter TSV para o formato JSON", + "title": "TSV para JSON" } } diff --git a/public/locales/pt/image.json b/public/locales/pt/image.json index 723a269..d53f8af 100644 --- a/public/locales/pt/image.json +++ b/public/locales/pt/image.json @@ -1,6 +1,6 @@ { "changeColors": { - "description": "Mundo", + "description": "Substitua cores selecionadas em uma imagem por novas cores de forma rapida e precisa.", "shortDescription": "Troque cores rapidamente em uma imagem", "title": "Alterar cores na imagem" }, @@ -33,13 +33,8 @@ "shortDescription": "Converta rapidamente suas imagens JPG para PNG", "title": "Converter JPG para PNG" }, - "convertToJpg": { - "description": "Converta vários formatos de imagem (PNG, GIF, TIF, PSD, SVG, WEBP, HEIC, RAW) para JPG com configurações personalizáveis de qualidade e cor de fundo.", - "shortDescription": "Converta imagens para JPG com controle de qualidade", - "title": "Converter imagens para JPG" - }, "createTransparent": { - "description": "Mundo", + "description": "Torne o fundo de uma imagem transparente removendo a cor escolhida.", "shortDescription": "Tornar uma imagem transparente rapidamente", "title": "Criar PNG transparente" }, @@ -66,7 +61,7 @@ "title": "Gerador de código QR" }, "removeBackground": { - "description": "Mundo", + "description": "Remova automaticamente o fundo de uma imagem e mantenha o assunto principal com transparencia.", "shortDescription": "Remover fundos de imagens automaticamente", "title": "Remover fundo da imagem" }, diff --git a/public/locales/pt/json.json b/public/locales/pt/json.json index 99a4521..a6c15f8 100644 --- a/public/locales/pt/json.json +++ b/public/locales/pt/json.json @@ -46,11 +46,6 @@ "shortDescription": "Converter objetos em string JSON", "title": "Stringify JSON" }, - "tsvToJson": { - "description": "Converta dados TSV (Valores Separados por Tabulação) para o formato JSON. Transforme dados tabulares em objetos JSON estruturados.", - "shortDescription": "Converter TSV para o formato JSON", - "title": "TSV para JSON" - }, "validateJson": { "description": "Verifique se JSON é válido e bem formado.", "inputTitle": "Entrada JSON", diff --git a/public/locales/pt/list.json b/public/locales/pt/list.json index 18248cb..5c5226b 100644 --- a/public/locales/pt/list.json +++ b/public/locales/pt/list.json @@ -113,37 +113,6 @@ "trimItemsDescription": "Remova os espaços iniciais e finais antes de comparar itens.", "uniqueItemOptions": "Opções de itens exclusivos" }, - "group": { - "deleteEmptyItems": "Excluir itens vazios", - "deleteEmptyItemsDescription": "Ignore itens vazios e não os inclua nos grupos.", - "description": "O utilitário baseado em navegador mais simples do mundo para agrupar itens de lista. Insira sua lista e especifique critérios de agrupamento para organizar os itens em grupos lógicos. Perfeito para categorizar dados, organizar informações ou criar listas estruturadas. Suporta separadores personalizados e diversas opções de agrupamento.", - "emptyItemsAndPadding": "Itens vazios e preenchimento", - "groupNumberDescription": "Número de itens em um grupo", - "groupSeparatorDescription": "Caractere separador de grupo", - "groupSizeAndSeparators": "Tamanho do grupo e separadores", - "inputItemSeparator": "Separador de itens de entrada", - "inputTitle": "Lista de entrada", - "itemSeparatorDescription": "Caractere separador de itens", - "leftWrapDescription": "Símbolo de envoltório esquerdo do grupo.", - "padNonFullGroups": "Grupos não completos", - "padNonFullGroupsDescription": "Preencha grupos não completos com um item personalizado (insira abaixo).", - "paddingCharDescription": "Use este caractere ou item para preencher grupos não completos.", - "resultTitle": "Itens agrupados", - "rightWrapDescription": "Símbolo de envoltório direito do grupo.", - "shortDescription": "Agrupar itens da lista por propriedades comuns", - "splitOperators": { - "regex": { - "description": "Delimite itens da lista de entrada com uma expressão regular.", - "title": "Use um Regex para Divisão" - }, - "symbol": { - "description": "Delimitar itens da lista de entrada com um caractere.", - "title": "Use um símbolo para dividir" - } - }, - "splitSeparatorDescription": "Defina um símbolo delimitador ou uma expressão regular.", - "title": "Grupo" - }, "reverse": { "description": "Este é um aplicativo super simples baseado em navegador que imprime todos os itens da lista em ordem inversa. Os itens de entrada podem ser separados por qualquer símbolo e você também pode alterar o separador dos itens da lista em ordem inversa.", "inputTitle": "Lista de entrada", diff --git a/public/locales/pt/pdf.json b/public/locales/pt/pdf.json index 2689460..92cacac 100644 --- a/public/locales/pt/pdf.json +++ b/public/locales/pt/pdf.json @@ -21,6 +21,11 @@ "shortDescription": "Compacte arquivos PDF com segurança no seu navegador", "title": "Comprimir PDF" }, + "convertToPdf": { + "description": "Converter vários formatos de imagem (PNG, GIF, JPG, TIF, PSD, SVG, WEBP, HEIC, RAW) em PDF, com opções para redimensionar a imagem e escolher a orientação da página.", + "shortDescription": "Converter imagens em PDF com controle de escala e orientação", + "title": "Imagens para PDF" + }, "editor": { "description": "Editor de PDF avançado com recursos de anotação, preenchimento de formulários, destaque e exportação. Edite seus PDFs diretamente no navegador com ferramentas de nível profissional, incluindo inserção de texto, desenho, destaque, assinatura e preenchimento de formulários.", "shortDescription": "Edite PDFs com ferramentas avançadas de anotação, assinatura e edição", @@ -81,8 +86,8 @@ "longDescription": "Altere a orientação das páginas do PDF girando-as 90, 180 ou 270 graus. Útil para corrigir documentos digitalizados incorretamente ou preparar PDFs para impressão.", "pageRangesDescription": "Insira números de página ou intervalos separados por vírgulas (por exemplo, 1,3,5-7)", "pageRangesPlaceholder": "por exemplo, 1,5-8", - "pagesWillBeRotated": "{{count}} página{{count !== 1 ? 's' : ''}} será girado", - "pdfPageCount": "PDF tem {{count}} página{{count !== 1 ? 's' : ''}}", + "pagesWillBeRotated": "{{count}} página{{plural}} será girado", + "pdfPageCount": "PDF tem {{count}} página{{plural}}", "resultTitle": "PDF girado", "rotatingPages": "Páginas rotativas", "rotationAngle": "Ângulo de rotação", @@ -98,11 +103,11 @@ "description": "Extraia páginas específicas de um documento PDF.", "extractingPages": "Extraindo páginas", "inputTitle": "PDF de entrada", - "pageExtractionPreview": "{{count}} página{{count !== 1 ? 's' : ''}} será extraído", + "pageExtractionPreview": "{{count}} página{{ plural }} será extraído", "pageRangesDescription": "Insira números de página ou intervalos separados por vírgulas (por exemplo, 1,3,5-7)", "pageRangesPlaceholder": "por exemplo, 1,5-8", "pageSelection": "Seleção de página", - "pdfPageCount": "PDF tem {{count}} página{{count !== 1 ? 's' : ''}}", + "pdfPageCount": "PDF tem {{count}} página{{plural}}", "resultTitle": "PDF extraído", "shortDescription": "Extrair páginas específicas de um arquivo PDF", "title": "Dividir PDF", diff --git a/public/locales/pt/pl.json b/public/locales/pt/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/public/locales/pt/pl.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/pt/time.json b/public/locales/pt/time.json index 9fb5b64..f34f9d3 100644 --- a/public/locales/pt/time.json +++ b/public/locales/pt/time.json @@ -61,22 +61,27 @@ "convertUnixToDate": { "addUtcLabel": "Adicionar sufixo 'UTC'", "addUtcLabelDescription": "Exibir 'UTC' após a data convertida (somente para o modo UTC)", - "description": "Converta um registro de data e hora Unix em uma data legível por humanos.", + "date-to-unix": "Data → Unix", + "description": "Converta registros de data e hora Unix em datas legíveis e converta datas formatadas de volta para registros de data e hora Unix (em ambas as direções).", + "optionsTitle": "Modo de conversão", "outputOptions": "Opções de saída", - "shortDescription": "Converter registro de data e hora Unix em data", - "title": "Converter Unix para Data", + "shortDescription": "Converta registros de data e hora Unix e datas em ambas as direções.", + "title": "Converter Unix ↔ Data", "toolInfo": { - "description": "Esta ferramenta converte um registro de data e hora Unix (em segundos) em um formato de data legível (por exemplo, AAAA-MM-DD HH:MM:SS). Ela suporta saída local e UTC, o que a torna útil para interpretar rapidamente registros de data e hora de logs, APIs ou sistemas que utilizam o horário Unix.", - "title": "Converter Unix para Data" + "description": "Esta ferramenta converte registros de data e hora Unix (em segundos) em formatos de data legíveis para humanos, como AAAA-MM-DD HH:MM:SS, e também converte datas formatadas de volta para registros de data e hora Unix. Você pode escolher saída UTC, saída de fuso horário local ou fornecer um deslocamento UTC personalizado (por exemplo: AAAA-MM-DD HH:MM:SS +XX:XX). Se nenhum deslocamento for fornecido e o fuso horário local não estiver selecionado, UTC (+00:00) será usado por padrão.", + "title": "Converter Unix ↔ Data" }, + "tzOptions": "Opções de fuso horário", + "unix-to-date": "Unix → Data", "useLocalTime": "Usar hora local", "useLocalTimeDescription": "Mostrar a data convertida no seu fuso horário local em vez de UTC", - "withLabel": "Opções" + "useUTC": "Usar UTC" }, "crontabGuru": { - "description": "Gere e compreenda expressões cron. Crie agendamentos cron para tarefas automatizadas e trabalhos do sistema.", - "shortDescription": "Gerar e compreender expressões cron", - "title": "Guru Crontab" + "title": "Crontab Guru", + "description": "Analise e explique expressões cron em português. Entenda instantaneamente o que qualquer agendamento cron faz, valide a sintaxe e processe múltiplas expressões de uma vez.", + "shortDescription": "Analise e explique expressões cron em linguagem simples", + "longDescription": "O Crontab Guru é um analisador e validador de expressões cron que traduz a sintaxe complexa do cron em descrições claras e legíveis. Seja para agendar backups automáticos, tarefas de manutenção do sistema ou pipelines de CI/CD, esta ferramenta ajuda-o a perceber exatamente quando os seus trabalhos serão executados. Suporta expressões cron padrão de 5 campos, valida a sintaxe em tempo real e processa múltiplas expressões de uma vez — uma por linha. Disponível em inglês, francês, espanhol, alemão, japonês, chinês, português, neerlandês e russo." }, "timeBetweenDates": { "description": "Calcule a diferença de tempo entre duas datas. Obtenha a duração exata em dias, horas, minutos e segundos.", diff --git a/public/locales/pt/translation.json b/public/locales/pt/translation.json index 0dbf4be..fecd11e 100644 --- a/public/locales/pt/translation.json +++ b/public/locales/pt/translation.json @@ -225,13 +225,10 @@ "loading": "Carregando... Isso pode demorar um momento.", "result": "Resultado" }, - "toolMultipleAudioInput": { + "toolMultipleInput": { "inputTitle": "Entrada {{type}}", - "noFilesSelected": "Nenhum arquivo selecionado" - }, - "toolMultiplePdfInput": { - "inputTitle": "Entrada {{type}}", - "noFilesSelected": "Nenhum arquivo selecionado" + "noFilesSelected": "Nenhum ficheiro selecionado", + "deleteFile": "Eliminar ficheiro" }, "toolOptions": { "title": "Opções de ferramentas" diff --git a/public/locales/ru/converters.json b/public/locales/ru/converters.json new file mode 100644 index 0000000..7119ee2 --- /dev/null +++ b/public/locales/ru/converters.json @@ -0,0 +1,26 @@ +{ + "audioConverter": { + "description": "Преобразуйте аудиофайлы между различными форматами.", + "inputTitle": "Аудиовход", + "longDescription": "Этот инструмент позволяет конвертировать аудиофайлы из одного формата в другой, поддерживая широкий диапазон аудиоформатов для безперебойного преобразования.", + "outputFormat": "Формат вывода", + "outputFormatDescription": "Выберите желаемый формат выходного аудио", + "outputTitle": "Преобразованное аудио", + "shortDescription": "Преобразуйте аудиофайлы в различные форматы.", + "title": "Аудиоконвертер" + }, + "convertToWebp": { + "description": "Преобразуйте различные форматы изображений в формат WebP с настраиваемыми параметрами качества и цвета фона.", + "failedToConvert": "Ошибка при преобразовании изображения (изображений) в WebP. Пожалуйста, попробуйте еще раз.", + "inputTitle": "Входные изображения", + "options": { + "colorDescription": "Цвет фона (для прозрачных изображений)", + "quality": "Качество преобразования:", + "qualityDescription": "Более высокие значения = лучшее качество, больший размер файла", + "title": "Параметры преобразования" + }, + "resultTitle": "Изображения WEBP", + "shortDescription": "Конвертируйте изображения в формат WebP с контролем качества.", + "title": "Преобразовать изображения в WebP" + } +} diff --git a/public/locales/ru/csv.json b/public/locales/ru/csv.json index 65cdc6c..9cb30c1 100644 --- a/public/locales/ru/csv.json +++ b/public/locales/ru/csv.json @@ -116,5 +116,10 @@ "longDescription": "Этот инструмент транспонирует данные, разделенные запятыми (CSV). Он обрабатывает CSV как матрицу данных и переворачивает все элементы по главной диагонали. Выходные данные содержат те же данные CSV, что и входные, но теперь все строки стали столбцами, а все столбцы — строками. После транспонирования CSV-файл будет иметь противоположные размеры. Например, если входной файл содержит 4 столбца и 3 строки, выходной файл будет содержать 3 столбца и 4 строки. Во время преобразования программа также очищает данные от ненужных строк и исправляет неполные данные. В частности, инструмент автоматически удаляет все пустые записи и комментарии, начинающиеся с определенного символа, который можно задать в настройках. Кроме того, в случае повреждения или потери данных CSV-файла утилита дополняет файл пустыми полями или пользовательскими полями, которые можно указать в настройках. CSV-abulous!", "shortDescription": "Быстро транспонируйте CSV-файл.", "title": "Транспонировать CSV" + }, + "tsvToJson": { + "description": "Преобразуйте данные TSV (значения, разделенные табуляцией) в формат JSON. Преобразуйте табличные данные в структурированные объекты JSON.", + "shortDescription": "Конвертировать формат TSV в JSON", + "title": "TSV в JSON" } } diff --git a/public/locales/ru/image.json b/public/locales/ru/image.json index 3c130e2..f2fd05a 100644 --- a/public/locales/ru/image.json +++ b/public/locales/ru/image.json @@ -1,6 +1,6 @@ { "changeColors": { - "description": "Мир", + "description": "Быстро и точно заменяйте выбранные цвета на изображении новыми цветами.", "shortDescription": "Быстро поменяйте цвета на изображении", "title": "Изменить цвета на изображении" }, @@ -33,13 +33,8 @@ "shortDescription": "Быстро конвертируйте изображения JPG в PNG", "title": "Конвертировать JPG в PNG" }, - "convertToJpg": { - "description": "Конвертируйте различные форматы изображений (PNG, GIF, TIF, PSD, SVG, WEBP, HEIC, RAW) в JPG с настраиваемыми параметрами качества и цвета фона.", - "shortDescription": "Конвертируйте изображения в JPG с контролем качества", - "title": "Конвертировать изображения в JPG" - }, "createTransparent": { - "description": "Мир", + "description": "Сделайте фон изображения прозрачным, удалив выбранный цвет.", "shortDescription": "Быстро сделать изображение прозрачным", "title": "Создать прозрачный PNG" }, @@ -66,7 +61,7 @@ "title": "Генератор QR-кода" }, "removeBackground": { - "description": "Мир", + "description": "Автоматически удалите фон изображения и сохраните основной объект на прозрачном фоне.", "shortDescription": "Автоматически удалять фоны с изображений", "title": "Удалить фон из изображения" }, diff --git a/public/locales/ru/json.json b/public/locales/ru/json.json index 6d64f76..63238a7 100644 --- a/public/locales/ru/json.json +++ b/public/locales/ru/json.json @@ -46,11 +46,6 @@ "shortDescription": "Преобразование объектов в строку JSON", "title": "Строкификация JSON" }, - "tsvToJson": { - "description": "Преобразуйте данные TSV (значения, разделенные табуляцией) в формат JSON. Преобразуйте табличные данные в структурированные объекты JSON.", - "shortDescription": "Конвертировать формат TSV в JSON", - "title": "TSV в JSON" - }, "validateJson": { "description": "Проверьте корректность и правильность формата JSON.", "inputTitle": "Входной JSON", diff --git a/public/locales/ru/list.json b/public/locales/ru/list.json index 4ea92ee..3131ed5 100644 --- a/public/locales/ru/list.json +++ b/public/locales/ru/list.json @@ -113,37 +113,6 @@ "trimItemsDescription": "Перед сравнением элементов удалите начальные и конечные пробелы.", "uniqueItemOptions": "Уникальные параметры предмета" }, - "group": { - "deleteEmptyItems": "Удалить пустые элементы", - "deleteEmptyItemsDescription": "Игнорируйте пустые элементы и не включайте их в группы.", - "description": "Самая простая в мире браузерная утилита для группировки элементов списка. Введите список и укажите критерии группировки, чтобы организовать элементы в логические группы. Идеально подходит для категоризации данных, организации информации и создания структурированных списков. Поддерживает настраиваемые разделители и различные варианты группировки.", - "emptyItemsAndPadding": "Пустые предметы и заполнение", - "groupNumberDescription": "Количество предметов в группе", - "groupSeparatorDescription": "Символ разделителя групп", - "groupSizeAndSeparators": "Размер группы и разделители", - "inputItemSeparator": "Разделитель входных элементов", - "inputTitle": "Список входных данных", - "itemSeparatorDescription": "Символ разделителя элементов", - "leftWrapDescription": "Символ левого переноса группы.", - "padNonFullGroups": "Группы с неполным заполнением", - "padNonFullGroupsDescription": "Заполните неполные группы пользовательским элементом (введите ниже).", - "paddingCharDescription": "Используйте этот символ или элемент для заполнения неполных групп.", - "resultTitle": "Сгруппированные элементы", - "rightWrapDescription": "Правый символ переноса группы.", - "shortDescription": "Группировать элементы списка по общим свойствам", - "splitOperators": { - "regex": { - "description": "Разделите элементы входного списка с помощью регулярного выражения.", - "title": "Используйте регулярное выражение для разделения" - }, - "symbol": { - "description": "Разделите элементы входного списка символом.", - "title": "Используйте символ для разделения" - } - }, - "splitSeparatorDescription": "Установите разделительный символ или регулярное выражение.", - "title": "Группа" - }, "reverse": { "description": "Это очень простое браузерное приложение, которое выводит все элементы списка в обратном порядке. Элементы ввода можно разделять любым символом, и вы также можете изменить разделитель для элементов перевёрнутого списка.", "inputTitle": "Список входных данных", diff --git a/public/locales/ru/pdf.json b/public/locales/ru/pdf.json index 28d5d04..91cf004 100644 --- a/public/locales/ru/pdf.json +++ b/public/locales/ru/pdf.json @@ -21,6 +21,11 @@ "shortDescription": "Безопасное сжатие PDF-файлов в вашем браузере", "title": "Сжать PDF" }, + "convertToPdf": { + "description": "Преобразовать различные форматы изображений (PNG, GIF, JPG, TIF, PSD, SVG, WEBP, HEIC, RAW) в PDF с возможностью масштабирования изображения и выбора ориентации страницы.", + "shortDescription": "Преобразовать изображения в PDF с управлением масштабом и ориентацией", + "title": "Изображения в PDF" + }, "editor": { "description": "Расширенный редактор PDF с функциями аннотирования, заполнения форм, выделения текста и экспорта. Редактируйте PDF-файлы прямо в браузере с помощью профессиональных инструментов, включая вставку текста, рисование, выделение текста, подписание и заполнение форм.", "shortDescription": "Редактируйте PDF-файлы с помощью расширенных инструментов аннотирования, подписания и редактирования.", @@ -81,8 +86,8 @@ "longDescription": "Измените ориентацию страниц PDF-файла, повернув их на 90, 180 или 270 градусов. Это полезно для исправления неправильно отсканированных документов или подготовки PDF-файлов к печати.", "pageRangesDescription": "Введите номера страниц или диапазоны, разделенные запятыми (например, 1,3,5-7)", "pageRangesPlaceholder": "например, 1,5-8", - "pagesWillBeRotated": "{{count}} страница{{count !== 1 ? 's' : ''}} будет вращаться", - "pdfPageCount": "PDF имеет {{count}} страница{{count !== 1 ? 's' : ''}}", + "pagesWillBeRotated": "{{count}} страница будет вращаться", + "pdfPageCount": "PDF имеет {{count}} страница", "resultTitle": "Повернутый PDF-файл", "rotatingPages": "Ротация страниц", "rotationAngle": "Угол поворота", @@ -98,11 +103,11 @@ "description": "Извлечение определенных страниц из PDF-документа.", "extractingPages": "Извлечение страниц", "inputTitle": "Входной PDF-файл", - "pageExtractionPreview": "{{count}} страница{{count !== 1 ? 's' : ''}} будут извлечены", + "pageExtractionPreview": "{{count}} страница будут извлечены", "pageRangesDescription": "Введите номера страниц или диапазоны, разделенные запятыми (например, 1,3,5-7)", "pageRangesPlaceholder": "например, 1,5-8", "pageSelection": "Выбор страницы", - "pdfPageCount": "PDF имеет {{count}} страница{{count !== 1 ? 's' : ''}}", + "pdfPageCount": "PDF имеет {{count}} страница", "resultTitle": "Извлеченный PDF-файл", "shortDescription": "Извлечь определенные страницы из PDF-файла", "title": "Разделить PDF", diff --git a/public/locales/ru/pl.json b/public/locales/ru/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/public/locales/ru/pl.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/ru/time.json b/public/locales/ru/time.json index 0a53a12..2f6db7c 100644 --- a/public/locales/ru/time.json +++ b/public/locales/ru/time.json @@ -61,22 +61,27 @@ "convertUnixToDate": { "addUtcLabel": "Добавить суффикс «UTC»", "addUtcLabelDescription": "Отображать «UTC» после преобразованной даты (только для режима UTC)", - "description": "Преобразовать временную метку Unix в удобочитаемую дату.", + "date-to-unix": "Дата → Unix", + "description": "Преобразуйте временные метки Unix в читаемые даты и обратно преобразуйте отформатированные даты в временные метки Unix (в обе стороны).", + "optionsTitle": "Режим преобразования", "outputOptions": "Параметры вывода", - "shortDescription": "Преобразовать временную метку Unix в дату", - "title": "Конвертировать Unix в дату", + "shortDescription": "Преобразуйте временные метки Unix и даты в обе стороны.", + "title": "Преобразовать Unix ↔ Дату", "toolInfo": { - "description": "Этот инструмент преобразует временную метку Unix (в секундах) в удобный для восприятия формат даты (например, ГГГГ-ММ-ДД ЧЧ:ММ:СС). Он поддерживает как локальный формат, так и формат UTC, что делает его полезным для быстрой интерпретации временных меток из журналов, API или систем, использующих время Unix.", - "title": "Конвертировать Unix в дату" + "description": "Этот инструмент преобразует временные метки Unix (в секундах) в удобный для восприятия формат даты, такой как ГГГГ-ММ-ДД ЧЧ:ММ:СС, и также преобразует отформатированные даты обратно в временные метки Unix. Вы можете выбрать вывод UTC, вывод местного часового пояса или предоставить пользовательский смещение UTC (например: ГГГГ-ММ-ДД ЧЧ:ММ:СС +XX:XX). Если смещение не предоставлено и местный часовой пояс не выбран, по умолчанию используется UTC (+00:00).", + "title": "Преобразовать Unix ↔ Дату" }, + "tzOptions": "Параметры часового пояса", + "unix-to-date": "Unix → Дата", "useLocalTime": "Использовать местное время", "useLocalTimeDescription": "Показывать преобразованную дату в вашем местном часовом поясе вместо UTC", - "withLabel": "Параметры" + "useUTC": "Использовать UTC" }, "crontabGuru": { - "description": "Генерируйте и анализируйте выражения cron. Создавайте расписания cron для автоматизированных задач и системных заданий.", - "shortDescription": "Генерация и понимание выражений cron", - "title": "Crontab Гуру" + "title": "Crontab Guru", + "description": "Разбирайте и объясняйте cron-выражения на русском языке. Мгновенно понимайте, что делает любое cron-расписание, проверяйте синтаксис и обрабатывайте несколько выражений одновременно.", + "shortDescription": "Разбор и объяснение cron-выражений простым языком", + "longDescription": "Crontab Guru — это парсер и валидатор cron-выражений, который переводит сложный синтаксис cron в понятные человеку описания. Независимо от того, планируете ли вы автоматическое резервное копирование, задачи обслуживания системы или CI/CD-пайплайны, этот инструмент поможет вам точно понять, когда будут выполняться ваши задания. Поддерживает стандартные 5-польные cron-выражения, проверяет синтаксис в реальном времени и обрабатывает несколько выражений одновременно — по одному на строку. Доступно на английском, французском, испанском, немецком, японском, китайском, португальском, нидерландском и русском языках." }, "timeBetweenDates": { "description": "Рассчитайте разницу во времени между двумя датами. Получите точную продолжительность в днях, часах, минутах и секундах.", diff --git a/public/locales/ru/translation.json b/public/locales/ru/translation.json index 7a79aa8..90fdc26 100644 --- a/public/locales/ru/translation.json +++ b/public/locales/ru/translation.json @@ -225,13 +225,10 @@ "loading": "Загрузка... Это может занять некоторое время.", "result": "Результат" }, - "toolMultipleAudioInput": { - "inputTitle": "Вход {{type}}", - "noFilesSelected": "Файлы не выбраны." - }, - "toolMultiplePdfInput": { - "inputTitle": "Вход {{type}}", - "noFilesSelected": "Файлы не выбраны." + "toolMultipleInput": { + "inputTitle": "Ввод {{type}}", + "noFilesSelected": "Файлы не выбраны", + "deleteFile": "Удалить файл" }, "toolOptions": { "title": "Параметры инструмента" diff --git a/public/locales/zh/converters.json b/public/locales/zh/converters.json new file mode 100644 index 0000000..fb86fdb --- /dev/null +++ b/public/locales/zh/converters.json @@ -0,0 +1,26 @@ +{ + "audioConverter": { + "description": "在不同格式之间转换音频文件。", + "inputTitle": "音频输入", + "longDescription": "此工具允许您将音频文件从一种格式转换为另一种格式,支持多种音频格式的无缝转换。", + "outputFormat": "输出格式", + "outputFormatDescription": "选择所需的输出音频格式", + "outputTitle": "转换后的音频", + "shortDescription": "将音频文件转换为各种格式。", + "title": "音频转换器" + }, + "convertToWebp": { + "description": "使用可自定义的质量和背景颜色设置将各种图像格式转换为 WebP 格式。", + "failedToConvert": "将图像转换为 WebP 失败。请重试。", + "inputTitle": "输入图像", + "options": { + "colorDescription": "背景颜色(用于透明图像)", + "quality": "转换质量:", + "qualityDescription": "值越高 = 质量越好,文件大小越大", + "title": "转换设置" + }, + "resultTitle": "WEBP 图像", + "shortDescription": "使用质量控制将图像转换为 WebP 格式。", + "title": "将图像转换为 WebP" + } +} diff --git a/public/locales/zh/csv.json b/public/locales/zh/csv.json index 766f007..73358ba 100644 --- a/public/locales/zh/csv.json +++ b/public/locales/zh/csv.json @@ -116,5 +116,10 @@ "longDescription": "此工具用于转置逗号分隔值 (CSV)。它将 CSV 视为数据矩阵,并将所有元素沿主对角线翻转。输出包含与输入相同的 CSV 数据,但现在所有行都变成了列,所有列都变成了行。转置后,CSV 文件的尺寸将相反。例如,如果输入文件有 4 列 3 行,则输出文件将有 3 列 4 行。在转换过程中,程序还会清除数据中不必要的行,并更正不完整的数据。具体来说,该工具会自动删除所有以特定字符开头的空记录和注释,您可以在选项中设置这些字符。此外,如果 CSV 数据损坏或丢失,该实用程序会使用空字段或自定义字段(可在选项中指定)来填充文件。CSV 真是太棒了!", "shortDescription": "快速转置 CSV 文件。", "title": "转置 CSV" + }, + "tsvToJson": { + "description": "将 TSV(制表符分隔值)数据转换为 JSON 格式。将表格数据转换为结构化的 JSON 对象。", + "shortDescription": "将 TSV 转换为 JSON 格式", + "title": "TSV 到 JSON" } } diff --git a/public/locales/zh/image.json b/public/locales/zh/image.json index 6e06298..dc1887c 100644 --- a/public/locales/zh/image.json +++ b/public/locales/zh/image.json @@ -1,6 +1,6 @@ { "changeColors": { - "description": "世界", + "description": "快速准确地将图像中的选定颜色替换为新颜色。", "shortDescription": "快速交换图像中的颜色", "title": "改变图像的颜色" }, @@ -33,13 +33,8 @@ "shortDescription": "快速将您的 JPG 图像转换为 PNG", "title": "JPG 转换为 PNG" }, - "convertToJpg": { - "description": "将各种图像格式(PNG、GIF、TIF、PSD、SVG、WEBP、HEIC、RAW)转换为 JPG,并可自定义质量和背景颜色设置。", - "shortDescription": "将图像转换为 JPG 格式并进行质量控制", - "title": "将图像转换为 JPG" - }, "createTransparent": { - "description": "世界", + "description": "通过移除所选颜色,使图像背景变为透明。", "shortDescription": "快速使图像透明", "title": "创建透明 PNG" }, @@ -66,7 +61,7 @@ "title": "二维码生成器" }, "removeBackground": { - "description": "世界", + "description": "自动移除图像背景,并保留主体为透明背景。", "shortDescription": "自动删除图像的背景", "title": "从图像中删除背景" }, diff --git a/public/locales/zh/json.json b/public/locales/zh/json.json index de961e4..cf30288 100644 --- a/public/locales/zh/json.json +++ b/public/locales/zh/json.json @@ -46,11 +46,6 @@ "shortDescription": "将对象转换为 JSON 字符串", "title": "字符串化 JSON" }, - "tsvToJson": { - "description": "将 TSV(制表符分隔值)数据转换为 JSON 格式。将表格数据转换为结构化的 JSON 对象。", - "shortDescription": "将 TSV 转换为 JSON 格式", - "title": "TSV 到 JSON" - }, "validateJson": { "description": "检查 JSON 是否有效且格式正确。", "inputTitle": "输入 JSON", diff --git a/public/locales/zh/list.json b/public/locales/zh/list.json index b6f45af..73eec8f 100644 --- a/public/locales/zh/list.json +++ b/public/locales/zh/list.json @@ -113,37 +113,6 @@ "trimItemsDescription": "比较项目之前删除前导和尾随空格。", "uniqueItemOptions": "独特物品选项" }, - "group": { - "deleteEmptyItems": "删除空项目", - "deleteEmptyItemsDescription": "忽略空项目并且不要将它们包含在组中。", - "description": "世界上最简单的基于浏览器的列表项分组工具。输入您的列表并指定分组条件,即可将项目按逻辑分组。非常适合分类数据、组织信息或创建结构化列表。支持自定义分隔符和各种分组选项。", - "emptyItemsAndPadding": "空项目和填充", - "groupNumberDescription": "组中项目的数量", - "groupSeparatorDescription": "组分隔符", - "groupSizeAndSeparators": "组大小和分隔符", - "inputItemSeparator": "输入项分隔符", - "inputTitle": "输入列表", - "itemSeparatorDescription": "项目分隔符", - "leftWrapDescription": "组的左换行符号。", - "padNonFullGroups": "填充非满组", - "padNonFullGroupsDescription": "使用自定义项目(在下面输入)填充非完整组。", - "paddingCharDescription": "使用此字符或项目来填充非完整组。", - "resultTitle": "分组项目", - "rightWrapDescription": "组的右换行符号。", - "shortDescription": "按共同属性对列表项进行分组", - "splitOperators": { - "regex": { - "description": "使用正则表达式分隔输入列表项。", - "title": "使用正则表达式进行拆分" - }, - "symbol": { - "description": "用字符分隔输入列表项。", - "title": "使用符号进行拆分" - } - }, - "splitSeparatorDescription": "设置分隔符号或正则表达式。", - "title": "团体" - }, "reverse": { "description": "这是一个基于浏览器的超级简单的应用程序,可以反向打印所有列表项。输入项可以用任意符号分隔,并且您还可以更改反向列表项的分隔符。", "inputTitle": "输入列表", diff --git a/public/locales/zh/pdf.json b/public/locales/zh/pdf.json index 1e3d400..db67fdb 100644 --- a/public/locales/zh/pdf.json +++ b/public/locales/zh/pdf.json @@ -21,6 +21,11 @@ "shortDescription": "在浏览器中安全地压缩 PDF 文件", "title": "压缩PDF" }, + "convertToPdf": { + "description": "将各种图像格式(PNG, GIF, JPG, TIF, PSD, SVG, WEBP, HEIC, RAW)转换为 PDF,并可调整图像大小和页面方向。", + "shortDescription": "将图像转换为 PDF,可调整大小和方向", + "title": "将图像转换为 PDF" + }, "editor": { "description": "高级 PDF 编辑器,具备注释、表单填写、高亮显示和导出功能。您可以使用专业级工具(包括文本插入、绘图、高亮显示、签名和表单填写)直接在浏览器中编辑 PDF。", "shortDescription": "使用高级注释、签名和编辑工具编辑 PDF", @@ -81,8 +86,8 @@ "longDescription": "通过将 PDF 页面旋转 90 度、180 度或 270 度来更改其方向。这对于修复扫描错误的文档或准备打印 PDF 非常有用。", "pageRangesDescription": "输入页码或范围,以逗号分隔(例如,1,3,5-7)", "pageRangesPlaceholder": "例如,1.5-8", - "pagesWillBeRotated": "{{count}} 页{{count !== 1 ? 's' : ''}} 将会轮换", - "pdfPageCount": "PDF 有 {{count}} 页{{count !== 1 ? 's' : ''}}", + "pagesWillBeRotated": "{{count}} 页 将会轮换", + "pdfPageCount": "PDF 有 {{count}} 页", "resultTitle": "旋转的 PDF", "rotatingPages": "旋转页面", "rotationAngle": "旋转角度", @@ -98,11 +103,11 @@ "description": "从 PDF 文档中提取特定页面。", "extractingPages": "提取页面", "inputTitle": "输入 PDF", - "pageExtractionPreview": "{{count}} 页{{count !== 1 ? 's' : ''}} 将被提取", + "pageExtractionPreview": "{{count}} 页 将被提取", "pageRangesDescription": "输入页码或范围,以逗号分隔(例如,1,3,5-7)", "pageRangesPlaceholder": "例如,1.5-8", "pageSelection": "页面选择", - "pdfPageCount": "PDF 有 {{count}} 页{{count !== 1 ? 's' : ''}}", + "pdfPageCount": "PDF 有 {{count}} 页", "resultTitle": "提取的 PDF", "shortDescription": "从 PDF 文件中提取特定页面", "title": "拆分 PDF", diff --git a/public/locales/zh/pl.json b/public/locales/zh/pl.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/public/locales/zh/pl.json @@ -0,0 +1 @@ +{} diff --git a/public/locales/zh/string.json b/public/locales/zh/string.json index 195c226..89593c6 100644 --- a/public/locales/zh/string.json +++ b/public/locales/zh/string.json @@ -276,6 +276,22 @@ }, "truncationSide": "截断侧" }, + "unicode": { + "caseOptionsTitle": "大小写选项", + "decode": "解码", + "description": "将文本转换为 Unicode 转义序列,或将其解码回可读文本。", + "encode": "编码", + "inputTitle": "输入", + "optionsTitle": "模式", + "resultTitle": "处理结果", + "shortDescription": "使用 Unicode 转义序列对文本进行编码或解码。", + "title": "Unicode 编码器 / 解码器", + "toolInfo": { + "description": "此工具可让您将纯文本转换为 Unicode 转义序列(例如,\\uXXXX),以及将 Unicode 转义序列解码回标准文本。您还可以选择编码时十六进制输出以大写或小写格式显示。", + "title": "Unicode 编码器 / 解码器" + }, + "uppercase": "大写十六进制" + }, "uppercase": { "description": "将文本转换为大写字母。", "inputTitle": "输入文本", diff --git a/public/locales/zh/time.json b/public/locales/zh/time.json index 2494425..c61a434 100644 --- a/public/locales/zh/time.json +++ b/public/locales/zh/time.json @@ -47,6 +47,12 @@ "title": "什么是 {{title}}?" } }, + "convertTimeToDecimal": { + "description": "将格式化的时间长度(HH:MM:SS)转换为小数小时值。", + "longDescription": "将格式化的时间字符串(HH:MM:SS 或 HH:MM)转换为其等效的小数小时值。小时可以是任意正数,而分钟和秒接受 0-59 之间的值,可以是一位或两位数字(例如,'12:5' 或 '12:05')。此函数解析小时、分钟和秒,然后将总时长计算为单一小数值。它适用于生产力追踪、薪资计算、按时计费、数据分析,或任何需要将人类可读时间转换为易于求和、比较或处理的数值格式的工作流程。例如,'03:26:00' 转换为 3.43 小时,'12:5' 转换为 12.08 小时。", + "shortDescription": "把时段转化为小数小时值", + "title": "把时间转换至十进制格式" + }, "convertTimeToSeconds": { "description": "将格式化的时间(HH:MM:SS)转换为秒。", "inputTitle": "输入时间", @@ -59,24 +65,56 @@ } }, "convertUnixToDate": { - "addUtcLabel": "添加“UTC”后缀", - "addUtcLabelDescription": "转换后的日期后显示“UTC”(仅适用于 UTC 模式)", - "description": "将 Unix 时间戳转换为人类可读的日期。", + "addUtcLabel": "添加 \"UTC\" 后缀", + "addUtcLabelDescription": "在转换的日期后显示 \"UTC\"(仅限 UTC 模式)", + "date-to-unix": "日期 → Unix", + "description": "将 Unix 时间戳转换为可读日期,并将格式化日期转换回 Unix 时间戳(双向转换)。", + "optionsTitle": "转换模式", "outputOptions": "输出选项", - "shortDescription": "将 Unix 时间戳转换为日期", - "title": "将 Unix 转换为日期", + "shortDescription": "双向转换 Unix 时间戳和日期。", + "title": "转换 Unix ↔ 日期", "toolInfo": { - "description": "此工具可将 Unix 时间戳(以秒为单位)转换为人类可读的日期格式(例如 YYYY-MM-DD HH:MM:SS)。它支持本地和 UTC 输出,因此可用于快速解释来自日志、API 或使用 Unix 时间的系统的时间戳。", - "title": "将 Unix 转换为日期" + "description": "此工具将 Unix 时间戳(以秒为单位)转换为人类可读的日期格式(例如,YYYY-MM-DD HH:MM:SS),并将格式化日期转换回 Unix 时间戳。您可以选择 UTC 输出、本地时区输出,或提供自定义 UTC 偏移(例如,YYYY-MM-DD HH:MM:SS +XX:XX)。如果未提供偏移且未选择本地时区,则默认使用 UTC (+00:00)。", + "title": "转换 Unix ↔ 日期" }, - "useLocalTime": "使用当地时间", - "useLocalTimeDescription": "显示以当地时区而非 UTC 转换的日期", - "withLabel": "选项" + "tzOptions": "时区选项", + "unix-to-date": "Unix → 日期", + "useLocalTime": "使用本地时间", + "useLocalTimeDescription": "显示使用本地时区而非 UTC 转换的日期", + "useUTC": "使用 UTC" }, "crontabGuru": { - "description": "生成并理解 cron 表达式。为自动化任务和系统作业创建 cron 计划。", - "shortDescription": "生成并理解 cron 表达式", - "title": "Crontab 大师" + "title": "Crontab Guru", + "description": "用中文解析和解释 cron 表达式。即时了解任何 cron 计划的作用,验证语法,并一次处理多个表达式。", + "shortDescription": "用简单语言解析和解释 cron 表达式", + "longDescription": "Crontab Guru 是一个 cron 表达式解析器和验证器,可将复杂的 cron 语法转换为清晰易读的描述。无论您是在安排自动备份、系统维护任务还是 CI/CD 流水线,此工具都能帮助您准确了解您的任务何时运行。支持标准的 5 字段 cron 表达式,实时验证语法,并一次处理多个表达式——每行一个。支持英语、法语、西班牙语、德语、日语、中文、葡萄牙语、荷兰语和俄语。" + }, + "discordTimestamp": { + "description": "将日期和时间转换为 Discord 的特殊时间戳格式,自动适应每位用户的本地时区和语言", + "formats": { + "description": "选择时间戳在 Discord 中的显示方式 — 悬停在每个选项上可查看示例", + "long_date": "长日期(例:2025年1月1日)", + "long_datetime": "长日期和时间(例:2025年1月1日 星期一 14:30)", + "long_time": "长时间(例:14:30:00)", + "relative": "相对时间(例:2小时前)", + "short_date": "短日期(例:01/01/2025)", + "short_datetime": "短日期和时间(例:2025年1月1日 14:30)", + "short_time": "短时间(例:14:30)", + "title": "时间戳格式" + }, + "inputTitle": "输入日期时间", + "name": "Discord 时间戳生成器", + "outputTitle": "Discord 时间戳", + "shortDescription": "从日期生成 Discord 时间戳", + "toolInfo": { + "description": "Discord 时间戳是一种动态显示日期和时间的特殊语法。它不显示固定时间,而是自动转换为每位查看者的本地时区和语言 — 让每个人都能看到适合其所在位置的正确时间。只需每行输入一个日期时间,选择格式,然后将结果直接粘贴到 Discord 中。该工具独立处理每一行 — 空行在输出中保留,无效行以 ❌ 标记,有效的日期时间即时转换。启用 UTC 模式可确保结果不受本地时区影响。", + "title": "什么是 Discord 时间戳?" + }, + "utc": { + "description": "将输入的日期时间视为 UTC。禁用则使用您的本地时区", + "label": "强制使用 UTC", + "title": "输入选项" + } }, "timeBetweenDates": { "description": "计算两个日期之间的时差。获取精确的天、小时、分钟和秒数。", diff --git a/public/locales/zh/translation.json b/public/locales/zh/translation.json index ce34027..82f83c9 100644 --- a/public/locales/zh/translation.json +++ b/public/locales/zh/translation.json @@ -22,6 +22,10 @@ "description": "处理音频的工具——从视频中提取音频、调整音频速度、合并多个音频文件等等。", "title": "音频工具" }, + "converters": { + "description": "用于在不同格式之间转换数据的工具 — 转换图片、音频、视频、文本等。", + "title": "转换工具" + }, "csv": { "description": "处理 CSV 文件的工具 - 将 CSV 转换为不同的格式、操作 CSV 数据、验证 CSV 结构以及有效地处理 CSV 文件。", "title": "CSV 工具" @@ -225,13 +229,10 @@ "loading": "正在加载...这可能需要一点时间。", "result": "结果" }, - "toolMultipleAudioInput": { + "toolMultipleInput": { "inputTitle": "输入 {{type}}", - "noFilesSelected": "未选择任何文件" - }, - "toolMultiplePdfInput": { - "inputTitle": "输入 {{type}}", - "noFilesSelected": "未选择任何文件" + "noFilesSelected": "未选择任何文件", + "deleteFile": "删除文件" }, "toolOptions": { "title": "工具选项" diff --git a/src/@types/i18n.d.ts b/src/@types/i18n.d.ts index a0554fa..12a45a6 100644 --- a/src/@types/i18n.d.ts +++ b/src/@types/i18n.d.ts @@ -12,6 +12,7 @@ import pdf from '../../public/locales/en/pdf.json'; import audio from '../../public/locales/en/audio.json'; import xml from '../../public/locales/en/xml.json'; import image from '../../public/locales/en/image.json'; +import converters from '../../public/locales/en/converters.json'; declare module 'i18next' { interface CustomTypeOptions { @@ -28,6 +29,7 @@ declare module 'i18next' { audio: typeof audio; xml: typeof xml; image: typeof image; + converters: typeof converters; }; } } diff --git a/src/components/Hero.tsx b/src/components/Hero.tsx index 0404216..b239787 100644 --- a/src/components/Hero.tsx +++ b/src/components/Hero.tsx @@ -150,6 +150,8 @@ export default function Hero() { sx={{ mb: 2 }} autoHighlight options={filteredTools} + // Disable default MUI filtering since we already apply custom filterTools + filterOptions={(options) => options} groupBy={(option) => option.type} renderGroup={(params) => { return ( diff --git a/src/components/input/BaseFileInput.tsx b/src/components/input/BaseFileInput.tsx index 6502e6c..f1bb7f5 100644 --- a/src/components/input/BaseFileInput.tsx +++ b/src/components/input/BaseFileInput.tsx @@ -115,6 +115,14 @@ export default function BaseFileInput({ setIsDragging(false); }; + const handleClear = () => { + onChange(null); + setPreview(null); + if (fileInputRef.current) { + fileInputRef.current.value = ''; + } + }; + useEffect(() => { const handlePaste = (event: ClipboardEvent) => { const clipboardItems = event.clipboardData?.items ?? []; @@ -208,7 +216,11 @@ export default function BaseFileInput({ )} - + { accept?: string[]; } +const AUDIO_ACCEPT_TYPES = [ + 'audio/*', + ...Object.keys(AUDIO_FORMATS).map((format) => `.${format}`) +]; + export default function ToolAudioInput({ - accept = ['audio/*', '.mp3', '.wav', '.aac'], + accept = AUDIO_ACCEPT_TYPES, ...props }: AudioFileInputProps) { const audioRef = useRef(null); diff --git a/src/components/input/ToolMultipleAudioInput.tsx b/src/components/input/ToolMultipleAudioInput.tsx index f6729cc..e1682e7 100644 --- a/src/components/input/ToolMultipleAudioInput.tsx +++ b/src/components/input/ToolMultipleAudioInput.tsx @@ -1,11 +1,10 @@ -import { ReactNode, useContext, useEffect, useRef, useState } from 'react'; -import { Box, useTheme } from '@mui/material'; +import { useRef } from 'react'; +import { Box, IconButton, Tooltip, useTheme } from '@mui/material'; import Typography from '@mui/material/Typography'; import InputHeader from '../InputHeader'; import InputFooter from './InputFooter'; -import { CustomSnackBarContext } from '../../contexts/CustomSnackBarContext'; -import { isArray } from 'lodash'; import MusicNoteIcon from '@mui/icons-material/MusicNote'; +import ClearIcon from '@mui/icons-material/Clear'; import { useTranslation } from 'react-i18next'; interface MultiAudioInputComponentProps { @@ -31,7 +30,6 @@ export default function ToolMultipleAudioInput({ const { t } = useTranslation(); const theme = useTheme(); const fileInputRef = useRef(null); - const { showSnackBar } = useContext(CustomSnackBarContext); const handleFileChange = (event: React.ChangeEvent) => { const files = event.target.files; @@ -99,7 +97,7 @@ export default function ToolMultipleAudioInput({ - - - - {fileNameTruncate(file.file.name)} - - - { - const updatedFiles = value.filter((_, i) => i !== index); - onChange(updatedFiles); - }} - > - ✖ - + + + + + {fileNameTruncate(file.file.name)} + + + + + { + const updatedFiles = value.filter((_, i) => i !== index); + onChange(updatedFiles); + }} + > + + + )) ) : ( - {t('toolMultipleAudioInput.noFilesSelected')} + {t('toolMultipleInput.noFilesSelected')} )} diff --git a/src/components/input/ToolMultipleImageInput.tsx b/src/components/input/ToolMultipleImageInput.tsx new file mode 100644 index 0000000..6804caa --- /dev/null +++ b/src/components/input/ToolMultipleImageInput.tsx @@ -0,0 +1,207 @@ +import React, { useRef } from 'react'; +import { Box } from '@mui/material'; +import Typography from '@mui/material/Typography'; +import InputHeader from '../InputHeader'; +import InputFooter from './InputFooter'; +import ImageIcon from '@mui/icons-material/Image'; +import { useTranslation } from 'react-i18next'; +import { heicTo, isHeic } from 'heic-to'; + +interface MultiImageInputComponentProps { + accept: string[]; + title?: string; + type: 'image'; + value: MultiImageInput[]; + onChange: (files: MultiImageInput[]) => void; +} + +export interface MultiImageInput { + file: File; + order: number; + preview?: string; +} + +export default function ToolMultiImageInput({ + value, + onChange, + accept, + title, + type +}: MultiImageInputComponentProps) { + const { t } = useTranslation(); + const fileInputRef = useRef(null); + + const handleFileChange = async ( + event: React.ChangeEvent + ) => { + const files = event.target.files; + if (!files) return; + + const newFiles: MultiImageInput[] = await Promise.all( + Array.from(files).map(async (file, index) => { + let processedFile = file; + + try { + if (await isHeic(file)) { + const convertedBlob = await heicTo({ + blob: file, + type: 'image/jpeg' + }); + + processedFile = new File( + [convertedBlob], + file.name.replace(/\.[^/.]+$/, '') + '.jpg', + { type: 'image/jpeg' } + ); + } + } catch (err) { + console.warn('HEIC conversion failed:', file.name, err); + } + + return { + file: processedFile, + order: value.length + index, + preview: URL.createObjectURL(processedFile) + }; + }) + ); + + onChange([...value, ...newFiles]); + + event.target.value = ''; + }; + + const handleImportClick = () => { + fileInputRef.current?.click(); + }; + + function handleClear() { + value.forEach((f) => { + if (f.preview) URL.revokeObjectURL(f.preview); + }); + onChange([]); + } + + function handleRemove(index: number) { + const fileToRemove = value[index]; + if (fileToRemove?.preview) { + URL.revokeObjectURL(fileToRemove.preview); + } + + const updatedFiles = value.filter((_, i) => i !== index); + onChange(updatedFiles); + } + + function fileNameTruncate(fileName: string) { + const maxLength = 10; + return fileName.length > maxLength + ? fileName.slice(0, maxLength) + '...' + : fileName; + } + + return ( + + + + + {value?.length ? ( + value.map((file, index) => ( + + {file.preview ? ( + + ) : ( + + )} + + + {fileNameTruncate(file.file.name)} + + handleRemove(index)} + > + ✖ + + + + )) + ) : ( + + {t('toolMultipleInput.noFilesSelected')} + + )} + + + + + + + ); +} diff --git a/src/components/input/ToolMultiplePdfInput.tsx b/src/components/input/ToolMultiplePdfInput.tsx index 67f874f..304d28f 100644 --- a/src/components/input/ToolMultiplePdfInput.tsx +++ b/src/components/input/ToolMultiplePdfInput.tsx @@ -1,10 +1,9 @@ -import { ReactNode, useContext, useEffect, useRef, useState } from 'react'; -import { Box, useTheme } from '@mui/material'; +import { useRef } from 'react'; +import { Box, IconButton, Tooltip, useTheme } from '@mui/material'; import Typography from '@mui/material/Typography'; import InputHeader from '../InputHeader'; import InputFooter from './InputFooter'; -import { CustomSnackBarContext } from '../../contexts/CustomSnackBarContext'; -import { isArray } from 'lodash'; +import ClearIcon from '@mui/icons-material/Clear'; import PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf'; import { useTranslation } from 'react-i18next'; @@ -31,7 +30,6 @@ export default function ToolMultiFileInput({ const { t } = useTranslation(); const theme = useTheme(); const fileInputRef = useRef(null); - const { showSnackBar } = useContext(CustomSnackBarContext); const handleFileChange = (event: React.ChangeEvent) => { const files = event.target.files; @@ -65,7 +63,6 @@ export default function ToolMultiFileInput({ }; const reorderList = (sourceIndex: number, destinationIndex: number) => { - console.log(sourceIndex, destinationIndex); if (destinationIndex === sourceIndex) { return; } @@ -100,7 +97,7 @@ export default function ToolMultiFileInput({ - - - - {fileNameTruncate(file.file.name)} - - - { - const updatedFiles = value.filter((_, i) => i !== index); - onChange(updatedFiles); - }} - > - ✖ - + + + + + {fileNameTruncate(file.file.name)} + + + + + { + const updatedFiles = value.filter((_, i) => i !== index); + onChange(updatedFiles); + }} + > + + + )) ) : ( - {t('toolMultiplePdfInput.noFilesSelected')} + {t('toolMultipleInput.noFilesSelected')} )} diff --git a/src/components/input/ToolMultipleVideoInput.tsx b/src/components/input/ToolMultipleVideoInput.tsx index 9f42b8a..d861df1 100644 --- a/src/components/input/ToolMultipleVideoInput.tsx +++ b/src/components/input/ToolMultipleVideoInput.tsx @@ -1,11 +1,11 @@ -import { ReactNode, useContext, useEffect, useRef, useState } from 'react'; -import { Box, useTheme } from '@mui/material'; +import { useRef } from 'react'; +import { Box, IconButton, Tooltip } from '@mui/material'; import Typography from '@mui/material/Typography'; import InputHeader from '../InputHeader'; import InputFooter from './InputFooter'; -import { CustomSnackBarContext } from '../../contexts/CustomSnackBarContext'; -import { isArray } from 'lodash'; import VideoFileIcon from '@mui/icons-material/VideoFile'; +import ClearIcon from '@mui/icons-material/Clear'; +import { useTranslation } from 'react-i18next'; interface MultiVideoInputComponentProps { accept: string[]; @@ -27,13 +27,11 @@ export default function ToolMultipleVideoInput({ title, type }: MultiVideoInputComponentProps) { - console.log('ToolMultipleVideoInput rendering with value:', value); - + const { t } = useTranslation(); const fileInputRef = useRef(null); const handleFileChange = (event: React.ChangeEvent) => { const files = event.target.files; - console.log('File change event:', files); if (files) onChange([ ...value, @@ -42,12 +40,10 @@ export default function ToolMultipleVideoInput({ }; const handleImportClick = () => { - console.log('Import clicked'); fileInputRef.current?.click(); }; function handleClear() { - console.log('Clear clicked'); onChange([]); } @@ -98,7 +94,12 @@ export default function ToolMultipleVideoInput({ return ( - - - - {fileNameTruncate(file.file.name)} - - - { - const updatedFiles = value.filter((_, i) => i !== index); - onChange(updatedFiles); - }} - > - ✖ - + + + + + {fileNameTruncate(file.file.name)} + + + + + { + const updatedFiles = value.filter((_, i) => i !== index); + onChange(updatedFiles); + }} + > + + + )) ) : ( - No files selected + {t('toolMultipleInput.noFilesSelected')} )} diff --git a/src/components/input/file-input-utils.ts b/src/components/input/file-input-utils.ts index e4c54f3..177bbf2 100644 --- a/src/components/input/file-input-utils.ts +++ b/src/components/input/file-input-utils.ts @@ -1,6 +1,6 @@ export interface BaseFileInputProps { value: File | null; - onChange: (file: File) => void; + onChange: (file: File | null) => void; accept: string[]; title?: string; } diff --git a/src/components/options/CheckboxWithDesc.tsx b/src/components/options/CheckboxWithDesc.tsx index e991c3a..8b02598 100644 --- a/src/components/options/CheckboxWithDesc.tsx +++ b/src/components/options/CheckboxWithDesc.tsx @@ -19,7 +19,7 @@ const CheckboxWithDesc = ({ }; return ( - + = ({ }; return ( - + = ({ onChange={handleColorChange} /> - + {description} diff --git a/src/components/options/RadioWithTextField.tsx b/src/components/options/RadioWithTextField.tsx index 75da087..2992b4d 100644 --- a/src/components/options/RadioWithTextField.tsx +++ b/src/components/options/RadioWithTextField.tsx @@ -22,7 +22,7 @@ const RadioWithTextField = ({ radioDescription?: string; }) => { return ( - + ({ }; return ( - +