Skip to content

Commit

Permalink
Support promptText for multiple languages
Browse files Browse the repository at this point in the history
  • Loading branch information
ramya-rao-a committed Oct 22, 2018
1 parent 852cfda commit 53ec5ac
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IExtensionsViewlet } from 'vs/workbench/parts/extensions/common/extensions';
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle';
import { language } from 'vs/base/common/platform';

export class ExperimentalPrompts extends Disposable implements IWorkbenchContribution {
private _disposables: IDisposable[] = [];
Expand Down Expand Up @@ -50,7 +51,8 @@ export class ExperimentalPrompts extends Disposable implements IWorkbenchContrib
};

const actionProperties = (<IExperimentActionPromptProperties>experiment.action.properties);
if (!actionProperties || !actionProperties.promptText) {
const promptText = ExperimentalPrompts.getPromptText(actionProperties, language);
if (!actionProperties || !promptText) {
return;
}
if (!actionProperties.commands) {
Expand Down Expand Up @@ -80,7 +82,7 @@ export class ExperimentalPrompts extends Disposable implements IWorkbenchContrib
};
});

this.notificationService.prompt(Severity.Info, actionProperties.promptText, choices, {
this.notificationService.prompt(Severity.Info, promptText, choices, {
onCancel: () => {
logTelemetry();
this.experimentService.markAsCompleted(experiment.id);
Expand All @@ -91,4 +93,15 @@ export class ExperimentalPrompts extends Disposable implements IWorkbenchContrib
dispose() {
this._disposables = dispose(this._disposables);
}

static getPromptText(actionProperties: IExperimentActionPromptProperties, displayLanguage: string): string {
if (typeof actionProperties.promptText === 'string') {
return actionProperties.promptText;
}
displayLanguage = displayLanguage.toLowerCase();
if (!actionProperties.promptText[displayLanguage] && displayLanguage.indexOf('-') === 2) {
displayLanguage = displayLanguage.substr(0, 2);
}
return actionProperties.promptText[displayLanguage];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ export enum ExperimentActionType {
}

export interface IExperimentActionPromptProperties {
promptText: string;
promptText: string | { [key: string]: string };
commands: IExperimentActionPromptCommand[];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import * as assert from 'assert';

import { IExperiment, ExperimentActionType, IExperimentService, ExperimentState } from 'vs/workbench/parts/experiments/node/experimentService';
import { IExperiment, ExperimentActionType, IExperimentService, ExperimentState, IExperimentActionPromptProperties } from 'vs/workbench/parts/experiments/node/experimentService';

import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
import { Emitter } from 'vs/base/common/event';
Expand Down Expand Up @@ -157,4 +157,28 @@ suite('Experimental Prompts', () => {
});

});

test('Test getPromptText', () => {
const simpleTextCase: IExperimentActionPromptProperties = {
promptText: 'My simple prompt',
commands: []
};
const englishTextCase: IExperimentActionPromptProperties = {
promptText: {
en: 'My simple prompt for en'
},
commands: []
};
const englishUSTextCase: IExperimentActionPromptProperties = {
promptText: {
'en-us': 'My simple prompt for en'
},
commands: []
};
assert.equal(ExperimentalPrompts.getPromptText(simpleTextCase, 'any-language'), simpleTextCase.promptText);
assert.equal(ExperimentalPrompts.getPromptText(englishTextCase, 'en'), englishTextCase.promptText['en']);
assert.equal(ExperimentalPrompts.getPromptText(englishUSTextCase, 'en-us'), englishUSTextCase.promptText['en-us']);
assert.equal(ExperimentalPrompts.getPromptText(englishTextCase, 'en-au'), englishTextCase.promptText['en']);
assert.equal(!!ExperimentalPrompts.getPromptText(englishTextCase, 'de'), false);
});
});

0 comments on commit 53ec5ac

Please sign in to comment.