From 2092c7265246bc43f5efbb4e3b2dbf4ba119244e Mon Sep 17 00:00:00 2001 From: Andy Pan Date: Wed, 16 Jul 2025 21:32:34 +0800 Subject: [PATCH] Let typescript-language-feature support locale argument in web environment --- .../typescript-language-features/web/src/pathMapper.ts | 6 +++++- .../typescript-language-features/web/src/webServer.ts | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/extensions/typescript-language-features/web/src/pathMapper.ts b/extensions/typescript-language-features/web/src/pathMapper.ts index e92548950fc..dbe9aada758 100644 --- a/extensions/typescript-language-features/web/src/pathMapper.ts +++ b/extensions/typescript-language-features/web/src/pathMapper.ts @@ -16,7 +16,7 @@ export class PathMapper { * Copied from toResource in typescriptServiceClient.ts */ toResource(filepath: string): URI { - if (looksLikeLibDtsPath(filepath)) { + if (looksLikeLibDtsPath(filepath) || looksLikeLocaleResourcePath(filepath)) { return URI.from({ scheme: this.extensionUri.scheme, authority: this.extensionUri.authority, @@ -83,6 +83,10 @@ export function looksLikeLibDtsPath(filepath: string) { return filepath.startsWith('/lib.') && filepath.endsWith('.d.ts'); } +export function looksLikeLocaleResourcePath(filepath: string) { + return !!filepath.match(/^\/[a-zA-Z]+(-[a-zA-Z]+)?\/diagnosticMessages\.generated\.json$/); +} + export function looksLikeNodeModules(filepath: string) { return filepath.includes('/node_modules'); } diff --git a/extensions/typescript-language-features/web/src/webServer.ts b/extensions/typescript-language-features/web/src/webServer.ts index 3d2d5f9dfeb..7bb1de3393f 100644 --- a/extensions/typescript-language-features/web/src/webServer.ts +++ b/extensions/typescript-language-features/web/src/webServer.ts @@ -41,6 +41,12 @@ async function initializeSession( removeEventListener('message', listener); }); setSys(sys); + + const localeStr = findArgument(args, '--locale'); + if (localeStr) { + ts.validateLocaleAndSetLanguage(localeStr, sys); + } + startWorkerSession(ts, sys, fs, sessionOptions, ports.tsserver, pathMapper, logger); }