diff --git a/packages/core/src/common/nls.ts b/packages/core/src/common/nls.ts index 6856c8be87feb..8ad3cd9c468f9 100644 --- a/packages/core/src/common/nls.ts +++ b/packages/core/src/common/nls.ts @@ -71,7 +71,8 @@ class LocalizationKeyProvider { private data = this.buildData(); get(defaultValue: string): string | undefined { - return this.data.get(Localization.normalize(defaultValue.toLowerCase())); + const normalized = Localization.normalize(defaultValue); + return this.data.get(normalized) || this.data.get(normalized.toUpperCase()); } /** @@ -86,16 +87,36 @@ class LocalizationKeyProvider { const keys: NlsKeys = bundles.keys; const messages: Record = bundles.messages; const data = new Map(); + const keysAndMessages = this.buildKeyMessageTuples(keys, messages); + for (const { key, message } of keysAndMessages) { + data.set(message, key); + } + // Second pass adds each message again in upper case, if the message doesn't already exist in upper case + // The second pass is needed to not accidentally override any translations which actually use the upper case message + for (const { key, message } of keysAndMessages) { + const upperMessage = message.toUpperCase(); + if (!data.has(upperMessage)) { + data.set(upperMessage, key); + } + } + return data; + } + + private buildKeyMessageTuples(keys: NlsKeys, messages: Record): { key: string, message: string }[] { + const list: { key: string, message: string }[] = []; for (const [fileKey, messageBundle] of Object.entries(messages)) { const keyBundle = keys[fileKey]; for (let i = 0; i < messageBundle.length; i++) { - const message = Localization.normalize(messageBundle[i]).toLowerCase(); + const message = Localization.normalize(messageBundle[i]); const key = keyBundle[i]; const localizationKey = this.buildKey(typeof key === 'string' ? key : key.key, fileKey); - data.set(message, localizationKey); + list.push({ + key: localizationKey, + message + }); } } - return data; + return list; } private buildKey(key: string, filepath: string): string { diff --git a/packages/workspace/src/browser/workspace-commands.ts b/packages/workspace/src/browser/workspace-commands.ts index 715da1c4f85bf..e7f12e5812e6e 100644 --- a/packages/workspace/src/browser/workspace-commands.ts +++ b/packages/workspace/src/browser/workspace-commands.ts @@ -65,7 +65,7 @@ export namespace WorkspaceCommands { id: 'workspace:openFile', originalCategory: FILE_CATEGORY, category: nls.localizeByDefault(CommonCommands.FILE_CATEGORY), - dialogLabel: 'Open File' + dialogLabel: nls.localizeByDefault('Open File') }; export const OPEN_FOLDER: Command & { dialogLabel: string } = { id: 'workspace:openFolder',