mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-02 00:09:30 +01:00
Add sessions support to translation resources and update related logic (#300889)
* Add sessions support to translation resources and update related logic Fixes https://github.com/microsoft/vscode/issues/300278 * update to track new format of import * fix failures
This commit is contained in:
committed by
GitHub
parent
8f44b60dac
commit
2f42f2e800
@@ -26,18 +26,19 @@ export default new class TranslationRemind implements eslint.Rule.RuleModule {
|
||||
|
||||
private _checkImport(context: eslint.Rule.RuleContext, node: TSESTree.Node, path: string) {
|
||||
|
||||
if (path !== TranslationRemind.NLS_MODULE) {
|
||||
if (path !== TranslationRemind.NLS_MODULE && !path.endsWith('/nls.js')) {
|
||||
return;
|
||||
}
|
||||
|
||||
const currentFile = context.getFilename();
|
||||
const matchService = currentFile.match(/vs\/workbench\/services\/\w+/);
|
||||
const matchPart = currentFile.match(/vs\/workbench\/contrib\/\w+/);
|
||||
if (!matchService && !matchPart) {
|
||||
const matchSessionsPart = currentFile.match(/vs\/sessions\/contrib\/\w+/);
|
||||
if (!matchService && !matchPart && !matchSessionsPart) {
|
||||
return;
|
||||
}
|
||||
|
||||
const resource = matchService ? matchService[0] : matchPart![0];
|
||||
const resource = matchService ? matchService[0] : matchPart ? matchPart[0] : matchSessionsPart![0];
|
||||
let resourceDefined = false;
|
||||
|
||||
let json;
|
||||
@@ -47,9 +48,10 @@ export default new class TranslationRemind implements eslint.Rule.RuleModule {
|
||||
console.error('[translation-remind rule]: File with resources to pull from Transifex was not found. Aborting translation resource check for newly defined workbench part/service.');
|
||||
return;
|
||||
}
|
||||
const workbenchResources = JSON.parse(json).workbench;
|
||||
const parsed = JSON.parse(json);
|
||||
const resources = [...parsed.workbench, ...parsed.sessions];
|
||||
|
||||
workbenchResources.forEach((existingResource: any) => {
|
||||
resources.forEach((existingResource: any) => {
|
||||
if (existingResource.name === resource) {
|
||||
resourceDefined = true;
|
||||
return;
|
||||
|
||||
@@ -561,6 +561,120 @@
|
||||
{
|
||||
"name": "vs/workbench/contrib/list",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/browserView",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/dropOrPasteInto",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/editTelemetry",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/inlineCompletions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/mcp",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/meteredConnection",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/processExplorer",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/remoteCodingAgents",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/telemetry",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomeAgentSessions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/accounts",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/chat",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/request",
|
||||
"project": "vscode-workbench"
|
||||
}
|
||||
],
|
||||
"sessions": [
|
||||
{
|
||||
"name": "vs/sessions",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/accountMenu",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/agentFeedback",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/aiCustomizationTreeView",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/applyCommitsToParentRepo",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/changes",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/chat",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/codeReview",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/fileTreeView",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/files",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/git",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/logs",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/sessions",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/terminal",
|
||||
"project": "vscode-sessions"
|
||||
},
|
||||
{
|
||||
"name": "vs/sessions/contrib/welcome",
|
||||
"project": "vscode-sessions"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -391,7 +391,8 @@ const editorProject: string = 'vscode-editor',
|
||||
workbenchProject: string = 'vscode-workbench',
|
||||
extensionsProject: string = 'vscode-extensions',
|
||||
setupProject: string = 'vscode-setup',
|
||||
serverProject: string = 'vscode-server';
|
||||
serverProject: string = 'vscode-server',
|
||||
sessionsProject: string = 'vscode-sessions';
|
||||
|
||||
export function getResource(sourceFile: string): Resource {
|
||||
let resource: string;
|
||||
@@ -416,6 +417,11 @@ export function getResource(sourceFile: string): Resource {
|
||||
return { name: resource, project: workbenchProject };
|
||||
} else if (/^vs\/workbench/.test(sourceFile)) {
|
||||
return { name: 'vs/workbench', project: workbenchProject };
|
||||
} else if (/^vs\/sessions\/contrib/.test(sourceFile)) {
|
||||
resource = sourceFile.split('/', 4).join('/');
|
||||
return { name: resource, project: sessionsProject };
|
||||
} else if (/^vs\/sessions/.test(sourceFile)) {
|
||||
return { name: 'vs/sessions', project: sessionsProject };
|
||||
}
|
||||
|
||||
throw new Error(`Could not identify the XLF bundle for ${sourceFile}`);
|
||||
@@ -737,6 +743,11 @@ export function prepareI18nPackFiles(resultingTranslationPaths: TranslationPath[
|
||||
if (EXTERNAL_EXTENSIONS.find(e => e === resource)) {
|
||||
project = extensionsProject;
|
||||
}
|
||||
// TODO(tyleonha): Support localization for the Sessions app (https://github.com/microsoft/vscode-internalbacklog/issues/7045)
|
||||
// vscode-setup has its own import path via prepareIslFiles
|
||||
if (project === sessionsProject || project === setupProject) {
|
||||
return;
|
||||
}
|
||||
const contents = xlf.contents!.toString();
|
||||
log(`Found ${project}: ${resource}`);
|
||||
const parsePromise = getL10nFilesFromXlf(contents);
|
||||
|
||||
@@ -31,7 +31,8 @@ suite('XLF Parser Tests', () => {
|
||||
|
||||
test('JSON file source path to Transifex resource match', () => {
|
||||
const editorProject: string = 'vscode-editor',
|
||||
workbenchProject: string = 'vscode-workbench';
|
||||
workbenchProject: string = 'vscode-workbench',
|
||||
sessionsProject: string = 'vscode-sessions';
|
||||
|
||||
const platform: i18n.Resource = { name: 'vs/platform', project: editorProject },
|
||||
editorContrib = { name: 'vs/editor/contrib', project: editorProject },
|
||||
@@ -40,7 +41,9 @@ suite('XLF Parser Tests', () => {
|
||||
code = { name: 'vs/code', project: workbenchProject },
|
||||
workbenchParts = { name: 'vs/workbench/contrib/html', project: workbenchProject },
|
||||
workbenchServices = { name: 'vs/workbench/services/textfile', project: workbenchProject },
|
||||
workbench = { name: 'vs/workbench', project: workbenchProject };
|
||||
workbench = { name: 'vs/workbench', project: workbenchProject },
|
||||
sessionsContrib = { name: 'vs/sessions/contrib/chat', project: sessionsProject },
|
||||
sessions = { name: 'vs/sessions', project: sessionsProject };
|
||||
|
||||
assert.deepStrictEqual(i18n.getResource('vs/platform/actions/browser/menusExtensionPoint'), platform);
|
||||
assert.deepStrictEqual(i18n.getResource('vs/editor/contrib/clipboard/browser/clipboard'), editorContrib);
|
||||
@@ -50,5 +53,7 @@ suite('XLF Parser Tests', () => {
|
||||
assert.deepStrictEqual(i18n.getResource('vs/workbench/contrib/html/browser/webview'), workbenchParts);
|
||||
assert.deepStrictEqual(i18n.getResource('vs/workbench/services/textfile/node/testFileService'), workbenchServices);
|
||||
assert.deepStrictEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
|
||||
assert.deepStrictEqual(i18n.getResource('vs/sessions/contrib/chat/browser/chatWidget'), sessionsContrib);
|
||||
assert.deepStrictEqual(i18n.getResource('vs/sessions/browser/layoutActions'), sessions);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user