function getSidebarTranslationFileContent()

in packages/docusaurus-plugin-content-docs/src/translations.ts [100:157]


function getSidebarTranslationFileContent(
  sidebar: Sidebar,
  sidebarName: string,
): TranslationFileContent {
  type TranslationMessageEntry = [string, TranslationMessage];

  const categories = collectSidebarCategories(sidebar);

  const categoryContent: TranslationFileContent = Object.fromEntries(
    categories.flatMap((category) => {
      const entries: TranslationMessageEntry[] = [];

      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 = collectSidebarLinks(sidebar);
  const linksContent: TranslationFileContent = 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}`,
      },
    ]),
  );

  return mergeTranslations([categoryContent, linksContent]);
}