实现自定义验证中文消息就是使用国际化来支持中文,这个可以使用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文件如下:
这时我们再来提交一次表单,看验证消息提示结果为如下: