src/vs/platform/extensionManagement/common/extensionNls.ts

90 LOC · 87 covered · 3 uncovered · 13 ranges · 55 concepts · 6 introducers · 34 tests

File neighbourhood

The centred file is linked to every concept that introduces one of its ranges, every test that runs code from the file, and the gray connector concepts standing between those tests and the file's own introducer concepts. Undirected links join concepts to every file where they introduce source and concepts to the tests they introduce; arrows show specialization between the displayed concepts and bridge only concepts omitted from this view. Concept colors match the source ranges below; connector concepts have no source color and are shown in gray.

Focused file, its introducer and connector concepts, their introduced files, and tests that run code from the file

In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the related-file, concept, and source links on this page.

Focused file, its introducer and connector concepts, their introduced files, and tests that run code from the fileextensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan all extensions prefers matching user extension over system extension|occurrence=1, extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan all extensions picks user extension with newer version over system extension|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan picks latest version when multiple versions exist|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×4 · 13 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan all extensions uses system version when autoUpdate is disabled (non-stable quality)|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×1 · 6 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions with default nls replacements|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×4 · 9 introduced LOCextensionsScannerService…extensionsScannerService.ts ×12 · 65 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan extension falls back to default nls replacements|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×1 · 2 introduced LOCextensionsScannerService…extensionsScannerService.ts ×9 · 21 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions with different versions|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×1 · 2 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions include invalid extensions|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions exclude invalid extensions|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×2 · 11 introduced LOCextensionsScannerService…extensionsScannerService.ts ×5 · 17 introduced LOCextensionsScannerService…extensionsScannerService.ts ×5 · 21 introduced LOCextensionsScannerService…extensionsScannerService.ts ×3 · 3 introduced LOCextensionsScannerService…extensionsScannerService.ts ×6 · 12 introduced LOCextensionsScannerService…extensionsScannerService.ts ×1 · 2 introduced LOCextensionsScannerService…extensionsScannerService.ts ×5 · 9 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions system extension has autoUpdate set to false when quality is not stable|occurrence=1, extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions system extension has autoUpdate set to false when not in autoUpdateBuiltinExtensions|occurrence=1, +1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan system extension|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×1 · 2 introduced LOCextensionsScannerService…extensionsScannerService.ts ×3 · 4 introduced LOCextensionsScannerService…extensionsScannerService.ts ×1 · 2 introduced LOCextensionsScannerService…extensionsScannerService.ts ×7 · 27 introduced LOCextensionsScannerService…extensionsScannerService.ts ×4 · 9 introduced LOCextensionsScannerService…extensionsScannerService.ts ×3 · 3 introduced LOCextensionsScannerService…extensionsScannerService.ts ×2 · 4 introduced LOCextensionsScannerService…extensionsScannerService.ts ×1 · 2 introduced LOCextensionsScannerService…extensionsScannerService.ts ×7 · 41 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions include all versions|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×2 · 6 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan user extensions|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×1 · 4 introduced LOCextensionsScannerService…extensionsScannerService.ts ×1 · 6 introduced LOCextensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan existing extension|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×3 · 6 introduced LOCextensionsScannerService…extensionsScannerService.ts ×6 · 17 introduced LOCextensionsScannerService…extensionsScannerService.ts ×4 · 5 introduced LOCextensionsScannerService…extensionsScannerService.ts ×2 · 3 introduced LOCextensionsScannerService…extensionsScannerService.ts ×2 · 3 introduced LOCextensionsScannerService…extensionsScannerService.ts ×30 · 214 introduced LOCextensionsScannerService…extensionsScannerService.test|title=ExtensionScannerInput compare inputs - location|occurrence=1, extensionsScannerService.test|title=ExtensionScannerInput compare inputs - application location|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.test|title=ExtensionScannerInput compare inputs - profile|occurrence=1 · 0 introduced LOCextensionsScannerService…extensionsScannerService.ts ×6 · 26 introduced LOCextensionsScannerService…extensionsScannerService.ts ×50 · 322 introduced LOCextensionsScannerService…extensionNls.ts ×1 · 5 introduced LOCextensionNls.ts ×1extensionNls.ts ×1 · 2 introduced LOCextensionNls.ts ×1extensionNls.ts ×1 · 5 introduced LOCextensionNls.ts ×1extensionNls.ts ×1 · 1 introduced LOCextensionNls.ts ×1extensionNls.ts ×7 · 53 introduced LOCextensionNls.ts ×7extensionNls.ts ×2 · 21 introduced LOCextensionNls.ts ×2extensionNls.test|title=Localize Manifest replaces template strings - command title & categories become ILocalizedString|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/common/extensionNls.test|title=Localize Manifest replaces template strings - command title & categories become ILocalizedString|occurrence=1extensionNls.test|title=…extensionNls.test|title=Localize Manifest replaces template strings - is best effort #164630|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/common/extensionNls.test|title=Localize Manifest replaces template strings - is best effort #164630|occurrence=1extensionNls.test|title=…extensionNls.test|title=Localize Manifest replaces template strings with fallback if not found in translations|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/common/extensionNls.test|title=Localize Manifest replaces template strings with fallback if not found in translations|occurrence=1extensionNls.test|title=…extensionNls.test|title=Localize Manifest replaces template strings|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/common/extensionNls.test|title=Localize Manifest replaces template strings|occurrence=1extensionNls.test|title=…extensionsScannerService.test|title=ExtensionScannerInput compare inputs - application location|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=ExtensionScannerInput compare inputs - application location|occurrence=1extensionsScannerService…extensionsScannerService.test|title=ExtensionScannerInput compare inputs - extension type|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=ExtensionScannerInput compare inputs - extension type|occurrence=1extensionsScannerService…extensionsScannerService.test|title=ExtensionScannerInput compare inputs - location|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=ExtensionScannerInput compare inputs - location|occurrence=1extensionsScannerService…extensionsScannerService.test|title=ExtensionScannerInput compare inputs - profile|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=ExtensionScannerInput compare inputs - profile|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan all extensions picks user extension with newer version over system extension|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan all extensions picks user extension with newer version over system extension|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan all extensions prefers matching user extension over system extension|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan all extensions prefers matching user extension over system extension|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan all extensions uses system version when autoUpdate is disabled (non-stable quality)|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan all extensions uses system version when autoUpdate is disabled (non-stable quality)|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan picks latest version when multiple versions exist|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan picks latest version when multiple versions exist|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan user extension is excluded when autoUpdate is disabled (non-stable quality)|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan user extension is excluded when autoUpdate is disabled (non-stable quality)|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan user extension not in autoUpdateBuiltinExtensions is not filtered|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan user extension not in autoUpdateBuiltinExtensions is not filtered|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan user extension with different version is included when forceAutoUpdate is enabled|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan user extension with different version is included when forceAutoUpdate is enabled|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan user extension with matching product version is included|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions scan user extension with matching product version is included|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions system extension has autoUpdate set to false when not in autoUpdateBuiltinExtensions|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions system extension has autoUpdate set to false when not in autoUpdateBuiltinExtensions|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions system extension has autoUpdate set to false when quality is not stable|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions system extension has autoUpdate set to false when quality is not stable|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions system extension has autoUpdate set to true when in autoUpdateBuiltinExtensions and quality is stable|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test auto update builtin extensions system extension has autoUpdate set to true when in autoUpdateBuiltinExtensions and quality is stable|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions exclude invalid extensions|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions exclude invalid extensions|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions include all versions|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions include all versions|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions include invalid extensions|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions include invalid extensions|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions with default nls replacements|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions with default nls replacements|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions with different versions and higher version is not compatible|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions with different versions and higher version is not compatible|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions with different versions|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan all user extensions with different versions|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan existing extension|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan existing extension|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan extension falls back to default nls replacements|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan extension falls back to default nls replacements|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan extension with en nls replacements|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan extension with en nls replacements|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan multiple extensions|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan multiple extensions|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan single extension with manifest metadata retains manifest metadata|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan single extension with manifest metadata retains manifest metadata|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan single extension|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan single extension|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan system extensions include additional builtin extensions|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan system extensions include additional builtin extensions|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan system extension|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan system extension|occurrence=1extensionsScannerService…extensionsScannerService.test|title=NativeExtensionsScanerService Test scan user extensions|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/extensionManagement/test/node/extensionsScannerService.test|title=NativeExtensionsScanerService Test scan user extensions|occurrence=1extensionsScannerService…Focused file · src/vs/platform/extensionManagement/common/extensionNls.ts · 90 LOCcommon/extensionNls.ts

Graph controls are ready.

Interactive rendering requires JavaScript and WebGL. Use the related-file, concept, and source links on this page while the interactive map is unavailable.

1 > /*--------------------------------------------------------------------------------------------- extensionNls.ts ×2
2 > * Copyright (c) Microsoft Corporation. All rights reserved.
3 > * Licensed under the MIT License. See License.txt in the project root for license information.
4 > *--------------------------------------------------------------------------------------------*/
5 >
6 > import { isObject, isString } from '../../../base/common/types.js';
7 > import { ILocalizedString } from '../../action/common/action.js';
8 > import { IExtensionManifest } from '../../extensions/common/extensions.js';
9 > import { localize } from '../../../nls.js';
10 > import { ILogger } from '../../log/common/log.js';
11 >
12 > export interface ITranslations {
13 > [key: string]: string | { message: string; comment: string[] } | undefined;
14 > }
15 >
16 > export function localizeManifest(logger: ILogger, extensionManifest: IExtensionManifest, translations: ITranslations, fallbackTranslations?: ITranslations): IExtensionManifest {
17 > try { extensionNls.ts ×7
18 > replaceNLStrings(logger, extensionManifest, translations, fallbackTranslations);
19 > } catch (error) {
20 logger.error(error?.message ?? error);
21 /*Ignore Error*/
22 }
23 > return extensionManifest; extensionNls.ts ×7
24 > }
26 > /**
27 > * This routine makes the following assumptions:
28 > * The root element is an object literal
29 > */
30 > function replaceNLStrings(logger: ILogger, extensionManifest: IExtensionManifest, messages: ITranslations, originalMessages?: ITranslations): void { extensionNls.ts ×7
31 > const processEntry = (obj: Record<string, unknown>, key: string | number, command?: boolean) => {
32 > const value = obj[key];
33 > if (isString(value)) {
34 > const str = value;
35 > const length = str.length;
36 > if (length > 1 && str[0] === '%' && str[length - 1] === '%') {
37 > const messageKey = str.substr(1, length - 2);
38 > let translated = messages[messageKey];
39 > // If the messages come from a language pack they might miss some keys
40 > // Fill them from the original messages.
41 > if (translated === undefined && originalMessages) {
42 > translated = originalMessages[messageKey]; extensionNls.ts ×1
43 > }
44 > const message: string | undefined = typeof translated === 'string' ? translated : translated?.message; extensionNls.ts ×7
45 >
46 > // This branch returns ILocalizedString's instead of Strings so that the Command Palette can contain both the localized and the original value.
47 > const original = originalMessages?.[messageKey];
48 > const originalMessage: string | undefined = typeof original === 'string' ? original : original?.message;
49 >
50 > if (!message) {
51 > if (!originalMessage) { extensionNls.ts ×1
52 > logger.warn(`[${extensionManifest.name}]: ${localize('missingNLSKey', "Couldn't find message for key {0}.", messageKey)}`);
53 > }
54 > return;
55 > }
57 > if (
58 > // if we are translating the title or category of a command
59 > command && (key === 'title' || key === 'category') &&
60 > // and the original value is not the same as the translated value extensionNls.ts ×1
61 > originalMessage && originalMessage !== message extensionNls.ts ×7
62 > ) {
63 > const localizedString: ILocalizedString = { extensionNls.ts ×1
64 > value: message,
65 > original: originalMessage
66 > };
67 > obj[key] = localizedString;
68 > } else { extensionNls.ts ×7
69 > obj[key] = message;
70 > }
71 > }
72 > } else if (isObject(value)) {
73 > for (const k in value) {
74 > if (value.hasOwnProperty(k)) {
75 > k === 'commands' ? processEntry(value as Record<string, unknown>, k, true) : processEntry(value as Record<string, unknown>, k, command);
76 > }
77 > }
78 > } else if (Array.isArray(value)) {
79 > for (let i = 0; i < (value as Array<unknown>).length; i++) {
80 > processEntry(value, i, command);
81 > }
82 > }
83 > };
84 >
85 > for (const key in extensionManifest) {
86 > if (extensionManifest.hasOwnProperty(key)) {
87 > processEntry(extensionManifest, key);
88 > }
89 > }
90 > }