wanakana

JS library that transliterates between japanese kana and roman letters.


Keywords
Japanese, kana, katakana, hiragana, romaji
License
MIT
Install
bower install wanakana

Documentation

γƒ―γƒŠγ‚«γƒŠ <--> 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)

https://unpkg.com/wanakana

<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

Extended API reference

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

Credits

Project sponsored by Tofugu & WaniKani

Ports

The following ports have been created by the community: