当用户将站点语言切换为非英语时,我的Yii 2应用程序(基于基于应用程序的方案)仍显示异常的英文标题,例如NotFoundHttpException.任何其他页面元素均已正确翻译.异常标题存储在哪里?我该如何解决这个问题?
我尝试搜索异常类(NotFoundHttpException> HttpException> UserException> Exception),却一无所获.我浏览了基于翻译的文件,发现/ vendor / yiisoft / yii2 / messages /文件仅包含请求的视图“ {name}”.和页面未找到.翻译字符串.没有找到或找不到(用于以非英语语言正确翻译NotFoundHttpException(及其他)异常标题的字符串.
相关阅读:
> Yii2 Forum post,
> Yii2 GitHub issue.
解决方法:
没有错误或状态代码消息的内置转换.可以实现自定义ErrorAction来转换HTTP响应代码.yii\web\ErrorAction
文档中包含有关如何进行操作的详细信息.
一种替代解决方案是使用自定义HttpExceptions并覆盖getName函数,但这将要求您复制要使用的所有错误类.
例:
翻译特征:
namespace app\errors;
use Yii;
trait TranslateHttpCodes {
public function getName()
{
return Yii::t('app', parent::getName());
}
}
namespace app\error;
class NotFoundHttpException extends \yii\web\NotFoundHttpException
{
use TranslateHttpCodes;
}
至于错误消息,Yii错误构造函数将消息作为可选参数,因此可以自由选择消息.
throw new NotFoundHttpException(\Yii::t('app', 'The requested page does not exist.');