1.0.1 • Published 9 months ago

@sglkc/kuroshiro v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

kuroshiro

kuroshiro

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

kuroshiro是一款十分方便使用的日文轉換注音工具,主要針對日文文本,進行到平假名、片假名及羅馬字的轉換,並支持注音假名、送假名 (旁註音)等注音模式。

其他說明語言:English, 日本語, 簡體中文, 繁體中文, Esperanto

演示

你可以在這裡查看在線演示。

特性

  • 日文文本 => 平假名、片假名、羅馬字
  • 支持注音假名和送假名
  • 🆕支持多種語素解析器
  • 🆕支持多種羅馬字體系
  • 實用日語工具

1.x版本的重大變化

  • 從注音邏輯中分離語素解析器部分,使得我們可以使用不同的語素解析器(預定義的自定義的
  • 擁抱ES8/ES2017以使用async/await方法
  • 使用ES6 Module取代CommonJS

解析器插件

在開始工作之前,請先確認各插件的環境兼容性

解析器Node.js支持瀏覽器支持倉庫開發者
Kuromojikuroshiro-analyzer-kuromojiHexen Qi
Mecabkuroshiro-analyzer-mecabHexen Qi
Yahoo Web APIkuroshiro-analyzer-yahoo-webapiHexen 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。你需要首先導入並初始化一個解析器。你可以使用上面提到的已實現的解析器插件。關於解析器的初始化方法請參照相應解析器的文檔說明。

參數

  • analyzer - 解析器實例。

示例

await kuroshiro.init(new KuromojiAnalyzer());

convert(str, options)

轉換指定的字元串到指定的音節文字(可在選項中配置注音模式等設置)。

參數

  • str - 將被轉換的字元串。
  • options - 可選 轉換選項,見下表。
選項類型默認值描述
toString'hiragana'目標音節文字hiragana (平假名),katakana (片假名),romaji (羅馬字)
modeString'normal'轉換模式normal (標準模式),spaced (空格分組),okurigana (送假名),furigana (注音假名)
romajiSystem*String"hepburn"羅馬字體系nippon (日本式),passport (護照式),hepburn (平文式)
delimiter_startString'('分隔符 (起始)
delimiter_endString')'分隔符 (結束)

*: 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 レミリア最高(さいこう)!

實用工具

示例

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.

靈感源

  • kuromoji
  • wanakana

版權說明

MIT