View on GitHub

kuroshiro

Japanese language library for converting Japanese sentence to Hiragana, Katakana or Romaji with furigana and okurigana modes supported.

kuroshiro

kuroshiro

Build Status Coverage Status npm version Join the chat at https://gitter.im/hexenq/kuroshiro License

kuroshiro是一款十分方便使用的日文转换注音工具,主要针对日文文本,进行到平假名、片假名及罗马字的转换,并支持注音假名、送假名 (旁注音)等注音模式。

其他说明语言:English, 日本語, 简体中文, 繁體中文, Esperanto

演示

你可以在这里查看在线演示。

特性

1.x版本的重大变化

解析器插件

在开始工作之前,请先确认各插件的环境兼容性

解析器 Node.js支持 浏览器支持 仓库 开发者
Kuromoji kuroshiro-analyzer-kuromoji Hexen Qi
Mecab kuroshiro-analyzer-mecab Hexen Qi
Yahoo Web API kuroshiro-analyzer-yahoo-webapi Hexen Qi

如何使用

Node.js (或使用Webpack等打包工具时)

首先使用npm包管理器进行安装:

$ npm install kuroshiro

加载kuroshiro库:

同时支持ES6 Module import 和 CommonJS require

import Kuroshiro from "kuroshiro";

实例化:

const kuroshiro = new Kuroshiro();

使用一个解析器实例来初始化kuroshiro (请参考API说明):

// 在这个示例中,首先npm install并import导入kuromoji解析器
import KuromojiAnalyzer from "kuroshiro-analyzer-kuromoji";

// ...

// 初始化
// 这里使用了async/await, 你同样也可以使用Promise
await kuroshiro.init(new KuromojiAnalyzer());

进行转换操作:

const result = await kuroshiro.convert("感じ取れたら手を繋ごう、重なるのは人生のライン and レミリア最高!", { to: "hiragana" });

浏览器

dist/kuroshiro.min.js加入到你的工程 (你需要先后执行npm installnpm run build,以把它构建出来),并在HTML中加入:

<script src="url/to/kuroshiro.min.js"></script>

在这个示例中, 你还需要引入kuroshiro-analyzer-kuromoji.min.js。具体获取方法请参考kuroshiro-analyzer-kuromoji

<script src="url/to/kuroshiro-analyzer-kuromoji.min.js"></script>

实例化:

var kuroshiro = new Kuroshiro();

使用一个解析器实例来初始化kuroshiro,然后进行转换操作:

kuroshiro.init(new KuromojiAnalyzer({ dictPath: "url/to/dictFiles" }))
    .then(function () {
        return kuroshiro.convert("感じ取れたら手を繋ごう、重なるのは人生のライン and レミリア最高!", { to: "hiragana" });
    })
    .then(function(result){
        console.log(result);
    })

API说明

构造器

示例

const kuroshiro = new Kuroshiro();

实例方法

init(analyzer)

使用一个解析器实例来初始化kuroshiro。你需要首先导入并初始化一个解析器。你可以使用上面提到的已实现的解析器插件。关于解析器的初始化方法请参照相应解析器的文档说明。

参数

示例

await kuroshiro.init(new KuromojiAnalyzer());

convert(str, [options])

转换指定的字符串到指定的音节文字(可在选项中配置注音模式等设置)。

参数

选项 类型 默认值 描述
to String ‘hiragana’ 目标音节文字
hiragana (平假名),
katakana (片假名),
romaji (罗马字)
mode String ‘normal’ 转换模式
normal (标准模式),
spaced (空格分组),
okurigana (送假名),
furigana (注音假名)
romajiSystem* String “hepburn” 罗马字体系
nippon (日本式),
passport (护照式),
hepburn (平文式)
delimiter_start String ’(‘ 分隔符 (起始)
delimiter_end String ’)’ 分隔符 (结束)

*: romajiSystem参数仅当to参数设置为romaji时生效。有关这一参数的更多信息, 请见 罗马字体系

示例

// normal (标准模式)
kuroshiro.convert("感じ取れたら手を繋ごう、重なるのは人生のライン and レミリア最高!", {mode:"okurigana", to:"hiragana"});
// 结果:かんじとれたらてをつなごう、かさなるのはじんせいのライン and レミリアさいこう!
// spaced (空格分组)
kuroshiro.convert("感じ取れたら手を繋ごう、重なるのは人生のライン and レミリア最高!", {mode:"okurigana", to:"hiragana"});
// 结果:かんじとれ たら て を つなご う 、 かさなる の は じんせい の ライン   and   レミ リア さいこう !
// okurigana (送假名)
kuroshiro.convert("感じ取れたら手を繋ごう、重なるのは人生のライン and レミリア最高!", {mode:"okurigana", to:"hiragana"});
// 结果: 感(かん)じ取(と)れたら手(て)を繋(つな)ごう、重(かさ)なるのは人生(じんせい)のライン and レミリア最高(さいこう)!
// furigana (注音假名)
kuroshiro.convert("感じ取れたら手を繋ごう、重なるのは人生のライン and レミリア最高!", {mode:"furigana", to:"hiragana"});
// 结果: (かん)()れたら()(つな)ごう、(かさ)なるのは人生(じんせい)のライン and レミリア最高(さいこう)

实用工具

示例

const result = Kuroshiro.Util.isHiragana(""));

isHiragana(char)

判断输入字符是否是平假名。

isKatakana(char)

判断输入字符是否是片假名。

isKana(char)

判断输入字符是否是假名。

isKanji(char)

判断输入字符是否是日文汉字。

isJapanese(char)

判断输入字符是否是日文。

hasHiragana(str)

检查输入字符串中是否含有平假名。

hasKatakana(str)

检查输入字符串中是否含有片假名。

hasKana(str)

检查输入字符串中是否含有假名。

hasKanji(str)

检查输入字符串中是否含有日文汉字。

hasJapanese(str)

检查输入字符串中是否含有日文。

kanaToHiragna(str)

转换输入假名字符串至平假名。

kanaToKatakana(str)

转换输入假名字符串至片假名。

kanaToRomaji(str, system)

转换输入假名字符串至罗马字。参数system可选值为"nippon", "passport", "hepburn" (默认值: “hepburn”)。

罗马字体系

kuroshiro支持三种罗马字体系。

nippon: 日本式罗马字。参照 ISO 3602 Strict

passport: 护照式罗马字。 参照日本外务省发布的 日文罗马字对照表

hepburn: 平文罗马字。参照 BS 4812 : 1972

想快速了解这些罗马字体系的不同,可参考这个实用的网页

罗马字转换须知

完全自动化进行注音假名到罗马字的直接转换是不可能的,这是因为一般的注音假名都缺乏正确的发音信息,可以参考 なぜ フリガナでは ダメなのか?

因此kuroshiro在进行直接的注音假名->罗马字转换(使用任何罗马字体系)时,不会处理长音。(但长音符会被处理)

例如,当进行假名”こうし”到罗马字的转换时,对于nippon, passport, hepburn三种罗马字体系,你会分别得到”kousi”, “koushi”, “koushi”这几个结果

汉字->罗马字的转换无论使用注音假名模式与否都 不受 此逻辑影响。

贡献

请查阅文档 CONTRIBUTING.

灵感源

版权说明

MIT