diff --git a/src/editor/core/controller.ts b/src/editor/core/controller.ts index cc4eb9512..e2e0573a1 100644 --- a/src/editor/core/controller.ts +++ b/src/editor/core/controller.ts @@ -41,7 +41,7 @@ import { t } from "@/platform/i18n"; import { call, commands } from "@/platform/ipc"; import { isRemoteWindow } from "@/platform/remote"; import { fileIconName, showContextMenu, type MenuItem } from "@/ui"; -import { usePlatform } from "@/platform/platformInfo"; +import { fileManagerName } from "@/platform/fileManager"; import { activateTab, changeSplitOrientation, @@ -1919,7 +1919,7 @@ function openInMenu(path: string): MenuItem { label: "Open In", submenu: [ { kind: "action", action: "navigate.selectIn", arg: { path }, label: "Project View" }, - { kind: "action", action: "project.revealInFinder", arg: path, label: revealLabel() }, + { kind: "action", action: "project.revealInFinder", arg: path, label: fileManagerName() }, { kind: "action", action: "project.openInTerminal", arg: path, label: "Terminal" }, { kind: "separator" }, ...menuGroupItems("openIn", { paths: [path] }), @@ -2004,12 +2004,6 @@ export function editorController(): EditorController { return (controller ??= new EditorController()); } -/** "Finder" / "Explorer" / "Files", like IDEA's Open In submenu. */ -function revealLabel(): string { - const os = usePlatform.getState().os; - return os === "macos" ? "Finder" : os === "windows" ? "Explorer" : "Files"; -} - function inPopup(target: EventTarget | null): boolean { return target instanceof Element && !!target.closest("[data-popup]"); } diff --git a/src/features/project-tree/actions.ts b/src/features/project-tree/actions.ts index d980b6d39..8f52404bc 100644 --- a/src/features/project-tree/actions.ts +++ b/src/features/project-tree/actions.ts @@ -2,6 +2,7 @@ import { activeEditor } from "@/editor/api"; import { getAction, registerActions, type Action } from "@/platform/actions"; import { getContext } from "@/platform/context"; +import { revealInFileManagerLabel } from "@/platform/fileManager"; import { dirname, useProject } from "@/platform/project"; import { showContextMenu, type MenuItem } from "@/ui"; import { maybeEditorService, menuGroupItems, toolWindowService } from "@/workbench/contributions"; @@ -388,7 +389,7 @@ export function registerProjectActions(): () => void { copyPath("source", "project.copySourceRootPath", "Copy Path From Source Root"), { id: "project.revealInFinder", - title: tx`Reveal in ${revealLabel()}`, + title: revealInFileManagerLabel(), category: "Project View", icon: "external-link", when: OPEN, diff --git a/src/features/project-tree/contextMenu.ts b/src/features/project-tree/contextMenu.ts index 9775c9b4c..dc6f93cff 100644 --- a/src/features/project-tree/contextMenu.ts +++ b/src/features/project-tree/contextMenu.ts @@ -1,5 +1,6 @@ /** Context menu and "New" popup of the project view. */ import { executeAction, getAction } from "@/platform/actions"; +import { fileManagerName } from "@/platform/fileManager"; import { formatBinding, hostBinding, isMacHost, shortcutLabel } from "@/platform/keymap"; import { relativePath, useProject } from "@/platform/project"; import { currentDetectedRoots, currentRoots } from "@/platform/projectRoots"; @@ -458,10 +459,7 @@ function libraryMenuItems(nodes: ProjectNode[]): MenuItem[] { } export function revealLabel() { - const ua = typeof navigator !== "undefined" ? navigator.userAgent : ""; - if (/Win/i.test(ua)) return "Explorer"; - if (/Linux/i.test(ua)) return "Files"; - return "Finder"; + return fileManagerName(); } /** What contributed menu groups see: the selected (non-placeholder) paths. */ diff --git a/src/features/project-tree/filePath.ts b/src/features/project-tree/filePath.ts index 645ac7925..f797500ea 100644 --- a/src/features/project-tree/filePath.ts +++ b/src/features/project-tree/filePath.ts @@ -1,10 +1,9 @@ /** Navigate › File Path (⌥⌘F12): the file and its folders, each revealed in the OS file manager. */ import { openPopup } from "@/editor/lsp/popupStore"; -import { revealInFileManager } from "@/platform/fileManager"; +import { fileManagerName, revealInFileManager } from "@/platform/fileManager"; import { notifications } from "@/workbench/contributions"; import { tx } from "@/platform/i18n"; import { nameOf, parentOf } from "./paths"; -import { revealLabel } from "./contextMenu"; const DRIVE_ROOT = /^[A-Za-z]:\/?$/; @@ -24,7 +23,7 @@ async function reveal(path: string) { try { await revealInFileManager(path); } catch (e) { - const fileManager = revealLabel(); + const fileManager = tx(fileManagerName()); notifications().notify({ level: "error", title: tx`Cannot reveal in ${fileManager}`, diff --git a/src/features/project-tree/operations.ts b/src/features/project-tree/operations.ts index eb705e90f..55241340e 100644 --- a/src/features/project-tree/operations.ts +++ b/src/features/project-tree/operations.ts @@ -5,7 +5,7 @@ import { createElement, Fragment } from "react"; import { askUsagesDetected, fileUsages, viewUsages } from "@/editor/refactor"; import { executeAction, getAction } from "@/platform/actions"; -import { fileManagerPath, revealInFileManager } from "@/platform/fileManager"; +import { fileManagerName, fileManagerPath, revealInFileManager } from "@/platform/fileManager"; import { maybeEditorService, notifications } from "@/workbench/contributions"; import { ask, confirmChecked } from "@/workbench/messages"; import { osClipboard } from "./clipboard"; @@ -837,10 +837,8 @@ export async function revealInFinder(nodes: ProjectNode[] = selectedNodes()) { try { await revealInFileManager(nodes.map((n) => n.path)); } catch (e) { - // Same names as contextMenu.revealLabel (kept local: contextMenu imports - // this module, so importing it back would be a cycle). - const desktop = usePlatform.getState().os; - fail(`Cannot reveal in ${desktop === "windows" ? "Explorer" : desktop === "linux" ? "Files" : "Finder"}`, e); + const fileManager = tx(fileManagerName()); + fail(tx`Cannot reveal in ${fileManager}`, e); } } diff --git a/src/features/project-tree/selectIn.test.ts b/src/features/project-tree/selectIn.test.ts index 751cc2352..391016951 100644 --- a/src/features/project-tree/selectIn.test.ts +++ b/src/features/project-tree/selectIn.test.ts @@ -1,6 +1,8 @@ import { afterEach, describe, expect, it } from "vitest"; import { executeAction, getAction, registerActions } from "@/platform/actions"; import { setContext } from "@/platform/context"; +import { _resetI18nForTests, setLocale } from "@/platform/i18n"; +import { usePlatform } from "@/platform/platformInfo"; import { resolveMenuItems, useContextMenuStore, type MenuItem } from "@/ui"; import { provideEditorService, registerMenuGroup, type EditorService } from "@/workbench/contributions"; import { registerProjectActions, selectInTargets } from "./actions"; @@ -33,6 +35,38 @@ describe("Open in Terminal", () => { }); describe("Select In (⌥F1)", () => { + it.each([ + ["macos", "Finder", "Reveal in Finder"], + ["windows", "Explorer", "Show in Explorer"], + ["linux", "Files", "Show in Files"], + ])("uses the platform store for %s menus and action titles", (os, name, title) => { + const previous = usePlatform.getState().os; + try { + usePlatform.setState({ os }); + disposers.push(registerProjectActions()); + expect(revealLabel()).toBe(name); + expect(labels(selectInTargets("/p/a.ts"))).toContain(name); + expect(getAction("project.revealInFinder")?.title).toBe(title); + } finally { + usePlatform.setState({ os: previous }); + } + }); + + it("retranslates the file manager action after registering in Chinese", async () => { + const previous = usePlatform.getState().os; + try { + usePlatform.setState({ os: "windows" }); + await setLocale("zh"); + disposers.push(registerProjectActions()); + expect(getAction("project.revealInFinder")?.title).toBe("在资源管理器中显示"); + await setLocale("en"); + expect(getAction("project.revealInFinder")?.title).toBe("Show in Explorer"); + } finally { + usePlatform.setState({ os: previous }); + _resetI18nForTests(); + } + }); + it("lists the project view, contributed targets, Finder and the terminal", () => { disposers.push( registerMenuGroup({ diff --git a/src/features/settings/pages/vcs.tsx b/src/features/settings/pages/vcs.tsx index db0875711..239964c3d 100644 --- a/src/features/settings/pages/vcs.tsx +++ b/src/features/settings/pages/vcs.tsx @@ -8,6 +8,7 @@ import { useEffect, useId, useState } from "react"; import { call, commands, isTauri } from "@/platform/ipc"; import { useProject } from "@/platform/project"; import { WORKFLOW_LIMITS, type IssueLinkValid } from "@/platform/workflowSettings"; +import { showInFileManagerLabel } from "@/platform/fileManager"; import { Button, Icon, Input, type SelectOption, T } from "@/ui"; import { Row, SettingSelect } from "../components/Form"; import { useSetting } from "../components/context"; @@ -222,7 +223,7 @@ function PushDialogRows() { const PATCH_CREATED: SelectOption[] = [ { value: "ask", label: "Ask" }, { value: "no", label: "No" }, - { value: "reveal", label: "Show in Finder" }, + { value: "reveal", label: showInFileManagerLabel() }, ]; const INCOMING: SelectOption[] = [ diff --git a/src/features/vcs/__tests__/patchFileManager.test.ts b/src/features/vcs/__tests__/patchFileManager.test.ts new file mode 100644 index 000000000..bb9968605 --- /dev/null +++ b/src/features/vcs/__tests__/patchFileManager.test.ts @@ -0,0 +1,22 @@ +import { afterEach, expect, it } from "vitest"; +import { _resetI18nForTests, setLocale, tx } from "@/platform/i18n"; +import { usePlatform } from "@/platform/platformInfo"; +import { patchSavedBody } from "../patches"; + +afterEach(() => _resetI18nForTests()); + +it.each([ + ["macos", "Patch file created successfully. Show it in Finder?", "补丁文件已创建。是否在访达中显示?"], + ["windows", "Patch file created successfully. Show it in Explorer?", "补丁文件已创建。是否在资源管理器中显示?"], + ["linux", "Patch file created successfully. Show it in Files?", "补丁文件已创建。是否在文件管理器中显示?"], +])("asks to show the saved patch in the %s file manager", async (os, english, chinese) => { + const previous = usePlatform.getState().os; + try { + usePlatform.setState({ os }); + expect(patchSavedBody()).toBe(english); + await setLocale("zh"); + expect(tx(patchSavedBody())).toBe(chinese); + } finally { + usePlatform.setState({ os: previous }); + } +}); diff --git a/src/features/vcs/patches.tsx b/src/features/vcs/patches.tsx index 1c07e9882..ee3070850 100644 --- a/src/features/vcs/patches.tsx +++ b/src/features/vcs/patches.tsx @@ -2,7 +2,7 @@ import { commitRepo } from "./multiRoot"; /** Create Patch… (from local changes or commits) and Apply Patch… (file or clipboard, with a preview). */ import { useEffect, useState } from "react"; import type { Commit, FileStatus, PatchFile, PatchSource, ShelvedChangeList } from "@/bindings"; -import { revealInFileManager } from "@/platform/fileManager"; +import { fileManagerName, revealInFileManager } from "@/platform/fileManager"; import { call, commands } from "@/platform/ipc"; import { Button, Checkbox, Dialog, Icon, Input, List, Spinner, fileIconName, T } from "@/ui"; import { workflowSettings } from "@/platform/workflowSettings"; @@ -82,14 +82,24 @@ async function browseSave(current: string): Promise { } } -/** Settings › Version Control › Confirmation › When patch is created: ask / no / show in Finder. */ +/** Whole sentences let each locale translate the patch question. */ +export function patchSavedBody(): string { + const name = fileManagerName(); + return name === "Finder" + ? "Patch file created successfully. Show it in Finder?" + : name === "Explorer" + ? "Patch file created successfully. Show it in Explorer?" + : "Patch file created successfully. Show it in Files?"; +} + +/** Settings › Version Control › Confirmation › When patch is created: ask / no / show in the file manager. */ async function afterPatchSaved(path: string) { const mode = workflowSettings().vcs.confirmation.onPatchCreated; if (mode === "no") return; if (mode === "ask") { const r = await ask({ title: "Create Patch", - body: tx("Patch file created successfully. Show it in Finder?"), + body: tx(patchSavedBody()), checkbox: "Don't ask again", buttons: [{ id: "show", label: "Show", primary: true }], }); diff --git a/src/features/welcome/RecentList.tsx b/src/features/welcome/RecentList.tsx index 57ebdfb86..b80d39bd3 100644 --- a/src/features/welcome/RecentList.tsx +++ b/src/features/welcome/RecentList.tsx @@ -1,7 +1,7 @@ import { useMemo, useState, type KeyboardEvent, type MouseEvent, type ReactNode } from "react"; import clsx from "clsx"; import { call, commands, type RecentProject, type RecentProjectGroup } from "@/platform/ipc"; -import { revealInFileManager } from "@/platform/fileManager"; +import { revealInFileManager, showInFileManagerLabel } from "@/platform/fileManager"; import { parseRemoteLocation } from "@/platform/remote"; import { HighlightedText, @@ -137,7 +137,7 @@ export function recentMenu(project: RecentProject, onOpened?: () => void, onRemo : { kind: "action", action: "file.openInNewWindow", arg: project.path, label: "Open in New Window" }, { id: "reveal", - label: "Show in Finder", + label: showInFileManagerLabel(), icon: "external-link", run: () => void revealInFileManager(project.path).catch(() => undefined), }, diff --git a/src/features/welcome/welcome.test.tsx b/src/features/welcome/welcome.test.tsx index 7c8176790..2c8334e2c 100644 --- a/src/features/welcome/welcome.test.tsx +++ b/src/features/welcome/welcome.test.tsx @@ -31,6 +31,7 @@ vi.mock("@tauri-apps/api/webview", () => ({ })); import { registerActions } from "@/platform/actions"; +import { usePlatform } from "@/platform/platformInfo"; import { useProject } from "@/platform/project"; import { ContextMenuHost } from "@/ui"; import { registerSettingsPage } from "@/workbench/contributions"; @@ -38,6 +39,7 @@ import { MessagesHost } from "@/workbench/messages"; import { projectInitials } from "@/workbench/projectColor"; import { handleListKey } from "./ProjectsPage"; import { customizeView } from "./CustomizePage"; +import { recentMenu } from "./RecentList"; import { filterRecent, useRecent } from "./recent"; import { WelcomeView } from "./WelcomeView"; @@ -126,11 +128,30 @@ describe("Welcome › Projects", () => { fireEvent.click(within(screen.getAllByRole("option")[0]!).getByRole("button", { name: "Project actions" })); const menu = await screen.findByRole("menu"); expect(within(menu).getByText("Open in New Window")).toBeTruthy(); - expect(within(menu).getByText("Show in Finder")).toBeTruthy(); expect(within(menu).getByText("Remove from Recent Projects…")).toBeTruthy(); dispose(); }); + // Regression: the welcome menus are shared by the projects page and the two + // recent-project popups, and used to hardcode "Show in Finder" on every OS. + it("names the platform's file manager for the reveal action", () => { + const previous = usePlatform.getState().os; + const revealLabel = () => { + const items = recentMenu(p("acme-api", "/Users/me/repo/acme-api")); + return (items.find((i) => "id" in i && i.id === "reveal") as { label?: string } | undefined)?.label; + }; + try { + usePlatform.setState({ os: "windows" }); + expect(revealLabel()).toBe("Show in Explorer"); + usePlatform.setState({ os: "linux" }); + expect(revealLabel()).toBe("Show in Files"); + usePlatform.setState({ os: "macos" }); + expect(revealLabel()).toBe("Show in Finder"); + } finally { + usePlatform.setState({ os: previous }); + } + }); + it("shows the landing page without recent projects", async () => { recent = []; await renderWelcome(); diff --git a/src/platform/fileManager.test.ts b/src/platform/fileManager.test.ts index b8b8f1333..b456b14cc 100644 --- a/src/platform/fileManager.test.ts +++ b/src/platform/fileManager.test.ts @@ -1,8 +1,46 @@ -import { describe, expect, it } from "vitest"; -import { fileManagerPath } from "./fileManager"; +import { afterEach, describe, expect, it } from "vitest"; +import { fileManagerName, fileManagerPath, revealInFileManagerLabel, showInFileManagerLabel } from "./fileManager"; +import { _resetI18nForTests, setLocale, tx } from "./i18n"; const raw = String.raw; +afterEach(() => _resetI18nForTests()); + +describe("file manager labels", () => { + it.each([ + ["macos", "Finder", "Reveal in Finder"], + ["windows", "Explorer", "Show in Explorer"], + ["linux", "Files", "Show in Files"], + ["web", "Files", "Show in Files"], + ])("names the %s file manager in submenus and project actions", (os, name, label) => { + expect(fileManagerName(os)).toBe(name); + expect(revealInFileManagerLabel(os)).toBe(label); + }); + + it("translates the project action on every desktop platform", async () => { + await setLocale("zh"); + expect(tx(revealInFileManagerLabel("macos"))).toBe("在访达中显示"); + expect(tx(revealInFileManagerLabel("windows"))).toBe("在资源管理器中显示"); + expect(tx(revealInFileManagerLabel("linux"))).toBe("在文件管理器中显示"); + }); +}); + +describe("showInFileManagerLabel", () => { + it("names the file manager of the platform instead of always Finder", () => { + expect(showInFileManagerLabel("macos")).toBe("Show in Finder"); + expect(showInFileManagerLabel("windows")).toBe("Show in Explorer"); + expect(showInFileManagerLabel("linux")).toBe("Show in Files"); + expect(showInFileManagerLabel("web")).toBe("Show in Files"); + }); + + it("is translated into the platform's file manager, not Finder", async () => { + await setLocale("zh"); + expect(tx(showInFileManagerLabel("macos"))).toBe("在访达中显示"); + expect(tx(showInFileManagerLabel("windows"))).toBe("在资源管理器中显示"); + expect(tx(showInFileManagerLabel("linux"))).toBe("在文件管理器中显示"); + }); +}); + describe("fileManagerPath", () => { it("converts verbatim UNC paths to the form Windows Shell accepts", () => { expect( diff --git a/src/platform/fileManager.ts b/src/platform/fileManager.ts index 02b8daf11..2d469afbe 100644 --- a/src/platform/fileManager.ts +++ b/src/platform/fileManager.ts @@ -29,6 +29,20 @@ export function fileManagerPath( return path; } +/** English source text; callers and the action registry translate it. */ +export function fileManagerName(os = usePlatform.getState().os): string { + return os === "macos" ? "Finder" : os === "windows" ? "Explorer" : "Files"; +} + +export function showInFileManagerLabel(os = usePlatform.getState().os): string { + return os === "macos" ? "Show in Finder" : os === "windows" ? "Show in Explorer" : "Show in Files"; +} + +/** The project action has historically used "Reveal" on macOS. */ +export function revealInFileManagerLabel(os = usePlatform.getState().os): string { + return os === "macos" ? "Reveal in Finder" : showInFileManagerLabel(os); +} + /** Reveals files in Explorer, Finder or the Linux desktop's file manager. */ export async function revealInFileManager(paths: string | readonly string[]): Promise { if (!isTauri()) return; diff --git a/src/platform/locales/text/en.json b/src/platform/locales/text/en.json index 411d4aedb..45e25142c 100644 --- a/src/platform/locales/text/en.json +++ b/src/platform/locales/text/en.json @@ -1,4 +1,15 @@ { + "Finder": "Finder", + "Explorer": "Explorer", + "Files": "Files", + "Show in Finder": "Show in Finder", + "Show in Explorer": "Show in Explorer", + "Show in Files": "Show in Files", + "Reveal in Finder": "Reveal in Finder", + "Patch file created successfully. Show it in Finder?": "Patch file created successfully. Show it in Finder?", + "Patch file created successfully. Show it in Explorer?": "Patch file created successfully. Show it in Explorer?", + "Patch file created successfully. Show it in Files?": "Patch file created successfully. Show it in Files?", + "Cannot reveal in {fileManager}": "Cannot reveal in {fileManager}", "Active Editor": "Active Editor", "Soft-Wrap": "Soft-Wrap", "The language server Java executable ({path}) cannot run on this machine. Choose a working JDK in {setting}, or set it to Auto.": "The language server Java executable ({path}) cannot run on this machine. Choose a working JDK in {setting}, or set it to Auto.", diff --git a/src/platform/locales/text/es.json b/src/platform/locales/text/es.json index afc607e6c..8c9e096f7 100644 --- a/src/platform/locales/text/es.json +++ b/src/platform/locales/text/es.json @@ -2072,6 +2072,8 @@ "Show file extension": "Mostrar extensión de archivo", "Show gutter icons": "Mostrar iconos del margen", "Show hard wrap and visual guides (configured in Code Style options)": "Mostrar ajuste de línea fijo y guías visuales (configurado en las opciones de Estilo de código)", + "Show in Explorer": "Mostrar en el Explorador", + "Show in Files": "Mostrar en Archivos", "Show in Finder": "Mostrar en Finder", "Show in tool window": "Mostrar en ventana de herramientas", "Show inlay Run to Cursor popup": "Mostrar ventana emergente integrada Ejecutar hasta el cursor", @@ -4069,7 +4071,6 @@ "Include {path}": "Incluir {path}", "Project View: {option}": "Vista del proyecto: {option}", "Project View: Show {view}": "Vista del proyecto: Mostrar {view}", - "Reveal in {fileManager}": "Mostrar en {fileManager}", "Unmark as {role}": "Desmarcar como {role}", "Updated references in {count} file": "Referencias actualizadas en {count} archivo", "Updated references in {count} files": "Referencias actualizadas en {count} archivos", @@ -4779,6 +4780,8 @@ "Show Push dialog for Commit and Push": "Mostrar diálogo de Push al Confirmar y hacer Push", "Show Push dialog only when committing to protected branches": "Mostrar diálogo de Push solo al confirmar en ramas protegidas", "Combine stashes and shelves in one tab": "Combinar stashes y estantes en una sola pestaña", + "Patch file created successfully. Show it in Explorer?": "Archivo de parche creado correctamente. ¿Mostrarlo en el Explorador?", + "Patch file created successfully. Show it in Files?": "Archivo de parche creado correctamente. ¿Mostrarlo en Archivos?", "Patch file created successfully. Show it in Finder?": "Archivo de parche creado correctamente. ¿Mostrarlo en Finder?", "File names": "Nombres de archivo", "Large files": "Archivos grandes", diff --git a/src/platform/locales/text/fr.json b/src/platform/locales/text/fr.json index 111bdc698..4df792978 100644 --- a/src/platform/locales/text/fr.json +++ b/src/platform/locales/text/fr.json @@ -1971,6 +1971,8 @@ "Show file extension": "Afficher l'extension du fichier", "Show gutter icons": "Afficher les icônes de la gouttière", "Show hard wrap and visual guides (configured in Code Style options)": "Afficher le retour à la ligne forcé et les repères visuels (configurés dans les options de style de code)", + "Show in Explorer": "Afficher dans l'Explorateur", + "Show in Files": "Afficher dans Fichiers", "Show in Finder": "Afficher dans le Finder", "Show in tool window": "Afficher dans la fenêtre d'outil", "Show inlay Run to Cursor popup": "Afficher la fenêtre intégrée Exécuter jusqu'au curseur", @@ -3926,7 +3928,6 @@ "Include {path}": "Inclure {path}", "Project View: {option}": "Vue Projet : {option}", "Project View: Show {view}": "Vue Projet : afficher {view}", - "Reveal in {fileManager}": "Afficher dans {fileManager}", "Unmark as {role}": "Retirer le marquage {role}", "Updated references in {count} file": "Références mises à jour dans {count} fichier", "Updated references in {count} files": "Références mises à jour dans {count} fichiers", @@ -4627,6 +4628,8 @@ "Show Push dialog for Commit and Push": "Afficher la boîte de dialogue Push pour Commit et push", "Show Push dialog only when committing to protected branches": "Afficher la boîte de dialogue Push uniquement pour les commits sur des branches protégées", "Combine stashes and shelves in one tab": "Regrouper les remises et les modifications mises de côté dans un seul onglet", + "Patch file created successfully. Show it in Explorer?": "Fichier de patch créé. L'afficher dans l'Explorateur ?", + "Patch file created successfully. Show it in Files?": "Fichier de patch créé. L'afficher dans Fichiers ?", "Patch file created successfully. Show it in Finder?": "Fichier de patch créé. L'afficher dans le Finder ?", "File names": "Noms de fichiers", "Large files": "Fichiers volumineux", diff --git a/src/platform/locales/text/ko.json b/src/platform/locales/text/ko.json index 1141da1c0..9e1deb3cd 100644 --- a/src/platform/locales/text/ko.json +++ b/src/platform/locales/text/ko.json @@ -2128,6 +2128,8 @@ "Show file extension": "파일 확장자 표시", "Show gutter icons": "여백 아이콘 표시", "Show hard wrap and visual guides (configured in Code Style options)": "하드 랩 및 시각적 가이드 표시(코드 스타일 옵션에서 구성)", + "Show in Explorer": "탐색기에서 표시", + "Show in Files": "파일에서 표시", "Show in Finder": "Finder에서 표시", "Show in tool window": "도구 창에 표시", "Show inlay Run to Cursor popup": "인레이 “커서 위치까지 실행” 팝업 표시", @@ -4135,7 +4137,6 @@ "Include {path}": "{path} 포함", "Project View: {option}": "프로젝트 뷰: {option}", "Project View: Show {view}": "프로젝트 뷰: {view} 표시", - "Reveal in {fileManager}": "{fileManager}에서 표시", "Unmark as {role}": "{role} 표시 해제", "Updated references in {count} file": "파일 {count}개의 참조를 업데이트했습니다", "Updated references in {count} files": "파일 {count}개의 참조를 업데이트했습니다", @@ -4852,6 +4853,8 @@ "Show Push dialog for Commit and Push": "커밋 및 푸시에 대한 푸시 대화 상자 표시", "Show Push dialog only when committing to protected branches": "보호된 브랜치에 커밋할 때만 푸시 대화 상자 표시", "Combine stashes and shelves in one tab": "스태시와 보류 항목을 하나의 탭에 결합", + "Patch file created successfully. Show it in Explorer?": "패치 파일이 생성되었습니다. 탐색기에서 표시하시겠습니까?", + "Patch file created successfully. Show it in Files?": "패치 파일이 생성되었습니다. 파일에서 표시하시겠습니까?", "Patch file created successfully. Show it in Finder?": "패치 파일이 생성되었습니다. Finder에서 표시하시겠습니까?", "File names": "파일 이름", "Large files": "대용량 파일", diff --git a/src/platform/locales/text/pl.json b/src/platform/locales/text/pl.json index 1f0e2d015..40b1efb83 100644 --- a/src/platform/locales/text/pl.json +++ b/src/platform/locales/text/pl.json @@ -2053,6 +2053,8 @@ "Show file extension": "Pokaż rozszerzenie pliku", "Show gutter icons": "Pokaż ikony na marginesie", "Show hard wrap and visual guides (configured in Code Style options)": "Pokaż twarde zawijanie i linie pomocnicze (skonfigurowane w opcjach Stylu Kodu)", + "Show in Explorer": "Pokaż w Eksploratorze", + "Show in Files": "Pokaż w programie Pliki", "Show in Finder": "Pokaż w Finderze", "Show in tool window": "Pokaż w oknie narzędziowym", "Show inlay Run to Cursor popup": "Pokaż wewnątrzlinijkowe okno wyskakujące 'Uruchom do kursora'", @@ -4028,7 +4030,6 @@ "Include {path}": "Dołącz {path}", "Project View: {option}": "Widok projektu: {option}", "Project View: Show {view}": "Widok projektu: Pokaż {view}", - "Reveal in {fileManager}": "Pokaż w programie {fileManager}", "Unmark as {role}": "Odznacz jako {role}", "Updated references in {count} file": "Zaktualizowano odnośniki w {count} pliku", "Updated references in {count} files": "Zaktualizowano odnośniki w {count} plikach", @@ -4730,6 +4731,8 @@ "Show Push dialog for Commit and Push": "Pokaż okno dialogowe Wysyłania (Push) podczas zatwierdzania i wysyłania (Commit and Push)", "Show Push dialog only when committing to protected branches": "Pokaż okno dialogowe Wysyłania tylko przy zatwierdzaniu do chronionych gałęzi", "Combine stashes and shelves in one tab": "Połącz schowki (stashes) i półki (shelves) na jednej karcie", + "Patch file created successfully. Show it in Explorer?": "Plik łatki utworzono pomyślnie. Wyświetlić w Eksploratorze?", + "Patch file created successfully. Show it in Files?": "Plik łatki utworzono pomyślnie. Wyświetlić w programie Pliki?", "Patch file created successfully. Show it in Finder?": "Plik łatki utworzono pomyślnie. Wyświetlić w programie Finder?", "File names": "Nazwy plików", "Large files": "Duże pliki", diff --git a/src/platform/locales/text/pt.json b/src/platform/locales/text/pt.json index dccb6faf5..958c677ed 100644 --- a/src/platform/locales/text/pt.json +++ b/src/platform/locales/text/pt.json @@ -2054,6 +2054,8 @@ "Show file extension": "Mostrar extensão do arquivo", "Show gutter icons": "Mostrar ícones na margem", "Show hard wrap and visual guides (configured in Code Style options)": "Mostrar quebra forçada e guias visuais (configurado nas opções de Estilo de Código)", + "Show in Explorer": "Mostrar no Explorer", + "Show in Files": "Mostrar nos Arquivos", "Show in Finder": "Mostrar no Finder", "Show in tool window": "Mostrar na janela de ferramentas", "Show inlay Run to Cursor popup": "Mostrar popup inline de Executar até o Cursor", @@ -4034,7 +4036,6 @@ "Include {path}": "Incluir {path}", "Project View: {option}": "Visualização do projeto: {option}", "Project View: Show {view}": "Visualização do projeto: mostrar {view}", - "Reveal in {fileManager}": "Revelar no {fileManager}", "Unmark as {role}": "Desmarcar como {role}", "Updated references in {count} file": "Referências atualizadas em {count} arquivo", "Updated references in {count} files": "Referências atualizadas em {count} arquivos", @@ -4744,6 +4745,8 @@ "Show Push dialog for Commit and Push": "Mostrar caixa de diálogo de Push para Commit e Push", "Show Push dialog only when committing to protected branches": "Mostrar caixa de diálogo de Push apenas ao comitar em branches protegidas", "Combine stashes and shelves in one tab": "Combinar stashes e shelves em uma única aba", + "Patch file created successfully. Show it in Explorer?": "Arquivo de patch criado com sucesso. Mostrar no Explorer?", + "Patch file created successfully. Show it in Files?": "Arquivo de patch criado com sucesso. Mostrar nos Arquivos?", "Patch file created successfully. Show it in Finder?": "Arquivo de patch criado com sucesso. Mostrar no Finder?", "File names": "Nomes de arquivos", "Large files": "Arquivos grandes", diff --git a/src/platform/locales/text/zh.json b/src/platform/locales/text/zh.json index 59c0100d1..e525f2eb6 100644 --- a/src/platform/locales/text/zh.json +++ b/src/platform/locales/text/zh.json @@ -1,4 +1,7 @@ { + "Finder": "访达", + "Explorer": "资源管理器", + "Reveal in Finder": "在访达中显示", "Active Editor": "活动编辑器", "The language server Java executable ({path}) cannot run on this machine. Choose a working JDK in {setting}, or set it to Auto.": "语言服务器的 Java 可执行文件({path})无法在此机器上运行。请在 {setting} 中选择可正常运行的 JDK,或设为自动。", "Input queue is full (4 MiB or 1024 writes); input was not sent.": "输入队列已满(4 MiB 或 1024 次写入);本次输入未发送。", @@ -2341,6 +2344,8 @@ "Show file extension": "显示文件扩展名", "Show gutter icons": "显示装订区域图标", "Show hard wrap and visual guides (configured in Code Style options)": "显示硬换行和视觉参考线(在代码样式选项中配置)", + "Show in Explorer": "在资源管理器中显示", + "Show in Files": "在文件管理器中显示", "Show in Finder": "在访达中显示", "Show in tool window": "在工具窗口中显示", "Show inlay Run to Cursor popup": "显示内嵌的“运行到光标处”按钮", @@ -4379,7 +4384,6 @@ "Include {path}": "包含 {path}", "Project View: {option}": "项目视图:{option}", "Project View: Show {view}": "项目视图:显示{view}", - "Reveal in {fileManager}": "在{fileManager}中显示", "Unmark as {role}": "取消标记为{role}", "Updated references in {count} file": "已更新 {count} 个文件中的引用", "Updated references in {count} files": "已更新 {count} 个文件中的引用", @@ -5109,6 +5113,8 @@ "Show Push dialog for Commit and Push": "提交并推送时显示推送对话框", "Show Push dialog only when committing to protected branches": "仅在提交到受保护分支时显示推送对话框", "Combine stashes and shelves in one tab": "在同一个标签页中合并显示贮藏和搁置", + "Patch file created successfully. Show it in Explorer?": "补丁文件已创建。是否在资源管理器中显示?", + "Patch file created successfully. Show it in Files?": "补丁文件已创建。是否在文件管理器中显示?", "Patch file created successfully. Show it in Finder?": "补丁文件已创建。是否在访达中显示?", "File names": "文件名", "Large files": "大文件",