table 中只剩下一个字段 - 在解决本地化问题时
Only one field left in the table - while solving localization
在尝试将要翻译成多种语言的 table 字段移动到 *_i18n tables 时,我遇到了 tables(作者,abstract_book, publisher) 只剩下 1 个字段。我的老师说让 table 没有任何字段但只有 id 是一种不好的做法。有没有更好的方法来做到这一点?
我正要说一个作者的名字(或那个人的名字)总是一样的,但后来我想起了儒勒·凡尔纳在一些西班牙语国家真的被称为胡里奥·凡尔纳,我们称 Mr. Фёдор Михайлович Достоевский 德文陀思妥耶夫斯基和英文陀思妥耶夫斯基。
虽然 ID-only table 看起来有点奇怪,但它们仍然可以用于引用完整性。例如,您不能拥有作者 ID 不存在的书籍。但是您仍然可以拥有没有任何语言条目的实例。例如。第 1 册由作者 2 和 3 撰写,但我们不知道书名或作者姓名。这是这个设计的一大缺点。
出于这个原因,我会在 table 中添加列以供识别。有以下三种方法:
- 将真实姓名(作者姓名、书名、出版商姓名)添加到 table。例如,作者 'Достоевский'。
- 将默认语言(例如英语)的名称添加到 table。例如,那将是作者 'Dostoevsky'。使用这种方法,您将确保默认语言的数据是完整的。 (虽然其他语言的数据可能存在差距。)
- 将对 i18n table 行(同样是原始语言或默认语言)的引用添加到 table。但是,这有一个问题,即您希望引用不可为空,因此 table 将被交叉引用。这需要可延迟的约束,这些在 MySQL.
中不可用
无论您喜欢这三种方法中的哪一种,它们的作用都是一样的:table 有一个 ID 和一个 name/title。因此,当缺少 I18N 条目时,您有一个默认值。你可以检测错误。如果作者 1 在作者 table 中被称为 'Jules Verne' 而他的法语名字是 'Jules Verne' 而他的英文名字是 'Mary Shelley',那么你就知道哪个条目不正确了:-)
在尝试将要翻译成多种语言的 table 字段移动到 *_i18n tables 时,我遇到了 tables(作者,abstract_book, publisher) 只剩下 1 个字段。我的老师说让 table 没有任何字段但只有 id 是一种不好的做法。有没有更好的方法来做到这一点?
我正要说一个作者的名字(或那个人的名字)总是一样的,但后来我想起了儒勒·凡尔纳在一些西班牙语国家真的被称为胡里奥·凡尔纳,我们称 Mr. Фёдор Михайлович Достоевский 德文陀思妥耶夫斯基和英文陀思妥耶夫斯基。
虽然 ID-only table 看起来有点奇怪,但它们仍然可以用于引用完整性。例如,您不能拥有作者 ID 不存在的书籍。但是您仍然可以拥有没有任何语言条目的实例。例如。第 1 册由作者 2 和 3 撰写,但我们不知道书名或作者姓名。这是这个设计的一大缺点。
出于这个原因,我会在 table 中添加列以供识别。有以下三种方法:
- 将真实姓名(作者姓名、书名、出版商姓名)添加到 table。例如,作者 'Достоевский'。
- 将默认语言(例如英语)的名称添加到 table。例如,那将是作者 'Dostoevsky'。使用这种方法,您将确保默认语言的数据是完整的。 (虽然其他语言的数据可能存在差距。)
- 将对 i18n table 行(同样是原始语言或默认语言)的引用添加到 table。但是,这有一个问题,即您希望引用不可为空,因此 table 将被交叉引用。这需要可延迟的约束,这些在 MySQL. 中不可用
无论您喜欢这三种方法中的哪一种,它们的作用都是一样的:table 有一个 ID 和一个 name/title。因此,当缺少 I18N 条目时,您有一个默认值。你可以检测错误。如果作者 1 在作者 table 中被称为 'Jules Verne' 而他的法语名字是 'Jules Verne' 而他的英文名字是 'Mary Shelley',那么你就知道哪个条目不正确了:-)