要实现多语言,大多数人是使用properties文件来的,比如struts,每种语言建一属性文件,
命名一般是message.zh_cn.properties,message.en_us.properties,但这有三个我讨厌的点在:
1):如果语言很多,我查找key很麻烦
2):如果语言修改了,需要重启服务。
3):不能在软件界面上修改
当然,上面三点还是可以通过编程来实现的,但做起来没有用数据库来的熟悉和方便,改用
数据库来实现多语言,首先要设计数据库表,我建议是采用主明细,
主表langs字段为:编号(code)|名称(name)
明细表langsdtl字段为:编号(code)|关键字(messagekey)|值(value)
其中code为关联字段.
1):首先开发一个模块,多语言管理,将系统中的涉及到语言信息通过界面填入到表中
2):仿struts写一个资源管理器,作用是加载语言信息到缓存,可以是预加载,也可以是象
struts一样,第一次用到某个语言的时候,加载该语言。这里唯一有个注意点,messageKey的取
值,messageKey=code+"."+messagekey(其中code,messagekey都是langsdt表中l的值)
3):登录的时候,加一个语言的下拉框,登记该用户要用什么语言显示系统.登记的值放入
session中.
4):仿struts写一个语言的taglib,通过用户登记的语言+界面传过来的messagekey取到真正
要对应的语言。
整个的做法都是参考struts的,不难,关键要懂原理.比如资源管理器和taglib可以通过看看struts
源码就清楚了,struts是读文件,现在改为读数据库而已。