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

使用数据库完成多语言管理

 
阅读更多
package net.watermelon.demo.vo;

import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.springframework.context.ResourceLoaderAware;
import org.springframework.context.support.AbstractMessageSource;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;


public class MessageResource extends AbstractMessageSource implements
		ResourceLoaderAware {
	@SuppressWarnings("unused")
	private ResourceLoader resourceLoader;
	/** * Map切分字符 */
	protected final String MAP_SPLIT_CODE = "|";
	private final Map<String, String> properties = new HashMap<String, String>();

	public MessageResource() {
		reload();
	}

	public void reload() {
		properties.clear();
		properties.putAll(loadTexts());
	}

	/** * * 描述:TODO * 查询数据 虚拟数据,可以从数据库读取信息,此处省略 * @return */
	private List<Resource> getResource() {
		List<Resource> resources = new ArrayList<Resource>();
		Resource re = new Resource();
		Resource re1 = new Resource();
		re.setResourceId(1);
		re.setName("common.name");
		re.setText("name");
		re.setLanguage("en");
		resources.add(0, re);
		re1.setResourceId(2);
		re1.setName("common.name");
		re1.setText("\u59D3\u540D");
		re1.setLanguage("zh");
		resources.add(1, re1);
		return resources;
	}

	/** * * 描述:TODO * 加载数据 * @return */
	protected Map<String, String> loadTexts() {
		Map<String, String> mapResource = new HashMap<String, String>();
		List<Resource> resources = this.getResource();
		for (Resource item : resources) {
			String code = item.getName() + MAP_SPLIT_CODE + item.getLanguage();
			mapResource.put(code, item.getText());
		}
		return mapResource;
	}

	/** * * 描述:TODO * @param code * @param locale 本地化语言 * @return */
	private String getText(String code, Locale locale) {
		String localeCode = locale.getLanguage();
		String key = code + MAP_SPLIT_CODE + localeCode;
		String localeText = properties.get(key);
		String resourceText = code;
		if (localeText != null) {
			resourceText = localeText;
		} else {
			localeCode = Locale.ENGLISH.getLanguage();
			key = code + MAP_SPLIT_CODE + localeCode;
			localeText = properties.get(key);
			if (localeText != null) {
				resourceText = localeText;
			} else {
				try {
					if (getParentMessageSource() != null) {
						resourceText = getParentMessageSource().getMessage(
								code, null, locale);
					}
				} catch (Exception e) {
					logger.error(e);
				}
			}
		}
		return resourceText;
	}

	public void setResourceLoader(ResourceLoader resourceLoader) {
		this.resourceLoader = (resourceLoader != null ? resourceLoader
				: new DefaultResourceLoader());
	}

	@Override
	protected MessageFormat resolveCode(String code, Locale locale) {
		String msg = getText(code, locale);
		MessageFormat result = createMessageFormat(msg, locale);
		return result;
	}

	@Override
	protected String resolveCodeWithoutArguments(String code, Locale locale) {
		String result = getText(code, locale);
		return result;
	}
}

 配置一个自定义的MessageResource 就可以

Bean 定义里面加如下代码

@Bean
	public   ResourceBundleMessageSource propertiesMessageSource(){
		ResourceBundleMessageSource  rs = new  ResourceBundleMessageSource();
		
		rs.setBasenames("messages");
		
		return rs;
	}	

@Bean
	public MessageSource messageSource(){
		MessageResource mrs = new MessageResource();
		mrs.setParentMessageSource(propertiesMessageSource());
		return mrs;
	}

 

  这里 setParentMessageSource 可以一样读取 properties 配置文件中的多语言处理,增加了数据库的多语言处理,管理和开发起来都比较方便。

 

 

0
2
分享到:
评论

