cncjs
/
i18next-scanner.app.config.js
78 строк · 2.0 Кб
1/* eslint no-console: 0 */
2/* eslint strict: 0 */
3const fs = require('fs');4const chalk = require('chalk');5const languages = require('./build.config').languages;6
7module.exports = {8src: [9'src/app/**/*.{html,hbs,js,jsx}',10// Use ! to filter out files or directories11'!src/app/{vendor,i18n}/**',12'!test/**',13'!**/node_modules/**'14],15dest: './',16options: {17debug: false,18removeUnusedKeys: true,19sort: false,20func: {21list: [], // Use an empty array to bypass the default list: i18n.t, i18next.t22extensions: ['.js', '.jsx']23},24trans: {25component: 'I18n',26i18nKey: 'i18nKey',27defaultsKey: 'defaults',28extensions: ['.js', '.jsx'],29fallbackKey: function(ns, value) {30return value;31}32},33lngs: languages,34ns: [35'gcode',36'resource' // default37],38defaultNs: 'resource',39defaultValue: (lng, ns, key) => {40if (lng === 'en') {41return key; // Use key as value for base language42}43return ''; // Return empty string for other languages44},45resource: {46loadPath: 'src/app/i18n/{{lng}}/{{ns}}.json',47savePath: 'src/app/i18n/{{lng}}/{{ns}}.json', // or 'src/app/i18n/${lng}/${ns}.saveAll.json'48jsonIndent: 449},50nsSeparator: ':', // namespace separator51keySeparator: '.', // key separator52interpolation: {53prefix: '{{',54suffix: '}}'55}56},57transform: function(file, enc, done) {58'use strict';59
60const parser = this.parser;61const content = fs.readFileSync(file.path, enc);62let count = 0;63
64parser.parseFuncFromString(content, { list: ['i18n._', 'i18n.__'] }, (key, options) => {65parser.set(key, Object.assign({}, options, {66nsSeparator: false,67keySeparator: false68}));69++count;70});71
72if (count > 0) {73console.log(`[i18next-scanner] transform: count=${chalk.cyan(count)}, file=${chalk.yellow(JSON.stringify(file.relative))}`);74}75
76done();77}78};79