UNPKG

@neiderruiz/translate-files

Version:

Internationalize and manage your website easily with (CSV or JSON to i18n)

95 lines (94 loc) 3.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.blogTranslate = void 0; var _fs = _interopRequireDefault(require("fs")); var _path = _interopRequireDefault(require("path")); var _getTranslationsApi = require("../../translate/utils/get-translations-api"); var _copyFilesFolder = require("./copy-files-folder"); var _extractKeysAndTexts = require("./extract-keys-and-texts"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const blogTranslate = async ({ dir, defaultLocale, locales, i18nDir = './i18n', baseBlogDir, outputBlogDir, apiKey }) => { const items = _fs.default.readdirSync(dir); items.forEach(async item => { const itemPath = _path.default.join(dir, item); const itemRelativePath = _path.default.relative(baseBlogDir, itemPath); if (_fs.default.statSync(itemPath).isDirectory()) { // subfolder process blogTranslate({ dir: itemPath, baseBlogDir, defaultLocale, locales, i18nDir, outputBlogDir, apiKey }); } else if (item.endsWith('.md') || item.endsWith('.yml')) { const content = _fs.default.readFileSync(itemPath, 'utf8'); const keysAndTexts = (0, _extractKeysAndTexts.extractKeysAndTexts)(content); const localeArray = defaultLocale ? [defaultLocale, ...locales] : locales; for (const locale of localeArray) { let translations = {}; if (defaultLocale === locale) { translations = keysAndTexts; // Mantener el contenido original } else { translations = await (0, _getTranslationsApi.getTranslationsFromAPI)({ sourceLang: defaultLocale, targetLang: locale, data: keysAndTexts, typeProject: 'docusaurus', apiKey, route_file: itemPath }); } const localeDir = _path.default.join(i18nDir, locale, 'docusaurus-plugin-content-blog', _path.default.dirname(itemRelativePath)); if (!_fs.default.existsSync(localeDir)) { _fs.default.mkdirSync(localeDir, { recursive: true }); } const outputFilePath = _path.default.join(localeDir, item); let translatedContent = content; for (const [key, value] of Object.entries(translations)) { translatedContent = translatedContent.replace(new RegExp(`{{${key}\\|.*?}}`, 'g'), value); } const routeOutputLog = _path.default.join(locale, 'docusaurus-plugin-content-blog', _path.default.dirname(itemRelativePath), item); if (defaultLocale === locale) { const baseDocsPath = _path.default.join(outputBlogDir, _path.default.dirname(itemRelativePath)); if (!_fs.default.existsSync(baseDocsPath)) { _fs.default.mkdirSync(baseDocsPath, { recursive: true }); } const routeFileSaveDoc = _path.default.join(outputBlogDir, _path.default.dirname(itemRelativePath), item); _fs.default.writeFileSync(routeFileSaveDoc, translatedContent); } _fs.default.writeFileSync(outputFilePath, translatedContent); console.log(`✅ (Translated): ${routeOutputLog}`); } } else { // move file to all locales and copy to blog (0, _copyFilesFolder.copyFilesFolder)({ defaultFolder: outputBlogDir, defaultLocale, i18nDir, item, itemPath, itemRelativePath, locales, baseFolderSave: 'docusaurus-plugin-content-blog' }); } }); }; exports.blogTranslate = blogTranslate;