应用系统支持多语言,在有跨国业务的公司中,是个很常见的需求。一般涉及到的语言有中简、中繁、英文、日语等。本文就.Net Web平台下实现该需求做一些初步探讨。
在Asp.Net Web Form时代,微软就给出了一个解决方案。简单来讲,就是将多语言资料维护到*.{Culture Code}.resx文件中,绑定的工具根据该文件自动生成静态的多语言访问类。
这个方案,简单实用。对于一般的小项目也够用了。但是对于一个需要长期维护的产品来说,还需要考虑更多的问题。多语言从技术角度来讲,应该解决下面两个问题:
1. 多语言存储
方便的API, 最好透明化
如果从需求角度来讲,我认为需要分为下面两类
1. 静态多语言
即固定写在页面上的文字和提示的Message
2. 运行时多语言
系统运行时,由用户输入的多语言数据。如产品的名字,描述等
本节先从静态多语言讲起。
一. 静态多语言
1. 多语言存储
在Asp.Net Web Form时代,微软就给出了一个解决方案。简单来讲,就是将多语言资料维护到*.{Culture Code}.resx文件中,绑定的工具根据该文件自动生成静态的多语言访问类。
这个方案,简单实用。对于一般的小项目也够用了。但是对于一个需要长期维护的产品来说,还需要考虑更多的问题。多语言从技术角度来讲,应该解决下面两个问题:
1. 多语言存储
方便维护管理,通用词汇能够公用
2. 多语言访问方便的API, 最好透明化
如果从需求角度来讲,我认为需要分为下面两类
1. 静态多语言
即固定写在页面上的文字和提示的Message
2. 运行时多语言
系统运行时,由用户输入的多语言数据。如产品的名字,描述等
本节先从静态多语言讲起。
一. 静态多语言
1. 多语言存储
在设计上一般把数据保存到表里面,Resource Key采用int型,通过分段,分配给各个模块使用。同时保留一块作为公共段,存储通用多语言数据,如”确定”,“取消”之类的词汇。 表结构如下:
RESOURCE_STATIC |
|
|
|
|
PK |
栏位 |
类型 |
允许NULL |
描述 |