相关推荐

    达梦数据库_SQL语言手册

    达梦数据库_SQL语言手册.pdf 数据库快照定义语句 数据库快照删除语句 第章数据查询语句和全文检索语句 单表查询 简单查询 带条件查询 集函数 情况表达式 连接查询 子查询 标量子查询 表子查询 派生表子...

    数据库大作业--超市管理系统.docx

    超市管理系统 目录 项目简介 需求分析 编程软件以及环境 数据库基本表和E—R图 数据库框架介绍 源代码段分析 问题解决 数据库大作业--超市管理系统全文共12页,当前为第1页。 数据库大作业--超市管理系统全文共12页...

    数据库课程设计网吧管理系统.doc

    " " "所使用的语言、工具:VB6。0+ACCESS2003+WINDOWSXP. " " "所采用的技术、系统结构:ADO数据库联接技术,系统结构为C/S结构。 " " " " "设 "上机前预先把所有的源程序编写好。 " "计 "上机时不得迟到,不得缺席,...

    MIS课程设计-C#+Access数据库-学生信息管理系统

    山东交通学院 MIS课 程 设 计 任 务 书 ...PS:一开始打算用Oracle数据库完成,但是完成过程中出现太多错误和阻碍,加之临近考试复习时间紧迫,所以最终选择了Access数据库,Access数据库相当简单了

    分布式数据库习题.doc

    分布式数据库习题 第一章 1.1请用自己的语言定义下列分布式数据库系统中的术语: 全局/局部数据 全局数据是指参与全局应用,可被多个站点上的应用访问的数据; 局部数据是指只提供本站点的局部应用所需要的数据。 ...

    人事工资管理系统数据库设计.doc

    这就对人事工资管理提出了 新的要求,用计算机管理系统来管理高校工资已经成为目前的趋势,使用计算机可以 高速,快捷地完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共享, 避免重复劳动,规范数据管理...

    JSP婚纱影楼网站管理系统(含数据库sql文件).rar

    使用计算机对婚纱的各项基本信息进行管理,比起手工管理来说既方便又简便,而且易于管理、搜索速度快、存储量大等多个优点。将其使用在婚纱管理中,不仅能够提高婚纱公司中管理员的工作效率,而且可以使婚纱管理更加...

    数据库管理系统.pptx

    3 相互有关联关系的数据的集合 DB DBMS 管理数据库的系统软件 DBA 完成某一功能的应用程序1 应用程序2 应用程序n DBAP 1 DBAP 2 DBAP n Computer System 数据库、数据库管理系统、数据库系统 数据库管理系统全文共...

    神通数据库-数据库快速入门.pdf

    使用数据库创建应用程序时,过程语言是应用程序和数据库之间的主要编程接口。神通数据库中所提 供的过程语言是 plOSCAR。在使用 plOSCAR 程序时,可用两种方法存储和执行程序。可以在本地存储程 序,并创建向数据库...

    花店管理系统-数据库设计.doc

    参考文献 24 花店管理系统 摘要: 我们已经学习了两个学期的数据库课程,所以对数据库的创建和SQL语言以及数据库 表的增加、修改、删除有了很好的掌握。这次实验要求建立一个关系数据库信息管理系 统,必须得经过...

    数据库管理系统DBMS在企业管理中的应用.doc

    数据库管理系统DBMS在企业管理中的应用 [关键词]数据库管理系统DBMS 企业管理 [文章摘要]本文主要介绍数据库管理系统的定义以及功能,企业中所使用的数据库管理 系统的种类以及选择的依据,介绍DBMS在企业管理中的...

    [详细完整版]5数据库系统.pdf

    (2)数据库管理系统:指帮助用户建立、使用和管理数据库的软 件系统,简称为DBMS(DataBaseManagementSystem)。数据库管理系统 是数据库系统的核心,DBMS通常由下列三个基本部分组成,即: 数据描述语言DDL...

    数据库系统设计实验报告.doc

    2. 图书馆日常事务管理系统数据库的设计 (1)图书馆日常事务管理系统功能简析 图书信息维护:主要完成图书信息登记、修改、删除等操作。 读者信息维护:主要完成读者信息的添加、修改和删除等操作。 工作人员信息...

    数据库系统概论第四版答案

    多,例如,可以大大提高应用开发的效率,方便用户的使用,减轻数据库系统管理人员维护 的负担,等等。使用数据库系统可以大大提高应用开发的效率。因为在数据库系统中应用程 序不必考虑数据的定义、存储和数据存取的...

    数据库原理(第5版)

    最后三章讨论了数据库管理,以及数据库在应用程序中的使用。第6章概述了数据库管理,构建了一个作为功能数据库的示例数据库,并用作讨论数据库管理需求的示例。本章探讨了并发控制、安全性、备份及恢复技术。数据库...

    数据库管理系统及应用.pdf

    数据库管理系统能够为数据库提供数据的定义、建立、维 护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。 2.数据库应用系统 凡是用数据库技术管理数据(信息)的系统都称为数据库应用系统...

    网吧管理系统数据库课程设计.doc

    解,能将SQL语言很好的运用,增强了自己在数据库中应用SQL语言的灵活性,其中包括 ,插入、删除、修改、查询,牵涉表和表之间的联系,主建与外键的定义,约束项的设 置,使逻辑更严密,在学习过程中,我也能过上网查...

    数据库管理系统(1).doc

    Microsoft SQL Server Microsoft SQL Server是一种典型的关系型数据库管理系统,可以在许多操作系统上运行,它使用Tran sact-SQL语言完成数据操作。由于Microsoft SQL Server是开放式的系统,其它系统可以与它进行...

    Python数据库课程设计:点菜订餐管理信息系统【含报告】 Django + Bootstrap + jQuery

    问题描述: 随着网络的迅速发展,越来越多的人开始接受甚至时依赖了网络营业的这种交易形式,传统的点菜模式不仅浪费时间,效率低下,而且特别耗费成本与人力,因此不少商家开始使用网上点菜系统。网上点菜系统是一...

    [数据库设计]超市管理系统设计

    数据库 超市管理系统设计报告 系统叙述 图 代码 心得体会 参考文献等【提供全部完全版】可是直接应用 班级:计HR05-7 姓名:张 冰 学号:0520010726 2007年7月4日 超市管理系统设计 ...

Global site tag (gtag.js) - Google Analytics