node.js - Node.js 和 Kakashi 中的日语音译

标签 node.js transliteration cjk

我为 Kakasi 写了一个小包装器

就像下面这样:

Kakasi.prototype.transliterate = function (data) {
            var self = this;
            return new Promise(function (resolve, reject) {

                var args;
                args = [
                    '-i',
                    'euc',
                    '-Ha',
                    '-Ka',
                    '-Ja',
                    '-Ea',
                    '-ka',
                    '-s',
                    '-iutf8',
                    '-outf8'
                ];
                var kakasi = spawn(self._options.bin, args, {});
                console.log( "echo \""+data+"\" | " + kakasi.spawnargs.join(' ') )
                args = [
                    data
                ];
                var echo = spawn('echo', args, {});

                echo.stdout.pipe( kakasi.stdin );
                var res='';
                kakasi.stdout.on('data', function(_data) {
                    var data=new Buffer(_data,'utf-8').toString();
                    res+=data;
                });
                kakasi.stdout.on('end', function(_) {
                    return resolve(res);
                });
                kakasi.on('error', function(error) {
                    return reject(error);
                });

                if (self._options.debug) kakasi.stdout.pipe(process.stdout);

            });
        }//transliterate

这段代码主要执行以下命令

echo "退屈であくびばっかしていた毎日" | kakasi -i euc -Ha -Ka -Ja -Ea -ka -s -iutf8 -outf8

输出 taikutsu deakubibakkashiteita mainichi 问题是 javascript 实际上缺少一些输出:

$ node transliterate.js 
echo "退屈であくびばっかしていた毎日" | kakasi -i euc -Ha -Ka -Ja -Ea -ka -s -iutf8 -outf8
----------
deakubibakkashiteita 

输入参数相同,但由于某种原因(编码?)stdout 的子输出不同。

kakasi.js 代码可用here .

最佳答案

我认为你的字典加载器导致了这个问题。您应该按如下方式翻转字典。

process.env.KANWADICTPATH = resolve('./data/kanwadict');
process.env.ITAIJIDICTPATH = resolve('./data/itaijidict');

代替

process.env.KANWADICTPATH = resolve('./data/itaijidict');
process.env.ITAIJIDICTPATH = resolve('./data/kanwadict');

关于node.js - Node.js 和 Kakashi 中的日语音译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47020173/

相关文章:

html - 中文字体和粗体文本行为

javascript - ReactJS/ES6 : Searching Japanese text using includes?

javascript - 如何在客户端显示用户已经存在 - MongoDB

javascript - 如何监听 Javascript 中的变量变化?

ajax - 带有部分 ajax 加载 View 的 NodeJS MVC 框架

node.js - Sequelize - 支持的最高 PostgreSQL 版本

api - 谷歌音译的限制是多少?

java - 应使用哪种罗马化标准来改进 ICU4j 的阿拉伯语-拉丁语音译?

c++ - 使用 ICU 进行分词

php - 使用 preg_replace 来字符日语