Skip to content

Commit

Permalink
[i18n] fix paths for external extensions
Browse files Browse the repository at this point in the history
  • Loading branch information
aeschli committed Jan 26, 2018
1 parent 6bfc7ee commit 4abe874
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 43 deletions.
40 changes: 18 additions & 22 deletions build/lib/i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -894,7 +894,7 @@ function updateResource(project, slug, xlfFile, apiHostname, credentials) {
}
// cache resources
var _coreAndExtensionResources;
function pullCoreAndExtensionsXlfFiles(apiHostname, username, password, language) {
function pullCoreAndExtensionsXlfFiles(apiHostname, username, password, language, includeExternalExtensions) {
if (!_coreAndExtensionResources) {
_coreAndExtensionResources = [];
// editor and workbench
Expand All @@ -905,9 +905,11 @@ function pullCoreAndExtensionsXlfFiles(apiHostname, username, password, language
var extensionsToLocalize_1 = Object.create(null);
glob.sync('./extensions/**/*.nls.json').forEach(function (extension) { return extensionsToLocalize_1[extension.split('/')[2]] = true; });
glob.sync('./extensions/*/node_modules/vscode-nls').forEach(function (extension) { return extensionsToLocalize_1[extension.split('/')[2]] = true; });
for (var _i = 0, externalExtensionsWithTranslations_1 = externalExtensionsWithTranslations; _i < externalExtensionsWithTranslations_1.length; _i++) {
var extension = externalExtensionsWithTranslations_1[_i];
extensionsToLocalize_1[extension] = true;
if (includeExternalExtensions) {
for (var _i = 0, externalExtensionsWithTranslations_1 = externalExtensionsWithTranslations; _i < externalExtensionsWithTranslations_1.length; _i++) {
var extension = externalExtensionsWithTranslations_1[_i];
extensionsToLocalize_1[extension] = true;
}
}
Object.keys(extensionsToLocalize_1).forEach(function (extension) {
_coreAndExtensionResources.push({ name: extension, project: extensionsProject });
Expand Down Expand Up @@ -1025,7 +1027,7 @@ function createI18nFile(originalFilePath, messages) {
}
var i18nPackVersion = "1.0.0";
function pullI18nPackFiles(apiHostname, username, password, language) {
return pullCoreAndExtensionsXlfFiles(apiHostname, username, password, language).pipe(prepareI18nPackFiles());
return pullCoreAndExtensionsXlfFiles(apiHostname, username, password, language, true).pipe(prepareI18nPackFiles());
}
exports.pullI18nPackFiles = pullI18nPackFiles;
function prepareI18nPackFiles() {
Expand All @@ -1034,32 +1036,26 @@ function prepareI18nPackFiles() {
var extensionsPacks = {};
return event_stream_1.through(function (xlf) {
var stream = this;
var project = path.dirname(xlf.path);
var resource = path.basename(xlf.path, '.xlf');
console.log(resource);
var parsePromise = XLF.parse(xlf.contents.toString());
parsePromises.push(parsePromise);
parsePromise.then(function (resolvedFiles) {
resolvedFiles.forEach(function (file) {
var path = file.originalFilePath;
var firstSlash = path.indexOf('/');
var firstSegment = path.substr(0, firstSlash);
if (firstSegment === 'src') {
mainPack.contents[path.substr(firstSlash + 1)] = file.messages;
}
else if (firstSegment === 'extensions') {
var secondSlash = path.indexOf('/', firstSlash + 1);
var secondSegment = path.substring(firstSlash + 1, secondSlash);
if (secondSegment) {
var extPack = extensionsPacks[secondSegment];
if (!extPack) {
extPack = extensionsPacks[secondSegment] = { version: i18nPackVersion, contents: {} };
}
extPack.contents[path.substr(secondSlash + 1)] = file.messages;
}
else {
console.log('Unknown second segment ' + path);
if (project === extensionsProject) {
var extPack = extensionsPacks[resource];
if (!extPack) {
extPack = extensionsPacks[resource] = { version: i18nPackVersion, contents: {} };
}
var secondSlash = path.indexOf('/', firstSlash + 1);
var key = externalExtensionsWithTranslations.indexOf(resource) !== -1 ? path : path.substr(secondSlash + 1);
extPack.contents[key] = file.messages;
}
else {
console.log('Unknown first segment ' + path);
mainPack.contents[path.substr(firstSlash + 1)] = file.messages;
}
});
});
Expand Down
39 changes: 19 additions & 20 deletions build/lib/i18n.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export const pseudoLanguage: Language = { id: 'pseudo', folderName: 'pseudo', tr

// non built-in extensions also that are transifex and need to be part of the language packs
const externalExtensionsWithTranslations = [
"azure-account",
//"azure-account",
"vscode-chrome-debug",
"vscode-chrome-debug-core",
"vscode-node-debug",
Expand Down Expand Up @@ -1011,7 +1011,7 @@ function updateResource(project: string, slug: string, xlfFile: File, apiHostnam
// cache resources
let _coreAndExtensionResources: Resource[];

export function pullCoreAndExtensionsXlfFiles(apiHostname: string, username: string, password: string, language: Language): NodeJS.ReadableStream {
export function pullCoreAndExtensionsXlfFiles(apiHostname: string, username: string, password: string, language: Language, includeExternalExtensions?: boolean): NodeJS.ReadableStream {
if (!_coreAndExtensionResources) {
_coreAndExtensionResources = [];
// editor and workbench
Expand All @@ -1024,8 +1024,10 @@ export function pullCoreAndExtensionsXlfFiles(apiHostname: string, username: str
glob.sync('./extensions/**/*.nls.json', ).forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
glob.sync('./extensions/*/node_modules/vscode-nls', ).forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);

for (let extension of externalExtensionsWithTranslations) {
extensionsToLocalize[extension] = true;
if (includeExternalExtensions) {
for (let extension of externalExtensionsWithTranslations) {
extensionsToLocalize[extension] = true;
}
}

Object.keys(extensionsToLocalize).forEach(extension => {
Expand Down Expand Up @@ -1159,7 +1161,7 @@ interface I18nPack {
const i18nPackVersion = "1.0.0";

export function pullI18nPackFiles(apiHostname: string, username: string, password: string, language: Language): NodeJS.ReadableStream {
return pullCoreAndExtensionsXlfFiles(apiHostname, username, password, language).pipe(prepareI18nPackFiles());
return pullCoreAndExtensionsXlfFiles(apiHostname, username, password, language, true).pipe(prepareI18nPackFiles());
}

export function prepareI18nPackFiles() {
Expand All @@ -1168,30 +1170,27 @@ export function prepareI18nPackFiles() {
let extensionsPacks: Map<I18nPack> = {};
return through(function (this: ThroughStream, xlf: File) {
let stream = this;
let project = path.dirname(xlf.path);
let resource = path.basename(xlf.path, '.xlf');
console.log(resource);
let parsePromise = XLF.parse(xlf.contents.toString());
parsePromises.push(parsePromise);
parsePromise.then(
resolvedFiles => {
resolvedFiles.forEach(file => {
const path = file.originalFilePath;
const firstSlash = path.indexOf('/');
const firstSegment = path.substr(0, firstSlash);
if (firstSegment === 'src') {
mainPack.contents[path.substr(firstSlash + 1)] = file.messages;
} else if (firstSegment === 'extensions') {
const secondSlash = path.indexOf('/', firstSlash + 1);
const secondSegment = path.substring(firstSlash + 1, secondSlash);
if (secondSegment) {
let extPack = extensionsPacks[secondSegment];
if (!extPack) {
extPack = extensionsPacks[secondSegment] = { version: i18nPackVersion, contents: {} };
}
extPack.contents[path.substr(secondSlash + 1)] = file.messages;
} else {
console.log('Unknown second segment ' + path);

if (project === extensionsProject) {
let extPack = extensionsPacks[resource];
if (!extPack) {
extPack = extensionsPacks[resource] = { version: i18nPackVersion, contents: {} };
}
const secondSlash = path.indexOf('/', firstSlash + 1);
let key = externalExtensionsWithTranslations.indexOf(resource) !== -1 ? path: path.substr(secondSlash + 1);
extPack.contents[key] = file.messages;
} else {
console.log('Unknown first segment ' + path);
mainPack.contents[path.substr(firstSlash + 1)] = file.messages;
}
});
}
Expand Down
2 changes: 1 addition & 1 deletion build/npm/update-localization-extension.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ function update(idOrPath) {
}
let locExtFolder = idOrPath;
if (/^\w{2}(-\w+)?$/.test(idOrPath)) {
locExtFolder = '../vscode-localization-' + idOrPath;
locExtFolder = '../vscode-language-pack-' + idOrPath;
}
let locExtStat = fs.statSync(locExtFolder);
if (!locExtStat || !locExtStat.isDirectory) {
Expand Down

0 comments on commit 4abe874

Please sign in to comment.