mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-28 00:17:14 +02:00
Revert "Fixing Issue 305 - broken links because of language (#316)"
This reverts commit 7dc6c6c2da
.
This commit is contained in:
parent
7dc6c6c2da
commit
18c9a2ab31
7 changed files with 163 additions and 161 deletions
|
@ -20,15 +20,30 @@ function execute() {
|
|||
const glob = require('glob');
|
||||
const chalk = require('chalk');
|
||||
const Site = require('../core/Site.js');
|
||||
const env = require('./env.js');
|
||||
const siteConfig = require(CWD + '/siteConfig.js');
|
||||
const translate = require('./translate.js');
|
||||
const versionFallback = require('./versionFallback.js');
|
||||
|
||||
const feed = require('./feed.js');
|
||||
const sitemap = require('./sitemap.js');
|
||||
|
||||
const join = path.join;
|
||||
|
||||
const ENABLE_TRANSLATION = fs.existsSync(join(CWD, 'languages.js'));
|
||||
const ENABLE_VERSIONING = fs.existsSync(join(CWD, 'versions.json'));
|
||||
|
||||
let languages;
|
||||
if (ENABLE_TRANSLATION) {
|
||||
languages = require(CWD + '/languages.js');
|
||||
} else {
|
||||
languages = [
|
||||
{
|
||||
enabled: true,
|
||||
name: 'English',
|
||||
tag: 'en',
|
||||
},
|
||||
];
|
||||
}
|
||||
// create the folder path for a file if it does not exist, then write the file
|
||||
function writeFileAndCreateFolder(file, content) {
|
||||
mkdirp.sync(file.replace(new RegExp('/[^/]*$'), ''));
|
||||
|
@ -72,9 +87,10 @@ function execute() {
|
|||
console.log('generate.js triggered...');
|
||||
|
||||
// array of tags of enabled languages
|
||||
const enabledLanguages = env.translation
|
||||
.enabledLanguages()
|
||||
.map(lang => lang.tag);
|
||||
const enabledLanguages = [];
|
||||
languages.filter(lang => lang.enabled).map(lang => {
|
||||
enabledLanguages.push(lang.tag);
|
||||
});
|
||||
|
||||
readMetadata.generateMetadataDocs();
|
||||
const Metadata = require('../core/metadata.js');
|
||||
|
@ -118,7 +134,7 @@ function execute() {
|
|||
// determine what file to use according to its id
|
||||
let file;
|
||||
if (metadata.original_id) {
|
||||
if (env.translation.enabled && metadata.language !== 'en') {
|
||||
if (ENABLE_TRANSLATION && metadata.language !== 'en') {
|
||||
file = join(CWD, 'translated_docs', metadata.language, metadata.source);
|
||||
} else {
|
||||
file = join(CWD, 'versioned_docs', metadata.source);
|
||||
|
@ -145,7 +161,12 @@ function execute() {
|
|||
rawContent = insertTableOfContents(rawContent);
|
||||
}
|
||||
|
||||
let latestVersion = env.versioning.latestVersion;
|
||||
let latestVersion;
|
||||
if (ENABLE_VERSIONING) {
|
||||
latestVersion = JSON.parse(
|
||||
fs.readFileSync(join(CWD, 'versions.json'), 'utf8')
|
||||
)[0];
|
||||
}
|
||||
|
||||
// replace any links to markdown files to their website html links
|
||||
Object.keys(mdToHtml).forEach(function(key, index) {
|
||||
|
@ -186,10 +207,7 @@ function execute() {
|
|||
writeFileAndCreateFolder(targetFile, str);
|
||||
|
||||
// generate english page redirects when languages are enabled
|
||||
if (
|
||||
env.translation.enabled &&
|
||||
metadata.permalink.indexOf('docs/en') !== -1
|
||||
) {
|
||||
if (ENABLE_TRANSLATION && metadata.permalink.indexOf('docs/en') !== -1) {
|
||||
const redirectComp = (
|
||||
<Redirect
|
||||
metadata={metadata}
|
||||
|
@ -425,25 +443,21 @@ function execute() {
|
|||
str
|
||||
);
|
||||
}
|
||||
|
||||
// write to base level
|
||||
let language = '';
|
||||
const str = renderToStaticMarkup(
|
||||
<Site language={language} config={siteConfig}>
|
||||
<ReactComp language={language} />
|
||||
</Site>
|
||||
);
|
||||
writeFileAndCreateFolder(targetFile.replace('/en/', '/'), str);
|
||||
} else {
|
||||
// allow for rendering of other files not in pages/en folder
|
||||
let language = '';
|
||||
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.replace('/en/', '/'), str);
|
||||
writeFileAndCreateFolder(targetFile, str);
|
||||
}
|
||||
fs.removeSync(tempFile);
|
||||
} else if (!fs.lstatSync(file).isDirectory()) {
|
||||
|
@ -455,6 +469,15 @@ function execute() {
|
|||
}
|
||||
});
|
||||
|
||||
// copy html files in 'en' to base level as well
|
||||
files = glob.sync(join(buildDir, 'en', '**'));
|
||||
files.forEach(file => {
|
||||
let targetFile = file.replace(join(buildDir, 'en'), join(buildDir));
|
||||
if (file.match(/\.html$/)) {
|
||||
fs.copySync(file, targetFile);
|
||||
}
|
||||
});
|
||||
|
||||
// Generate CNAME file if a custom domain is specified in siteConfig
|
||||
if (siteConfig.cname) {
|
||||
let targetFile = join(buildDir, 'CNAME');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue