`
guanxi
  • 浏览: 41705 次
  • 性别: 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
分享到:
评论

相关推荐

    C#语言数据库—学生管理系统

    总的来说,C#语言数据库—学生管理系统涵盖了数据库基础、C#编程、ADO.NET使用、UI设计等多个方面的知识。对于初学者来说,这是一个很好的实践项目,通过它不仅可以学习到如何在C#环境中连接和操作数据库,还能了解...

    数据库课程设计 医院管理系统

    数据库课程设计-医院管理系统是一个基于Java编程语言和SQL数据库技术的项目,旨在让学生掌握实际的数据库管理和应用程序开发技能。在这个项目中,我们将深入探讨以下几个关键知识点: 1. **数据库设计**:首先,...

    FireBird 数据库管理工具

    掌握并熟练使用这些工具,可以有效提升数据库管理效率,确保数据的安全和稳定。无论是备份恢复、查询操作还是故障处理,都有对应的工具来辅助完成。因此,对于FireBird的使用者来说,深入了解和学习这些工具的使用...

    数据库课程设计超市管理系统完整版

    总的来说,这个超市管理系统完整版是一个综合性的项目,涵盖了数据库设计、C++编程和系统集成等多个方面的知识。对于参与课程设计的学生而言,这是一次宝贵的实践经验,能够提升他们的实际操作能力和问题解决能力,...

    Mysql数据库管理工具

    9. **多语言支持**:Navicat Lite的中文版使得中国用户无需担心语言障碍,可以更加便捷地使用这款工具。 总之,“Mysql数据库管理工具”,尤其是Navicat Lite,为MySQL数据库的日常管理和维护提供了强大且易用的...

    1_实验一 MySQL关系数据库管理系统及SQL语言的使用1

    【实验一:MySQL关系数据库管理系统及SQL语言的使用1】 实验目标是让学生熟悉MySQL关系数据库管理系统的基本操作,并通过学习和实践掌握SQL语言,包括对数据库的增、删、改、查,尤其是聚合查询、连接查询和嵌套...

    Gbase数据库管理工具及数据库驱动

    总的来说,Gbase数据库管理工具和驱动为用户和开发者提供了全面的数据库管理与开发环境,无论是日常运维还是复杂的数据分析,都能在Gbase平台上高效完成。对于希望深入理解和使用Gbase数据库的人来说,熟悉这些工具...

    数据库实验 图书馆管理系统.docx

    * 使用SQL语言完成数据库内模式的设计。 * 实现数据记录的录入、删除、查询和修改等操作。 * 以视图的形式完成复杂查询,比如多表、多条件等。 四、权限设计 * 根据系统分析,完成授权操作。 * 了解学习收回权限的...

    医院管理系统 数据库课程设计

    数据库的设计与实现是信息技术专业学生的重要学习内容,它涵盖了数据模型、关系数据库理论以及SQL语言等多个核心知识点。 首先,我们要理解数据库在医院管理系统中的角色。数据库是存储和管理医院运营数据的核心,...

    数据库文件——人事管理

    在数据库文件附加完成后,我们可以使用SQL进行数据的导入、导出、备份和恢复,以便于数据管理。同时,为了保证数据的安全性,还可以设置权限,限制不同用户对数据库的访问权限。 对于人事管理系统,可能还需要实现...

    达梦数据库_SQL语言手册

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

    图书管理系统(数据库课程设计java)

    数据库操作通常通过SQL(结构化查询语言)来完成,包括增(INSERT)、删(DELETE)、改(UPDATE)和查(SELECT)四种基本操作。 在Java编程方面,该系统可能使用了Java的Swing或JavaFX库来创建图形用户界面(GUI)...

    学校多媒体设备管理系统 数据库课设

    总的来说,这个数据库课程设计项目涵盖了数据库理论、编程实践和项目管理等多个方面,对于提升学生的综合能力具有很大的价值。通过这个项目,学习者不仅可以掌握数据库的设计与应用,还能了解到系统开发的完整流程,...

    数据库SQL语言学习资料

    1. 综合统一:SQL集成了数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL),能够完成从数据库的创建、数据查询和更新到数据库维护和控制的全过程。 2. 高度非过程化:与非关系数据模型不同,SQL用户...

    关系数据库标准语言SQL Server

    1. 综合统一:SQL集成了数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL),能够完成从数据库创建、数据插入、查询、更新到权限管理等所有任务。 2. 高度非过程化:与传统的“面向过程”数据模型不同...

    SQL数据库脚本语言

    SQL(Structured Query...总结,SQL数据库脚本语言是数据库管理的核心,从简单的数据操作到复杂的业务逻辑,都能通过SQL高效完成。初学者可以通过实践这些基本操作,逐步掌握SQL的精髓,为今后的数据管理打下坚实基础。

    数据库课程设计 客户管理系统

    在数据库课程设计中,构建一个客户管理系统是一项常见的实践任务,旨在帮助学生理解和应用数据库理论以及实际操作技巧。这个系统的主要目标是有效地存储、管理和检索客户数据,以支持企业的日常运营和决策制定。以下...

    基于C++和MySQL数据库的学生信息管理系统

    数据库方面,MySQL是一个广泛使用的开源关系型数据库管理系统。它的特点是速度快、稳定性好,尤其适合处理大量数据。在这个系统中,MySQL用于存储和管理学生的信息,包括但不限于姓名、学号、班级等。`add_stu.cpp`...

    数据库课设-错题管理系统

    3. **编程语言集成**:根据提供的“只有代码包哦”信息,可以推断出系统可能使用某种编程语言(如Python、Java、C#等)来实现数据库操作。这涉及到数据库API的使用,如Python的sqlite3库,Java的JDBC,或者C#的ADO...

    数据库管理工具客户端.rar

    Navicat是一款广泛使用的数据库管理工具,尤其在数据库管理员(DBA)、开发人员和分析师中深受青睐。这款工具提供了直观的用户界面,使得用户可以方便地远程管理多种类型的数据库,包括MySQL和SQL Server等。 ...

Global site tag (gtag.js) - Google Analytics