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