Rails Json具有多语言响应

时间:2019-05-28 13:30:35

标签: ruby-on-rails ruby-on-rails-4 internationalization ruby-on-rails-5 rails-i18n

我有一个带有移动客户端的Controller,响应当前为英语,但是我质疑是否有一种自定义响应语言的方法。

例如:

  

英语:{“成功”:否,“消息”:“您的登录名或   密码”}

     

西班牙文:{“成功”:false,“消息”:“错误的用法   对比”“}

并且诅咒“消息”的内容将位于rails具有的语言配置文件中:

  

en.yml

  

es.yml

这是生成响应的函数。

def invalid_login_attempt
    warden.custom_failure!
    render :json => { :success => false, :message=> "Error with your login or password" }, :status => 401
  end

谢谢。

2 个答案:

答案 0 :(得分:1)

您尝试过I18n.t吗?

render :json => { :success => false, :message=> I18n.t('your_key') }, :status => 401

例如,您可以根据某些条件为ApplicationController中的每个请求设置语言环境

before_action :set_locale

def set_locale
  I18n.locale = request.headers["X-Lang"] || I18n.default_locale
end

答案 1 :(得分:1)

为Rails设置国际化(I18n)对于HTML和JSON响应应该几乎相同。看看official tutorial