mirror of
https://github.com/Snigdha-OS/documentation.git
synced 2025-09-09 19:44:56 +02:00
169 lines
6.9 KiB
JavaScript
169 lines
6.9 KiB
JavaScript
"use strict";
|
|
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.translateLoadedContent = exports.getLoadedContentTranslationFiles = void 0;
|
|
const tslib_1 = require("tslib");
|
|
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
const utils_1 = require("@docusaurus/utils");
|
|
const constants_1 = require("./constants");
|
|
const utils_2 = require("./sidebars/utils");
|
|
function getVersionFileName(versionName) {
|
|
if (versionName === constants_1.CURRENT_VERSION_NAME) {
|
|
return versionName;
|
|
}
|
|
// I don't like this "version-" prefix,
|
|
// but it's for consistency with site/versioned_docs
|
|
return `version-${versionName}`;
|
|
}
|
|
function getSidebarTranslationFileContent(sidebar, sidebarName) {
|
|
const categories = (0, utils_2.collectSidebarCategories)(sidebar);
|
|
const categoryContent = Object.fromEntries(categories.flatMap((category) => {
|
|
const entries = [];
|
|
entries.push([
|
|
`sidebar.${sidebarName}.category.${category.label}`,
|
|
{
|
|
message: category.label,
|
|
description: `The label for category ${category.label} in sidebar ${sidebarName}`,
|
|
},
|
|
]);
|
|
if (category.link?.type === 'generated-index') {
|
|
if (category.link.title) {
|
|
entries.push([
|
|
`sidebar.${sidebarName}.category.${category.label}.link.generated-index.title`,
|
|
{
|
|
message: category.link.title,
|
|
description: `The generated-index page title for category ${category.label} in sidebar ${sidebarName}`,
|
|
},
|
|
]);
|
|
}
|
|
if (category.link.description) {
|
|
entries.push([
|
|
`sidebar.${sidebarName}.category.${category.label}.link.generated-index.description`,
|
|
{
|
|
message: category.link.description,
|
|
description: `The generated-index page description for category ${category.label} in sidebar ${sidebarName}`,
|
|
},
|
|
]);
|
|
}
|
|
}
|
|
return entries;
|
|
}));
|
|
const links = (0, utils_2.collectSidebarLinks)(sidebar);
|
|
const linksContent = Object.fromEntries(links.map((link) => [
|
|
`sidebar.${sidebarName}.link.${link.label}`,
|
|
{
|
|
message: link.label,
|
|
description: `The label for link ${link.label} in sidebar ${sidebarName}, linking to ${link.href}`,
|
|
},
|
|
]));
|
|
const docs = (0, utils_2.collectSidebarDocItems)(sidebar)
|
|
.concat((0, utils_2.collectSidebarRefs)(sidebar))
|
|
.filter((item) => item.translatable);
|
|
const docLinksContent = Object.fromEntries(docs.map((doc) => [
|
|
`sidebar.${sidebarName}.doc.${doc.label}`,
|
|
{
|
|
message: doc.label,
|
|
description: `The label for the doc item ${doc.label} in sidebar ${sidebarName}, linking to the doc ${doc.id}`,
|
|
},
|
|
]));
|
|
return (0, utils_1.mergeTranslations)([categoryContent, linksContent, docLinksContent]);
|
|
}
|
|
function translateSidebar({ sidebar, sidebarName, sidebarsTranslations, }) {
|
|
function transformSidebarCategoryLink(category) {
|
|
if (!category.link) {
|
|
return undefined;
|
|
}
|
|
if (category.link.type === 'generated-index') {
|
|
const title = sidebarsTranslations[`sidebar.${sidebarName}.category.${category.label}.link.generated-index.title`]?.message ?? category.link.title;
|
|
const description = sidebarsTranslations[`sidebar.${sidebarName}.category.${category.label}.link.generated-index.description`]?.message ?? category.link.description;
|
|
return {
|
|
...category.link,
|
|
title,
|
|
description,
|
|
};
|
|
}
|
|
return category.link;
|
|
}
|
|
return (0, utils_2.transformSidebarItems)(sidebar, (item) => {
|
|
if (item.type === 'category') {
|
|
const link = transformSidebarCategoryLink(item);
|
|
return {
|
|
...item,
|
|
label: sidebarsTranslations[`sidebar.${sidebarName}.category.${item.label}`]
|
|
?.message ?? item.label,
|
|
...(link && { link }),
|
|
};
|
|
}
|
|
if (item.type === 'link') {
|
|
return {
|
|
...item,
|
|
label: sidebarsTranslations[`sidebar.${sidebarName}.link.${item.label}`]
|
|
?.message ?? item.label,
|
|
};
|
|
}
|
|
if ((item.type === 'doc' || item.type === 'ref') && item.translatable) {
|
|
return {
|
|
...item,
|
|
label: sidebarsTranslations[`sidebar.${sidebarName}.doc.${item.label}`]
|
|
?.message ?? item.label,
|
|
};
|
|
}
|
|
return item;
|
|
});
|
|
}
|
|
function getSidebarsTranslations(version) {
|
|
return (0, utils_1.mergeTranslations)(Object.entries(version.sidebars).map(([sidebarName, sidebar]) => getSidebarTranslationFileContent(sidebar, sidebarName)));
|
|
}
|
|
function translateSidebars(version, sidebarsTranslations) {
|
|
return lodash_1.default.mapValues(version.sidebars, (sidebar, sidebarName) => translateSidebar({
|
|
sidebar,
|
|
sidebarName,
|
|
sidebarsTranslations,
|
|
}));
|
|
}
|
|
function getVersionTranslationFiles(version) {
|
|
const versionTranslations = {
|
|
'version.label': {
|
|
message: version.label,
|
|
description: `The label for version ${version.versionName}`,
|
|
},
|
|
};
|
|
const sidebarsTranslations = getSidebarsTranslations(version);
|
|
return [
|
|
{
|
|
path: getVersionFileName(version.versionName),
|
|
content: (0, utils_1.mergeTranslations)([versionTranslations, sidebarsTranslations]),
|
|
},
|
|
];
|
|
}
|
|
function translateVersion(version, translationFiles) {
|
|
const versionTranslations = translationFiles[getVersionFileName(version.versionName)].content;
|
|
return {
|
|
...version,
|
|
label: versionTranslations['version.label']?.message ?? version.label,
|
|
sidebars: translateSidebars(version, versionTranslations),
|
|
};
|
|
}
|
|
function getVersionsTranslationFiles(versions) {
|
|
return versions.flatMap(getVersionTranslationFiles);
|
|
}
|
|
function translateVersions(versions, translationFiles) {
|
|
return versions.map((version) => translateVersion(version, translationFiles));
|
|
}
|
|
function getLoadedContentTranslationFiles(loadedContent) {
|
|
return getVersionsTranslationFiles(loadedContent.loadedVersions);
|
|
}
|
|
exports.getLoadedContentTranslationFiles = getLoadedContentTranslationFiles;
|
|
function translateLoadedContent(loadedContent, translationFiles) {
|
|
const translationFilesMap = lodash_1.default.keyBy(translationFiles, (f) => f.path);
|
|
return {
|
|
loadedVersions: translateVersions(loadedContent.loadedVersions, translationFilesMap),
|
|
};
|
|
}
|
|
exports.translateLoadedContent = translateLoadedContent;
|