我使用laravel-5.4进行多语言应用。我需要翻译HTTP标头的ajax响应。我在阿拉伯语部分中有以下消息:
عفواولكنهناكالخطأالتالي:422 Unprocessable Entityمعرسالةخاصةتقول:
这是一个阿拉伯语内容,我也希望翻译“ Unprocessable Entity 422 ”这几个字。
我尝试修改json方法的$headers
数组参数,如下所示:
return response()->json([__('The status selected is not Equipment related status')], 422,['Status Code' => __('Any translable message')], JSON_UNESCAPED_UNICODE);
但是,设置像['Status Code' => __('Any translable message')]
这样的headers参数会产生内部服务器错误。
如何正确翻译该HTTP响应?
答案 0 :(得分:0)
我所做的唯一解决方案是客户端解决方案。使用AJAX(Jquery),我在视图str.replace
文件中使用blade
,如下所示:
error: function(xhr, status, response ){
if ( status == "error" ) {
var msg = "{{__("Sorry but there was an error: ")}}";
statusText = xhr.statusText.replace('Unprocessable Entity','{{__('Unprocessable Entity')}}')
$( "#modal-body" ).html( msg + xhr.status + " " + statusText+ " {{__("With custom message")}}:<br> "+ xhr.responseText );
//console.log(xhr)
}
}
通过这种方式,我使用Javascript字符串对象的方法replace
替换消息,将英语单词替换为其阿拉伯语翻译statusText = xhr.statusText.replace('Unprocessable Entity','{{__('Unprocessable Entity')}}')
上述代码的HTML输出如下:
error: function(xhr, status, response ){
if ( status == "error" ) {
var msg = "عفوا قد حدث خطأ: ";
statusText = xhr.statusText.replace('Unprocessable Entity','بيان غير قابل للمعالجة')
$( "#modal-body" ).html( msg + xhr.status + " " + statusText+ " With custom message:<br> "+ xhr.responseText );
//console.log(xhr)
}
}