γ―γγ«γ <--> WanaKana <--> γγͺγγͺ
Javascript utility library for detecting and transliterating Hiragana, Katakana, and Romaji
Demo
Visit the website to see WanaKana in action.
Usage
Browser
Use the minified (UMD) bundle (with legacy 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>
Node
Install
npm install wanakana
import wanakana from 'wanakana';
// or
import { toKana, isRomaji } from '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 wanakana/umd/*.js
includes full 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 are ports created by the community:
- Java (MasterKale/WanaKanaJava)
- Rust (PSeitz/wana_kana_rust)