diff --git a/src/activate/CodeActionProvider.ts b/src/activate/CodeActionProvider.ts index dc294251e3..31fa4e04ee 100644 --- a/src/activate/CodeActionProvider.ts +++ b/src/activate/CodeActionProvider.ts @@ -1,18 +1,11 @@ import * as vscode from "vscode" -import { CodeActionName, CodeActionId } from "@roo-code/types" +import { CodeActionId } from "@roo-code/types" import { Package } from "../shared/package" import { getCodeActionCommand } from "../utils/commands" import { EditorUtils } from "../integrations/editor/EditorUtils" - -export const TITLES: Record = { - EXPLAIN: "Explain with Zoo Code", - FIX: "Fix with Zoo Code", - IMPROVE: "Improve with Zoo Code", - ADD_TO_CONTEXT: "Add to Zoo Code", - NEW_TASK: "New Roo Code Task", -} as const +import { t } from "../i18n" export class CodeActionProvider implements vscode.CodeActionProvider { public static readonly providedCodeActionKinds = [ @@ -51,12 +44,17 @@ export class CodeActionProvider implements vscode.CodeActionProvider { const actions: vscode.CodeAction[] = [] actions.push( - this.createAction(TITLES.ADD_TO_CONTEXT, vscode.CodeActionKind.QuickFix, "addToContext", [ - filePath, - effectiveRange.text, - effectiveRange.range.start.line + 1, - effectiveRange.range.end.line + 1, - ]), + this.createAction( + t("common:codeActions.addToContext"), + vscode.CodeActionKind.QuickFix, + "addToContext", + [ + filePath, + effectiveRange.text, + effectiveRange.range.start.line + 1, + effectiveRange.range.end.line + 1, + ], + ), ) if (context.diagnostics.length > 0) { @@ -66,7 +64,7 @@ export class CodeActionProvider implements vscode.CodeActionProvider { if (relevantDiagnostics.length > 0) { actions.push( - this.createAction(TITLES.FIX, vscode.CodeActionKind.QuickFix, "fixCode", [ + this.createAction(t("common:codeActions.fix"), vscode.CodeActionKind.QuickFix, "fixCode", [ filePath, effectiveRange.text, effectiveRange.range.start.line + 1, @@ -77,7 +75,7 @@ export class CodeActionProvider implements vscode.CodeActionProvider { } } else { actions.push( - this.createAction(TITLES.EXPLAIN, vscode.CodeActionKind.QuickFix, "explainCode", [ + this.createAction(t("common:codeActions.explain"), vscode.CodeActionKind.QuickFix, "explainCode", [ filePath, effectiveRange.text, effectiveRange.range.start.line + 1, @@ -86,7 +84,7 @@ export class CodeActionProvider implements vscode.CodeActionProvider { ) actions.push( - this.createAction(TITLES.IMPROVE, vscode.CodeActionKind.QuickFix, "improveCode", [ + this.createAction(t("common:codeActions.improve"), vscode.CodeActionKind.QuickFix, "improveCode", [ filePath, effectiveRange.text, effectiveRange.range.start.line + 1, diff --git a/src/activate/__tests__/CodeActionProvider.spec.ts b/src/activate/__tests__/CodeActionProvider.spec.ts index 1d412a2d59..1bbca6a525 100644 --- a/src/activate/__tests__/CodeActionProvider.spec.ts +++ b/src/activate/__tests__/CodeActionProvider.spec.ts @@ -3,7 +3,19 @@ import * as vscode from "vscode" import { EditorUtils } from "../../integrations/editor/EditorUtils" -import { CodeActionProvider, TITLES } from "../CodeActionProvider" +import { CodeActionProvider } from "../CodeActionProvider" + +vi.mock("../../i18n", () => ({ + t: vi.fn((key: string) => { + const translations: Record = { + "common:codeActions.explain": "Explain with Zoo Code", + "common:codeActions.fix": "Fix with Zoo Code", + "common:codeActions.improve": "Improve with Zoo Code", + "common:codeActions.addToContext": "Add to Zoo Code", + } + return translations[key] || key + }), +})) vi.mock("vscode", () => ({ CodeAction: vi.fn().mockImplementation((title, kind) => ({ @@ -74,9 +86,9 @@ describe("CodeActionProvider", () => { const actions = provider.provideCodeActions(mockDocument, mockRange, mockContext) expect(actions).toHaveLength(3) - expect((actions as any)[0].title).toBe(TITLES.ADD_TO_CONTEXT) - expect((actions as any)[1].title).toBe(TITLES.EXPLAIN) - expect((actions as any)[2].title).toBe(TITLES.IMPROVE) + expect((actions as any)[0].title).toBe("Add to Zoo Code") + expect((actions as any)[1].title).toBe("Explain with Zoo Code") + expect((actions as any)[2].title).toBe("Improve with Zoo Code") }) it("should provide fix action instead of fix logic when diagnostics exist", () => { @@ -87,8 +99,8 @@ describe("CodeActionProvider", () => { const actions = provider.provideCodeActions(mockDocument, mockRange, mockContext) expect(actions).toHaveLength(2) - expect((actions as any).some((a: any) => a.title === `${TITLES.FIX}`)).toBe(true) - expect((actions as any).some((a: any) => a.title === `${TITLES.ADD_TO_CONTEXT}`)).toBe(true) + expect((actions as any).some((a: any) => a.title === "Fix with Zoo Code")).toBe(true) + expect((actions as any).some((a: any) => a.title === "Add to Zoo Code")).toBe(true) }) it("should return empty array when no effective range", () => { diff --git a/src/i18n/locales/ca/common.json b/src/i18n/locales/ca/common.json index 59168a1b0a..a8c0300337 100644 --- a/src/i18n/locales/ca/common.json +++ b/src/i18n/locales/ca/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: Connectat correctament! Ara podeu utilitzar Zoo Code com a proveïdor d'IA.", "disconnected": "Zoo Code: Desconnectat correctament." } + }, + "codeActions": { + "explain": "Explica amb Zoo Code", + "fix": "Corregeix amb Zoo Code", + "improve": "Millora amb Zoo Code", + "addToContext": "Afegeix a Zoo Code" } } diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json index 0d9acc69bb..10961de9af 100644 --- a/src/i18n/locales/de/common.json +++ b/src/i18n/locales/de/common.json @@ -262,5 +262,11 @@ "connected": "Zoo Code: Erfolgreich verbunden! Du kannst Zoo Code jetzt als KI-Anbieter verwenden.", "disconnected": "Zoo Code: Erfolgreich getrennt." } + }, + "codeActions": { + "explain": "Mit Zoo Code erklären", + "fix": "Mit Zoo Code beheben", + "improve": "Mit Zoo Code verbessern", + "addToContext": "Zu Zoo Code hinzufügen" } } diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index 157a87c5dc..785e08e83b 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -259,5 +259,11 @@ "connected": "Zoo Code: Successfully connected! You can now use Zoo Code as your AI provider.", "disconnected": "Zoo Code: Disconnected successfully." } + }, + "codeActions": { + "explain": "Explain with Zoo Code", + "fix": "Fix with Zoo Code", + "improve": "Improve with Zoo Code", + "addToContext": "Add to Zoo Code" } } diff --git a/src/i18n/locales/es/common.json b/src/i18n/locales/es/common.json index f10bf5aa98..afe7e29a9e 100644 --- a/src/i18n/locales/es/common.json +++ b/src/i18n/locales/es/common.json @@ -262,5 +262,11 @@ "connected": "Zoo Code: ¡Conectado correctamente! Ahora puedes usar Zoo Code como proveedor de IA.", "disconnected": "Zoo Code: Desconectado correctamente." } + }, + "codeActions": { + "explain": "Explicar con Zoo Code", + "fix": "Corregir con Zoo Code", + "improve": "Mejorar con Zoo Code", + "addToContext": "Añadir a Zoo Code" } } diff --git a/src/i18n/locales/fr/common.json b/src/i18n/locales/fr/common.json index d61f38d515..08c3a4ce82 100644 --- a/src/i18n/locales/fr/common.json +++ b/src/i18n/locales/fr/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: Connecté avec succès ! Vous pouvez maintenant utiliser Zoo Code comme fournisseur d'IA.", "disconnected": "Zoo Code: Déconnecté avec succès." } + }, + "codeActions": { + "explain": "Expliquer avec Zoo Code", + "fix": "Corriger avec Zoo Code", + "improve": "Améliorer avec Zoo Code", + "addToContext": "Ajouter à Zoo Code" } } diff --git a/src/i18n/locales/hi/common.json b/src/i18n/locales/hi/common.json index 46f09e26d1..34a1114ef2 100644 --- a/src/i18n/locales/hi/common.json +++ b/src/i18n/locales/hi/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: सफलतापूर्वक कनेक्ट हो गया! अब तुम Zoo Code को अपने AI प्रदाता के रूप में उपयोग कर सकते हो।", "disconnected": "Zoo Code: सफलतापूर्वक डिस्कनेक्ट हो गया।" } + }, + "codeActions": { + "explain": "Zoo Code से समझाएँ", + "fix": "Zoo Code से ठीक करें", + "improve": "Zoo Code से सुधारें", + "addToContext": "Zoo Code में जोड़ें" } } diff --git a/src/i18n/locales/id/common.json b/src/i18n/locales/id/common.json index 252a5a7523..faa610c89b 100644 --- a/src/i18n/locales/id/common.json +++ b/src/i18n/locales/id/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: Berhasil terhubung! Kamu sekarang bisa menggunakan Zoo Code sebagai penyedia AI.", "disconnected": "Zoo Code: Berhasil terputus." } + }, + "codeActions": { + "explain": "Jelaskan dengan Zoo Code", + "fix": "Perbaiki dengan Zoo Code", + "improve": "Tingkatkan dengan Zoo Code", + "addToContext": "Tambahkan ke Zoo Code" } } diff --git a/src/i18n/locales/it/common.json b/src/i18n/locales/it/common.json index 7d7b1d3033..e3961e5901 100644 --- a/src/i18n/locales/it/common.json +++ b/src/i18n/locales/it/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: Connesso con successo! Ora puoi usare Zoo Code come fornitore AI.", "disconnected": "Zoo Code: Disconnesso con successo." } + }, + "codeActions": { + "explain": "Spiega con Zoo Code", + "fix": "Correggi con Zoo Code", + "improve": "Migliora con Zoo Code", + "addToContext": "Aggiungi a Zoo Code" } } diff --git a/src/i18n/locales/ja/common.json b/src/i18n/locales/ja/common.json index 4846ea932c..a1804e4b8c 100644 --- a/src/i18n/locales/ja/common.json +++ b/src/i18n/locales/ja/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: 接続に成功しました!Zoo Code を AI プロバイダーとして使用できます。", "disconnected": "Zoo Code: 正常に切断されました。" } + }, + "codeActions": { + "explain": "Zoo Codeで説明", + "fix": "Zoo Codeで修正", + "improve": "Zoo Codeで改善", + "addToContext": "Zoo Codeに追加" } } diff --git a/src/i18n/locales/ko/common.json b/src/i18n/locales/ko/common.json index 14f6823c44..edcc4ea312 100644 --- a/src/i18n/locales/ko/common.json +++ b/src/i18n/locales/ko/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: 연결에 성공했습니다! 이제 Zoo Code를 AI 제공자로 사용할 수 있습니다.", "disconnected": "Zoo Code: 연결이 해제되었습니다." } + }, + "codeActions": { + "explain": "Zoo Code로 설명", + "fix": "Zoo Code로 수정", + "improve": "Zoo Code로 개선", + "addToContext": "Zoo Code에 추가" } } diff --git a/src/i18n/locales/nl/common.json b/src/i18n/locales/nl/common.json index 7d38e7fe85..7dda89b7eb 100644 --- a/src/i18n/locales/nl/common.json +++ b/src/i18n/locales/nl/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: Succesvol verbonden! Je kunt Zoo Code nu gebruiken als AI-provider.", "disconnected": "Zoo Code: Succesvol losgekoppeld." } + }, + "codeActions": { + "explain": "Uitleggen met Zoo Code", + "fix": "Repareren met Zoo Code", + "improve": "Verbeteren met Zoo Code", + "addToContext": "Toevoegen aan Zoo Code" } } diff --git a/src/i18n/locales/pl/common.json b/src/i18n/locales/pl/common.json index 9405ed355c..152193755c 100644 --- a/src/i18n/locales/pl/common.json +++ b/src/i18n/locales/pl/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: Połączono pomyślnie! Możesz teraz używać Zoo Code jako dostawcy AI.", "disconnected": "Zoo Code: Rozłączono pomyślnie." } + }, + "codeActions": { + "explain": "Wyjaśnij z Zoo Code", + "fix": "Napraw z Zoo Code", + "improve": "Ulepsz z Zoo Code", + "addToContext": "Dodaj do Zoo Code" } } diff --git a/src/i18n/locales/pt-BR/common.json b/src/i18n/locales/pt-BR/common.json index 7f04df07e9..b72a4b75e9 100644 --- a/src/i18n/locales/pt-BR/common.json +++ b/src/i18n/locales/pt-BR/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: Conectado com sucesso! Agora você pode usar o Zoo Code como provedor de IA.", "disconnected": "Zoo Code: Desconectado com sucesso." } + }, + "codeActions": { + "explain": "Explicar com Zoo Code", + "fix": "Corrigir com Zoo Code", + "improve": "Melhorar com Zoo Code", + "addToContext": "Adicionar ao Zoo Code" } } diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json index fc39aff020..f438184d3d 100644 --- a/src/i18n/locales/ru/common.json +++ b/src/i18n/locales/ru/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: Успешно подключено! Теперь ты можешь использовать Zoo Code в качестве AI-провайдера.", "disconnected": "Zoo Code: Успешно отключено." } + }, + "codeActions": { + "explain": "Объяснить с Zoo Code", + "fix": "Исправить с Zoo Code", + "improve": "Улучшить с Zoo Code", + "addToContext": "Добавить в Zoo Code" } } diff --git a/src/i18n/locales/tr/common.json b/src/i18n/locales/tr/common.json index 6bb669b454..b02ce455c7 100644 --- a/src/i18n/locales/tr/common.json +++ b/src/i18n/locales/tr/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: Başarıyla bağlandı! Artık Zoo Code'u AI sağlayıcısı olarak kullanabilirsin.", "disconnected": "Zoo Code: Başarıyla bağlantı kesildi." } + }, + "codeActions": { + "explain": "Zoo Code ile açıkla", + "fix": "Zoo Code ile düzelt", + "improve": "Zoo Code ile iyileştir", + "addToContext": "Zoo Code'a ekle" } } diff --git a/src/i18n/locales/vi/common.json b/src/i18n/locales/vi/common.json index 57b01d682f..fbf9d64c14 100644 --- a/src/i18n/locales/vi/common.json +++ b/src/i18n/locales/vi/common.json @@ -274,5 +274,11 @@ "connected": "Zoo Code: Kết nối thành công! Bạn có thể sử dụng Zoo Code làm nhà cung cấp AI.", "disconnected": "Zoo Code: Đã ngắt kết nối thành công." } + }, + "codeActions": { + "explain": "Giải thích bằng Zoo Code", + "fix": "Sửa bằng Zoo Code", + "improve": "Cải thiện bằng Zoo Code", + "addToContext": "Thêm vào Zoo Code" } } diff --git a/src/i18n/locales/zh-CN/common.json b/src/i18n/locales/zh-CN/common.json index 62a176ff69..65a6fac5ac 100644 --- a/src/i18n/locales/zh-CN/common.json +++ b/src/i18n/locales/zh-CN/common.json @@ -272,5 +272,11 @@ "connected": "Zoo Code: 连接成功!你现在可以使用 Zoo Code 作为 AI 提供商。", "disconnected": "Zoo Code: 已成功断开连接。" } + }, + "codeActions": { + "explain": "使用 Zoo Code 解释", + "fix": "使用 Zoo Code 修复", + "improve": "使用 Zoo Code 改进", + "addToContext": "添加到 Zoo Code" } } diff --git a/src/i18n/locales/zh-TW/common.json b/src/i18n/locales/zh-TW/common.json index 54325ad022..ba9af0cf53 100644 --- a/src/i18n/locales/zh-TW/common.json +++ b/src/i18n/locales/zh-TW/common.json @@ -267,5 +267,11 @@ "connected": "Zoo Code: 連線成功!你現在可以使用 Zoo Code 作為 AI 提供商。", "disconnected": "Zoo Code: 已成功中斷連線。" } + }, + "codeActions": { + "explain": "使用 Zoo Code 解釋", + "fix": "使用 Zoo Code 修復", + "improve": "使用 Zoo Code 改進", + "addToContext": "新增至 Zoo Code" } }