Skip to content

Feature/add i18n support#363

Open
TrueBankai416 wants to merge 4 commits intomainfrom
feature/add-i18n-support
Open

Feature/add i18n support#363
TrueBankai416 wants to merge 4 commits intomainfrom
feature/add-i18n-support

Conversation

@TrueBankai416
Copy link
Copy Markdown
Owner

No description provided.

- Configure i18n in docusaurus.config.ts with English and Spanish locales
- Add locale dropdown to navbar for language switching
- Update search plugin to support multiple languages
- Generate initial translation files for Spanish (es)
- Create comprehensive I18N_SETUP.md documentation guide
- Document known sidebar translation key conflicts and solutions

Note: Sidebar key conflicts need to be resolved before full translation workflow can be completed. See I18N_SETUP.md for details and solutions.
- Add unique 'key' attributes to all duplicate category _category_.json files
- Fixes 'Docs', 'Installation', 'Troubleshooting', 'qBittorrent', and 'Networking' duplicates
- Each category now has a unique identifier for proper i18n translation
- Generate Spanish translation files including 149 sidebar translations
- Successfully resolves translation key conflict errors in write-translations command

Sidebar categories with unique keys added:
- discord-docs, docker-docs, docusaurus-docs
- arr-suite-docs, arr-suite-qbittorrent, node-red-docs
- reverse-proxy-docs, vpn-docs, github-docs, hdd-tools-docs
- jellyfin-docs, jellyfin-installation
- kms-docs, office-docs, windows-docs
- networking-docs, nextcloud-docs, nextcloud-installation
- nextcloud-troubleshooting, nextcloudpi-docs
- proxmox-docs, proxmox-networking
- reverse-proxy-reverse-docs, nginx-troubleshooting
- torrent-qbittorrent, torrent-qbittorrent-docs, ubiquiti-docs
- Mark Option 1 implementation as complete
- Document all 23 categories with unique keys added
- Update translation workflow section to reflect successful generation
- Update next steps to reflect current status
- Add translation counts for generated files (94, 6, 9, 149)
Copilot AI review requested due to automatic review settings January 30, 2026 22:36
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages bot commented Jan 30, 2026

Deploying bankaitechdocs with  Cloudflare Pages  Cloudflare Pages

Latest commit: e91d3d7
Status: ✅  Deploy successful!
Preview URL: https://27f6c4cd.bankaitechdocs.pages.dev
Branch Preview URL: https://feature-add-i18n-support.bankaitechdocs.pages.dev

View logs

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds internationalization (i18n) support for Spanish language to the Bankai-Tech documentation site built with Docusaurus. The PR sets up the infrastructure for Spanish translations but does not include complete Spanish translations of the content.

Changes:

  • Added i18n configuration to support English and Spanish locales with a locale dropdown in the navbar
  • Resolved sidebar translation key conflicts by adding unique key attributes to duplicate category metadata files
  • Created Spanish translation files (navbar, footer, sidebar categories, and UI components) - though most remain untranslated
  • Added comprehensive documentation guide (I18N_SETUP.md) explaining the i18n setup and translation workflow

Reviewed changes

Copilot reviewed 35 out of 35 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
docusaurus.config.ts Added i18n configuration with Spanish locale support, locale dropdown in navbar, and updated search plugin for multiple languages
i18n/es/docusaurus-theme-classic/navbar.json Created navbar translation file (currently in English, needs Spanish translation)
i18n/es/docusaurus-theme-classic/footer.json Created footer translation file (currently in English, needs Spanish translation)
i18n/es/docusaurus-plugin-content-docs/current.json Created sidebar category translation file (currently in English, needs Spanish translation)
i18n/es/code.json Created UI component translation file (partially translated to Spanish)
docs/*/Docs/category.json Added unique key attributes to resolve translation key conflicts across multiple documentation categories
I18N_SETUP.md Comprehensive documentation guide for i18n setup, translation workflow, and best practices

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +1 to +372
{
"theme.ErrorPageContent.title": {
"message": "Esta página ha fallado.",
"description": "The title of the fallback page when the page crashed"
},
"theme.BackToTopButton.buttonAriaLabel": {
"message": "Volver al principio",
"description": "The ARIA label for the back to top button"
},
"theme.blog.archive.title": {
"message": "Archivo",
"description": "The page & hero title of the blog archive page"
},
"theme.blog.archive.description": {
"message": "Archivo",
"description": "The page & hero description of the blog archive page"
},
"theme.blog.paginator.navAriaLabel": {
"message": "Navegación por la página de la lista de blogs ",
"description": "The ARIA label for the blog pagination"
},
"theme.blog.paginator.newerEntries": {
"message": "Entradas más recientes",
"description": "The label used to navigate to the newer blog posts page (previous page)"
},
"theme.blog.paginator.olderEntries": {
"message": "Entradas más antiguas",
"description": "The label used to navigate to the older blog posts page (next page)"
},
"theme.blog.post.paginator.navAriaLabel": {
"message": "Barra de paginación de publicaciones del blog",
"description": "The ARIA label for the blog posts pagination"
},
"theme.blog.post.paginator.newerPost": {
"message": "Publicación más reciente",
"description": "The blog post button label to navigate to the newer/previous post"
},
"theme.blog.post.paginator.olderPost": {
"message": "Publicación más antigua",
"description": "The blog post button label to navigate to the older/next post"
},
"theme.tags.tagsPageLink": {
"message": "Ver Todas las Etiquetas",
"description": "The label of the link targeting the tag list page"
},
"theme.colorToggle.ariaLabel.mode.system": {
"message": "system mode",
"description": "The name for the system color mode"
},
"theme.colorToggle.ariaLabel.mode.light": {
"message": "modo claro",
"description": "The name for the light color mode"
},
"theme.colorToggle.ariaLabel.mode.dark": {
"message": "modo oscuro",
"description": "The name for the dark color mode"
},
"theme.colorToggle.ariaLabel": {
"message": "Cambiar entre modo oscuro y claro (actualmente {mode})",
"description": "The ARIA label for the color mode toggle"
},
"theme.docs.DocCard.categoryDescription.plurals": {
"message": "1 artículo|{count} artículos",
"description": "The default description for a category card in the generated index about how many items this category includes"
},
"theme.docs.breadcrumbs.navAriaLabel": {
"message": "Rastro de navegación",
"description": "The ARIA label for the breadcrumbs"
},
"theme.docs.paginator.navAriaLabel": {
"message": "Página del documento",
"description": "The ARIA label for the docs pagination"
},
"theme.docs.paginator.previous": {
"message": "Anterior",
"description": "The label used to navigate to the previous doc"
},
"theme.docs.paginator.next": {
"message": "Siguiente",
"description": "The label used to navigate to the next doc"
},
"theme.docs.tagDocListPageTitle.nDocsTagged": {
"message": "Un documento etiquetado|{count} documentos etiquetados",
"description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
},
"theme.docs.tagDocListPageTitle": {
"message": "{nDocsTagged} con \"{tagName}\"",
"description": "The title of the page for a docs tag"
},
"theme.docs.versions.unreleasedVersionLabel": {
"message": "Esta es la documentación sin publicar para {siteTitle}, versión {versionLabel}.",
"description": "The label used to tell the user that he's browsing an unreleased doc version"
},
"theme.docs.versions.unmaintainedVersionLabel": {
"message": "Esta es la documentación para {siteTitle} {versionLabel}, que ya no se mantiene activamente.",
"description": "The label used to tell the user that he's browsing an unmaintained doc version"
},
"theme.docs.versions.latestVersionSuggestionLabel": {
"message": "Para la documentación actualizada, vea {latestVersionLink} ({versionLabel}).",
"description": "The label used to tell the user to check the latest version"
},
"theme.docs.versions.latestVersionLinkLabel": {
"message": "última versión",
"description": "The label used for the latest version suggestion link label"
},
"theme.docs.versionBadge.label": {
"message": "Version: {versionLabel}"
},
"theme.common.editThisPage": {
"message": "Editar esta página",
"description": "The link label to edit the current page"
},
"theme.common.headingLinkTitle": {
"message": "Enlace directo al {heading}",
"description": "Title for link to heading"
},
"theme.lastUpdated.atDate": {
"message": " en {date}",
"description": "The words used to describe on which date a page has been last updated"
},
"theme.lastUpdated.byUser": {
"message": " por {user}",
"description": "The words used to describe by who the page has been last updated"
},
"theme.lastUpdated.lastUpdatedAtBy": {
"message": "Última actualización{atDate}{byUser}",
"description": "The sentence used to display when a page has been last updated, and by who"
},
"theme.NotFound.title": {
"message": "Página No Encontrada",
"description": "The title of the 404 page"
},
"theme.navbar.mobileVersionsDropdown.label": {
"message": "Versiones",
"description": "The label for the navbar versions dropdown on mobile view"
},
"theme.tags.tagsListLabel": {
"message": "Etiquetas:",
"description": "The label alongside a tag list"
},
"theme.AnnouncementBar.closeButtonAriaLabel": {
"message": "Cerrar",
"description": "The ARIA label for close button of announcement bar"
},
"theme.admonition.caution": {
"message": "precaución",
"description": "The default label used for the Caution admonition (:::caution)"
},
"theme.admonition.danger": {
"message": "peligro",
"description": "The default label used for the Danger admonition (:::danger)"
},
"theme.admonition.info": {
"message": "info",
"description": "The default label used for the Info admonition (:::info)"
},
"theme.admonition.note": {
"message": "nota",
"description": "The default label used for the Note admonition (:::note)"
},
"theme.admonition.tip": {
"message": "tip",
"description": "The default label used for the Tip admonition (:::tip)"
},
"theme.admonition.warning": {
"message": "aviso",
"description": "The default label used for the Warning admonition (:::warning)"
},
"theme.blog.sidebar.navAriaLabel": {
"message": "Navegación de publicaciones recientes",
"description": "The ARIA label for recent posts in the blog sidebar"
},
"theme.DocSidebarItem.expandCategoryAriaLabel": {
"message": "Ampliar la categoría '{label}' de la barra lateral",
"description": "The ARIA label to expand the sidebar category"
},
"theme.DocSidebarItem.collapseCategoryAriaLabel": {
"message": "Colapsar categoría '{label}' de la barra lateral",
"description": "The ARIA label to collapse the sidebar category"
},
"theme.IconExternalLink.ariaLabel": {
"message": "(opens in new tab)",
"description": "The ARIA label for the external link icon"
},
"theme.NavBar.navAriaLabel": {
"message": "Principal",
"description": "The ARIA label for the main navigation"
},
"theme.NotFound.p1": {
"message": "No pudimos encontrar lo que buscaba.",
"description": "The first paragraph of the 404 page"
},
"theme.NotFound.p2": {
"message": "Comuníquese con el dueño del sitio que le proporcionó la URL original y hágale saber que su vínculo está roto.",
"description": "The 2nd paragraph of the 404 page"
},
"theme.TOCCollapsible.toggleButtonLabel": {
"message": "En esta página",
"description": "The label used by the button on the collapsible TOC component"
},
"theme.navbar.mobileLanguageDropdown.label": {
"message": "Idiomas",
"description": "The label for the mobile language switcher dropdown"
},
"theme.blog.post.readMore": {
"message": "Leer Más",
"description": "The label used in blog post item excerpts to link to full blog posts"
},
"theme.blog.post.readMoreLabel": {
"message": "Leer más acerca de {title}",
"description": "The ARIA label for the link to full blog posts from excerpts"
},
"theme.blog.post.readingTime.plurals": {
"message": "Lectura de un minuto|{readingTime} min de lectura",
"description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
},
"theme.CodeBlock.copy": {
"message": "Copiar",
"description": "The copy button label on code blocks"
},
"theme.CodeBlock.copied": {
"message": "Copiado",
"description": "The copied button label on code blocks"
},
"theme.CodeBlock.copyButtonAriaLabel": {
"message": "Copiar código",
"description": "The ARIA label for copy code blocks button"
},
"theme.CodeBlock.wordWrapToggle": {
"message": "Alternar ajuste de palabras",
"description": "The title attribute for toggle word wrapping button of code block lines"
},
"theme.docs.breadcrumbs.home": {
"message": "Página de Inicio",
"description": "The ARIA label for the home page in the breadcrumbs"
},
"theme.docs.sidebar.collapseButtonTitle": {
"message": "Colapsar barra lateral",
"description": "The title attribute for collapse button of doc sidebar"
},
"theme.docs.sidebar.collapseButtonAriaLabel": {
"message": "Colapsar barra lateral",
"description": "The title attribute for collapse button of doc sidebar"
},
"theme.docs.sidebar.navAriaLabel": {
"message": "Barra lateral de Documentos",
"description": "The ARIA label for the sidebar navigation"
},
"theme.docs.sidebar.closeSidebarButtonAriaLabel": {
"message": "Cerrar barra de lateral",
"description": "The ARIA label for close button of mobile sidebar"
},
"theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
"message": "Alternar barra lateral",
"description": "The ARIA label for hamburger menu button of mobile navigation"
},
"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
"message": "← Volver al menú principal",
"description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
},
"theme.navbar.mobileDropdown.collapseButton.expandAriaLabel": {
"message": "Expand the dropdown",
"description": "The ARIA label of the button to expand the mobile dropdown navbar item"
},
"theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel": {
"message": "Collapse the dropdown",
"description": "The ARIA label of the button to collapse the mobile dropdown navbar item"
},
"theme.docs.sidebar.expandButtonTitle": {
"message": "Expandir barra lateral",
"description": "The ARIA label and title attribute for expand button of doc sidebar"
},
"theme.docs.sidebar.expandButtonAriaLabel": {
"message": "Expandir barra lateral",
"description": "The ARIA label and title attribute for expand button of doc sidebar"
},
"theme.Playground.liveEditor": {
"message": "Editor en vivo",
"description": "The live editor label of the live codeblocks"
},
"theme.Playground.result": {
"message": "Resultado",
"description": "The result label of the live codeblocks"
},
"theme.SearchPage.existingResultsTitle": {
"message": "Search results for \"{query}\"",
"description": "The search page title for non-empty query"
},
"theme.SearchPage.emptyResultsTitle": {
"message": "Search the documentation",
"description": "The search page title for empty query"
},
"theme.SearchPage.searchContext.everywhere": {
"message": "Everywhere"
},
"theme.SearchPage.documentsFound.plurals": {
"message": "1 document found|{count} documents found",
"description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
},
"theme.SearchPage.noResultsText": {
"message": "No documents were found",
"description": "The paragraph for empty search result"
},
"theme.SearchBar.noResultsText": {
"message": "No results"
},
"theme.SearchBar.seeAllOutsideContext": {
"message": "See all results outside \"{context}\""
},
"theme.SearchBar.searchInContext": {
"message": "See all results within \"{context}\""
},
"theme.SearchBar.seeAll": {
"message": "See all results"
},
"theme.SearchBar.label": {
"message": "Search",
"description": "The ARIA label and placeholder for search button"
},
"theme.blog.post.plurals": {
"message": "Una publicación|{count} publicaciones",
"description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
},
"theme.blog.tagTitle": {
"message": "{nPosts} etiquetados con \"{tagName}\"",
"description": "The title of the page for a blog tag"
},
"theme.blog.author.pageTitle": {
"message": "{authorName} - {nPosts}",
"description": "The title of the page for a blog author"
},
"theme.blog.authorsList.pageTitle": {
"message": "Authors",
"description": "The title of the authors page"
},
"theme.blog.authorsList.viewAll": {
"message": "View All Authors",
"description": "The label of the link targeting the blog authors page"
},
"theme.blog.author.noPosts": {
"message": "This author has not written any posts yet.",
"description": "The text for authors with 0 blog post"
},
"theme.contentVisibility.unlistedBanner.title": {
"message": "Página sin clasificar",
"description": "The unlisted content banner title"
},
"theme.contentVisibility.unlistedBanner.message": {
"message": "Esta página está sin clasificar. Los motores de búsqueda no la indexaran, y solo los usuarios con el enlace directo podrán acceder a esta.",
"description": "The unlisted content banner message"
},
"theme.contentVisibility.draftBanner.title": {
"message": "Draft page",
"description": "The draft content banner title"
},
"theme.contentVisibility.draftBanner.message": {
"message": "This page is a draft. It will only be visible in dev and be excluded from the production build.",
"description": "The draft content banner message"
},
"theme.ErrorPageContent.tryAgain": {
"message": "Intente de nuevo",
"description": "The label of the button to try again rendering when the React error boundary captures an error"
},
"theme.common.skipToMainContent": {
"message": "Saltar al contenido principal",
"description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
},
"theme.tags.tagsPageTitle": {
"message": "Etiquetas",
"description": "The title of the tag list page"
}
}
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Multiple translation strings remain in English and need to be translated to Spanish:

  • Line 47: "system mode" should be "modo sistema"
  • Line 182: "(opens in new tab)" should be "(se abre en nueva pestaña)"
  • Lines 262-267: "Expand the dropdown" and "Collapse the dropdown" should be translated
  • Lines 286-317: All search-related messages remain in English (e.g., "Search results for", "Search the documentation", "Everywhere", "No results", "Search", etc.)
  • Lines 333-342: Author-related messages remain in English ("Authors", "View All Authors", "This author has not written any posts yet.")
  • Lines 353-358: Draft banner messages remain in English

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +598
{
"version.label": {
"message": "Next",
"description": "The label for version current"
},
"sidebar.autoSidebar.category.Docker": {
"message": "Docker",
"description": "The label for category 'Docker' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Docker.link.generated-index.description": {
"message": "Tutorials showing you how to run Self-Hosted systems using Docker.",
"description": "The generated-index page description for category 'Docker' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.docker-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Installing Docker": {
"message": "Installing Docker",
"description": "The label for category 'Installing Docker' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Installing Docker.link.generated-index.description": {
"message": "Tutorials showing you how to Install Docker.",
"description": "The generated-index page description for category 'Installing Docker' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Nextcloud": {
"message": "Nextcloud",
"description": "The label for category 'Nextcloud' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Nextcloud.link.generated-index.description": {
"message": "Tutorials showing you how to Install Nextcloud using Docker.",
"description": "The generated-index page description for category 'Nextcloud' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.nextcloud-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.nextcloud-installation": {
"message": "Installation",
"description": "The label for category 'Installation' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.nextcloud-installation.link.generated-index.description": {
"message": "How to Install Nextcloud using Docker.",
"description": "The generated-index page description for category 'Installation' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.nextcloud-troubleshooting": {
"message": "Troubleshooting",
"description": "The label for category 'Troubleshooting' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.nextcloud-troubleshooting.link.generated-index.description": {
"message": "Troubleshooting Nextcloud.",
"description": "The generated-index page description for category 'Troubleshooting' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.NextcloudPI": {
"message": "NextcloudPI",
"description": "The label for category 'NextcloudPI' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.NextcloudPI.link.generated-index.description": {
"message": "Tutorials showing you how to run NextcloudPI.",
"description": "The generated-index page description for category 'NextcloudPI' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.nextcloudpi-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Docusaurus": {
"message": "Docusaurus",
"description": "The label for category 'Docusaurus' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Docusaurus.link.generated-index.description": {
"message": "Tutorials showing you how to use Docusaurus.",
"description": "The generated-index page description for category 'Docusaurus' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.docusaurus-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.docusaurus-troubleshooting": {
"message": "Troubleshooting",
"description": "The label for category 'Troubleshooting' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.SEO": {
"message": "SEO",
"description": "The label for category 'SEO' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Styling": {
"message": "Styling",
"description": "The label for category 'Styling' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Sidebars": {
"message": "Sidebars",
"description": "The label for category 'Sidebars' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Examples": {
"message": "Examples",
"description": "The label for category 'Examples' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Examples.link.generated-index.description": {
"message": "Example configuration files and more.",
"description": "The generated-index page description for category 'Examples' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Arr Suite": {
"message": "Arr Suite",
"description": "The label for category 'Arr Suite' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Arr Suite.link.generated-index.description": {
"message": "Examples of *Arr application yaml files.",
"description": "The generated-index page description for category 'Arr Suite' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.arr-suite-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.arr-suite-qbittorrent": {
"message": "qBittorrent",
"description": "The label for category 'qBittorrent' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Full Stack": {
"message": "Full Stack",
"description": "The label for category 'Full Stack' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Jellyseerr": {
"message": "Jellyseerr",
"description": "The label for category 'Jellyseerr' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Lidarr": {
"message": "Lidarr",
"description": "The label for category 'Lidarr' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Prowlarr": {
"message": "Prowlarr",
"description": "The label for category 'Prowlarr' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Radarr": {
"message": "Radarr",
"description": "The label for category 'Radarr' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Readarr": {
"message": "Readarr",
"description": "The label for category 'Readarr' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Sonarr": {
"message": "Sonarr",
"description": "The label for category 'Sonarr' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Node-RED": {
"message": "Node-RED",
"description": "The label for category 'Node-RED' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.node-red-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Reverse Proxies": {
"message": "Reverse Proxies",
"description": "The label for category 'Reverse Proxies' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.reverse-proxy-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.VPN": {
"message": "VPN",
"description": "The label for category 'VPN' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.vpn-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Firewall": {
"message": "Firewall",
"description": "The label for category 'Firewall' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Testing": {
"message": "Testing",
"description": "The label for category 'Testing' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.MS Windows": {
"message": "MS Windows",
"description": "The label for category 'MS Windows' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.MS Windows.link.generated-index.description": {
"message": "Microsoft Windows Documentation.",
"description": "The generated-index page description for category 'MS Windows' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Local KMS": {
"message": "Local KMS",
"description": "The label for category 'Local KMS' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.kms-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Microsoft Office": {
"message": "Microsoft Office",
"description": "The label for category 'Microsoft Office' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.office-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Windows": {
"message": "Windows",
"description": "The label for category 'Windows' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.windows-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Activation": {
"message": "Activation",
"description": "The label for category 'Activation' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Windows 11": {
"message": "Windows 11",
"description": "The label for category 'Windows 11' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Editions": {
"message": "Editions",
"description": "The label for category 'Editions' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Discord": {
"message": "Discord",
"description": "The label for category 'Discord' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.discord-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Bots": {
"message": "Bots",
"description": "The label for category 'Bots' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.GitHub": {
"message": "GitHub",
"description": "The label for category 'GitHub' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.github-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.HDD Tools": {
"message": "HDD Tools",
"description": "The label for category 'HDD Tools' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.hdd-tools-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Jellyfin": {
"message": "Jellyfin",
"description": "The label for category 'Jellyfin' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.jellyfin-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.jellyfin-installation": {
"message": "Installation",
"description": "The label for category 'Installation' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.MariaDB": {
"message": "MariaDB",
"description": "The label for category 'MariaDB' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.mariadb-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Networking": {
"message": "Networking",
"description": "The label for category 'Networking' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.networking-docs": {
"message": "Networking Guides",
"description": "The label for category 'Networking Guides' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.networking-docs.link.generated-index.description": {
"message": "Comprehensive guides for Linux networking, WiFi management, proxies, and advanced networking configurations.",
"description": "The generated-index page description for category 'Networking Guides' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Storage": {
"message": "Storage",
"description": "The label for category 'Storage' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Subnets": {
"message": "Subnets",
"description": "The label for category 'Subnets' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Proxmox": {
"message": "Proxmox",
"description": "The label for category 'Proxmox' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.proxmox-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.proxmox-networking": {
"message": "Networking",
"description": "The label for category 'Networking' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.proxmox-networking.link.generated-index.description": {
"message": "Comprehensive guide to Proxmox networking including network configuration, VLANs, firewall setup, and example configurations.",
"description": "The generated-index page description for category 'Networking' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.LXC Containers": {
"message": "LXC Containers",
"description": "The label for category 'LXC Containers' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Reverse Proxy": {
"message": "Reverse Proxy",
"description": "The label for category 'Reverse Proxy' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.reverse-proxy-reverse-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Certbot": {
"message": "Certbot",
"description": "The label for category 'Certbot' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Cloudflare": {
"message": "Cloudflare",
"description": "The label for category 'Cloudflare' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Nginx": {
"message": "Nginx",
"description": "The label for category 'Nginx' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.nginx-troubleshooting": {
"message": "Troubleshooting",
"description": "The label for category 'Troubleshooting' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Torrent Clients": {
"message": "Torrent Clients",
"description": "The label for category 'Torrent Clients' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.torrent-qbittorrent": {
"message": "qBittorrent",
"description": "The label for category 'qBittorrent' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.torrent-qbittorrent-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Ubiquiti": {
"message": "Ubiquiti",
"description": "The label for category 'Ubiquiti' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.ubiquiti-docs": {
"message": "Docs",
"description": "The label for category 'Docs' in sidebar 'autoSidebar'"
},
"sidebar.autoSidebar.category.Access Points": {
"message": "Access Points",
"description": "The label for category 'Access Points' in sidebar 'autoSidebar'"
},
"sidebar.docSidebar.category.Getting Started with Docker": {
"message": "Getting Started with Docker",
"description": "The label for category 'Getting Started with Docker' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Installing Docker": {
"message": "Installing Docker",
"description": "The label for category 'Installing Docker' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Installing Docker.link.generated-index.description": {
"message": "Tutorials showing you how to Install Docker.",
"description": "The generated-index page description for category 'Installing Docker' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Nextcloud": {
"message": "Nextcloud",
"description": "The label for category 'Nextcloud' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.nextcloud-installation": {
"message": "Installation",
"description": "The label for category 'Installation' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.nextcloud-installation.link.generated-index.description": {
"message": "How to Install Nextcloud using Docker.",
"description": "The generated-index page description for category 'Installation' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.nextcloud-troubleshooting": {
"message": "Troubleshooting",
"description": "The label for category 'Troubleshooting' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.nextcloud-troubleshooting.link.generated-index.description": {
"message": "Troubleshooting Nextcloud.",
"description": "The generated-index page description for category 'Troubleshooting' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.NextcloudPI": {
"message": "NextcloudPI",
"description": "The label for category 'NextcloudPI' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.MariaDb": {
"message": "MariaDb",
"description": "The label for category 'MariaDb' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Docusaurus": {
"message": "Docusaurus",
"description": "The label for category 'Docusaurus' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.docusaurus-troubleshooting": {
"message": "Troubleshooting",
"description": "The label for category 'Troubleshooting' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.SEO": {
"message": "SEO",
"description": "The label for category 'SEO' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Styling": {
"message": "Styling",
"description": "The label for category 'Styling' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Sidebars": {
"message": "Sidebars",
"description": "The label for category 'Sidebars' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Networking": {
"message": "Networking",
"description": "The label for category 'Networking' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Networking.link.generated-index.title": {
"message": "Networking",
"description": "The generated-index page title for category 'Networking' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Networking.link.generated-index.description": {
"message": "Comprehensive guides for Linux networking, WiFi management, proxies, storage solutions, and advanced networking configurations.",
"description": "The generated-index page description for category 'Networking' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.networking-docs": {
"message": "Networking Guides",
"description": "The label for category 'Networking Guides' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.networking-docs.link.generated-index.description": {
"message": "Comprehensive guides for Linux networking, WiFi management, proxies, and advanced networking configurations.",
"description": "The generated-index page description for category 'Networking Guides' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Storage": {
"message": "Storage",
"description": "The label for category 'Storage' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Subnets": {
"message": "Subnets",
"description": "The label for category 'Subnets' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Ubiquiti": {
"message": "Ubiquiti",
"description": "The label for category 'Ubiquiti' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Access Points": {
"message": "Access Points",
"description": "The label for category 'Access Points' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Reverse Proxy": {
"message": "Reverse Proxy",
"description": "The label for category 'Reverse Proxy' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Certbot": {
"message": "Certbot",
"description": "The label for category 'Certbot' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Cloudflare": {
"message": "Cloudflare",
"description": "The label for category 'Cloudflare' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Nginx": {
"message": "Nginx",
"description": "The label for category 'Nginx' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.nginx-troubleshooting": {
"message": "Troubleshooting",
"description": "The label for category 'Troubleshooting' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Jellyfin": {
"message": "Jellyfin",
"description": "The label for category 'Jellyfin' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.jellyfin-installation": {
"message": "Installation",
"description": "The label for category 'Installation' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Torrent Clients": {
"message": "Torrent Clients",
"description": "The label for category 'Torrent Clients' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Discord": {
"message": "Discord",
"description": "The label for category 'Discord' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Bots": {
"message": "Bots",
"description": "The label for category 'Bots' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.Proxmox": {
"message": "Proxmox",
"description": "The label for category 'Proxmox' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.proxmox-networking": {
"message": "Networking",
"description": "The label for category 'Networking' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.proxmox-networking.link.generated-index.description": {
"message": "Comprehensive guide to Proxmox networking including network configuration, VLANs, firewall setup, and example configurations.",
"description": "The generated-index page description for category 'Networking' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.LXC Containers": {
"message": "LXC Containers",
"description": "The label for category 'LXC Containers' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.GitHub": {
"message": "GitHub",
"description": "The label for category 'GitHub' in sidebar 'docSidebar'"
},
"sidebar.docSidebar.category.HDD Tools": {
"message": "HDD Tools",
"description": "The label for category 'HDD Tools' in sidebar 'docSidebar'"
},
"sidebar.exampleSidebar.category.Reverse Proxy": {
"message": "Reverse Proxy",
"description": "The label for category 'Reverse Proxy' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Node-RED": {
"message": "Node-RED",
"description": "The label for category 'Node-RED' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Arr Suite": {
"message": "Arr Suite",
"description": "The label for category 'Arr Suite' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.arr-suite-qbittorrent": {
"message": "qBittorrent",
"description": "The label for category 'qBittorrent' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Full Stack": {
"message": "Full Stack",
"description": "The label for category 'Full Stack' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Jellyseerr": {
"message": "Jellyseerr",
"description": "The label for category 'Jellyseerr' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Lidarr": {
"message": "Lidarr",
"description": "The label for category 'Lidarr' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Prowlarr": {
"message": "Prowlarr",
"description": "The label for category 'Prowlarr' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Radarr": {
"message": "Radarr",
"description": "The label for category 'Radarr' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Readarr": {
"message": "Readarr",
"description": "The label for category 'Readarr' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Sonarr": {
"message": "Sonarr",
"description": "The label for category 'Sonarr' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.VPN": {
"message": "VPN",
"description": "The label for category 'VPN' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Firewall": {
"message": "Firewall",
"description": "The label for category 'Firewall' in sidebar 'exampleSidebar'"
},
"sidebar.exampleSidebar.category.Testing": {
"message": "Testing",
"description": "The label for category 'Testing' in sidebar 'exampleSidebar'"
},
"sidebar.MSwindowsSidebar.category.Windows": {
"message": "Windows",
"description": "The label for category 'Windows' in sidebar 'MSwindowsSidebar'"
},
"sidebar.MSwindowsSidebar.category.Activation": {
"message": "Activation",
"description": "The label for category 'Activation' in sidebar 'MSwindowsSidebar'"
},
"sidebar.MSwindowsSidebar.category.Windows 11": {
"message": "Windows 11",
"description": "The label for category 'Windows 11' in sidebar 'MSwindowsSidebar'"
},
"sidebar.MSwindowsSidebar.category.Editions": {
"message": "Editions",
"description": "The label for category 'Editions' in sidebar 'MSwindowsSidebar'"
},
"sidebar.MSwindowsSidebar.category.Microsoft Office": {
"message": "Microsoft Office",
"description": "The label for category 'Microsoft Office' in sidebar 'MSwindowsSidebar'"
},
"sidebar.MSwindowsSidebar.category.Local KMS": {
"message": "Local KMS",
"description": "The label for category 'Local KMS' in sidebar 'MSwindowsSidebar'"
}
}
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All sidebar category and description translations remain in English. The entire file contains English text that should be translated to Spanish. This includes all category labels (e.g., "Docker", "Installation", "Troubleshooting", "Docs") and all descriptions (e.g., "Tutorials showing you how to run Self-Hosted systems using Docker."). While some proper nouns like product names may remain in English, the descriptive text and common labels should be translated.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +26
{
"title": {
"message": "Bankai-Tech Docs",
"description": "The title in the navbar"
},
"logo.alt": {
"message": "My Site Logo",
"description": "The alt text of navbar logo"
},
"item.label.Tutorials": {
"message": "Tutorials",
"description": "Navbar item with label Tutorials"
},
"item.label.Examples": {
"message": "Examples",
"description": "Navbar item with label Examples"
},
"item.label.MS Windows": {
"message": "MS Windows",
"description": "Navbar item with label MS Windows"
},
"item.label.Buy Me a Beer": {
"message": "Buy Me a Beer",
"description": "Navbar item with label Buy Me a Beer"
}
}
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The navbar translations are not in Spanish. All message values remain in English. For proper Spanish localization, these should be translated. For example:

  • "Tutorials" should be "Tutoriales"
  • "Examples" should be "Ejemplos"
  • "MS Windows" could remain as is (proper noun)
  • "Buy Me a Beer" should be "Cómprame una Cerveza" or similar
  • "My Site Logo" should be "Logo de Mi Sitio"

Copilot uses AI. Check for mistakes.
Comment on lines +34 to +36
"copyright": {
"message": "Copyright © 2026 Bankai-Tech Docs",
"description": "The footer copyright"
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The footer copyright message contains a future date (2026). The current year is 2026 (as of January 30, 2026), but this appears to be hardcoded rather than dynamically generated. This differs from the configuration in docusaurus.config.ts which uses a template literal with new Date().getFullYear(). Consider whether this should match the dynamic copyright or if it's intentionally static.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +33
{
"link.title.Docs": {
"message": "Docs",
"description": "The title of the footer links column with title=Docs in the footer"
},
"link.title.Examples": {
"message": "Examples",
"description": "The title of the footer links column with title=Examples in the footer"
},
"link.title.Community": {
"message": "Community",
"description": "The title of the footer links column with title=Community in the footer"
},
"link.title.Support Me": {
"message": "Support Me",
"description": "The title of the footer links column with title=Support Me in the footer"
},
"link.item.label.Tutorials": {
"message": "Tutorials",
"description": "The label of footer link with label=Tutorials linking to Docker/Introduction"
},
"link.item.label.Examples": {
"message": "Examples",
"description": "The label of footer link with label=Examples linking to Examples/Reverse Proxies/Introduction"
},
"link.item.label.Discord": {
"message": "Discord",
"description": "The label of footer link with label=Discord linking to https://discord.gg/6THYdvayjg"
},
"link.item.label.Buy me a Beer": {
"message": "Buy me a Beer",
"description": "The label of footer link with label=Buy me a Beer linking to https://buymeacoffee.com/BankaiTech"
},
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The footer translations are not in Spanish. All message values remain in English. For proper Spanish localization, these should be translated. For example:

  • "Docs" should be "Documentación"
  • "Examples" should be "Ejemplos"
  • "Community" should be "Comunidad"
  • "Support Me" should be "Apóyame"
  • "Tutorials" should be "Tutoriales"
  • "Buy me a Beer" should be "Cómprame una Cerveza"

Copilot uses AI. Check for mistakes.
- Translate navbar.json: Tutoriales, Ejemplos, Documentos Bankai-Tech, Cómprame una Cerveza
- Translate footer.json: Documentación, Ejemplos, Comunidad, Apóyame, Derechos de Autor
- All 15 UI strings now translated to Spanish
- code.json already had Spanish translations pre-populated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants