mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-25 05:57:53 +02:00
Integrate handling of translation tag into static html building, add default description to translate tags
This commit is contained in:
parent
ed648074f2
commit
30a8ff329a
4 changed files with 61 additions and 14 deletions
|
@ -22,6 +22,7 @@
|
|||
const glob = require('glob');
|
||||
const Site = require('../core/Site.js');
|
||||
const siteConfig = require(CWD + '/siteConfig.js');
|
||||
const translate = require('./translate.js');
|
||||
let languages;
|
||||
if (fs.existsSync(CWD + '/languages.js')) {
|
||||
languages = require(CWD + '/languages.js');
|
||||
|
@ -224,26 +225,47 @@
|
|||
files = glob.sync(CWD + '/pages/**');
|
||||
files.forEach(file => {
|
||||
if (file.match(/\.js$/)) {
|
||||
let parts = file.split('pages');
|
||||
let tempFile = __dirname +'/../pages' + parts[1];
|
||||
/* make temp file for sake of require paths */
|
||||
const parts = file.split('pages');
|
||||
let tempFile = __dirname + '/../pages' + parts[1];
|
||||
tempFile = tempFile.replace(path.basename(file), 'temp' + path.basename(file));
|
||||
mkdirp.sync(tempFile.replace(new RegExp('/[^/]*$'), ''));
|
||||
fs.copySync(file, tempFile);
|
||||
|
||||
let language = 'en';
|
||||
const ReactComp = require(tempFile);
|
||||
|
||||
let targetFile = __dirname + '/../../build/' + siteConfig.projectName + '/' + parts[1];
|
||||
targetFile = targetFile.replace(/\.js$/, '.html');
|
||||
|
||||
const regexLang = /\/pages\/(.*)\//;
|
||||
const match = regexLang.exec(file);
|
||||
let langParts = match[1].split('/');
|
||||
for (let i = 0; i < langParts.length; i++) {
|
||||
if (enabledLanguages.indexOf(langParts[i]) !== -1) {
|
||||
language = langParts[i];
|
||||
const langParts = match[1].split('/');
|
||||
if (langParts.indexOf('en') !== -1) {
|
||||
/* copy and compile a page for each enabled language from the English file */
|
||||
for (let i = 0; i < enabledLanguages.length; i++) {
|
||||
let language = enabledLanguages[i];
|
||||
/* skip conversion from english file if a file exists for this language */
|
||||
if (language !== 'en' && fs.existsSync(file.replace('/en/', '/' + language + '/'))) {
|
||||
continue;
|
||||
}
|
||||
translate.setLanguage(language);
|
||||
const str = renderToStaticMarkup(<Site language={language} config={siteConfig}><ReactComp language={language}/></Site>);
|
||||
writeFileAndCreateFolder(targetFile.replace('/en/', '/' + language + '/'), str);
|
||||
}
|
||||
|
||||
}
|
||||
/* allow for rendering of other files not in pages/en folder */
|
||||
else {
|
||||
let language = 'en';
|
||||
for (let i = 0; i < langParts.length; i++) {
|
||||
if (enabledLanguages.indexOf(langParts[i]) !== -1) {
|
||||
language = langParts[i];
|
||||
}
|
||||
}
|
||||
translate.setLanguage(language);
|
||||
const str = renderToStaticMarkup(<Site language={language} config={siteConfig}><ReactComp language={language}/></Site>);
|
||||
writeFileAndCreateFolder(targetFile, str);
|
||||
}
|
||||
let targetFile = __dirname + '/../../build' + '/' + siteConfig.projectName + '/' + parts[1];
|
||||
targetFile = targetFile.replace(/\.js$/, '.html');
|
||||
const ReactComp = require(tempFile);
|
||||
const str = renderToStaticMarkup(<Site language={language} config={siteConfig}><ReactComp language={language}/></Site>);
|
||||
writeFileAndCreateFolder(targetFile, str);
|
||||
|
||||
fs.removeSync(tempFile);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue