zoukankan      html  css  js  c++  java
  • 用数据库表来实现多语言

        要实现多语言,大多数人是使用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是读文件,现在改为读数据库而已。  

    本博客均为原创,转载请注明出处.
  • 相关阅读:
    NOI-01:查找最接近的元素 基本二分
    C#学习笔记之——数据库操作的相关类
    Lua学习笔记——环境安装(Windows和MacOS)和在MacOS安装时错误解决方法
    Ubuntu下对数据库的操作
    Git常用操作
    [Unity游戏开发]常用类之Time类
    [Unity游戏开发]四元数Quaternion
    [Unity游戏开发]常用类之Transform类
    [Unity游戏开发]常用类之Component类
    [Unity游戏开发]射线(Ray)
  • 原文地址:https://www.cnblogs.com/mzhanker/p/2086243.html
Copyright © 2011-2022 走看看