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

请求的时候 根据字段返回不同语言,大概需要翻译成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 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 7

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

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

2年前 评论

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

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”}

个人推荐第二种

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

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

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

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

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

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

2年前 评论

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