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() + }); +}