cocoa – 核心数据实体中可本地化属性值的模型?

如果我想在Core Data中创建一个具有值应该可本地化的属性的实体,我想知道最有效的方式是什么样的?

作为一个例子,我们假设以下结构:

Book
    name (localizable)
    description (localizable)
    author

本地化的图书条目如下所示:

name:   "A great novel" (en/international),
        "Ein großartiger Roman" (de), 
        "Un grand roman" (fr)

description:
        "Great!" (en/international),
        "Großartig!" (de), 
        "Grand!" (fr)

author: "John Smith"

在SQL / SQLite实现中,我将使用两个表.包含书籍信息(作者,英语/国际名称和描述)以及使用相应书籍的主键关联的localizationBooks表的书籍表.第二个表包含本地化的名称和描述值以及languageCode.这将允许具有可扩展数量的本地化.

为了获取数据,我会使用a

SELECT COALESCE(localizationBooks.name, books.name)

获取给定语言代码的实际值.这允许使用国际英语值作为不支持语言的后备.

这是否需要核心数据中的单独实体(例如BookLocalization)与本书有关系,或者是否有其他推荐的方法?

最佳答案 你提到的策略通常是最好的.如您所知,这需要为本地化属性提供额外的实体.

然后,您可以在Books实体上编写一个辅助方法,以获取给定语言的相应本地化对象,并使用它如下所示:

[book bookLocalizationForLanguage:@"de"].name

您甚至可以更进一步,只需在Books实体上添加localizedName,localizedDescription等属性,这将获取适当的本地化值.

点赞