Coder Social home page Coder Social logo

kana's Introduction

Build Status go report card GoDoc

kana

Golang library for convertiong hiragana to romaji, katakana to romaji, romaji to hiragana, and romaji to katakana.

Installation

Simply install with go get:

go get github.com/gojp/kana

Usage

Convert hiragana or katakana to romaji:

s := kana.KanaToRomaji("バナナ") // -> banana
s = kana.KanaToRomaji("かんじ") // -> kanji

Convert romaji to hiragana or katakana:

s := kana.RomajiToHiragana("kanji") // -> かんじ
s = kana.RomajiToKatakana("banana") // -> バナナ

Tell whether strings are written with kana, kanji or latin characters:

kana.IsLatin("banana") // -> true
kana.IsLatin("バナナ") // -> false

kana.IsKana("banana") // -> false
kana.IsKana("バナナ") // -> true

kana.IsKanji("banana") // -> false
kana.IsKanji("減少") // -> true

Normalize a romaji string to a standardized form (from the form given by Google Translate, for example):

kana.NormalizeRomaji("Myūjikku") // -> myu-jikku
kana.NormalizeRomaji("shitsuree") // -> shitsurei

Please feel free to use, contribute, and enjoy! You can also see this in action at nihongo.io.

kana's People

Contributors

hanemile avatar hermanschaaf avatar ikeikeikeike avatar jue58 avatar shawnps avatar wataori avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kana's Issues

Documentation error

The readme says:

To use kana, you'll have to import it:

import "github.com/gojp/kana"
...
k := kana.NewKana()

However the library does not require an instance, and no such function is available.

Support for half-width hiragana/katakana/romaji

Would you be ok to add support for half-width characters?

On top of my head, what I believe would be useful functions:
IsFullWidth(s string) bool
IsHalfWidth(s string) bool
ToFullWidth(s string) string (replace every half width character with their full-width counterpart)
ToHalfWidth(s string) string

Note: converting half-width/full-width, is not that easy, because 'ガ' becomes 'ガ'.
If you are interested into adding it to the library, I can get working on a PR.

IsKatakana / IsHiragana being too permissive?

While working on the half-width support, I noticed that IsKatakana (as well as IsHiragana) are based on golang utf8 tables, and the range being used a probably too wide for what a japanese speaker would consider being a katakana or not.

For example, this was slightly unexpected:

  • IsKatakana("ㇰ") = true // attention ㇰ != ク and ㇰ != ク
  • IsKatakana("ウカ") = true

This even more:

  • IsKatakana("㋾") = true

And I would say this is wrong:

  • IsKatakana("㍓") = true

IsHiragana as fewer kirks, but still funny yet unexpected behavior. For example:

  • IsHiragana("🈀") = true
  • IsHiragana("𛁟") = true // \u1b05f

For IsKanji, I also suspect the range to be wider than what would make sense to a human reader, but considering the difficulty to put any kind of boundary to it, I've skipped checking.

ヂ is not handled correctly

The (rare) katakana 'ヂ' is not handled correctly in KanaToRomaji.

Test program:

package main

import (
    "fmt"

    "github.com/gojp/kana"
)

func main() {
	var test = "アイウエオダヂヅデド"
	fmt.Printf("Kana results: %s -> %s", test, kana.KanaToRomaji(test))
}

Output:
Kana results: アイウエオダヂヅデド -> aiueodaヂdudedo

Expected output:
Kana results: アイウエオダヂヅデド -> aiueodadidudedo

If you are interested, I can make a PR to fix it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.