У меня есть контроллер с мобильным клиентом, в настоящее время ответ на английском языке, однако я задаюсь вопросом, есть ли способ настроить язык ответа.
Бывший:
English: { "success": false, "message": "Error with your login or password" }
Spanish:{ "success": false, "message": "Error con tu usuario o contraseña" }
и, к сожалению, содержимое «сообщения» будет находиться в файле конфигурации языка, который есть у рельсов:
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
Спасибо.





Пробовали 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
Как предложил @claasz, прочитайте руководство Rails по интернационализации guides.rubyonrails.org/i18n.html
Я на пути к документации, кстати... решение, которое вы дали, отлично работает :)
но если у вас нет заголовка X-Lang, вы всегда получаете локаль по умолчанию. Впрочем, это идея :)
Настройка интернационализации (I18n) для Rails должна быть почти одинаковой для ответов HTML и JSON. Посмотрите на файл официальный учебник.
Итак, в запросе я должен установить язык внутри заголовка, чтобы API мог перевести сообщение?