must-cli 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +192 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/index.d.ts +16 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +142 -0
- package/dist/config/index.js.map +1 -0
- package/dist/extractors/base.d.ts +59 -0
- package/dist/extractors/base.d.ts.map +1 -0
- package/dist/extractors/base.js +204 -0
- package/dist/extractors/base.js.map +1 -0
- package/dist/extractors/html.d.ts +8 -0
- package/dist/extractors/html.d.ts.map +1 -0
- package/dist/extractors/html.js +70 -0
- package/dist/extractors/html.js.map +1 -0
- package/dist/extractors/index.d.ts +33 -0
- package/dist/extractors/index.d.ts.map +1 -0
- package/dist/extractors/index.js +86 -0
- package/dist/extractors/index.js.map +1 -0
- package/dist/extractors/javascript.d.ts +17 -0
- package/dist/extractors/javascript.d.ts.map +1 -0
- package/dist/extractors/javascript.js +249 -0
- package/dist/extractors/javascript.js.map +1 -0
- package/dist/extractors/vue.d.ts +9 -0
- package/dist/extractors/vue.d.ts.map +1 -0
- package/dist/extractors/vue.js +99 -0
- package/dist/extractors/vue.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +414 -0
- package/dist/index.js.map +1 -0
- package/dist/transformer/index.d.ts +102 -0
- package/dist/transformer/index.d.ts.map +1 -0
- package/dist/transformer/index.js +844 -0
- package/dist/transformer/index.js.map +1 -0
- package/dist/translators/azure.d.ts +7 -0
- package/dist/translators/azure.d.ts.map +1 -0
- package/dist/translators/azure.js +43 -0
- package/dist/translators/azure.js.map +1 -0
- package/dist/translators/baidu.d.ts +8 -0
- package/dist/translators/baidu.d.ts.map +1 -0
- package/dist/translators/baidu.js +67 -0
- package/dist/translators/baidu.js.map +1 -0
- package/dist/translators/base.d.ts +15 -0
- package/dist/translators/base.d.ts.map +1 -0
- package/dist/translators/base.js +50 -0
- package/dist/translators/base.js.map +1 -0
- package/dist/translators/custom.d.ts +19 -0
- package/dist/translators/custom.d.ts.map +1 -0
- package/dist/translators/custom.js +82 -0
- package/dist/translators/custom.js.map +1 -0
- package/dist/translators/google.d.ts +6 -0
- package/dist/translators/google.d.ts.map +1 -0
- package/dist/translators/google.js +25 -0
- package/dist/translators/google.js.map +1 -0
- package/dist/translators/index.d.ts +16 -0
- package/dist/translators/index.d.ts.map +1 -0
- package/dist/translators/index.js +57 -0
- package/dist/translators/index.js.map +1 -0
- package/dist/types/index.d.ts +385 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/file.d.ts +5 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +41 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/interpolation.d.ts +68 -0
- package/dist/utils/interpolation.d.ts.map +1 -0
- package/dist/utils/interpolation.js +174 -0
- package/dist/utils/interpolation.js.map +1 -0
- package/dist/utils/text.d.ts +42 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +234 -0
- package/dist/utils/text.js.map +1 -0
- package/package.json +86 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Auto I18n Tool
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const commander_1 = require("commander");
|
|
7
|
+
const index_1 = require("../index");
|
|
8
|
+
const config_1 = require("../config");
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const ora_1 = __importDefault(require("ora"));
|
|
11
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
12
|
+
const program = new commander_1.Command();
|
|
13
|
+
program
|
|
14
|
+
.name('must')
|
|
15
|
+
.description('Automated internationalization tool for extracting and translating text')
|
|
16
|
+
.version('1.0.0');
|
|
17
|
+
// Default action when no command is specified
|
|
18
|
+
program
|
|
19
|
+
.option('--key-prefix <prefix>', 'Custom key prefix (e.g., CB_IBG_APPROLL_)')
|
|
20
|
+
.option('--key-counter-padding <num>', 'Counter padding (e.g., 5 for 00001)', parseInt)
|
|
21
|
+
.option('--key-counter-start <num>', 'Counter start value', parseInt)
|
|
22
|
+
.option('--key-prefix-only', 'Use prefix + counter only mode')
|
|
23
|
+
.action(async (options) => {
|
|
24
|
+
try {
|
|
25
|
+
const spinner = (0, ora_1.default)('Initializing...').start();
|
|
26
|
+
const configManager = new config_1.ConfigManager();
|
|
27
|
+
const config = configManager.getConfig();
|
|
28
|
+
// 应用命令行的 key 配置
|
|
29
|
+
if (options.keyPrefix || options.keyCounterPadding !== undefined ||
|
|
30
|
+
options.keyCounterStart !== undefined || options.keyPrefixOnly) {
|
|
31
|
+
config.keyConfig = config.keyConfig || {};
|
|
32
|
+
if (options.keyPrefix)
|
|
33
|
+
config.keyConfig.prefix = options.keyPrefix;
|
|
34
|
+
if (options.keyCounterPadding !== undefined)
|
|
35
|
+
config.keyConfig.counterPadding = options.keyCounterPadding;
|
|
36
|
+
if (options.keyCounterStart !== undefined)
|
|
37
|
+
config.keyConfig.counterStart = options.keyCounterStart;
|
|
38
|
+
if (options.keyPrefixOnly)
|
|
39
|
+
config.keyConfig.prefixOnly = true;
|
|
40
|
+
}
|
|
41
|
+
const autoI18n = new index_1.AutoI18n(config);
|
|
42
|
+
await autoI18n.run();
|
|
43
|
+
spinner.succeed('Process completed successfully!');
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error(chalk_1.default.red('Process failed:'), error);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
// Extract command
|
|
51
|
+
program
|
|
52
|
+
.command('extract')
|
|
53
|
+
.description('Extract text strings from project files')
|
|
54
|
+
.option('-c, --config <path>', 'Path to configuration file')
|
|
55
|
+
.option('-o, --output <dir>', 'Output directory for extracted texts', 'i18n/strings')
|
|
56
|
+
.option('-p, --patterns <patterns...>', 'File patterns to include')
|
|
57
|
+
.option('-e, --exclude <patterns...>', 'File patterns to exclude')
|
|
58
|
+
.action(async (options) => {
|
|
59
|
+
try {
|
|
60
|
+
const spinner = (0, ora_1.default)('Initializing...').start();
|
|
61
|
+
const configManager = new config_1.ConfigManager(options.config);
|
|
62
|
+
const config = configManager.getConfig();
|
|
63
|
+
// Override config with CLI options
|
|
64
|
+
if (options.output)
|
|
65
|
+
config.outputDir = options.output;
|
|
66
|
+
if (options.patterns)
|
|
67
|
+
config.inputPatterns = options.patterns;
|
|
68
|
+
if (options.exclude)
|
|
69
|
+
config.excludePatterns = options.exclude;
|
|
70
|
+
const autoI18n = new index_1.AutoI18n(config);
|
|
71
|
+
spinner.text = 'Extracting texts...';
|
|
72
|
+
const extractedTexts = await autoI18n.extractTexts();
|
|
73
|
+
await autoI18n.generateReport(extractedTexts);
|
|
74
|
+
spinner.succeed(`Extracted ${extractedTexts.length} text strings`);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error(chalk_1.default.red('Extraction failed:'), error);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// Translate command
|
|
82
|
+
program
|
|
83
|
+
.command('translate')
|
|
84
|
+
.description('Extract and translate text strings')
|
|
85
|
+
.option('-c, --config <path>', 'Path to configuration file')
|
|
86
|
+
.option('-s, --source <lang>', 'Source language code', 'en')
|
|
87
|
+
.option('-t, --target <languages...>', 'Target language codes', ['zh-CN'])
|
|
88
|
+
.option('-p, --provider <provider>', 'Translation provider', 'google')
|
|
89
|
+
.option('-k, --api-key <key>', 'API key for translation service')
|
|
90
|
+
.option('--api-secret <secret>', 'API secret (for Baidu)')
|
|
91
|
+
.option('--region <region>', 'Region (for Azure)')
|
|
92
|
+
.action(async (options) => {
|
|
93
|
+
try {
|
|
94
|
+
const spinner = (0, ora_1.default)('Initializing translation...').start();
|
|
95
|
+
const configManager = new config_1.ConfigManager(options.config);
|
|
96
|
+
const config = configManager.getConfig();
|
|
97
|
+
// Override config with CLI options
|
|
98
|
+
config.sourceLanguage = options.source;
|
|
99
|
+
config.targetLanguages = options.target;
|
|
100
|
+
config.translationProvider = options.provider;
|
|
101
|
+
if (options.apiKey)
|
|
102
|
+
config.apiKey = options.apiKey;
|
|
103
|
+
if (options.apiSecret)
|
|
104
|
+
config.apiSecret = options.apiSecret;
|
|
105
|
+
if (options.region)
|
|
106
|
+
config.region = options.region;
|
|
107
|
+
const autoI18n = new index_1.AutoI18n(config);
|
|
108
|
+
await autoI18n.run();
|
|
109
|
+
spinner.succeed('Translation completed successfully!');
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
console.error(chalk_1.default.red('Translation failed:'), error);
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
// Init command
|
|
117
|
+
program
|
|
118
|
+
.command('init')
|
|
119
|
+
.description('Initialize configuration file')
|
|
120
|
+
.option('-o, --output <path>', 'Output path for config file', 'i18n.config.json')
|
|
121
|
+
.action(async (options) => {
|
|
122
|
+
try {
|
|
123
|
+
const answers = await inquirer_1.default.prompt([
|
|
124
|
+
{
|
|
125
|
+
type: 'input',
|
|
126
|
+
name: 'sourceLanguage',
|
|
127
|
+
message: 'Source language code:',
|
|
128
|
+
default: 'en'
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
type: 'input',
|
|
132
|
+
name: 'targetLanguages',
|
|
133
|
+
message: 'Target language codes (comma-separated):',
|
|
134
|
+
default: 'zh-CN'
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: 'list',
|
|
138
|
+
name: 'translationProvider',
|
|
139
|
+
message: 'Translation provider:',
|
|
140
|
+
choices: ['google', 'baidu', 'azure'],
|
|
141
|
+
default: 'google'
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: 'input',
|
|
145
|
+
name: 'outputDir',
|
|
146
|
+
message: 'Output directory:',
|
|
147
|
+
default: 'i18n/strings'
|
|
148
|
+
}
|
|
149
|
+
]);
|
|
150
|
+
const config = {
|
|
151
|
+
...(0, config_1.createDefaultConfig)(),
|
|
152
|
+
sourceLanguage: answers.sourceLanguage,
|
|
153
|
+
targetLanguages: answers.targetLanguages.split(',').map((s) => s.trim()),
|
|
154
|
+
translationProvider: answers.translationProvider,
|
|
155
|
+
outputDir: answers.outputDir
|
|
156
|
+
};
|
|
157
|
+
const fs = require('fs');
|
|
158
|
+
fs.writeFileSync(options.output, JSON.stringify(config, null, 2));
|
|
159
|
+
console.log(chalk_1.default.green(`Configuration file created at ${options.output}`));
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
console.error(chalk_1.default.red('Init failed:'), error);
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
// Validate command
|
|
167
|
+
program
|
|
168
|
+
.command('validate')
|
|
169
|
+
.description('Validate configuration')
|
|
170
|
+
.option('-c, --config <path>', 'Path to configuration file')
|
|
171
|
+
.action(async (options) => {
|
|
172
|
+
try {
|
|
173
|
+
const configManager = new config_1.ConfigManager(options.config);
|
|
174
|
+
const validation = configManager.validateConfig();
|
|
175
|
+
if (validation.valid) {
|
|
176
|
+
console.log(chalk_1.default.green('✅ Configuration is valid'));
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
console.log(chalk_1.default.red('❌ Configuration has errors:'));
|
|
180
|
+
validation.errors.forEach(error => {
|
|
181
|
+
console.log(chalk_1.default.red(` - ${error}`));
|
|
182
|
+
});
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
console.error(chalk_1.default.red('Validation failed:'), error);
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
program.parse();
|
|
192
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,aAAa,CAAC"}
|
package/dist/cli.js
ADDED
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,uBAAqB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { I18nConfig } from '../types';
|
|
2
|
+
export declare class ConfigManager {
|
|
3
|
+
private config;
|
|
4
|
+
constructor(configPath?: string);
|
|
5
|
+
private loadConfig;
|
|
6
|
+
private loadModuleConfig;
|
|
7
|
+
private findConfigFile;
|
|
8
|
+
getConfig(): I18nConfig;
|
|
9
|
+
updateConfig(updates: Partial<I18nConfig>): void;
|
|
10
|
+
validateConfig(): {
|
|
11
|
+
valid: boolean;
|
|
12
|
+
errors: string[];
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare function createDefaultConfig(): I18nConfig;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA0BtC,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;gBAEf,UAAU,CAAC,EAAE,MAAM;IAI/B,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,cAAc;IAqBf,SAAS,IAAI,UAAU;IAIvB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAIhD,cAAc,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAwB9D;AAED,wBAAgB,mBAAmB,IAAI,UAAU,CAsBhD"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigManager = void 0;
|
|
4
|
+
exports.createDefaultConfig = createDefaultConfig;
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const DEFAULT_CONFIG = {
|
|
8
|
+
sourceLanguage: 'zh-CN', // 默认源语言为中文
|
|
9
|
+
targetLanguages: ['en'], // 默认目标语言为英文
|
|
10
|
+
translationProvider: 'google',
|
|
11
|
+
outputDir: 'i18n/strings',
|
|
12
|
+
patchDir: 'i18n/patches', // 默认 patch 目录
|
|
13
|
+
inputPatterns: [
|
|
14
|
+
'**/*.js',
|
|
15
|
+
'**/*.jsx',
|
|
16
|
+
'**/*.ts',
|
|
17
|
+
'**/*.tsx',
|
|
18
|
+
'**/*.vue',
|
|
19
|
+
'**/*.html'
|
|
20
|
+
],
|
|
21
|
+
excludePatterns: [
|
|
22
|
+
'node_modules/**',
|
|
23
|
+
'dist/**',
|
|
24
|
+
'build/**',
|
|
25
|
+
'**/*.test.*',
|
|
26
|
+
'**/*.spec.*'
|
|
27
|
+
]
|
|
28
|
+
};
|
|
29
|
+
class ConfigManager {
|
|
30
|
+
constructor(configPath) {
|
|
31
|
+
this.config = this.loadConfig(configPath);
|
|
32
|
+
}
|
|
33
|
+
loadConfig(configPath) {
|
|
34
|
+
const configFile = configPath || this.findConfigFile();
|
|
35
|
+
if (configFile && (0, fs_1.existsSync)(configFile)) {
|
|
36
|
+
try {
|
|
37
|
+
// Handle JavaScript/TypeScript config files
|
|
38
|
+
if (configFile.endsWith('.js') || configFile.endsWith('.ts')) {
|
|
39
|
+
return this.loadModuleConfig(configFile);
|
|
40
|
+
}
|
|
41
|
+
// Handle JSON config files
|
|
42
|
+
const userConfig = JSON.parse((0, fs_1.readFileSync)(configFile, 'utf-8'));
|
|
43
|
+
return { ...DEFAULT_CONFIG, ...userConfig };
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.warn(`Failed to load config from ${configFile}:`, error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return DEFAULT_CONFIG;
|
|
50
|
+
}
|
|
51
|
+
loadModuleConfig(filePath) {
|
|
52
|
+
try {
|
|
53
|
+
// For .ts files, try to use ts-node/register if available
|
|
54
|
+
if (filePath.endsWith('.ts')) {
|
|
55
|
+
try {
|
|
56
|
+
require('ts-node/register');
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// ts-node not available, try to require directly
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Use require to load the module
|
|
63
|
+
const absolutePath = require.resolve(filePath, { paths: [process.cwd()] });
|
|
64
|
+
delete require.cache[absolutePath];
|
|
65
|
+
const config = require(absolutePath);
|
|
66
|
+
const userConfig = config.default || config;
|
|
67
|
+
return { ...DEFAULT_CONFIG, ...userConfig };
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.warn(`Failed to load module config:`, error);
|
|
71
|
+
return DEFAULT_CONFIG;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
findConfigFile() {
|
|
75
|
+
const possibleNames = [
|
|
76
|
+
'must.config.js', // 优先 JS 文件(更稳定)
|
|
77
|
+
'must.config.json',
|
|
78
|
+
'must.config.ts',
|
|
79
|
+
'i18n.config.js',
|
|
80
|
+
'i18n.config.json',
|
|
81
|
+
'i18n.config.ts',
|
|
82
|
+
'.i18nrc.json'
|
|
83
|
+
];
|
|
84
|
+
for (const name of possibleNames) {
|
|
85
|
+
const fullPath = (0, path_1.join)(process.cwd(), name);
|
|
86
|
+
if ((0, fs_1.existsSync)(fullPath)) {
|
|
87
|
+
return fullPath;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
getConfig() {
|
|
93
|
+
return this.config;
|
|
94
|
+
}
|
|
95
|
+
updateConfig(updates) {
|
|
96
|
+
this.config = { ...this.config, ...updates };
|
|
97
|
+
}
|
|
98
|
+
validateConfig() {
|
|
99
|
+
const errors = [];
|
|
100
|
+
if (!this.config.sourceLanguage) {
|
|
101
|
+
errors.push('sourceLanguage is required');
|
|
102
|
+
}
|
|
103
|
+
if (!this.config.targetLanguages || this.config.targetLanguages.length === 0) {
|
|
104
|
+
errors.push('targetLanguages must have at least one language');
|
|
105
|
+
}
|
|
106
|
+
if (!this.config.translationProvider) {
|
|
107
|
+
errors.push('translationProvider is required');
|
|
108
|
+
}
|
|
109
|
+
if (!this.config.outputDir) {
|
|
110
|
+
errors.push('outputDir is required');
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
valid: errors.length === 0,
|
|
114
|
+
errors
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.ConfigManager = ConfigManager;
|
|
119
|
+
function createDefaultConfig() {
|
|
120
|
+
return {
|
|
121
|
+
sourceLanguage: 'en',
|
|
122
|
+
targetLanguages: ['zh-CN'],
|
|
123
|
+
translationProvider: 'google',
|
|
124
|
+
outputDir: 'i18n/strings',
|
|
125
|
+
inputPatterns: [
|
|
126
|
+
'**/*.js',
|
|
127
|
+
'**/*.jsx',
|
|
128
|
+
'**/*.ts',
|
|
129
|
+
'**/*.tsx',
|
|
130
|
+
'**/*.vue',
|
|
131
|
+
'**/*.html'
|
|
132
|
+
],
|
|
133
|
+
excludePatterns: [
|
|
134
|
+
'node_modules/**',
|
|
135
|
+
'dist/**',
|
|
136
|
+
'build/**',
|
|
137
|
+
'**/*.test.*',
|
|
138
|
+
'**/*.spec.*'
|
|
139
|
+
]
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ExtractedText, ExtractorOptions, InterpolationConfig, ExtractionWarning, ExtractionWarningSeverity } from '../types';
|
|
2
|
+
import { InterpolationHandler } from '../utils/interpolation';
|
|
3
|
+
export interface ExtractorConfig {
|
|
4
|
+
options?: ExtractorOptions;
|
|
5
|
+
sourceLanguage?: string;
|
|
6
|
+
interpolation?: InterpolationConfig;
|
|
7
|
+
}
|
|
8
|
+
export interface ExtractResult {
|
|
9
|
+
texts: ExtractedText[];
|
|
10
|
+
warnings: ExtractionWarning[];
|
|
11
|
+
}
|
|
12
|
+
export declare abstract class BaseExtractor {
|
|
13
|
+
protected options: ExtractorOptions;
|
|
14
|
+
protected sourceLanguage: string;
|
|
15
|
+
protected interpolation: InterpolationHandler;
|
|
16
|
+
protected warnings: ExtractionWarning[];
|
|
17
|
+
constructor(config?: ExtractorConfig);
|
|
18
|
+
/**
|
|
19
|
+
* 清空警告列表
|
|
20
|
+
*/
|
|
21
|
+
protected clearWarnings(): void;
|
|
22
|
+
/**
|
|
23
|
+
* 获取所有警告
|
|
24
|
+
*/
|
|
25
|
+
getWarnings(): ExtractionWarning[];
|
|
26
|
+
/**
|
|
27
|
+
* 添加警告
|
|
28
|
+
*/
|
|
29
|
+
protected addWarning(type: ExtractionWarning['type'], severity: ExtractionWarningSeverity, message: string, file: string, line: number, column: number, code?: string, suggestion?: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* 分析表达式复杂度并返回警告信息(如果需要)
|
|
32
|
+
*/
|
|
33
|
+
protected analyzeExpressionComplexity(expression: any, file: string, line: number, column: number): {
|
|
34
|
+
isComplex: boolean;
|
|
35
|
+
name?: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* 获取表达式的代码片段(简化版)
|
|
39
|
+
*/
|
|
40
|
+
private getExpressionCode;
|
|
41
|
+
/**
|
|
42
|
+
* 生成占位符
|
|
43
|
+
* @param index 占位符索引
|
|
44
|
+
* @param name 变量名(用于命名参数模式)
|
|
45
|
+
*/
|
|
46
|
+
protected formatPlaceholder(index: number, name?: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* 是否使用命名参数
|
|
49
|
+
*/
|
|
50
|
+
protected get useNamedParams(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* 从表达式节点提取变量名
|
|
53
|
+
*/
|
|
54
|
+
protected extractExpressionName(expression: any): string | undefined;
|
|
55
|
+
abstract extract(filePath: string): Promise<ExtractedText[]>;
|
|
56
|
+
protected createExtractedText(text: string, file: string, line: number, column: number, type: ExtractedText['type'], context?: string): ExtractedText;
|
|
57
|
+
protected isValidText(text: string): boolean;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/extractors/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAC9H,OAAO,EAAE,oBAAoB,EAA8B,MAAM,wBAAwB,CAAC;AAE1F,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,8BAAsB,aAAa;IACjC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC9C,SAAS,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAM;gBAEjC,MAAM,GAAE,eAAoB;IAaxC;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAI/B;;OAEG;IACI,WAAW,IAAI,iBAAiB,EAAE;IAIzC;;OAEG;IACH,SAAS,CAAC,UAAU,CAClB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAC/B,QAAQ,EAAE,yBAAyB,EACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAaP;;OAEG;IACH,SAAS,CAAC,2BAA2B,CACnC,UAAU,EAAE,GAAG,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAwGxC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjE;;OAEG;IACH,SAAS,KAAK,cAAc,IAAI,OAAO,CAEtC;IAED;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,UAAU,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAkBpE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAE5D,SAAS,CAAC,mBAAmB,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAC3B,OAAO,CAAC,EAAE,MAAM,GACf,aAAa;IAWhB,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CA0C7C"}
|