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

多语言的网站大家是怎么设计的?多语言不是指页面内容,指的是数据。

  •  
  •   DavidNineRoc · 2018-05-14 11:23:32 +08:00 · 2681 次点击
    这是一个创建于 2386 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 多语言的网站,如果是页面内容的话,很多框架都内置有处理的功能。
    • 如:Laravel的,一种语言一个文件夹,然后里面再是 PHP 数组返回页面内容
    • 这样子在网页的标题文字之类的多语言是完全可以 OK 的。

    • 如果是数据要多语言呢,比如你再做一个国际化的商城,商品的名字有中文,也有英文。商品的描述之类的
    • 很多数据都要有中英文,而且以后还会扩展。
    • 现在我的做法,就是JSON数据填充

    QQ 截图 20180514112252.png 大伙有什么更好的做法?

    8 条回复    2018-05-14 17:48:53 +08:00
    zhaishunqi
        1
    zhaishunqi  
       2018-05-14 13:50:03 +08:00
    java 里面是用本地化,写配置文件,通过加载不同的配置文件,替换不同的语言显示。
    你这个写库,扩展性不方便吧。。。你可以参考很多 js 插件的切换语言那部分。
    DavidNineRoc
        2
    DavidNineRoc  
    OP
       2018-05-14 13:54:52 +08:00
    @zhaishunqi 这个。。。PHP 肯定都是配置文件呀,但是这些事网站内容不会变的,比如网站的标题,网站页面的内容,但我说的是数据,商品的名字,你写配置文件?
    my101du
        3
    my101du  
       2018-05-14 14:09:52 +08:00
    @zhaishunqi 题主问的不是页面上那些“通用”的部分(这些用配置 /google translate 挂件都可以做到),是每篇文章 /商品的“内容”要有中英文。

    我记得 wordpress 里有个 wpml 的插件,是给每篇文章创建若干个“ meta ”附加的值(虽然 meta 这个名字听上去很小,但实际上存大文本都可以,字段在数据表里似乎是 text 类型)

    例如 同一条数据,可能有以下的字段

    content_default
    content_en
    content_jp
    ...

    等等

    至于自动切换,我以前写过个插件,就是用户切换到某个语言,就 cookie 保存下状态,然后进入这个页面的时候,自动切换内容区域。(因为是一次性把所有语言都加载出来,然后去显示 /隐藏,办法挺傻的。。。不建议使用)
    zakokun
        4
    zakokun  
       2018-05-14 14:19:04 +08:00
    这个问题很常见吧,说白了就是一个文章,商品的多语言版本

    你把描述语言抽出来单独建一个表呗,比如一个 product 表,储存商品的基本信息,数量,时间 所属类别, 另一个 叫 product_desc 表, 多对一关联 product 表,里面有标题,内容,价格等

    获取一个商品的信息的时候, 传 id_lang 比如 3_zh 这样的字段,分别去两个表获取数据拼成一个完整的信息就可以了
    KevZhi
        5
    KevZhi  
       2018-05-14 14:36:33 +08:00 via iPhone
    歪个楼,可以看一下 Crowdin 上面的项目都是什么格式实现的
    DavidNineRoc
        6
    DavidNineRoc  
    OP
       2018-05-14 15:01:54 +08:00
    @my101du 这个太不好了,我有十种语言还得不断改表结构。而且代码还得改动,现在用 json 可以直接配置增加语言,代码都不用动。

    @zakokun 我感觉维护 json 方便多了 >_<
    @KevZhi 这个和我想要的不一样,还只是页面内容翻译,不是数据。
    zakokun
        7
    zakokun  
       2018-05-14 15:06:08 +08:00
    你这样做不方便搜索的,没搜索的需求那还好,json 随便放什么都行
    但是你字段长度就不好控制了, varchar(255)吗? 多了浪费 少了不方便扩展
    DavidNineRoc
        8
    DavidNineRoc  
    OP
       2018-05-14 17:48:53 +08:00
    @zakokun 标题之类暂定 varchar,正文直接上 longtext
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2558 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:39 · PVG 23:39 · LAX 07:39 · JFK 10:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.