文档章节

mustache的国际化支持

漫天的沙
 漫天的沙
发布于 2015/06/14 23:44
字数 780
阅读 214
收藏 5
点赞 1
评论 0

一、国际化的实现

1、上一章中,我们在sprihg配置文件中配置了国际化信息文件前缀,同时定义了mustache的拦截器,这个实际上就是为了支持国际化。再将配置贴出:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:c="http://www.springframework.org/schema/c" xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
<context:component-scan base-package="com.zzq.test" />

<!-- mustache的视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.mustache.MustacheViewResolver">
<property name="cache" value="false" />
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".html" />
<property name="templateLoader">
<bean class="org.springframework.web.servlet.view.mustache.MustacheTemplateLoader" />
</property>
</bean>

<!-- 国际化信息文件 -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:message" />
</bean>

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="zh" />
</bean>

<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="locale" />
</bean>

<bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
<ref bean="messageInterceptor" />
</list>
</property>
</bean>

<!-- mustache模板中取i18n信息的拦截器 -->
<bean id="messageInterceptor" class="org.springframework.web.servlet.i18n.MustacheMessageInterceptor">
<constructor-arg ref="messageSource" />
<constructor-arg ref="localeResolver" />
</bean>
</beans>

2、测试

首先在message_zh.properties中添加select=选择,message_zh_TW.properties中添加select=選擇,然后再MyController中新增一个方法,并添加i18n.html,如下:

package com.zzq.test.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/my")
public class MyController {
	
	@RequestMapping("/hello.mu")
	public String hello(Model model){
		model.addAttribute("name", "zzq");
		//此处return的为模板,以WEB-INF/views为相对路径,.html为默认后缀,所以此处不加后缀。具体的后缀为mvc文件中配置
		return "hello";
	}
	
	@RequestMapping("/i18n.mu")
	public String i18n(){
		return "i18n";
	}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Page</title>
</head>
<body>
{{#i18n}}select{{/i18n}}
</body>
</html>

测试访问http://localhost:8080/my/i18n.mu?locale=zh  和http://localhost:8080/my/i18n.mu?locale=zh_TW分别可以看到中文简体和繁体。

二、分析

分析是由于配置了mustache的拦截器org.springframework.web.servlet.i18n.MustacheMessageInterceptor,查看拦截器可以看到,该类中指定了对于标签为i18n(可以通过配置文件修改这个值)的标签,将里面的值当作key进行了国际化处理,即{{#i18n}}select{{/i18n}},这边的select就是key,将select当作key去国际化文件查找匹配的值然后再回填到模板。

代码下载地址:http://www.oschina.net/action/code/download?code=48746&id=70650

上一篇:mustache的环境搭建

下一篇:mustache的标签使用


© 著作权归作者所有

共有 人打赏支持
漫天的沙
粉丝 10
博文 22
码字总数 18549
作品 0
厦门
高级程序员
Scala模板引擎--Scalate

Scalate 是一个基于 Scala 2.8 的模板引擎,用于生成文本信息和标签。 Scalate 支持以下模板格式: Mustache which is a Scala dialect of Mustache for logic-less templates which also wo...

匿名
2011/05/25
1K
0
模板引擎--LT

LT - Little Template engine of {{mustache}} 其他特性: 嵌套路径 LT 像JavaScript 一样支持嵌套路径,注意不能你不能读取 null 或者是未定义的值。 this is {{path.to.value}} 父路径 是指...

滔哥
2013/12/21
266
0
mustache.js (hogan.js) API中文版

翻译API文档,如有疏漏,还望读者不吝赐教。 英文原文地址 名称 mustache - Logic-less模板. 概要 典型Mustache模板示例: hash: 输出: 引言 可用于HTML,配置文件,源代码等,通过扩展标签(Ta...

wobuzhidao_
2014/03/05
0
0
ActFramework 1.0 正式发布, Java MVC 框架

ActFramework 是一个Java的非轻量级全栈式MVC框架. 和其他框架相比ActFramework的主要特点有: 热加载. 开发过程(包括新增方法变量)不需要重启系统, 随时可以看到最新代码的效果 强大的参数绑...

罗格林
2017/03/09
5.8K
72
mustache.js

mustache.js 是一个 Mustache 模板系统的 JavaScript 实现。 Mustache 模板语法的逻辑比较简单。它用于HTML,配置文件,源代码等。它的工作方式是通过通过以哈希值或者对象的方式扩展模板标签...

匿名
2012/03/16
9.9K
0
请问有没有人知道mustache怎么使用layout?

我看了一下文档http://mustache.github.io/mustache.5.html,只看到支持Partials,如下: ==== views/main.html ==== {{> views/part }} ==== views/part.html ==== from part.html 将会合成......

刘冲
2015/11/17
228
2
模板引擎编译程序--Temper

Temper 是极小的模板编译模块,通过单个实例,支持服务端和客户端使用。Temper 非常容易创建同构的 JavaScript 应用。 支持以下模板引擎: react-jsx jade ejs hogan.js mustache handlebar...

叶秀兰
2015/05/08
227
0
Skyogo/Super Mustache

Super Mustache 项目介绍 超级模板引擎Super Mustache 延续了Mustache经典的{{}}变量形式 代码比Mustache少90倍 速度比Mustache提升2倍 体积仅有400多b 安装教程 使用...

Skyogo
05/06
0
0
超级模板引擎 - Super Mustache

Super Mustache 项目介绍 超级模板引擎Super Mustache 延续了Mustache经典的{{}}变量形式 代码比Mustache少90倍 速度比Mustache提升2倍 体积仅有400多b 安装教程 使用<script>引入即可 使用说...

Skyogo
05/06
0
0
每日科技英文53: crow库(一个仿照python flask的C++ micro web framework)

1. demo 很熟悉的代码吧,和python flask库如此相像! 2. crow简介: Crow is very fast and easy to use C++ micro web framework (inspired by Python Flask) 3. 特点: Easy routing Simili......

随风而行之青衫磊落险峰行
2017/12/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
1
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
0
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
0
0
Java工具类—随机数

Java中常用的生成随机数有Math.random()方法及java.util.Random类.但他们生成的随机数都是伪随机的. Math.radom()方法 在jdk1.8的Math类中可以看到,Math.random()方法实际上就是调用Random类...

PrivateO2
今天
2
0
关于java内存模型、并发编程的好文

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在...

DannyCoder
昨天
0
0
dubbo @Reference retries 重试次数 一个坑

在代码一中设置 成retries=0,也就是调用超时不用重试,结果DEBUG的时候总是重试,不是0吗,0就不用重试啊。为什么还是调用了多次呢? 结果在网上看到 这篇文章才明白 https://www.cnblogs....

奋斗的小牛
昨天
2
0
数据结构与算法3

要抓紧喽~~~~~~~放羊的孩纸回来喽 LowArray类和LowArrayApp类 程序将一个普通的Java数组封装在LowArray类中。类中的数组隐藏了起来,它是私有的,所以只有类自己的方法才能访问他。 LowArray...

沉迷于编程的小菜菜
昨天
0
0
spring boot应用测试框架介绍

一、spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit、spring test、assertj、hamcrest、mockito、jsonassert、jsonpath),但是在数...

yangjianzhou
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部