Gettextの .poファイルから I18N用ローカライズ用ファイルを作るコマンド
現在、既存のRails2.1 で書かれたRailsアプリのRails2.3対応を行っています、Rails2.2で入ったI18n機能を使うのですがActiveRecordのバリデーションエラー表示等で必要なテーブル名、カラム名のローカライズ用ファイルが必要になります。
そこで、従来のGettextの .po ファイルから I18n 用のローカライズファイル(YAML形式)を作るコマンドを書いてみました。
適宜修正して使って下さい :-)
#!/usr/bin/env ruby require './config/environment' def sp2us(s) s.gsub(' ', '_') end po_file = IO.read("po/ja/XXXXX.po") msgs = [] po_file.scan(/msgid "(.*?)"\nmsgstr "(.*?)"/m) {|s| msgs << s} puts "ja-JP: activerecord: models:" msgs.select {|m| m[0] != "" && m[0] !~ /\|/}.each{|m| puts " #{sp2us(m[0])}: #{m[1]}"} puts " attributes:" table0 = "" msgs.select {|m| m[0] != "" && m[0] =~ /\|/}.each {|m| table, column = m[0].split("|") puts " #{table.underscore}:" if (table0 != table) table0 = table puts " #{sp2us(column).downcase}: #{m[1]}" }