質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

3042閲覧

tメソッドを何度も書かなくて済む方法を知りたい

KzM

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2016/08/18 07:14

###前提
「英語・日本語・韓国語・タイ語」に対応したページを作ろうとしています
各言語のymlファイルを作って(en.yml ja.yml ko.yml th.yml)
それらをhtmlで呼び出す際にtメソッドを用いているのですが
tメソッドが多くなりすぎて、コードが大変見づらくなっているため改善したいです。

###該当のソースコード

ruby

1t(:aiueo, scope: "a.b.c")

###試したこと
eachで回せるところは記述量を減らすことはできる

###実現したいこと
ヘッダーとフッターにそれぞれ

ruby

1##ヘッダー 2t(:header, scope: "a.b.c") 3##フッター 4t(:footer, scope: "a.b.c")

と書かなければいけない時に、記述を簡単にする方法がありましたら
教えていただきたいです。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

前提として、翻訳によって出力されるものは基本的に見た目に関わる部分なので、正義はなさそうということ。
同時にそのタイプの最適化は一時的に効率化しますが、
あとで仕様変更するときにものすごくしんどくなるケースが多いです。


その上で回答というより、提案?

  1. ActiveRecordに寄せられるものはできるだけ寄せる

form_forなどを使っていれば、自動的に翻訳されるので便利
2. モデル準拠の定数などは、enumか、inumを使ってみるとか?
3. コントローラとかアクションの名前を使って全体を連想構造化


3はものすごーく数が多くて、しかもActiveRecordとかに寄らなくて、
かつそれだけ対応言語があるなら効果が出そうです。

class AssociationTranslateHelper def t tag=nil, scope: nil scope ||= [controller.controller_name, controller.action_name] I18n.t('views.' + (scope << tag).compact.join('.')) end end
# HogesController # HugaAction <%= t(:header) %> # => t('views.hoges.huga.header') と同等

名前空間とかは適当なので、適宜合わせてください。
actionをまたいで利用する場合が厄介ですかね。

それはまた、コントローラ固有のものと、そうでないものに分けて使い分けるしかない気がします。

投稿2016/09/06 19:07

TatumakiGen

総合スコア72

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問