`

Grails 国际化

阅读更多

 

国际化

通过潜在支持Spring MVC国际化标准,Grails支持国际化标准(i18n)开箱即用。在Grails中,你能够根据用户属地定制该地区语言的文字。引用Java语言中的 Locale 文档定义:

Locale 对象描述了特定的地理、政治和文化地区。需要 Locale来执行其任务的操作称为本地化操作,它使用 Locale为用户量身定制信息。例如,显示一个数值就是本地化操作,应该根据用户本国家、地区或文化的风俗/传统来格式化该数值。

一个Locale对象由language codecountry code组成。比如,en_US是美国英语的代码,而en_GB是英国英语的代码。

1 理解消息绑定

现在你知道了本地化,为了在Grails中使用它们,你不得不创建你想显示的不同语言信息资源。Grails中的信息资源以简单的java属性文件格式放置在grails-app/i18n目录下。

每个资源束根据规则,以messages名字开始和locale结束。Grails在grails-app/i18n下发布了一串不同语言范围内的内置信息,例如:

messages.properties 
messages_de.properties 
messages_es.properties 
etc.

默认情况Grails会在messages.properties文件中检索信息,除非用户已经指定了一个自定义本地化文件。通过创建一个新的以 locale标签结尾的属性文件,你可以创建你感兴趣的属于自己的信息资源。比如属于英式英语范畴的 messages_en_GB.properties。

2 修改本地化

默认情况用户地区从传进来的 Accept-Language头部得知。然而 通过简单得给Grails传进lang参数作为请求参数,用户就可以更改地区了:

/book/list?lang=es

Grails 会自动更改用户地区,并把这个值存放在cookie里,随后的各种请求会有个新的头部。

3 读取信息

视图中读取信息

你 通常最需要信息的地方是在视图内。要在视图内读取信息,使用message标签就可以了,如下:

<g:message code="my.localized.content" />

只要你在带有合适locale后缀的messages.properties文件有个key键,比如下面这种格式,Grails就会找到相对应的信息:

my.localized.content=Hola, Me llamo John. Hoy es domingo.

注 意有时候你需要向相应的信息传递参数。参考下面这个message标签:

<g:message code="my.localized.content" args="${ ['Juan', 'lunes'] }" />

还有可能在信息中使用定位参数:

my.localized.content=Hola, Me llamo {0}. Hoy es {1}.

控制器和标签库中读取信息

因为你可以在controllers中像方法一样使用标签,所以在controllers中读取信息也很经常,如下:

def show = { 
      def msg = message(code:"my.localized.content", args:['Juan', 'lunes']) 
}

tag libraries中使用的方法一样,但是注意如果你的标签库使用了不同的namespace,你需要使用g.前缀:

def myTag = { attrs, body -> 
 def msg = g.message(code:"my.localized.content", args:['Juan', 'lunes']) 
}

4 脚手架和i18n

Grails 没有发布可以生成控制器和视图的i18n特性脚手架模板。然而i18n模板插件可以提供i18n特性脚手架模板,这些模板与默认的脚手架模板一样,除了它们为标签,按钮等定义信息时使用message标签外。

首先用下面的这个命令安装i18n模板:

grails install-plugin i18n-templates

参考reference on the wiki,它里面了解释怎么使用i18n模板。

分享到:
评论

相关推荐

    Grails1.1中文文档

    基于 Spring 的 MessageSource 核心概念的国际化 (i18n) 支持 基于 Spring 的抽象事务概念的事务服务层 所有这些都非常易于使用,这得益于 Groovy 语言的强大以及 Domain Specific Languages (DSLs) 的广泛使用。 ...

    Grails 教程

    基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持 基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言(Domain Specific Language,DSL),以上那些特性变得...

    Grails权威指南

     8.4 国际化支持  8.4.1 标签  8.5 使用布局和模板  8.5.1 布局演示  8.5.2 按照惯例布局  8.5.3 使用meta标签进行布局  8.5.4 演示布局  8.5.5 理解模板  8.5.6 共享模板  ...

    GRails 中文帮助文档(参考手册)和安装开发介绍帮助

    基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持 基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言(Domain Specific Language,DSL),以上那些特性变得...

    grails-开源框架使用指南

    基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持 基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言(Domain Specific Language,DSL),以上那些特性变得...

    Grails 中文参考手册

    7.4 验证和国际化 8. 服务层 8.1 声明式事务 8.2 服务的作用域 8.3 依赖注入和服务 8.4 使用Java的服务 9. 测试 9.1 单元测试 9.2 集成测试 9.3 功能测试 10. 国际化 10.1 理解信息绑定 10.2 改变Locales 10.3 读取...

    Grails——web开发应用

    本文主要介绍如何运用Grails框架进行快速Web应用开发。文章首先简单介绍了Grails框架开发环境;然后,在分析GrailsMVC模式实现和...最后,还针对安全权限控制和国际化等问题充分利用Grails插件给出了相应的解决方案。

    Grails开源框架 - 使用指南

    不用重新启动服务器就可以进行重新加载利用内置的Spring 容器实现依赖注入基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持基于Spring事务抽象概念,实现事务服务层  借助于功能强大的Groovy动态...

    使用Grails快速开发Web应用.rar

    不用重新启动服务器就可以进行重新加载利用内置的Spring 容器实现依赖注入基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持基于Spring事务抽象概念,实现事务服务层  借助于功能强大的Groovy动态...

    grails-docs-2.0.3.zip

    基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持 基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言(Domain Specific Language,DSL),以上那些特性变...

    java中的Grails开源框架 - 使用指南(chm)

    基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持 基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言(Domain Specific Language,DSL),以上那些特性变得...

    Grails实战教程-整合版

    现如今,基于Java的网站开发明显过于复杂,远超实际工作需要。在Java领域中,大部分的网站开发框架也没有严格的...使用Spring的MessageSource实现国际化(i18n) 一个基于Spring事务抽象的事务层 借助功能强大的Groovy

    django-i18nfield:将国际化字符串存储在Django模型中并提供完整格式支持

    它还缺乏对国际化字段进行有用的查找,搜索和索引的能力。 如果其中一项对您很重要,则该项目不适合您,请选择我们上面链接的一项。 但是,如果这些限制对您来说很好,那么这将为您提供一个非常轻便,易于使用和...

    Spring攻略(第二版 中文高清版).part2

    11.7 国际化(I18n)信息属性 458 11.7.1 问题 458 11.7.2 解决方案 458 11.7.3 工作原理 458 11.8 改变永久性存储系统 461 11.8.1 问题 461 11.8.2 解决方案 461 11.4.3 工作原理 461 11.9 日志 ...

    Spring攻略(第二版 中文高清版).part1

    11.7 国际化(I18n)信息属性 458 11.7.1 问题 458 11.7.2 解决方案 458 11.7.3 工作原理 458 11.8 改变永久性存储系统 461 11.8.1 问题 461 11.8.2 解决方案 461 11.4.3 工作原理 461 11.9 日志 ...

Global site tag (gtag.js) - Google Analytics