Ruby on Railsで漢字/ひらがな/カタカナをローマ字に変換したい

  • 9
    Like
  • 0
    Comment

はじめに

漢字からローマ字に変換したい!と思って、rubyで使えるライブラリがないか調べました。
意外にもあんまりなかったので、メモしておこうと思います。

romaji

カタカナ → ローマ字
ローマ字 → カタカナ
※漢字からは変換できない。が、便利だと思ったのでメモ。

Github: https://github.com/makimoto/romaji

gem 'romaji'
bundle install

使い方

require "romaji"

Romaji.kana2romaji "スシ" #=> "sushi"
Romaji.romaji2kana "sushi" #=> "スシ"
Romaji.romaji2kana "sushi", :kana_type => :hiragana #=> "すし"
require "romaji/core_ext/string"

"sushi".kana #=> "スシ"
"スシ".romaji #=> "sushi"
a = "sushi"
a.kana!
p a #=> "スシ"
a.romaji!
p a #=> "sushi"

簡単ですね!

KAKASI

漢字かなまじり文をひらがな文やローマ字文に変換する

漢字 → ローマ字
ひらがな → ローマ字
※混ざっていてもOK!

KAKASIはフリーソフトウェアです。
http://kakasi.namazu.org/index.html.ja

上記URLから最新版のソースをダウンロードします。
(現時点では、kakasi-2.3.6)

ダウンロードしてきたら以下のコマンドを実行

cd kakasi-2.3.6
./configure
make
make install

gem kakasiをinstall

gem "kakasi"
bundle install

rubyとkakasiの連携!

github: https://github.com/eitoball/kakasi-ruby.git

gem 'kakasi'
bundle install

terminalから

git clone https://github.com/eitoball/kakasi-ruby.git
cd kakasi-ruby
ruby extconf.rb
make

引用
Ruby2.0以降を使う場合はここでエラーがでるので、ソースを変更する。
(らしいです!)

mv kakasi.c kakasi.c.org # 元ソースバックアップのため
cat kakasi.c.org | sed "s/RSTRING\(([^)]*)\)->len/RSTRING_LEN\\1/" | sed "s/RSTRING\(([^)]*)\)->ptr/RSTRING_PTR\\1/" > kakasi.c
make

これでOK!

使い方

require 'kakasi'

Kakasi.kakasi('-Ja -Ha', "兵庫県") 
 #=> "hyougoken"

Kakasi.kakasi('-JK -HK', 'Unfortunately, 今日は雨です。')
 #=> "Unfortunately, コンニチハアメデス。"

Kakasi.kakasi('-Ja -Ha', 'Unfortunately, 今日は雨です。')
 #=> "Unfortunately, konnichihaamedesu。"

変換したい文字の指定は以下を参照して行います。

J : 漢字
a : ローマ字
H : ひらがな
K : カタカナ

漢字からローマ字に変換できるgemは調べたところ、KAKASIしかなかった。。
KAKASI、便利!

コメント

どうしてもローマ字にしたいっていう場面はあんまりないと思うのですが、
使いたい場面があったのでまとめました。。
が、しかし!
実装完了後、仕様を再度確認してみると、、、
そこには「ローマ字」ではなく「英語」がががががががが。
泣く泣くkakasiとバイバイし、I18nを使いました。

色々苦労したけど、年末案山子と過ごせてよかったです。
ありがとうございました。

参照