From 4f4076891def4ef371ef2d22463ee5c6e43cae80 Mon Sep 17 00:00:00 2001 From: chriswang521 Date: Thu, 16 May 2024 10:00:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=96=87=E4=BB=B6=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E4=B8=8B,=E6=B7=BB=E5=8A=A0=E9=80=89=E6=8B=A9=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E8=AF=AD=E8=A8=80=E7=9A=84=E5=AD=90=E8=8F=9C=E5=8D=95?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../translations/main.i18n.json | 6 ++- src/vs/platform/actions/common/actions.ts | 3 ++ .../localization.contribution.ts | 47 ++++++++++++++++++- 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/extensions/vscode-language-pack-zh-hans/translations/main.i18n.json b/extensions/vscode-language-pack-zh-hans/translations/main.i18n.json index 2efdecb8..e3ebf642 100644 --- a/extensions/vscode-language-pack-zh-hans/translations/main.i18n.json +++ b/extensions/vscode-language-pack-zh-hans/translations/main.i18n.json @@ -7922,7 +7922,11 @@ "vscode.extension.contributes.localizations.translations": "与语言关联的翻译的列表。", "vscode.extension.contributes.localizations.translations.id": "使用此翻译的 Kylin-Code 或扩展的 ID。Kylin-Code 的 ID 总为 \"vscode\",扩展的 ID 的格式应为 \"publisherId.extensionName\"。", "vscode.extension.contributes.localizations.translations.id.pattern": "翻译 Kylin-Code 或者扩展,ID 分别应为 \"vscode\" 或格式为 \"publisherId.extensionName\"。", - "vscode.extension.contributes.localizations.translations.path": "包含语言翻译的文件的相对路径。" + "vscode.extension.contributes.localizations.translations.path": "包含语言翻译的文件的相对路径。", + "relaunchDisplayLanguageDetail": "按下重启按钮来重新启动 {0} 并更改显示语言。", + "relaunchDisplayLanguageMessage": "要使显示语言的更改生效, 需要重新启动。", + "cancel": "取消", + "miSelectLanguage": "选择显示语言" }, "vs/workbench/contrib/localization/common/localizationsActions": { "available": "可用", diff --git a/src/vs/platform/actions/common/actions.ts b/src/vs/platform/actions/common/actions.ts index 37d341a0..2859adbc 100644 --- a/src/vs/platform/actions/common/actions.ts +++ b/src/vs/platform/actions/common/actions.ts @@ -101,6 +101,9 @@ export class MenuId { static readonly MenubarTerminalMenu = new MenuId('MenubarTerminalMenu'); static readonly MenubarViewMenu = new MenuId('MenubarViewMenu'); static readonly MenubarHomeMenu = new MenuId('MenubarHomeMenu'); + //kylin ide add selecet disaplay language menu start{ + static readonly MenubarSelectLanguageMenu = new MenuId('MenubarSelectLanguageMenu'); + //kylin ide add selecet disaplay language menu start} static readonly OpenEditorsContext = new MenuId('OpenEditorsContext'); static readonly OpenEditorsContextShare = new MenuId('OpenEditorsContextShare'); static readonly ProblemsPanelContext = new MenuId('ProblemsPanelContext'); diff --git a/src/vs/workbench/contrib/localization/electron-sandbox/localization.contribution.ts b/src/vs/workbench/contrib/localization/electron-sandbox/localization.contribution.ts index b603ed44..f420b630 100644 --- a/src/vs/workbench/contrib/localization/electron-sandbox/localization.contribution.ts +++ b/src/vs/workbench/contrib/localization/electron-sandbox/localization.contribution.ts @@ -18,9 +18,13 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { CancellationToken } from 'vs/base/common/cancellation'; import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite'; import { ViewContainerLocation } from 'vs/workbench/common/views'; +import { Action2, MenuId, MenuRegistry, registerAction2 } from 'vs/platform/actions/common/actions'; import { ILocaleService } from 'vs/workbench/services/localization/common/locale'; import { IProductService } from 'vs/platform/product/common/productService'; import { BaseLocalizationWorkbenchContribution } from 'vs/workbench/contrib/localization/common/localization.contribution'; +import { IsMacNativeContext } from 'vs/platform/contextkey/common/contextkeys'; +import { ILanguagePackService } from 'vs/platform/languagePacks/common/languagePacks'; +import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; class NativeLocalizationWorkbenchContribution extends BaseLocalizationWorkbenchContribution { private static LANGUAGEPACK_SUGGESTION_IGNORE_STORAGE_KEY = 'extensionsAssistant/languagePackSuggestionIgnore'; @@ -34,14 +38,44 @@ class NativeLocalizationWorkbenchContribution extends BaseLocalizationWorkbenchC @IExtensionGalleryService private readonly galleryService: IExtensionGalleryService, @IPaneCompositePartService private readonly paneCompositeService: IPaneCompositePartService, @ITelemetryService private readonly telemetryService: ITelemetryService, + @ILanguagePackService private readonly languagePackService: ILanguagePackService ) { super(); - + if (!platform.isWeb) { + this.registerSubMenu(this.languagePackService); + } this.checkAndInstall(); this._register(this.extensionManagementService.onDidInstallExtensions(e => this.onDidInstallExtensions(e))); this._register(this.extensionManagementService.onDidUninstallExtension(e => this.onDidUninstallExtension(e))); } + private async registerSubMenu(languagePackService: ILanguagePackService) { + const installedLanguages = await languagePackService.getInstalledLanguages(); + if (installedLanguages.length) { + installedLanguages.map((item, index) => { + registerAction2(class extends Action2 { + constructor() { + super({ + id: item.id!, + title: item.label, + menu: { + id: MenuId.MenubarSelectLanguageMenu, + order: index + } + }); + } + async run(accessor: ServicesAccessor): Promise { + const localeService: ILocaleService = accessor.get(ILocaleService); + + await localeService.setLocale(item); + } + }); + + }); + + } + } + private async onDidInstallExtensions(results: readonly InstallExtensionResult[]): Promise { for (const result of results) { if (result.operation === InstallOperation.Install && result.local) { @@ -232,3 +266,14 @@ class NativeLocalizationWorkbenchContribution extends BaseLocalizationWorkbenchC const workbenchRegistry = Registry.as(WorkbenchExtensions.Workbench); workbenchRegistry.registerWorkbenchContribution(NativeLocalizationWorkbenchContribution, LifecyclePhase.Eventually); +if (!platform.isWeb) { + //选择语言菜单 + MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, { + title: localize({ key: 'miSelectLanguage', comment: ['&& denotes a mnemonic'] }, "&&Display Language"), + submenu: MenuId.MenubarSelectLanguageMenu, + group: '5_autosave', + order: 4, + // on macOS native the preferences menu is separate under the application menu + when: IsMacNativeContext.toNegated() + }); +}