kuroshiro是一款十分方便使用的日文轉換注音工具,主要針對日文文本,進行到平假名、片假名及羅馬字的轉換,並支持注音假名、送假名 (旁註音)等注音模式。
其他說明語言:English, 日本語, 簡體中文, 繁體中文, Esperanto, 한국어。
你可以在這裡查看在線演示。
- 日文文本 => 平假名、片假名、羅馬字
- 支持注音假名和送假名
- 🆕支持多種語素解析器
- 🆕支持多種羅馬字體系
- 實用日語工具
- 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 遷移尚未完成,目前暫停維護,暫不建議用於新專案。詳情請參閱維護狀態說明。
首先使用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);
});示例
const kuroshiro = new Kuroshiro();使用一個解析器實例來初始化kuroshiro。你需要首先導入並初始化一個解析器。你可以使用上面提到的已實現的解析器插件。關於解析器的初始化方法請參照相應解析器的文檔說明。
參數
analyzer- 解析器實例。
示例
await kuroshiro.init(new KuromojiAnalyzer());轉換指定的字元串到指定的音節文字(可在選項中配置注音模式等設置)。
參數
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("あ");判斷輸入字元是否是平假名。
判斷輸入字元是否是片假名。
判斷輸入字元是否是假名。
判斷輸入字元是否是日文漢字。
判斷輸入字元是否是日文。
檢查輸入字元串中是否含有平假名。
檢查輸入字元串中是否含有片假名。
檢查輸入字元串中是否含有假名。
檢查輸入字元串中是否含有日文漢字。
檢查輸入字元串中是否含有日文。
轉換輸入假名字元串至平假名。
轉換輸入假名字元串至片假名。
轉換輸入假名字元串至羅馬字。參數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
