【发布时间】:2017-04-10 15:44:40
【问题描述】:
我喜欢转发Relation DB的概念,所以我通常会创建表。 但现在我得到了一项任务,这让我考虑使用带有翻译的 json 字段。
简单介绍一下任务: 有必要实现多语言应用程序。我通常创建表格:
- 内容
- content_translations
- contents_images
- contents_image_translations
通常它们的结果并不多(大约 5-7 点)。但现在我需要导入一些带有 GEO 数据(国家、地区、城市、地方)的数据库。我试图创建 1 个翻译表,但后来我们失去了使用外键和使用多态连接的能力。我的例子不是很大,但是我有很多这样的表,并且应该创建太多带有翻译的表(它们只包含 Id、Relation_id 和 Name)。
那就是我想尝试使用 JSON 字段。 MySQL 5.7 提供了这种字段。 字段结构如下:
...
json_encode([
'ru' => ['locale' => 'ru', 'name' => $data['title_ru']],
'en' => ['locale' => 'en', 'name' => $data['title_en']],
]);
...
选择样本:
SELECT
alias, translations,
JSON_UNQUOTE(json_extract(translations, '$.en.name')) AS like_name
FROM geo_countries
WHERE
JSON_UNQUOTE(json_extract(translations, '$.en.name')) LIKE '%Ukraine%'
OR
JSON_UNQUOTE(json_extract(translations, '$.ru.name')) LIKE '%Ukraine%';
所以问题是: 问题是: 谁使用这种方法,是否有利润,生产如何表现出来?
【问题讨论】:
-
几乎所有你能想到的翻译系统在代码方面都很好。最大的问题是如何管理翻译:更新可翻译的字符串,让第三方翻译它们,管理缺失的字符串......这就是所有自制系统都失败的地方。
标签: php mysql sql json database