Skip to content

Commit 04594c8

Browse files
committed
Add support for Language Packs
1 parent c00aeba commit 04594c8

73 files changed

Lines changed: 1661 additions & 1102 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build/gulpfile.extensions.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const sourcemaps = require('gulp-sourcemaps');
2020
const nlsDev = require('vscode-nls-dev');
2121
const root = path.dirname(__dirname);
2222
const commit = util.getVersion(root);
23+
const i18n = require('./lib/i18n');
2324

2425
const extensionsPath = path.join(path.dirname(__dirname), 'extensions');
2526

@@ -29,7 +30,8 @@ const compilations = glob.sync('**/tsconfig.json', {
2930
});
3031

3132
const getBaseUrl = out => `https://ticino.blob.core.windows.net/sourcemaps/${commit}/${out}`;
32-
const languages = ['chs', 'cht', 'jpn', 'kor', 'deu', 'fra', 'esn', 'rus', 'ita'];
33+
34+
const languages = i18n.defaultLanguages.concat(process.env.VSCODE_QUALITY !== 'stable' ? i18n.extraLanguages: []);
3335

3436
const tasks = compilations.map(function (tsconfigFile) {
3537
const absolutePath = path.join(extensionsPath, tsconfigFile);
@@ -55,9 +57,19 @@ const tasks = compilations.map(function (tsconfigFile) {
5557
const srcBase = path.join(root, 'src');
5658
const src = path.join(srcBase, '**');
5759
const out = path.join(root, 'out');
58-
const i18n = path.join(__dirname, '..', 'i18n');
60+
const i18nPath = path.join(__dirname, '..', 'i18n');
5961
const baseUrl = getBaseUrl(out);
6062

63+
let headerId, headerOut;
64+
let index = relativeDirname.indexOf('/');
65+
if (index < 0) {
66+
headerId = relativeDirname;
67+
headerOut = 'out';
68+
} else {
69+
headerId = relativeDirname.substr(0, index);
70+
headerOut = relativeDirname.substr(index + 1) + '/out';
71+
}
72+
6173
function createPipeline(build, emitError) {
6274
const reporter = createReporter();
6375

@@ -82,7 +94,9 @@ const tasks = compilations.map(function (tsconfigFile) {
8294
sourceRoot: '../src'
8395
}))
8496
.pipe(tsFilter.restore)
85-
.pipe(build ? nlsDev.createAdditionalLanguageFiles(languages, i18n, out) : es.through())
97+
.pipe(build ? nlsDev.createAdditionalLanguageFiles(languages, i18nPath, out) : es.through())
98+
.pipe(build ? nlsDev.bundleMetaDataFiles(headerId, headerOut) : es.through())
99+
.pipe(build ? nlsDev.bundleLanguageFiles() : es.through())
86100
.pipe(reporter.end(emitError));
87101

88102
return es.duplex(input, output);

build/gulpfile.vscode.js

Lines changed: 47 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,7 @@ const BUNDLED_FILE_HEADER = [
9292
' *--------------------------------------------------------*/'
9393
].join('\n');
9494

95-
var languages = ['chs', 'cht', 'jpn', 'kor', 'deu', 'fra', 'esn', 'rus', 'ita'];
96-
if (process.env.VSCODE_QUALITY !== 'stable') {
97-
languages = languages.concat(['ptb', 'hun', 'trk']); // Add languages requested by the community to non-stable builds
98-
}
95+
const languages = i18n.defaultLanguages.concat(process.env.VSCODE_QUALITY !== 'stable' ? i18n.extraLanguages: []);
9996

10097
gulp.task('clean-optimized-vscode', util.rimraf('out-vscode'));
10198
gulp.task('optimize-vscode', ['clean-optimized-vscode', 'compile-build', 'compile-extensions-build'], common.optimizeTask({
@@ -105,7 +102,7 @@ gulp.task('optimize-vscode', ['clean-optimized-vscode', 'compile-build', 'compil
105102
loaderConfig: common.loaderConfig(nodeModules),
106103
header: BUNDLED_FILE_HEADER,
107104
out: 'out-vscode',
108-
languages: languages
105+
languages: languages,
109106
}));
110107

111108

@@ -382,53 +379,68 @@ gulp.task('vscode-linux-x64-min', ['minify-vscode', 'clean-vscode-linux-x64'], p
382379
gulp.task('vscode-linux-arm-min', ['minify-vscode', 'clean-vscode-linux-arm'], packageTask('linux', 'arm', { minified: true }));
383380

384381
// Transifex Localizations
385-
const vscodeLanguages = [
386-
'zh-hans',
387-
'zh-hant',
388-
'ja',
389-
'ko',
390-
'de',
391-
'fr',
392-
'es',
393-
'ru',
394-
'it',
395-
'pt-br',
396-
'hu',
397-
'tr'
398-
];
399-
const setupDefaultLanguages = [
400-
'zh-hans',
401-
'zh-hant',
402-
'ko'
403-
];
382+
383+
const innoSetupConfig = {
384+
'zh-cn': { codePage: 'CP936', defaultInfo: { name: 'Simplified Chinese', id: '$0804', } },
385+
'zh-tw': { codePage: 'CP950', defaultInfo: { name: 'Traditional Chinese', id: '$0404' } },
386+
'ko': { codePage: 'CP949', defaultInfo: { name: 'Korean', id: '$0412' } },
387+
'ja': { codePage: 'CP932' },
388+
'de': { codePage: 'CP1252' },
389+
'fr': { codePage: 'CP1252' },
390+
'es': { codePage: 'CP1252' },
391+
'ru': { codePage: 'CP1251' },
392+
'it': { codePage: 'CP1252' },
393+
'pt-br': { codePage: 'CP1252' },
394+
'hu': { codePage: 'CP1250' },
395+
'tr': { codePage: 'CP1254' }
396+
};
404397

405398
const apiHostname = process.env.TRANSIFEX_API_URL;
406399
const apiName = process.env.TRANSIFEX_API_NAME;
407400
const apiToken = process.env.TRANSIFEX_API_TOKEN;
408401

409402
gulp.task('vscode-translations-push', ['optimize-vscode'], function () {
410403
const pathToMetadata = './out-vscode/nls.metadata.json';
411-
const pathToExtensions = './extensions/**/*.nls.json';
404+
const pathToExtensions = './extensions/*';
412405
const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}';
413406

414407
return es.merge(
415-
gulp.src(pathToMetadata).pipe(i18n.prepareXlfFiles()),
416-
gulp.src(pathToSetup).pipe(i18n.prepareXlfFiles()),
417-
gulp.src(pathToExtensions).pipe(i18n.prepareXlfFiles('vscode-extensions'))
408+
gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()),
409+
gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
410+
gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
418411
).pipe(i18n.pushXlfFiles(apiHostname, apiName, apiToken));
419412
});
420413

421-
gulp.task('vscode-translations-pull', function () {
414+
gulp.task('vscode-translations-push-test', function () {
415+
const pathToMetadata = './out-vscode/nls.metadata.json';
416+
const pathToExtensions = './extensions/*';
417+
const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}';
418+
422419
return es.merge(
423-
i18n.pullXlfFiles('vscode-editor', apiHostname, apiName, apiToken, vscodeLanguages),
424-
i18n.pullXlfFiles('vscode-workbench', apiHostname, apiName, apiToken, vscodeLanguages),
425-
i18n.pullXlfFiles('vscode-extensions', apiHostname, apiName, apiToken, vscodeLanguages),
426-
i18n.pullXlfFiles('vscode-setup', apiHostname, apiName, apiToken, setupDefaultLanguages)
427-
).pipe(vfs.dest('../vscode-localization'));
420+
gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()),
421+
gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
422+
gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
423+
).pipe(vfs.dest('../vscode-transifex-input'));
424+
});
425+
426+
gulp.task('vscode-translations-pull', function () {
427+
[...i18n.defaultLanguages, ...i18n.extraLanguages].forEach(language => {
428+
i18n.pullBuildXlfFiles(apiHostname, apiName, apiToken, language).pipe(vfs.dest(`../vscode-localization/${language.id}/build`));
429+
430+
let includeDefault = !!innoSetupConfig[language.id].defaultInfo;
431+
i18n.pullSetupXlfFiles(apiHostname, apiName, apiToken, language, includeDefault).pipe(vfs.dest(`../vscode-localization/${language.id}/setup`));
432+
});
428433
});
429434

430435
gulp.task('vscode-translations-import', function () {
431-
return gulp.src('../vscode-localization/**/*.xlf').pipe(i18n.prepareJsonFiles()).pipe(vfs.dest('./i18n'));
436+
[...i18n.defaultLanguages, ...i18n.extraLanguages].forEach(language => {
437+
gulp.src(`../vscode-localization/${language.id}/build/*/*.xlf`)
438+
.pipe(i18n.prepareI18nFiles(language))
439+
.pipe(vfs.dest(`./i18n/${language.folderName}`));
440+
gulp.src(`../vscode-localization/${language.id}/setup/*/*.xlf`)
441+
.pipe(i18n.prepareIslFiles(language, innoSetupConfig[language.id]))
442+
.pipe(vfs.dest(`./build/win32/i18n`));
443+
});
432444
});
433445

434446
// Sourcemaps

0 commit comments

Comments
 (0)