GitHub 火線榜

GitHub 火線榜 · 倉庫檔案

hexenq/kuroshiro

Japanese language library for converting Japanese sentence to Hiragana, Katakana or Romaji with furigana and okurigana modes supported. (簡介來自倉庫自身文件。)

資料截至 October 23hexenq

最好成績

#7

即時里程碑 · 破星直播

999

累計 Star

104

Fork 總數

2

近 30 天在榜天數

專案文件

kuroshiro

kuroshiro

CI npm version License

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

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

演示

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

特性

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

從 1.x 遷移

  • 2.x 要求 Node.js 22+,或原生支援 ES2015(包括 Promise)的瀏覽器,不支援 Internet Explorer。請另行確認解析器的環境要求。
  • 將 Kuroshiro.Util.kanaToHiragna(...) 改為 Kuroshiro.Util.kanaToHiragana(...),舊拼寫已移除。
  • 繼續支援 CommonJS require、ESM 預設匯入、瀏覽器全域變數 Kuroshiro,以及非同步的 init() / convert() API。
  • 套件內提供 TypeScript 宣告,請參閱 TypeScript 用法。以下範例使用同樣帶有宣告的 Kuromoji 2.0 beta。

解析器插件

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

解析器 Node.js支持 瀏覽器支持 倉庫 開發者
Kuromoji ✓ ✓ kuroshiro-analyzer-kuromoji Hexen Qi
Mecab ✓ ✗ kuroshiro-analyzer-mecab Hexen Qi
Yahoo Web API (維護暫停) ✓ ✗ kuroshiro-analyzer-yahoo-webapi Hexen Qi

Yahoo Web API 解析器的 API 遷移尚未完成,目前暫停維護,暫不建議用於新專案。詳情請參閱維護狀態說明。

如何使用

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

首先使用npm包管理器進行安裝:

$ npm install kuroshiro@beta kuroshiro-analyzer-kuromoji@beta

載入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" });

瀏覽器

使用已安裝 npm 套件中的 dist/kuroshiro.min.js,並在 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();

將 node_modules/kuromoji/dict/ 中的字典檔案複製到 public/dict/ 等公開目錄,dictPath 填寫對應的存取路徑(本例為 /dict/)。詳見瀏覽器字典部署說明。

使用一個解析器實例來初始化kuroshiro,然後進行轉換操作:

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

API說明

構造器

示例

const kuroshiro = new Kuroshiro();

實例方法

init(analyzer)

使用一個解析器實例來初始化kuroshiro。你需要首先導入並初始化一個解析器。你可以使用上面提到的已實現的解析器插件。關於解析器的初始化方法請參照相應解析器的文檔說明。

參數

  • analyzer - 解析器實例。

示例

await kuroshiro.init(new KuromojiAnalyzer());

convert(str, [options])

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

參數

  • 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:"normal", to:"hiragana"});
// 結果:かんじとれたらてをつなごう、かさなるのはじんせいのライン and レミリアさいこう!
// spaced (空格分組)
kuroshiro.convert("感じ取れたら手を繋ごう、重なるのは人生のライン and レミリア最高!", {mode:"spaced", 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)

檢查輸入字元串中是否含有日文。

kanaToHiragana(str)

轉換輸入假名字元串至平假名。

kanaToKatakana(str)

轉換輸入假名字元串至片假名。

kanaToRomaji(str, system)

轉換輸入假名字元串至羅馬字。參數system可選值為"nippon", "passport", "hepburn" (默認值: "hepburn")。

羅馬字體系

kuroshiro支持三種羅馬字體系。

nippon: 日本式羅馬字。參照 ISO 3602 Strict。

passport: 護照式羅馬字。 參照日本外務省發布的 日文羅馬字對照表。

hepburn: 平文羅馬字。參照 BS 4812 : 1972。

想快速了解這些羅馬字體系的不同,可參考這個實用的網頁。

羅馬字轉換須知

長音

注音假名並不總能提供區分長音所需的發音資訊,因此僅根據假名拼寫直接轉換為羅馬字,無法可靠地還原實際發音。具體原因可以參考 なぜ フリガナでは ダメなのか?。

因此,kanaToRomaji() 在三種羅馬字體系下都不會根據假名拼寫推斷長音,但長音符 ー 仍會按所選體系處理。

例如,使用 kanaToRomaji() 轉換 こうし 時,nippon、passport、hepburn 三種體系分別得到 kousi、koushi、koushi。

這一直接轉換假名的限制,不妨礙 convert() 處理長音:它會利用解析器提供的發音資訊(如果有),漢字轉換為羅馬字時,無論是否使用注音模式也是如此。因此,轉換結果仍取決於解析器提供的發音資訊。

促音(っ/ッ)

不能重複後續輔音時,三種體系都用 ' 表示,例如 っい → 'i、あっ → a'。這是 kuroshiro 的約定,不表示額外的發音音節。

貢獻

請查閱文檔 CONTRIBUTING.

靈感源

  • kuromoji
  • wanakana

版權說明

MIT

當前上榜

  • 7

    即時里程碑 · 破星直播

    999 星 · 104 fork · 距下一條線

    里程碑 →

近 30 天勢頭

累計 Star 走勢

名次走勢

同榜競速 · 名次近鄰

← 回到榜單