自定义中文验证消息

Posted SixEvilDragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义中文验证消息相关的知识,希望对你有一定的参考价值。

实现自定义验证中文消息就是使用国际化来支持中文,这个可以使用rails的i18n接口来完成。

步骤一:取消application.rb 如下注释,并将默认语言设置改成简体中文zh-CN(这个任意命名即可,因为这里如何命名那么转换语言的时候就去找同样命名的yml文件,比如这里命名为zh-CN那么我们创建yml文件也必须是zh-CN.yml文件)。

修改前:

修改后:

步骤二:重启rails服务器

因为config目录下的文件都是配置文件,凡是配置的修改都需要重启rails服务器来使得修改生效。

步骤三:在如下目录添加保存自定义的中文消息的yml文件,如下:

注意----该文件缩进必须是两个空格,我们不要使用Tab键盘

步骤四:找一个页面试试,如下:

原来的代码和效果:

将视图代码该处使用语言转换为简体中文的代码及效果:

如下使用国际化的接口t函数(该函数意思就是translate),然后翻译为navnbar.about也就是之前yml文件中的"关于"

注:这里我们是手动实现国际化,当然有个gem叫rails-i18n里面保存了很多常用的国际化语言,也可以使用这个。

步骤五:提交空表单如下:

在将默认语言设置改成简体中文zh-CN之后,自定义验证消息就会默认使用简体中文了(这是验证机制默认的选择),所以我们不必像上面那样将about链接手动设置为国际化,它就会自动去使用简体zh-CN.yml文件,如下还没定义相关的中文所以如下:

那么自定义的中文验证消息如何写?很简单:

translation missing: zh-CN.activerecord.errors.models.user.attributes.name.blank

如上可以看出对应的转换在zh-CN.yml文件中(最开始是zh-CN),然后层次的缩进依次是:activerecord及errors及models及user一直下去:最后的yml文件如下:

这时我们再来提交一次表单,看验证消息提示结果为如下:

 

再来看一下其他页面,发现如下很多地方使用自定义的转换没有定义所以显示如下:

解决办法是向上面一些去定义对应的语言转换数据,但是我们有一种更快的办法,来到github的如下项目的页面:

然后在在页面空白处按下键盘上的小写t就会进入搜索:

 

 

然后点击进入该文件查看关于时间的内容(因为这个项目包含许多常用语言转换,所以我们可以直接来这里找完复制,省得一个个自己写,而且我们不需要安装这个gem,就来github复制yml文件里想要的内容即可)

复制到项目的yml文件后如下:

 

以上是关于自定义中文验证消息的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 验证自定义消息

如何从控制器方法验证返回自定义错误消息

Laravel 自定义验证消息参数

自定义中文验证消息

Laravel Spark 中的自定义验证消息

rails 3 的验证自定义消息