diff --git a/lib/core/nav/HeaderNav.js b/lib/core/nav/HeaderNav.js index 1278ae168d..b44d60d775 100644 --- a/lib/core/nav/HeaderNav.js +++ b/lib/core/nav/HeaderNav.js @@ -13,6 +13,7 @@ const siteConfig = require(CWD + "/siteConfig.js"); const translation = require("../../server/translation.js"); const translate = require("../../server/translate.js").translate; +const setLanguage = require("../../server/translate.js").setLanguage; const ENABLE_TRANSLATION = fs.existsSync(CWD + "/languages.js"); const ENABLE_VERSIONING = fs.existsSync(CWD + "/versions.json"); @@ -20,7 +21,6 @@ let versions; if (ENABLE_VERSIONING) { versions = require(CWD + "/versions.json"); } -require("../../server/readMetadata.js").generateMetadataDocs(); const Metadata = require("../metadata.js"); // language dropdown nav item for when translations are enabled @@ -28,6 +28,7 @@ class LanguageDropDown extends React.Component { render() { const enabledLanguages = []; let currentLanguage = "English"; + setLanguage(this.props.language); let helpTranslateString = translate( "Help Translate|recruit community translators for your project" ); diff --git a/lib/server/readMetadata.js b/lib/server/readMetadata.js index 7c71981c47..792afc9a5c 100644 --- a/lib/server/readMetadata.js +++ b/lib/server/readMetadata.js @@ -181,6 +181,7 @@ function processMetadata(file) { // process metadata for all docs and save into core/metadata.js function generateMetadataDocs() { + console.log("Generating Metadata for Docs...."); const order = readSidebar(); const regexSubFolder = /translated_docs\/(.*)\/.*/; @@ -191,6 +192,7 @@ function generateMetadataDocs() { }); const metadatas = {}; + const defaultMetadatas = {}; // metadata for english files let files = glob.sync(CWD + "/../docs/**"); @@ -206,6 +208,34 @@ function generateMetadataDocs() { } let metadata = res.metadata; metadatas[metadata.id] = metadata; + + // create a default list of documents for each enabled language based on docs in English + // these will get replaced if/when the localized file is downloaded from crowdin + enabledLanguages + .filter(currentLanguage => { + return currentLanguage != "en"; + }) + .map(currentLanguage => { + let baseMetadata = Object.assign({}, metadata); + baseMetadata["id"] = baseMetadata["id"] + .toString() + .replace(/^en-/, currentLanguage + "-"); + if (baseMetadata["permalink"]) + baseMetadata["permalink"] = baseMetadata["permalink"] + .toString() + .replace(/^docs\/en\//, "docs/" + currentLanguage + "/"); + if (baseMetadata["next"]) + baseMetadata["next"] = baseMetadata["next"] + .toString() + .replace(/^en-/, currentLanguage + "-"); + if (baseMetadata["previous"]) + baseMetadata["previous"] = baseMetadata["previous"] + .toString() + .replace(/^en-/, currentLanguage + "-"); + baseMetadata["language"] = currentLanguage; + defaultMetadatas[baseMetadata["id"]] = baseMetadata; + }); + Object.assign(metadatas, defaultMetadatas); } });