From 2d8202551e44b54232a6a373b576d4447a2a4d11 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 4 Nov 2022 10:46:09 -0700 Subject: [PATCH] Adopt l10n for configuration-editing (#165521) For #164438 --- extensions/configuration-editing/package.json | 3 +- .../src/configurationEditingMain.ts | 32 ++++----- .../src/extensionsProposals.ts | 6 +- .../src/settingsDocumentHelper.ts | 68 +++++++++---------- extensions/configuration-editing/yarn.lock | 5 -- 5 files changed, 51 insertions(+), 63 deletions(-) diff --git a/extensions/configuration-editing/package.json b/extensions/configuration-editing/package.json index 37a5a9137bb..59978c47dc3 100644 --- a/extensions/configuration-editing/package.json +++ b/extensions/configuration-editing/package.json @@ -20,8 +20,7 @@ "watch": "gulp watch-extension:configuration-editing" }, "dependencies": { - "jsonc-parser": "^2.2.1", - "vscode-nls": "^5.2.0" + "jsonc-parser": "^2.2.1" }, "capabilities": { "virtualWorkspaces": true, diff --git a/extensions/configuration-editing/src/configurationEditingMain.ts b/extensions/configuration-editing/src/configurationEditingMain.ts index 224a57370b4..41399c2194a 100644 --- a/extensions/configuration-editing/src/configurationEditingMain.ts +++ b/extensions/configuration-editing/src/configurationEditingMain.ts @@ -5,10 +5,8 @@ import { getLocation, JSONPath, parse, visit, Location } from 'jsonc-parser'; import * as vscode from 'vscode'; -import * as nls from 'vscode-nls'; import { SettingsDocument } from './settingsDocumentHelper'; import { provideInstalledExtensionProposals } from './extensionsProposals'; -const localize = nls.loadMessageBundle(); export function activate(context: vscode.ExtensionContext): void { //settings.json suggestions @@ -46,21 +44,21 @@ function registerVariableCompletions(pattern: string): vscode.Disposable { } return [ - { label: 'workspaceFolder', detail: localize('workspaceFolder', "The path of the folder opened in VS Code") }, - { label: 'workspaceFolderBasename', detail: localize('workspaceFolderBasename', "The name of the folder opened in VS Code without any slashes (/)") }, - { label: 'relativeFile', detail: localize('relativeFile', "The current opened file relative to ${workspaceFolder}") }, - { label: 'relativeFileDirname', detail: localize('relativeFileDirname', "The current opened file's dirname relative to ${workspaceFolder}") }, - { label: 'file', detail: localize('file', "The current opened file") }, - { label: 'cwd', detail: localize('cwd', "The task runner's current working directory on startup") }, - { label: 'lineNumber', detail: localize('lineNumber', "The current selected line number in the active file") }, - { label: 'selectedText', detail: localize('selectedText', "The current selected text in the active file") }, - { label: 'fileDirname', detail: localize('fileDirname', "The current opened file's dirname") }, - { label: 'fileExtname', detail: localize('fileExtname', "The current opened file's extension") }, - { label: 'fileBasename', detail: localize('fileBasename', "The current opened file's basename") }, - { label: 'fileBasenameNoExtension', detail: localize('fileBasenameNoExtension', "The current opened file's basename with no file extension") }, - { label: 'defaultBuildTask', detail: localize('defaultBuildTask', "The name of the default build task. If there is not a single default build task then a quick pick is shown to choose the build task.") }, - { label: 'pathSeparator', detail: localize('pathSeparator', "The character used by the operating system to separate components in file paths") }, - { label: 'extensionInstallFolder', detail: localize('extensionInstallFolder', "The path where an an extension is installed."), param: 'publisher.extension' }, + { label: 'workspaceFolder', detail: vscode.l10n.t("The path of the folder opened in VS Code") }, + { label: 'workspaceFolderBasename', detail: vscode.l10n.t("The name of the folder opened in VS Code without any slashes (/)") }, + { label: 'relativeFile', detail: vscode.l10n.t("The current opened file relative to ${workspaceFolder}") }, + { label: 'relativeFileDirname', detail: vscode.l10n.t("The current opened file's dirname relative to ${workspaceFolder}") }, + { label: 'file', detail: vscode.l10n.t("The current opened file") }, + { label: 'cwd', detail: vscode.l10n.t("The task runner's current working directory on startup") }, + { label: 'lineNumber', detail: vscode.l10n.t("The current selected line number in the active file") }, + { label: 'selectedText', detail: vscode.l10n.t("The current selected text in the active file") }, + { label: 'fileDirname', detail: vscode.l10n.t("The current opened file's dirname") }, + { label: 'fileExtname', detail: vscode.l10n.t("The current opened file's extension") }, + { label: 'fileBasename', detail: vscode.l10n.t("The current opened file's basename") }, + { label: 'fileBasenameNoExtension', detail: vscode.l10n.t("The current opened file's basename with no file extension") }, + { label: 'defaultBuildTask', detail: vscode.l10n.t("The name of the default build task. If there is not a single default build task then a quick pick is shown to choose the build task.") }, + { label: 'pathSeparator', detail: vscode.l10n.t("The character used by the operating system to separate components in file paths") }, + { label: 'extensionInstallFolder', detail: vscode.l10n.t("The path where an an extension is installed."), param: 'publisher.extension' }, ].map(variable => ({ label: `\${${variable.label}}`, range, diff --git a/extensions/configuration-editing/src/extensionsProposals.ts b/extensions/configuration-editing/src/extensionsProposals.ts index ab648e05f3c..6438281dc0b 100644 --- a/extensions/configuration-editing/src/extensionsProposals.ts +++ b/extensions/configuration-editing/src/extensionsProposals.ts @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import * as nls from 'vscode-nls'; -const localize = nls.loadMessageBundle(); export async function provideInstalledExtensionProposals(existing: string[], additionalText: string, range: vscode.Range, includeBuiltinExtensions: boolean): Promise { @@ -23,7 +21,7 @@ export async function provideInstalledExtensionProposals(existing: string[], add return item; }); } else { - const example = new vscode.CompletionItem(localize('exampleExtension', "Example")); + const example = new vscode.CompletionItem(vscode.l10n.t("Example")); example.insertText = '"vscode.csharp"'; example.kind = vscode.CompletionItemKind.Value; example.range = range; @@ -48,7 +46,7 @@ export async function provideWorkspaceTrustExtensionProposals(existing: string[] return item; }); } else { - const example = new vscode.CompletionItem(localize('exampleExtension', "Example")); + const example = new vscode.CompletionItem(vscode.l10n.t("Example")); example.insertText = '"vscode.csharp: {\n\t"supported": false,\n\t"version": "0.0.0"\n}`;"'; example.kind = vscode.CompletionItemKind.Value; example.range = range; diff --git a/extensions/configuration-editing/src/settingsDocumentHelper.ts b/extensions/configuration-editing/src/settingsDocumentHelper.ts index ab41c8220c2..24215b25404 100644 --- a/extensions/configuration-editing/src/settingsDocumentHelper.ts +++ b/extensions/configuration-editing/src/settingsDocumentHelper.ts @@ -5,10 +5,8 @@ import * as vscode from 'vscode'; import { getLocation, Location, parse } from 'jsonc-parser'; -import * as nls from 'vscode-nls'; import { provideInstalledExtensionProposals } from './extensionsProposals'; -const localize = nls.loadMessageBundle(); const OVERRIDE_IDENTIFIER_REGEX = /\[([^\[\]]*)\]/g; export class SettingsDocument { @@ -107,20 +105,20 @@ export class SettingsDocument { }; - completions.push(this.newSimpleCompletionItem(getText('activeEditorShort'), range, localize('activeEditorShort', "the file name (e.g. myFile.txt)"))); - completions.push(this.newSimpleCompletionItem(getText('activeEditorMedium'), range, localize('activeEditorMedium', "the path of the file relative to the workspace folder (e.g. myFolder/myFileFolder/myFile.txt)"))); - completions.push(this.newSimpleCompletionItem(getText('activeEditorLong'), range, localize('activeEditorLong', "the full path of the file (e.g. /Users/Development/myFolder/myFileFolder/myFile.txt)"))); - completions.push(this.newSimpleCompletionItem(getText('activeFolderShort'), range, localize('activeFolderShort', "the name of the folder the file is contained in (e.g. myFileFolder)"))); - completions.push(this.newSimpleCompletionItem(getText('activeFolderMedium'), range, localize('activeFolderMedium', "the path of the folder the file is contained in, relative to the workspace folder (e.g. myFolder/myFileFolder)"))); - completions.push(this.newSimpleCompletionItem(getText('activeFolderLong'), range, localize('activeFolderLong', "the full path of the folder the file is contained in (e.g. /Users/Development/myFolder/myFileFolder)"))); - completions.push(this.newSimpleCompletionItem(getText('rootName'), range, localize('rootName', "name of the workspace (e.g. myFolder or myWorkspace)"))); - completions.push(this.newSimpleCompletionItem(getText('rootPath'), range, localize('rootPath', "file path of the workspace (e.g. /Users/Development/myWorkspace)"))); - completions.push(this.newSimpleCompletionItem(getText('folderName'), range, localize('folderName', "name of the workspace folder the file is contained in (e.g. myFolder)"))); - completions.push(this.newSimpleCompletionItem(getText('folderPath'), range, localize('folderPath', "file path of the workspace folder the file is contained in (e.g. /Users/Development/myFolder)"))); - completions.push(this.newSimpleCompletionItem(getText('appName'), range, localize('appName', "e.g. VS Code"))); - completions.push(this.newSimpleCompletionItem(getText('remoteName'), range, localize('remoteName', "e.g. SSH"))); - completions.push(this.newSimpleCompletionItem(getText('dirty'), range, localize('dirty', "an indicator for when the active editor has unsaved changes"))); - completions.push(this.newSimpleCompletionItem(getText('separator'), range, localize('separator', "a conditional separator (' - ') that only shows when surrounded by variables with values"))); + completions.push(this.newSimpleCompletionItem(getText('activeEditorShort'), range, vscode.l10n.t("the file name (e.g. myFile.txt)"))); + completions.push(this.newSimpleCompletionItem(getText('activeEditorMedium'), range, vscode.l10n.t("the path of the file relative to the workspace folder (e.g. myFolder/myFileFolder/myFile.txt)"))); + completions.push(this.newSimpleCompletionItem(getText('activeEditorLong'), range, vscode.l10n.t("the full path of the file (e.g. /Users/Development/myFolder/myFileFolder/myFile.txt)"))); + completions.push(this.newSimpleCompletionItem(getText('activeFolderShort'), range, vscode.l10n.t("the name of the folder the file is contained in (e.g. myFileFolder)"))); + completions.push(this.newSimpleCompletionItem(getText('activeFolderMedium'), range, vscode.l10n.t("the path of the folder the file is contained in, relative to the workspace folder (e.g. myFolder/myFileFolder)"))); + completions.push(this.newSimpleCompletionItem(getText('activeFolderLong'), range, vscode.l10n.t("the full path of the folder the file is contained in (e.g. /Users/Development/myFolder/myFileFolder)"))); + completions.push(this.newSimpleCompletionItem(getText('rootName'), range, vscode.l10n.t("name of the workspace (e.g. myFolder or myWorkspace)"))); + completions.push(this.newSimpleCompletionItem(getText('rootPath'), range, vscode.l10n.t("file path of the workspace (e.g. /Users/Development/myWorkspace)"))); + completions.push(this.newSimpleCompletionItem(getText('folderName'), range, vscode.l10n.t("name of the workspace folder the file is contained in (e.g. myFolder)"))); + completions.push(this.newSimpleCompletionItem(getText('folderPath'), range, vscode.l10n.t("file path of the workspace folder the file is contained in (e.g. /Users/Development/myFolder)"))); + completions.push(this.newSimpleCompletionItem(getText('appName'), range, vscode.l10n.t("e.g. VS Code"))); + completions.push(this.newSimpleCompletionItem(getText('remoteName'), range, vscode.l10n.t("e.g. SSH"))); + completions.push(this.newSimpleCompletionItem(getText('dirty'), range, vscode.l10n.t("an indicator for when the active editor has unsaved changes"))); + completions.push(this.newSimpleCompletionItem(getText('separator'), range, vscode.l10n.t("a conditional separator (' - ') that only shows when surrounded by variables with values"))); return completions; } @@ -134,15 +132,15 @@ export class SettingsDocument { const range = this.getReplaceRange(location, position); completions.push(this.newSnippetCompletionItem({ - label: localize('assocLabelFile', "Files with Extension"), - documentation: localize('assocDescriptionFile', "Map all files matching the glob pattern in their filename to the language with the given identifier."), + label: vscode.l10n.t("Files with Extension"), + documentation: vscode.l10n.t("Map all files matching the glob pattern in their filename to the language with the given identifier."), snippet: location.isAtPropertyKey ? '"*.${1:extension}": "${2:language}"' : '{ "*.${1:extension}": "${2:language}" }', range })); completions.push(this.newSnippetCompletionItem({ - label: localize('assocLabelPath', "Files with Path"), - documentation: localize('assocDescriptionPath', "Map all files matching the absolute path glob pattern in their path to the language with the given identifier."), + label: vscode.l10n.t("Files with Path"), + documentation: vscode.l10n.t("Map all files matching the absolute path glob pattern in their path to the language with the given identifier."), snippet: location.isAtPropertyKey ? '"/${1:path to file}/*.${2:extension}": "${3:language}"' : '{ "/${1:path to file}/*.${2:extension}": "${3:language}" }', range })); @@ -163,43 +161,43 @@ export class SettingsDocument { const range = this.getReplaceRange(location, position); completions.push(this.newSnippetCompletionItem({ - label: localize('fileLabel', "Files by Extension"), - documentation: localize('fileDescription', "Match all files of a specific file extension."), + label: vscode.l10n.t("Files by Extension"), + documentation: vscode.l10n.t("Match all files of a specific file extension."), snippet: location.path.length === 2 ? '"**/*.${1:extension}": true' : '{ "**/*.${1:extension}": true }', range })); completions.push(this.newSnippetCompletionItem({ - label: localize('filesLabel', "Files with Multiple Extensions"), - documentation: localize('filesDescription', "Match all files with any of the file extensions."), + label: vscode.l10n.t("Files with Multiple Extensions"), + documentation: vscode.l10n.t("Match all files with any of the file extensions."), snippet: location.path.length === 2 ? '"**/*.{ext1,ext2,ext3}": true' : '{ "**/*.{ext1,ext2,ext3}": true }', range })); completions.push(this.newSnippetCompletionItem({ - label: localize('derivedLabel', "Files with Siblings by Name"), - documentation: localize('derivedDescription', "Match files that have siblings with the same name but a different extension."), + label: vscode.l10n.t("Files with Siblings by Name"), + documentation: vscode.l10n.t("Match files that have siblings with the same name but a different extension."), snippet: location.path.length === 2 ? '"**/*.${1:source-extension}": { "when": "$(basename).${2:target-extension}" }' : '{ "**/*.${1:source-extension}": { "when": "$(basename).${2:target-extension}" } }', range })); completions.push(this.newSnippetCompletionItem({ - label: localize('topFolderLabel', "Folder by Name (Top Level)"), - documentation: localize('topFolderDescription', "Match a top level folder with a specific name."), + label: vscode.l10n.t("Folder by Name (Top Level)"), + documentation: vscode.l10n.t("Match a top level folder with a specific name."), snippet: location.path.length === 2 ? '"${1:name}": true' : '{ "${1:name}": true }', range })); completions.push(this.newSnippetCompletionItem({ - label: localize('topFoldersLabel', "Folders with Multiple Names (Top Level)"), - documentation: localize('topFoldersDescription', "Match multiple top level folders."), + label: vscode.l10n.t("Folders with Multiple Names (Top Level)"), + documentation: vscode.l10n.t("Match multiple top level folders."), snippet: location.path.length === 2 ? '"{folder1,folder2,folder3}": true' : '{ "{folder1,folder2,folder3}": true }', range })); completions.push(this.newSnippetCompletionItem({ - label: localize('folderLabel', "Folder by Name (Any Location)"), - documentation: localize('folderDescription', "Match a folder with a specific name in any location."), + label: vscode.l10n.t("Folder by Name (Any Location)"), + documentation: vscode.l10n.t("Match a folder with a specific name in any location."), snippet: location.path.length === 2 ? '"**/${1:name}": true' : '{ "**/${1:name}": true }', range })); @@ -209,8 +207,8 @@ export class SettingsDocument { else if (location.path.length === 2 && this.isCompletingPropertyValue(location, position)) { const range = this.getReplaceRange(location, position); completions.push(this.newSnippetCompletionItem({ - label: localize('derivedLabel', "Files with Siblings by Name"), - documentation: localize('siblingsDescription', "Match files that have siblings with the same name but a different extension."), + label: vscode.l10n.t("Files with Siblings by Name"), + documentation: vscode.l10n.t("Match files that have siblings with the same name but a different extension."), snippet: '{ "when": "$(basename).${1:extension}" }', range })); @@ -224,7 +222,7 @@ export class SettingsDocument { const range = this.getReplaceRange(location, position); const languages = await vscode.languages.getLanguages(); return [ - this.newSimpleCompletionItem(JSON.stringify('${activeEditorLanguage}'), range, localize('activeEditor', "Use the language of the currently active text editor if any")), + this.newSimpleCompletionItem(JSON.stringify('${activeEditorLanguage}'), range, vscode.l10n.t("Use the language of the currently active text editor if any")), ...languages.map(l => this.newSimpleCompletionItem(JSON.stringify(l), range)) ]; } diff --git a/extensions/configuration-editing/yarn.lock b/extensions/configuration-editing/yarn.lock index 5bb8132d373..9c9c6191db9 100644 --- a/extensions/configuration-editing/yarn.lock +++ b/extensions/configuration-editing/yarn.lock @@ -11,8 +11,3 @@ jsonc-parser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.2.1.tgz#db73cd59d78cce28723199466b2a03d1be1df2bc" integrity sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w== - -vscode-nls@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.2.0.tgz#3cb6893dd9bd695244d8a024bdf746eea665cc3f" - integrity sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==