Issue 305 broken link because of language fixes (#322)

* without having having to worry about site design.

Let me know if double having is intentional

* distinguish case of no translation and en lang

* prettier recommends

* distinguish case of no translation and en lang

* prettier recommends

* merge with latest origin/master changes

* typo

* link with language fixes

* do not show language dropdown if only one enabled

* check translation outside of LanguageDropDown.render
This commit is contained in:
Richard Zhang 2017-12-19 17:44:43 -08:00 committed by Joel Marcey
parent 4a3da1f30a
commit a5e963dba1
8 changed files with 177 additions and 175 deletions

View file

@ -11,25 +11,12 @@ const path = require('path');
const fs = require('fs');
const glob = require('glob');
const chalk = require('chalk');
const env = require('./env');
const siteConfig = require(CWD + '/siteConfig.js');
const versionFallback = require('./versionFallback.js');
const escapeStringRegexp = require('escape-string-regexp');
const ENABLE_VERSIONING = fs.existsSync(CWD + '/versions.json');
let languages;
if (fs.existsSync(CWD + '/languages.js')) {
languages = require(CWD + '/languages.js');
} else {
languages = [
{
enabled: true,
name: 'English',
tag: 'en',
},
];
}
// Can have a custom docs path. Top level folder still needs to be in directory
// at the same level as `website`, not inside `website`.
// e.g., docs/whereDocsReallyExist
@ -129,11 +116,8 @@ function processMetadata(file) {
'/' + escapeStringRegexp(getDocsPath()) + '/(.*)/.*/'
);
let language = 'en';
const match = regexSubFolder.exec(file);
if (match) {
language = match[1];
}
let language = match ? match[1] : 'en';
const metadata = result.metadata;
const rawContent = result.rawContent;
@ -149,28 +133,20 @@ function processMetadata(file) {
metadata.title = metadata.id;
}
if (languages.length === 1 && !siteConfig.useEnglishUrl) {
metadata.permalink = 'docs/' + metadata.id + '.html';
} else {
metadata.permalink = 'docs/' + language + '/' + metadata.id + '.html';
const langPart =
env.translation.enabled || siteConfig.useEnglishUrl ? language + '/' : '';
let versionPart = '';
if (env.versioning.enabled) {
metadata.version = 'next';
versionPart = 'next/';
}
if (ENABLE_VERSIONING) {
metadata.version = 'next';
if (languages.length === 1 && !siteConfig.useEnglishUrl) {
metadata.permalink = metadata.permalink.replace('docs/', 'docs/next/');
} else {
metadata.permalink = metadata.permalink.replace(
'docs/' + language + '/',
'docs/' + language + '/next/'
);
}
}
metadata.permalink = 'docs/' + langPart + versionPart + metadata.id + '.html';
// change ids previous, next
metadata.localized_id = metadata.id;
metadata.id = language + '-' + metadata.id;
metadata.language = language;
metadata.id = (env.translation.enabled ? language + '-' : '') + metadata.id;
metadata.language = env.translation.enabled ? language : 'en';
const order = readSidebar();
const id = metadata.localized_id;
@ -181,11 +157,13 @@ function processMetadata(file) {
if (order[id].next) {
metadata.next_id = order[id].next;
metadata.next = language + '-' + order[id].next;
metadata.next =
(env.translation.enabled ? language + '-' : '') + order[id].next;
}
if (order[id].previous) {
metadata.previous_id = order[id].previous;
metadata.previous = language + '-' + order[id].previous;
metadata.previous =
(env.translation.enabled ? language + '-' : '') + order[id].previous;
}
}
@ -204,10 +182,9 @@ function generateMetadataDocs() {
const regexSubFolder = /translated_docs\/(.*)\/.*/;
const enabledLanguages = [];
languages.filter(lang => lang.enabled).map(lang => {
enabledLanguages.push(lang.tag);
});
const enabledLanguages = env.translation
.enabledLanguages()
.map(language => language.tag);
const metadatas = {};
const defaultMetadatas = {};