mysql [数据库] 如何国际化?

2016-03-09 18:07:12 +08:00
 maomaomao001

比如有一张表:
产品 id
属性 1(字符串)
属性 2(字符串)
属性 3(字符串)

属性需要国际化 /多语言

如何设计才能比较科学的存取呢?

7389 次点击
所在节点    MySQL
11 条回复
mhycy
2016-03-09 18:10:50 +08:00
表 0 :外部产品 id, 发布时间, 备注
表 1 : 产品 ID, 对应外部 id, 更新时间, 属性表, 可用标记, 备注
表 2 : 产品 id, 属性, 取值, 语言标记, 可用标记, 备注


依据需求会有别的选择
jugelizi
2016-03-09 18:20:38 +08:00
存就存一种吧 字母就好了
配置里放上多种语言翻译
显示时根据用户设置调用翻译
MySQL 不干这事
maomaomao001
2016-03-09 18:42:29 +08:00
@mhycy 这种方式下表 2 数据会很多很多很多。


@jugelizi 如果是性别之类的,写个配置文件还好说。
mhycy
2016-03-09 18:45:56 +08:00
@maomaomao001

后期非常容易分表,这是优点,不需要过早优化。
gkiwi
2016-03-09 19:04:41 +08:00
不晓得你用什么后端框架,这个一般在框架级别上应该会有插件支持,可以去搜搜看。
比如我用的 django ,就会有相应的 django-modeltranslation 只要在相应 model 里稍作配置,生成的 mysql 表里面就有对应的多语言字段,比如 name ,会有:name,name_zh_cn,name_en 这样子,在后台编辑的时候,自然就会多出来这些。。这样子客户在编辑的时候,自己填上中英文就好了。
cevincheung
2016-03-09 19:07:01 +08:00
拆出一个表来存多语言属性。根据 key 做索引+商品 ID 索引关联商品表。
gkiwi
2016-03-09 19:08:14 +08:00
不过像 mhycy 说的,可以在表的级别上做多语言处理,需要增加语言的时候,直接多增加一张表就好了,我这个新增语言就需要变表结构,扩展性不够好。不过本来就字段少,所以还可以接受。

另外可以说说应用场景,是文档类的,还是像苹果那样子的多语言宣传类的。
pichina
2016-03-09 19:33:05 +08:00
属性都用 utf-8 ,哪个国家的语言都可以。
maomaomao001
2016-03-09 22:41:11 +08:00
@gkiwi java jfinal
maomaomao001
2016-03-09 22:43:06 +08:00
@cevincheung
看来先阶段这个是比较好的方案了,
@gkiwi 不是文档。
谢谢大家
akira
2016-03-11 22:58:43 +08:00
id ,字符串变量名,字符串中文,字符串英文

数据库只是持久化 不要到用的时候才来加载

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/262271

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX