mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 13:00:58 +00:00
Merge branch 'master' into joh/ftp
This commit is contained in:
commit
9bc31f1ca6
|
@ -43,7 +43,7 @@ const nodeModules = ['electron', 'original-fs']
|
|||
// Build
|
||||
|
||||
const builtInExtensions = [
|
||||
{ name: 'ms-vscode.node-debug', version: '1.17.5' },
|
||||
{ name: 'ms-vscode.node-debug', version: '1.17.6' },
|
||||
{ name: 'ms-vscode.node-debug2', version: '1.17.1' }
|
||||
];
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
"title": "Jake",
|
||||
"properties": {
|
||||
"jake.autoDetect": {
|
||||
"scope": "resource",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"off",
|
||||
|
|
|
@ -13,49 +13,6 @@ import * as nls from 'vscode-nls';
|
|||
const localize = nls.config(process.env.VSCODE_NLS_CONFIG)();
|
||||
|
||||
type AutoDetect = 'on' | 'off';
|
||||
let taskProvider: vscode.Disposable | undefined;
|
||||
|
||||
export function activate(_context: vscode.ExtensionContext): void {
|
||||
let workspaceRoot = vscode.workspace.rootPath;
|
||||
if (!workspaceRoot) {
|
||||
return;
|
||||
}
|
||||
let pattern = path.join(workspaceRoot, '{Jakefile,Jakefile.js}');
|
||||
let jakePromise: Thenable<vscode.Task[]> | undefined = undefined;
|
||||
let fileWatcher = vscode.workspace.createFileSystemWatcher(pattern);
|
||||
fileWatcher.onDidChange(() => jakePromise = undefined);
|
||||
fileWatcher.onDidCreate(() => jakePromise = undefined);
|
||||
fileWatcher.onDidDelete(() => jakePromise = undefined);
|
||||
|
||||
function onConfigurationChanged() {
|
||||
let autoDetect = vscode.workspace.getConfiguration('jake').get<AutoDetect>('autoDetect');
|
||||
if (taskProvider && autoDetect === 'off') {
|
||||
jakePromise = undefined;
|
||||
taskProvider.dispose();
|
||||
taskProvider = undefined;
|
||||
} else if (!taskProvider && autoDetect === 'on') {
|
||||
taskProvider = vscode.workspace.registerTaskProvider('jake', {
|
||||
provideTasks: () => {
|
||||
if (!jakePromise) {
|
||||
jakePromise = getJakeTasks();
|
||||
}
|
||||
return jakePromise;
|
||||
},
|
||||
resolveTask(_task: vscode.Task): vscode.Task | undefined {
|
||||
return undefined;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
vscode.workspace.onDidChangeConfiguration(onConfigurationChanged);
|
||||
onConfigurationChanged();
|
||||
}
|
||||
|
||||
export function deactivate(): void {
|
||||
if (taskProvider) {
|
||||
taskProvider.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
function exists(file: string): Promise<boolean> {
|
||||
return new Promise<boolean>((resolve, _reject) => {
|
||||
|
@ -76,19 +33,6 @@ function exec(command: string, options: cp.ExecOptions): Promise<{ stdout: strin
|
|||
});
|
||||
}
|
||||
|
||||
let _channel: vscode.OutputChannel;
|
||||
function getOutputChannel(): vscode.OutputChannel {
|
||||
if (!_channel) {
|
||||
_channel = vscode.window.createOutputChannel('Jake Auto Detection');
|
||||
}
|
||||
return _channel;
|
||||
}
|
||||
|
||||
interface JakeTaskDefinition extends vscode.TaskDefinition {
|
||||
task: string;
|
||||
file?: string;
|
||||
}
|
||||
|
||||
const buildNames: string[] = ['build', 'compile', 'watch'];
|
||||
function isBuildTask(name: string): boolean {
|
||||
for (let buildName of buildNames) {
|
||||
|
@ -109,74 +53,264 @@ function isTestTask(name: string): boolean {
|
|||
return false;
|
||||
}
|
||||
|
||||
async function getJakeTasks(): Promise<vscode.Task[]> {
|
||||
let workspaceRoot = vscode.workspace.rootPath;
|
||||
let emptyTasks: vscode.Task[] = [];
|
||||
if (!workspaceRoot) {
|
||||
return emptyTasks;
|
||||
let _channel: vscode.OutputChannel;
|
||||
function getOutputChannel(): vscode.OutputChannel {
|
||||
if (!_channel) {
|
||||
_channel = vscode.window.createOutputChannel('Gulp Auto Detection');
|
||||
}
|
||||
let jakefile = path.join(workspaceRoot, 'Jakefile');
|
||||
if (!await exists(jakefile)) {
|
||||
jakefile = path.join(workspaceRoot, 'Jakefile.js');
|
||||
if (! await exists(jakefile)) {
|
||||
return _channel;
|
||||
}
|
||||
|
||||
interface JakeTaskDefinition extends vscode.TaskDefinition {
|
||||
task: string;
|
||||
file?: string;
|
||||
}
|
||||
|
||||
class FolderDetector {
|
||||
|
||||
private fileWatcher: vscode.FileSystemWatcher;
|
||||
private promise: Thenable<vscode.Task[]> | undefined;
|
||||
|
||||
constructor(private _workspaceFolder: vscode.WorkspaceFolder) {
|
||||
}
|
||||
|
||||
public get workspaceFolder(): vscode.WorkspaceFolder {
|
||||
return this._workspaceFolder;
|
||||
}
|
||||
|
||||
public isEnabled(): boolean {
|
||||
return vscode.workspace.getConfiguration('jake', this._workspaceFolder.uri).get<AutoDetect>('autoDetect') === 'on';
|
||||
}
|
||||
|
||||
public start(): void {
|
||||
let pattern = path.join(this._workspaceFolder.uri.fsPath, '{Jakefile,Jakefile.js}');
|
||||
this.fileWatcher = vscode.workspace.createFileSystemWatcher(pattern);
|
||||
this.fileWatcher.onDidChange(() => this.promise = undefined);
|
||||
this.fileWatcher.onDidCreate(() => this.promise = undefined);
|
||||
this.fileWatcher.onDidDelete(() => this.promise = undefined);
|
||||
}
|
||||
|
||||
public async getTasks(): Promise<vscode.Task[]> {
|
||||
if (!this.promise) {
|
||||
this.promise = this.computeTasks();
|
||||
}
|
||||
return this.promise;
|
||||
}
|
||||
|
||||
private async computeTasks(): Promise<vscode.Task[]> {
|
||||
let rootPath = this._workspaceFolder.uri.scheme === 'file' ? this._workspaceFolder.uri.fsPath : undefined;
|
||||
let emptyTasks: vscode.Task[] = [];
|
||||
if (!rootPath) {
|
||||
return emptyTasks;
|
||||
}
|
||||
let jakefile = path.join(rootPath, 'Jakefile');
|
||||
if (!await exists(jakefile)) {
|
||||
jakefile = path.join(rootPath, 'Jakefile.js');
|
||||
if (! await exists(jakefile)) {
|
||||
return emptyTasks;
|
||||
}
|
||||
}
|
||||
|
||||
let jakeCommand: string;
|
||||
let platform = process.platform;
|
||||
if (platform === 'win32' && await exists(path.join(rootPath!, 'node_modules', '.bin', 'jake.cmd'))) {
|
||||
jakeCommand = path.join('.', 'node_modules', '.bin', 'jake.cmd');
|
||||
} else if ((platform === 'linux' || platform === 'darwin') && await exists(path.join(rootPath!, 'node_modules', '.bin', 'jake'))) {
|
||||
jakeCommand = path.join('.', 'node_modules', '.bin', 'jake');
|
||||
} else {
|
||||
jakeCommand = 'jake';
|
||||
}
|
||||
|
||||
let commandLine = `${jakeCommand} --tasks`;
|
||||
try {
|
||||
let { stdout, stderr } = await exec(commandLine, { cwd: rootPath });
|
||||
if (stderr) {
|
||||
getOutputChannel().appendLine(stderr);
|
||||
getOutputChannel().show(true);
|
||||
}
|
||||
let result: vscode.Task[] = [];
|
||||
if (stdout) {
|
||||
let lines = stdout.split(/\r{0,1}\n/);
|
||||
for (let line of lines) {
|
||||
if (line.length === 0) {
|
||||
continue;
|
||||
}
|
||||
let regExp = /^jake\s+([^\s]+)\s/g;
|
||||
let matches = regExp.exec(line);
|
||||
if (matches && matches.length === 2) {
|
||||
let taskName = matches[1];
|
||||
let kind: JakeTaskDefinition = {
|
||||
type: 'jake',
|
||||
task: taskName
|
||||
};
|
||||
let options: vscode.ShellExecutionOptions = { cwd: this.workspaceFolder.uri.fsPath };
|
||||
let task = new vscode.Task(kind, taskName, 'jake', new vscode.ShellExecution(`${jakeCommand} ${taskName}`, options));
|
||||
result.push(task);
|
||||
let lowerCaseLine = line.toLowerCase();
|
||||
if (isBuildTask(lowerCaseLine)) {
|
||||
task.group = vscode.TaskGroup.Build;
|
||||
} else if (isTestTask(lowerCaseLine)) {
|
||||
task.group = vscode.TaskGroup.Test;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
} catch (err) {
|
||||
let channel = getOutputChannel();
|
||||
if (err.stderr) {
|
||||
channel.appendLine(err.stderr);
|
||||
}
|
||||
if (err.stdout) {
|
||||
channel.appendLine(err.stdout);
|
||||
}
|
||||
channel.appendLine(localize('execFailed', 'Auto detecting Jake failed with error: {0}', err.error ? err.error.toString() : 'unknown'));
|
||||
channel.show(true);
|
||||
return emptyTasks;
|
||||
}
|
||||
}
|
||||
|
||||
let jakeCommand: string;
|
||||
let platform = process.platform;
|
||||
if (platform === 'win32' && await exists(path.join(workspaceRoot!, 'node_modules', '.bin', 'jake.cmd'))) {
|
||||
jakeCommand = path.join('.', 'node_modules', '.bin', 'jake.cmd');
|
||||
} else if ((platform === 'linux' || platform === 'darwin') && await exists(path.join(workspaceRoot!, 'node_modules', '.bin', 'jake'))) {
|
||||
jakeCommand = path.join('.', 'node_modules', '.bin', 'jake');
|
||||
} else {
|
||||
jakeCommand = 'jake';
|
||||
public dispose() {
|
||||
this.promise = undefined;
|
||||
if (this.fileWatcher) {
|
||||
this.fileWatcher.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TaskDetector {
|
||||
|
||||
private taskProvider: vscode.Disposable | undefined;
|
||||
private detectors: Map<string, FolderDetector> = new Map();
|
||||
private promise: Promise<vscode.Task[]> | undefined;
|
||||
|
||||
constructor() {
|
||||
}
|
||||
|
||||
let commandLine = `${jakeCommand} --tasks`;
|
||||
try {
|
||||
let { stdout, stderr } = await exec(commandLine, { cwd: workspaceRoot });
|
||||
if (stderr) {
|
||||
getOutputChannel().appendLine(stderr);
|
||||
getOutputChannel().show(true);
|
||||
public start(): void {
|
||||
let folders = vscode.workspace.workspaceFolders;
|
||||
if (folders) {
|
||||
this.updateWorkspaceFolders(folders, []);
|
||||
}
|
||||
let result: vscode.Task[] = [];
|
||||
if (stdout) {
|
||||
let lines = stdout.split(/\r{0,1}\n/);
|
||||
for (let line of lines) {
|
||||
if (line.length === 0) {
|
||||
continue;
|
||||
}
|
||||
let regExp = /^jake\s+([^\s]+)\s/g;
|
||||
let matches = regExp.exec(line);
|
||||
if (matches && matches.length === 2) {
|
||||
let taskName = matches[1];
|
||||
let kind: JakeTaskDefinition = {
|
||||
type: 'jake',
|
||||
task: taskName
|
||||
};
|
||||
let task = new vscode.Task(kind, taskName, 'jake', new vscode.ShellExecution(`${jakeCommand} ${taskName}`));
|
||||
result.push(task);
|
||||
let lowerCaseLine = line.toLowerCase();
|
||||
if (isBuildTask(lowerCaseLine)) {
|
||||
task.group = vscode.TaskGroup.Build;
|
||||
} else if (isTestTask(lowerCaseLine)) {
|
||||
task.group = vscode.TaskGroup.Test;
|
||||
vscode.workspace.onDidChangeWorkspaceFolders((event) => this.updateWorkspaceFolders(event.added, event.removed));
|
||||
vscode.workspace.onDidChangeConfiguration(this.updateConfiguration, this);
|
||||
}
|
||||
|
||||
public dispose(): void {
|
||||
if (this.taskProvider) {
|
||||
this.taskProvider.dispose();
|
||||
this.taskProvider = undefined;
|
||||
}
|
||||
this.detectors.clear();
|
||||
this.promise = undefined;
|
||||
}
|
||||
|
||||
private updateWorkspaceFolders(added: vscode.WorkspaceFolder[], removed: vscode.WorkspaceFolder[]): void {
|
||||
let changed = false;
|
||||
for (let remove of removed) {
|
||||
let detector = this.detectors.get(remove.uri.toString());
|
||||
if (detector) {
|
||||
changed = true;
|
||||
detector.dispose();
|
||||
this.detectors.delete(remove.uri.toString());
|
||||
}
|
||||
}
|
||||
for (let add of added) {
|
||||
let detector = new FolderDetector(add);
|
||||
if (detector.isEnabled()) {
|
||||
changed = true;
|
||||
this.detectors.set(add.uri.toString(), detector);
|
||||
detector.start();
|
||||
}
|
||||
}
|
||||
if (changed) {
|
||||
this.promise = undefined;
|
||||
}
|
||||
this.updateProvider();
|
||||
}
|
||||
|
||||
private updateConfiguration(): void {
|
||||
let changed = false;
|
||||
for (let detector of this.detectors.values()) {
|
||||
if (!detector.isEnabled()) {
|
||||
changed = true;
|
||||
detector.dispose();
|
||||
this.detectors.delete(detector.workspaceFolder.uri.toString());
|
||||
}
|
||||
}
|
||||
let folders = vscode.workspace.workspaceFolders;
|
||||
if (folders) {
|
||||
for (let folder of folders) {
|
||||
if (!this.detectors.has(folder.uri.toString())) {
|
||||
let detector = new FolderDetector(folder);
|
||||
if (detector.isEnabled()) {
|
||||
changed = true;
|
||||
this.detectors.set(folder.uri.toString(), detector);
|
||||
detector.start();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
} catch (err) {
|
||||
let channel = getOutputChannel();
|
||||
if (err.stderr) {
|
||||
channel.appendLine(err.stderr);
|
||||
if (changed) {
|
||||
this.promise = undefined;
|
||||
}
|
||||
if (err.stdout) {
|
||||
channel.appendLine(err.stdout);
|
||||
}
|
||||
channel.appendLine(localize('execFailed', 'Auto detecting Jake failed with error: {0}', err.error ? err.error.toString() : 'unknown'));
|
||||
channel.show(true);
|
||||
return emptyTasks;
|
||||
this.updateProvider();
|
||||
}
|
||||
|
||||
private updateProvider(): void {
|
||||
if (!this.taskProvider && this.detectors.size > 0) {
|
||||
this.taskProvider = vscode.workspace.registerTaskProvider('gulp', {
|
||||
provideTasks: () => {
|
||||
return this.getTasks();
|
||||
},
|
||||
resolveTask(_task: vscode.Task): vscode.Task | undefined {
|
||||
return undefined;
|
||||
}
|
||||
});
|
||||
}
|
||||
else if (this.taskProvider && this.detectors.size === 0) {
|
||||
this.taskProvider.dispose();
|
||||
this.taskProvider = undefined;
|
||||
this.promise = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
public getTasks(): Promise<vscode.Task[]> {
|
||||
if (!this.promise) {
|
||||
this.promise = this.computeTasks();
|
||||
}
|
||||
return this.promise;
|
||||
}
|
||||
|
||||
private computeTasks(): Promise<vscode.Task[]> {
|
||||
if (this.detectors.size === 0) {
|
||||
return Promise.resolve([]);
|
||||
} else if (this.detectors.size === 1) {
|
||||
return this.detectors.values().next().value.getTasks();
|
||||
} else {
|
||||
let promises: Promise<vscode.Task[]>[] = [];
|
||||
for (let detector of this.detectors.values()) {
|
||||
promises.push(detector.getTasks().then((value) => value, () => []));
|
||||
}
|
||||
return Promise.all(promises).then((values) => {
|
||||
let result: vscode.Task[] = [];
|
||||
for (let tasks of values) {
|
||||
if (tasks && tasks.length > 0) {
|
||||
result.push(...tasks);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let detector: TaskDetector;
|
||||
export function activate(_context: vscode.ExtensionContext): void {
|
||||
detector = new TaskDetector();
|
||||
detector.start();
|
||||
}
|
||||
|
||||
export function deactivate(): void {
|
||||
detector.dispose();
|
||||
}
|
|
@ -10,11 +10,11 @@ import { workspace, languages, ExtensionContext, extensions, Uri, TextDocument,
|
|||
import { LanguageClient, LanguageClientOptions, RequestType, ServerOptions, TransportKind, NotificationType, DidChangeConfigurationNotification } from 'vscode-languageclient';
|
||||
import TelemetryReporter from 'vscode-extension-telemetry';
|
||||
import { ConfigurationFeature } from 'vscode-languageclient/lib/proposed';
|
||||
|
||||
import { DocumentColorRequest } from 'vscode-languageserver-protocol/lib/protocol.colorProvider.proposed';
|
||||
|
||||
|
||||
import * as nls from 'vscode-nls';
|
||||
import { hash } from './utils/hash';
|
||||
let localize = nls.loadMessageBundle();
|
||||
|
||||
namespace VSCodeContentRequest {
|
||||
|
@ -192,8 +192,6 @@ function getSettings(): Settings {
|
|||
let httpSettings = workspace.getConfiguration('http');
|
||||
let jsonSettings = workspace.getConfiguration('json');
|
||||
|
||||
let schemas = [];
|
||||
|
||||
let settings: Settings = {
|
||||
http: {
|
||||
proxy: httpSettings.get('proxy'),
|
||||
|
@ -201,41 +199,69 @@ function getSettings(): Settings {
|
|||
},
|
||||
json: {
|
||||
format: jsonSettings.get('format'),
|
||||
schemas: schemas,
|
||||
schemas: [],
|
||||
}
|
||||
};
|
||||
let schemaSettingsById: { [schemaId: string]: JSONSchemaSettings } = Object.create(null);
|
||||
let collectSchemaSettings = (schemaSettings: JSONSchemaSettings[], rootPath?: string, fileMatchPrefix?: string) => {
|
||||
for (let setting of schemaSettings) {
|
||||
let url = getSchemaId(setting, rootPath);
|
||||
if (!url) {
|
||||
continue;
|
||||
}
|
||||
let schemaSetting = schemaSettingsById[url];
|
||||
if (!schemaSetting) {
|
||||
schemaSetting = schemaSettingsById[url] = { url, fileMatch: [] };
|
||||
settings.json.schemas.push(schemaSetting);
|
||||
}
|
||||
let fileMatches = setting.fileMatch;
|
||||
if (Array.isArray(fileMatches)) {
|
||||
if (fileMatchPrefix) {
|
||||
fileMatches = fileMatches.map(m => fileMatchPrefix + m);
|
||||
}
|
||||
schemaSetting.fileMatch.push(...fileMatches);
|
||||
}
|
||||
if (setting.schema) {
|
||||
schemaSetting.schema = setting.schema;
|
||||
}
|
||||
}
|
||||
};
|
||||
let settingsSchemas = jsonSettings.get('schemas');
|
||||
if (Array.isArray(settingsSchemas)) {
|
||||
schemas.push(...settingsSchemas);
|
||||
}
|
||||
|
||||
// merge global and folder settings. Qualify all file matches with the folder path.
|
||||
let globalSettings = jsonSettings.get<JSONSchemaSettings[]>('schemas');
|
||||
if (Array.isArray(globalSettings)) {
|
||||
collectSchemaSettings(globalSettings, workspace.rootPath);
|
||||
}
|
||||
let folders = workspace.workspaceFolders;
|
||||
if (folders) {
|
||||
folders.forEach(folder => {
|
||||
let jsonConfig = workspace.getConfiguration('json', folder.uri);
|
||||
let schemaConfigInfo = jsonConfig.inspect<JSONSchemaSettings[]>('schemas');
|
||||
for (let folder of folders) {
|
||||
let folderUri = folder.uri;
|
||||
let schemaConfigInfo = workspace.getConfiguration('json', folderUri).inspect<JSONSchemaSettings[]>('schemas');
|
||||
let folderSchemas = schemaConfigInfo.workspaceFolderValue;
|
||||
if (Array.isArray(folderSchemas)) {
|
||||
folderSchemas.forEach(schema => {
|
||||
let url = schema.url;
|
||||
if (!url && schema.schema) {
|
||||
url = schema.schema.id;
|
||||
}
|
||||
if (url && url[0] === '.') {
|
||||
url = Uri.file(path.normalize(path.join(folder.uri.fsPath, url))).toString();
|
||||
}
|
||||
let fileMatch = schema.fileMatch;
|
||||
if (fileMatch) {
|
||||
fileMatch = fileMatch.map(m => folder.uri.toString() + '*' + m);
|
||||
}
|
||||
schemas.push({ url, fileMatch, schema: schema.schema });
|
||||
});
|
||||
let folderPath = folderUri.toString();
|
||||
if (folderPath[folderPath.length - 1] !== '/') {
|
||||
folderPath = folderPath + '/';
|
||||
}
|
||||
collectSchemaSettings(folderSchemas, folderUri.fsPath, folderPath + '*');
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
return settings;
|
||||
}
|
||||
|
||||
function getSchemaId(schema: JSONSchemaSettings, rootPath?: string) {
|
||||
let url = schema.url;
|
||||
if (!url) {
|
||||
if (schema.schema) {
|
||||
url = schema.schema.id || `vscode://schemas/custom/${encodeURIComponent(hash(schema.schema).toString(16))}`;
|
||||
}
|
||||
} else if (rootPath && (url[0] === '.' || url[0] === '/')) {
|
||||
url = Uri.file(path.normalize(path.join(rootPath, url))).toString();
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
function getPackageInfo(context: ExtensionContext): IPackageInfo {
|
||||
let extensionPackage = require(context.asAbsolutePath('./package.json'));
|
||||
if (extensionPackage) {
|
||||
|
|
59
extensions/json/client/src/utils/hash.ts
Normal file
59
extensions/json/client/src/utils/hash.ts
Normal file
|
@ -0,0 +1,59 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Return a hash value for an object.
|
||||
*/
|
||||
export function hash(obj: any, hashVal = 0): number {
|
||||
switch (typeof obj) {
|
||||
case 'object':
|
||||
if (obj === null) {
|
||||
return numberHash(349, hashVal);
|
||||
} else if (Array.isArray(obj)) {
|
||||
return arrayHash(obj, hashVal);
|
||||
}
|
||||
return objectHash(obj, hashVal);
|
||||
case 'string':
|
||||
return stringHash(obj, hashVal);
|
||||
case 'boolean':
|
||||
return booleanHash(obj, hashVal);
|
||||
case 'number':
|
||||
return numberHash(obj, hashVal);
|
||||
case 'undefined':
|
||||
return numberHash(obj, 937);
|
||||
default:
|
||||
return numberHash(obj, 617);
|
||||
}
|
||||
}
|
||||
|
||||
function numberHash(val: number, initialHashVal: number): number {
|
||||
return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32
|
||||
}
|
||||
|
||||
function booleanHash(b: boolean, initialHashVal: number): number {
|
||||
return numberHash(b ? 433 : 863, initialHashVal);
|
||||
}
|
||||
|
||||
function stringHash(s: string, hashVal: number) {
|
||||
hashVal = numberHash(149417, hashVal);
|
||||
for (let i = 0, length = s.length; i < length; i++) {
|
||||
hashVal = numberHash(s.charCodeAt(i), hashVal);
|
||||
}
|
||||
return hashVal;
|
||||
}
|
||||
|
||||
function arrayHash(arr: any[], initialHashVal: number): number {
|
||||
initialHashVal = numberHash(104579, initialHashVal);
|
||||
return arr.reduce((hashVal, item) => hash(item, hashVal), initialHashVal);
|
||||
}
|
||||
|
||||
function objectHash(obj: any, initialHashVal: number): number {
|
||||
initialHashVal = numberHash(181387, initialHashVal);
|
||||
return Object.keys(obj).sort().reduce((hashVal, key) => {
|
||||
hashVal = stringHash(key, hashVal);
|
||||
return hash(obj[key], hashVal);
|
||||
}, initialHashVal);
|
||||
}
|
4
extensions/json/server/npm-shrinkwrap.json
generated
4
extensions/json/server/npm-shrinkwrap.json
generated
|
@ -43,9 +43,9 @@
|
|||
"resolved": "https://registry.npmjs.org/request-light/-/request-light-0.2.1.tgz"
|
||||
},
|
||||
"vscode-json-languageservice": {
|
||||
"version": "2.0.16",
|
||||
"version": "2.0.18",
|
||||
"from": "vscode-json-languageservice@next",
|
||||
"resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-2.0.16.tgz"
|
||||
"resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-2.0.18.tgz"
|
||||
},
|
||||
"vscode-jsonrpc": {
|
||||
"version": "3.3.1",
|
||||
|
|
|
@ -10,10 +10,11 @@
|
|||
"dependencies": {
|
||||
"jsonc-parser": "^1.0.0",
|
||||
"request-light": "^0.2.1",
|
||||
"vscode-json-languageservice": "^2.0.16",
|
||||
"vscode-json-languageservice": "^2.0.18",
|
||||
"vscode-languageserver": "3.4.0-next.6",
|
||||
"vscode-languageserver-protocol": "^3.1.1",
|
||||
"vscode-nls": "^2.0.2"
|
||||
"vscode-nls": "^2.0.2",
|
||||
"vscode-uri": "^1.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^6.0.51"
|
||||
|
|
|
@ -13,9 +13,8 @@ import {
|
|||
import { DocumentColorRequest, ServerCapabilities as CPServerCapabilities } from 'vscode-languageserver-protocol/lib/protocol.colorProvider.proposed';
|
||||
|
||||
import { xhr, XHRResponse, configure as configureHttpRequests, getErrorStatusDescription } from 'request-light';
|
||||
import path = require('path');
|
||||
import fs = require('fs');
|
||||
import URI from './utils/uri';
|
||||
import URI from 'vscode-uri';
|
||||
import * as URL from 'url';
|
||||
import Strings = require('./utils/strings');
|
||||
import { JSONDocument, JSONSchema, LanguageSettings, getLanguageService } from 'vscode-json-languageservice';
|
||||
|
@ -54,9 +53,7 @@ let clientDynamicRegisterSupport = false;
|
|||
|
||||
// After the server has started the client sends an initilize request. The server receives
|
||||
// in the passed params the rootPath of the workspace plus the client capabilities.
|
||||
let workspaceRoot: URI;
|
||||
connection.onInitialize((params: InitializeParams): InitializeResult => {
|
||||
workspaceRoot = URI.parse(params.rootPath);
|
||||
|
||||
function hasClientCapability(...keys: string[]) {
|
||||
let c = params.capabilities;
|
||||
|
@ -192,19 +189,12 @@ function updateConfiguration() {
|
|||
}
|
||||
}
|
||||
if (jsonConfigurationSettings) {
|
||||
jsonConfigurationSettings.forEach(schema => {
|
||||
jsonConfigurationSettings.forEach((schema, index) => {
|
||||
let uri = schema.url;
|
||||
if (!uri && schema.schema) {
|
||||
uri = schema.schema.id;
|
||||
}
|
||||
if (!uri && schema.fileMatch) {
|
||||
uri = 'vscode://schemas/custom/' + encodeURIComponent(schema.fileMatch.join('&'));
|
||||
uri = schema.schema.id || `vscode://schemas/custom/${index}`;
|
||||
}
|
||||
if (uri) {
|
||||
if (uri[0] === '.' && workspaceRoot) {
|
||||
// workspace relative path
|
||||
uri = URI.file(path.normalize(path.join(workspaceRoot.fsPath, uri))).toString();
|
||||
}
|
||||
languageSettings.schemas.push({ uri, fileMatch: schema.fileMatch, schema: schema.schema });
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,351 +0,0 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
'use strict';
|
||||
|
||||
function _encode(ch: string): string {
|
||||
return '%' + ch.charCodeAt(0).toString(16).toUpperCase();
|
||||
}
|
||||
|
||||
// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
|
||||
function encodeURIComponent2(str: string): string {
|
||||
return encodeURIComponent(str).replace(/[!'()*]/g, _encode);
|
||||
}
|
||||
|
||||
function encodeNoop(str: string): string {
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.
|
||||
* This class is a simple parser which creates the basic component paths
|
||||
* (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation
|
||||
* and encoding.
|
||||
*
|
||||
* foo://example.com:8042/over/there?name=ferret#nose
|
||||
* \_/ \______________/\_________/ \_________/ \__/
|
||||
* | | | | |
|
||||
* scheme authority path query fragment
|
||||
* | _____________________|__
|
||||
* / \ / \
|
||||
* urn:example:animal:ferret:nose
|
||||
*
|
||||
*
|
||||
*/
|
||||
export default class URI {
|
||||
|
||||
private static _empty = '';
|
||||
private static _slash = '/';
|
||||
private static _regexp = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
|
||||
private static _driveLetterPath = /^\/[a-zA-z]:/;
|
||||
private static _upperCaseDrive = /^(\/)?([A-Z]:)/;
|
||||
|
||||
private _scheme: string;
|
||||
private _authority: string;
|
||||
private _path: string;
|
||||
private _query: string;
|
||||
private _fragment: string;
|
||||
private _formatted: string;
|
||||
private _fsPath: string;
|
||||
|
||||
constructor() {
|
||||
this._scheme = URI._empty;
|
||||
this._authority = URI._empty;
|
||||
this._path = URI._empty;
|
||||
this._query = URI._empty;
|
||||
this._fragment = URI._empty;
|
||||
|
||||
this._formatted = null;
|
||||
this._fsPath = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* scheme is the 'http' part of 'http://www.msft.com/some/path?query#fragment'.
|
||||
* The part before the first colon.
|
||||
*/
|
||||
get scheme() {
|
||||
return this._scheme;
|
||||
}
|
||||
|
||||
/**
|
||||
* authority is the 'www.msft.com' part of 'http://www.msft.com/some/path?query#fragment'.
|
||||
* The part between the first double slashes and the next slash.
|
||||
*/
|
||||
get authority() {
|
||||
return this._authority;
|
||||
}
|
||||
|
||||
/**
|
||||
* path is the '/some/path' part of 'http://www.msft.com/some/path?query#fragment'.
|
||||
*/
|
||||
get path() {
|
||||
return this._path;
|
||||
}
|
||||
|
||||
/**
|
||||
* query is the 'query' part of 'http://www.msft.com/some/path?query#fragment'.
|
||||
*/
|
||||
get query() {
|
||||
return this._query;
|
||||
}
|
||||
|
||||
/**
|
||||
* fragment is the 'fragment' part of 'http://www.msft.com/some/path?query#fragment'.
|
||||
*/
|
||||
get fragment() {
|
||||
return this._fragment;
|
||||
}
|
||||
|
||||
// ---- filesystem path -----------------------
|
||||
|
||||
/**
|
||||
* Returns a string representing the corresponding file system path of this URI.
|
||||
* Will handle UNC paths and normalize windows drive letters to lower-case. Also
|
||||
* uses the platform specific path separator. Will *not* validate the path for
|
||||
* invalid characters and semantics. Will *not* look at the scheme of this URI.
|
||||
*/
|
||||
get fsPath() {
|
||||
if (!this._fsPath) {
|
||||
var value: string;
|
||||
if (this._authority && this.scheme === 'file') {
|
||||
// unc path: file://shares/c$/far/boo
|
||||
value = `//${this._authority}${this._path}`;
|
||||
} else if (URI._driveLetterPath.test(this._path)) {
|
||||
// windows drive letter: file:///c:/far/boo
|
||||
value = this._path[1].toLowerCase() + this._path.substr(2);
|
||||
} else {
|
||||
// other path
|
||||
value = this._path;
|
||||
}
|
||||
if (process.platform === 'win32') {
|
||||
value = value.replace(/\//g, '\\');
|
||||
}
|
||||
this._fsPath = value;
|
||||
}
|
||||
return this._fsPath;
|
||||
}
|
||||
|
||||
// ---- modify to new -------------------------
|
||||
|
||||
public with(scheme: string, authority: string, path: string, query: string, fragment: string): URI {
|
||||
var ret = new URI();
|
||||
ret._scheme = scheme || this.scheme;
|
||||
ret._authority = authority || this.authority;
|
||||
ret._path = path || this.path;
|
||||
ret._query = query || this.query;
|
||||
ret._fragment = fragment || this.fragment;
|
||||
URI._validate(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public withScheme(value: string): URI {
|
||||
return this.with(value, undefined, undefined, undefined, undefined);
|
||||
}
|
||||
|
||||
public withAuthority(value: string): URI {
|
||||
return this.with(undefined, value, undefined, undefined, undefined);
|
||||
}
|
||||
|
||||
public withPath(value: string): URI {
|
||||
return this.with(undefined, undefined, value, undefined, undefined);
|
||||
}
|
||||
|
||||
public withQuery(value: string): URI {
|
||||
return this.with(undefined, undefined, undefined, value, undefined);
|
||||
}
|
||||
|
||||
public withFragment(value: string): URI {
|
||||
return this.with(undefined, undefined, undefined, undefined, value);
|
||||
}
|
||||
|
||||
// ---- parse & validate ------------------------
|
||||
|
||||
public static parse(value: string): URI {
|
||||
const ret = new URI();
|
||||
const data = URI._parseComponents(value);
|
||||
ret._scheme = data.scheme;
|
||||
ret._authority = decodeURIComponent(data.authority);
|
||||
ret._path = decodeURIComponent(data.path);
|
||||
ret._query = decodeURIComponent(data.query);
|
||||
ret._fragment = decodeURIComponent(data.fragment);
|
||||
URI._validate(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static file(path: string): URI {
|
||||
|
||||
const ret = new URI();
|
||||
ret._scheme = 'file';
|
||||
|
||||
// normalize to fwd-slashes
|
||||
path = path.replace(/\\/g, URI._slash);
|
||||
|
||||
// check for authority as used in UNC shares
|
||||
// or use the path as given
|
||||
if (path[0] === URI._slash && path[0] === path[1]) {
|
||||
let idx = path.indexOf(URI._slash, 2);
|
||||
if (idx === -1) {
|
||||
ret._authority = path.substring(2);
|
||||
} else {
|
||||
ret._authority = path.substring(2, idx);
|
||||
ret._path = path.substring(idx);
|
||||
}
|
||||
} else {
|
||||
ret._path = path;
|
||||
}
|
||||
|
||||
// Ensure that path starts with a slash
|
||||
// or that it is at least a slash
|
||||
if (ret._path[0] !== URI._slash) {
|
||||
ret._path = URI._slash + ret._path;
|
||||
}
|
||||
|
||||
URI._validate(ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
private static _parseComponents(value: string): UriComponents {
|
||||
|
||||
const ret: UriComponents = {
|
||||
scheme: URI._empty,
|
||||
authority: URI._empty,
|
||||
path: URI._empty,
|
||||
query: URI._empty,
|
||||
fragment: URI._empty,
|
||||
};
|
||||
|
||||
const match = URI._regexp.exec(value);
|
||||
if (match) {
|
||||
ret.scheme = match[2] || ret.scheme;
|
||||
ret.authority = match[4] || ret.authority;
|
||||
ret.path = match[5] || ret.path;
|
||||
ret.query = match[7] || ret.query;
|
||||
ret.fragment = match[9] || ret.fragment;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static create(scheme?: string, authority?: string, path?: string, query?: string, fragment?: string): URI {
|
||||
return new URI().with(scheme, authority, path, query, fragment);
|
||||
}
|
||||
|
||||
private static _validate(ret: URI): void {
|
||||
|
||||
// validation
|
||||
// path, http://tools.ietf.org/html/rfc3986#section-3.3
|
||||
// If a URI contains an authority component, then the path component
|
||||
// must either be empty or begin with a slash ("/") character. If a URI
|
||||
// does not contain an authority component, then the path cannot begin
|
||||
// with two slash characters ("//").
|
||||
if (ret.authority && ret.path && ret.path[0] !== '/') {
|
||||
throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character');
|
||||
}
|
||||
if (!ret.authority && ret.path.indexOf('//') === 0) {
|
||||
throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")');
|
||||
}
|
||||
}
|
||||
|
||||
// ---- printing/externalize ---------------------------
|
||||
|
||||
/**
|
||||
*
|
||||
* @param skipEncoding Do not encode the result, default is `false`
|
||||
*/
|
||||
public toString(skipEncoding: boolean = false): string {
|
||||
if (!skipEncoding) {
|
||||
if (!this._formatted) {
|
||||
this._formatted = URI._asFormatted(this, false);
|
||||
}
|
||||
return this._formatted;
|
||||
} else {
|
||||
// we don't cache that
|
||||
return URI._asFormatted(this, true);
|
||||
}
|
||||
}
|
||||
|
||||
private static _asFormatted(uri: URI, skipEncoding: boolean): string {
|
||||
|
||||
const encoder = !skipEncoding
|
||||
? encodeURIComponent2
|
||||
: encodeNoop;
|
||||
|
||||
const parts: string[] = [];
|
||||
|
||||
let { scheme, authority, path, query, fragment } = uri;
|
||||
if (scheme) {
|
||||
parts.push(scheme, ':');
|
||||
}
|
||||
if (authority || scheme === 'file') {
|
||||
parts.push('//');
|
||||
}
|
||||
if (authority) {
|
||||
authority = authority.toLowerCase();
|
||||
let idx = authority.indexOf(':');
|
||||
if (idx === -1) {
|
||||
parts.push(encoder(authority));
|
||||
} else {
|
||||
parts.push(encoder(authority.substr(0, idx)), authority.substr(idx));
|
||||
}
|
||||
}
|
||||
if (path) {
|
||||
// lower-case windown drive letters in /C:/fff
|
||||
const m = URI._upperCaseDrive.exec(path);
|
||||
if (m) {
|
||||
path = m[1] + m[2].toLowerCase() + path.substr(m[1].length + m[2].length);
|
||||
}
|
||||
|
||||
// encode every segement but not slashes
|
||||
// make sure that # and ? are always encoded
|
||||
// when occurring in paths - otherwise the result
|
||||
// cannot be parsed back again
|
||||
let lastIdx = 0;
|
||||
while (true) {
|
||||
let idx = path.indexOf(URI._slash, lastIdx);
|
||||
if (idx === -1) {
|
||||
parts.push(encoder(path.substring(lastIdx)).replace(/[#?]/, _encode));
|
||||
break;
|
||||
}
|
||||
parts.push(encoder(path.substring(lastIdx, idx)).replace(/[#?]/, _encode), URI._slash);
|
||||
lastIdx = idx + 1;
|
||||
};
|
||||
}
|
||||
if (query) {
|
||||
parts.push('?', encoder(query));
|
||||
}
|
||||
if (fragment) {
|
||||
parts.push('#', encoder(fragment));
|
||||
}
|
||||
|
||||
return parts.join(URI._empty);
|
||||
}
|
||||
|
||||
public toJSON(): any {
|
||||
return <UriState>{
|
||||
scheme: this.scheme,
|
||||
authority: this.authority,
|
||||
path: this.path,
|
||||
fsPath: this.fsPath,
|
||||
query: this.query,
|
||||
fragment: this.fragment,
|
||||
external: this.toString(),
|
||||
$mid: 1
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
interface UriComponents {
|
||||
scheme: string;
|
||||
authority: string;
|
||||
path: string;
|
||||
query: string;
|
||||
fragment: string;
|
||||
}
|
||||
|
||||
interface UriState extends UriComponents {
|
||||
$mid: number;
|
||||
fsPath: string;
|
||||
external: string;
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"azure-account.copyAndOpen": "复制并打开",
|
||||
"azure-account.close": "关闭",
|
||||
"azure-account.login": "登录",
|
||||
"azure-account.loginFirst": "还未登录,请先登录。",
|
||||
"azure-account.userCodeFailed": "获取用户代码失败",
|
||||
"azure-account.tokenFailed": "用设备代码获取令牌",
|
||||
"azure-account.tokenFromRefreshTokenFailed": "用刷新的令牌获取令牌"
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"azure-account.loggingIn": "Azure: 正在登录...",
|
||||
"azure-account.loggedIn": "Azure: {0}"
|
||||
}
|
|
@ -7,14 +7,6 @@
|
|||
"ok": "确定",
|
||||
"pathNotExistTitle": "路径不存在",
|
||||
"pathNotExistDetail": "磁盘上似乎不再存在路径“{0}”。",
|
||||
"openWorkspace": "打开(&&O)...",
|
||||
"openWorkspaceTitle": "打开工作区",
|
||||
"save": "保存(&&S)",
|
||||
"doNotSave": "不保存(&&N)",
|
||||
"cancel": "取消",
|
||||
"saveWorkspaceMessage": "你是否要将你的工作区配置保存为文件?",
|
||||
"saveWorkspaceDetail": "若要再次打开此工作区,请先保存。",
|
||||
"saveWorkspace": "保存工作区",
|
||||
"reopen": "重新打开",
|
||||
"wait": "保持等待",
|
||||
"close": "关闭",
|
||||
|
@ -24,5 +16,13 @@
|
|||
"appCrashedDetail": "我们对此引起的不便表示抱歉! 请重启该窗口从上次停止的位置继续。",
|
||||
"open": "打开",
|
||||
"openFolder": "打开文件夹",
|
||||
"openFile": "打开文件"
|
||||
"openFile": "打开文件",
|
||||
"openWorkspace": "打开(&&O)...",
|
||||
"openWorkspaceTitle": "打开工作区",
|
||||
"save": "保存(&&S)",
|
||||
"doNotSave": "不保存(&&N)",
|
||||
"cancel": "取消",
|
||||
"saveWorkspaceMessage": "你是否要将你的工作区配置保存为文件?",
|
||||
"saveWorkspaceDetail": "若要再次打开此工作区,请先保存。",
|
||||
"saveWorkspace": "保存工作区"
|
||||
}
|
|
@ -9,9 +9,9 @@
|
|||
"rangeHighlight": "突出显示范围的背景颜色,例如 \"Quick Open\" 和“查找”功能。",
|
||||
"caret": "编辑器光标颜色。",
|
||||
"editorCursorBackground": "编辑器光标的背景色。可以自定义块型光标覆盖字符的颜色。",
|
||||
"editorWhitespaces": "编辑器中空白字符颜色。",
|
||||
"editorIndentGuides": "编辑器缩进参考线颜色。",
|
||||
"editorLineNumbers": "编辑器行号颜色。",
|
||||
"editorWhitespaces": "编辑器中空白字符的颜色。",
|
||||
"editorIndentGuides": "编辑器缩进参考线的颜色。",
|
||||
"editorLineNumbers": "编辑器行号的颜色。",
|
||||
"editorRuler": "编辑器标尺的颜色。",
|
||||
"editorCodeLensForeground": "编辑器 CodeLens 的前景色",
|
||||
"editorBracketMatchBackground": "匹配括号的背景色",
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"label.close": "关闭"
|
||||
}
|
|
@ -15,7 +15,6 @@
|
|||
"reuseWindow": "在上一活动窗口中强制打开文件或文件夹。",
|
||||
"userDataDir": "指定存放用户数据的目录,此目录在作为根运行时十分有用。",
|
||||
"verbose": "打印详细输出(表示 - 等待)。",
|
||||
"wait": "等窗口关闭后再返回。",
|
||||
"extensionHomePath": "设置扩展的根路径。",
|
||||
"listExtensions": "列出已安装的扩展。",
|
||||
"showVersions": "使用 --list-extension 时,显示已安装扩展的版本。",
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
"vscode.extension.activationEvents": "VS Code 扩展的激活事件。",
|
||||
"vscode.extension.activationEvents.onLanguage": "在打开被解析为指定语言的文件时发出的激活事件。",
|
||||
"vscode.extension.activationEvents.onCommand": "在调用指定命令时发出的激活事件。",
|
||||
"vscode.extension.activationEvents.onDebug": "在指定类型的调试会话开始时发出的激活事件。",
|
||||
"vscode.extension.activationEvents.workspaceContains": "在打开至少包含一个匹配指定 glob 模式的文件的文件夹时发出的激活事件。",
|
||||
"vscode.extension.activationEvents.onView": "在指定视图被展开时发出的激活事件。",
|
||||
"vscode.extension.activationEvents.star": "在 VS Code 启动时发出的激活事件。为确保良好的最终用户体验,请仅在其他激活事件组合不适用于你的情况时,才在扩展中使用此事件。",
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
"contributes.defaults.highContrast": "高对比度主题的默认颜色。应为十六进制颜色值 (#RRGGBB[AA]) 或是主题颜色标识符,其提供默认值。",
|
||||
"invalid.colorConfiguration": "\"configuration.colors\" 必须是数组",
|
||||
"invalid.default.colorType": "{0} 必须为十六进制颜色值 (#RRGGBB[AA] 或 #RGB[A]) 或是主题颜色标识符,其提供默认值。",
|
||||
"invalid.id": "必须定义 \"configuration.colors.id\",且不能为空",
|
||||
"invalid.id.format": "\"configuration.colors.id\" 必须满足 word[.word]*",
|
||||
"invalid.description": "必须定义 \"configuration.colors.description\",且不能为空",
|
||||
"invalid.defaults": "必须定义 “configuration.colors.defaults”,且须包含 \"light\"(浅色)、\"dark\"(深色) 和 \"highContrast\"(高对比度)"
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"requirearray": "视图必须为数组",
|
||||
"requirestring": "属性“{0}”是必要属性,其类型必须是 \"string\"",
|
||||
"optstring": "属性“{0}”可以省略,否则其类型必须是 \"string\"",
|
||||
"vscode.extension.contributes.view.id": "视图的标识符。使用标识符通过“vscode.window.registerTreeDataProviderForView” API 注册数据提供程序。同时将“onView:${id}”事件注册到“activationEvents”以激活你的扩展。",
|
||||
"vscode.extension.contributes.view.name": "人类可读的视图名称。将会被显示",
|
||||
"vscode.extension.contributes.view.when": "显示此视图必须为真的条件",
|
||||
"vscode.extension.contributes.views": "向编辑器提供视图",
|
||||
"views.explorer": "资源管理器视图",
|
||||
"views.debug": "调试视图",
|
||||
"locationId.invalid": "“{0}”为无效视图位置"
|
||||
}
|
|
@ -4,9 +4,9 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"removeFromActivityBar": "从活动栏删除",
|
||||
"keepInActivityBar": "保留活动栏",
|
||||
"badgeTitle": "{0} - {1}",
|
||||
"titleKeybinding": "{0} ({1})",
|
||||
"keepInActivityBar": "保留活动栏",
|
||||
"additionalViews": "其他视图",
|
||||
"numberBadge": "{0} ({1})",
|
||||
"manageExtension": "管理扩展",
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"viewToolbarAriaLabel": "{0} 操作",
|
||||
"hideView": "从侧边栏中隐藏"
|
||||
}
|
|
@ -29,7 +29,6 @@
|
|||
"view id": "ID",
|
||||
"view name": "名称",
|
||||
"view location": "位置",
|
||||
"themes": "主题({0})",
|
||||
"JSON Validation": "JSON 验证({0})",
|
||||
"commands": "命令({0})",
|
||||
"command name": "名称",
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
"files.exclude.boolean": "匹配文件路径所依据的 glob 模式。设置为 true 或 false 可启用或禁用该模式。",
|
||||
"files.exclude.when": "对匹配文件的同级文件的其他检查。使用 $(basename) 作为匹配文件名的变量。",
|
||||
"associations": "配置语言的文件关联(如: \"*.extension\": \"html\")。这些关联的优先级高于已安装语言的默认关联。",
|
||||
"encoding": "读取和编写文件时将使用的默认字符集编码。",
|
||||
"autoGuessEncoding": "启用时,会在打开文件时尝试猜测字符集编码",
|
||||
"eol": "默认行尾字符。使用 \\n 表示 LF,\\r\\n 表示 CRLF。",
|
||||
"trimTrailingWhitespace": "启用后,将在保存文件时剪裁尾随空格。",
|
||||
"insertFinalNewline": "启用后,保存文件时在文件末尾插入一个最终新行。",
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"userGuide": "使用右侧编辑器工具栏的操作来**撤消**你的更改或用你的更改来**覆盖**磁盘上的内容",
|
||||
"discard": "放弃",
|
||||
"overwrite": "覆盖",
|
||||
"retry": "重试",
|
||||
|
@ -11,6 +12,5 @@
|
|||
"genericSaveError": "未能保存“{0}”: {1}",
|
||||
"staleSaveError": "无法保存“{0}”: 磁盘上的内容较新。单击 **比较** 以比较你的版本和磁盘上的版本。",
|
||||
"compareChanges": "比较",
|
||||
"saveConflictDiffLabel": "{0} (on disk) ↔ {1} (in {2}) - 解决保存的冲突",
|
||||
"userGuide": "使用右侧编辑器工具栏的操作来**撤消**你的更改或用你的更改来**覆盖**磁盘上的内容"
|
||||
"saveConflictDiffLabel": "{0} (on disk) ↔ {1} (in {2}) - 解决保存的冲突"
|
||||
}
|
|
@ -6,7 +6,6 @@
|
|||
{
|
||||
"commitMessage": "消息(按 {0} 提交)",
|
||||
"installAdditionalSCMProviders": "安装其他 SCM 提供程序...",
|
||||
"no open repo": "没有可用的源控件。",
|
||||
"source control": "源代码管理",
|
||||
"viewletTitle": "{0}: {1}"
|
||||
}
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"showTriggerActions": "转到工作区中的符号...",
|
||||
"name": "搜索",
|
||||
"search": "搜索",
|
||||
"showSearchViewlet": "显示搜索",
|
||||
"view": "查看",
|
||||
"findInFiles": "在文件中查找",
|
||||
|
|
|
@ -4,6 +4,13 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"invalid.language": "“contributes.{0}.language”中存在未知的语言。提供的值: {1}",
|
||||
"invalid.path.0": "“contributes.{0}.path”中应为字符串。提供的值: {1}",
|
||||
"invalid.path.1": "“contributes.{0}.path”({1})应包含在扩展的文件夹({2})内。这可能会使扩展不可移植。",
|
||||
"vscode.extension.contributes.snippets": "添加代码段。",
|
||||
"vscode.extension.contributes.snippets-language": "此代码片段参与的语言标识符。",
|
||||
"vscode.extension.contributes.snippets-path": "代码片段文件的路径。该路径相对于扩展文件夹,通常以 \"./snippets/\" 开头。",
|
||||
"badVariableUse": "“{0}”代码片段很可能混淆了片段变量和片段占位符。有关详细信息,请访问 https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-syntax。",
|
||||
"source.snippet": "用户代码片段",
|
||||
"detail.snippet": "{0} ({1})",
|
||||
"snippetSuggest.longLabel": "{0},{1}"
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
"manyMarkers": "99+",
|
||||
"runningTasks": "显示运行中的任务",
|
||||
"tasks": "任务",
|
||||
"TaskSystem.noHotSwap": "更改需要重新加载窗口的任务执行引擎。",
|
||||
"TaskService.noBuildTask1": "未定义任何生成任务。使用 \"isBuildCommand\" 在 tasks.json 文件中标记任务。",
|
||||
"TaskService.noBuildTask2": "未定义任何生成任务。在 tasks.json 文件中将任务标记为 \"build\" 组。",
|
||||
"TaskService.noTestTask1": "未定义任何测试任务。使用 \"isTestCommand\" 在 tasks.json 文件中标记任务。",
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"quickOpen.terminal": "显示所有已打开的终端",
|
||||
"terminal": "终端",
|
||||
"terminalIntegratedConfigurationTitle": "集成终端",
|
||||
"terminal.integrated.shell.linux": "终端在 Linux 上使用的 shell 的路径。",
|
||||
"terminal.integrated.shellArgs.linux": "在 Linux 终端上时要使用的命令行参数。",
|
||||
|
@ -14,10 +15,8 @@
|
|||
"terminal.integrated.shellArgs.windows": "在 Windows 终端上时使用的命令行参数。",
|
||||
"terminal.integrated.rightClickCopyPaste": "设置后,在终端内右键单击时,这将阻止显示上下文菜单,相反,它将在有选项时进行复制,并且在没有选项时进行粘贴。",
|
||||
"terminal.integrated.fontFamily": "控制终端的字体系列,这在编辑器中是默认的。fontFamily 的值。",
|
||||
"terminal.integrated.fontLigatures": "控制是否在终端中启用字体连字。",
|
||||
"terminal.integrated.fontSize": "控制终端的字号(以像素为单位)。",
|
||||
"terminal.integrated.lineHeight": "控制终端的行高,此数字乘以终端字号得到实际行高(以像素表示)。",
|
||||
"terminal.integrated.enableBold": "是否在终端内启用粗体文本,这需要终端 shell 的支持。",
|
||||
"terminal.integrated.cursorBlinking": "控制终端光标是否闪烁。",
|
||||
"terminal.integrated.cursorStyle": "控制终端游标的样式。",
|
||||
"terminal.integrated.scrollback": "控制终端保持在缓冲区的最大行数。",
|
||||
|
@ -28,7 +27,6 @@
|
|||
"terminal.integrated.env.osx": "要添加到 VS Code 进程中的带有环境变量的对象,其会被 OS X 终端使用。",
|
||||
"terminal.integrated.env.linux": "要添加到 VS Code 进程中的带有环境变量的对象,其会被 Linux 终端使用。",
|
||||
"terminal.integrated.env.windows": "要添加到 VS Code 进程中的带有环境变量的对象,其会被 Windows 终端使用。",
|
||||
"terminal": "终端",
|
||||
"terminalCategory": "终端",
|
||||
"viewCategory": "查看"
|
||||
}
|
|
@ -38,6 +38,5 @@
|
|||
"workbench.action.terminal.focusFindWidget": "聚焦于查找小组件",
|
||||
"workbench.action.terminal.hideFindWidget": "隐藏查找小组件",
|
||||
"nextTerminalFindTerm": "显示下一个搜索结果",
|
||||
"previousTerminalFindTerm": "显示上一个搜索结果",
|
||||
"quickOpenTerm": "终端: 切换活动终端"
|
||||
"previousTerminalFindTerm": "显示上一个搜索结果"
|
||||
}
|
|
@ -35,8 +35,6 @@
|
|||
"welcomePage.showCommandsDescription": "使用命令面板快速访问和搜索命令 ({0})",
|
||||
"welcomePage.interfaceOverview": "界面概述",
|
||||
"welcomePage.interfaceOverviewDescription": "查看突出显示主要 UI 组件的叠加图",
|
||||
"welcomePage.deployToAzure": "将应用部署到云端",
|
||||
"welcomePage.deployToAzureDescription": "了解如何将你的 Node 应用部署到 Azure 应用服务",
|
||||
"welcomePage.interactivePlayground": "交互式演练场",
|
||||
"welcomePage.interactivePlaygroundDescription": "在简短演练中试用编辑器的基本功能"
|
||||
}
|
|
@ -4,13 +4,12 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"vscode.extension.contributes.configuration": "用于配置字符串。",
|
||||
"vscode.extension.contributes.configuration.title": "设置摘要。此标签将在设置文件中用作分隔注释。",
|
||||
"vscode.extension.contributes.configuration.properties": "配置属性的描述。",
|
||||
"scope.window.description": "特定于窗口的配置,可在“用户”或“工作区”设置中配置。",
|
||||
"scope.resource.description": "特定于资源的配置,可在“用户”、“工作区”或“文件夹”设置中配置。",
|
||||
"scope.description": "配置适用的范围。可用范围有“窗口”和“资源”。",
|
||||
"invalid.type": "如果进行设置,\"configuration.type\" 必须设置为对象",
|
||||
"vscode.extension.contributes.configuration": "用于配置字符串。",
|
||||
"invalid.title": "configuration.title 必须是字符串",
|
||||
"vscode.extension.contributes.defaultConfiguration": "按语言提供默认编辑器配置设置。",
|
||||
"invalid.properties": "configuration.properties 必须是对象",
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"fileInvalidPath": "无效的文件资源({0})",
|
||||
"fileIsDirectoryError": "文件是目录({0})",
|
||||
"fileNotModifiedError": "自以下时间未修改的文件:",
|
||||
"fileTooLargeError": "文件太大,无法打开",
|
||||
"fileBinaryError": "文件似乎是二进制文件,无法作为文档打开",
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"azure-account.copyAndOpen": "複製和打開",
|
||||
"azure-account.close": "關閉",
|
||||
"azure-account.login": "登入",
|
||||
"azure-account.loginFirst": "未登入,請先登入。",
|
||||
"azure-account.userCodeFailed": "取得使用者代碼失敗",
|
||||
"azure-account.tokenFailed": "取得權杖與裝置代碼",
|
||||
"azure-account.tokenFromRefreshTokenFailed": "取得權杖與重新整理權杖"
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"azure-account.loggingIn": "Azure: 正在登入...",
|
||||
"azure-account.loggedIn": "Azure: {0}"
|
||||
}
|
|
@ -7,14 +7,6 @@
|
|||
"ok": "確定",
|
||||
"pathNotExistTitle": "路徑不存在",
|
||||
"pathNotExistDetail": "磁碟上似乎已沒有路徑 '{0}'。",
|
||||
"openWorkspace": "開啟(&&O)...",
|
||||
"openWorkspaceTitle": "開啟工作區",
|
||||
"save": "儲存(&&S)",
|
||||
"doNotSave": "不要儲存(&&N)",
|
||||
"cancel": "取消",
|
||||
"saveWorkspaceMessage": "要將工作區組態儲存為檔案嗎?",
|
||||
"saveWorkspaceDetail": "如果您預計再次開啟工作區,請儲存工作區。",
|
||||
"saveWorkspace": "儲存工作區",
|
||||
"reopen": "重新開啟",
|
||||
"wait": "繼續等候",
|
||||
"close": "關閉",
|
||||
|
@ -24,5 +16,13 @@
|
|||
"appCrashedDetail": "很抱歉造成您的不便! 您可以重新開啟視窗,從您離開的地方繼續進行。",
|
||||
"open": "開啟",
|
||||
"openFolder": "開啟資料夾",
|
||||
"openFile": "開啟檔案"
|
||||
"openFile": "開啟檔案",
|
||||
"openWorkspace": "開啟(&&O)...",
|
||||
"openWorkspaceTitle": "開啟工作區",
|
||||
"save": "儲存(&&S)",
|
||||
"doNotSave": "不要儲存(&&N)",
|
||||
"cancel": "取消",
|
||||
"saveWorkspaceMessage": "要將工作區組態儲存為檔案嗎?",
|
||||
"saveWorkspaceDetail": "如果您預計再次開啟工作區,請儲存工作區。",
|
||||
"saveWorkspace": "儲存工作區"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"label.close": "關閉"
|
||||
}
|
|
@ -15,7 +15,7 @@
|
|||
"reuseWindow": "強制在最近使用的視窗中開啟檔案或資料夾。",
|
||||
"userDataDir": "指定保留使用者資料的目錄,這在以根目錄身分執行時有用。",
|
||||
"verbose": "列印詳細資訊輸出 (表示 --wait)。",
|
||||
"wait": "等候視窗在傳回前關閉。",
|
||||
"wait": "等候檔案在傳回前關閉。",
|
||||
"extensionHomePath": "設定擴充功能的根路徑。",
|
||||
"listExtensions": "列出已安裝的擴充功能。",
|
||||
"showVersions": "使用 --list-extension 時,顯示安裝的擴充功能版本。",
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
"vscode.extension.activationEvents": "VS Code 擴充功能的啟動事件。",
|
||||
"vscode.extension.activationEvents.onLanguage": "當指定語言檔案開啟時激發該事件",
|
||||
"vscode.extension.activationEvents.onCommand": "當指定的命令被調用時激發該事件",
|
||||
"vscode.extension.activationEvents.onDebug": "當指定的工作偵錯階段開始時激發該事件",
|
||||
"vscode.extension.activationEvents.workspaceContains": "當開啟指定的文件夾包含glob模式匹配的文件時激發該事件",
|
||||
"vscode.extension.activationEvents.onView": "當指定的檢視被擴展時激發該事件",
|
||||
"vscode.extension.activationEvents.star": "當VS Code啟動時激發該事件,為了確保最好的使用者體驗,當您的擴充功能沒有其他組合作業時,請激活此事件.",
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
"contributes.defaults.highContrast": "高對比佈景主題的預設色彩。應為十六進位 (#RRGGBB[AA]) 的色彩值,或提供預設的可設定佈景主題色彩。",
|
||||
"invalid.colorConfiguration": "'configuration.colors' 必須是陣列",
|
||||
"invalid.default.colorType": "{0} 必須是十六進位 (#RRGGBB[AA] or #RGB[A]) 的色彩值,或是提供預設的可設定佈景主題色彩之識別碼。",
|
||||
"invalid.id": "'configuration.colors.id' 必須定義且不得為空白",
|
||||
"invalid.id.format": "'configuration.colors.id' 必須依照 word[.word]*",
|
||||
"invalid.description": "'configuration.colors.description' 必須定義且不得為空白",
|
||||
"invalid.defaults": "'configuration.colors.defaults' 必須定義,且必須包含 'light'、'dark' 及 'highContrast'"
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"requirearray": "項目必須為陣列",
|
||||
"requirestring": "屬性 '{0}' 為強制項目且必須屬於 `string` 類型",
|
||||
"optstring": "屬性 `{0}` 可以省略或必須屬於 `string` 類型",
|
||||
"vscode.extension.contributes.view.id": "檢視的識別碼。請使用此識別碼透過 `vscode.window.registerTreeDataProviderForView` API 登錄資料提供者。並藉由將 `onView:${id}` 事件登錄至 `activationEvents` 以觸發啟用您的延伸模組。",
|
||||
"vscode.extension.contributes.view.name": "使用人性化顯示名稱.",
|
||||
"vscode.extension.contributes.view.when": "必須為 true 以顯示此檢視的條件",
|
||||
"vscode.extension.contributes.views": "提供意見給編輯者",
|
||||
"views.explorer": "檔案總管檢視",
|
||||
"views.debug": "偵錯檢視",
|
||||
"locationId.invalid": "`{0}`不是有效的識別位置"
|
||||
}
|
|
@ -4,9 +4,9 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"removeFromActivityBar": "從活動列移除",
|
||||
"keepInActivityBar": "保留在活動列",
|
||||
"badgeTitle": "{0} - {1}",
|
||||
"titleKeybinding": "{0} ({1})",
|
||||
"keepInActivityBar": "保留在活動列",
|
||||
"additionalViews": "其他檢視",
|
||||
"numberBadge": "{0} ({1})",
|
||||
"manageExtension": "管理延伸模組",
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"viewToolbarAriaLabel": "{0} 個動作",
|
||||
"hideView": "從提要欄位隱藏"
|
||||
}
|
|
@ -29,7 +29,6 @@
|
|||
"view id": "識別碼",
|
||||
"view name": "名稱",
|
||||
"view location": "位置",
|
||||
"themes": "佈景主題 ({0})",
|
||||
"JSON Validation": "JSON 驗證 ({0})",
|
||||
"commands": "命令 ({0})",
|
||||
"command name": "名稱",
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
"files.exclude.boolean": "要符合檔案路徑的 Glob 模式。設為 True 或 False 可啟用或停用模式。",
|
||||
"files.exclude.when": "在相符檔案同層級上額外的檢查。請使用 $(basename) 作為相符檔案名稱的變數。",
|
||||
"associations": "將檔案關聯設定為語言 (例如 \"*.extension\": \"html\")。這些語言優先於已安裝語言的預設關聯。",
|
||||
"encoding": "讀取與寫入檔案時要使用的預設字元集編碼。",
|
||||
"autoGuessEncoding": "如有啟用,將會在開啟檔案時,嘗試猜測字元集編碼",
|
||||
"eol": "預設結尾斷行字元.LF使用 \\n , CRLF使用\\r\\n ",
|
||||
"trimTrailingWhitespace": "若啟用,將在儲存檔案時修剪尾端空白。",
|
||||
"insertFinalNewline": "啟用時,請在儲存檔案時在其結尾插入最後一個新行。",
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"userGuide": "在右方使用編輯器工具列中的動作來 **復原** 您的變更,或以您的變更 **覆寫** 磁碟上的內容",
|
||||
"discard": "捨棄",
|
||||
"overwrite": "覆寫",
|
||||
"retry": "重試",
|
||||
|
@ -11,6 +12,5 @@
|
|||
"genericSaveError": "無法儲存 '{0}': {1}",
|
||||
"staleSaveError": "無法儲存 '{0}': 磁碟上的內容較新。請按一下 [比較],比較您的版本與磁碟上的版本。",
|
||||
"compareChanges": "比較",
|
||||
"saveConflictDiffLabel": "{0} (位於磁碟) ↔ {1} (在 {2} 中) - 解決儲存衝突",
|
||||
"userGuide": "在右方使用編輯器工具列中的動作來 **復原** 您的變更,或以您的變更 **覆寫** 磁碟上的內容"
|
||||
"saveConflictDiffLabel": "{0} (位於磁碟) ↔ {1} (在 {2} 中) - 解決儲存衝突"
|
||||
}
|
|
@ -6,7 +6,6 @@
|
|||
{
|
||||
"commitMessage": "Message (press {0} to commit)",
|
||||
"installAdditionalSCMProviders": "安裝額外SCM提供者...",
|
||||
"no open repo": "沒有使用中的原始檔控制。",
|
||||
"source control": "原始檔控制",
|
||||
"viewletTitle": "{0}: {1}"
|
||||
}
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"showTriggerActions": "前往工作區中的符號...",
|
||||
"name": "搜尋",
|
||||
"search": "搜尋",
|
||||
"showSearchViewlet": "顯示搜尋",
|
||||
"view": "檢視",
|
||||
"findInFiles": "在檔案中尋找",
|
||||
|
|
|
@ -4,6 +4,13 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"invalid.language": "`contributes.{0}.language` 中的不明語言。提供的值: {1}",
|
||||
"invalid.path.0": "'contributes.{0}.path' 中應有字串。提供的值: {1}",
|
||||
"invalid.path.1": "擴充功能資料夾 ({2}) 應包含 'contributes.{0}.path' ({1})。這可能會導致擴充功能無法移植。",
|
||||
"vscode.extension.contributes.snippets": "提供程式碼片段。",
|
||||
"vscode.extension.contributes.snippets-language": "要予以提供此程式碼片段的語言識別碼。",
|
||||
"vscode.extension.contributes.snippets-path": "程式碼片段檔案的路徑。此路徑是擴充功能資料夾的相對路徑,而且一般會以 './snippets/' 開頭。",
|
||||
"badVariableUse": "程式碼片段 \"{0}\" 很可能會混淆 snippet-variables 及 snippet-placeholders。如需詳細資料,請參閱 https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-syntax。",
|
||||
"source.snippet": "使用者程式碼片段",
|
||||
"detail.snippet": "{0} ({1})",
|
||||
"snippetSuggest.longLabel": "{0},{1}"
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
"manyMarkers": "99+",
|
||||
"runningTasks": "顯示執行中的工作",
|
||||
"tasks": "工作",
|
||||
"TaskSystem.noHotSwap": "必須重新載入視窗才能變更工作執行引擎",
|
||||
"TaskService.noBuildTask1": "未定義任何建置工作。請使用 'isBuildCommand' 標記 tasks.json 檔案中的工作。",
|
||||
"TaskService.noBuildTask2": "未定義任何組建工作,請在 tasks.json 檔案中將工作標記為 'build' 群組。",
|
||||
"TaskService.noTestTask1": "未定義任何建置工作。請使用 'isTestCommand' 標記 tasks.json 檔案中的工作。",
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"quickOpen.terminal": "顯示所有已開啟的終端機",
|
||||
"terminal": "終端機",
|
||||
"terminalIntegratedConfigurationTitle": "整合式終端機",
|
||||
"terminal.integrated.shell.linux": "終端機在 Linux 上使用的殼層路徑。",
|
||||
"terminal.integrated.shellArgs.linux": "在 Linux 終端機要使用的命令列引數。",
|
||||
|
@ -14,10 +15,8 @@
|
|||
"terminal.integrated.shellArgs.windows": "在 Windows 終端機上時要使用的命令列引數。",
|
||||
"terminal.integrated.rightClickCopyPaste": "如有設定,這會防止在終端機內按滑鼠右鍵時顯示操作功能表,而是在有選取項目時複製、沒有選取項目時貼上。",
|
||||
"terminal.integrated.fontFamily": "控制終端機的字型家族,預設為 editor.fontFamily 的值。",
|
||||
"terminal.integrated.fontLigatures": "控制是否在終端機中啟用連字字型。",
|
||||
"terminal.integrated.fontSize": "控制終端機的字型大小 (以像素為單位)。",
|
||||
"terminal.integrated.lineHeight": "控制終端機的行高,此數字會乘上終端機字型大小,以取得以像素為單位的實際行高。",
|
||||
"terminal.integrated.enableBold": "是否要在終端機內啟用粗體文字。此動作需要終端機殼層的支援。",
|
||||
"terminal.integrated.cursorBlinking": "控制終端機資料指標是否閃爍。",
|
||||
"terminal.integrated.cursorStyle": "控制終端機資料指標的樣式。",
|
||||
"terminal.integrated.scrollback": "控制終端機保留在其緩衝區中的行數上限。",
|
||||
|
@ -28,7 +27,6 @@
|
|||
"terminal.integrated.env.osx": "OS X 上的終端機要使用之具有將新增至 VS Code 流程之環境變數的物件",
|
||||
"terminal.integrated.env.linux": "Linux 上的終端機要使用之具有將新增至 VS Code 流程之環境變數的物件",
|
||||
"terminal.integrated.env.windows": "Windows 上的終端機要使用之具有將新增至 VS Code 流程之環境變數的物件",
|
||||
"terminal": "終端機",
|
||||
"terminalCategory": "終端機",
|
||||
"viewCategory": "檢視"
|
||||
}
|
|
@ -38,6 +38,5 @@
|
|||
"workbench.action.terminal.focusFindWidget": "焦點尋找小工具",
|
||||
"workbench.action.terminal.hideFindWidget": "隱藏尋找小工具",
|
||||
"nextTerminalFindTerm": "顯示下一個尋找字詞",
|
||||
"previousTerminalFindTerm": "顯示上一個尋找字詞",
|
||||
"quickOpenTerm": "終端機: 切換使用中的終端機"
|
||||
"previousTerminalFindTerm": "顯示上一個尋找字詞"
|
||||
}
|
|
@ -35,8 +35,6 @@
|
|||
"welcomePage.showCommandsDescription": "從命令選擇區快速存取及搜尋命令 ({0})",
|
||||
"welcomePage.interfaceOverview": "介面概觀",
|
||||
"welcomePage.interfaceOverviewDescription": "使用視覺覆疊效果強調顯示 UI 的主要元件",
|
||||
"welcomePage.deployToAzure": "佈署應用程式到雲端",
|
||||
"welcomePage.deployToAzureDescription": "了解如何將結點應用程式部署至 Azure App Service",
|
||||
"welcomePage.interactivePlayground": "Interactive Playground",
|
||||
"welcomePage.interactivePlaygroundDescription": "嘗試使用逐步解說短片中的一些基本編輯器功能"
|
||||
}
|
|
@ -4,13 +4,12 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"vscode.extension.contributes.configuration": "提供組態設定。",
|
||||
"vscode.extension.contributes.configuration.title": "設定的摘要。此標籤將會在設定檔中作為分隔註解使用。",
|
||||
"vscode.extension.contributes.configuration.properties": "組態屬性的描述。",
|
||||
"scope.window.description": "視窗特定組態,可在使用者或工作區設定中予以設定。",
|
||||
"scope.resource.description": "資源特定設定,可在使用者、工作區或資料夾設定中予以設定。",
|
||||
"scope.description": "組態適用的範圍。可用的範圍為「視窗」和「資源」。",
|
||||
"invalid.type": "如果已設定,'configuration.type' 必須設定為物件",
|
||||
"vscode.extension.contributes.configuration": "提供組態設定。",
|
||||
"invalid.title": "'configuration.title' 必須是字串",
|
||||
"vscode.extension.contributes.defaultConfiguration": "依語言貢獻預設編輯器組態設定。",
|
||||
"invalid.properties": "'configuration.properties' 必須是物件",
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"fileInvalidPath": "檔案資源 ({0}) 無效",
|
||||
"fileIsDirectoryError": "檔案是目錄 ({0})",
|
||||
"fileNotModifiedError": "未修改檔案的時間",
|
||||
"fileTooLargeError": "檔案太大無法開啟",
|
||||
"fileBinaryError": "檔案似乎是二進位檔,因此無法當做文字開啟",
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"azure-account.copyAndOpen": "Kopieren & Öffnen",
|
||||
"azure-account.close": "Schließen",
|
||||
"azure-account.loginFirst": "Nicht angemeldet, bitte zuerst anmelden.",
|
||||
"azure-account.userCodeFailed": "Fehler beim Erfassen von Benutzercode.",
|
||||
"azure-account.tokenFailed": "Token wird mit Gerätecode erfasst",
|
||||
"azure-account.tokenFromRefreshTokenFailed": "Token wird mit Aktualisierungstoken erfasst"
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"azure-account.loggingIn": "Azure: Melde an...",
|
||||
"azure-account.loggedIn": "Azure: {0}"
|
||||
}
|
|
@ -151,6 +151,10 @@
|
|||
"mZoom": "Zoom",
|
||||
"mBringToFront": "Alle in den Vordergrund",
|
||||
"miSwitchWindow": "Fenster &&wechseln...",
|
||||
"mShowPreviousTab": "Vorherige Registerkarte anzeigen",
|
||||
"mShowNextTab": "Nächste Registerkarte anzeigen",
|
||||
"mMoveTabToNewWindow": "Registerkarte in neues Fenster verschieben",
|
||||
"mMergeAllWindows": "Alle Fenster zusammenführen",
|
||||
"miToggleDevTools": "&&Entwicklertools umschalten",
|
||||
"miAccessibilityOptions": "&&Optionen für erleichterte Bedienung",
|
||||
"miReportIssues": "&&Probleme melden",
|
||||
|
@ -180,6 +184,6 @@
|
|||
"miDownloadingUpdate": "Das Update wird heruntergeladen...",
|
||||
"miInstallingUpdate": "Update wird installiert...",
|
||||
"miCheckForUpdates": "Nach Aktualisierungen suchen...",
|
||||
"aboutDetail": "\nVersion {0}\nCommit {1}\nDatum {2}\nShell {3}\nRenderer {4}\nKnoten {5}\nArchitektur {6}",
|
||||
"aboutDetail": "\nVersion {0}\nCommit {1}\nDatum {2}\nShell {3}\nRenderer {4}\nNode {5}\nArchitektur {6}",
|
||||
"okButton": "OK"
|
||||
}
|
|
@ -7,14 +7,6 @@
|
|||
"ok": "OK",
|
||||
"pathNotExistTitle": "Der Pfad ist nicht vorhanden.",
|
||||
"pathNotExistDetail": "Der Pfad \"{0}\" scheint auf dem Datenträger nicht mehr vorhanden zu sein.",
|
||||
"openWorkspace": "&&Öffnen",
|
||||
"openWorkspaceTitle": "Arbeitsbereich öffnen",
|
||||
"save": "&&Speichern",
|
||||
"doNotSave": "&&Nicht speichern",
|
||||
"cancel": "Abbrechen",
|
||||
"saveWorkspaceMessage": "Möchten Sie Ihre Arbeitsbereichskonfiguration als Datei speichern?",
|
||||
"saveWorkspaceDetail": "Speichern Sie Ihren Arbeitsbereich, wenn Sie ihn erneut öffnen möchten.",
|
||||
"saveWorkspace": "Arbeitsbereich speichern",
|
||||
"reopen": "Erneut öffnen",
|
||||
"wait": "Bitte warten.",
|
||||
"close": "Schließen",
|
||||
|
@ -24,5 +16,13 @@
|
|||
"appCrashedDetail": "Bitte entschuldigen Sie die Unannehmlichkeiten. Sie können das Fenster erneut öffnen und dort weitermachen, wo Sie aufgehört haben.",
|
||||
"open": "Öffnen",
|
||||
"openFolder": "Ordner öffnen",
|
||||
"openFile": "Datei öffnen"
|
||||
"openFile": "Datei öffnen",
|
||||
"openWorkspace": "&&Öffnen",
|
||||
"openWorkspaceTitle": "Arbeitsbereich öffnen",
|
||||
"save": "&&Speichern",
|
||||
"doNotSave": "&&Nicht speichern",
|
||||
"cancel": "Abbrechen",
|
||||
"saveWorkspaceMessage": "Möchten Sie Ihre Arbeitsbereichskonfiguration als Datei speichern?",
|
||||
"saveWorkspaceDetail": "Speichern Sie Ihren Arbeitsbereich, wenn Sie ihn erneut öffnen möchten.",
|
||||
"saveWorkspace": "Arbeitsbereich speichern"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"label.close": "Schließen"
|
||||
}
|
|
@ -15,7 +15,7 @@
|
|||
"reuseWindow": "Erzwingt das Öffnen einer Datei oder eines Ordners im letzten aktiven Fenster.",
|
||||
"userDataDir": "Gibt das Verzeichnis an, in dem Benutzerdaten gespeichert werden. Nützlich, wenn die Ausführung als \"root\" erfolgt.",
|
||||
"verbose": "Ausführliche Ausgabe (impliziert \"-wait\").",
|
||||
"wait": "Wartet, bis das Fenster geschlossen wurde, bevor die Rückgabe erfolgt.",
|
||||
"wait": "Warten Sie, bis die Dateien geschlossen sind, bevor Sie zurück gehen können.",
|
||||
"extensionHomePath": "Legen Sie den Stammpfad für Extensions fest.",
|
||||
"listExtensions": "Listet die installierten Extensions auf.",
|
||||
"showVersions": "Zeigt Versionen der installierten Erweiterungen an, wenn \"--list-extension\" verwendet wird.",
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"vscode.extension.activationEvents": "Aktivierungsereignisse für die VS Code-Extension.",
|
||||
"vscode.extension.activationEvents.onLanguage": "Ein Aktivierungsereignis wird beim Öffnen einer Datei ausgegeben, die in die angegebene Sprache aufgelöst wird.",
|
||||
"vscode.extension.activationEvents.onCommand": "Ein Aktivierungsereignis wird beim Aufrufen des angegebenen Befehls ausgegeben.",
|
||||
"vscode.extension.activationEvents.onDebug": "Ein Aktivierungsereignis wird beim Starten einer Debugsitzung des angegebenen Typs ausgegeben.",
|
||||
"vscode.extension.activationEvents.onDebug": "Ein Aktivierungsereignis wird ausgesandt, wenn ein Benutzer eine Debugging startet, oder eine Debug-Konfiguration erstellt.",
|
||||
"vscode.extension.activationEvents.workspaceContains": "Ein Aktivierungsereignis wird beim Öffnen eines Ordners ausgegeben, der mindestens eine Datei enthält, die mit dem angegebenen Globmuster übereinstimmt.",
|
||||
"vscode.extension.activationEvents.onView": "Ein Aktivierungsereignis wird beim Erweitern der angegebenen Ansicht ausgegeben.",
|
||||
"vscode.extension.activationEvents.star": "Ein Aktivierungsereignis wird beim Start von VS Code ausgegeben. Damit für die Endbenutzer eine bestmögliche Benutzerfreundlichkeit sichergestellt ist, verwenden Sie dieses Aktivierungsereignis in Ihrer Erweiterung nur dann, wenn in Ihrem Anwendungsfall keine andere Kombination an Aktivierungsereignissen funktioniert.",
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
"contributes.defaults.highContrast": "Die Standardfarbe für Themen mit hohem Kontrast. Entweder eine Farbe als Hex-Code (#RRGGBB[AA]) oder der Bezeichner einer verwendbaren Farbe, der eine Standardeinstellung bereitstellt.",
|
||||
"invalid.colorConfiguration": "\"configuration.colors\" muss ein Array sein.",
|
||||
"invalid.default.colorType": "{0} muss entweder eine Farbe als Hex-Code (#RRGGBB[AA] oder #RGB[A]) sein oder der Bezeichner einer verwendbaren Farbe, der eine Standardeinstellung bereitstellt.",
|
||||
"invalid.id": "\"configuration.colors.id\" muss definiert und nicht leer sein",
|
||||
"invalid.id.format": "\"configuration.colors.id\" muss auf das Wort[.word]* folgen",
|
||||
"invalid.description": "\"configuration.colors.description\" muss definiert und nicht leer sein",
|
||||
"invalid.defaults": "\"configuration.colors.defaults\" muss definiert sein, und \"light\", \"dark\" und \"highContrast\" enthalten"
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"requirearray": "Ansichten müssen ein Array sein.",
|
||||
"requirestring": "Die Eigenschaft \"{0}\" ist erforderlich. Sie muss vom Typ \"string\" sein.",
|
||||
"optstring": "Die Eigenschaft \"{0}\" kann ausgelassen werden oder muss vom Typ \"string\" sein.",
|
||||
"vscode.extension.contributes.view.id": "Bezeichner der Ansicht. Damit können Sie einen Datenanbieter über die API \"vscode.window.registerTreeDataProviderForView\" registrieren. Er dient auch zum Aktivieren Ihrer Erweiterung, indem Sie das Ereignis \"onView:${id}\" für \"activationEvents\" registrieren.",
|
||||
"vscode.extension.contributes.view.name": "Der visuell lesbare Name der Ansicht. Wird angezeigt",
|
||||
"vscode.extension.contributes.view.when": "Bedingung, die zum Anzeigen dieser Ansicht erfüllt sein muss",
|
||||
"vscode.extension.contributes.views": "Trägt Ansichten zum Editor bei.",
|
||||
"views.explorer": "Explorer-Ansicht",
|
||||
"views.debug": "Debugansicht",
|
||||
"locationId.invalid": "{0}\" ist kein gültiger Ansichtenspeicherort"
|
||||
}
|
|
@ -4,9 +4,9 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"removeFromActivityBar": "Aus Aktivitätsleiste entfernen",
|
||||
"keepInActivityBar": "In Aktivitätsleiste behalten",
|
||||
"badgeTitle": "{0} - {1}",
|
||||
"titleKeybinding": "{0} ({1})",
|
||||
"keepInActivityBar": "In Aktivitätsleiste behalten",
|
||||
"additionalViews": "Zusätzliche Ansichten",
|
||||
"numberBadge": "{0} ({1})",
|
||||
"manageExtension": "Erweiterung verwalten",
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"viewToolbarAriaLabel": "{0}-Aktionen",
|
||||
"hideView": "Auf Randleiste ausblenden"
|
||||
}
|
|
@ -10,6 +10,7 @@
|
|||
"workspaces": "Arbeitsbereiche",
|
||||
"developer": "Entwickler",
|
||||
"showEditorTabs": "Steuert, ob geöffnete Editoren auf Registerkarten angezeigt werden sollen.",
|
||||
"workbench.editor.labelFormat.short": "Den Namen der Datei anzeigen, gefolgt von dessen Verzeichnisnamen.",
|
||||
"editorTabCloseButton": "Steuert die Position der Schließen-Schaltflächen der Editor-Registerkarten oder deaktiviert sie bei der Einstellung \"off\".",
|
||||
"showIcons": "Steuert, ob geöffnete Editoren mit einem Symbol angezeigt werden sollen. Hierzu muss auch ein Symboldesign aktiviert werden.",
|
||||
"enablePreview": "Steuert, ob geöffnete Editoren als Vorschau angezeigt werden. Vorschau-Editoren werden wiederverwendet, bis sie gespeichert werden (z. B. über Doppelklicken oder Bearbeiten).",
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
"view id": "ID",
|
||||
"view name": "Name",
|
||||
"view location": "Wo",
|
||||
"themes": "Designs ({0})",
|
||||
"JSON Validation": "JSON-Validierung ({0})",
|
||||
"commands": "Befehle ({0})",
|
||||
"command name": "Name",
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
"files.exclude.boolean": "Das Globmuster, mit dem Dateipfade verglichen werden sollen. Legen Sie diesen Wert auf \"true\" oder \"false\" fest, um das Muster zu aktivieren bzw. zu deaktivieren.",
|
||||
"files.exclude.when": "Zusätzliche Überprüfung der gleichgeordneten Elemente einer entsprechenden Datei. Verwenden Sie \"$(basename)\" als Variable für den entsprechenden Dateinamen.",
|
||||
"associations": "Konfigurieren Sie Dateizuordnungen zu Sprachen (beispielsweise \"*.extension\": \"html\"). Diese besitzen Vorrang vor den Standardzuordnungen der installierten Sprachen.",
|
||||
"encoding": "Die Standardzeichensatz-Codierung, die beim Lesen und Schreiben von Dateien verwendet werden soll.",
|
||||
"autoGuessEncoding": "Ist diese Option aktiviert, wird beim Öffnen von Dateien versucht, die Zeichensatzcodierung automatisch zu ermitteln.",
|
||||
"eol": "Das Zeilenende-Standardzeichen. Verwenden Sie \\n für LF und \\r\\n für CRLF.",
|
||||
"trimTrailingWhitespace": "Bei Aktivierung werden nachgestellte Leerzeichen beim Speichern einer Datei gekürzt.",
|
||||
"insertFinalNewline": "Bei Aktivierung wird beim Speichern einer Datei eine abschließende neue Zeile am Dateiende eingefügt.",
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"userGuide": "Verwenden Sie die Aktionen auf der Editor-Symbolleiste auf der rechten Seite, um Ihre Änderungen **rückgängig zu machen** oder den Inhalt auf dem Datenträger mit Ihren Änderungen zu **überschreiben**.",
|
||||
"discard": "Verwerfen",
|
||||
"overwrite": "Überschreiben",
|
||||
"retry": "Wiederholen",
|
||||
|
@ -11,6 +12,5 @@
|
|||
"genericSaveError": "Fehler beim Speichern von \"{0}\": {1}.",
|
||||
"staleSaveError": "Fehler beim Speichern von \"{0}\": Der Inhalt auf dem Datenträger ist neuer. Klicken Sie auf **Vergleichen**, um Ihre Version mit der Version auf dem Datenträger zu vergleichen.",
|
||||
"compareChanges": "Vergleichen",
|
||||
"saveConflictDiffLabel": "{0} (auf Datenträger) ↔ {1} (in {2}): Speicherkonflikt lösen",
|
||||
"userGuide": "Verwenden Sie die Aktionen auf der Editor-Symbolleiste auf der rechten Seite, um Ihre Änderungen **rückgängig zu machen** oder den Inhalt auf dem Datenträger mit Ihren Änderungen zu **überschreiben**."
|
||||
"saveConflictDiffLabel": "{0} (auf Datenträger) ↔ {1} (in {2}): Speicherkonflikt lösen"
|
||||
}
|
|
@ -6,7 +6,6 @@
|
|||
{
|
||||
"commitMessage": "Message (press {0} to commit)",
|
||||
"installAdditionalSCMProviders": "Installiere weiter SCM Provider...",
|
||||
"no open repo": "Keine Quellsteuerelemente sind aktiv.",
|
||||
"source control": "Quellcodeverwaltung",
|
||||
"viewletTitle": "{0}: {1}"
|
||||
}
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"showTriggerActions": "Zu Symbol im Arbeitsbereich wechseln...",
|
||||
"name": "Suchen",
|
||||
"search": "Suchen",
|
||||
"showSearchViewlet": "Suche anzeigen",
|
||||
"view": "Anzeigen",
|
||||
"findInFiles": "In Dateien suchen",
|
||||
|
|
|
@ -4,6 +4,13 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"invalid.language": "Unbekannte Sprache in \"contributes.{0}.language\". Bereitgestellter Wert: {1}",
|
||||
"invalid.path.0": "Expected string in `contributes.{0}.path`. Provided value: {1}",
|
||||
"invalid.path.1": "Es wurde erwartet, dass \"contributes.{0}.path\" ({1}) im Ordner ({2}) der Erweiterung enthalten ist. Dies führt ggf. dazu, dass die Erweiterung nicht portierbar ist.",
|
||||
"vscode.extension.contributes.snippets": "Trägt Codeausschnitte bei.",
|
||||
"vscode.extension.contributes.snippets-language": "Der Sprachbezeichner, für den dieser Codeausschnitt beigetragen wird.",
|
||||
"vscode.extension.contributes.snippets-path": "Der Pfad der Codeausschnittdatei. Der Pfad ist relativ zum Erweiterungsordner und beginnt normalerweise mit \". /snippets/\".",
|
||||
"badVariableUse": "Das \"{0}\"-Snippet verwirrt wahrscheinlich Snippet-Variablen und Snippet-Paltzhalter. Schaue https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-syntax für weitere Informationen.",
|
||||
"source.snippet": "Benutzercodeausschnitt",
|
||||
"detail.snippet": "{0} ({1})",
|
||||
"snippetSuggest.longLabel": "{0}, {1}"
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
"manyMarkers": "mehr als 99",
|
||||
"runningTasks": "Aktive Aufgaben anzeigen",
|
||||
"tasks": "Aufgaben",
|
||||
"TaskSystem.noHotSwap": "Zum Ändern des Aufgabenausführungsmoduls muss das Fenster erneut geladen werden.",
|
||||
"TaskService.noBuildTask1": "Keine Buildaufgabe definiert. Markieren Sie eine Aufgabe mit 'isBuildCommand' in der tasks.json-Datei.",
|
||||
"TaskService.noBuildTask2": "Es ist keine Buildaufgabe definiert. Markieren Sie eine Aufgabe in der Datei \"tasks.json\" als \"Buildgruppe\". ",
|
||||
"TaskService.noTestTask1": "Keine Testaufgabe definiert. Markieren Sie eine Aufgabe mit 'isTestCommand' in der tasks.json-Datei.",
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"quickOpen.terminal": "Alle geöffneten Terminals anzeigen",
|
||||
"terminal": "Terminal",
|
||||
"terminalIntegratedConfigurationTitle": "Integriertes Terminal",
|
||||
"terminal.integrated.shell.linux": "Der Pfad der Shell, den das Terminal unter Linux verwendet.",
|
||||
"terminal.integrated.shellArgs.linux": "Die Befehlszeilenargumente, die für das Linux-Terminal verwendet werden sollen.",
|
||||
|
@ -14,10 +15,8 @@
|
|||
"terminal.integrated.shellArgs.windows": "Die Befehlszeilenargumente, die im Windows-Terminal verwendet werden sollen.",
|
||||
"terminal.integrated.rightClickCopyPaste": "Wenn dies festgelegt ist, erscheint das Kontextmenü bei einem Rechtsklick im Terminal nicht mehr. Stattdessen erfolgen die Vorgänge Kopieren, wenn eine Auswahl vorgenommen wurde, sowie Einfügen, wenn keine Auswahl vorgenommen wurde.",
|
||||
"terminal.integrated.fontFamily": "Steuert die Schriftartfamilie des Terminals. Der Standardwert ist \"editor.fontFamily\".",
|
||||
"terminal.integrated.fontLigatures": "Steuert, ob Schriftartligaturen im Terminal aktiviert sind.",
|
||||
"terminal.integrated.fontSize": "Steuert den Schriftgrad des Terminals in Pixeln.",
|
||||
"terminal.integrated.lineHeight": "Steuert die Zeilenhöhe für das Terminal. Dieser Wert wird mit dem Schriftgrad des Terminals multipliziert, um die tatsächliche Zeilenhöhe in Pixeln zu erhalten.",
|
||||
"terminal.integrated.enableBold": "Gibt an, ob Fettdruck im Terminal aktiviert werden soll. Dies muss durch die Terminalshell unterstützt werden.",
|
||||
"terminal.integrated.cursorBlinking": "Steuert, ob der Terminalcursor blinkt.",
|
||||
"terminal.integrated.cursorStyle": "Steuert den Stil des Terminalcursors.",
|
||||
"terminal.integrated.scrollback": "Steuert die maximale Anzahl von Zeilen, die das Terminal im Puffer beibehält.",
|
||||
|
@ -28,7 +27,6 @@
|
|||
"terminal.integrated.env.osx": "Objekt mit Umgebungsvariablen, das dem unter OS X vom Terminal zu verwendenden VS Code-Prozess hinzugefügt wird",
|
||||
"terminal.integrated.env.linux": "Objekt mit Umgebungsvariablen, das dem unter Linux vom Terminal zu verwendenden VS Code-Prozess hinzugefügt wird",
|
||||
"terminal.integrated.env.windows": "Objekt mit Umgebungsvariablen, das dem unter Windows vom Terminal zu verwendenden VS Code-Prozess hinzugefügt wird",
|
||||
"terminal": "Terminal",
|
||||
"terminalCategory": "Terminal",
|
||||
"viewCategory": "Anzeigen"
|
||||
}
|
|
@ -38,6 +38,5 @@
|
|||
"workbench.action.terminal.focusFindWidget": "Widget zum Anzeigen der Suche mit Fokus",
|
||||
"workbench.action.terminal.hideFindWidget": "Widget zum Ausblenden der Suche",
|
||||
"nextTerminalFindTerm": "Nächsten Suchbegriff anzeigen",
|
||||
"previousTerminalFindTerm": "Vorherigen Suchbegriff anzeigen",
|
||||
"quickOpenTerm": "Terminal: Aktives Terminal wechseln"
|
||||
"previousTerminalFindTerm": "Vorherigen Suchbegriff anzeigen"
|
||||
}
|
|
@ -35,8 +35,6 @@
|
|||
"welcomePage.showCommandsDescription": "Über die Befehlspalette ({0}) schnell auf Befehle zugreifen und nach Befehlen suchen",
|
||||
"welcomePage.interfaceOverview": "Überblick über die Schnittstelle",
|
||||
"welcomePage.interfaceOverviewDescription": "Erhalten Sie eine visuelle Überlagerung, die die wichtigsten Komponenten der Benutzeroberfläche hervorhebt.",
|
||||
"welcomePage.deployToAzure": "Anwendungen in der Cloud bereitstellen",
|
||||
"welcomePage.deployToAzureDescription": "Hier erfahren Sie, wie Sie Ihre Node-Apps in Azure App Service bereitstellen.",
|
||||
"welcomePage.interactivePlayground": "Interaktiver Playground",
|
||||
"welcomePage.interactivePlaygroundDescription": "Testen Sie die wichtigsten Editorfunktionen in einer kurzen exemplarischen Vorgehensweise."
|
||||
}
|
|
@ -4,13 +4,12 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"vscode.extension.contributes.configuration": "Trägt Konfigurationseigenschaften bei.",
|
||||
"vscode.extension.contributes.configuration.title": "Eine Zusammenfassung der Einstellungen. Diese Bezeichnung wird in der Einstellungsdatei als trennender Kommentar verwendet.",
|
||||
"vscode.extension.contributes.configuration.properties": "Die Beschreibung der Konfigurationseigenschaften.",
|
||||
"scope.window.description": "Fensterspezifische Konfiguration, die in den Benutzer- oder Arbeitsbereichseinstellungen konfiguriert werden kann.",
|
||||
"scope.resource.description": "Ressourcenspezifische Konfiguration, die in den Benutzer-, Arbeitsbereichs- oder Ordnereinstellungen konfiguriert werden kann.",
|
||||
"scope.description": "Bereich, in dem die Konfiguration gültig ist. Verfügbare Gültigkeitsbereiche sind \"window\" und \"resource\".",
|
||||
"invalid.type": "Wenn eine Festlegung erfolgt, muss \"configuration.type\" auf \"object\" festgelegt werden.",
|
||||
"vscode.extension.contributes.configuration": "Trägt Konfigurationseigenschaften bei.",
|
||||
"invalid.title": "configuration.title muss eine Zeichenfolge sein.",
|
||||
"vscode.extension.contributes.defaultConfiguration": "Trägt zu Konfigurationeinstellungen des Standard-Editors für die jeweilige Sprache bei.",
|
||||
"invalid.properties": "\"configuration.properties\" muss ein Objekt sein.",
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"fileInvalidPath": "Ungültige Dateiressource ({0})",
|
||||
"fileIsDirectoryError": "Die Datei ist ein Verzeichnis ({0}).",
|
||||
"fileNotModifiedError": "Datei nicht geändert seit",
|
||||
"fileTooLargeError": "Die Datei ist zu groß, um sie zu öffnen.",
|
||||
"fileBinaryError": "Die Datei scheint eine Binärdatei zu sein und kann nicht als Text geöffnet werden.",
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"azure-account.copyAndOpen": "Copiar y abrir",
|
||||
"azure-account.close": "Cerrar",
|
||||
"azure-account.login": "Iniciar sesión",
|
||||
"azure-account.loginFirst": "No ha iniciado sesión, inicie sesión primero.",
|
||||
"azure-account.userCodeFailed": "Error adquiriendo el código de usuario",
|
||||
"azure-account.tokenFailed": "Adquiriendo token con el código de dispositivo",
|
||||
"azure-account.tokenFromRefreshTokenFailed": "Adquiriendo token con token de actualización"
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"azure-account.loggingIn": "Azure: Iniciando sesión...",
|
||||
"azure-account.loggedIn": "Azure: {0}"
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"css.title": "CSS",
|
||||
"css.lint.argumentsInColorFunction.desc": "Número de parámetros no válido",
|
||||
"css.lint.boxModel.desc": "No use ancho o alto con el relleno o los bordes.",
|
||||
"css.lint.compatibleVendorPrefixes.desc": "Cuando use un prefijo específico del proveedor, compruebe que también haya incluido el resto de propiedades específicas del proveedor.",
|
||||
|
@ -25,6 +26,7 @@
|
|||
"css.trace.server.desc": "Hace un seguimiento de la comunicación entre VSCode y el servidor de lenguaje CSS.",
|
||||
"css.validate.title": "Controla la validación de CSS y la gravedad de los problemas.",
|
||||
"css.validate.desc": "Habilita o deshabilita todas las validaciones",
|
||||
"less.title": "LESS",
|
||||
"less.lint.argumentsInColorFunction.desc": "Número de parámetros no válido",
|
||||
"less.lint.boxModel.desc": "No use ancho o alto con el relleno o los bordes.",
|
||||
"less.lint.compatibleVendorPrefixes.desc": "Cuando use un prefijo específico del proveedor, compruebe que también haya incluido el resto de propiedades específicas del proveedor.",
|
||||
|
@ -45,6 +47,7 @@
|
|||
"less.lint.zeroUnits.desc": "No se necesita una unidad para cero",
|
||||
"less.validate.title": "Controla la validación de LESS y la gravedad de los problemas.",
|
||||
"less.validate.desc": "Habilita o deshabilita todas las validaciones",
|
||||
"scss.title": "SCSS (Sass)",
|
||||
"scss.lint.argumentsInColorFunction.desc": "Número de parámetros no válido",
|
||||
"scss.lint.boxModel.desc": "No use ancho o alto con el relleno o los bordes.",
|
||||
"scss.lint.compatibleVendorPrefixes.desc": "Cuando use un prefijo específico del proveedor, compruebe que también haya incluido el resto de propiedades específicas del proveedor.",
|
||||
|
|
|
@ -59,5 +59,5 @@
|
|||
"config.defaultCloneDirectory": "La ubicación predeterminada en la que se clona un repositorio git",
|
||||
"config.enableSmartCommit": "Confirmar todos los cambios cuando no hay elementos almacenados provisionalmente.",
|
||||
"config.enableCommitSigning": "Habilitar confirmar firma con GPG.",
|
||||
"config.discardAllScope": "Controla qué cambios son descartados por el comando 'Descartar todos los cambios'. 'todos' descarta todos los cambios. 'seguidos' descarta sólo los ficheros en seguimiento. 'confirmar' muestra un cuadro de diálogo para confirmar cada vez la acción ejecutada."
|
||||
"config.discardAllScope": "Controla qué cambios son descartados por el comando 'Descartar todos los cambios'. 'all' descarta todos los cambios. 'tracked' descarta sólo los ficheros en seguimiento. 'prompt' muestra un cuadro de diálogo para confirmar cada vez la acción ejecutada."
|
||||
}
|
|
@ -151,6 +151,10 @@
|
|||
"mZoom": "Zoom",
|
||||
"mBringToFront": "Traer todo al frente",
|
||||
"miSwitchWindow": "Cambiar &&Ventana...",
|
||||
"mShowPreviousTab": "Mostrar pestaña anterior",
|
||||
"mShowNextTab": "Mostrar siguiente pestaña",
|
||||
"mMoveTabToNewWindow": "Mover pestaña a una nueva ventana",
|
||||
"mMergeAllWindows": "Fusionar todas las ventanas",
|
||||
"miToggleDevTools": "&&Alternar herramientas de desarrollo",
|
||||
"miAccessibilityOptions": "&&Opciones de accesibilidad",
|
||||
"miReportIssues": "&&Notificar problemas",
|
||||
|
|
|
@ -7,14 +7,6 @@
|
|||
"ok": "Aceptar",
|
||||
"pathNotExistTitle": "La ruta no existe",
|
||||
"pathNotExistDetail": "Parece que la ruta '{0}' ya no existe en el disco.",
|
||||
"openWorkspace": "&&Abrir...",
|
||||
"openWorkspaceTitle": "Abrir área de trabajo",
|
||||
"save": "&&Guardar",
|
||||
"doNotSave": "&&No guardar",
|
||||
"cancel": "Cancelar",
|
||||
"saveWorkspaceMessage": "¿Quiere guardar la configuración del área de trabajo como un archivo?",
|
||||
"saveWorkspaceDetail": "Guarde el área de trabajo si tiene pensado volverla a abrir.",
|
||||
"saveWorkspace": "Guardar área de trabajo",
|
||||
"reopen": "Volver a abrir",
|
||||
"wait": "Siga esperando",
|
||||
"close": "Cerrar",
|
||||
|
@ -24,5 +16,14 @@
|
|||
"appCrashedDetail": "Sentimos las molestias. Puede volver a abrir la ventana para continuar donde se detuvo.",
|
||||
"open": "Abrir",
|
||||
"openFolder": "Abrir carpeta",
|
||||
"openFile": "Abrir archivo"
|
||||
"openFile": "Abrir archivo",
|
||||
"workspaceOpenedMessage": "No se puede guardar el espacio de trabajo '{0}'",
|
||||
"openWorkspace": "&&Abrir...",
|
||||
"openWorkspaceTitle": "Abrir área de trabajo",
|
||||
"save": "&&Guardar",
|
||||
"doNotSave": "&&No guardar",
|
||||
"cancel": "Cancelar",
|
||||
"saveWorkspaceMessage": "¿Quiere guardar la configuración del área de trabajo como un archivo?",
|
||||
"saveWorkspaceDetail": "Guarde el área de trabajo si tiene pensado volverla a abrir.",
|
||||
"saveWorkspace": "Guardar área de trabajo"
|
||||
}
|
|
@ -88,6 +88,7 @@
|
|||
"accessibilitySupport": "Controla si el editor se debe ejecutar en un modo optimizado para lectores de pantalla.",
|
||||
"links": "Controla si el editor debe detectar enlaces y hacerlos cliqueables",
|
||||
"colorDecorators": "Controla si el editor debe representar el Selector de colores y los elementos Decorator de color en línea.",
|
||||
"codeActions": "Permite que el foco de acción del código",
|
||||
"sideBySide": "Controla si el editor de diferencias muestra las diferencias en paralelo o alineadas.",
|
||||
"ignoreTrimWhitespace": "Controla si el editor de diferencias muestra los cambios de espacio inicial o espacio final como diferencias.",
|
||||
"renderIndicators": "Controla si el editor de diff muestra indicadores +/- para cambios agregados/quitados",
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"label.close": "Cerrar"
|
||||
}
|
|
@ -15,7 +15,7 @@
|
|||
"reuseWindow": "Fuerce la apertura de un archivo o carpeta en la última ventana activa.",
|
||||
"userDataDir": "Especifica el directorio en que se conservan los datos de usuario; es útil cuando se ejecuta como raíz.",
|
||||
"verbose": "Imprima salidas detalladas (implica --wait).",
|
||||
"wait": "Espere que se cierre la ventana antes de volver.",
|
||||
"wait": "Espere a que los archivos sean cerrados antes de volver.",
|
||||
"extensionHomePath": "Establezca la ruta de acceso raíz para las extensiones.",
|
||||
"listExtensions": "Enumere las extensiones instaladas.",
|
||||
"showVersions": "Muestra las versiones de las extensiones instaladas cuando se usa --list-extension.",
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"vscode.extension.activationEvents": "Eventos de activación de la extensión VS Code.",
|
||||
"vscode.extension.activationEvents.onLanguage": "Un evento de activación emitido cada vez que se abre un archivo que se resuelve en el idioma especificado.",
|
||||
"vscode.extension.activationEvents.onCommand": "Un evento de activación emitido cada vez que se invoca el comando especificado.",
|
||||
"vscode.extension.activationEvents.onDebug": "Un evento de activación emitido cada vez que se inicia una sesión de depuración del tipo especificado.",
|
||||
"vscode.extension.activationEvents.onDebug": "Un evento de activación emitido cada vez que un usuario está a punto de iniciar la depuración o cada vez que está a punto de configurar las opciones de depuración.",
|
||||
"vscode.extension.activationEvents.workspaceContains": "Un evento de activación emitido cada vez que se abre una carpeta que contiene al menos un archivo que coincide con el patrón global especificado.",
|
||||
"vscode.extension.activationEvents.onView": "Un evento de activación emitido cada vez que se expande la vista especificada.",
|
||||
"vscode.extension.activationEvents.star": "Un evento de activación emitido al inicio de VS Code. Para garantizar una buena experiencia para el usuario final, use este evento de activación en su extensión solo cuando no le sirva ninguna otra combinación de eventos de activación en su caso.",
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
"contributes.defaults.highContrast": "El color predeterminado para los temas con constraste. Un valor de color en hexadecimal (#RRGGBB [AA]) o el identificador de un color para los temas que proporciona el valor predeterminado.",
|
||||
"invalid.colorConfiguration": "'configuration.colors' debe ser una matriz",
|
||||
"invalid.default.colorType": "{0} debe ser un valor de color en hexadecimal (#RRGGBB [AA] o #RGB [A]) o el identificador de un color para los temas que puede ser el valor predeterminado.",
|
||||
"invalid.id": "'configuration.colors.id' debe ser definida y no puede estar vacía",
|
||||
"invalid.id": "'configuration.colors.id' debe definirse y no puede estar vacío",
|
||||
"invalid.id.format": "'configuration.colors.id' debe seguir la palabra [.word]*",
|
||||
"invalid.description": "'configuration.colors.description' debe ser definida y no puede estar vacía",
|
||||
"invalid.description": "'configuration.colors.description' debe definirse y no puede estar vacío",
|
||||
"invalid.defaults": "'configuration.colors.defaults' debe ser definida y contener 'light', 'dark' y 'highContrast'"
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"requirearray": "views debe ser una mariz",
|
||||
"requirestring": "la propiedad `{0}` es obligatoria y debe ser de tipo \"string\"",
|
||||
"optstring": "la propiedad `{0}` se puede omitir o debe ser de tipo \"string\"",
|
||||
"vscode.extension.contributes.view.id": "Identificador de la vista. Úselo para registrar un proveedor de datos mediante la API \"vscode.window.registerTreeDataProviderForView\". También para desencadenar la activación de su extensión al registrar el evento \"onView:${id}\" en \"activationEvents\".",
|
||||
"vscode.extension.contributes.view.name": "Nombre de la vista en lenguaje natural. Será mostrado",
|
||||
"vscode.extension.contributes.view.when": "Condición que se debe cumplir para mostrar esta vista",
|
||||
"vscode.extension.contributes.views": "Aporta vistas al editor",
|
||||
"views.explorer": "Vista del explorador",
|
||||
"views.debug": "Vista de depuración",
|
||||
"locationId.invalid": "`{0}` no es una ubicación de vista válida"
|
||||
}
|
|
@ -4,9 +4,10 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"removeFromActivityBar": "Quitar de la barra de actividades",
|
||||
"keepInActivityBar": "Guardar en la barra de la actividad",
|
||||
"badgeTitle": "{0} - {1} ",
|
||||
"titleKeybinding": "{0} ({1})",
|
||||
"removeFromActivityBar": "Ocultar de la barra de la actividad",
|
||||
"keepInActivityBar": "Guardar en la barra de la actividad",
|
||||
"additionalViews": "Vistas adicionales",
|
||||
"numberBadge": "{0} ({1})",
|
||||
"manageExtension": "Administrar extensión",
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"viewToolbarAriaLabel": "{0} acciones",
|
||||
"hideView": "Ocultar en la barra lateral"
|
||||
}
|
|
@ -42,5 +42,10 @@
|
|||
"navigateUp": "Navegar a la Vista Superior",
|
||||
"navigateDown": "Navegar a la Vista Inferior",
|
||||
"increaseViewSize": "Aumentar tamaño de vista actual",
|
||||
"decreaseViewSize": "Reducir tamaño de vista actual"
|
||||
"decreaseViewSize": "Reducir tamaño de vista actual",
|
||||
"showPreviousTab": "Mostrar pestaña de ventana anterior",
|
||||
"showNextWindowTab": "Mostrar siguiente pestaña de ventana",
|
||||
"moveWindowTabToNewWindow": "Mover pestaña de ventana a una nueva ventana",
|
||||
"mergeAllWindowTabs": "Fusionar todas las ventanas",
|
||||
"toggleWindowTabsBar": "Alternar barra de pestañas de ventana"
|
||||
}
|
|
@ -10,6 +10,8 @@
|
|||
"workspaces": "Áreas de trabajo",
|
||||
"developer": "Desarrollador",
|
||||
"showEditorTabs": "Controla si los editores abiertos se deben mostrar o no en pestañas.",
|
||||
"workbench.editor.labelFormat.short": "Mostrar el nombre del archivo seguido de su nombre de directorio.",
|
||||
"workbench.editor.labelFormat.medium": "Mostrar el nombre del archivo seguido de la ruta de acceso relativo a la raíz del espacio de trabajo.",
|
||||
"editorTabCloseButton": "Controla la posición de los botones de cierre de pestañas del editor o los deshabilita si se establece en \"off\".",
|
||||
"showIcons": "Controla si los editores abiertos deben mostrarse o no con un icono. Requiere que también se habilite un tema de icono.",
|
||||
"enablePreview": "Controla si los editores abiertos se muestran en vista previa. Los editores en vista previa se reutilizan hasta que se guardan (por ejemplo, mediante doble clic o editándolos).",
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
"breakpointRemoved": "Punto de interrupción quitado, línea {0}, archivo {1}",
|
||||
"compoundMustHaveConfigurations": "El compuesto debe tener configurado el atributo \"configurations\" a fin de iniciar varias configuraciones.",
|
||||
"configMissing": "La configuración \"{0}\" falta en \"launch.json\".",
|
||||
"debugRequestNotSupported": "La solicitud de depuración configurada '{0}' no es compatible",
|
||||
"debugRequesMissing": "Falta la solicitud de depuración en la configuración de inicio seleccionada",
|
||||
"debugTypeNotSupported": "El tipo de depuración '{0}' configurado no es compatible.",
|
||||
"debugTypeMissing": "Falta la propiedad \"type\" en la configuración de inicio seleccionada.",
|
||||
"preLaunchTaskErrors": "Errores de compilación durante la tarea preLaunchTask '{0}'.",
|
||||
|
|
|
@ -29,7 +29,13 @@
|
|||
"view id": "Id.",
|
||||
"view name": "Nombre",
|
||||
"view location": "Donde",
|
||||
"themes": "Temas ({0})",
|
||||
"colorThemes": "Temas de color ({0})",
|
||||
"iconThemes": "Temas del icono ({0})",
|
||||
"colors": "Colores ({0})",
|
||||
"colorId": "ID",
|
||||
"defaultDark": "Oscuro por defecto",
|
||||
"defaultLight": "Claro por defecto",
|
||||
"defaultHC": "Contraste alto por defecto",
|
||||
"JSON Validation": "Validación JSON ({0})",
|
||||
"commands": "Comandos ({0})",
|
||||
"command name": "Nombre",
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
"files.exclude.boolean": "El patrón global con el que se harán coincidir las rutas de acceso de los archivos. Establézcalo en true o false para habilitarlo o deshabilitarlo.",
|
||||
"files.exclude.when": "Comprobación adicional de los elementos del mismo nivel de un archivo coincidente. Use $(nombreBase) como variable para el nombre de archivo que coincide.",
|
||||
"associations": "Configure asociaciones de archivo para los lenguajes (por ejemplo, \"*.extension\": \"html\"). Estas asociaciones tienen prioridad sobre las asociaciones predeterminadas de los lenguajes instalados.",
|
||||
"encoding": "La codificación del juego de caracteres predeterminada que debe utilizarse al leer y escribir archivos.",
|
||||
"autoGuessEncoding": "Si está opción está habilitada, se intentará adivinar la codificación del juego de caracteres al abrir los archivos",
|
||||
"eol": "Carácter predeterminado de final de línea. Utilice \\n para LF y \\r\\n para CRLF.",
|
||||
"trimTrailingWhitespace": "Si se habilita, se recortará el espacio final cuando se guarde un archivo.",
|
||||
"insertFinalNewline": "Si se habilita, inserte una nueva línea final al final del archivo cuando lo guarde.",
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"userGuide": "Use las acciones de la barra de herramientas del editor situada a la derecha para **deshacer** los cambios o **sobrescribir** el contenido del disco con sus cambios",
|
||||
"discard": "Descartar",
|
||||
"overwrite": "Sobrescribir",
|
||||
"retry": "Reintentar",
|
||||
|
@ -11,6 +12,5 @@
|
|||
"genericSaveError": "No se pudo guardar '{0}': {1}",
|
||||
"staleSaveError": "No se pudo guardar '{0}': El contenido del disco es más reciente. Haga clic en **Comparar** para comparar su versión con la que hay en el disco.",
|
||||
"compareChanges": "Comparar",
|
||||
"saveConflictDiffLabel": "0} (on disk) ↔ {1} (in {2}) - Resolver conflicto guardado",
|
||||
"userGuide": "Use las acciones de la barra de herramientas del editor situada a la derecha para **deshacer** los cambios o **sobrescribir** el contenido del disco con sus cambios"
|
||||
"saveConflictDiffLabel": "0} (on disk) ↔ {1} (in {2}) - Resolver conflicto guardado"
|
||||
}
|
|
@ -4,5 +4,6 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"dirtyFile": "1 archivo no guardado",
|
||||
"dirtyFiles": "{0} archivos no guardados"
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
{
|
||||
"commitMessage": "Message (press {0} to commit)",
|
||||
"installAdditionalSCMProviders": "Instalar proveedores adicionales de SCM...",
|
||||
"no open repo": "No hay controles de código fuente activos.",
|
||||
"no open repo": "No hay proveedores de control de código fuente activos.",
|
||||
"source control": "Control de código fuente",
|
||||
"viewletTitle": "{0}: {1}"
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue