diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json new file mode 100644 index 000000000000..4f3fcbcf0702 --- /dev/null +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/__fixtures__/simple-site/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,3 @@ +{ + "some.key": "some translation" +} diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/cli.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/cli.test.ts index baa34816943d..c8c28dfca3ad 100644 Binary files a/packages/docusaurus-plugin-content-docs/src/__tests__/cli.test.ts and b/packages/docusaurus-plugin-content-docs/src/__tests__/cli.test.ts differ diff --git a/packages/docusaurus-plugin-content-docs/src/cli.ts b/packages/docusaurus-plugin-content-docs/src/cli.ts index ed5b46e29a44..e66e910ebc18 100644 --- a/packages/docusaurus-plugin-content-docs/src/cli.ts +++ b/packages/docusaurus-plugin-content-docs/src/cli.ts @@ -14,6 +14,7 @@ import { getVersionDocsDirPath, getVersionSidebarsPath, getDocsDirPathLocalized, + getPluginDirPathLocalized, readVersionsFile, } from './versions/files'; import {validateVersionName} from './versions/validation'; @@ -123,6 +124,23 @@ async function cliDocsVersionCommand( versionName: version, }); await fs.copy(docsDir, newVersionDir); + + // Copy version JSON translation file for this locale + // i18n//docusaurus-plugin-content-docs/current.json => version-v1.json + // See https://docusaurus.io/docs/next/api/plugins/@docusaurus/plugin-content-docs#translation-files-location + if (locale !== i18n.defaultLocale) { + const dir = getPluginDirPathLocalized({ + localizationDir, + pluginId, + }); + const sourceFile = path.join(dir, 'current.json'); + const dest = path.join(dir, `version-${version}.json`); + if (await fs.pathExists(sourceFile)) { + await fs.copy(sourceFile, dest); + } else { + logger.warn`${pluginIdLogPrefix}: i18n translation file does not exist in path=${sourceFile}. Skipping.`; + } + } }), ); diff --git a/packages/docusaurus-plugin-content-docs/src/versions/files.ts b/packages/docusaurus-plugin-content-docs/src/versions/files.ts index 2f045717c29e..00b3f082709e 100644 --- a/packages/docusaurus-plugin-content-docs/src/versions/files.ts +++ b/packages/docusaurus-plugin-content-docs/src/versions/files.ts @@ -75,6 +75,21 @@ export function getDocsDirPathLocalized({ }); } +export function getPluginDirPathLocalized({ + localizationDir, + pluginId, +}: { + localizationDir: string; + pluginId: string; +}): string { + return getPluginI18nPath({ + localizationDir, + pluginName: 'docusaurus-plugin-content-docs', + pluginId, + subPaths: [], + }); +} + /** `community` => `[siteDir]/community_versions.json` */ export function getVersionsFilePath(siteDir: string, pluginId: string): string { return path.join(siteDir, addPluginIdPrefix(VERSIONS_JSON_FILE, pluginId));