Water for asp.net 之八:多语言的实现
source code address:water source
demo address:water demo
blogs address:water bolgs
water中多语言的实现可通过配置文件或数据库来实现。
下图是一个配置文件的实现:
通过定义各语言的prompt文件即可实现多语言。
定义好这些多语言文件后我们还需要在web.config中配置,如:
<add key="FilePrompt" value="/prompts/prompt.xml"/>
<!--<add key="TablePrompt" value="sys_prompt"/>-->
<!--Prompt缓存文件依赖,可以是是依赖多个文件,文件间用逗号隔开,如:a.txt,b,txt-->
<add key="FileDependencyPrompt" value="/prompts/a.txt"/>
我们稍后再介绍这个配置,先看一下prompt文件的格式:
2 <prompts>
3 <prompt field="score.title" desc="学生成绩(行转列)"/>
4 <prompt field="employees.title" desc="员工基本信息"/>
5
6 <entity name="sys">
7 <prompt field="save" desc="保存"/>
8 <prompt field="update" desc="修改"/>
9 <prompt field="delete" desc="删除"/>
10 <prompt field="add" desc="添加"/>
11 <prompt field="select" desc="查询"/>
12 <prompt field="reset" desc="重置"/>
13 <prompt field="edit" desc="编辑"/>
14 <prompt field="new" desc="新建"/>
15 <prompt field="cancel" desc="取消"/>
16 <prompt field="query" desc="查询"/>
17 <prompt field="insert" desc="添加"/>
18 </entity>
19
20 <entity name="menu">
21 <prompt field="menutitle" desc="菜单"/>
22 <prompt field="menumaintain" desc="菜单维护"/>
23 <prompt field="menuid" desc="ID"/>
24 <prompt field="text" desc="菜单"/>
25 <prompt field="navigateUrl" desc="导航URL"/>
26 <prompt field="imageUrl" desc="图像URL"/>
27 <prompt field="toolTip" desc="提示"/>
28 <prompt field="imageToolTip" desc="图像提示"/>
29 <prompt field="parentId" desc="上级菜单"/>
30 <prompt field="target" desc="目标"/>
31 <prompt field="ordernum" desc="排序"/>
32 </entity>
33
34
35 <entity name="employees">
36 <prompt field="id" desc="员工ID"/>
37 <prompt field="firstName" desc="第一名字"/>
38 <prompt field="lastName" desc="第二名字"/>
39 <prompt field="email" desc="Email"/>
40 <prompt field="jobId" desc="岗位ID"/>
41 <prompt field="salary" desc="薪水"/>
42 <prompt field="hireDate" desc="雇佣日期"/>
43 <prompt field="departmentId" desc="部门ID"/>
44 </entity>
45
46 <entity name="jobs">
47 <prompt field="jobId" desc="岗位ID"/>
48 <prompt field="title" desc="岗位名称"/>
49 <prompt field="minSalary" desc="最小薪水"/>
50 <prompt field="maxSalary" desc="最大薪水"/>
51 </entity>
52 <entity name="departments">
53 <prompt field="departmentId" desc="部门ID"/>
54 <prompt field="departmentName" desc="部门名称"/>
55 </entity>
56
57 <entity name="score">
58 <prompt field="score" desc="成绩"/>
59 </entity>
60
61 <entity name="student">
62 <prompt field="studentId" desc="学生ID"/>
63 <prompt field="studentname" desc="姓名"/>
64 </entity>
65
66 <entity name="course">
67 <prompt field="courseid" desc="课程ID"/>
68 <prompt field="coursename" desc="课程"/>
69 </entity>
70
71 </prompts>
结构非常简单。实际上我的目的就是想形成一组键值对结构,如:
文件中35行到44行会形成,
key=ZH-CH$employees.id value=员工ID
key=ZH-CH$employees.firstname value=第一名在
key=ZH-CH$employees.lastname value=第二名字
key=ZH-CH$employees.email value=Email
key=ZH-CH$employees.jobid value=岗位ID
key=ZH-CH$employees.salary value=薪水
key=ZH-CH$employees.hiredate value=雇佣日期
key=ZH-CH$employees.departmentid value=部门ID
(ZH-CH是语言信息)
当然可以用数据库表存储该信息 ,但表的结构第一个字段是key,第二个是语言信息(如:ZH-CN、EN-US),第三个是value。当然web.config中要配置该表,如:
<add key="TablePrompt" value="表名"/> 。
web.config中还有一行:
<add key="FileDependencyPrompt" value="/prompts/a.txt"/>
是用于配置多语言文件的缓存的依赖的,因为,对语言文件是在应用启动的时候加载到内存的,在开发的时候为了测试方便,我添加了这个缓存依赖文件,主要是方便测试,任意改动依赖文件的内容就可以使缓存重新加载。
posted on 2010-02-02 10:06 guoqiang.liu 阅读(1636) 评论(6) 编辑 收藏 举报