【国际站:如何设计分布式多语言系统?】

一、思路

多语言结构无非就是语言包的配置,配置语言包,前台根据选择的不同语言查询后展示。

多语言系统有两种方案:

  1. 本地化多语言配置,通过配置文件,key-value的形式,每一个语言配置一个文件,通过语言选择文件,再通过key匹配value,最后将value返回。

这里可以选择设计模式中的策略模式实现,也可以通过拦截器实现。具体实现不多说,网上有资料。

优点:简单易实现,可以通过一次性写入文件的形式快速导入语言包;

缺点:集群部署下,每个机器都要保存一份语言包,造成资源浪费。

  1. 分布式多语言配置,这也是我项目中使用到的方案,同样也是key-value形式,将语言包存储到数据库中,通过sql查出对应的语言,返回给前台。

优点:分布式系统下不会造成资源浪费,可通过后台动态配置;

缺点:设计复杂,需要设计对应的表结构、字段等;

二、结构设计

多语言涉及到四张表:字典表,语言配置表,语言字段表和语言字段值表。

其中字段表和字段值表,乍一看似乎就是我们需要的key-value结构的表,其实不然,字典表才是key。

先说明每张表的作用:

字典表:顾名思义,就是用于查找的字典,这里存放了你需要做多语言的字段。假如我现在有一个字段“word”需要做多语言,那么word就存到字典表中,主键id为1(表结构可以自己根据业务设计)。

id

dict_name

1

word

语言配置表:这个比较简单,就是说明你现在支持什么语言,表结构也比较固定,id、code、name。比如现在支持中文、英文,表中就有两条数据:

id

code

name

1

ch

中文

2

en

英文

语言字段表:这个表主要作用是说明多语言字段的来源,用途,以及其他相关数据。比如字典id为1(对应word),来源table表等等,这张表可有可无,不影响多语言系统,根据自己的业务去设计相应的字段。

语言字段值表:这个表就是存储字典对应语言的值了,固定字段:主键id、字典id、语言id、语言值。比如现在字典中有word这个字段,id为1,那么在语言字段值表中的数据就有两条。

id

dictId

languageId

value

1

1

1

单词

2

1

2

word

如果有其他语言,就往这个表中继续插入字典id对应的语言id对应的value,当然语言配置表也别忘了添加数据。

三、ER图

四、流程图

        配置多语言

获取多语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值