请教一下各位大佬 这种国际化多语言版本怎么设计的喃?

请求的时候 根据字段返回不同语言,大概需要翻译成30多种语言,这种怎么设计数据库,有没有比较好的方案?
lang=zh 返回如下:

{
    "status": "success",
    "code": 200,
    "data": [
        {
            "id": 1,
            "name": "全球",
            "logo": null
        },
        {
            "id": 2,
            "name": "欧洲",
            "logo": null
        }
    ],
    "error": null
}

传:lang=en 返回如下:

{
    "status": "success",
    "code": 200,
    "data": [
        {
            "id": 1,
            "name": "World",
            "logo": null
        },
        {
            "id": 2,
            "name": "Europe",
            "logo": null
        }
    ],
    "error": null
}
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7

两种方案:一种是把字段所有翻译存储为 JSON,根据当前语言输出不同的翻译。第二种就是将每种语言设计一个字段。

看下这个包 github.com/spatie/laravel-translat...

1年前 评论

语言很少的话每种语言单独一个字段

id name_zh name_en
1 全球 World
2 欧洲 Europe

语言很多的话按行存储

id name lang
1 全球 zh
1 World en
2 欧洲 zh
2 Europe en

还有一种是用json格式存储

id name
1 {“zh”: “全球”, “en”: “World”}
2 {“zh”: “欧洲”, “en”: “Europe”}

个人推荐第二种

1年前 评论
tiantian10000 (楼主) 1年前

建议把 name 存一个字段,多语言名称以 json 方式存一个字段,例如 name 和 names。

$local = App::getLocal();
$name = Arr::get($model->names, $local, $model->name);

这种方式以最简单的方式实现对多语言名称的展示以及兼容如果某个语言不存在的情况。

1年前 评论
tiantian10000 (楼主) 1年前

之前看到论坛有个公司类似宣传的博客:BeikeShop
系统文件 就是用 laravel 的多语言那个功能
数据库的话,可以下载看看他的设计思路

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!