4

如果我想在覈心數據中創建具有應該可本地化的值的屬性的實體,我想知道最有效的方式是怎麼樣的?核心數據實體中可本地化的屬性值的模型?

作爲一個例子,讓我們假設以下結構:

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的實施,我會用兩個表。 A books表中包含書籍信息(作者,英文/國際名稱和說明)和使用相應書籍的主鍵相關的表格。該第二個表包含本地化的名稱和描述值以及languageCode。這將允許具有可擴展數量的本地化。

對於獲取數據,我會用一個

SELECT COALESCE(localizationBooks.name, books.name) 

以獲取給定的語言代碼的實際值。這允許使用國際英語價值作爲不支持的語言的回退。

這是否需要核心數據(例如BookLocalization)中與書相關的獨立實體或者是否存在另一種推薦的方法?

回答

0

好吧,儘管這個話題已經3歲了......我只是偶然發現了這個問題,問我的自我就像原來的海報一樣。我發現了另一個線程的答案。

我只是重複了在這裏的情況下,別人打這個線程(回答戈登休斯):

Good practices for multiple language data in Core Data

總結: 比方說,你有實體書籍。然後你將不得不另外製作一個名爲Localizedbook的例子。在書籍中,您擁有「標題」屬性,而在LocalizedBook中,您擁有「en_US」等國際字符串的「localizedTitle」和「locale」。

您現在必須設置標題 - > localizedTitle(一對多,因爲一個原始標題可以有多個翻譯)之間的關係。

因此,如果關係設置正確,每次您獲取「標題」時,您都將獲得賦予特定語言環境的「localizedTitle」。

+0

只包含鏈接的答案是[認爲不好的做法](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers)。請總結這裏的內容(不要複製/粘貼),這樣答案就可以獨立運作。如果你不這樣做,那麼你的答案就會被刪除,特別是如果鏈接死亡的話。 – 2012-05-31 11:00:26

+0

你是對的。我添加了總結。 – 2012-06-01 07:20:48

2

你提到的策略通常是最好的。正如你所建議的那樣,這需要一個用於本地化屬性的額外實體。

然後你可以寫上你Books實體輔助方法來獲得相應的本地化對象爲給定的語言,這樣使用它:

[book bookLocalizationForLanguage:@"de"].name 

你甚至可以把它更進一步,只添加屬性如localizedName,localizedDescriptionBooks實體將獲取適當的本地化價值。

相關問題