Rails変換ヘルパーをオーバーライドする

Railsana

特定のロケールを使用したい、I18n.translate()またはI18n.t()使用したいのですが、I18n.localeは使用しませ毎回使いたくないので、関数自体をオーバーライドできたらいいなと思います。I18n.t(:my_key, locale: :my_locale)

私はそれを新しいヘルパーに入れようとしました:

# my_helper.rb
module MyHelper
  def translate(key, options = {})
    options[:locale] = MY_LOCALE
    I18n.translate key, options
  end
  alias :t :translate
end

これt('word')は、のような「ハードキー」では問題なく機能しますが、のような「ダイナミックキー」の正しいパスが見つかりませんt('.title')。これは、私のパーシャルのパスを使用する必要がありますde.users.form.title

助けてくれてありがとう!

ポール・フィオラヴァンティ

次の機能の間には混乱があるように思われます。

I18n.translate期待する「レイジールックアップ」(つまり、ルックアップキーがドットで始まる場合は現在のパーシャルにスコープする)を実行しません。それはの特徴であるActionView::Helpers::TranslationHelper#translateとともに、いくつかの他

遅延読み込みを取得するためのActionView::Helpers::TranslationHelper#translate呼び出しなしで、メソッドがオーバーライドされていますsuperしたがって、メソッドのオーバーライドを継続したい場合は、次のことをお勧めします。

# my_helper.rb
module MyHelper
  def translate(key, options = {})
    # If you don't want to ignore options[:locale] if it's passed in,
    # change to options[:locale] ||= MY_LOCALE
    options[:locale] = MY_LOCALE 
    super(key, options)
  end
  alias :t :translate
end

個人的には、t(:my_key, locale: :my_locale)オーバーライドなしでビューで毎回使用するか、せいぜいActionView::Helpers::TranslationHelper#translate特定のロケールを強制する追加のビジネスロジックで呼び出しをラップアラウンドする個別のヘルパーメソッドを使用したいと思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

define_methodを使用してRailsのパスヘルパーをオーバーライドする

分類Dev

CheckboxForをオーバーライドするヘルパーの作成

分類Dev

Laravel5のヘルパーをPHPUnitでオーバーライドする

分類Dev

Laravel5のヘルパーをPHPUnitでオーバーライドする

分類Dev

ヘルム値をオーバーライドする方法

分類Dev

部分変数はヘルパーメソッドをオーバーライドしますか?

分類Dev

yii2のモジュールの変換パスをオーバーライドします

分類Dev

Symfony 4ファイルコントローラーヘルパーバイナリファイルをHTML互換に変換する方法は?

分類Dev

コントローラーフィルターオーバーライドヘルパーを作成するにはどうすればよいですか

分類Dev

matlabのヘルプ関数をオーバーライドする方法は?

分類Dev

ルーメンでヘルパーを使用してドライバーパターンを実装する方法

分類Dev

ルーメンでヘルパーを使用してドライバーパターンを実装する方法

分類Dev

このコードで使用されている「オーバーライドメソッド」パターンを特定するためのヘルプが必要

分類Dev

Railsのモデルメソッドをオーバーライドする

分類Dev

Rails4-> selectヘルパーのパラメータ名を変更する

分類Dev

consul-templateのループで変数をオーバーライドする

分類Dev

ヘルム:名前のピリオドで値をオーバーライドする方法

分類Dev

スーパークラスから可変プロパティをオーバーライドする方法

分類Dev

Railsの強力なパラメーターの1つの属性をオーバーライドする

分類Dev

ヘルムのサブチャートの値をプログラムでオーバーライドする

分類Dev

Railsのdefault_scopeをオーバーライドする

分類Dev

Railsスキャフォールドジェネレーターをオーバーライドする

分類Dev

スーパークラスのインスタンス変数をオーバーライドする

分類Dev

ヘルパークラスの変数変換をリッスンする

分類Dev

AngularJS:ヘッダーのcellClassをオーバーライドする

分類Dev

Spreeのヘルパーのメソッドをオーバーライドすることはできません

分類Dev

タイプ内の仮想メソッドを変換メソッドでオーバーライドする

分類Dev

オーバーライドされた__doc__を使用するようにヘルプを強制する方法

分類Dev

既存のパイプをオーバーライドする方法

Related 関連記事

  1. 1

    define_methodを使用してRailsのパスヘルパーをオーバーライドする

  2. 2

    CheckboxForをオーバーライドするヘルパーの作成

  3. 3

    Laravel5のヘルパーをPHPUnitでオーバーライドする

  4. 4

    Laravel5のヘルパーをPHPUnitでオーバーライドする

  5. 5

    ヘルム値をオーバーライドする方法

  6. 6

    部分変数はヘルパーメソッドをオーバーライドしますか?

  7. 7

    yii2のモジュールの変換パスをオーバーライドします

  8. 8

    Symfony 4ファイルコントローラーヘルパーバイナリファイルをHTML互換に変換する方法は?

  9. 9

    コントローラーフィルターオーバーライドヘルパーを作成するにはどうすればよいですか

  10. 10

    matlabのヘルプ関数をオーバーライドする方法は?

  11. 11

    ルーメンでヘルパーを使用してドライバーパターンを実装する方法

  12. 12

    ルーメンでヘルパーを使用してドライバーパターンを実装する方法

  13. 13

    このコードで使用されている「オーバーライドメソッド」パターンを特定するためのヘルプが必要

  14. 14

    Railsのモデルメソッドをオーバーライドする

  15. 15

    Rails4-> selectヘルパーのパラメータ名を変更する

  16. 16

    consul-templateのループで変数をオーバーライドする

  17. 17

    ヘルム:名前のピリオドで値をオーバーライドする方法

  18. 18

    スーパークラスから可変プロパティをオーバーライドする方法

  19. 19

    Railsの強力なパラメーターの1つの属性をオーバーライドする

  20. 20

    ヘルムのサブチャートの値をプログラムでオーバーライドする

  21. 21

    Railsのdefault_scopeをオーバーライドする

  22. 22

    Railsスキャフォールドジェネレーターをオーバーライドする

  23. 23

    スーパークラスのインスタンス変数をオーバーライドする

  24. 24

    ヘルパークラスの変数変換をリッスンする

  25. 25

    AngularJS:ヘッダーのcellClassをオーバーライドする

  26. 26

    Spreeのヘルパーのメソッドをオーバーライドすることはできません

  27. 27

    タイプ内の仮想メソッドを変換メソッドでオーバーライドする

  28. 28

    オーバーライドされた__doc__を使用するようにヘルプを強制する方法

  29. 29

    既存のパイプをオーバーライドする方法

ホットタグ

アーカイブ