javascript 使用基于hunspell的“node-spellchecked”检查翻译文件的拼写问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 使用基于hunspell的“node-spellchecked”检查翻译文件的拼写问题相关的知识,希望对你有一定的参考价值。
#!/usr/bin/env node
const checker = require('spellchecker');
const chalk = require('chalk');
const glob = require('glob');
const root = require('app-root-dir').get();
const fs = require('fs-extra');
function check(word) {
if (checker.isMisspelled(word)) {
return checker.getCorrectionsForMisspelling(word);
}
return null;
}
function feedback(word) {
const result = check(word);
if (result === null) {
console.log(`- ${word}: ${chalk.green('okay')}`);
} else {
console.log(`- ${word}: ${chalk.red('error')}`);
if (result.length > 0) {
console.log(` Did you mean: ${result}?`);
}
}
}
function parseLanguage(filePath) {
return /_([a-zA-Z-]+)\.json$/.exec(filePath)[1];
}
function displayErrors(errors, key, translation) {
console.log(chalk.bold(' - ' + key + ': ' + errors.length + ' Errors'));
for (let {start, end} of errors) {
console.log(' - ' + translation.slice(start, end));
}
}
async function parseDict(dict) {
let json;
try {
json = await fs.readJson(dict);
} catch (error) {
throw new Error('Invalid JSON file: ' + dict);
}
const lang = parseLanguage(dict);
if (lang == null) {
throw new Error('Could not detect language of JSON file: ' + dict + '!');
}
checker.setDictionary(lang);
let errorCounter = 0;
for (let key in json) {
const translation = json[key];
const result = checker.checkSpelling(translation);
if (result.length > 0) {
if (errorCounter === 0) {
console.log(chalk.red('Errornous: ') + dict);
}
displayErrors(result, key, translation);
errorCounter += result.length;
}
}
if (errorCounter === 0) {
console.log(chalk.green('Perfect: ') + dict);
} else {
// Inject divider line
console.log('');
}
return errorCounter;
}
const ignore = ['**/node_modules/**'];
glob('**/src/**/translation*.json', {root, ignore}, async (error, matches) => {
const errors = await Promise.all(matches.map(parseDict));
const errorCount = errors.reduce((x, y) => x + y);
console.log("----------------------------------------------------------------------")
console.log(chalk.blue.bold('Overall Errors:', errorCount));
});
以上是关于javascript 使用基于hunspell的“node-spellchecked”检查翻译文件的拼写问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 Visual Studio 编译 hunspell
如何在 Windows 上的 hunspell 搜索路径中添加字典路径?
打开 Office 拼写检查器/Java API
OpenOffice/Mozilla *.dic 文件格式
无法使用 Keycloak 评估基于 Javascript 的策略
centos7 安装codeblocks