@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Ruby Hash のキーを入れ替える

Hash#delete で削除した value を新しい key とともに元の Hash に代入する。

data['new_key'] = data.delete('old_key')

https://github.com/kyanny/playground/blob/gh-pages/ruby-yaml-replace-locale-hash-replace-key/a.rb

日本語がメインロケールなアプリケーションを作っていて、 I18n で ja.yml にいろいろ追加していったが、 webtranslateit.com で管理するために(あと自社特有のワークフローに合致させるために) とりあえず中身が空っぽでキーだけ揃ってる en.yml を作りたい、ということがあったので。

https://github.com/kyanny/playground/blob/gh-pages/ruby-yaml-replace-locale-hash-replace-key/ja.yml

のような YAML ファイルを元に、

https://gist.github.com/kyanny/218e6e1ab123e0f96cca

のような YAML ファイルができる。これをインポートしてから en.yml を WTI 上のメインロケールにすれば、翻訳済みのキーの値を失わずに済む。