Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@
"rehype-raw": "^7.0.0",
"rehype-sanitize": "^6.0.0",
"remark-gfm": "^4.0.1",
"smol-toml": "^1.6.1",
"sonner": "^2.0.7",
"sql-formatter": "^15.7.2",
"tailwind-merge": "^3.5.0",
Expand Down
Binary file added public/og/tools/de/base-encoding-converter.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/og/tools/en/base-encoding-converter.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/og/tools/fr/base-encoding-converter.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/og/tools/ja/base-encoding-converter.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/og/tools/ko/base-encoding-converter.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/og/tools/zh-CN/base-encoding-converter.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/og/tools/zh-TW/base-encoding-converter.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions scripts/generators/generate-client-tool-lookup.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const FAMILY_BY_TOOL_KEY = {
ai_color_palette_generator: "images-media",
asn1_der_inspector: "security-tokens",
barcode_generator: "generators",
base_encoding_converter: "encoders-decoders",
base64_encode_decode: "encoders-decoders",
certificate_decoder: "security-tokens",
chmod_calculator: "devops-logs",
Expand Down
30 changes: 30 additions & 0 deletions src/app/[lang]/base-encoding-converter/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import type { Metadata } from "next";
import { notFound } from "next/navigation";
import { isValidLocale } from "@/core/i18n/i18n";
import { buildToolMetadata } from "@/core/seo/seo";
import { ToolBreadcrumbJsonLd } from "@/core/seo/components/json-ld";
import { ToolContentTemplateServer } from "@/core/seo/components/tool-content-template-server";

export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
const { lang } = await params;
if (!isValidLocale(lang)) {
notFound();
}

return buildToolMetadata({ lang, slug: "base-encoding-converter" });
}

export default async function Layout({ children, params }: { children: React.ReactNode; params: Promise<{ lang: string }> }) {
const { lang } = await params;
if (!isValidLocale(lang)) {
notFound();
}

return (
<>
<ToolBreadcrumbJsonLd lang={lang} slug="base-encoding-converter" />
{children}
<ToolContentTemplateServer toolSlug="base-encoding-converter" lang={lang} />
</>
);
}
7 changes: 7 additions & 0 deletions src/app/[lang]/base-encoding-converter/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"use client"

import { BaseEncodingConverterPage } from "@/features/tools/base-encoding-converter/page"

export default function Page() {
return <BaseEncodingConverterPage />
}
18 changes: 15 additions & 3 deletions src/core/i18n/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -406,15 +406,16 @@
"error_minify_css": "CSS konnte nicht minimiert werden. Syntax prüfen und erneut versuchen."
},
"yaml_json_converter": {
"title": "YAML/JSON-Konverter",
"description": "Konvertieren Sie YAML in JSON und JSON in YAML.",
"title": "JSON/YAML/TOML-Konverter",
"description": "Konvertieren Sie JSON-, YAML- und TOML-Konfigurationsdaten lokal im Browser.",
"import_file": "Datei importieren",
"convert_action": "Konvertieren",
"drag_drop_import_hint": "Textdatei hierher ziehen oder eine Datei zum Importieren auswählen.",
"import_failed": "Datei konnte nicht importiert werden.",
"copied_desc": "Die konvertierte Ausgabe wurde kopiert.",
"error_yaml_to_json": "YAML konnte nicht in JSON konvertiert werden. Bitte Eingabe prüfen und erneut versuchen.",
"error_json_to_yaml": "JSON konnte nicht in YAML konvertiert werden. Bitte Eingabe prüfen und erneut versuchen."
"error_json_to_yaml": "JSON konnte nicht in YAML konvertiert werden. Bitte Eingabe prüfen und erneut versuchen.",
"error_convert": "Die ausgewählten Formate konnten nicht konvertiert werden. Prüfen Sie die Syntax und versuchen Sie es erneut."
},
"markdown_preview": {
"title": "Markdown-Vorschau",
Expand Down Expand Up @@ -2540,6 +2541,17 @@
"category": "Kategorie",
"flags": "Markierungen",
"truncated_warning": "Die Eingabe überschreitet das lokale Prüflimit. Zeichenzeilen, Statistiken und kopiertes JSON basieren nur auf dem geprüften Ausschnitt."
},
"base_encoding_converter": {
"title": "Base32/Base58-Konverter",
"description": "Kodieren und dekodieren Sie Base32- und Base58-Text lokal, ohne Daten hochzuladen.",
"encoding_label": "Kodierung",
"operation_label": "Aktion",
"encode": "Kodieren",
"decode": "Dekodieren",
"convert": "Konvertieren",
"invalid_base32": "Ungültige Base32-Eingabe. Prüfen Sie Zeichen und Padding.",
"invalid_base58": "Ungültige Base58-Eingabe. Base58 schließt 0, O, I und l aus."
}
},
"categories": {
Expand Down
18 changes: 15 additions & 3 deletions src/core/i18n/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -434,15 +434,16 @@
"download_html_success": "Saved HTML file:"
},
"yaml_json_converter": {
"title": "YAML/JSON Converter",
"description": "Convert bidirectionally between YAML and JSON seamlessly.",
"title": "JSON/YAML/TOML Converter",
"description": "Convert JSON, YAML, and TOML configuration data locally in your browser.",
"import_file": "Import File",
"convert_action": "Convert",
"drag_drop_import_hint": "Drag and drop a text file here, or choose a file to import.",
"import_failed": "Unable to import file.",
"copied_desc": "The converted output has been copied.",
"error_yaml_to_json": "Unable to convert YAML to JSON. Check the input and try again.",
"error_json_to_yaml": "Unable to convert JSON to YAML. Check the input and try again."
"error_json_to_yaml": "Unable to convert JSON to YAML. Check the input and try again.",
"error_convert": "Unable to convert between the selected formats. Check syntax and try again."
},
"markdown_preview": {
"title": "Markdown Preview",
Expand Down Expand Up @@ -2560,6 +2561,17 @@
"category": "Category",
"flags": "Flags",
"truncated_warning": "Input exceeds the local inspection budget. Character rows, stats, and copied JSON are based on the inspected subset."
},
"base_encoding_converter": {
"title": "Base32/Base58 Converter",
"description": "Encode and decode Base32 and Base58 text locally without uploading data.",
"encoding_label": "Encoding",
"operation_label": "Operation",
"encode": "Encode",
"decode": "Decode",
"convert": "Convert",
"invalid_base32": "Invalid Base32 input. Check characters and padding.",
"invalid_base58": "Invalid Base58 input. Base58 excludes 0, O, I, and l."
}
},
"pages": {
Expand Down
24 changes: 18 additions & 6 deletions src/core/i18n/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -406,15 +406,16 @@
"error_minify_css": "Impossible de minifier le CSS. Vérifiez la syntaxe puis réessayez."
},
"yaml_json_converter": {
"title": "Convertisseur YAML/JSON",
"description": "Convertissez YAML en JSON et JSON en YAML instantanément.",
"title": "Convertisseur JSON/YAML/TOML",
"description": "Convertissez des données de configuration JSON, YAML et TOML localement dans le navigateur.",
"import_file": "Importer un fichier",
"convert_action": "Convertir",
"drag_drop_import_hint": "Glissez un fichier texte ici ou choisissez un fichier a importer.",
"drag_drop_import_hint": "Glissez un fichier texte ici ou choisissez un fichier à importer.",
"import_failed": "Impossible d'importer le fichier.",
"copied_desc": "La sortie convertie a ete copiee.",
"error_yaml_to_json": "Impossible de convertir YAML en JSON. Verifiez l'entree puis reessayez.",
"error_json_to_yaml": "Impossible de convertir JSON en YAML. Verifiez l'entree puis reessayez."
"copied_desc": "La sortie convertie a été copiée.",
"error_yaml_to_json": "Impossible de convertir YAML en JSON. Vérifiez l’entrée puis réessayez.",
"error_json_to_yaml": "Impossible de convertir JSON en YAML. Vérifiez l’entrée puis réessayez.",
"error_convert": "Impossible de convertir entre les formats sélectionnés. Vérifiez la syntaxe puis réessayez."
},
"markdown_preview": {
"title": "Aperçu Markdown",
Expand Down Expand Up @@ -2540,6 +2541,17 @@
"category": "Catégorie",
"flags": "Indicateurs",
"truncated_warning": "L'entrée dépasse le budget d'inspection local. Les lignes de caractères, les statistiques et le JSON copié reposent sur le sous-ensemble inspecté."
},
"base_encoding_converter": {
"title": "Convertisseur Base32/Base58",
"description": "Encodez et décodez du texte Base32 et Base58 localement, sans téléverser de données.",
"encoding_label": "Encodage",
"operation_label": "Opération",
"encode": "Encoder",
"decode": "Décoder",
"convert": "Convertir",
"invalid_base32": "Entrée Base32 invalide. Vérifiez les caractères et le padding.",
"invalid_base58": "Entrée Base58 invalide. Base58 exclut 0, O, I et l."
}
},
"categories": {
Expand Down
18 changes: 15 additions & 3 deletions src/core/i18n/translations/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -406,15 +406,16 @@
"error_minify_css": "CSS を圧縮できませんでした。構文を確認して再試行してください。"
},
"yaml_json_converter": {
"title": "YAML/JSON 変換",
"description": "YAML と JSON を相互変換します。",
"title": "JSON/YAML/TOML 変換",
"description": "JSON、YAML、TOML の設定データをブラウザ内でローカル変換します。",
"import_file": "ファイルを読み込む",
"convert_action": "変換",
"drag_drop_import_hint": "テキストファイルをここにドラッグするか、ファイルを選択して読み込んでください。",
"import_failed": "ファイルを読み込めませんでした。",
"copied_desc": "変換結果をコピーしました。",
"error_yaml_to_json": "YAML を JSON に変換できませんでした。入力を確認して再試行してください。",
"error_json_to_yaml": "JSON を YAML に変換できませんでした。入力を確認して再試行してください。"
"error_json_to_yaml": "JSON を YAML に変換できませんでした。入力を確認して再試行してください。",
"error_convert": "選択した形式間で変換できません。構文を確認してもう一度試してください。"
},
"markdown_preview": {
"title": "Markdown プレビュー",
Expand Down Expand Up @@ -2540,6 +2541,17 @@
"category": "カテゴリ",
"flags": "フラグ",
"truncated_warning": "入力がローカル検査の上限を超えています。文字行、統計、コピーされる JSON は検査済みの部分だけに基づきます。"
},
"base_encoding_converter": {
"title": "Base32/Base58 変換",
"description": "Base32 と Base58 のテキストをアップロードせずにローカルでエンコード、デコードします。",
"encoding_label": "エンコード形式",
"operation_label": "操作",
"encode": "エンコード",
"decode": "デコード",
"convert": "変換",
"invalid_base32": "Base32 入力が無効です。文字とパディングを確認してください。",
"invalid_base58": "Base58 入力が無効です。Base58 では 0、O、I、l は使いません。"
}
},
"categories": {
Expand Down
18 changes: 15 additions & 3 deletions src/core/i18n/translations/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -406,15 +406,16 @@
"error_minify_css": "CSS 최소화에 실패했습니다. 구문을 확인 후 다시 시도하세요."
},
"yaml_json_converter": {
"title": "YAML/JSON 변환기",
"description": "YAML과 JSON을 즉시 상호 변환합니다.",
"title": "JSON/YAML/TOML 변환기",
"description": "JSON, YAML, TOML 설정 데이터를 브라우저에서 로컬로 변환합니다.",
"import_file": "파일 가져오기",
"convert_action": "변환",
"drag_drop_import_hint": "텍스트 파일을 여기로 끌어다 놓거나 파일을 선택해 가져오세요.",
"import_failed": "파일을 가져올 수 없습니다.",
"copied_desc": "변환 결과를 복사했습니다.",
"error_yaml_to_json": "YAML을 JSON으로 변환할 수 없습니다. 입력을 확인한 뒤 다시 시도하세요.",
"error_json_to_yaml": "JSON을 YAML로 변환할 수 없습니다. 입력을 확인한 뒤 다시 시도하세요."
"error_json_to_yaml": "JSON을 YAML로 변환할 수 없습니다. 입력을 확인한 뒤 다시 시도하세요.",
"error_convert": "선택한 형식 간 변환에 실패했습니다. 구문을 확인하고 다시 시도하세요."
},
"markdown_preview": {
"title": "Markdown 미리보기",
Expand Down Expand Up @@ -2540,6 +2541,17 @@
"category": "분류",
"flags": "플래그",
"truncated_warning": "입력이 로컬 검사 예산을 초과했습니다. 문자 행, 통계, 복사되는 JSON은 검사된 하위 집합을 기준으로 합니다."
},
"base_encoding_converter": {
"title": "Base32/Base58 변환기",
"description": "Base32와 Base58 텍스트를 업로드 없이 로컬에서 인코딩하고 디코딩합니다.",
"encoding_label": "인코딩",
"operation_label": "작업",
"encode": "인코딩",
"decode": "디코딩",
"convert": "변환",
"invalid_base32": "Base32 입력이 올바르지 않습니다. 문자와 패딩을 확인하세요.",
"invalid_base58": "Base58 입력이 올바르지 않습니다. Base58은 0, O, I, l을 제외합니다."
}
},
"categories": {
Expand Down
18 changes: 15 additions & 3 deletions src/core/i18n/translations/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -406,15 +406,16 @@
"error_minify_css": "CSS 压缩失败,请检查语法后重试。"
},
"yaml_json_converter": {
"title": "YAML/JSON 转换器",
"description": "YAML 和 JSON 格式之间相互转换。",
"title": "JSON/YAML/TOML 转换器",
"description": "在浏览器本地转换 JSON、YAML 和 TOML 配置数据。",
"import_file": "导入文件",
"convert_action": "转换",
"drag_drop_import_hint": "将文本文件拖到这里,或选择文件导入。",
"import_failed": "无法导入文件。",
"copied_desc": "转换结果已复制。",
"error_yaml_to_json": "无法将 YAML 转为 JSON。请检查输入后重试。",
"error_json_to_yaml": "无法将 JSON 转为 YAML。请检查输入后重试。"
"error_json_to_yaml": "无法将 JSON 转为 YAML。请检查输入后重试。",
"error_convert": "无法在所选格式之间转换。请检查语法后重试。"
},
"markdown_preview": {
"title": "Markdown 预览",
Expand Down Expand Up @@ -2540,6 +2541,17 @@
"category": "类别",
"flags": "标记",
"truncated_warning": "输入超过本地检查预算。字符行、统计和复制的 JSON 仅基于已检查的子集。"
},
"base_encoding_converter": {
"title": "Base32/Base58 转换器",
"description": "在本地编码和解码 Base32、Base58 文本,无需上传数据。",
"encoding_label": "编码",
"operation_label": "操作",
"encode": "编码",
"decode": "解码",
"convert": "转换",
"invalid_base32": "Base32 输入无效。请检查字符和填充。",
"invalid_base58": "Base58 输入无效。Base58 不包含 0、O、I 和 l。"
}
},
"categories": {
Expand Down
18 changes: 15 additions & 3 deletions src/core/i18n/translations/zh-TW.json
Original file line number Diff line number Diff line change
Expand Up @@ -406,15 +406,16 @@
"error_minify_css": "CSS 壓縮失敗,請檢查語法後重試。"
},
"yaml_json_converter": {
"title": "YAML/JSON 轉換器",
"description": "YAML 和 JSON 格式之間互相轉換。",
"title": "JSON/YAML/TOML 轉換器",
"description": "在瀏覽器本機轉換 JSON、YAML 和 TOML 設定資料。",
"import_file": "匯入檔案",
"convert_action": "轉換",
"drag_drop_import_hint": "將文字檔拖到這裡,或選擇檔案匯入。",
"import_failed": "無法匯入檔案。",
"copied_desc": "轉換結果已複製。",
"error_yaml_to_json": "無法將 YAML 轉為 JSON。請檢查輸入後再試。",
"error_json_to_yaml": "無法將 JSON 轉為 YAML。請檢查輸入後再試。"
"error_json_to_yaml": "無法將 JSON 轉為 YAML。請檢查輸入後再試。",
"error_convert": "無法在所選格式之間轉換。請檢查語法後再試。"
},
"markdown_preview": {
"title": "Markdown 預覽",
Expand Down Expand Up @@ -2540,6 +2541,17 @@
"category": "類別",
"flags": "標記",
"truncated_warning": "輸入超過本機檢查預算。字元列、統計和複製的 JSON 僅基於已檢查的子集。"
},
"base_encoding_converter": {
"title": "Base32/Base58 轉換器",
"description": "在本機編碼與解碼 Base32、Base58 文字,無需上傳資料。",
"encoding_label": "編碼",
"operation_label": "操作",
"encode": "編碼",
"decode": "解碼",
"convert": "轉換",
"invalid_base32": "Base32 輸入無效。請檢查字元與填充。",
"invalid_base58": "Base58 輸入無效。Base58 不包含 0、O、I 和 l。"
}
},
"categories": {
Expand Down
2 changes: 2 additions & 0 deletions src/core/registry/manifests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { toolManifest as openapiViewerManifest } from "@/features/tools/openapi-
import { toolManifest as jsonDiffViewerManifest } from "@/features/tools/json-diff-viewer/manifest"
import { toolManifest as csvJsonConverterManifest } from "@/features/tools/csv-json-converter/manifest"
import { toolManifest as base64EncodeDecodeManifest } from "@/features/tools/base64-encode-decode/manifest"
import { toolManifest as baseEncodingConverterManifest } from "@/features/tools/base-encoding-converter/manifest"
import { toolManifest as urlEncodeDecodeManifest } from "@/features/tools/url-encode-decode/manifest"
import { toolManifest as jwtDecoderManifest } from "@/features/tools/jwt-decoder/manifest"
import { toolManifest as jwtWorkbenchManifest } from "@/features/tools/jwt-workbench/manifest"
Expand Down Expand Up @@ -142,6 +143,7 @@ export const TOOL_MANIFESTS = [
jsonDiffViewerManifest,
csvJsonConverterManifest,
base64EncodeDecodeManifest,
baseEncodingConverterManifest,
urlEncodeDecodeManifest,
jwtDecoderManifest,
jwtWorkbenchManifest,
Expand Down
1 change: 1 addition & 0 deletions src/core/registry/menu-groups.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ const PRIMARY_GROUP_BY_FAMILY: Record<NonNullable<ToolMeta["family"]>, PrimaryMe
}

const LEGACY_OVERRIDE_GROUP_BY_TOOL_KEY: Record<string, LegacyMenuGroupKey> = {
base_encoding_converter: "convert_encode",
base64_encode_decode: "convert_encode",
url_encode_decode: "convert_encode",
image_base64: "convert_encode",
Expand Down
1 change: 1 addition & 0 deletions src/core/registry/tool-order.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"json-diff-viewer",
"csv-json-converter",
"base64-encode-decode",
"base-encoding-converter",
"url-encode-decode",
"jwt-decoder",
"jwt-workbench",
Expand Down
1 change: 1 addition & 0 deletions src/core/registry/tool-taxonomy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ const FAMILY_BY_TOOL_KEY: Partial<Record<string, ToolFamily>> = {
ai_color_palette_generator: "images-media",
asn1_der_inspector: "security-tokens",
barcode_generator: "generators",
base_encoding_converter: "encoders-decoders",
base64_encode_decode: "encoders-decoders",
certificate_decoder: "security-tokens",
chmod_calculator: "devops-logs",
Expand Down
Loading