andybest
V2EX  ›  问与答

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

  •  
  •   andybest · Dec 16, 2014 · 2334 views
    This topic created in 4200 days ago, the information mentioned may be changed or developed.
    工作中有个会员姓名的表需要实现多国语言存储,于是我呆呆的设计了这样的表结构:

    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 replies    2014-12-16 19:13:33 +08:00
    cxe2v
        1
    cxe2v  
       Dec 16, 2014
    转成Unicode编码之后再存吧,一个字段就搞定
    andybest
        2
    andybest  
    OP
       Dec 16, 2014
    @cxe2v 啥意思?比如 “王二狗” 英文名 “Jack.Wang” 怎么转成 Unicode 编码一个字段搞定?
    choury
        3
    choury  
       Dec 16, 2014
    再加一张表,key做成外键,加一个字段表示语言
    cxe2v
        4
    cxe2v  
       Dec 16, 2014
    @andybest 哦,没懂你得意思,原来是一个人会可能有两个不同语言的名字
    awanabe
        5
    awanabe  
       Dec 16, 2014
    如果不要根据其他外语查询, english_name可以扩充成一个json字符串, 然后随意定义key..就可以扩充了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5236 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 08:18 · PVG 16:18 · LAX 01:18 · JFK 04:18
    ♥ Do have faith in what you're doing.