Skip to content

Commit 8692ecf

Browse files
author
Benjamin Pasero
committed
💄
1 parent 79f3ea1 commit 8692ecf

4 files changed

Lines changed: 80 additions & 103 deletions

File tree

src/vs/workbench/electron-browser/actions.ts

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configur
2424
import { IExtensionManagementService, LocalExtensionType, ILocalExtension, IExtensionEnablementService } from 'vs/platform/extensionManagement/common/extensionManagement';
2525
import { IWorkspaceConfigurationService } from 'vs/workbench/services/configuration/common/configuration';
2626
import paths = require('vs/base/common/paths');
27-
import { isMacintosh, isLinux } from 'vs/base/common/platform';
27+
import { isMacintosh, isLinux, language } from 'vs/base/common/platform';
2828
import { IQuickOpenService, IFilePickOpenEntry, ISeparator, IPickOpenAction, IPickOpenItem } from 'vs/platform/quickOpen/common/quickOpen';
2929
import { KeyMod } from 'vs/base/common/keyCodes';
3030
import * as browser from 'vs/base/browser/browser';
@@ -42,10 +42,11 @@ import { getPathLabel } from 'vs/base/common/labels';
4242
import { IViewlet } from 'vs/workbench/common/viewlet';
4343
import { IPanel } from 'vs/workbench/common/panel';
4444
import { IWorkspaceIdentifier, getWorkspaceLabel, ISingleFolderWorkspaceIdentifier, isSingleFolderWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
45-
import { FileKind } from 'vs/platform/files/common/files';
45+
import { FileKind, IFileService } from 'vs/platform/files/common/files';
4646
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
4747
import { IExtensionService } from 'vs/platform/extensions/common/extensions';
4848
import { getEntries } from 'vs/base/common/performance';
49+
import { IEditor } from 'vs/platform/editor/common/editor';
4950

5051
// --- actions
5152

@@ -1633,3 +1634,45 @@ export class ToggleWindowTabsBar extends Action {
16331634
return this.windowsService.toggleWindowTabsBar().then(() => true);
16341635
}
16351636
}
1637+
1638+
export class ConfigureLocaleAction extends Action {
1639+
public static ID = 'workbench.action.configureLocale';
1640+
public static LABEL = nls.localize('configureLocale', "Configure Language");
1641+
1642+
private static DEFAULT_CONTENT: string = [
1643+
'{',
1644+
`\t// ${nls.localize('displayLanguage', 'Defines VSCode\'s display language.')}`,
1645+
`\t// ${nls.localize('doc', 'See {0} for a list of supported languages.', 'https://go.microsoft.com/fwlink/?LinkId=761051')}`,
1646+
`\t// ${nls.localize('restart', 'Changing the value requires restarting VSCode.')}`,
1647+
`\t"locale":"${language}"`,
1648+
'}'
1649+
].join('\n');
1650+
1651+
constructor(id: string, label: string,
1652+
@IFileService private fileService: IFileService,
1653+
@IWorkspaceContextService private contextService: IWorkspaceContextService,
1654+
@IEnvironmentService private environmentService: IEnvironmentService,
1655+
@IWorkbenchEditorService private editorService: IWorkbenchEditorService
1656+
) {
1657+
super(id, label);
1658+
}
1659+
1660+
public run(event?: any): TPromise<IEditor> {
1661+
const file = URI.file(paths.join(this.environmentService.appSettingsHome, 'locale.json'));
1662+
return this.fileService.resolveFile(file).then(null, (error) => {
1663+
return this.fileService.createFile(file, ConfigureLocaleAction.DEFAULT_CONTENT);
1664+
}).then((stat) => {
1665+
if (!stat) {
1666+
return undefined;
1667+
}
1668+
return this.editorService.openEditor({
1669+
resource: stat.resource,
1670+
options: {
1671+
forceOpen: true
1672+
}
1673+
});
1674+
}, (error) => {
1675+
throw new Error(nls.localize('fail.createSettings', "Unable to create '{0}' ({1}).", getPathLabel(file, this.contextService), error));
1676+
});
1677+
}
1678+
}

src/vs/workbench/electron-browser/configureLocale.ts

Lines changed: 0 additions & 99 deletions
This file was deleted.

