LoginSignup
19
11

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-12-28

はじめに

漢字からローマ字に変換したい!と思って、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を使いました。

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

参照

19
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
11