i18n(editor): translate the new menubar in all nine locales

Every menu we added lived on t() English fallbacks — the keys did not
exist in ANY locale file, so a Spanish or Chinese user got an English
menubar. 29 keys (editor.menu.* + the toolbar labels the File menu
reuses) now exist in en/es/pt-br/it/fr/zh-cn/de/ja/ru.

Two entries needed their own leaf keys: editor.toolbar.compile and .run
are nested OBJECTS (title/options/... sub-keys), so t() on them cannot
resolve to a string — the menu now uses editor.menu.compile / .run,
which also avoids double shortcuts ("Compile (Ctrl+B)" plus the menu's
own Ctrl+B column).

Verified mechanically: all 38 keys the menubar references resolve to
strings in all nine locales.
This commit is contained in:
David Montero Crespo 2026-07-30 21:12:28 +02:00
parent d233b66cc9
commit db632832b4
10 changed files with 290 additions and 11 deletions

View File

@ -134,8 +134,8 @@ export const EditorMenuBar: React.FC = () => {
const editItems: Item[] = [];
const viewItems: Item[] = [
{ kind: 'command', id: 'sim.compile', label: t('editor.toolbar.compile', 'Compile'), shortcut: 'Ctrl+B' },
{ kind: 'command', id: 'sim.run', label: t('editor.toolbar.run', 'Run') },
{ kind: 'command', id: 'sim.compile', label: t('editor.menu.compile', 'Compile'), shortcut: 'Ctrl+B' },
{ kind: 'command', id: 'sim.run', label: t('editor.menu.run', 'Run') },
{ kind: 'command', id: 'sim.stop', label: t('editor.toolbar.stop', 'Stop') },
{ kind: 'command', id: 'sim.resetBoard', label: t('editor.toolbar.reset', 'Reset') },
{ kind: 'separator' },

View File

@ -31,7 +31,15 @@
"dismiss": "Schließen"
},
"exportBom": "Stückliste exportieren (CSV — Pro)",
"exportScreenshot": "Schaltplan als Bild exportieren (PNG — Pro)"
"exportScreenshot": "Schaltplan als Bild exportieren (PNG — Pro)",
"importLabel": "Projekt importieren",
"exportLabel": "Projekt exportieren (.zip)",
"exportBomLabel": "Stückliste (CSV)",
"exportScreenshotLabel": "Schaltplanbild (PNG)",
"shareLabel": "Teilen / Einbetten",
"githubSyncLabel": "Mit GitHub synchronisieren",
"uploadFirmwareLabel": "Firmware hochladen",
"recordLabel": "Simulation aufzeichnen"
},
"fileExplorer": {
"workspace": "ARBEITSBEREICH",
@ -353,6 +361,29 @@
"cr": "Wagenrücklauf",
"both": "Beides NL & CR"
}
},
"menu": {
"file": "Datei",
"edit": "Bearbeiten",
"view": "Ansicht",
"language": "Sprache",
"help": "Hilfe",
"newProject": "Neuer Arbeitsbereich",
"newFile": "Neue Datei",
"open": "Projekt öffnen…",
"save": "Projekt speichern",
"undo": "Rückgängig",
"redo": "Wiederholen",
"centerView": "Canvas-Ansicht zentrieren",
"toggleExplorer": "Datei-Explorer",
"toggleConsole": "Ausgabekonsole",
"toggleScope": "Oszilloskop / Logikanalysator",
"home": "Velxio-Startseite",
"about": "Über Velxio",
"discord": "Discord-Community",
"github": "GitHub-Repository",
"compile": "Kompilieren",
"run": "Ausführen"
}
},
"about": {

View File

@ -33,7 +33,15 @@
"dismiss": "Dismiss"
},
"exportBom": "Export Bill of Materials (CSV — Pro)",
"exportScreenshot": "Export schematic as image (PNG — Pro)"
"exportScreenshot": "Export schematic as image (PNG — Pro)",
"importLabel": "Import project",
"exportLabel": "Export project (.zip)",
"exportBomLabel": "Bill of Materials (CSV)",
"exportScreenshotLabel": "Schematic image (PNG)",
"shareLabel": "Share / Embed",
"githubSyncLabel": "Sync to GitHub",
"uploadFirmwareLabel": "Upload firmware",
"recordLabel": "Record simulation"
},
"fileExplorer": {
"workspace": "WORKSPACE",
@ -355,6 +363,29 @@
"cr": "Carriage return",
"both": "Both NL & CR"
}
},
"menu": {
"file": "File",
"edit": "Edit",
"view": "View",
"language": "Language",
"help": "Help",
"newProject": "New workspace",
"newFile": "New file",
"open": "Open project…",
"save": "Save project",
"undo": "Undo",
"redo": "Redo",
"centerView": "Center canvas view",
"toggleExplorer": "File Explorer",
"toggleConsole": "Output Console",
"toggleScope": "Oscilloscope / Logic Analyzer",
"home": "Velxio Home",
"about": "About Velxio",
"discord": "Discord Community",
"github": "GitHub Repository",
"compile": "Compile",
"run": "Run"
}
},
"about": {

View File

@ -33,7 +33,15 @@
"dismiss": "Descartar"
},
"exportBom": "Exportar lista de materiales (CSV — Pro)",
"exportScreenshot": "Exportar esquemático como imagen (PNG — Pro)"
"exportScreenshot": "Exportar esquemático como imagen (PNG — Pro)",
"importLabel": "Importar proyecto",
"exportLabel": "Exportar proyecto (.zip)",
"exportBomLabel": "Lista de materiales (CSV)",
"exportScreenshotLabel": "Imagen del esquema (PNG)",
"shareLabel": "Compartir / Insertar",
"githubSyncLabel": "Sincronizar con GitHub",
"uploadFirmwareLabel": "Subir firmware",
"recordLabel": "Grabar simulación"
},
"fileExplorer": {
"workspace": "ESPACIO DE TRABAJO",
@ -355,6 +363,29 @@
"cr": "Retorno de carro",
"both": "Ambos NL y CR"
}
},
"menu": {
"file": "Archivo",
"edit": "Edición",
"view": "Ver",
"language": "Idioma",
"help": "Ayuda",
"newProject": "Nuevo espacio de trabajo",
"newFile": "Nuevo archivo",
"open": "Abrir proyecto…",
"save": "Guardar proyecto",
"undo": "Deshacer",
"redo": "Rehacer",
"centerView": "Centrar vista del lienzo",
"toggleExplorer": "Explorador de archivos",
"toggleConsole": "Consola de salida",
"toggleScope": "Osciloscopio / Analizador lógico",
"home": "Inicio de Velxio",
"about": "Acerca de Velxio",
"discord": "Comunidad de Discord",
"github": "Repositorio en GitHub",
"compile": "Compilar",
"run": "Ejecutar"
}
},
"about": {

View File

@ -31,7 +31,15 @@
"dismiss": "Ignorer"
},
"exportBom": "Exporter la nomenclature (CSV — Pro)",
"exportScreenshot": "Exporter le schéma en image (PNG — Pro)"
"exportScreenshot": "Exporter le schéma en image (PNG — Pro)",
"importLabel": "Importer un projet",
"exportLabel": "Exporter le projet (.zip)",
"exportBomLabel": "Nomenclature (CSV)",
"exportScreenshotLabel": "Image du schéma (PNG)",
"shareLabel": "Partager / Intégrer",
"githubSyncLabel": "Synchroniser avec GitHub",
"uploadFirmwareLabel": "Téléverser le firmware",
"recordLabel": "Enregistrer la simulation"
},
"fileExplorer": {
"workspace": "ESPACE DE TRAVAIL",
@ -353,6 +361,29 @@
"cr": "Retour chariot",
"both": "NL et CR"
}
},
"menu": {
"file": "Fichier",
"edit": "Édition",
"view": "Affichage",
"language": "Langue",
"help": "Aide",
"newProject": "Nouvel espace de travail",
"newFile": "Nouveau fichier",
"open": "Ouvrir un projet…",
"save": "Enregistrer le projet",
"undo": "Annuler",
"redo": "Rétablir",
"centerView": "Centrer la vue du canevas",
"toggleExplorer": "Explorateur de fichiers",
"toggleConsole": "Console de sortie",
"toggleScope": "Oscilloscope / Analyseur logique",
"home": "Accueil Velxio",
"about": "À propos de Velxio",
"discord": "Communauté Discord",
"github": "Dépôt GitHub",
"compile": "Compiler",
"run": "Exécuter"
}
},
"about": {

View File

@ -31,7 +31,15 @@
"dismiss": "Ignora"
},
"exportBom": "Esporta distinta base (CSV — Pro)",
"exportScreenshot": "Esporta schema come immagine (PNG — Pro)"
"exportScreenshot": "Esporta schema come immagine (PNG — Pro)",
"importLabel": "Importa progetto",
"exportLabel": "Esporta progetto (.zip)",
"exportBomLabel": "Distinta base (CSV)",
"exportScreenshotLabel": "Immagine dello schema (PNG)",
"shareLabel": "Condividi / Incorpora",
"githubSyncLabel": "Sincronizza con GitHub",
"uploadFirmwareLabel": "Carica firmware",
"recordLabel": "Registra simulazione"
},
"fileExplorer": {
"workspace": "WORKSPACE",
@ -353,6 +361,29 @@
"cr": "Carriage return",
"both": "Entrambi NL e CR"
}
},
"menu": {
"file": "File",
"edit": "Modifica",
"view": "Visualizza",
"language": "Lingua",
"help": "Aiuto",
"newProject": "Nuovo spazio di lavoro",
"newFile": "Nuovo file",
"open": "Apri progetto…",
"save": "Salva progetto",
"undo": "Annulla",
"redo": "Ripeti",
"centerView": "Centra la vista del canvas",
"toggleExplorer": "Esplora file",
"toggleConsole": "Console di output",
"toggleScope": "Oscilloscopio / Analizzatore logico",
"home": "Home di Velxio",
"about": "Informazioni su Velxio",
"discord": "Community Discord",
"github": "Repository GitHub",
"compile": "Compila",
"run": "Esegui"
}
},
"about": {

View File

@ -31,7 +31,15 @@
"dismiss": "閉じる"
},
"exportBom": "部品表をエクスポート (CSV — Pro)",
"exportScreenshot": "回路図を画像としてエクスポート (PNG — Pro)"
"exportScreenshot": "回路図を画像としてエクスポート (PNG — Pro)",
"importLabel": "プロジェクトをインポート",
"exportLabel": "プロジェクトをエクスポート (.zip)",
"exportBomLabel": "部品表 (CSV)",
"exportScreenshotLabel": "回路図画像 (PNG)",
"shareLabel": "共有 / 埋め込み",
"githubSyncLabel": "GitHub と同期",
"uploadFirmwareLabel": "ファームウェアをアップロード",
"recordLabel": "シミュレーションを録画"
},
"fileExplorer": {
"workspace": "ワークスペース",
@ -353,6 +361,29 @@
"cr": "キャリッジリターン",
"both": "NL と CR の両方"
}
},
"menu": {
"file": "ファイル",
"edit": "編集",
"view": "表示",
"language": "言語",
"help": "ヘルプ",
"newProject": "新しいワークスペース",
"newFile": "新規ファイル",
"open": "プロジェクトを開く…",
"save": "プロジェクトを保存",
"undo": "元に戻す",
"redo": "やり直す",
"centerView": "キャンバス表示を中央に",
"toggleExplorer": "ファイルエクスプローラー",
"toggleConsole": "出力コンソール",
"toggleScope": "オシロスコープ / ロジックアナライザー",
"home": "Velxio ホーム",
"about": "Velxio について",
"discord": "Discord コミュニティ",
"github": "GitHub リポジトリ",
"compile": "コンパイル",
"run": "実行"
}
},
"about": {

View File

@ -31,7 +31,15 @@
"dismiss": "Dispensar"
},
"exportBom": "Exportar Lista de Materiais (CSV — Pro)",
"exportScreenshot": "Exportar esquemático como imagem (PNG — Pro)"
"exportScreenshot": "Exportar esquemático como imagem (PNG — Pro)",
"importLabel": "Importar projeto",
"exportLabel": "Exportar projeto (.zip)",
"exportBomLabel": "Lista de materiais (CSV)",
"exportScreenshotLabel": "Imagem do esquema (PNG)",
"shareLabel": "Compartilhar / Incorporar",
"githubSyncLabel": "Sincronizar com o GitHub",
"uploadFirmwareLabel": "Enviar firmware",
"recordLabel": "Gravar simulação"
},
"fileExplorer": {
"workspace": "WORKSPACE",
@ -353,6 +361,29 @@
"cr": "Retorno de carro",
"both": "Ambos NL e CR"
}
},
"menu": {
"file": "Arquivo",
"edit": "Editar",
"view": "Exibir",
"language": "Idioma",
"help": "Ajuda",
"newProject": "Novo espaço de trabalho",
"newFile": "Novo arquivo",
"open": "Abrir projeto…",
"save": "Salvar projeto",
"undo": "Desfazer",
"redo": "Refazer",
"centerView": "Centralizar visão do canvas",
"toggleExplorer": "Explorador de arquivos",
"toggleConsole": "Console de saída",
"toggleScope": "Osciloscópio / Analisador lógico",
"home": "Página inicial do Velxio",
"about": "Sobre o Velxio",
"discord": "Comunidade no Discord",
"github": "Repositório no GitHub",
"compile": "Compilar",
"run": "Executar"
}
},
"about": {

View File

@ -31,7 +31,15 @@
"dismiss": "Закрыть"
},
"exportBom": "Экспорт спецификации (CSV — Pro)",
"exportScreenshot": "Экспорт схемы как изображение (PNG — Pro)"
"exportScreenshot": "Экспорт схемы как изображение (PNG — Pro)",
"importLabel": "Импортировать проект",
"exportLabel": "Экспортировать проект (.zip)",
"exportBomLabel": "Спецификация (CSV)",
"exportScreenshotLabel": "Изображение схемы (PNG)",
"shareLabel": "Поделиться / Встроить",
"githubSyncLabel": "Синхронизировать с GitHub",
"uploadFirmwareLabel": "Загрузить прошивку",
"recordLabel": "Записать симуляцию"
},
"fileExplorer": {
"workspace": "РАБОЧАЯ ОБЛАСТЬ",
@ -353,6 +361,29 @@
"cr": "Возврат каретки",
"both": "NL и CR"
}
},
"menu": {
"file": "Файл",
"edit": "Правка",
"view": "Вид",
"language": "Язык",
"help": "Справка",
"newProject": "Новое рабочее пространство",
"newFile": "Новый файл",
"open": "Открыть проект…",
"save": "Сохранить проект",
"undo": "Отменить",
"redo": "Повторить",
"centerView": "Центрировать вид холста",
"toggleExplorer": "Проводник файлов",
"toggleConsole": "Консоль вывода",
"toggleScope": "Осциллограф / Логический анализатор",
"home": "Главная Velxio",
"about": "О Velxio",
"discord": "Сообщество в Discord",
"github": "Репозиторий на GitHub",
"compile": "Компилировать",
"run": "Запустить"
}
},
"about": {

View File

@ -31,7 +31,15 @@
"dismiss": "忽略"
},
"exportBom": "导出物料清单 (CSV — Pro)",
"exportScreenshot": "导出原理图为图片 (PNG — Pro)"
"exportScreenshot": "导出原理图为图片 (PNG — Pro)",
"importLabel": "导入项目",
"exportLabel": "导出项目 (.zip)",
"exportBomLabel": "物料清单 (CSV)",
"exportScreenshotLabel": "原理图图片 (PNG)",
"shareLabel": "分享 / 嵌入",
"githubSyncLabel": "同步到 GitHub",
"uploadFirmwareLabel": "上传固件",
"recordLabel": "录制仿真"
},
"fileExplorer": {
"workspace": "工作区",
@ -353,6 +361,29 @@
"cr": "回车",
"both": "换行和回车"
}
},
"menu": {
"file": "文件",
"edit": "编辑",
"view": "视图",
"language": "语言",
"help": "帮助",
"newProject": "新建工作区",
"newFile": "新建文件",
"open": "打开项目…",
"save": "保存项目",
"undo": "撤销",
"redo": "重做",
"centerView": "居中画布视图",
"toggleExplorer": "文件资源管理器",
"toggleConsole": "输出控制台",
"toggleScope": "示波器 / 逻辑分析仪",
"home": "Velxio 主页",
"about": "关于 Velxio",
"discord": "Discord 社区",
"github": "GitHub 仓库",
"compile": "编译",
"run": "运行"
}
},
"about": {