γ―γγ«γ <--> WanaKana <--> γγͺγγͺ
Javascript utility library for detecting and transliterating Hiragana, Katakana, and Romaji
Demo
Visit the website to see WanaKana in action.
Usage
In the browser without a build step, use the minified (UMD) bundle (with browser polyfills)
<head>
<meta charset="UTF-8">
<script src="https://unpkg.com/wanakana"></script>
</head>
<body>
<input type="text" id="wanakana-input" />
<script>
var textInput = document.getElementById('wanakana-input');
wanakana.bind(textInput, /* options */); // uses IMEMode with toKana() as default
// to remove event listeners: wanakana.unbind(textInput);
</script>
</body>
ES Modules or Node
Install
npm install wanakana
ES Modules
import * as wanakana from 'wanakana';
// or
import { toKana, isRomaji } from 'wanakana';
Node (>=12 supported)
const wanakana = require('wanakana');
Documentation
Quick Reference
/*** DOM HELPERS ***/
// Automatically converts text using an eventListener on input
// Sets option: { IMEMode: true } with toKana() as converter by default
wanakana.bind(domElement [, options]);
// Removes event listener
wanakana.unbind(domElement);
/*** TEXT CHECKING UTILITIES ***/
wanakana.isJapanese('ζ³£γθ«γοΌγοΌοΏ₯ο½ο½
ο½ο½ο½ο½ο½')
// => true
wanakana.isKana('γγΌγ’')
// => true
wanakana.isHiragana('γγγΌ')
// => true
wanakana.isKatakana('γ²γΌγ ')
// => true
wanakana.isKanji('εθ
Ή')
// => true
wanakana.isKanji('ε’γ')
// => false
wanakana.isRomaji('TΕkyΕ and Εsaka')
// => true
wanakana.toKana('ONAJI buttsuuji')
// => 'γͺγγΈ γΆγ£γ€γγ'
wanakana.toKana('εΊ§η¦
βzazenβγΉγΏγ€γ«')
// => 'εΊ§η¦
γγγγγγΉγΏγ€γ«'
wanakana.toKana('batsuge-mu')
// => 'γ°γ€γγΌγ'
wanakana.toKana('wanakana', { customKanaMapping: { na: 'γ«', ka: 'bana' }) });
// => 'γγ«banaγ«'
wanakana.toHiragana('toukyou, γͺγͺγ΅γ«')
// => 'γ¨γγγγγ γγγγ'
wanakana.toHiragana('only γ«γ', { passRomaji: true })
// => 'only γγͺ'
wanakana.toHiragana('wi', { useObsoleteKana: true })
// => 'γ'
wanakana.toKatakana('toukyou, γγγγ')
// => 'γγ¦γγ§γ¦γ γͺγͺγ΅γ«'
wanakana.toKatakana('only γγͺ', { passRomaji: true })
// => 'only γ«γ'
wanakana.toKatakana('wi', { useObsoleteKana: true })
// => 'γ°'
wanakana.toRomaji('γ²γγγͺγγ«γΏγ«γ')
// => 'hiragana katakana'
wanakana.toRomaji('γ²γγγͺγγ«γΏγ«γ', { upcaseKatakana: true })
// => 'hiragana KATAKANA'
wanakana.toRomaji('γ€γγγ', { customRomajiMapping: { γ: 'zi', γ€: 'tu', γ: 'li' }) };
// => 'tuzigili'
/*** EXTRA UTILITIES ***/
wanakana.stripOkurigana('γη₯γ')
// => 'γη₯'
wanakana.stripOkurigana('θΈγΏθΎΌγ')
// => 'θΈγΏθΎΌ'
wanakana.stripOkurigana('γθ
Ή', { leading: true });
// => 'θ
Ή'
wanakana.stripOkurigana('γ΅γΏγγ', { matchKanji: 'θΈγΏθΎΌγ' });
// => 'γ΅γΏγ'
wanakana.stripOkurigana('γγΏγΎγ', { matchKanji: 'γη₯γ', leading: true });
// => 'γΏγΎγ'
wanakana.tokenize('γ΅γ΅γγ')
// => ['γ΅γ΅', 'γγ']
wanakana.tokenize('hello η°δΈγγ')
// => ['hello', ' ', 'η°δΈ', 'γγ']
wanakana.tokenize('I said η§γ―γγγζ²γγ', { compact: true })
// => [ 'I said ', 'η§γ―γγγζ²γγ']
Important
Only the browser build via unpkg or the root wanakana.min.js
includes polyfills for older browsers.
Contributing
Please see CONTRIBUTING.md
Contributors
- Mims H. Wright β Author
- Duncan Bay β Author
- Geggles β Contributor
- James McNamee β Contributor
Credits
Project sponsored by Tofugu & WaniKani
Ports
The following ports have been created by the community:
- Python (Starwort/wanakana-py) on PyPI as
wanakana-python
- Java (MasterKale/WanaKanaJava)
- Rust (PSeitz/wana_kana_rust)
- Swift (profburke/WanaKanaSwift)
- Kotlin (esnaultdev/wanakana-kt)
- C# (kmoroz/WanaKanaShaapu)
- Go (deelawn/wanakana)