src/vs/workbench/electron-browser/main.contribution.ts

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'v
1414
import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions';
1515
import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes';
1616
import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform';
17-
import { CloseEditorAction, KeybindingsReferenceAction, OpenDocumentationUrlAction, OpenIntroductoryVideosUrlAction, OpenTipsAndTricksUrlAction, ReportIssueAction, ReportPerformanceIssueAction, ZoomResetAction, ZoomOutAction, ZoomInAction, ToggleFullScreenAction, ToggleMenuBarAction, CloseWorkspaceAction, CloseCurrentWindowAction, SwitchWindow, NewWindowAction, CloseMessagesAction, NavigateUpAction, NavigateDownAction, NavigateLeftAction, NavigateRightAction, IncreaseViewSizeAction, DecreaseViewSizeAction, ShowStartupPerformance, ToggleSharedProcessAction, QuickSwitchWindow, QuickOpenRecentAction, inRecentFilesPickerContextKey } from 'vs/workbench/electron-browser/actions';
17+
import { CloseEditorAction, KeybindingsReferenceAction, OpenDocumentationUrlAction, OpenIntroductoryVideosUrlAction, OpenTipsAndTricksUrlAction, ReportIssueAction, ReportPerformanceIssueAction, ZoomResetAction, ZoomOutAction, ZoomInAction, ToggleFullScreenAction, ToggleMenuBarAction, CloseWorkspaceAction, CloseCurrentWindowAction, SwitchWindow, NewWindowAction, CloseMessagesAction, NavigateUpAction, NavigateDownAction, NavigateLeftAction, NavigateRightAction, IncreaseViewSizeAction, DecreaseViewSizeAction, ShowStartupPerformance, ToggleSharedProcessAction, QuickSwitchWindow, QuickOpenRecentAction, inRecentFilesPickerContextKey, ConfigureLocaleAction } from 'vs/workbench/electron-browser/actions';
1818
import { MessagesVisibleContext } from 'vs/workbench/electron-browser/workbench';
1919
import { IJSONSchema } from 'vs/base/common/jsonSchema';
2020
import { registerCommands } from 'vs/workbench/electron-browser/commands';
2121
import { AddRootFolderAction, GlobalRemoveRootFolderAction, OpenWorkspaceAction, SaveWorkspaceAsAction, OpenWorkspaceConfigFileAction, OpenFolderAsWorkspaceInNewWindowAction, OpenFileFolderAction, OpenFileAction, OpenFolderAction } from 'vs/workbench/browser/actions/workspaceActions';
2222
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
2323
import { inQuickOpenContext, getQuickNavigateHandler } from 'vs/workbench/browser/parts/quickopen/quickopen';
2424
import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
25+
import { IJSONContributionRegistry, Extensions as JSONExtensions } from 'vs/platform/jsonschemas/common/jsonContributionRegistry';
2526

2627
// Contribute Commands
2728
registerCommands();
@@ -449,3 +450,36 @@ configurationRegistry.registerConfiguration({
449450
}
450451
}
451452
});
453+
454+
// Register action to configure locale and related settings
455+
456+
const registry = Registry.as<IWorkbenchActionRegistry>(Extensions.WorkbenchActions);
457+
registry.registerWorkbenchAction(new SyncActionDescriptor(ConfigureLocaleAction, ConfigureLocaleAction.ID, ConfigureLocaleAction.LABEL), 'Configure Language');
458+
459+
let enumValues: string[] = ['de', 'en', 'en-US', 'es', 'fr', 'it', 'ja', 'ko', 'ru', 'zh-CN', 'zh-TW'];
460+
if (product.quality !== 'stable') {
461+
enumValues.push('hu');
462+
}
463+
464+
const schemaId = 'vscode://schemas/locale';
465+
// Keep en-US since we generated files with that content.
466+
const schema: IJSONSchema =
467+
{
468+
id: schemaId,
469+
description: 'Locale Definition file',
470+
type: 'object',
471+
default: {
472+
'locale': 'en'
473+
},
474+
required: ['locale'],
475+
properties: {
476+
locale: {
477+
type: 'string',
478+
enum: enumValues,
479+
description: nls.localize('JsonSchema.locale', 'The UI Language to use.')
480+
}
481+
}
482+
};
483+
484+
const jsonRegistry = Registry.as<IJSONContributionRegistry>(JSONExtensions.JSONContribution);
485+
jsonRegistry.registerSchema(schemaId, schema);

src/vs/workbench/workbench.main.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ import 'vs/workbench/parts/terminal/browser/terminalQuickOpen';
7979
import 'vs/workbench/parts/terminal/electron-browser/terminalPanel'; // can be packaged separately
8080

8181
import 'vs/workbench/electron-browser/workbench';
82-
import 'vs/workbench/electron-browser/configureLocale';
8382

8483
import 'vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.contribution';
8584

0 commit comments

Comments
 (0)