用freemarker生产静态页面文件,支持多语言

FreeMarkerTest:

 1   import  java.io.BufferedWriter;
 2   import  java.io.File;
 3   import  java.io.FileOutputStream;
 4   import  java.io.OutputStreamWriter;
 5   import  java.io.Writer;
 6   import  java.util.HashMap;
 7   import  java.util.Locale;
 8  
 9   import  freemarker.template.Configuration;
10   import  freemarker.template.Template;
11  
12   public   class  FreeMarkerTest {
13  
14        public   static   void  main(String[] args) {
15           FreeMarkerTest test  =   new  FreeMarkerTest();
16           test.getFile();
17           test.getFile(Locale.JAPAN);
18       }
19       
20        public   void  getFile() {
21           Configuration freemarkerCfg  =   new  Configuration();
22           freemarkerCfg.setClassForTemplateLoading( this .getClass(), " / " );
23           freemarkerCfg.setEncoding(Locale.getDefault(), " UTF-8 " );
24           Template template;
25            try  {
26               template  =  freemarkerCfg.getTemplate( " t.ftl " );
27               template.setEncoding( " UTF-8 " );
28               File htmlFile  =   new  File( " t.html " );
29               Writer out  =   new  BufferedWriter( new  OutputStreamWriter(
30                        new  FileOutputStream(htmlFile),  " UTF-8 " ));
31               HashMap propMap  =   new  HashMap();
32               propMap.put( " user " " hermit " );
33               template.process(propMap, out);
34               out.flush();
35           }  catch  (Exception e) {
36               e.printStackTrace();
37           }
38       }
39       
40        public   void  getFile(Locale loc) {
41           Configuration freemarkerCfg  =   new  Configuration();
42           freemarkerCfg.setClassForTemplateLoading( this .getClass(), " / " );
43           freemarkerCfg.setEncoding(Locale.getDefault(), " UTF-8 " );
44           Template template;
45            try  {
46               template  =  freemarkerCfg.getTemplate( " t.ftl " ,loc);
47               template.setEncoding( " UTF-8 " );
48               File htmlFile  =   new  File( " t_ " + loc.getLanguage() + " _ " + loc.getCountry() + " .html " );
49               Writer out  =   new  BufferedWriter( new  OutputStreamWriter(
50                        new  FileOutputStream(htmlFile),  " UTF-8 " ));
51               HashMap propMap  =   new  HashMap();
52               propMap.put( " user " " hermit " );
53               template.process(propMap, out);
54               out.flush();
55           }  catch  (Exception e) {
56               e.printStackTrace();
57           }
58       }
59  
60   }
61  



t.ftl

< html >
< head >
  
< title > Welcome! </ title >
  
< META  HTTP-EQUIV ="Content-Type"  CONTENT ="text/html; charset=utf-8" >
</ head >
< body >
  
< h1 > Welcome ${user}! </ h1 >
</ body >
</ html >   



t_zh_CN.ftl

< html >
< head >
  
< title > 欢迎! </ title >
  
< META  HTTP-EQUIV ="Content-Type"  CONTENT ="text/html; charset=utf-8" >
</ head >
< body >
  
< h1 > 你好 ${user}! </ h1 >
</ body >
</ html >   



freemarker支持多语言国际化,只要把模板名称安装资源文件的写法就可以了,也就是name_语言_国家地区.ftl

如果找不到对应的语言,就会用默认语言的模板。

顺便抱怨一下,freemarker对于空值的处理太霸道了,没有值你就写个空或者写KEY也可以啊,弄一堆出错信息在那。。。。。。。。。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值