diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 25ae14f..b51b1b6 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,67 +4,29 @@
-
-
-
+
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
@@ -566,15 +528,7 @@
-
-
-
-
- 1743051792459
-
-
-
- 1743051792459
+
@@ -960,7 +914,15 @@
1752402313191
-
+
+
+ 1752408068771
+
+
+
+ 1752408068771
+
+
@@ -1469,7 +1431,6 @@
-
@@ -1494,7 +1455,8 @@
-
+
+
false
diff --git a/src/components/ToolLayout.tsx b/src/components/ToolLayout.tsx
index f481c87..b628461 100644
--- a/src/components/ToolLayout.tsx
+++ b/src/components/ToolLayout.tsx
@@ -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()
diff --git a/src/pages/tools/audio/i18n/en.json b/src/pages/tools/audio/i18n/en.json
index fafb424..6ff32d5 100644
--- a/src/pages/tools/audio/i18n/en.json
+++ b/src/pages/tools/audio/i18n/en.json
@@ -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": ""
+ }
}
}
diff --git a/src/pages/tools/csv/find-incomplete-csv-records/index.tsx b/src/pages/tools/csv/find-incomplete-csv-records/index.tsx
index 953adc5..fec3e23 100644
--- a/src/pages/tools/csv/find-incomplete-csv-records/index.tsx
+++ b/src/pages/tools/csv/find-incomplete-csv-records/index.tsx
@@ -123,22 +123,20 @@ export default function FindIncompleteCsvRecords({
updateField('csvSeparator', val)}
- description={t(
- 'csv:findIncompleteCsvRecords.csvSeparatorDescription'
- )}
+ description={t('findIncompleteCsvRecords.csvSeparatorDescription')}
/>
updateField('quoteCharacter', val)}
description={t(
- 'csv:findIncompleteCsvRecords.quoteCharacterDescription'
+ 'findIncompleteCsvRecords.quoteCharacterDescription'
)}
/>
updateField('commentCharacter', val)}
description={t(
- 'csv:findIncompleteCsvRecords.commentCharacterDescription'
+ 'findIncompleteCsvRecords.commentCharacterDescription'
)}
/>
@@ -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'
)}
/>
)}
diff --git a/src/pages/tools/csv/i18n/en.json b/src/pages/tools/csv/i18n/en.json
index 3e9fbe8..59f1a9a 100644
--- a/src/pages/tools/csv/i18n/en.json
+++ b/src/pages/tools/csv/i18n/en.json
@@ -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."
}
}
diff --git a/src/pages/tools/csv/insert-csv-columns/index.tsx b/src/pages/tools/csv/insert-csv-columns/index.tsx
index cb7b03d..055c13c 100644
--- a/src/pages/tools/csv/insert-csv-columns/index.tsx
+++ b/src/pages/tools/csv/insert-csv-columns/index.tsx
@@ -247,7 +247,7 @@ export default function InsertCsvColumns({
]}
onChange={(value) => updateField('customPostionOptions', value)}
description={t(
- 'csv:insertCsvColumns.customPositionOptionsDescription'
+ 'insertCsvColumns.customPositionOptionsDescription'
)}
/>
)}
diff --git a/src/pages/tools/list/group/index.tsx b/src/pages/tools/list/group/index.tsx
index 7f8ae57..84377be 100644
--- a/src/pages/tools/list/group/index.tsx
+++ b/src/pages/tools/list/group/index.tsx
@@ -99,10 +99,8 @@ export default function FindUnique({ title }: ToolComponentProps) {
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}
/>
))}
diff --git a/src/pages/tools/list/i18n/en.json b/src/pages/tools/list/i18n/en.json
index 0903744..d71eebb 100644
--- a/src/pages/tools/list/i18n/en.json
+++ b/src/pages/tools/list/i18n/en.json
@@ -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."
}
}
diff --git a/src/pages/tools/list/reverse/index.tsx b/src/pages/tools/list/reverse/index.tsx
index f8ac241..0a6e5f9 100644
--- a/src/pages/tools/list/reverse/index.tsx
+++ b/src/pages/tools/list/reverse/index.tsx
@@ -128,8 +128,8 @@ export default function Reverse({ title }: ToolComponentProps) {
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}
/>
))}
diff --git a/src/pages/tools/number/arithmetic-sequence/index.tsx b/src/pages/tools/number/arithmetic-sequence/index.tsx
index e7143b3..498528d 100644
--- a/src/pages/tools/number/arithmetic-sequence/index.tsx
+++ b/src/pages/tools/number/arithmetic-sequence/index.tsx
@@ -97,25 +97,21 @@ export default function ArithmeticSequence({ title }: ToolComponentProps) {
component: (
updateField('firstTerm', val)}
type="number"
/>
updateField('commonDifference', val)}
type="number"
/>
updateField('numberOfTerms', val)}
type="number"
diff --git a/src/pages/tools/number/i18n/en.json b/src/pages/tools/number/i18n/en.json
index c6c4cfd..bf29bde 100644
--- a/src/pages/tools/number/i18n/en.json
+++ b/src/pages/tools/number/i18n/en.json
@@ -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.)"
+ }
+ }
}
}
diff --git a/src/pages/tools/number/sum/index.tsx b/src/pages/tools/number/sum/index.tsx
index 6d66182..d649f99 100644
--- a/src/pages/tools/number/sum/index.tsx
+++ b/src/pages/tools/number/sum/index.tsx
@@ -135,9 +135,9 @@ export default function SumNumbers({ title }: ToolComponentProps) {
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`)}
/>
)
)
diff --git a/src/pages/tools/pdf/i18n/en.json b/src/pages/tools/pdf/i18n/en.json
index 79218f5..bf264a5 100644
--- a/src/pages/tools/pdf/i18n/en.json
+++ b/src/pages/tools/pdf/i18n/en.json
@@ -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."
+ }
}
}
diff --git a/src/pages/tools/string/i18n/en.json b/src/pages/tools/string/i18n/en.json
index 94d196d..962756e 100644
--- a/src/pages/tools/string/i18n/en.json
+++ b/src/pages/tools/string/i18n/en.json
@@ -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"
}
}
diff --git a/src/pages/tools/string/join/index.tsx b/src/pages/tools/string/join/index.tsx
index 98089d8..da69a33 100644
--- a/src/pages/tools/string/join/index.tsx
+++ b/src/pages/tools/string/join/index.tsx
@@ -33,7 +33,7 @@ const mergeOptions = {
const blankTrailingOptions: {
title: string;
description: string;
- accessor: keyof InitialValuesType;
+ accessor: keyof Omit;
}[] = [
{
title: 'Delete Blank Lines',
@@ -136,10 +136,10 @@ export default function JoinText({ title }: ToolComponentProps) {
component: blankTrailingOptions.map((option) => (
updateField(option.accessor, value)}
- description={t(`string.join.${option.accessor}Description`)}
+ description={t(`join.${option.accessor}Description`)}
/>
))
}
diff --git a/src/pages/tools/string/split/index.tsx b/src/pages/tools/string/split/index.tsx
index 89c49a1..a53e637 100644
--- a/src/pages/tools/string/split/index.tsx
+++ b/src/pages/tools/string/split/index.tsx
@@ -183,9 +183,9 @@ export default function SplitText({ title }: ToolComponentProps) {
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`)}
/>
))
}
diff --git a/src/pages/tools/string/statistic/index.tsx b/src/pages/tools/string/statistic/index.tsx
index 2377068..c803174 100644
--- a/src/pages/tools/string/statistic/index.tsx
+++ b/src/pages/tools/string/statistic/index.tsx
@@ -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')}
/>
updateField('onlySecond', true)}
checked={values.onlySecond}
title={t('truncateClockTime.truncateOnlySeconds')}
- description={t(
- 'time:truncateClockTime.truncateOnlySecondsDescription'
- )}
+ description={t('truncateClockTime.truncateOnlySecondsDescription')}
/>
updateField('onlySecond', false)}
checked={!values.onlySecond}
title={t('truncateClockTime.truncateMinutesAndSeconds')}
description={t(
- 'time:truncateClockTime.truncateMinutesAndSecondsDescription'
+ 'truncateClockTime.truncateMinutesAndSecondsDescription'
)}
/>
diff --git a/src/pages/tools/video/flip/index.tsx b/src/pages/tools/video/flip/index.tsx
index 31b3e7e..eef36b1 100644
--- a/src/pages/tools/video/flip/index.tsx
+++ b/src/pages/tools/video/flip/index.tsx
@@ -66,7 +66,7 @@ export default function FlipVideo({ title }: ToolComponentProps) {
{orientationOptions.map((orientationOption) => (
{
updateField('orientation', orientationOption.value);
diff --git a/src/pages/tools/video/i18n/en.json b/src/pages/tools/video/i18n/en.json
index 940a4bc..6e897ad 100644
--- a/src/pages/tools/video/i18n/en.json
+++ b/src/pages/tools/video/i18n/en.json
@@ -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"
}
}
diff --git a/src/pages/tools/video/rotate/index.tsx b/src/pages/tools/video/rotate/index.tsx
index 5f8b404..32c6664 100644
--- a/src/pages/tools/video/rotate/index.tsx
+++ b/src/pages/tools/video/rotate/index.tsx
@@ -63,7 +63,7 @@ export default function RotateVideo({ title }: ToolComponentProps) {
{angleOptions.map((angleOption) => (
{
updateField('rotation', angleOption.value);