这个表如何应用 i18n 实现多国语言存储?

2014-12-16 18:02:09 +08:00
 andybest
工作中有个会员姓名的表需要实现多国语言存储,于是我呆呆的设计了这样的表结构:

CREATE TABLE `member` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`english_name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);

结果就被吐槽了:“这个表如果以后多了法语名储存咋办?”

我就茫然了,是啊现在仅能存中文名和英文名,以后多了其他语种的名字咋办?难道再加 n 个字段?

那么对于这个表来说,如何以优雅的方式实现 i18n ?

PS:name 字段,也就是中文名是必有的,英/法其他语名字是可能有的。
1795 次点击
所在节点    问与答
5 条回复
cxe2v
2014-12-16 18:30:21 +08:00
转成Unicode编码之后再存吧,一个字段就搞定
andybest
2014-12-16 18:33:34 +08:00
@cxe2v 啥意思?比如 “王二狗” 英文名 “Jack.Wang” 怎么转成 Unicode 编码一个字段搞定?
choury
2014-12-16 19:00:58 +08:00
再加一张表,key做成外键,加一个字段表示语言
cxe2v
2014-12-16 19:09:26 +08:00
@andybest 哦,没懂你得意思,原来是一个人会可能有两个不同语言的名字
awanabe
2014-12-16 19:13:33 +08:00
如果不要根据其他外语查询, english_name可以扩充成一个json字符串, 然后随意定义key..就可以扩充了

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

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

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

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

© 2021 V2EX