Если я хочу создать объект в 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 я бы использовал две таблицы. Таблица books, содержащая информацию о книге (автор, английское / международное название и описание), и таблица localizationBooks, связанная с использованием первичного ключа соответствующей книги. Эта вторая таблица содержит локализованные значения имени и описания, а также languageCode. Это позволило бы иметь масштабируемое количество локализаций.
Для получения данных я бы использовал
SELECT COALESCE(localizationBooks.name, books.name)
чтобы получить фактические значения для данного языкового кода. Это позволяет использовать значение международного английского в качестве запасного варианта для неподдерживаемых языков.
Потребуется ли для этого отдельный объект в Core Data (например, BookLocalization), который имеет отношение к Книге, или есть другой рекомендуемый способ сделать это?