`
hot88zh
  • 浏览: 182918 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

error_messages_for and error_message_on中文化

阅读更多

一般我们都要模型内使用validates_xxx_of 这样的确认信息。而这些信息是英文的,我们用三种方法来中文化它。


一、覆写:message:

validates_format_of :image_url,
:with => %r{.(gif|jpg|png)$}i,
:message => "必须是 GIF,JPG或PNG图片!!!"

使用这种方式时,我们就损失了一些通用信息的方便性。让我们看看第二种方式。

二、修改environment.rb文件:

在其中加入这些语句:

ActiveRecord::Errors.default_error_messages[:inclusion] = " 字段没有包括在列表内!"
ActiveRecord::Errors.default_error_messages[:exclusion] = " 字段已被保存过了!"
ActiveRecord::Errors.default_error_messages[:invalid] = " 字段是无效的!"
ActiveRecord::Errors.default_error_messages[:confirmation] = " 字段不匹配的信息!"
ActiveRecord::Errors.default_error_messages[:accepted] = " 字段必须接受此选项!"
ActiveRecord::Errors.default_error_messages[:empty] = " 字段不能为空!"
ActiveRecord::Errors.default_error_messages[:blank] = " 字段不能为空!"
ActiveRecord::Errors.default_error_messages[:too_long] = " 字段太长了(最大是 %d 个英文字符)!"
ActiveRecord::Errors.default_error_messages[:too_short] = " 字段太短了(最小是 %d 个英文字符)!"
ActiveRecord::Errors.default_error_messages[:wrong_length] = " 字段长度有错误(应该是 %d 个英文字符)!"
ActiveRecord::Errors.default_error_messages[:taken] = " 字段已经选择过了!"
ActiveRecord::Errors.default_error_messages[:not_a_number] = " 字段不是个数字!"

这样,你就获得了通用信息的方便性,即使你没有使用:message来覆写中文信息,你的view中显示的也是中文

但是我发现它有两个不便之处:一是修改时要重启WEBrick才能生效。二是在测试时会提示出错的。我用了第三种方式。

三、修改application_help.rb文件:

在该文件中加入下面语句:

ActiveRecord::Errors.default_error_messages = {
:inclusion => " 字段没有包括在列表内!" ,
:exclusion => " 字段已被保存过了!" ,
:invalid => " 字段是无效的!" ,
:confirmation => " 字段不匹配的信息!" ,
:accepted => " 字段必须接受此选项!" ,
:empty => " 字段不能为空!" ,
:blank => " 字段不能为空!" ,
:too_long => " 字段太长了(最大是 %d 个英文字符)!" ,
:too_short => " 字段太短了(最小是 %d 个英文字符)!" ,
:wrong_length => " 字段长度有错误(应该是 %d 个英文字符)!" ,
:taken => " 字段已经选择过了!" ,
:not_a_number => " 字段不是个数字!" ,
}

在Ruby On Rails里面,当你在对一些数据进行验证的时候,如果在视图里使用<%= error_messages_for “xxx” %><%= error_message_on “xxx”, “xxx” %> 方法输出错误信息的时候,ror会自动帮你加上<div class=”xxx”>xxx</div>等这样的HTML标签,可是有时候我们并不想使用系统默认的标签处理,尤其是在WAP编程的时候,因为这些HTML标签WML根本就解析不了,所以我就希望不输出这些标签,只要得到干净的错误信息就行了,其实实现这种思路很简单,首先:
1:在application_helper.rb的全局转helper类里定义如下方法:
 
  def clear_error_message_on(object, method, prepend_text = “”, append_text = “”, css_class = “formError”)
    if errors = instance_variable_get(”@#{object}”).errors.on(method)
      “#{prepend_text}#{errors.is_a?(Array) ? errors.first : errors}#{append_text}”
    end
  end
 
2:然后在需要显示错误信息的视图里调用这个方法就行,如:
<%= clear_error_message_on “page”, “title” %>

评论

相关推荐

    达梦JDBC报错中英文对照

    DM ErrorCode=1000, ErrorMessage=连接数据库失败 ``` 这里的 `1000` 是错误代码,"连接数据库失败" 是这个错误的中文描述。当JDBC驱动遇到无法连接到数据库的情况,就会返回这个错误信息。 其次,`test_messages_...

    ZendFramework中文文档

    1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 ... The MESSAGES metacommand 14.5.4.7. Using options to set metacommands for all rules 14.5.5. Adding Filter ...

    struts_i18n1_login

    JSP页面将根据Struts传递的ActionMessage或ActionError对象显示相应的内容。 总结,"struts_i18n1_login"实例展示了如何在Struts中实现国际化登录功能,这涉及到配置Struts、创建和管理资源包、在JSP页面中使用资源...

    SpringMVC国际化编缉器

    error.message=An error occurred, please try again later. ``` `messages_zh_CN.properties`: ``` login.button=登录 error.message=发生错误,请稍后重试。 ``` 3. **在视图层使用** 在JSP或Thymeleaf...

    webwork国际化

    在WebWork中,国际化主要通过资源配置文件来实现,这些文件通常以`.properties`格式存储,如`messages_en.properties`(英文)和`messages_zh_CN.properties`(简体中文)。每个文件包含了特定语言环境下的文本资源...

    Sturts2国际化简单示例(Internation)

    error.message=Invalid username or password ``` 而在`messages_zh_CN.properties`中: ```properties login.button=登录 error.message=用户名或密码错误 ``` 接下来,要在Struts2中使用这些资源文件,我们需要...

    struts 中国际化的使用

    String message = (String) ActionContext.getContext().getValueStack().findValue("error.message"); // ... } } ``` 4. **配置Struts配置文件**:在`struts.xml`中,为Action指定`namespace`和`action`,并...

    struts国际化功能

    messages.add("error", new ActionMessage("registration.error.email.exists")); saveErrors(request, messages); return mapping.findForward("input"); } // 登录成功逻辑... } } ``` 在JSP页面中,我们...

    Struts 之旅 - 多国语言

    messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("success.message")); saveErrors(request, messages); ``` `success.message`对应资源文件中的键,值会在页面上显示。 6. **JSP页面显示**: ...

    struts2国际化总结

    error.message=输入无效,请检查后重试 ``` **四、Struts2拦截器与国际化** Struts2使用拦截器(Interceptors)来处理请求,其中包括了`I18nInterceptor`。这个拦截器负责从请求中获取用户首选的语言设置,并将对应...

    struts1.x 最简洁国际化 源代码

    - Struts1提供了一套丰富的JSP标签库,如`&lt;bean:message&gt;`和`&lt;html:error&gt;`,这些标签可以方便地与资源包中的消息对应,动态显示本地化的文本。 5. **配置文件**: - 在`struts-config.xml`中,可以通过`message-...

    PSI-probe 汉化

    message.error=发生错误 ``` 汉化人员会对照英文版的 "messages.properties" 文件,逐条翻译这些键值对,确保中文版本的工具能够准确、流畅地传达原本的信息。 标签 "源码" 和 "工具" 暗示了 PSI-probe 是一个包含...

    SSM笔记-SpringMVC的语言国际化

    在JSP或Thymeleaf等视图技术中,你可以使用`&lt;spring:message&gt;`标签来获取和显示国际化的消息。 ```jsp &lt;spring:message code="welcome.message" /&gt; ``` 7. **请求上下文的Locale** 用户的语言偏好通常通过...

    Struts2 使用 Struts2 实现国际化

    在Struts2中实现国际化是一项关键功能,它允许应用程序为不同的语言和地区提供本地化的用户体验。下面将详细介绍如何使用Struts2来实现国际化,并探讨相关的源码和工具。 **一、国际化基础** 国际化(i18n)是软件...

    struts2--国际化入门

    本教程将引导你入门Struts2的国际化功能,这是一项允许应用程序支持多种语言的重要特性。 在Struts2中实现国际化,首先你需要创建资源文件,这些文件通常以`.properties`为扩展名,例如`messages.properties`和`...

    struts1.2国际化和标签验证

    例如,我们可以创建一个名为`messages.properties`的英文资源文件,然后创建对应的`messages_zh_CN.properties`的中文资源文件,分别存储英文和中文的字符串。 为了在Struts1.2中使用这些资源束,我们需要在`struts...

    Struts国际化处理的配置

    Struts是Java Web开发中的一款经典MVC框架,它的国际化(i18n)处理是开发者经常遇到的一个问题。国际化处理使得应用能够支持多种语言,为全球用户提供更友好的体验。下面将详细介绍Struts如何进行国际化配置。 ...

    07Struts错误处理

    &lt;bean:message key="error.username.required" bundle="messages"/&gt; ``` - **中文支持:** - 资源文件中的中文问题可以通过使用`native2ascii`工具来解决。该工具可以将含有中文字符的文件转换为适合在Java中...

Global site tag (gtag.js) - Google Analytics