From 39d7fde0b012e0c6f112fe2af006231244e64f71 Mon Sep 17 00:00:00 2001 From: Mark Sujew Date: Fri, 10 Sep 2021 14:52:07 +0000 Subject: [PATCH] Enable localization of monaco-editor --- packages/monaco/data/monaco-nls.json | 1379 ++++++++++++++++++ packages/monaco/src/browser/monaco-loader.ts | 31 +- scripts/translate-monaco.js | 151 ++ 3 files changed, 1560 insertions(+), 1 deletion(-) create mode 100644 packages/monaco/data/monaco-nls.json create mode 100644 scripts/translate-monaco.js diff --git a/packages/monaco/data/monaco-nls.json b/packages/monaco/data/monaco-nls.json new file mode 100644 index 0000000000000..0b5717708139f --- /dev/null +++ b/packages/monaco/data/monaco-nls.json @@ -0,0 +1,1379 @@ +{ + "vs/base/browser/ui/actionbar/actionViewItems": { + "titleLabel": "{0} ({1})" + }, + "vs/base/browser/ui/findinput/findInput": { + "defaultLabel": "input" + }, + "vs/base/browser/ui/findinput/findInputCheckboxes": { + "caseDescription": "Match Case", + "wordsDescription": "Match Whole Word", + "regexDescription": "Use Regular Expression" + }, + "vs/base/browser/ui/findinput/replaceInput": { + "defaultLabel": "input", + "label.preserveCaseCheckbox": "Preserve Case" + }, + "vs/base/browser/ui/iconLabel/iconLabel": { + "iconLabel.loading": "Loading..." + }, + "vs/base/browser/ui/inputbox/inputBox": { + "alertErrorMessage": "Error: {0}", + "alertWarningMessage": "Warning: {0}", + "alertInfoMessage": "Info: {0}" + }, + "vs/base/browser/ui/keybindingLabel/keybindingLabel": { + "unbound": "Unbound" + }, + "vs/base/browser/ui/menu/menu": { + "titleLabel": "{0} ({1})" + }, + "vs/base/browser/ui/selectBox/selectBoxCustom": { + "selectBox": "Select Box" + }, + "vs/base/browser/ui/tree/abstractTree": { + "clear": "Clear", + "disable filter on type": "Disable Filter on Type", + "enable filter on type": "Enable Filter on Type", + "empty": "No elements found", + "found": "Matched {0} out of {1} elements" + }, + "vs/base/common/actions": { + "submenu.empty": "(empty)" + }, + "vs/base/common/errorMessage": { + "stackTrace.format": "{0}: {1}", + "nodeExceptionMessage": "A system error occurred ({0})", + "error.defaultMessage": "An unknown error occurred. Please consult the log for more details.", + "_duplicate/2": "An unknown error occurred. Please consult the log for more details.", + "error.moreErrors": "{0} ({1} errors in total)", + "_duplicate/3": "An unknown error occurred. Please consult the log for more details." + }, + "vs/base/common/keybindingLabels": { + "ctrlKey": "Ctrl", + "shiftKey": "Shift", + "altKey": "Alt", + "windowsKey": "Windows", + "_duplicate/0": "Ctrl", + "_duplicate/1": "Shift", + "_duplicate/2": "Alt", + "superKey": "Super", + "ctrlKey.long": "Control", + "shiftKey.long": "Shift", + "altKey.long": "Alt", + "cmdKey.long": "Command", + "_duplicate/8": "Control", + "_duplicate/9": "Shift", + "_duplicate/10": "Alt", + "windowsKey.long": "Windows", + "_duplicate/12": "Control", + "_duplicate/13": "Shift", + "_duplicate/14": "Alt", + "superKey.long": "Super" + }, + "vs/base/parts/quickinput/browser/quickInput": { + "quickInput.back": "Back", + "quickInput.steps": "{0}/{1}", + "quickInputBox.ariaLabel": "Type to narrow down results.", + "inputModeEntry": "Press 'Enter' to confirm your input or 'Escape' to cancel", + "inputModeEntryDescription": "{0} (Press 'Enter' to confirm or 'Escape' to cancel)", + "quickInput.visibleCount": "{0} Results", + "quickInput.countSelected": "{0} Selected", + "ok": "OK", + "custom": "Custom", + "quickInput.backWithKeybinding": "Back ({0})", + "_duplicate/0": "Back" + }, + "vs/base/parts/quickinput/browser/quickInputList": { + "quickInput": "Quick Input" + }, + "vs/editor/browser/controller/coreCommands": { + "stickydesc": "Stick to the end even when going to longer lines", + "_duplicate/0": "Stick to the end even when going to longer lines" + }, + "vs/editor/browser/controller/textAreaHandler": { + "editor": "editor", + "accessibilityOffAriaLabel": "The editor is not accessible at this time. Press {0} for options." + }, + "vs/editor/browser/core/keybindingCancellation": { + "cancellableOperation": "Whether the editor runs a cancellable operation, e.g. like 'Peek References'" + }, + "vs/editor/browser/editorExtensions": { + "miUndo": "&&Undo", + "undo": "Undo", + "miRedo": "&&Redo", + "redo": "Redo", + "miSelectAll": "&&Select All", + "selectAll": "Select All" + }, + "vs/editor/browser/widget/codeEditorWidget": { + "cursors.maximum": "The number of cursors has been limited to {0}." + }, + "vs/editor/browser/widget/diffEditorWidget": { + "diffInsertIcon": "Line decoration for inserts in the diff editor.", + "diffRemoveIcon": "Line decoration for removals in the diff editor.", + "diff.tooLarge": "Cannot compare files because one file is too large." + }, + "vs/editor/browser/widget/diffReview": { + "diffReviewInsertIcon": "Icon for 'Insert' in diff review.", + "diffReviewRemoveIcon": "Icon for 'Remove' in diff review.", + "diffReviewCloseIcon": "Icon for 'Close' in diff review.", + "label.close": "Close", + "no_lines_changed": "no lines changed", + "one_line_changed": "1 line changed", + "more_lines_changed": "{0} lines changed", + "header": "Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}", + "blankLine": "blank", + "unchangedLine": "{0} unchanged line {1}", + "equalLine": "{0} original line {1} modified line {2}", + "insertLine": "+ {0} modified line {1}", + "deleteLine": "- {0} original line {1}", + "editor.action.diffReview.next": "Go to Next Difference", + "editor.action.diffReview.prev": "Go to Previous Difference" + }, + "vs/editor/browser/widget/inlineDiffMargin": { + "diff.clipboard.copyDeletedLinesContent.label": "Copy deleted lines", + "diff.clipboard.copyDeletedLinesContent.single.label": "Copy deleted line", + "diff.clipboard.copyDeletedLineContent.label": "Copy deleted line ({0})", + "diff.inline.revertChange.label": "Revert this change", + "_duplicate/2": "Copy deleted line ({0})" + }, + "vs/editor/common/config/commonEditorConfig": { + "editorConfigurationTitle": "Editor", + "tabSize": "The number of spaces a tab is equal to. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.", + "insertSpaces": "Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.", + "detectIndentation": "Controls whether `#editor.tabSize#` and `#editor.insertSpaces#` will be automatically detected when a file is opened based on the file contents.", + "trimAutoWhitespace": "Remove trailing auto inserted whitespace.", + "largeFileOptimizations": "Special handling for large files to disable certain memory intensive features.", + "wordBasedSuggestions": "Controls whether completions should be computed based on words in the document.", + "wordBasedSuggestionsMode.currentDocument": "Only suggest words from the active document.", + "wordBasedSuggestionsMode.matchingDocuments": "Suggest words from all open documents of the same language.", + "wordBasedSuggestionsMode.allDocuments": "Suggest words from all open documents.", + "wordBasedSuggestionsMode": "Controls from what documents word based completions are computed.", + "semanticHighlighting.true": "Semantic highlighting enabled for all color themes.", + "semanticHighlighting.false": "Semantic highlighting disabled for all color themes.", + "semanticHighlighting.configuredByTheme": "Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.", + "semanticHighlighting.enabled": "Controls whether the semanticHighlighting is shown for the languages that support it.", + "stablePeek": "Keep peek editors open even when double clicking their content or when hitting `Escape`.", + "maxTokenizationLineLength": "Lines above this length will not be tokenized for performance reasons", + "maxComputationTime": "Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.", + "sideBySide": "Controls whether the diff editor shows the diff side by side or inline.", + "ignoreTrimWhitespace": "When enabled, the diff editor ignores changes in leading or trailing whitespace.", + "renderIndicators": "Controls whether the diff editor shows +/- indicators for added/removed changes.", + "codeLens": "Controls whether the editor shows CodeLens.", + "wordWrap.off": "Lines will never wrap.", + "wordWrap.on": "Lines will wrap at the viewport width.", + "wordWrap.inherit": "Lines will wrap according to the `#editor.wordWrap#` setting." + }, + "vs/editor/common/config/editorOptions": { + "accessibilitySupport.auto": "The editor will use platform APIs to detect when a Screen Reader is attached.", + "accessibilitySupport.on": "The editor will be permanently optimized for usage with a Screen Reader. Word wrapping will be disabled.", + "accessibilitySupport.off": "The editor will never be optimized for usage with a Screen Reader.", + "accessibilitySupport": "Controls whether the editor should run in a mode where it is optimized for screen readers. Setting to on will disable word wrapping.", + "comments.insertSpace": "Controls whether a space character is inserted when commenting.", + "comments.ignoreEmptyLines": "Controls if empty lines should be ignored with toggle, add or remove actions for line comments.", + "emptySelectionClipboard": "Controls whether copying without a selection copies the current line.", + "find.cursorMoveOnType": "Controls whether the cursor should jump to find matches while typing.", + "find.seedSearchStringFromSelection": "Controls whether the search string in the Find Widget is seeded from the editor selection.", + "editor.find.autoFindInSelection.never": "Never turn on Find in selection automatically (default)", + "editor.find.autoFindInSelection.always": "Always turn on Find in selection automatically", + "editor.find.autoFindInSelection.multiline": "Turn on Find in selection automatically when multiple lines of content are selected.", + "find.autoFindInSelection": "Controls the condition for turning on find in selection automatically.", + "find.globalFindClipboard": "Controls whether the Find Widget should read or modify the shared find clipboard on macOS.", + "find.addExtraSpaceOnTop": "Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.", + "find.loop": "Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.", + "fontLigatures": "Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.", + "fontFeatureSettings": "Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.", + "fontLigaturesGeneral": "Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property.", + "fontSize": "Controls the font size in pixels.", + "fontWeightErrorMessage": "Only \"normal\" and \"bold\" keywords or numbers between 1 and 1000 are allowed.", + "fontWeight": "Controls the font weight. Accepts \"normal\" and \"bold\" keywords or numbers between 1 and 1000.", + "editor.gotoLocation.multiple.peek": "Show peek view of the results (default)", + "editor.gotoLocation.multiple.gotoAndPeek": "Go to the primary result and show a peek view", + "editor.gotoLocation.multiple.goto": "Go to the primary result and enable peek-less navigation to others", + "editor.gotoLocation.multiple.deprecated": "This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.", + "editor.editor.gotoLocation.multipleDefinitions": "Controls the behavior the 'Go to Definition'-command when multiple target locations exist.", + "editor.editor.gotoLocation.multipleTypeDefinitions": "Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.", + "editor.editor.gotoLocation.multipleDeclarations": "Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.", + "editor.editor.gotoLocation.multipleImplemenattions": "Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.", + "editor.editor.gotoLocation.multipleReferences": "Controls the behavior the 'Go to References'-command when multiple target locations exist.", + "alternativeDefinitionCommand": "Alternative command id that is being executed when the result of 'Go to Definition' is the current location.", + "alternativeTypeDefinitionCommand": "Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.", + "alternativeDeclarationCommand": "Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.", + "alternativeImplementationCommand": "Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.", + "alternativeReferenceCommand": "Alternative command id that is being executed when the result of 'Go to Reference' is the current location.", + "hover.enabled": "Controls whether the hover is shown.", + "hover.delay": "Controls the delay in milliseconds after which the hover is shown.", + "hover.sticky": "Controls whether the hover should remain visible when mouse is moved over it.", + "codeActions": "Enables the code action lightbulb in the editor.", + "inlineHints.enable": "Enables the inline hints in the editor.", + "inlineHints.fontSize": "Controls font size of inline hints in the editor. When set to `0`, the 90% of `#editor.fontSize#` is used.", + "inlineHints.fontFamily": "Controls font family of inline hints in the editor.", + "lineHeight": "Controls the line height. Use 0 to compute the line height from the font size.", + "minimap.enabled": "Controls whether the minimap is shown.", + "minimap.size.proportional": "The minimap has the same size as the editor contents (and might scroll).", + "minimap.size.fill": "The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling).", + "minimap.size.fit": "The minimap will shrink as necessary to never be larger than the editor (no scrolling).", + "minimap.size": "Controls the size of the minimap.", + "minimap.side": "Controls the side where to render the minimap.", + "minimap.showSlider": "Controls when the minimap slider is shown.", + "minimap.scale": "Scale of content drawn in the minimap: 1, 2 or 3.", + "minimap.renderCharacters": "Render the actual characters on a line as opposed to color blocks.", + "minimap.maxColumn": "Limit the width of the minimap to render at most a certain number of columns.", + "padding.top": "Controls the amount of space between the top edge of the editor and the first line.", + "padding.bottom": "Controls the amount of space between the bottom edge of the editor and the last line.", + "parameterHints.enabled": "Enables a pop-up that shows parameter documentation and type information as you type.", + "parameterHints.cycle": "Controls whether the parameter hints menu cycles or closes when reaching the end of the list.", + "quickSuggestions.strings": "Enable quick suggestions inside strings.", + "quickSuggestions.comments": "Enable quick suggestions inside comments.", + "quickSuggestions.other": "Enable quick suggestions outside of strings and comments.", + "quickSuggestions": "Controls whether suggestions should automatically show up while typing.", + "lineNumbers.off": "Line numbers are not rendered.", + "lineNumbers.on": "Line numbers are rendered as absolute number.", + "lineNumbers.relative": "Line numbers are rendered as distance in lines to cursor position.", + "lineNumbers.interval": "Line numbers are rendered every 10 lines.", + "lineNumbers": "Controls the display of line numbers.", + "rulers.size": "Number of monospace characters at which this editor ruler will render.", + "rulers.color": "Color of this editor ruler.", + "rulers": "Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.", + "suggest.insertMode.insert": "Insert suggestion without overwriting text right of the cursor.", + "suggest.insertMode.replace": "Insert suggestion and overwrite text right of the cursor.", + "suggest.insertMode": "Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.", + "suggest.filterGraceful": "Controls whether filtering and sorting suggestions accounts for small typos.", + "suggest.localityBonus": "Controls whether sorting favours words that appear close to the cursor.", + "suggest.shareSuggestSelections": "Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).", + "suggest.snippetsPreventQuickSuggestions": "Controls whether an active snippet prevents quick suggestions.", + "suggest.showIcons": "Controls whether to show or hide icons in suggestions.", + "suggest.showStatusBar": "Controls the visibility of the status bar at the bottom of the suggest widget.", + "suggest.showInlineDetails": "Controls whether suggest details show inline with the label or only in the details widget", + "suggest.maxVisibleSuggestions.dep": "This setting is deprecated. The suggest widget can now be resized.", + "deprecated": "This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.", + "editor.suggest.showMethods": "When enabled IntelliSense shows `method`-suggestions.", + "editor.suggest.showFunctions": "When enabled IntelliSense shows `function`-suggestions.", + "editor.suggest.showConstructors": "When enabled IntelliSense shows `constructor`-suggestions.", + "editor.suggest.showFields": "When enabled IntelliSense shows `field`-suggestions.", + "editor.suggest.showVariables": "When enabled IntelliSense shows `variable`-suggestions.", + "editor.suggest.showClasss": "When enabled IntelliSense shows `class`-suggestions.", + "editor.suggest.showStructs": "When enabled IntelliSense shows `struct`-suggestions.", + "editor.suggest.showInterfaces": "When enabled IntelliSense shows `interface`-suggestions.", + "editor.suggest.showModules": "When enabled IntelliSense shows `module`-suggestions.", + "editor.suggest.showPropertys": "When enabled IntelliSense shows `property`-suggestions.", + "editor.suggest.showEvents": "When enabled IntelliSense shows `event`-suggestions.", + "editor.suggest.showOperators": "When enabled IntelliSense shows `operator`-suggestions.", + "editor.suggest.showUnits": "When enabled IntelliSense shows `unit`-suggestions.", + "editor.suggest.showValues": "When enabled IntelliSense shows `value`-suggestions.", + "editor.suggest.showConstants": "When enabled IntelliSense shows `constant`-suggestions.", + "editor.suggest.showEnums": "When enabled IntelliSense shows `enum`-suggestions.", + "editor.suggest.showEnumMembers": "When enabled IntelliSense shows `enumMember`-suggestions.", + "editor.suggest.showKeywords": "When enabled IntelliSense shows `keyword`-suggestions.", + "editor.suggest.showTexts": "When enabled IntelliSense shows `text`-suggestions.", + "editor.suggest.showColors": "When enabled IntelliSense shows `color`-suggestions.", + "editor.suggest.showFiles": "When enabled IntelliSense shows `file`-suggestions.", + "editor.suggest.showReferences": "When enabled IntelliSense shows `reference`-suggestions.", + "editor.suggest.showCustomcolors": "When enabled IntelliSense shows `customcolor`-suggestions.", + "editor.suggest.showFolders": "When enabled IntelliSense shows `folder`-suggestions.", + "editor.suggest.showTypeParameters": "When enabled IntelliSense shows `typeParameter`-suggestions.", + "editor.suggest.showSnippets": "When enabled IntelliSense shows `snippet`-suggestions.", + "editor.suggest.showUsers": "When enabled IntelliSense shows `user`-suggestions.", + "editor.suggest.showIssues": "When enabled IntelliSense shows `issues`-suggestions.", + "selectLeadingAndTrailingWhitespace": "Whether leading and trailing whitespace should always be selected.", + "acceptSuggestionOnCommitCharacter": "Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.", + "acceptSuggestionOnEnterSmart": "Only accept a suggestion with `Enter` when it makes a textual change.", + "acceptSuggestionOnEnter": "Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.", + "accessibilityPageSize": "Controls the number of lines in the editor that can be read out by a screen reader. Warning: this has a performance implication for numbers larger than the default.", + "editorViewAccessibleLabel": "Editor content", + "editor.autoClosingBrackets.languageDefined": "Use language configurations to determine when to autoclose brackets.", + "editor.autoClosingBrackets.beforeWhitespace": "Autoclose brackets only when the cursor is to the left of whitespace.", + "autoClosingBrackets": "Controls whether the editor should automatically close brackets after the user adds an opening bracket.", + "editor.autoClosingOvertype.auto": "Type over closing quotes or brackets only if they were automatically inserted.", + "autoClosingOvertype": "Controls whether the editor should type over closing quotes or brackets.", + "editor.autoClosingQuotes.languageDefined": "Use language configurations to determine when to autoclose quotes.", + "editor.autoClosingQuotes.beforeWhitespace": "Autoclose quotes only when the cursor is to the left of whitespace.", + "autoClosingQuotes": "Controls whether the editor should automatically close quotes after the user adds an opening quote.", + "editor.autoIndent.none": "The editor will not insert indentation automatically.", + "editor.autoIndent.keep": "The editor will keep the current line's indentation.", + "editor.autoIndent.brackets": "The editor will keep the current line's indentation and honor language defined brackets.", + "editor.autoIndent.advanced": "The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages.", + "editor.autoIndent.full": "The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.", + "autoIndent": "Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.", + "editor.autoSurround.languageDefined": "Use language configurations to determine when to automatically surround selections.", + "editor.autoSurround.quotes": "Surround with quotes but not brackets.", + "editor.autoSurround.brackets": "Surround with brackets but not quotes.", + "autoSurround": "Controls whether the editor should automatically surround selections when typing quotes or brackets.", + "stickyTabStops": "Emulate selection behaviour of tab characters when using spaces for indentation. Selection will stick to tab stops.", + "codeLens": "Controls whether the editor shows CodeLens.", + "codeLensFontFamily": "Controls the font family for CodeLens.", + "codeLensFontSize": "Controls the font size in pixels for CodeLens. When set to `0`, the 90% of `#editor.fontSize#` is used.", + "colorDecorators": "Controls whether the editor should render the inline color decorators and color picker.", + "columnSelection": "Enable that the selection with the mouse and keys is doing column selection.", + "copyWithSyntaxHighlighting": "Controls whether syntax highlighting should be copied into the clipboard.", + "cursorBlinking": "Control the cursor animation style.", + "cursorSmoothCaretAnimation": "Controls whether the smooth caret animation should be enabled.", + "cursorStyle": "Controls the cursor style.", + "cursorSurroundingLines": "Controls the minimal number of visible leading and trailing lines surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.", + "cursorSurroundingLinesStyle.default": "`cursorSurroundingLines` is enforced only when triggered via the keyboard or API.", + "cursorSurroundingLinesStyle.all": "`cursorSurroundingLines` is enforced always.", + "cursorSurroundingLinesStyle": "Controls when `cursorSurroundingLines` should be enforced.", + "cursorWidth": "Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.", + "dragAndDrop": "Controls whether the editor should allow moving selections via drag and drop.", + "fastScrollSensitivity": "Scrolling speed multiplier when pressing `Alt`.", + "folding": "Controls whether the editor has code folding enabled.", + "foldingStrategy.auto": "Use a language-specific folding strategy if available, else the indentation-based one.", + "foldingStrategy.indentation": "Use the indentation-based folding strategy.", + "foldingStrategy": "Controls the strategy for computing folding ranges.", + "foldingHighlight": "Controls whether the editor should highlight folded ranges.", + "unfoldOnClickAfterEndOfLine": "Controls whether clicking on the empty content after a folded line will unfold the line.", + "fontFamily": "Controls the font family.", + "formatOnPaste": "Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.", + "formatOnType": "Controls whether the editor should automatically format the line after typing.", + "glyphMargin": "Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.", + "hideCursorInOverviewRuler": "Controls whether the cursor should be hidden in the overview ruler.", + "highlightActiveIndentGuide": "Controls whether the editor should highlight the active indent guide.", + "letterSpacing": "Controls the letter spacing in pixels.", + "linkedEditing": "Controls whether the editor has linked editing enabled. Depending on the language, related symbols, e.g. HTML tags, are updated while editing.", + "links": "Controls whether the editor should detect links and make them clickable.", + "matchBrackets": "Highlight matching brackets.", + "mouseWheelScrollSensitivity": "A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.", + "mouseWheelZoom": "Zoom the font of the editor when using mouse wheel and holding `Ctrl`.", + "multiCursorMergeOverlapping": "Merge multiple cursors when they are overlapping.", + "multiCursorModifier.ctrlCmd": "Maps to `Control` on Windows and Linux and to `Command` on macOS.", + "multiCursorModifier.alt": "Maps to `Alt` on Windows and Linux and to `Option` on macOS.", + "multiCursorModifier": "The modifier to be used to add multiple cursors with the mouse. The Go To Definition and Open Link mouse gestures will adapt such that they do not conflict with the multicursor modifier. [Read more](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).", + "multiCursorPaste.spread": "Each cursor pastes a single line of the text.", + "multiCursorPaste.full": "Each cursor pastes the full text.", + "multiCursorPaste": "Controls pasting when the line count of the pasted text matches the cursor count.", + "occurrencesHighlight": "Controls whether the editor should highlight semantic symbol occurrences.", + "overviewRulerBorder": "Controls whether a border should be drawn around the overview ruler.", + "peekWidgetDefaultFocus.tree": "Focus the tree when opening peek", + "peekWidgetDefaultFocus.editor": "Focus the editor when opening peek", + "peekWidgetDefaultFocus": "Controls whether to focus the inline editor or the tree in the peek widget.", + "definitionLinkOpensInPeek": "Controls whether the Go to Definition mouse gesture always opens the peek widget.", + "quickSuggestionsDelay": "Controls the delay in milliseconds after which quick suggestions will show up.", + "renameOnType": "Controls whether the editor auto renames on type.", + "renameOnTypeDeprecate": "Deprecated, use `editor.linkedEditing` instead.", + "renderControlCharacters": "Controls whether the editor should render control characters.", + "renderIndentGuides": "Controls whether the editor should render indent guides.", + "renderFinalNewline": "Render last line number when the file ends with a newline.", + "renderLineHighlight.all": "Highlights both the gutter and the current line.", + "renderLineHighlight": "Controls how the editor should render the current line highlight.", + "renderLineHighlightOnlyWhenFocus": "Controls if the editor should render the current line highlight only when the editor is focused", + "renderWhitespace.boundary": "Render whitespace characters except for single spaces between words.", + "renderWhitespace.selection": "Render whitespace characters only on selected text.", + "renderWhitespace.trailing": "Render only trailing whitespace characters", + "renderWhitespace": "Controls how the editor should render whitespace characters.", + "roundedSelection": "Controls whether selections should have rounded corners.", + "scrollBeyondLastColumn": "Controls the number of extra characters beyond which the editor will scroll horizontally.", + "scrollBeyondLastLine": "Controls whether the editor will scroll beyond the last line.", + "scrollPredominantAxis": "Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.", + "selectionClipboard": "Controls whether the Linux primary clipboard should be supported.", + "selectionHighlight": "Controls whether the editor should highlight matches similar to the selection.", + "showFoldingControls.always": "Always show the folding controls.", + "showFoldingControls.mouseover": "Only show the folding controls when the mouse is over the gutter.", + "showFoldingControls": "Controls when the folding controls on the gutter are shown.", + "showUnused": "Controls fading out of unused code.", + "showDeprecated": "Controls strikethrough deprecated variables.", + "snippetSuggestions.top": "Show snippet suggestions on top of other suggestions.", + "snippetSuggestions.bottom": "Show snippet suggestions below other suggestions.", + "snippetSuggestions.inline": "Show snippets suggestions with other suggestions.", + "snippetSuggestions.none": "Do not show snippet suggestions.", + "snippetSuggestions": "Controls whether snippets are shown with other suggestions and how they are sorted.", + "smoothScrolling": "Controls whether the editor will scroll using an animation.", + "suggestFontSize": "Font size for the suggest widget. When set to `0`, the value of `#editor.fontSize#` is used.", + "suggestLineHeight": "Line height for the suggest widget. When set to `0`, the value of `#editor.lineHeight#` is used. The minimum value is 8.", + "suggestOnTriggerCharacters": "Controls whether suggestions should automatically show up when typing trigger characters.", + "suggestSelection.first": "Always select the first suggestion.", + "suggestSelection.recentlyUsed": "Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently.", + "suggestSelection.recentlyUsedByPrefix": "Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.", + "suggestSelection": "Controls how suggestions are pre-selected when showing the suggest list.", + "tabCompletion.on": "Tab complete will insert the best matching suggestion when pressing tab.", + "tabCompletion.off": "Disable tab completions.", + "tabCompletion.onlySnippets": "Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.", + "tabCompletion": "Enables tab completions.", + "unusualLineTerminators.auto": "Unusual line terminators are automatically removed.", + "unusualLineTerminators.off": "Unusual line terminators are ignored.", + "unusualLineTerminators.prompt": "Unusual line terminators prompt to be removed.", + "unusualLineTerminators": "Remove unusual line terminators that might cause problems.", + "useTabStops": "Inserting and deleting whitespace follows tab stops.", + "wordSeparators": "Characters that will be used as word separators when doing word related navigations or operations.", + "wordWrap.off": "Lines will never wrap.", + "wordWrap.on": "Lines will wrap at the viewport width.", + "wordWrap.wordWrapColumn": "Lines will wrap at `#editor.wordWrapColumn#`.", + "wordWrap.bounded": "Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.", + "wordWrap": "Controls how lines should wrap.", + "wordWrapColumn": "Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.", + "wrappingIndent.none": "No indentation. Wrapped lines begin at column 1.", + "wrappingIndent.same": "Wrapped lines get the same indentation as the parent.", + "wrappingIndent.indent": "Wrapped lines get +1 indentation toward the parent.", + "wrappingIndent.deepIndent": "Wrapped lines get +2 indentation toward the parent.", + "wrappingIndent": "Controls the indentation of wrapped lines.", + "wrappingStrategy.simple": "Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width.", + "wrappingStrategy.advanced": "Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.", + "wrappingStrategy": "Controls the algorithm that computes wrapping points." + }, + "vs/editor/common/editorContextKeys": { + "editorTextFocus": "Whether the editor text has focus (cursor is blinking)", + "editorFocus": "Whether the editor or an editor widget has focus (e.g. focus is in the find widget)", + "textInputFocus": "Whether an editor or a rich text input has focus (cursor is blinking)", + "editorReadonly": "Whether the editor is read only", + "inDiffEditor": "Whether the context is a diff editor", + "editorColumnSelection": "Whether `editor.columnSelection` is enabled", + "editorHasSelection": "Whether the editor has text selected", + "editorHasMultipleSelections": "Whether the editor has multiple selections", + "editorTabMovesFocus": "Whether `Tab` will move focus out of the editor", + "editorHoverVisible": "Whether the editor hover is visible", + "inCompositeEditor": "Whether the editor is part of a larger editor (e.g. notebooks)", + "editorLangId": "The language identifier of the editor", + "editorHasCompletionItemProvider": "Whether the editor has a completion item provider", + "editorHasCodeActionsProvider": "Whether the editor has a code actions provider", + "editorHasCodeLensProvider": "Whether the editor has a code lens provider", + "editorHasDefinitionProvider": "Whether the editor has a definition provider", + "editorHasDeclarationProvider": "Whether the editor has a declaration provider", + "editorHasImplementationProvider": "Whether the editor has an implementation provider", + "editorHasTypeDefinitionProvider": "Whether the editor has a type definition provider", + "editorHasHoverProvider": "Whether the editor has a hover provider", + "editorHasDocumentHighlightProvider": "Whether the editor has a document highlight provider", + "editorHasDocumentSymbolProvider": "Whether the editor has a document symbol provider", + "editorHasReferenceProvider": "Whether the editor has a reference provider", + "editorHasRenameProvider": "Whether the editor has a rename provider", + "editorHasSignatureHelpProvider": "Whether the editor has a signature help provider", + "editorHasInlineHintsProvider": "Whether the editor has an inline hints provider", + "editorHasDocumentFormattingProvider": "Whether the editor has a document formatting provider", + "editorHasDocumentSelectionFormattingProvider": "Whether the editor has a document selection formatting provider", + "editorHasMultipleDocumentFormattingProvider": "Whether the editor has multiple document formatting providers", + "editorHasMultipleDocumentSelectionFormattingProvider": "Whether the editor has multiple document selection formatting providers" + }, + "vs/editor/common/model/editStack": { + "edit": "Typing" + }, + "vs/editor/common/modes/modesRegistry": { + "plainText.alias": "Plain Text" + }, + "vs/editor/common/standaloneStrings": { + "noSelection": "No selection", + "singleSelectionRange": "Line {0}, Column {1} ({2} selected)", + "singleSelection": "Line {0}, Column {1}", + "multiSelectionRange": "{0} selections ({1} characters selected)", + "multiSelection": "{0} selections", + "emergencyConfOn": "Now changing the setting `accessibilitySupport` to 'on'.", + "openingDocs": "Now opening the Editor Accessibility documentation page.", + "readonlyDiffEditor": " in a read-only pane of a diff editor.", + "editableDiffEditor": " in a pane of a diff editor.", + "readonlyEditor": " in a read-only code editor", + "editableEditor": " in a code editor", + "changeConfigToOnMac": "To configure the editor to be optimized for usage with a Screen Reader press Command+E now.", + "changeConfigToOnWinLinux": "To configure the editor to be optimized for usage with a Screen Reader press Control+E now.", + "auto_on": "The editor is configured to be optimized for usage with a Screen Reader.", + "auto_off": "The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time.", + "tabFocusModeOnMsg": "Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}.", + "tabFocusModeOnMsgNoKb": "Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding.", + "tabFocusModeOffMsg": "Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}.", + "tabFocusModeOffMsgNoKb": "Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding.", + "openDocMac": "Press Command+H now to open a browser window with more information related to editor accessibility.", + "openDocWinLinux": "Press Control+H now to open a browser window with more information related to editor accessibility.", + "outroMsg": "You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape.", + "showAccessibilityHelpAction": "Show Accessibility Help", + "inspectTokens": "Developer: Inspect Tokens", + "gotoLineActionLabel": "Go to Line/Column...", + "helpQuickAccess": "Show all Quick Access Providers", + "quickCommandActionLabel": "Command Palette", + "quickCommandActionHelp": "Show And Run Commands", + "quickOutlineActionLabel": "Go to Symbol...", + "quickOutlineByCategoryActionLabel": "Go to Symbol by Category...", + "editorViewAccessibleLabel": "Editor content", + "accessibilityHelpMessage": "Press Alt+F1 for Accessibility Options.", + "toggleHighContrast": "Toggle High Contrast Theme", + "bulkEditServiceSummary": "Made {0} edits in {1} files" + }, + "vs/editor/common/view/editorColorRegistry": { + "lineHighlight": "Background color for the highlight of line at the cursor position.", + "lineHighlightBorderBox": "Background color for the border around the line at the cursor position.", + "rangeHighlight": "Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations.", + "rangeHighlightBorder": "Background color of the border around highlighted ranges.", + "symbolHighlight": "Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations.", + "symbolHighlightBorder": "Background color of the border around highlighted symbols.", + "caret": "Color of the editor cursor.", + "editorCursorBackground": "The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.", + "editorWhitespaces": "Color of whitespace characters in the editor.", + "editorIndentGuides": "Color of the editor indentation guides.", + "editorActiveIndentGuide": "Color of the active editor indentation guides.", + "editorLineNumbers": "Color of editor line numbers.", + "editorActiveLineNumber": "Color of editor active line number", + "deprecatedEditorActiveLineNumber": "Id is deprecated. Use 'editorLineNumber.activeForeground' instead.", + "_duplicate/12": "Color of editor active line number", + "editorRuler": "Color of the editor rulers.", + "editorCodeLensForeground": "Foreground color of editor CodeLens", + "editorBracketMatchBackground": "Background color behind matching brackets", + "editorBracketMatchBorder": "Color for matching brackets boxes", + "editorOverviewRulerBorder": "Color of the overview ruler border.", + "editorOverviewRulerBackground": "Background color of the editor overview ruler. Only used when the minimap is enabled and placed on the right side of the editor.", + "editorGutter": "Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.", + "unnecessaryCodeBorder": "Border color of unnecessary (unused) source code in the editor.", + "unnecessaryCodeOpacity": "Opacity of unnecessary (unused) source code in the editor. For example, \"#000000c0\" will render the code with 75% opacity. For high contrast themes, use the 'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out.", + "overviewRulerRangeHighlight": "Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations.", + "overviewRuleError": "Overview ruler marker color for errors.", + "overviewRuleWarning": "Overview ruler marker color for warnings.", + "overviewRuleInfo": "Overview ruler marker color for infos." + }, + "vs/editor/contrib/anchorSelect/anchorSelect": { + "selectionAnchor": "Selection Anchor", + "anchorSet": "Anchor set at {0}:{1}", + "setSelectionAnchor": "Set Selection Anchor", + "goToSelectionAnchor": "Go to Selection Anchor", + "selectFromAnchorToCursor": "Select from Anchor to Cursor", + "cancelSelectionAnchor": "Cancel Selection Anchor" + }, + "vs/editor/contrib/bracketMatching/bracketMatching": { + "overviewRulerBracketMatchForeground": "Overview ruler marker color for matching brackets.", + "smartSelect.jumpBracket": "Go to Bracket", + "smartSelect.selectToBracket": "Select to Bracket", + "miGoToBracket": "Go to &&Bracket" + }, + "vs/editor/contrib/caretOperations/caretOperations": { + "caret.moveLeft": "Move Selected Text Left", + "caret.moveRight": "Move Selected Text Right" + }, + "vs/editor/contrib/caretOperations/transpose": { + "transposeLetters.label": "Transpose Letters" + }, + "vs/editor/contrib/clipboard/clipboard": { + "miCut": "Cu&&t", + "actions.clipboard.cutLabel": "Cut", + "_duplicate/1": "Cut", + "miCopy": "&&Copy", + "actions.clipboard.copyLabel": "Copy", + "_duplicate/4": "Copy", + "miPaste": "&&Paste", + "actions.clipboard.pasteLabel": "Paste", + "_duplicate/7": "Paste", + "actions.clipboard.copyWithSyntaxHighlightingLabel": "Copy With Syntax Highlighting" + }, + "vs/editor/contrib/codeAction/codeActionCommands": { + "args.schema.kind": "Kind of the code action to run.", + "args.schema.apply": "Controls when the returned actions are applied.", + "args.schema.apply.first": "Always apply the first returned code action.", + "args.schema.apply.ifSingle": "Apply the first returned code action if it is the only one.", + "args.schema.apply.never": "Do not apply the returned code actions.", + "args.schema.preferred": "Controls if only preferred code actions should be returned.", + "applyCodeActionFailed": "An unknown error occurred while applying the code action", + "quickfix.trigger.label": "Quick Fix...", + "editor.action.quickFix.noneMessage": "No code actions available", + "editor.action.codeAction.noneMessage.preferred.kind": "No preferred code actions for '{0}' available", + "editor.action.codeAction.noneMessage.kind": "No code actions for '{0}' available", + "editor.action.codeAction.noneMessage.preferred": "No preferred code actions available", + "_duplicate/8": "No code actions available", + "editor.action.codeAction.noneMessage": "Refactor...", + "refactor.label": "No preferred refactorings for '{0}' available", + "editor.action.refactor.noneMessage.preferred.kind": "No refactorings for '{0}' available", + "editor.action.refactor.noneMessage.kind": "No preferred refactorings available", + "editor.action.refactor.noneMessage.preferred": "No refactorings available", + "editor.action.refactor.noneMessage": "Source Action...", + "source.label": "No preferred source actions for '{0}' available", + "editor.action.source.noneMessage.preferred.kind": "No source actions for '{0}' available", + "editor.action.source.noneMessage.kind": "No preferred source actions available", + "editor.action.source.noneMessage.preferred": "No source actions available", + "editor.action.source.noneMessage": "Organize Imports", + "organizeImports.label": "No organize imports action available", + "editor.action.organize.noneMessage": "Fix All", + "fixAll.label": "No fix all action available", + "fixAll.noneMessage": "Auto Fix...", + "autoFix.label": "No auto fixes available" + }, + "vs/editor/contrib/codeAction/lightBulbWidget": { + "prefferedQuickFixWithKb": "Show Fixes. Preferred Fix Available ({0})", + "quickFixWithKb": "Show Fixes ({0})", + "quickFix": "Show Fixes" + }, + "vs/editor/contrib/codelens/codelensController": { + "showLensOnLine": "Show CodeLens Commands For Current Line" + }, + "vs/editor/contrib/comment/comment": { + "comment.line": "Toggle Line Comment", + "miToggleLineComment": "&&Toggle Line Comment", + "comment.line.add": "Add Line Comment", + "comment.line.remove": "Remove Line Comment", + "comment.block": "Toggle Block Comment", + "miToggleBlockComment": "Toggle &&Block Comment" + }, + "vs/editor/contrib/contextmenu/contextmenu": { + "action.showContextMenu.label": "Show Editor Context Menu" + }, + "vs/editor/contrib/cursorUndo/cursorUndo": { + "cursor.undo": "Cursor Undo", + "cursor.redo": "Cursor Redo" + }, + "vs/editor/contrib/find/findController": { + "startFindAction": "Find", + "miFind": "&&Find", + "startFindWithSelectionAction": "Find With Selection", + "findNextMatchAction": "Find Next", + "_duplicate/3": "Find Next", + "findPreviousMatchAction": "Find Previous", + "_duplicate/5": "Find Previous", + "nextSelectionMatchFindAction": "Find Next Selection", + "previousSelectionMatchFindAction": "Find Previous Selection", + "startReplace": "Replace", + "miReplace": "&&Replace" + }, + "vs/editor/contrib/find/findWidget": { + "findSelectionIcon": "Icon for 'Find in Selection' in the editor find widget.", + "findCollapsedIcon": "Icon to indicate that the editor find widget is collapsed.", + "findExpandedIcon": "Icon to indicate that the editor find widget is expanded.", + "findReplaceIcon": "Icon for 'Replace' in the editor find widget.", + "findReplaceAllIcon": "Icon for 'Replace All' in the editor find widget.", + "findPreviousMatchIcon": "Icon for 'Find Previous' in the editor find widget.", + "findNextMatchIcon": "Icon for 'Find Next' in the editor find widget.", + "label.find": "Find", + "placeholder.find": "Find", + "label.previousMatchButton": "Previous match", + "label.nextMatchButton": "Next match", + "label.toggleSelectionFind": "Find in selection", + "label.closeButton": "Close", + "label.replace": "Replace", + "placeholder.replace": "Replace", + "label.replaceButton": "Replace", + "label.replaceAllButton": "Replace All", + "label.toggleReplaceButton": "Toggle Replace mode", + "title.matchesCountLimit": "Only the first {0} results are highlighted, but all find operations work on the entire text.", + "label.matchesLocation": "{0} of {1}", + "label.noResults": "No results", + "ariaSearchNoResultEmpty": "{0} found", + "ariaSearchNoResult": "{0} found for '{1}'", + "ariaSearchNoResultWithLineNum": "{0} found for '{1}', at {2}", + "ariaSearchNoResultWithLineNumNoCurrentMatch": "{0} found for '{1}'", + "ctrlEnter.keybindingChanged": "Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior." + }, + "vs/editor/contrib/folding/folding": { + "unfoldAction.label": "Unfold", + "unFoldRecursivelyAction.label": "Unfold Recursively", + "foldAction.label": "Fold", + "toggleFoldAction.label": "Toggle Fold", + "foldRecursivelyAction.label": "Fold Recursively", + "foldAllBlockComments.label": "Fold All Block Comments", + "foldAllMarkerRegions.label": "Fold All Regions", + "unfoldAllMarkerRegions.label": "Unfold All Regions", + "foldAllAction.label": "Fold All", + "unfoldAllAction.label": "Unfold All", + "foldLevelAction.label": "Fold Level {0}", + "foldBackgroundBackground": "Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations.", + "editorGutter.foldingControlForeground": "Color of the folding control in the editor gutter." + }, + "vs/editor/contrib/folding/foldingDecorations": { + "foldingExpandedIcon": "Icon for expanded ranges in the editor glyph margin.", + "foldingCollapsedIcon": "Icon for collapsed ranges in the editor glyph margin." + }, + "vs/editor/contrib/fontZoom/fontZoom": { + "EditorFontZoomIn.label": "Editor Font Zoom In", + "EditorFontZoomOut.label": "Editor Font Zoom Out", + "EditorFontZoomReset.label": "Editor Font Zoom Reset" + }, + "vs/editor/contrib/format/format": { + "hint11": "Made 1 formatting edit on line {0}", + "hintn1": "Made {0} formatting edits on line {1}", + "hint1n": "Made 1 formatting edit between lines {0} and {1}", + "hintnn": "Made {0} formatting edits between lines {1} and {2}" + }, + "vs/editor/contrib/format/formatActions": { + "formatDocument.label": "Format Document", + "formatSelection.label": "Format Selection" + }, + "vs/editor/contrib/gotoError/gotoError": { + "markerAction.next.label": "Go to Next Problem (Error, Warning, Info)", + "nextMarkerIcon": "Icon for goto next marker.", + "markerAction.previous.label": "Go to Previous Problem (Error, Warning, Info)", + "previousMarkerIcon": "Icon for goto previous marker.", + "markerAction.nextInFiles.label": "Go to Next Problem in Files (Error, Warning, Info)", + "miGotoNextProblem": "Next &&Problem", + "markerAction.previousInFiles.label": "Go to Previous Problem in Files (Error, Warning, Info)", + "miGotoPreviousProblem": "Previous &&Problem" + }, + "vs/editor/contrib/gotoError/gotoErrorWidget": { + "Error": "Error", + "Warning": "Warning", + "Info": "Info", + "Hint": "Hint", + "marker aria": "{0} at {1}. ", + "problems": "{0} of {1} problems", + "change": "{0} of {1} problem", + "editorMarkerNavigationError": "Editor marker navigation widget error color.", + "editorMarkerNavigationWarning": "Editor marker navigation widget warning color.", + "editorMarkerNavigationInfo": "Editor marker navigation widget info color.", + "editorMarkerNavigationBackground": "Editor marker navigation widget background." + }, + "vs/editor/contrib/gotoSymbol/goToCommands": { + "peek.submenu": "Peek", + "def.title": "Definitions", + "noResultWord": "No definition found for '{0}'", + "generic.noResults": "No definition found", + "actions.goToDecl.label": "Go to Definition", + "miGotoDefinition": "Go to &&Definition", + "actions.goToDeclToSide.label": "Open Definition to the Side", + "actions.previewDecl.label": "Peek Definition", + "decl.title": "Declarations", + "decl.noResultWord": "No declaration found for '{0}'", + "decl.generic.noResults": "No declaration found", + "actions.goToDeclaration.label": "Go to Declaration", + "miGotoDeclaration": "Go to &&Declaration", + "_duplicate/9": "No declaration found for '{0}'", + "_duplicate/10": "No declaration found", + "actions.peekDecl.label": "Peek Declaration", + "typedef.title": "Type Definitions", + "goToTypeDefinition.noResultWord": "No type definition found for '{0}'", + "goToTypeDefinition.generic.noResults": "No type definition found", + "actions.goToTypeDefinition.label": "Go to Type Definition", + "miGotoTypeDefinition": "Go to &&Type Definition", + "actions.peekTypeDefinition.label": "Peek Type Definition", + "impl.title": "Implementations", + "goToImplementation.noResultWord": "No implementation found for '{0}'", + "goToImplementation.generic.noResults": "No implementation found", + "actions.goToImplementation.label": "Go to Implementations", + "miGotoImplementation": "Go to &&Implementations", + "actions.peekImplementation.label": "Peek Implementations", + "references.no": "No references found for '{0}'", + "references.noGeneric": "No references found", + "goToReferences.label": "Go to References", + "miGotoReference": "Go to &&References", + "ref.title": "References", + "references.action.label": "Peek References", + "_duplicate/32": "References", + "label.generic": "Go To Any Symbol", + "generic.title": "Locations", + "generic.noResult": "No results for '{0}'", + "_duplicate/34": "References" + }, + "vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition": { + "multipleResults": "Click to show {0} definitions." + }, + "vs/editor/contrib/gotoSymbol/peek/referencesController": { + "labelLoading": "Loading...", + "metaTitle.N": "{0} ({1})" + }, + "vs/editor/contrib/gotoSymbol/peek/referencesTree": { + "referencesCount": "{0} references", + "referenceCount": "{0} reference", + "treeAriaLabel": "References" + }, + "vs/editor/contrib/gotoSymbol/peek/referencesWidget": { + "missingPreviewMessage": "no preview available", + "noResults": "No results", + "peekView.alternateTitle": "References" + }, + "vs/editor/contrib/gotoSymbol/referencesModel": { + "aria.oneReference": "symbol in {0} on line {1} at column {2}", + "aria.oneReference.preview": "symbol in {0} on line {1} at column {2}, {3}", + "aria.fileReferences.1": "1 symbol in {0}, full path {1}", + "aria.fileReferences.N": "{0} symbols in {1}, full path {2}", + "aria.result.0": "No results found", + "aria.result.1": "Found 1 symbol in {0}", + "aria.result.n1": "Found {0} symbols in {1}", + "aria.result.nm": "Found {0} symbols in {1} files" + }, + "vs/editor/contrib/gotoSymbol/symbolNavigation": { + "location.kb": "Symbol {0} of {1}, {2} for next", + "location": "Symbol {0} of {1}" + }, + "vs/editor/contrib/hover/hover": { + "showHover": "Show Hover", + "showDefinitionPreviewHover": "Show Definition Preview Hover" + }, + "vs/editor/contrib/hover/markdownHoverParticipant": { + "modesContentHover.loading": "Loading..." + }, + "vs/editor/contrib/hover/markerHoverParticipant": { + "view problem": "View Problem", + "noQuickFixes": "No quick fixes available", + "checkingForQuickFixes": "Checking for quick fixes...", + "_duplicate/1": "No quick fixes available", + "quick fixes": "Quick Fix..." + }, + "vs/editor/contrib/inPlaceReplace/inPlaceReplace": { + "InPlaceReplaceAction.previous.label": "Replace with Previous Value", + "InPlaceReplaceAction.next.label": "Replace with Next Value" + }, + "vs/editor/contrib/indentation/indentation": { + "indentationToSpaces": "Convert Indentation to Spaces", + "indentationToTabs": "Convert Indentation to Tabs", + "configuredTabSize": "Configured Tab Size", + "selectTabWidth": "Select Tab Size for Current File", + "indentUsingTabs": "Indent Using Tabs", + "indentUsingSpaces": "Indent Using Spaces", + "detectIndentation": "Detect Indentation from Content", + "editor.reindentlines": "Reindent Lines", + "editor.reindentselectedlines": "Reindent Selected Lines" + }, + "vs/editor/contrib/linesOperations/linesOperations": { + "lines.copyUp": "Copy Line Up", + "miCopyLinesUp": "&&Copy Line Up", + "lines.copyDown": "Copy Line Down", + "miCopyLinesDown": "Co&&py Line Down", + "duplicateSelection": "Duplicate Selection", + "miDuplicateSelection": "&&Duplicate Selection", + "lines.moveUp": "Move Line Up", + "miMoveLinesUp": "Mo&&ve Line Up", + "lines.moveDown": "Move Line Down", + "miMoveLinesDown": "Move &&Line Down", + "lines.sortAscending": "Sort Lines Ascending", + "lines.sortDescending": "Sort Lines Descending", + "lines.trimTrailingWhitespace": "Trim Trailing Whitespace", + "lines.delete": "Delete Line", + "lines.indent": "Indent Line", + "lines.outdent": "Outdent Line", + "lines.insertBefore": "Insert Line Above", + "lines.insertAfter": "Insert Line Below", + "lines.deleteAllLeft": "Delete All Left", + "lines.deleteAllRight": "Delete All Right", + "lines.joinLines": "Join Lines", + "editor.transpose": "Transpose characters around the cursor", + "editor.transformToUppercase": "Transform to Uppercase", + "editor.transformToLowercase": "Transform to Lowercase", + "editor.transformToTitlecase": "Transform to Title Case", + "editor.transformToSnakecase": "Transform to Snake Case" + }, + "vs/editor/contrib/linkedEditing/linkedEditing": { + "linkedEditing.label": "Start Linked Editing", + "editorLinkedEditingBackground": "Background color when the editor auto renames on type." + }, + "vs/editor/contrib/links/links": { + "links.navigate.executeCmd": "Execute command", + "links.navigate.follow": "Follow link", + "links.navigate.kb.meta.mac": "cmd + click", + "links.navigate.kb.meta": "ctrl + click", + "links.navigate.kb.alt.mac": "option + click", + "links.navigate.kb.alt": "alt + click", + "tooltip.explanation": "Execute command {0}", + "invalid.url": "Failed to open this link because it is not well-formed: {0}", + "missing.url": "Failed to open this link because its target is missing.", + "label": "Open Link" + }, + "vs/editor/contrib/message/messageController": { + "messageVisible": "Whether the editor is currently showing an inline message", + "editor.readonly": "Cannot edit in read-only editor" + }, + "vs/editor/contrib/multicursor/multicursor": { + "mutlicursor.insertAbove": "Add Cursor Above", + "miInsertCursorAbove": "&&Add Cursor Above", + "mutlicursor.insertBelow": "Add Cursor Below", + "miInsertCursorBelow": "A&&dd Cursor Below", + "mutlicursor.insertAtEndOfEachLineSelected": "Add Cursors to Line Ends", + "miInsertCursorAtEndOfEachLineSelected": "Add C&&ursors to Line Ends", + "mutlicursor.addCursorsToBottom": "Add Cursors To Bottom", + "mutlicursor.addCursorsToTop": "Add Cursors To Top", + "addSelectionToNextFindMatch": "Add Selection To Next Find Match", + "miAddSelectionToNextFindMatch": "Add &&Next Occurrence", + "addSelectionToPreviousFindMatch": "Add Selection To Previous Find Match", + "miAddSelectionToPreviousFindMatch": "Add P&&revious Occurrence", + "moveSelectionToNextFindMatch": "Move Last Selection To Next Find Match", + "moveSelectionToPreviousFindMatch": "Move Last Selection To Previous Find Match", + "selectAllOccurrencesOfFindMatch": "Select All Occurrences of Find Match", + "miSelectHighlights": "Select All &&Occurrences", + "changeAll.label": "Change All Occurrences" + }, + "vs/editor/contrib/parameterHints/parameterHints": { + "parameterHints.trigger.label": "Trigger Parameter Hints" + }, + "vs/editor/contrib/parameterHints/parameterHintsWidget": { + "parameterHintsNextIcon": "Icon for show next parameter hint.", + "parameterHintsPreviousIcon": "Icon for show previous parameter hint.", + "hint": "{0}, hint" + }, + "vs/editor/contrib/peekView/peekView": { + "label.close": "Close", + "peekViewTitleBackground": "Background color of the peek view title area.", + "peekViewTitleForeground": "Color of the peek view title.", + "peekViewTitleInfoForeground": "Color of the peek view title info.", + "peekViewBorder": "Color of the peek view borders and arrow.", + "peekViewResultsBackground": "Background color of the peek view result list.", + "peekViewResultsMatchForeground": "Foreground color for line nodes in the peek view result list.", + "peekViewResultsFileForeground": "Foreground color for file nodes in the peek view result list.", + "peekViewResultsSelectionBackground": "Background color of the selected entry in the peek view result list.", + "peekViewResultsSelectionForeground": "Foreground color of the selected entry in the peek view result list.", + "peekViewEditorBackground": "Background color of the peek view editor.", + "peekViewEditorGutterBackground": "Background color of the gutter in the peek view editor.", + "peekViewResultsMatchHighlight": "Match highlight color in the peek view result list.", + "peekViewEditorMatchHighlight": "Match highlight color in the peek view editor.", + "peekViewEditorMatchHighlightBorder": "Match highlight border in the peek view editor." + }, + "vs/editor/contrib/quickAccess/gotoLineQuickAccess": { + "cannotRunGotoLine": "Open a text editor first to go to a line.", + "gotoLineColumnLabel": "Go to line {0} and column {1}.", + "gotoLineLabel": "Go to line {0}.", + "gotoLineLabelEmptyWithLimit": "Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.", + "gotoLineLabelEmpty": "Current Line: {0}, Character: {1}. Type a line number to navigate to." + }, + "vs/editor/contrib/quickAccess/gotoSymbolQuickAccess": { + "cannotRunGotoSymbolWithoutEditor": "To go to a symbol, first open a text editor with symbol information.", + "cannotRunGotoSymbolWithoutSymbolProvider": "The active text editor does not provide symbol information.", + "noMatchingSymbolResults": "No matching editor symbols", + "noSymbolResults": "No editor symbols", + "openToSide": "Open to the Side", + "openToBottom": "Open to the Bottom", + "symbols": "symbols ({0})", + "property": "properties ({0})", + "method": "methods ({0})", + "function": "functions ({0})", + "_constructor": "constructors ({0})", + "variable": "variables ({0})", + "class": "classes ({0})", + "struct": "structs ({0})", + "event": "events ({0})", + "operator": "operators ({0})", + "interface": "interfaces ({0})", + "namespace": "namespaces ({0})", + "package": "packages ({0})", + "typeParameter": "type parameters ({0})", + "modules": "modules ({0})", + "_duplicate/7": "properties ({0})", + "enum": "enumerations ({0})", + "enumMember": "enumeration members ({0})", + "string": "strings ({0})", + "file": "files ({0})", + "array": "arrays ({0})", + "number": "numbers ({0})", + "boolean": "booleans ({0})", + "object": "objects ({0})", + "key": "keys ({0})", + "field": "fields ({0})", + "constant": "constants ({0})" + }, + "vs/editor/contrib/rename/rename": { + "no result": "No result.", + "resolveRenameLocationFailed": "An unknown error occurred while resolving rename location", + "label": "Renaming '{0}'", + "quotableLabel": "Renaming {0}", + "aria": "Successfully renamed '{0}' to '{1}'. Summary: {2}", + "rename.failedApply": "Rename failed to apply edits", + "rename.failed": "Rename failed to compute edits", + "rename.label": "Rename Symbol", + "enablePreview": "Enable/disable the ability to preview changes before renaming" + }, + "vs/editor/contrib/rename/renameInputField": { + "renameAriaLabel": "Rename input. Type new name and press Enter to commit.", + "label": "{0} to Rename, {1} to Preview" + }, + "vs/editor/contrib/smartSelect/smartSelect": { + "smartSelect.expand": "Expand Selection", + "miSmartSelectGrow": "&&Expand Selection", + "smartSelect.shrink": "Shrink Selection", + "miSmartSelectShrink": "&&Shrink Selection" + }, + "vs/editor/contrib/snippet/snippetVariables": { + "Sunday": "Sunday", + "Monday": "Monday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday", + "Thursday": "Thursday", + "Friday": "Friday", + "Saturday": "Saturday", + "SundayShort": "Sun", + "MondayShort": "Mon", + "TuesdayShort": "Tue", + "WednesdayShort": "Wed", + "ThursdayShort": "Thu", + "FridayShort": "Fri", + "SaturdayShort": "Sat", + "January": "January", + "February": "February", + "March": "March", + "April": "April", + "May": "May", + "June": "June", + "July": "July", + "August": "August", + "September": "September", + "October": "October", + "November": "November", + "December": "December", + "JanuaryShort": "Jan", + "FebruaryShort": "Feb", + "MarchShort": "Mar", + "AprilShort": "Apr", + "_duplicate/18": "May", + "MayShort": "Jun", + "JuneShort": "Jul", + "JulyShort": "Aug", + "AugustShort": "Sep", + "SeptemberShort": "Oct", + "OctoberShort": "Nov", + "NovemberShort": "Dec" + }, + "vs/editor/contrib/suggest/suggestController": { + "aria.alert.snippet": "Accepting '{0}' made {1} additional edits", + "suggest.trigger.label": "Trigger Suggest", + "accept.insert": "Insert", + "_duplicate/2": "Insert", + "accept.replace": "Replace", + "_duplicate/4": "Replace", + "_duplicate/3": "Insert", + "detail.more": "show less", + "detail.less": "show more", + "suggest.reset.label": "Reset Suggest Widget Size" + }, + "vs/editor/contrib/suggest/suggestWidget": { + "editorSuggestWidgetBackground": "Background color of the suggest widget.", + "editorSuggestWidgetBorder": "Border color of the suggest widget.", + "editorSuggestWidgetForeground": "Foreground color of the suggest widget.", + "editorSuggestWidgetSelectedBackground": "Background color of the selected entry in the suggest widget.", + "editorSuggestWidgetHighlightForeground": "Color of the match highlights in the suggest widget.", + "suggestWidget.loading": "Loading...", + "suggestWidget.noSuggestions": "No suggestions.", + "ariaCurrenttSuggestionReadDetails": "{0}, docs: {1}", + "suggest": "Suggest" + }, + "vs/editor/contrib/suggest/suggestWidgetDetails": { + "details.close": "Close", + "loading": "Loading..." + }, + "vs/editor/contrib/suggest/suggestWidgetRenderer": { + "suggestMoreInfoIcon": "Icon for more information in the suggest widget.", + "readMore": "Read More" + }, + "vs/editor/contrib/suggest/suggestWidgetStatus": { + "ddd": "{0} ({1})" + }, + "vs/editor/contrib/symbolIcons/symbolIcons": { + "symbolIcon.arrayForeground": "The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.booleanForeground": "The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.classForeground": "The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.colorForeground": "The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.constantForeground": "The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.constructorForeground": "The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.enumeratorForeground": "The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.enumeratorMemberForeground": "The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.eventForeground": "The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.fieldForeground": "The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.fileForeground": "The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.folderForeground": "The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.functionForeground": "The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.interfaceForeground": "The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.keyForeground": "The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.keywordForeground": "The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.methodForeground": "The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.moduleForeground": "The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.namespaceForeground": "The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.nullForeground": "The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.numberForeground": "The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.objectForeground": "The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.operatorForeground": "The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.packageForeground": "The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.propertyForeground": "The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.referenceForeground": "The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.snippetForeground": "The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.stringForeground": "The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.structForeground": "The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.textForeground": "The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.typeParameterForeground": "The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.unitForeground": "The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.", + "symbolIcon.variableForeground": "The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget." + }, + "vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode": { + "toggle.tabMovesFocus": "Toggle Tab Key Moves Focus", + "toggle.tabMovesFocus.on": "Pressing Tab will now move focus to the next focusable element", + "toggle.tabMovesFocus.off": "Pressing Tab will now insert the tab character" + }, + "vs/editor/contrib/tokenization/tokenization": { + "forceRetokenize": "Developer: Force Retokenize" + }, + "vs/editor/contrib/unusualLineTerminators/unusualLineTerminators": { + "unusualLineTerminators.title": "Unusual Line Terminators", + "unusualLineTerminators.message": "Detected unusual line terminators", + "unusualLineTerminators.detail": "This file contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.", + "unusualLineTerminators.fix": "Fix this file", + "unusualLineTerminators.ignore": "Ignore problem for this file" + }, + "vs/editor/contrib/wordHighlighter/wordHighlighter": { + "wordHighlight": "Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations.", + "wordHighlightStrong": "Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations.", + "wordHighlightBorder": "Border color of a symbol during read-access, like reading a variable.", + "wordHighlightStrongBorder": "Border color of a symbol during write-access, like writing to a variable.", + "overviewRulerWordHighlightForeground": "Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations.", + "overviewRulerWordHighlightStrongForeground": "Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations.", + "wordHighlight.next.label": "Go to Next Symbol Highlight", + "wordHighlight.previous.label": "Go to Previous Symbol Highlight", + "wordHighlight.trigger.label": "Trigger Symbol Highlight" + }, + "vs/editor/contrib/wordOperations/wordOperations": { + "deleteInsideWord": "Delete Word" + }, + "vs/platform/actions/browser/menuEntryActionViewItem": { + "titleAndKb": "{0} ({1})" + }, + "vs/platform/configuration/common/configurationRegistry": { + "defaultLanguageConfigurationOverrides.title": "Default Language Configuration Overrides", + "defaultLanguageConfiguration.description": "Configure settings to be overridden for {0} language.", + "overrideSettings.defaultDescription": "Configure editor settings to be overridden for a language.", + "overrideSettings.errorMessage": "This setting does not support per-language configuration.", + "config.property.empty": "Cannot register an empty property", + "config.property.languageDefault": "Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.", + "config.property.duplicate": "Cannot register '{0}'. This property is already registered." + }, + "vs/platform/contextkey/browser/contextKeyService": { + "getContextKeyInfo": "A command that returns information about context keys" + }, + "vs/platform/contextkey/common/contextkeys": { + "isMac": "Whether the operating system is macOS", + "isLinux": "Whether the operating system is Linux", + "isWindows": "Whether the operating system is Windows", + "isWeb": "Whether the platform is a web browser", + "isMacNative": "Whether the operating system is macOS on a non-browser platform", + "inputFocus": "Whether keyboard focus is inside an input box" + }, + "vs/platform/dialogs/common/dialogs": { + "moreFile": "...1 additional file not shown", + "moreFiles": "...{0} additional files not shown" + }, + "vs/platform/files/common/files": { + "unknownError": "Unknown Error", + "sizeB": "{0}B", + "sizeKB": "{0}KB", + "sizeMB": "{0}MB", + "sizeGB": "{0}GB", + "sizeTB": "{0}TB" + }, + "vs/platform/keybinding/common/abstractKeybindingService": { + "first.chord": "({0}) was pressed. Waiting for second key of chord...", + "missing.chord": "The key combination ({0}, {1}) is not a command." + }, + "vs/platform/list/browser/listService": { + "workbenchConfigurationTitle": "Workbench", + "multiSelectModifier.ctrlCmd": "Maps to `Control` on Windows and Linux and to `Command` on macOS.", + "multiSelectModifier.alt": "Maps to `Alt` on Windows and Linux and to `Option` on macOS.", + "multiSelectModifier": "The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.", + "openModeModifier": "Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.", + "horizontalScrolling setting": "Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.", + "tree indent setting": "Controls tree indentation in pixels.", + "render tree indent guides": "Controls whether the tree should render indent guides.", + "list smoothScrolling setting": "Controls whether lists and trees have smooth scrolling.", + "keyboardNavigationSettingKey.simple": "Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes.", + "keyboardNavigationSettingKey.highlight": "Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements.", + "keyboardNavigationSettingKey.filter": "Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.", + "keyboardNavigationSettingKey": "Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter.", + "automatic keyboard navigation setting": "Controls whether keyboard navigation in lists and trees is automatically triggered simply by typing. If set to `false`, keyboard navigation is only triggered when executing the `list.toggleKeyboardNavigation` command, for which you can assign a keyboard shortcut.", + "expand mode": "Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable." + }, + "vs/platform/markers/common/markers": { + "sev.error": "Error", + "sev.warning": "Warning", + "sev.info": "Info" + }, + "vs/platform/quickinput/browser/commandsQuickAccess": { + "commandPickAriaLabelWithKeybinding": "{0}, {1}", + "recentlyUsed": "recently used", + "morecCommands": "other commands", + "canNotRun": "Command '{0}' resulted in an error ({1})" + }, + "vs/platform/quickinput/browser/helpQuickAccess": { + "globalCommands": "global commands", + "editorCommands": "editor commands", + "helpPickAriaLabel": "{0}, {1}" + }, + "vs/platform/theme/common/colorRegistry": { + "foreground": "Overall foreground color. This color is only used if not overridden by a component.", + "errorForeground": "Overall foreground color for error messages. This color is only used if not overridden by a component.", + "descriptionForeground": "Foreground color for description text providing additional information, for example for a label.", + "iconForeground": "The default color for icons in the workbench.", + "focusBorder": "Overall border color for focused elements. This color is only used if not overridden by a component.", + "contrastBorder": "An extra border around elements to separate them from others for greater contrast.", + "activeContrastBorder": "An extra border around active elements to separate them from others for greater contrast.", + "selectionBackground": "The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor.", + "textSeparatorForeground": "Color for text separators.", + "textLinkForeground": "Foreground color for links in text.", + "textLinkActiveForeground": "Foreground color for links in text when clicked on and on mouse hover.", + "textPreformatForeground": "Foreground color for preformatted text segments.", + "textBlockQuoteBackground": "Background color for block quotes in text.", + "textBlockQuoteBorder": "Border color for block quotes in text.", + "textCodeBlockBackground": "Background color for code blocks in text.", + "widgetShadow": "Shadow color of widgets such as find/replace inside the editor.", + "inputBoxBackground": "Input box background.", + "inputBoxForeground": "Input box foreground.", + "inputBoxBorder": "Input box border.", + "inputBoxActiveOptionBorder": "Border color of activated options in input fields.", + "inputOption.activeBackground": "Background color of activated options in input fields.", + "inputOption.activeForeground": "Foreground color of activated options in input fields.", + "inputPlaceholderForeground": "Input box foreground color for placeholder text.", + "inputValidationInfoBackground": "Input validation background color for information severity.", + "inputValidationInfoForeground": "Input validation foreground color for information severity.", + "inputValidationInfoBorder": "Input validation border color for information severity.", + "inputValidationWarningBackground": "Input validation background color for warning severity.", + "inputValidationWarningForeground": "Input validation foreground color for warning severity.", + "inputValidationWarningBorder": "Input validation border color for warning severity.", + "inputValidationErrorBackground": "Input validation background color for error severity.", + "inputValidationErrorForeground": "Input validation foreground color for error severity.", + "inputValidationErrorBorder": "Input validation border color for error severity.", + "dropdownBackground": "Dropdown background.", + "dropdownListBackground": "Dropdown list background.", + "dropdownForeground": "Dropdown foreground.", + "dropdownBorder": "Dropdown border.", + "checkbox.background": "Background color of checkbox widget.", + "checkbox.foreground": "Foreground color of checkbox widget.", + "checkbox.border": "Border color of checkbox widget.", + "buttonForeground": "Button foreground color.", + "buttonBackground": "Button background color.", + "buttonHoverBackground": "Button background color when hovering.", + "buttonSecondaryForeground": "Secondary button foreground color.", + "buttonSecondaryBackground": "Secondary button background color.", + "buttonSecondaryHoverBackground": "Secondary button background color when hovering.", + "badgeBackground": "Badge background color. Badges are small information labels, e.g. for search results count.", + "badgeForeground": "Badge foreground color. Badges are small information labels, e.g. for search results count.", + "scrollbarShadow": "Scrollbar shadow to indicate that the view is scrolled.", + "scrollbarSliderBackground": "Scrollbar slider background color.", + "scrollbarSliderHoverBackground": "Scrollbar slider background color when hovering.", + "scrollbarSliderActiveBackground": "Scrollbar slider background color when clicked on.", + "progressBarBackground": "Background color of the progress bar that can show for long running operations.", + "editorError.background": "Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations.", + "editorError.foreground": "Foreground color of error squigglies in the editor.", + "errorBorder": "Border color of error boxes in the editor.", + "editorWarning.background": "Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations.", + "editorWarning.foreground": "Foreground color of warning squigglies in the editor.", + "warningBorder": "Border color of warning boxes in the editor.", + "editorInfo.background": "Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations.", + "editorInfo.foreground": "Foreground color of info squigglies in the editor.", + "infoBorder": "Border color of info boxes in the editor.", + "editorHint.foreground": "Foreground color of hint squigglies in the editor.", + "hintBorder": "Border color of hint boxes in the editor.", + "sashActiveBorder": "Border color of active sashes.", + "editorBackground": "Editor background color.", + "editorForeground": "Editor default foreground color.", + "editorWidgetBackground": "Background color of editor widgets, such as find/replace.", + "editorWidgetForeground": "Foreground color of editor widgets, such as find/replace.", + "editorWidgetBorder": "Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.", + "editorWidgetResizeBorder": "Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.", + "pickerBackground": "Quick picker background color. The quick picker widget is the container for pickers like the command palette.", + "pickerForeground": "Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.", + "pickerTitleBackground": "Quick picker title background color. The quick picker widget is the container for pickers like the command palette.", + "quickInput.listFocusBackground": "Quick picker background color for the focused item.", + "pickerGroupForeground": "Quick picker color for grouping labels.", + "pickerGroupBorder": "Quick picker color for grouping borders.", + "editorSelectionBackground": "Color of the editor selection.", + "editorSelectionForeground": "Color of the selected text for high contrast.", + "editorInactiveSelection": "Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations.", + "editorSelectionHighlight": "Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations.", + "editorSelectionHighlightBorder": "Border color for regions with the same content as the selection.", + "editorFindMatch": "Color of the current search match.", + "findMatchHighlight": "Color of the other search matches. The color must not be opaque so as not to hide underlying decorations.", + "findRangeHighlight": "Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.", + "editorFindMatchBorder": "Border color of the current search match.", + "findMatchHighlightBorder": "Border color of the other search matches.", + "findRangeHighlightBorder": "Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.", + "searchEditor.queryMatch": "Color of the Search Editor query matches.", + "searchEditor.editorFindMatchBorder": "Border color of the Search Editor query matches.", + "hoverHighlight": "Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations.", + "hoverBackground": "Background color of the editor hover.", + "hoverForeground": "Foreground color of the editor hover.", + "hoverBorder": "Border color of the editor hover.", + "statusBarBackground": "Background color of the editor hover status bar.", + "activeLinkForeground": "Color of active links.", + "editorInlineHintForeground": "Foreground color of inline hints", + "editorInlineHintBackground": "Background color of inline hints", + "editorLightBulbForeground": "The color used for the lightbulb actions icon.", + "editorLightBulbAutoFixForeground": "The color used for the lightbulb auto fix actions icon.", + "diffEditorInserted": "Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations.", + "diffEditorRemoved": "Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations.", + "diffEditorInsertedOutline": "Outline color for the text that got inserted.", + "diffEditorRemovedOutline": "Outline color for text that got removed.", + "diffEditorBorder": "Border color between the two text editors.", + "diffDiagonalFill": "Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.", + "listFocusBackground": "List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.", + "listFocusForeground": "List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.", + "listFocusOutline": "List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.", + "listActiveSelectionBackground": "List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.", + "listActiveSelectionForeground": "List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.", + "listInactiveSelectionBackground": "List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.", + "listInactiveSelectionForeground": "List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.", + "listInactiveFocusBackground": "List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.", + "listInactiveFocusOutline": "List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.", + "listHoverBackground": "List/Tree background when hovering over items using the mouse.", + "listHoverForeground": "List/Tree foreground when hovering over items using the mouse.", + "listDropBackground": "List/Tree drag and drop background when moving items around using the mouse.", + "highlight": "List/Tree foreground color of the match highlights when searching inside the list/tree.", + "invalidItemForeground": "List/Tree foreground color for invalid items, for example an unresolved root in explorer.", + "listErrorForeground": "Foreground color of list items containing errors.", + "listWarningForeground": "Foreground color of list items containing warnings.", + "listFilterWidgetBackground": "Background color of the type filter widget in lists and trees.", + "listFilterWidgetOutline": "Outline color of the type filter widget in lists and trees.", + "listFilterWidgetNoMatchesOutline": "Outline color of the type filter widget in lists and trees, when there are no matches.", + "listFilterMatchHighlight": "Background color of the filtered match.", + "listFilterMatchHighlightBorder": "Border color of the filtered match.", + "treeIndentGuidesStroke": "Tree stroke color for the indentation guides.", + "_duplicate/126": "Tree stroke color for the indentation guides.", + "listDeemphasizedForeground": "List/Tree foreground color for items that are deemphasized. ", + "menuBorder": "Border color of menus.", + "menuForeground": "Foreground color of menu items.", + "menuBackground": "Background color of menu items.", + "menuSelectionForeground": "Foreground color of the selected menu item in menus.", + "menuSelectionBackground": "Background color of the selected menu item in menus.", + "menuSelectionBorder": "Border color of the selected menu item in menus.", + "menuSeparatorBackground": "Color of a separator menu item in menus.", + "snippetTabstopHighlightBackground": "Highlight background color of a snippet tabstop.", + "snippetTabstopHighlightBorder": "Highlight border color of a snippet tabstop.", + "snippetFinalTabstopHighlightBackground": "Highlight background color of the final tabstop of a snippet.", + "snippetFinalTabstopHighlightBorder": "Highlight border color of the final tabstop of a snippet.", + "breadcrumbsFocusForeground": "Color of focused breadcrumb items.", + "breadcrumbsBackground": "Background color of breadcrumb items.", + "_duplicate/140": "Color of focused breadcrumb items.", + "breadcrumbsSelectedForegound": "Color of selected breadcrumb items.", + "breadcrumbsSelectedBackground": "Background color of breadcrumb item picker.", + "mergeCurrentHeaderBackground": "Current header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.", + "mergeCurrentContentBackground": "Current content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.", + "mergeIncomingHeaderBackground": "Incoming header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.", + "mergeIncomingContentBackground": "Incoming content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.", + "mergeCommonHeaderBackground": "Common ancestor header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.", + "mergeCommonContentBackground": "Common ancestor content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.", + "mergeBorder": "Border color on headers and the splitter in inline merge-conflicts.", + "overviewRulerCurrentContentForeground": "Current overview ruler foreground for inline merge-conflicts.", + "overviewRulerIncomingContentForeground": "Incoming overview ruler foreground for inline merge-conflicts.", + "overviewRulerCommonContentForeground": "Common ancestor overview ruler foreground for inline merge-conflicts.", + "overviewRulerFindMatchForeground": "Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations.", + "overviewRulerSelectionHighlightForeground": "Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations.", + "minimapFindMatchHighlight": "Minimap marker color for find matches.", + "minimapSelectionHighlight": "Minimap marker color for the editor selection.", + "minimapError": "Minimap marker color for errors.", + "overviewRuleWarning": "Minimap marker color for warnings.", + "minimapBackground": "Minimap background color.", + "minimapSliderBackground": "Minimap slider background color.", + "minimapSliderHoverBackground": "Minimap slider background color when hovering.", + "minimapSliderActiveBackground": "Minimap slider background color when clicked on.", + "problemsErrorIconForeground": "The color used for the problems error icon.", + "problemsWarningIconForeground": "The color used for the problems warning icon.", + "problemsInfoIconForeground": "The color used for the problems info icon.", + "chartsForeground": "The foreground color used in charts.", + "chartsLines": "The color used for horizontal lines in charts.", + "chartsRed": "The red color used in chart visualizations.", + "chartsBlue": "The blue color used in chart visualizations.", + "chartsYellow": "The yellow color used in chart visualizations.", + "chartsOrange": "The orange color used in chart visualizations.", + "chartsGreen": "The green color used in chart visualizations.", + "chartsPurple": "The purple color used in chart visualizations." + }, + "vs/platform/theme/common/iconRegistry": { + "iconDefintion.fontId": "The id of the font to use. If not set, the font that is defined first is used.", + "iconDefintion.fontCharacter": "The font character associated with the icon definition.", + "widgetClose": "Icon for the close action in widgets.", + "previousChangeIcon": "Icon for goto previous editor location.", + "nextChangeIcon": "Icon for goto next editor location." + }, + "vs/platform/undoRedo/common/undoRedoService": { + "externalRemoval": "The following files have been closed and modified on disk: {0}.", + "noParallelUniverses": "The following files have been modified in an incompatible way: {0}.", + "cannotWorkspaceUndo": "Could not undo '{0}' across all files. {1}", + "_duplicate/2": "Could not undo '{0}' across all files. {1}", + "cannotWorkspaceUndoDueToChanges": "Could not undo '{0}' across all files because changes were made to {1}", + "cannotWorkspaceUndoDueToInProgressUndoRedo": "Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}", + "cannotWorkspaceUndoDueToInMeantimeUndoRedo": "Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime", + "confirmWorkspace": "Would you like to undo '{0}' across all files?", + "ok": "Undo in {0} Files", + "nok": "Undo this File", + "cancel": "Cancel", + "cannotResourceUndoDueToInProgressUndoRedo": "Could not undo '{0}' because there is already an undo or redo operation running.", + "confirmDifferentSource": "Would you like to undo '{0}'?", + "confirmDifferentSource.ok": "Undo", + "_duplicate/10": "Cancel", + "cannotWorkspaceRedo": "Could not redo '{0}' across all files. {1}", + "_duplicate/15": "Could not redo '{0}' across all files. {1}", + "cannotWorkspaceRedoDueToChanges": "Could not redo '{0}' across all files because changes were made to {1}", + "cannotWorkspaceRedoDueToInProgressUndoRedo": "Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}", + "cannotWorkspaceRedoDueToInMeantimeUndoRedo": "Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime", + "cannotResourceRedoDueToInProgressUndoRedo": "Could not redo '{0}' because there is already an undo or redo operation running." + }, + "vs/platform/workspaces/common/workspaces": { + "codeWorkspace": "Code Workspace" + } +} diff --git a/packages/monaco/src/browser/monaco-loader.ts b/packages/monaco/src/browser/monaco-loader.ts index 7e68831b54d7b..598819323edb0 100644 --- a/packages/monaco/src/browser/monaco-loader.ts +++ b/packages/monaco/src/browser/monaco-loader.ts @@ -48,11 +48,15 @@ export function loadVsRequire(context: any): Promise { export function loadMonaco(vsRequire: any): Promise { return new Promise(resolve => { - if (nls.locale && ['de', 'es', 'fr', 'it', 'ja', 'ko', 'ru', 'zh-cn', 'zh-tw'].includes(nls.locale)) { + if (nls.locale) { vsRequire.config({ 'vs/nls': { availableLanguages: { '*': nls.locale + }, + loadBundle: (_name: string, _language: string, callback: (err: unknown, messages: Record) => void) => { + // The `monaco-nls.json` is build using the `translate-monaco.js` script file + callback(undefined, createMessageBundle(require('../../data/monaco-nls.json'))); } } }); @@ -162,3 +166,28 @@ export function clearMonacoQuickAccessProviders(): void { // Clear Monaco QuickAccessRegistry as it currently includes monaco internal providers and not Theia's providers registry.clear(); } + +function createMessageBundle(bundle: Record>): Record { + const result: Record = {}; + for (const [fullName, items] of Object.entries(bundle)) { + const nameIndex = fullName.lastIndexOf('/'); + let name = fullName; + if (nameIndex >= 0) { + name = fullName.substring(nameIndex + 1); + } + const array: string[] = []; + const keys = Object.keys(items); + for (let i = 0; i < keys.length; i++) { + let key = keys[i]; + if (key.startsWith('_duplicate/')) { + const index = Number(key.substring('_duplicate/'.length)); + key = keys[index]; + keys[i] = key; + } + const fullItemName = `vscode/${name}/${key}`; + array.push(nls.localize(fullItemName, items[key])); + } + result[fullName] = array; + } + return result; +} diff --git a/scripts/translate-monaco.js b/scripts/translate-monaco.js new file mode 100644 index 0000000000000..fd6d0fdb051b7 --- /dev/null +++ b/scripts/translate-monaco.js @@ -0,0 +1,151 @@ +/******************************************************************************** + * Copyright (C) 2021 TypeFox and others. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the Eclipse + * Public License v. 2.0 are satisfied: GNU General Public License, version 2 + * with the GNU Classpath Exception which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + ********************************************************************************/ + +/* + * Translates the array based monaco localizations into key-value pair based localizations + * Call this script like this from the root directory: + * + * node scripts/translate-monaco.js node_modules/@theia/monaco-editor-core/dev/vs/editor/editor.main.nls.js packages/monaco/data/monaco-nls.json + * + * The script should preferably target the english monaco nls.js file. + * The is a translation file compatible with the used monaco version. + * With monaco 0.23, the compatible translations can be found in this repo: + * https://github.com/microsoft/vscode-loc/tree/1fe01ec761f24c40bb5a2d081889eb34c8d523de + * + * Change the commit hash as necessary when upgrading monaco + */ + +// @ts-check +'use-strict'; + +const fs = require('fs'); +const os = require('os'); + +const monacoFilePath = process.argv[2]; +const i18nFilePath = process.argv[3]; +const outputFilePath = process.argv[4]; + +const monacoInputStart = 'define("vs/editor/editor.main.nls", '; +/** @type {string} */ +let monacoFile = fs.readFileSync(monacoFilePath, 'utf8'); +monacoFile = monacoFile.substring(monacoFile.indexOf(monacoInputStart) + monacoInputStart.length, monacoFile.length - 2); + +/** @type {Record} */ +const monacoInput = JSON.parse(monacoFile); +/** @type {{ contents: Record> }} */ +const i18nInput = JSON.parse(fs.readFileSync(i18nFilePath, 'utf8')); +/** @type {Record>} */ +const outputContent = {}; + +// The following objects are translation items that cannot be successfully translated by the duplication algorithm +// Therefore they are written down explicitely + +const keybindingLabels = { + /* 0 */ 'ctrlKey': 'Ctrl', + /* 1 */ 'shiftKey': 'Shift', + /* 2 */ 'altKey': 'Alt', + /* 3 */ 'windowsKey': 'Windows', + /* 4 */ '_duplicate/0': 'Ctrl', + /* 5 */ '_duplicate/1': 'Shift', + /* 6 */ '_duplicate/2': 'Alt', + /* 7 */ 'superKey': 'Super', + /* 8 */ 'ctrlKey.long': 'Control', + /* 9 */ 'shiftKey.long': 'Shift', + /* 10 */ 'altKey.long': 'Alt', + /* 11 */ 'cmdKey.long': 'Command', + /* 12 */ '_duplicate/8': 'Control', + /* 13 */ '_duplicate/9': 'Shift', + /* 14 */ '_duplicate/10': 'Alt', + /* 15 */ 'windowsKey.long': 'Windows', + /* 16 */ '_duplicate/12': 'Control', + /* 17 */ '_duplicate/13': 'Shift', + /* 18 */ '_duplicate/14': 'Alt', + /* 19 */ 'superKey.long': 'Super' +} + +const findWidgets = { + 'findSelectionIcon': 'Icon for \'Find in Selection\' in the editor find widget.', + 'findCollapsedIcon': 'Icon to indicate that the editor find widget is collapsed.', + 'findExpandedIcon': 'Icon to indicate that the editor find widget is expanded.', + 'findReplaceIcon': 'Icon for \'Replace\' in the editor find widget.', + 'findReplaceAllIcon': 'Icon for \'Replace All\' in the editor find widget.', + 'findPreviousMatchIcon': 'Icon for \'Find Previous\' in the editor find widget.', + 'findNextMatchIcon': 'Icon for \'Find Next\' in the editor find widget.', + 'label.find': 'Find', + 'placeholder.find': 'Find', + 'label.previousMatchButton': 'Previous match', + 'label.nextMatchButton': 'Next match', + 'label.toggleSelectionFind': 'Find in selection', + 'label.closeButton': 'Close', + 'label.replace': 'Replace', + 'placeholder.replace': 'Replace', + 'label.replaceButton': 'Replace', + 'label.replaceAllButton': 'Replace All', + 'label.toggleReplaceButton': 'Toggle Replace mode', + 'title.matchesCountLimit': 'Only the first {0} results are highlighted, but all find operations work on the entire text.', + 'label.matchesLocation': '{0} of {1}', + 'label.noResults': 'No results', + 'ariaSearchNoResultEmpty': '{0} found', + 'ariaSearchNoResult': '{0} found for \'{1}\'', + 'ariaSearchNoResultWithLineNum': '{0} found for \'{1}\', at {2}', + 'ariaSearchNoResultWithLineNumNoCurrentMatch': '{0} found for \'{1}\'', + 'ctrlEnter.keybindingChanged': 'Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.' +} + +const manualItems = { + 'vs/base/common/keybindingLabels': keybindingLabels, + 'vs/editor/contrib/find/findWidget': findWidgets +} + +const i18nContents = i18nInput.contents; + +for (const [key, original] of Object.entries(monacoInput)) { + const i18nContent = i18nContents[key]; + if (!i18nContent) { + console.error(`Entry for '${key}' does not exist in specified i18n file.`); + process.exit(1); + } + /** @type {Record} */ + const output = outputContent[key] = {}; + console.log(`translating: '${key}' with ${original.length} items.`); + if (key in manualItems) { + outputContent[key] = manualItems[key]; + continue; + } + const translationKeys = Object.keys(i18nContent); + let translationIndex = 0; + // We have to correctly deal with duplicates here + /** @type {Map} */ + const duplicateMap = new Map(); + for (let i = 0; i < original.length; i++) { + const originalValue = original[i]; + if (duplicateMap.has(originalValue)) { + const index = duplicateMap.get(originalValue); + output[`_duplicate/${index}`] = originalValue; + } else { + output[translationKeys[translationIndex++]] = originalValue; + } + duplicateMap.set(originalValue, i); + } + + if (Object.keys(output).length !== original.length) { + console.error(`Entry for '${key}' contains ${Object.keys(output).length} entries. Expected ${original.length}`); + process.exit(1); + } +} + +fs.writeFileSync(outputFilePath, JSON.stringify(outputContent, undefined, 4) + os.EOL); +console.log('Monaco translation successfully finished');