mirror of
https://github.com/iib0011/omni-tools.git
synced 2025-09-20 14:39:34 +02:00
fix: i18n tsc
This commit is contained in:
76
.idea/workspace.xml
generated
76
.idea/workspace.xml
generated
@@ -4,67 +4,29 @@
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="b30e2810-c4c1-4aad-b134-794e52cc1c7d" name="Changes" comment="fix: misc">
|
||||
<change afterPath="$PROJECT_DIR$/@types/i18n.d.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
|
||||
<list default="true" id="b30e2810-c4c1-4aad-b134-794e52cc1c7d" name="Changes" comment="fix: i18n tsc">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/App.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/App.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/i18n/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/i18n/index.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/audio/change-speed/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/audio/change-speed/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/audio/extract-audio/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/audio/extract-audio/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/csv/csv-to-json/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/csv/csv-to-json/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/ToolLayout.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/ToolLayout.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/audio/i18n/en.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/audio/i18n/en.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/csv/find-incomplete-csv-records/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/csv/find-incomplete-csv-records/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/csv/i18n/en.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/csv/i18n/en.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/csv/insert-csv-columns/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/csv/insert-csv-columns/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/image/generic/resize/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/image/generic/resize/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/json/minify/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/json/minify/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/json/prettify/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/json/prettify/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/json/validateJson/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/json/validateJson/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/list/duplicate/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/list/duplicate/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/list/find-unique/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/list/find-unique/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/list/group/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/list/group/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/list/i18n/en.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/list/i18n/en.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/list/reverse/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/list/reverse/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/list/shuffle/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/list/shuffle/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/list/sort/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/list/sort/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/list/wrap/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/list/wrap/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/number/arithmetic-sequence/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/number/arithmetic-sequence/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/number/generate/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/number/generate/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/number/i18n/en.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/number/i18n/en.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/number/sum/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/number/sum/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/pdf/compress-pdf/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/pdf/compress-pdf/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/pdf/i18n/en.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/pdf/i18n/en.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/pdf/merge-pdf/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/pdf/merge-pdf/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/pdf/rotate-pdf/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/pdf/rotate-pdf/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/pdf/split-pdf/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/pdf/split-pdf/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/base64/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/base64/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/i18n/en.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/i18n/en.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/join/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/join/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/quote/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/quote/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/repeat/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/repeat/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/reverse/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/reverse/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/rot13/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/rot13/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/rotate/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/rotate/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/split/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/split/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/statistic/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/statistic/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/text-replacer/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/text-replacer/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/to-morse/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/to-morse/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/truncate/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/truncate/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/string/uppercase/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/string/uppercase/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/time/check-leap-years/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/time/check-leap-years/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/time/convert-days-to-hours/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/time/convert-days-to-hours/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/time/convert-seconds-to-time/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/time/convert-seconds-to-time/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/time/convert-time-to-seconds/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/time/convert-time-to-seconds/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/time/time-between-dates/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/time/time-between-dates/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/time/i18n/en.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/time/i18n/en.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/time/truncate-clock-time/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/time/truncate-clock-time/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/video/change-speed/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/video/change-speed/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/video/compress/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/video/compress/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/video/crop-video/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/video/crop-video/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/video/flip/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/video/flip/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/video/i18n/en.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/video/i18n/en.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/video/loop/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/video/loop/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/video/rotate/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/video/rotate/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/video/trim/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/video/trim/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/xml/xml-beautifier/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/xml/xml-beautifier/index.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/pages/tools/xml/xml-validator/index.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/tools/xml/xml-validator/index.tsx" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -566,15 +528,7 @@
|
||||
<workItem from="1752077170501" duration="4261000" />
|
||||
<workItem from="1752127185450" duration="1168000" />
|
||||
<workItem from="1752157409587" duration="2415000" />
|
||||
<workItem from="1752403829295" duration="4023000" />
|
||||
</task>
|
||||
<task id="LOCAL-00170" summary="chore: show new tools in landing">
|
||||
<option name="closed" value="true" />
|
||||
<created>1743051792459</created>
|
||||
<option name="number" value="00170" />
|
||||
<option name="presentableId" value="LOCAL-00170" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1743051792459</updated>
|
||||
<workItem from="1752403829295" duration="8019000" />
|
||||
</task>
|
||||
<task id="LOCAL-00171" summary="chore: zoom on hover">
|
||||
<option name="closed" value="true" />
|
||||
@@ -960,7 +914,15 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1752402313191</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="219" />
|
||||
<task id="LOCAL-00219" summary="fix: i18n tsc">
|
||||
<option name="closed" value="true" />
|
||||
<created>1752408068771</created>
|
||||
<option name="number" value="00219" />
|
||||
<option name="presentableId" value="LOCAL-00219" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1752408068771</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="220" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
@@ -1469,7 +1431,6 @@
|
||||
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
|
||||
<option name="CHECK_NEW_TODO" value="false" />
|
||||
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
||||
<MESSAGE value="fix: add mkv to supported videos" />
|
||||
<MESSAGE value="feat: drag and drop" />
|
||||
<MESSAGE value="Merge branch 'feat/pdf-merge' of git-rohit:rohit267/omni-tools into feat/pdf-merge" />
|
||||
<MESSAGE value="chore: revert create-tool.mjs" />
|
||||
@@ -1494,7 +1455,8 @@
|
||||
<MESSAGE value="refactor: PDF editor" />
|
||||
<MESSAGE value="docs: edit pdf meta" />
|
||||
<MESSAGE value="fix: misc" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="fix: misc" />
|
||||
<MESSAGE value="fix: i18n tsc" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="fix: i18n tsc" />
|
||||
</component>
|
||||
<component name="VgoProject">
|
||||
<integration-enabled>false</integration-enabled>
|
||||
|
@@ -31,8 +31,10 @@ export default function ToolLayout({
|
||||
const { t } = useTranslation();
|
||||
|
||||
// Use i18n keys if available, otherwise fall back to provided strings
|
||||
const toolTitle = i18n ? t(i18n.name) : title;
|
||||
const toolDescription = i18n ? t(i18n.description) : description;
|
||||
//@ts-ignore
|
||||
const toolTitle: string = i18n ? t(i18n.name) : title;
|
||||
//@ts-ignore
|
||||
const toolDescription: string = i18n ? t(i18n.description) : description;
|
||||
|
||||
const otherCategoryTools =
|
||||
getToolsByCategory()
|
||||
|
@@ -1,17 +1,4 @@
|
||||
{
|
||||
"changeSpeed": {
|
||||
"title": "Change Audio Speed",
|
||||
"description": "Change the playback speed of audio files.",
|
||||
"inputTitle": "Input Audio",
|
||||
"resultTitle": "Modified Audio",
|
||||
"speedOptions": "Speed Options",
|
||||
"speedDescription": "Speed multiplier (0.5 = half speed, 2.0 = double speed)",
|
||||
"speedPlaceholder": "Speed",
|
||||
"toolInfo": {
|
||||
"title": "Change audio speed",
|
||||
"description": "This tool allows you to change the playback speed of audio files. You can slow down or speed up audio while maintaining pitch quality."
|
||||
}
|
||||
},
|
||||
"extractAudio": {
|
||||
"title": "Extract Audio from Video",
|
||||
"description": "Extract audio track from video files.",
|
||||
@@ -24,5 +11,17 @@
|
||||
"title": "What is {{title}}?",
|
||||
"description": "This tool allows you to extract the audio track from video files. You can choose from different audio formats including AAC, MP3, and WAV."
|
||||
}
|
||||
},
|
||||
"changeSpeed": {
|
||||
"newAudioSpeed": "New Audio Speed",
|
||||
"speedDescription": "Default multiplier: 2 means 2x faster",
|
||||
"outputFormat": "Output Format",
|
||||
"inputTitle": "Input Audio",
|
||||
"settingSpeed": "Setting Speed",
|
||||
"resultTitle": "Edited Audio",
|
||||
"toolInfo": {
|
||||
"title": "What is {{title}}?",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -123,22 +123,20 @@ export default function FindIncompleteCsvRecords({
|
||||
<TextFieldWithDesc
|
||||
value={values.csvSeparator}
|
||||
onOwnChange={(val) => updateField('csvSeparator', val)}
|
||||
description={t(
|
||||
'csv:findIncompleteCsvRecords.csvSeparatorDescription'
|
||||
)}
|
||||
description={t('findIncompleteCsvRecords.csvSeparatorDescription')}
|
||||
/>
|
||||
<TextFieldWithDesc
|
||||
value={values.quoteCharacter}
|
||||
onOwnChange={(val) => updateField('quoteCharacter', val)}
|
||||
description={t(
|
||||
'csv:findIncompleteCsvRecords.quoteCharacterDescription'
|
||||
'findIncompleteCsvRecords.quoteCharacterDescription'
|
||||
)}
|
||||
/>
|
||||
<TextFieldWithDesc
|
||||
value={values.commentCharacter}
|
||||
onOwnChange={(val) => updateField('commentCharacter', val)}
|
||||
description={t(
|
||||
'csv:findIncompleteCsvRecords.commentCharacterDescription'
|
||||
'findIncompleteCsvRecords.commentCharacterDescription'
|
||||
)}
|
||||
/>
|
||||
</Box>
|
||||
@@ -153,7 +151,7 @@ export default function FindIncompleteCsvRecords({
|
||||
onChange={(value) => updateField('emptyLines', value)}
|
||||
title={t('findIncompleteCsvRecords.deleteLinesWithNoData')}
|
||||
description={t(
|
||||
'csv:findIncompleteCsvRecords.deleteLinesWithNoDataDescription'
|
||||
'findIncompleteCsvRecords.deleteLinesWithNoDataDescription'
|
||||
)}
|
||||
/>
|
||||
|
||||
@@ -162,7 +160,7 @@ export default function FindIncompleteCsvRecords({
|
||||
onChange={(value) => updateField('emptyValues', value)}
|
||||
title={t('findIncompleteCsvRecords.findEmptyValues')}
|
||||
description={t(
|
||||
'csv:findIncompleteCsvRecords.findEmptyValuesDescription'
|
||||
'findIncompleteCsvRecords.findEmptyValuesDescription'
|
||||
)}
|
||||
/>
|
||||
|
||||
@@ -179,7 +177,7 @@ export default function FindIncompleteCsvRecords({
|
||||
type="number"
|
||||
inputProps={{ min: 1 }}
|
||||
description={t(
|
||||
'csv:findIncompleteCsvRecords.messageLimitDescription'
|
||||
'findIncompleteCsvRecords.messageLimitDescription'
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
|
@@ -1,34 +1,4 @@
|
||||
{
|
||||
"csvToJson": {
|
||||
"title": "CSV to JSON",
|
||||
"description": "Convert CSV data to JSON format.",
|
||||
"inputTitle": "Input CSV",
|
||||
"resultTitle": "JSON Output",
|
||||
"csvOptions": "CSV Options",
|
||||
"separatorDescription": "Character used to separate columns",
|
||||
"quoteCharDescription": "Character used to quote fields",
|
||||
"commentCharDescription": "Character that indicates comment lines",
|
||||
"jsonOptions": "JSON Options",
|
||||
"prettyPrintDescription": "Format JSON with indentation",
|
||||
"toolInfo": {
|
||||
"title": "CSV to JSON Converter",
|
||||
"description": "This tool allows you to convert CSV (Comma-Separated Values) data to JSON format. You can customize the CSV parsing options and JSON output format."
|
||||
}
|
||||
},
|
||||
"findIncompleteCsvRecords": {
|
||||
"title": "Find Incomplete CSV Records",
|
||||
"description": "Identify CSV records with missing or incomplete data.",
|
||||
"inputTitle": "Input CSV",
|
||||
"resultTitle": "Incomplete Records",
|
||||
"csvOptions": "CSV Options",
|
||||
"separatorDescription": "Character used to separate columns",
|
||||
"quoteCharDescription": "Character used to quote fields",
|
||||
"commentCharDescription": "Character that indicates comment lines",
|
||||
"toolInfo": {
|
||||
"title": "Find Incomplete CSV Records",
|
||||
"description": "This tool helps you identify CSV records that have missing or incomplete data. It's useful for data validation and cleaning."
|
||||
}
|
||||
},
|
||||
"insertCsvColumns": {
|
||||
"title": "Insert CSV Columns",
|
||||
"description": "Add new columns to CSV data at specified positions.",
|
||||
@@ -59,5 +29,43 @@
|
||||
"title": "Insert CSV Columns",
|
||||
"description": "This tool allows you to insert new columns into CSV data at specified positions. You can prepend, append, or insert columns at custom positions based on header names or column numbers."
|
||||
}
|
||||
},
|
||||
"csvToJson": {
|
||||
"inputTitle": "Input CSV",
|
||||
"resultTitle": "Output JSON",
|
||||
|
||||
"inputCsvFormat": "Input CSV Format",
|
||||
"columnSeparator": "Column Separator (e.g., , ; \\t)",
|
||||
"fieldQuote": "Field Quote (e.g., \")",
|
||||
"commentSymbol": "Comment Symbol (e.g., #)",
|
||||
|
||||
"conversionOptions": "Conversion Options",
|
||||
"useHeaders": "Use Headers",
|
||||
"useHeadersDescription": "Treat the first row as column headers",
|
||||
"skipEmptyLines": "Skip Empty Lines",
|
||||
"skipEmptyLinesDescription": "Ignore empty lines in the input CSV",
|
||||
"dynamicTypes": "Dynamic Types",
|
||||
"dynamicTypesDescription": "Automatically convert numbers and booleans",
|
||||
|
||||
"errorParsing": "Error parsing CSV: {{error}}"
|
||||
},
|
||||
"findIncompleteCsvRecords": {
|
||||
"title": "Find Incomplete CSV Records",
|
||||
"inputTitle": "Input CSV",
|
||||
"resultTitle": "CSV Status",
|
||||
"toolInfo": {
|
||||
"title": "What is a {{title}}?"
|
||||
},
|
||||
"csvInputOptions": "CSV Input Options",
|
||||
"csvSeparatorDescription": "Enter the character used to delimit columns in the CSV input file.",
|
||||
"quoteCharacterDescription": "Enter the quote character used to quote the CSV input fields.",
|
||||
"commentCharacterDescription": "Enter the character indicating the start of a comment line. Lines starting with this symbol will be skipped.",
|
||||
"checkingOptions": "Checking Options",
|
||||
"deleteLinesWithNoData": "Delete Lines with No Data",
|
||||
"deleteLinesWithNoDataDescription": "Remove empty lines from CSV input file.",
|
||||
"findEmptyValues": "Find Empty Values",
|
||||
"findEmptyValuesDescription": "Display a message about CSV fields that are empty (These are not missing fields but fields that contain nothing).",
|
||||
"limitNumberOfMessages": "Limit number of messages",
|
||||
"messageLimitDescription": "Set the limit of number of messages in the output."
|
||||
}
|
||||
}
|
||||
|
@@ -247,7 +247,7 @@ export default function InsertCsvColumns({
|
||||
]}
|
||||
onChange={(value) => updateField('customPostionOptions', value)}
|
||||
description={t(
|
||||
'csv:insertCsvColumns.customPositionOptionsDescription'
|
||||
'insertCsvColumns.customPositionOptionsDescription'
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
|
@@ -99,10 +99,8 @@ export default function FindUnique({ title }: ToolComponentProps) {
|
||||
<SimpleRadio
|
||||
key={type}
|
||||
onClick={() => updateField('splitOperatorType', type)}
|
||||
title={t(`list.group.splitOperators.${type}.title`)}
|
||||
description={t(
|
||||
`list.group.splitOperators.${type}.description`
|
||||
)}
|
||||
title={t(`group.splitOperators.${type}.title`)}
|
||||
description={t(`group.splitOperators.${type}.description`)}
|
||||
checked={values.splitOperatorType === type}
|
||||
/>
|
||||
))}
|
||||
|
@@ -1,17 +1,4 @@
|
||||
{
|
||||
"reverse": {
|
||||
"title": "Reverse List",
|
||||
"description": "Reverse the order of items in a list.",
|
||||
"inputTitle": "Input list",
|
||||
"resultTitle": "Reversed list",
|
||||
"reverseOptions": "Reverse Options",
|
||||
"reverseEachLine": "Reverse Each Line",
|
||||
"reverseEachLineDescription": "Reverse each line separately instead of the entire list",
|
||||
"toolInfo": {
|
||||
"title": "Reverse List",
|
||||
"description": "This tool allows you to reverse the order of items in a list. You can reverse the entire list or each line separately."
|
||||
}
|
||||
},
|
||||
"findUnique": {
|
||||
"title": "Find Unique",
|
||||
"inputTitle": "Input List",
|
||||
@@ -29,19 +16,6 @@
|
||||
"caseSensitiveItems": "Case Sensitive Items",
|
||||
"caseSensitiveItemsDescription": "Output items with different case as unique elements in the list."
|
||||
},
|
||||
"shuffle": {
|
||||
"title": "Shuffle List",
|
||||
"description": "Randomly shuffle the order of list items.",
|
||||
"inputTitle": "Input list",
|
||||
"resultTitle": "Shuffled list",
|
||||
"shuffleOptions": "Shuffle Options",
|
||||
"shuffleEachLine": "Shuffle Each Line",
|
||||
"shuffleEachLineDescription": "Shuffle each line separately instead of the entire list",
|
||||
"toolInfo": {
|
||||
"title": "Shuffle List",
|
||||
"description": "This tool allows you to randomly shuffle the order of items in a list. You can shuffle the entire list or each line separately."
|
||||
}
|
||||
},
|
||||
"wrap": {
|
||||
"title": "Wrap List",
|
||||
"description": "Add text before and after each list item.",
|
||||
@@ -159,5 +133,39 @@
|
||||
"description": "This example shows how to duplicate a list with a fractional number of copies."
|
||||
}
|
||||
}
|
||||
},
|
||||
"reverse": {
|
||||
"toolInfo": {
|
||||
"title": "What Is a List Reverser?",
|
||||
"description": "With this utility, you can reverse the order of items in a list. The utility first splits the input list into individual items and then iterates through them from the last item to the first item, printing each item to the output during the iteration. The input list may contain anything that can be represented as textual data, which includes digits, numbers, strings, words, sentences, etc. The input item separator can also be a regular expression. For example, the regex /[;,]/ will allow you to use items that are either comma- or semicolon-separated. The input and output list items delimiters can be customized in the options. By default, both input and output lists are comma-separated. Listabulous!"
|
||||
},
|
||||
"splitterMode": "Splitter Mode",
|
||||
"itemSeparator": "Item Separator",
|
||||
"itemSeparatorDescription": "Set a delimiting symbol or regular expression.",
|
||||
"outputListOptions": "Output List Options",
|
||||
"outputSeparatorDescription": "Output list item separator.",
|
||||
"inputTitle": "Input list",
|
||||
"resultTitle": "Reversed list",
|
||||
"splitOperators": {
|
||||
"symbol": {
|
||||
"title": "Use a Symbol for Splitting",
|
||||
"description": "Delimit input list items with a character."
|
||||
},
|
||||
"regex": {
|
||||
"title": "Use a Regex for Splitting",
|
||||
"description": "Delimit input list items with a regular expression."
|
||||
}
|
||||
}
|
||||
},
|
||||
"shuffle": {
|
||||
"title": "Shuffle",
|
||||
"inputTitle": "Input list",
|
||||
"resultTitle": "Shuffled list",
|
||||
"inputListSeparator": "Input list separator",
|
||||
"delimiterDescription": "Set a delimiting symbol or regular expression.",
|
||||
"shuffledListLength": "Shuffled List Length",
|
||||
"outputLengthDescription": "Output this many random items",
|
||||
"shuffledListSeparator": "Shuffled List Separator",
|
||||
"joinSeparatorDescription": "Use this separator in the randomized list."
|
||||
}
|
||||
}
|
||||
|
@@ -128,8 +128,8 @@ export default function Reverse({ title }: ToolComponentProps) {
|
||||
<SimpleRadio
|
||||
key={type}
|
||||
onClick={() => updateField('splitOperatorType', type)}
|
||||
title={t(`list.reverse.splitOperators.${type}.title`)}
|
||||
description={t(`list.reverse.splitOperators.${type}.description`)}
|
||||
title={t(`reverse.splitOperators.${type}.title`)}
|
||||
description={t(`reverse.splitOperators.${type}.description`)}
|
||||
checked={values.splitOperatorType === type}
|
||||
/>
|
||||
))}
|
||||
|
@@ -97,25 +97,21 @@ export default function ArithmeticSequence({ title }: ToolComponentProps) {
|
||||
component: (
|
||||
<Box>
|
||||
<TextFieldWithDesc
|
||||
description={t(
|
||||
'number:arithmeticSequence.firstTermDescription'
|
||||
)}
|
||||
description={t('arithmeticSequence.firstTermDescription')}
|
||||
value={values.firstTerm}
|
||||
onOwnChange={(val) => updateField('firstTerm', val)}
|
||||
type="number"
|
||||
/>
|
||||
<TextFieldWithDesc
|
||||
description={t(
|
||||
'number:arithmeticSequence.commonDifferenceDescription'
|
||||
'arithmeticSequence.commonDifferenceDescription'
|
||||
)}
|
||||
value={values.commonDifference}
|
||||
onOwnChange={(val) => updateField('commonDifference', val)}
|
||||
type="number"
|
||||
/>
|
||||
<TextFieldWithDesc
|
||||
description={t(
|
||||
'number:arithmeticSequence.numberOfTermsDescription'
|
||||
)}
|
||||
description={t('arithmeticSequence.numberOfTermsDescription')}
|
||||
value={values.numberOfTerms}
|
||||
onOwnChange={(val) => updateField('numberOfTerms', val)}
|
||||
type="number"
|
||||
|
@@ -1,17 +1,4 @@
|
||||
{
|
||||
"sum": {
|
||||
"title": "Sum Numbers",
|
||||
"description": "Calculate the sum of a list of numbers.",
|
||||
"inputTitle": "Input numbers",
|
||||
"resultTitle": "Sum",
|
||||
"sumOptions": "Sum Options",
|
||||
"ignoreNonNumeric": "Ignore non-numeric values",
|
||||
"ignoreNonNumericDescription": "Skip values that are not numbers",
|
||||
"toolInfo": {
|
||||
"title": "Sum numbers",
|
||||
"description": "This tool allows you to calculate the sum of a list of numbers. You can input numbers separated by various delimiters and get their total sum."
|
||||
}
|
||||
},
|
||||
"generate": {
|
||||
"title": "Generate Numbers",
|
||||
"description": "Generate a sequence of numbers with customizable parameters.",
|
||||
@@ -41,5 +28,27 @@
|
||||
"title": "What is an Arithmetic Sequence?",
|
||||
"description": "An arithmetic sequence is a sequence of numbers where the difference between each consecutive term is constant. This constant difference is called the common difference. Given the first term (a₁) and the common difference (d), each term can be found by adding the common difference to the previous term."
|
||||
}
|
||||
},
|
||||
"sum": {
|
||||
"toolInfo": {
|
||||
"title": "What Is a Number Sum Calculator?",
|
||||
"description": "This is an online browser-based utility for calculating the sum of a bunch of numbers. You can enter the numbers separated by a comma, space, or any other character, including the line break. You can also simply paste a fragment of textual data that contains numerical values that you want to sum up and the utility will extract them and find their sum."
|
||||
},
|
||||
"inputTitle": "Input",
|
||||
"resultTitle": "Total",
|
||||
"numberExtraction": "Number Extraction",
|
||||
"runningSum": "Running Sum",
|
||||
"printRunningSum": "Print Running Sum",
|
||||
"printRunningSumDescription": "Display the sum as it's calculated step by step.",
|
||||
"extractionTypes": {
|
||||
"smart": {
|
||||
"title": "Smart Sum",
|
||||
"description": "Auto detect numbers in the input."
|
||||
},
|
||||
"delimiter": {
|
||||
"title": "Number Delimiter",
|
||||
"description": "Customize the number separator here. (By default a line break.)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -135,9 +135,9 @@ export default function SumNumbers({ title }: ToolComponentProps) {
|
||||
<RadioWithTextField
|
||||
key={type}
|
||||
checked={type === values.extractionType}
|
||||
title={t(`number.sum.extractionTypes.${type}.title`)}
|
||||
title={t(`sum.extractionTypes.${type}.title`)}
|
||||
fieldName={'extractionType'}
|
||||
description={t(`number.sum.extractionTypes.${type}.description`)}
|
||||
description={t(`sum.extractionTypes.${type}.description`)}
|
||||
value={
|
||||
textValueAccessor ? values[textValueAccessor].toString() : ''
|
||||
}
|
||||
@@ -151,8 +151,8 @@ export default function SumNumbers({ title }: ToolComponentProps) {
|
||||
key={title}
|
||||
onClick={() => updateField('extractionType', type)}
|
||||
checked={values.extractionType === type}
|
||||
description={t(`number.sum.extractionTypes.${type}.description`)}
|
||||
title={t(`number.sum.extractionTypes.${type}.title`)}
|
||||
description={t(`sum.extractionTypes.${type}.description`)}
|
||||
title={t(`sum.extractionTypes.${type}.title`)}
|
||||
/>
|
||||
)
|
||||
)
|
||||
|
@@ -78,5 +78,14 @@
|
||||
|
||||
"errorReadingPdf": "Failed to read PDF file. Please make sure it is a valid PDF.",
|
||||
"errorCompressingPdf": "Failed to compress PDF: {{error}}"
|
||||
},
|
||||
"merge": {
|
||||
"inputTitle": "Input PDF",
|
||||
"resultTitle": "Output merged PDF",
|
||||
"loadingText": "Extracting pages",
|
||||
"toolInfo": {
|
||||
"title": "How to Use the Merge PDF Tool?",
|
||||
"description": "This tool allows you to merge multiple PDF files into a single document. To use the tool, simply upload the PDF files you want to merge. The tool will then combine all pages from the input files into a single PDF document."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,15 +5,6 @@
|
||||
"inputTitle": "Input text",
|
||||
"resultTitle": "Uppercase text"
|
||||
},
|
||||
"reverse": {
|
||||
"title": "Reverse Text",
|
||||
"description": "Reverse the order of characters in text.",
|
||||
"inputTitle": "Input text",
|
||||
"resultTitle": "Reversed text",
|
||||
"processMultiLine": "Process as multi-line text (reverse each line separately)",
|
||||
"skipEmptyLines": "Skip empty lines",
|
||||
"trimWhitespace": "Trim whitespace from lines"
|
||||
},
|
||||
"base64": {
|
||||
"title": "Base64 Encoder/Decoder",
|
||||
"description": "Encode or decode text using Base64 encoding.",
|
||||
@@ -67,24 +58,6 @@
|
||||
"description": "This tool allows you to add quotes around text. You can choose different quote characters, handle multi-line text, and control how empty lines are processed. It's useful for preparing text for programming, formatting data, or creating stylized text."
|
||||
}
|
||||
},
|
||||
"split": {
|
||||
"title": "Split Text",
|
||||
"description": "Split text into parts based on various criteria.",
|
||||
"resultTitle": "Text pieces",
|
||||
"splitSeparatorOptions": "Split separator options",
|
||||
"symbolTitle": "Use a Symbol for Splitting",
|
||||
"symbolDescription": "Character that will be used to break text into parts. (Space by default.)",
|
||||
"regexTitle": "Use a Regex for Splitting",
|
||||
"regexDescription": "Regular expression that will be used to break text into parts. (Multiple spaces by default.)",
|
||||
"lengthTitle": "Use Length for Splitting",
|
||||
"lengthDescription": "Number of symbols that will be put in each output chunk.",
|
||||
"chunksTitle": "Use a Number of Chunks",
|
||||
"chunksDescription": "Number of chunks of equal length in the output.",
|
||||
"outputSeparatorOptions": "Output separator options",
|
||||
"outputSeparatorDescription": "Character that will be put between the split chunks. (It's newline \"\\n\" by default.)",
|
||||
"charBeforeChunkDescription": "Character before each chunk",
|
||||
"charAfterChunkDescription": "Character after each chunk"
|
||||
},
|
||||
"join": {
|
||||
"title": "Join Text",
|
||||
"description": "Join text pieces together with customizable separators.",
|
||||
@@ -192,5 +165,32 @@
|
||||
"title": "Text Replacer",
|
||||
"description": "Easily replace specific text in your content with this simple, browser-based tool. Just input your text, set the text you want to replace and the replacement value, and instantly get the updated version."
|
||||
}
|
||||
},
|
||||
"reverse": {
|
||||
"reversalOptions": "Reversal options",
|
||||
"processMultiLine": "Process multi-line text",
|
||||
"processMultiLineDescription": "Each line will be reversed independently",
|
||||
"skipEmptyLines": "Skip empty lines",
|
||||
"skipEmptyLinesDescription": "Empty lines will be removed from the output",
|
||||
"trimWhitespace": "Trim whitespace",
|
||||
"trimWhitespaceDescription": "Remove leading and trailing whitespace from each line",
|
||||
"inputTitle": "Text to reverse",
|
||||
"resultTitle": "Reversed text"
|
||||
},
|
||||
"split": {
|
||||
"resultTitle": "Text pieces",
|
||||
"splitSeparatorOptions": "Split separator options",
|
||||
"symbolTitle": "Use a Symbol for Splitting",
|
||||
"symbolDescription": "Character that will be used to break text into parts.\n(Space by default.)",
|
||||
"regexTitle": "Use a Regex for Splitting",
|
||||
"regexDescription": "Regular expression that will be used to break text into parts.\n(Multiple spaces by default.)",
|
||||
"lengthTitle": "Use Length for Splitting",
|
||||
"lengthDescription": "Number of symbols that will be put in each output chunk.",
|
||||
"chunksTitle": "Use a Number of Chunks",
|
||||
"chunksDescription": "Number of chunks of equal\nlength in the output.",
|
||||
"outputSeparatorOptions": "Output separator options",
|
||||
"outputSeparatorDescription": "Character that will be put between the split chunks.\n(It's newline \"\\n\" by default.)",
|
||||
"charBeforeChunkDescription": "Character before each chunk",
|
||||
"charAfterChunkDescription": "Character after each chunk"
|
||||
}
|
||||
}
|
||||
|
@@ -33,7 +33,7 @@ const mergeOptions = {
|
||||
const blankTrailingOptions: {
|
||||
title: string;
|
||||
description: string;
|
||||
accessor: keyof InitialValuesType;
|
||||
accessor: keyof Omit<InitialValuesType, 'joinCharacter'>;
|
||||
}[] = [
|
||||
{
|
||||
title: 'Delete Blank Lines',
|
||||
@@ -136,10 +136,10 @@ export default function JoinText({ title }: ToolComponentProps) {
|
||||
component: blankTrailingOptions.map((option) => (
|
||||
<CheckboxWithDesc
|
||||
key={option.accessor}
|
||||
title={t(`string.join.${option.accessor}Title`)}
|
||||
title={t(`join.${option.accessor}Title`)}
|
||||
checked={!!values[option.accessor]}
|
||||
onChange={(value) => updateField(option.accessor, value)}
|
||||
description={t(`string.join.${option.accessor}Description`)}
|
||||
description={t(`join.${option.accessor}Description`)}
|
||||
/>
|
||||
))
|
||||
}
|
||||
|
@@ -183,9 +183,9 @@ export default function SplitText({ title }: ToolComponentProps) {
|
||||
<RadioWithTextField
|
||||
key={type}
|
||||
checked={type === values.splitSeparatorType}
|
||||
title={t(`string.split.${type}Title`)}
|
||||
title={t(`split.${type}Title`)}
|
||||
fieldName={'splitSeparatorType'}
|
||||
description={t(`string.split.${type}Description`)}
|
||||
description={t(`split.${type}Description`)}
|
||||
value={values[`${type}Value`]}
|
||||
onRadioClick={() => updateField('splitSeparatorType', type)}
|
||||
onTextChange={(val) => updateField(`${type}Value`, val)}
|
||||
@@ -199,7 +199,8 @@ export default function SplitText({ title }: ToolComponentProps) {
|
||||
key={option.accessor}
|
||||
value={values[option.accessor]}
|
||||
onOwnChange={(value) => updateField(option.accessor, value)}
|
||||
description={t(`string.split.${option.accessor}Description`)}
|
||||
//@ts-ignore
|
||||
description={t(`split.${option.accessor}Description`)}
|
||||
/>
|
||||
))
|
||||
}
|
||||
|
@@ -262,9 +262,7 @@ export default function Truncate({
|
||||
checked={values.characterCount}
|
||||
onChange={(value) => updateField('characterCount', value)}
|
||||
title={t('statistic.characterFrequencyAnalysis')}
|
||||
description={t(
|
||||
'string:statistic.characterFrequencyAnalysisDescription'
|
||||
)}
|
||||
description={t('statistic.characterFrequencyAnalysisDescription')}
|
||||
/>
|
||||
<CheckboxWithDesc
|
||||
checked={values.emptyLines}
|
||||
|
@@ -31,16 +31,6 @@
|
||||
"description": "This tool allows you to convert hours to days. You can input hours as numbers or with units, and the tool will convert them to days. You can also choose to append the 'days' suffix to the output values."
|
||||
}
|
||||
},
|
||||
"convertSecondsToTime": {
|
||||
"title": "Convert Seconds to Time",
|
||||
"description": "Convert seconds to formatted time (HH:MM:SS).",
|
||||
"inputTitle": "Input seconds",
|
||||
"resultTitle": "Time format",
|
||||
"toolInfo": {
|
||||
"title": "Convert Seconds to Time",
|
||||
"description": "This tool allows you to convert seconds to a formatted time string in HH:MM:SS format. It's useful for displaying durations and time intervals."
|
||||
}
|
||||
},
|
||||
"convertTimeToSeconds": {
|
||||
"title": "Convert Time to Seconds",
|
||||
"description": "Convert formatted time (HH:MM:SS) to seconds.",
|
||||
@@ -51,24 +41,47 @@
|
||||
"description": "This tool allows you to convert formatted time strings (HH:MM:SS) to seconds. It's useful for calculating durations and time intervals."
|
||||
}
|
||||
},
|
||||
"truncateClockTime": {
|
||||
"toolInfo": {
|
||||
"title": "What is a {{title}}?"
|
||||
},
|
||||
|
||||
"truncationSide": "Truncation Side",
|
||||
"truncateOnlySeconds": "Truncate Only Seconds",
|
||||
"truncateOnlySecondsDescription": "Drop the seconds component from each clock time.",
|
||||
"truncateMinutesAndSeconds": "Truncate Minutes and Seconds",
|
||||
"truncateMinutesAndSecondsDescription": "Drop both – the minutes and seconds components from each clock time.",
|
||||
|
||||
"printDroppedComponents": "Print Dropped Components",
|
||||
"zeroPrintTruncatedParts": "Zero-print Truncated Parts",
|
||||
"zeroPrintDescription": "Display the dropped parts as zero values \"00\".",
|
||||
|
||||
"timePadding": "Time Padding",
|
||||
"useZeroPadding": "Use Zero Padding",
|
||||
"zeroPaddingDescription": "Make all time components always be two digits wide."
|
||||
},
|
||||
"timeBetweenDates": {
|
||||
"title": "Time Between Dates",
|
||||
"description": "Calculate the time difference between two dates.",
|
||||
"inputTitle": "Input dates",
|
||||
"resultTitle": "Time difference",
|
||||
"toolInfo": {
|
||||
"title": "Time Between Dates",
|
||||
"description": "This tool allows you to calculate the time difference between two dates. You can specify the format and get the result in various units."
|
||||
}
|
||||
"title": "Time Between Dates Calculator",
|
||||
"description": "Calculate the exact time difference between two dates and times, with support for different timezones. This tool provides a detailed breakdown of the time difference in various units (years, months, days, hours, minutes, and seconds)."
|
||||
},
|
||||
"startDateTime": "Start Date & Time",
|
||||
"startDate": "Start Date",
|
||||
"startTime": "Start Time",
|
||||
"startTimezone": "Start Timezone",
|
||||
"endDateTime": "End Date & Time",
|
||||
"endDate": "End Date",
|
||||
"endTime": "End Time",
|
||||
"endTimezone": "End Timezone"
|
||||
},
|
||||
"truncateClockTime": {
|
||||
"title": "Truncate Clock Time",
|
||||
"description": "Remove seconds from time format (HH:MM:SS to HH:MM).",
|
||||
"inputTitle": "Input time",
|
||||
"resultTitle": "Truncated time",
|
||||
"convertSecondsToTime": {
|
||||
"timePadding": "Time Padding",
|
||||
"addPadding": "Add Padding",
|
||||
"addPaddingDescription": "Add zero padding to hours, minutes, and seconds.",
|
||||
"toolInfo": {
|
||||
"title": "Truncate Clock Time",
|
||||
"description": "This tool allows you to remove seconds from time format, converting HH:MM:SS to HH:MM. It's useful for simplifying time displays."
|
||||
"title": "What is a {{title}}?",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -95,16 +95,14 @@ export default function TruncateClockTime({
|
||||
onClick={() => updateField('onlySecond', true)}
|
||||
checked={values.onlySecond}
|
||||
title={t('truncateClockTime.truncateOnlySeconds')}
|
||||
description={t(
|
||||
'time:truncateClockTime.truncateOnlySecondsDescription'
|
||||
)}
|
||||
description={t('truncateClockTime.truncateOnlySecondsDescription')}
|
||||
/>
|
||||
<SimpleRadio
|
||||
onClick={() => updateField('onlySecond', false)}
|
||||
checked={!values.onlySecond}
|
||||
title={t('truncateClockTime.truncateMinutesAndSeconds')}
|
||||
description={t(
|
||||
'time:truncateClockTime.truncateMinutesAndSecondsDescription'
|
||||
'truncateClockTime.truncateMinutesAndSecondsDescription'
|
||||
)}
|
||||
/>
|
||||
</Box>
|
||||
|
@@ -66,7 +66,7 @@ export default function FlipVideo({ title }: ToolComponentProps) {
|
||||
{orientationOptions.map((orientationOption) => (
|
||||
<SimpleRadio
|
||||
key={orientationOption.value}
|
||||
title={t(`video.flip.${orientationOption.value}Label`)}
|
||||
title={t(`flip.${orientationOption.value}Label`)}
|
||||
checked={values.orientation === orientationOption.value}
|
||||
onClick={() => {
|
||||
updateField('orientation', orientationOption.value);
|
||||
|
@@ -1,43 +1,4 @@
|
||||
{
|
||||
"compress": {
|
||||
"title": "Compress Video",
|
||||
"description": "Reduce video file size while maintaining quality.",
|
||||
"inputTitle": "Input Video",
|
||||
"resultTitle": "Compressed Video",
|
||||
"compressionOptions": "Compression Options",
|
||||
"qualityDescription": "Video quality (1-100)",
|
||||
"qualityPlaceholder": "Quality",
|
||||
"toolInfo": {
|
||||
"title": "Video Compression",
|
||||
"description": "This tool allows you to compress video files to reduce their size while maintaining acceptable quality. You can adjust the compression level to balance between file size and video quality."
|
||||
}
|
||||
},
|
||||
"rotate": {
|
||||
"title": "Rotate Video",
|
||||
"description": "Rotate video by specified degrees.",
|
||||
"inputTitle": "Input Video",
|
||||
"resultTitle": "Rotated Video",
|
||||
"rotationOptions": "Rotation Options",
|
||||
"rotationAngleDescription": "Rotation angle in degrees",
|
||||
"anglePlaceholder": "Angle",
|
||||
"toolInfo": {
|
||||
"title": "Video Rotation",
|
||||
"description": "This tool allows you to rotate video files by a specified angle. You can rotate videos by 90, 180, or 270 degrees, or any custom angle."
|
||||
}
|
||||
},
|
||||
"flip": {
|
||||
"title": "Flip Video",
|
||||
"description": "Flip video horizontally or vertically.",
|
||||
"inputTitle": "Input Video",
|
||||
"resultTitle": "Flipped Video",
|
||||
"flipOptions": "Flip Options",
|
||||
"horizontalFlip": "Horizontal Flip",
|
||||
"verticalFlip": "Vertical Flip",
|
||||
"toolInfo": {
|
||||
"title": "Video Flip",
|
||||
"description": "This tool allows you to flip video files horizontally or vertically. Horizontal flip creates a mirror effect, while vertical flip turns the video upside down."
|
||||
}
|
||||
},
|
||||
"loop": {
|
||||
"title": "Loop Video",
|
||||
"description": "Create a looping video by repeating the original video multiple times.",
|
||||
@@ -82,5 +43,42 @@
|
||||
"endTime": "End Time",
|
||||
"inputTitle": "Input Video",
|
||||
"resultTitle": "Trimmed Video"
|
||||
},
|
||||
"changeSpeed": {
|
||||
"newVideoSpeed": "New Video Speed",
|
||||
"defaultMultiplier": "Default multiplier: 2 means 2x faster",
|
||||
"inputTitle": "Input Video",
|
||||
"settingSpeed": "Setting Speed",
|
||||
"resultTitle": "Edited Video",
|
||||
"toolInfo": {
|
||||
"title": "What is a {{title}}?"
|
||||
}
|
||||
},
|
||||
"compress": {
|
||||
"resolution": "Resolution",
|
||||
"quality": "Quality (CRF)",
|
||||
"lossless": "Lossless",
|
||||
"default": "Default",
|
||||
"worst": "Worst",
|
||||
"inputTitle": "Input Video",
|
||||
"resultTitle": "Compressed Video",
|
||||
"loadingText": "Compressing video..."
|
||||
},
|
||||
"flip": {
|
||||
"orientation": "Orientation",
|
||||
"horizontalLabel": "Horizontal (Mirror)",
|
||||
"verticalLabel": "Vertical (Upside Down)",
|
||||
"inputTitle": "Input Video",
|
||||
"flippingVideo": "Flipping Video",
|
||||
"resultTitle": "Flipped Video"
|
||||
},
|
||||
"rotate": {
|
||||
"rotation": "Rotation",
|
||||
"90Degrees": "90° Clockwise",
|
||||
"180Degrees": "180° (Upside down)",
|
||||
"270Degrees": "270° (90° Counter-clockwise)",
|
||||
"inputTitle": "Input Video",
|
||||
"rotatingVideo": "Rotating Video",
|
||||
"resultTitle": "Rotated Video"
|
||||
}
|
||||
}
|
||||
|
@@ -63,7 +63,7 @@ export default function RotateVideo({ title }: ToolComponentProps) {
|
||||
{angleOptions.map((angleOption) => (
|
||||
<SimpleRadio
|
||||
key={angleOption.value}
|
||||
title={t(`video.rotate.${angleOption.value}Degrees`)}
|
||||
title={t(`rotate.${angleOption.value}Degrees`)}
|
||||
checked={values.rotation === angleOption.value}
|
||||
onClick={() => {
|
||||
updateField('rotation', angleOption.value);
|
||||
|
Reference in New Issue
Block a user