首页 > 解决方案 > 具有多语言响应的 Rails Json

问题描述

我有一个具有移动客户端的控制器,当前的响应是英语,但是我质疑是否有办法自定义响应的语言。

前任:

英文:{ "success": false, "message": "您的登录名或密码错误" }

西班牙语:{ "success": false, "message": "Error con tu usuario o contraseña" }

并且诅咒“消息”的内容将位于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

谢谢。

标签: ruby-on-railsruby-on-rails-4internationalizationruby-on-rails-5rails-i18n

解决方案


你试过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

推荐阅读