@jsverse/transloco
Version:
The internationalization (i18n) library for Angular
89 lines • 3.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDefaultLang = exports.getTranslationEntryPaths = exports.getTranslationFiles = exports.getTranslationsRoot = exports.getTranslationKey = exports.hasFiles = exports.hasSubdirs = exports.setFileContent = exports.getJsonFileContent = exports.updateConfig = exports.createConfig = void 0;
const p = require("node:path");
const schematics_utils_1 = require("../schematics.utils");
const projects_1 = require("./projects");
const config_1 = require("./config");
function createConfig(host, langs, rootTranslationsPath = 'assets/i18n/') {
if (!host.get(schematics_utils_1.CONFIG_FILE)) {
host.create(schematics_utils_1.CONFIG_FILE, (0, schematics_utils_1.generateConfigFile)({
rootTranslationsPath: rootTranslationsPath,
langs,
keysManager: {},
}));
}
}
exports.createConfig = createConfig;
function updateConfig(host, config) {
const originalConfig = (0, config_1.getConfig)();
if (!originalConfig || Object.keys(originalConfig).length === 0) {
return createConfig(host, config.langs, config.rootTranslationsPath);
}
host.overwrite(schematics_utils_1.CONFIG_FILE, (0, schematics_utils_1.generateConfigFile)({ ...config, ...originalConfig }));
}
exports.updateConfig = updateConfig;
function getJsonFileContent(fileName, dir, parser = JSON.parse) {
return parser(dir.file(fileName).content.toString('utf-8'));
}
exports.getJsonFileContent = getJsonFileContent;
function setFileContent(host, dirPath, fileName, content) {
return host.overwrite(p.join(dirPath, fileName), JSON.stringify(content, null, 2));
}
exports.setFileContent = setFileContent;
function hasSubdirs(dir) {
return dir.subdirs && dir.subdirs.length;
}
exports.hasSubdirs = hasSubdirs;
function hasFiles(dir) {
return dir.subfiles && dir.subfiles.length;
}
exports.hasFiles = hasFiles;
function getTranslationKey(prefix = '', key) {
return prefix ? `${prefix}.${key}` : key;
}
exports.getTranslationKey = getTranslationKey;
function getTranslationsRoot(host, options) {
const translocoConfig = (0, config_1.getConfig)();
if (options.translationPath) {
return options.translationPath;
}
else if (translocoConfig && translocoConfig.rootTranslationsPath) {
return translocoConfig.rootTranslationsPath;
}
else {
const project = (0, projects_1.getProject)(host, options.project);
const rootPath = (project && project.sourceRoot) || 'src';
return p.join(rootPath, 'assets', 'i18n');
}
}
exports.getTranslationsRoot = getTranslationsRoot;
function getTranslationFiles(host, root, parser) {
const rootDir = host.getDir(root);
return rootDir.subfiles.map((fileName) => ({
lang: fileName.split('.')[0],
translation: getJsonFileContent(fileName, rootDir, parser),
}));
}
exports.getTranslationFiles = getTranslationFiles;
function getTranslationEntryPaths(host, rootDirPath) {
const translocoConfig = (0, config_1.getConfig)();
if (translocoConfig.scopePathMap &&
Object.keys(translocoConfig.scopePathMap).length) {
return Object.entries(translocoConfig.scopePathMap).map(([scope, path]) => ({
scope,
path,
}));
}
const rootDir = host.getDir(rootDirPath);
return rootDir.subdirs.map((subDir) => ({
scope: subDir,
path: p.join(rootDirPath, subDir),
}));
}
exports.getTranslationEntryPaths = getTranslationEntryPaths;
function getDefaultLang(options) {
return options.defaultLang || (0, config_1.getConfig)().defaultLang;
}
exports.getDefaultLang = getDefaultLang;
//# sourceMappingURL=transloco.js.map