Skip to content

Commit 41f03a7

Browse files
committed
feat(i18n): add error messages for custom modes in multiple languages
1 parent 649557b commit 41f03a7

File tree

19 files changed

+227
-18
lines changed

19 files changed

+227
-18
lines changed

src/core/config/CustomModesManager.ts

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { getWorkspacePath } from "../../utils/path"
1111
import { logger } from "../../utils/logging"
1212
import { GlobalFileNames } from "../../shared/globalFileNames"
1313
import { ensureSettingsDirectoryExists } from "../../utils/globalContext"
14+
import { t } from "../../i18n"
1415

1516
const ROOMODES_FILENAME = ".roomodes"
1617

@@ -141,12 +142,7 @@ export class CustomModesManager {
141142
if (filePath.endsWith(ROOMODES_FILENAME)) {
142143
const lineMatch = errorMsg.match(/at line (\d+)/)
143144
const line = lineMatch ? lineMatch[1] : "unknown"
144-
vscode.window.showErrorMessage(
145-
`Invalid YAML in .roomodes file at line ${line}. Please check for:\n` +
146-
`• Proper indentation (use spaces, not tabs)\n` +
147-
`• Matching quotes and brackets\n` +
148-
`• Valid YAML syntax`,
149-
)
145+
vscode.window.showErrorMessage(t("common:customModes.errors.yamlParseError", { line }))
150146
}
151147

152148
// Re-throw with a flag to prevent duplicate error handling
@@ -171,7 +167,7 @@ export class CustomModesManager {
171167
.map((issue) => `• ${issue.path.join(".")}: ${issue.message}`)
172168
.join("\n")
173169

174-
vscode.window.showErrorMessage(`Invalid custom modes format in .roomodes:\n${issues}`)
170+
vscode.window.showErrorMessage(t("common:customModes.errors.schemaValidationError", { issues }))
175171
}
176172

177173
return []
@@ -250,8 +246,7 @@ export class CustomModesManager {
250246
await this.getCustomModesFilePath()
251247
const content = await fs.readFile(settingsPath, "utf-8")
252248

253-
const errorMessage =
254-
"Invalid custom modes format. Please ensure your settings follow the correct YAML format."
249+
const errorMessage = t("common:customModes.errors.invalidFormat")
255250

256251
let config: any
257252

@@ -387,7 +382,7 @@ export class CustomModesManager {
387382

388383
if (!workspaceFolders || workspaceFolders.length === 0) {
389384
logger.error("Failed to update project mode: No workspace folder found", { slug })
390-
throw new Error("No workspace folder found for project-specific mode")
385+
throw new Error(t("common:customModes.errors.noWorkspaceForProject"))
391386
}
392387

393388
const workspaceRoot = getWorkspacePath()
@@ -421,7 +416,7 @@ export class CustomModesManager {
421416
} catch (error) {
422417
const errorMessage = error instanceof Error ? error.message : String(error)
423418
logger.error("Failed to update custom mode", { slug, error: errorMessage })
424-
vscode.window.showErrorMessage(`Failed to update custom mode: ${errorMessage}`)
419+
vscode.window.showErrorMessage(t("common:customModes.errors.updateFailed", { error: errorMessage }))
425420
}
426421
}
427422

@@ -476,7 +471,7 @@ export class CustomModesManager {
476471
const globalMode = settingsModes.find((m) => m.slug === slug)
477472

478473
if (!projectMode && !globalMode) {
479-
throw new Error("Write error: Mode not found")
474+
throw new Error(t("common:customModes.errors.modeNotFound"))
480475
}
481476

482477
await this.queueWrite(async () => {
@@ -495,9 +490,8 @@ export class CustomModesManager {
495490
await this.refreshMergedState()
496491
})
497492
} catch (error) {
498-
vscode.window.showErrorMessage(
499-
`Failed to delete custom mode: ${error instanceof Error ? error.message : String(error)}`,
500-
)
493+
const errorMessage = error instanceof Error ? error.message : String(error)
494+
vscode.window.showErrorMessage(t("common:customModes.errors.deleteFailed", { error: errorMessage }))
501495
}
502496
}
503497

@@ -512,9 +506,8 @@ export class CustomModesManager {
512506
this.clearCache()
513507
await this.onUpdate()
514508
} catch (error) {
515-
vscode.window.showErrorMessage(
516-
`Failed to reset custom modes: ${error instanceof Error ? error.message : String(error)}`,
517-
)
509+
const errorMessage = error instanceof Error ? error.message : String(error)
510+
vscode.window.showErrorMessage(t("common:customModes.errors.resetFailed", { error: errorMessage }))
518511
}
519512
}
520513

src/i18n/locales/ca/common.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@
122122
}
123123
}
124124
},
125+
"customModes": {
126+
"errors": {
127+
"yamlParseError": "YAML no vàlid al fitxer .roomodes a la línia {{line}}. Comprova:\n• Indentació correcta (utilitza espais, no tabuladors)\n• Cometes i claudàtors coincidents\n• Sintaxi YAML vàlida",
128+
"schemaValidationError": "Format de modes personalitzats no vàlid a .roomodes:\n{{issues}}",
129+
"invalidFormat": "Format de modes personalitzats no vàlid. Assegura't que la teva configuració segueix el format YAML correcte.",
130+
"updateFailed": "Error en actualitzar el mode personalitzat: {{error}}",
131+
"deleteFailed": "Error en eliminar el mode personalitzat: {{error}}",
132+
"resetFailed": "Error en restablir els modes personalitzats: {{error}}",
133+
"modeNotFound": "Error d'escriptura: Mode no trobat",
134+
"noWorkspaceForProject": "No s'ha trobat cap carpeta d'espai de treball per al mode específic del projecte"
135+
}
136+
},
125137
"mdm": {
126138
"errors": {
127139
"cloud_auth_required": "La teva organització requereix autenticació de Roo Code Cloud. Si us plau, inicia sessió per continuar.",

src/i18n/locales/de/common.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@
122122
}
123123
}
124124
},
125+
"customModes": {
126+
"errors": {
127+
"yamlParseError": "Ungültiges YAML in .roomodes-Datei in Zeile {{line}}. Bitte überprüfe:\n• Korrekte Einrückung (verwende Leerzeichen, keine Tabs)\n• Passende Anführungszeichen und Klammern\n• Gültige YAML-Syntax",
128+
"schemaValidationError": "Ungültiges Format für benutzerdefinierte Modi in .roomodes:\n{{issues}}",
129+
"invalidFormat": "Ungültiges Format für benutzerdefinierte Modi. Bitte stelle sicher, dass deine Einstellungen dem korrekten YAML-Format folgen.",
130+
"updateFailed": "Fehler beim Aktualisieren des benutzerdefinierten Modus: {{error}}",
131+
"deleteFailed": "Fehler beim Löschen des benutzerdefinierten Modus: {{error}}",
132+
"resetFailed": "Fehler beim Zurücksetzen der benutzerdefinierten Modi: {{error}}",
133+
"modeNotFound": "Schreibfehler: Modus nicht gefunden",
134+
"noWorkspaceForProject": "Kein Arbeitsbereich-Ordner für projektspezifischen Modus gefunden"
135+
}
136+
},
125137
"mdm": {
126138
"errors": {
127139
"cloud_auth_required": "Deine Organisation erfordert eine Roo Code Cloud-Authentifizierung. Bitte melde dich an, um fortzufahren.",

src/i18n/locales/en/common.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,18 @@
111111
"task_prompt": "What should Roo do?",
112112
"task_placeholder": "Type your task here"
113113
},
114+
"customModes": {
115+
"errors": {
116+
"yamlParseError": "Invalid YAML in .roomodes file at line {{line}}. Please check for:\n• Proper indentation (use spaces, not tabs)\n• Matching quotes and brackets\n• Valid YAML syntax",
117+
"schemaValidationError": "Invalid custom modes format in .roomodes:\n{{issues}}",
118+
"invalidFormat": "Invalid custom modes format. Please ensure your settings follow the correct YAML format.",
119+
"updateFailed": "Failed to update custom mode: {{error}}",
120+
"deleteFailed": "Failed to delete custom mode: {{error}}",
121+
"resetFailed": "Failed to reset custom modes: {{error}}",
122+
"modeNotFound": "Write error: Mode not found",
123+
"noWorkspaceForProject": "No workspace folder found for project-specific mode"
124+
}
125+
},
114126
"mdm": {
115127
"errors": {
116128
"cloud_auth_required": "Your organization requires Roo Code Cloud authentication. Please sign in to continue.",

src/i18n/locales/es/common.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@
122122
}
123123
}
124124
},
125+
"customModes": {
126+
"errors": {
127+
"yamlParseError": "YAML inválido en archivo .roomodes en línea {{line}}. Verifica:\n• Indentación correcta (usa espacios, no tabs)\n• Comillas y corchetes coincidentes\n• Sintaxis YAML válida",
128+
"schemaValidationError": "Formato inválido de modos personalizados en .roomodes:\n{{issues}}",
129+
"invalidFormat": "Formato inválido de modos personalizados. Asegúrate de que tu configuración siga el formato YAML correcto.",
130+
"updateFailed": "Error al actualizar modo personalizado: {{error}}",
131+
"deleteFailed": "Error al eliminar modo personalizado: {{error}}",
132+
"resetFailed": "Error al restablecer modos personalizados: {{error}}",
133+
"modeNotFound": "Error de escritura: Modo no encontrado",
134+
"noWorkspaceForProject": "No se encontró carpeta de espacio de trabajo para modo específico del proyecto"
135+
}
136+
},
125137
"mdm": {
126138
"errors": {
127139
"cloud_auth_required": "Tu organización requiere autenticación de Roo Code Cloud. Por favor, inicia sesión para continuar.",

src/i18n/locales/fr/common.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@
122122
}
123123
}
124124
},
125+
"customModes": {
126+
"errors": {
127+
"yamlParseError": "YAML invalide dans le fichier .roomodes à la ligne {{line}}. Vérifie :\n• L'indentation correcte (utilise des espaces, pas de tabulations)\n• Les guillemets et crochets correspondants\n• La syntaxe YAML valide",
128+
"schemaValidationError": "Format invalide des modes personnalisés dans .roomodes :\n{{issues}}",
129+
"invalidFormat": "Format invalide des modes personnalisés. Assure-toi que tes paramètres suivent le format YAML correct.",
130+
"updateFailed": "Échec de la mise à jour du mode personnalisé : {{error}}",
131+
"deleteFailed": "Échec de la suppression du mode personnalisé : {{error}}",
132+
"resetFailed": "Échec de la réinitialisation des modes personnalisés : {{error}}",
133+
"modeNotFound": "Erreur d'écriture : Mode non trouvé",
134+
"noWorkspaceForProject": "Aucun dossier d'espace de travail trouvé pour le mode spécifique au projet"
135+
}
136+
},
125137
"mdm": {
126138
"errors": {
127139
"cloud_auth_required": "Votre organisation nécessite une authentification Roo Code Cloud. Veuillez vous connecter pour continuer.",

src/i18n/locales/hi/common.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@
122122
}
123123
}
124124
},
125+
"customModes": {
126+
"errors": {
127+
"yamlParseError": ".roomodes फ़ाइल में लाइन {{line}} पर अमान्य YAML। कृपया जांचें:\n• सही इंडेंटेशन (टैब नहीं, स्पेस का उपयोग करें)\n• मैचिंग कोट्स और ब्रैकेट्स\n• वैध YAML सिंटैक्स",
128+
"schemaValidationError": ".roomodes में अमान्य कस्टम मोड फॉर्मेट:\n{{issues}}",
129+
"invalidFormat": "अमान्य कस्टम मोड फॉर्मेट। कृपया सुनिश्चित करें कि आपकी सेटिंग्स सही YAML फॉर्मेट का पालन करती हैं।",
130+
"updateFailed": "कस्टम मोड अपडेट विफल: {{error}}",
131+
"deleteFailed": "कस्टम मोड डिलीट विफल: {{error}}",
132+
"resetFailed": "कस्टम मोड रीसेट विफल: {{error}}",
133+
"modeNotFound": "लेखन त्रुटि: मोड नहीं मिला",
134+
"noWorkspaceForProject": "प्रोजेक्ट-विशिष्ट मोड के लिए वर्कस्पेस फ़ोल्डर नहीं मिला"
135+
}
136+
},
125137
"mdm": {
126138
"errors": {
127139
"cloud_auth_required": "आपके संगठन को Roo Code Cloud प्रमाणीकरण की आवश्यकता है। कृपया जारी रखने के लिए साइन इन करें।",

src/i18n/locales/id/common.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@
122122
}
123123
}
124124
},
125+
"customModes": {
126+
"errors": {
127+
"yamlParseError": "YAML tidak valid dalam file .roomodes pada baris {{line}}. Silakan periksa:\n• Indentasi yang benar (gunakan spasi, bukan tab)\n• Tanda kutip dan kurung yang cocok\n• Sintaks YAML yang valid",
128+
"schemaValidationError": "Format mode kustom tidak valid dalam .roomodes:\n{{issues}}",
129+
"invalidFormat": "Format mode kustom tidak valid. Pastikan pengaturan kamu mengikuti format YAML yang benar.",
130+
"updateFailed": "Gagal memperbarui mode kustom: {{error}}",
131+
"deleteFailed": "Gagal menghapus mode kustom: {{error}}",
132+
"resetFailed": "Gagal mereset mode kustom: {{error}}",
133+
"modeNotFound": "Kesalahan tulis: Mode tidak ditemukan",
134+
"noWorkspaceForProject": "Tidak ditemukan folder workspace untuk mode khusus proyek"
135+
}
136+
},
125137
"mdm": {
126138
"errors": {
127139
"cloud_auth_required": "Organisasi kamu memerlukan autentikasi Roo Code Cloud. Silakan masuk untuk melanjutkan.",

src/i18n/locales/it/common.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@
122122
}
123123
}
124124
},
125+
"customModes": {
126+
"errors": {
127+
"yamlParseError": "YAML non valido nel file .roomodes alla riga {{line}}. Controlla:\n• Indentazione corretta (usa spazi, non tab)\n• Virgolette e parentesi corrispondenti\n• Sintassi YAML valida",
128+
"schemaValidationError": "Formato modalità personalizzate non valido in .roomodes:\n{{issues}}",
129+
"invalidFormat": "Formato modalità personalizzate non valido. Assicurati che le tue impostazioni seguano il formato YAML corretto.",
130+
"updateFailed": "Aggiornamento modalità personalizzata fallito: {{error}}",
131+
"deleteFailed": "Eliminazione modalità personalizzata fallita: {{error}}",
132+
"resetFailed": "Reset modalità personalizzate fallito: {{error}}",
133+
"modeNotFound": "Errore di scrittura: Modalità non trovata",
134+
"noWorkspaceForProject": "Nessuna cartella workspace trovata per la modalità specifica del progetto"
135+
}
136+
},
125137
"mdm": {
126138
"errors": {
127139
"cloud_auth_required": "La tua organizzazione richiede l'autenticazione Roo Code Cloud. Accedi per continuare.",

src/i18n/locales/ja/common.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,18 @@
122122
}
123123
}
124124
},
125+
"customModes": {
126+
"errors": {
127+
"yamlParseError": ".roomodes ファイルの {{line}} 行目で無効な YAML です。以下を確認してください:\n• 正しいインデント(タブではなくスペースを使用)\n• 引用符と括弧の対応\n• 有効な YAML 構文",
128+
"schemaValidationError": ".roomodes のカスタムモード形式が無効です:\n{{issues}}",
129+
"invalidFormat": "カスタムモード形式が無効です。設定が正しい YAML 形式に従っていることを確認してください。",
130+
"updateFailed": "カスタムモードの更新に失敗しました:{{error}}",
131+
"deleteFailed": "カスタムモードの削除に失敗しました:{{error}}",
132+
"resetFailed": "カスタムモードのリセットに失敗しました:{{error}}",
133+
"modeNotFound": "書き込みエラー:モードが見つかりません",
134+
"noWorkspaceForProject": "プロジェクト固有モード用のワークスペースフォルダーが見つかりません"
135+
}
136+
},
125137
"mdm": {
126138
"errors": {
127139
"cloud_auth_required": "あなたの組織では Roo Code Cloud 認証が必要です。続行するにはサインインしてください。",

0 commit comments

Comments
 (0)