V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
andybest
V2EX  ›  问与答

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

  •  
  •   andybest · 2014-12-16 18:02:09 +08:00 · 1892 次点击
    这是一个创建于 3661 天前的主题,其中的信息可能已经有所发展或是发生改变。
    工作中有个会员姓名的表需要实现多国语言存储,于是我呆呆的设计了这样的表结构:

    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 字段,也就是中文名是必有的,英/法其他语名字是可能有的。
    5 条回复    2014-12-16 19:13:33 +08:00
    cxe2v
        1
    cxe2v  
       2014-12-16 18:30:21 +08:00
    转成Unicode编码之后再存吧,一个字段就搞定
    andybest
        2
    andybest  
    OP
       2014-12-16 18:33:34 +08:00
    @cxe2v 啥意思?比如 “王二狗” 英文名 “Jack.Wang” 怎么转成 Unicode 编码一个字段搞定?
    choury
        3
    choury  
       2014-12-16 19:00:58 +08:00
    再加一张表,key做成外键,加一个字段表示语言
    cxe2v
        4
    cxe2v  
       2014-12-16 19:09:26 +08:00
    @andybest 哦,没懂你得意思,原来是一个人会可能有两个不同语言的名字
    awanabe
        5
    awanabe  
       2014-12-16 19:13:33 +08:00
    如果不要根据其他外语查询, english_name可以扩充成一个json字符串, 然后随意定义key..就可以扩充了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5350 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 07:46 · PVG 15:46 · LAX 23:46 · JFK 02:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.