簡體   English   中英

干驗證:動態更改語言環境?

[英]dry-validation: dynamically change locale?

我在Rails 5項目中使用Trailblazer 2.1(因此使用了干燥驗證(0.11.1))。

我有2種不同的語言區域設置綁定到用戶個人資料。

當我動態更改用戶的語言環境時-dry-validation不會注意到它-並始終以以前的語言環境產生驗證錯誤。

怎么了? 這是錯誤還是功能? 干驗證為什么不響應區域更改? 如何解決?

這是我的語言環境切換代碼:

class ApplicationController < ActionController::Base

  before_action :switch_locale

  def switch_locale

    I18n.locale = current_user.locale

  end

end

我酸痛地找到了解決方案。 這只是dry-validation內部的錯誤。 我發現並成功地解決了此問題:

config / initializers / dry_validation.rb

Rails.application.configure do
  Dry::Validation::Schema.configure do |config|
    config.messages = :i18n
  end

  Dry::Validation::Schema::Form.configure do |config|
    config.messages = :i18n
  end
end

# https://github.com/dry-rb/dry-validation/issues/368
# Monkey patch MessageCompiler to make the failing example pass:

module PatchMessageCompiler
  def default_lookup_options
    { locale: messages.default_locale }
  end
end

Dry::Validation::MessageCompiler.prepend PatchMessageCompiler

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM