Laravel翻译json HTTP响应消息

时间:2017-09-11 08:48:10

标签: laravel http laravel-5 localization

我使用进行多语言应用。我需要翻译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响应?

1 个答案:

答案 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)
                    }
                }