2

我目前正在設計電子商務解決方案。主要要求之一是商店支持本地化商品詳情。同一家商店必須能夠通過用戶的語言選擇和/或瀏覽器偏好支持多種語言。如何建模本地化商品

我有兩個表:
項目(ID,SKU,價格,...)
ItemDetails(ITEM_ID,語言,標題,...)

對於每一個項目,會有多個行對應於該項目,其中(item_id,language)對將是唯一的。

我想模擬這種爲:
class Item
{
public string sku;
public double price;
public ItemDetails Details;
}

基於用戶的會話,我想的項目回到有詳細對象對應於用戶選擇的語言(從他們的會話)。

有什麼方法可以表示這種情況?

回答

1

我正在研究類似的全球化,其中有很多動態內容存儲在數據庫中。我要帶去允許多語種動態數據的方法是這樣的:

create table Item 
(
    ItemID 
    ,Sku 
    ,Price 
    ,Title -- invariant, fallback culture 
) 


create table Item_Culture 
(
    ItemID 
    ,CultureCode -- ex: en-US, en-CA, fr-CA, en-UK, fr-FR, en, fr 
    ,Title 
) 

select i.ItemID, i.Sku, i.Price, coalesce(ic.Title, i.Title) as Title 
from Item i 
left outer join Item_Culture ic 
    on ic.ItemID = i.ItemID 
    and ic.CultureCode = @CultureCode 

哪裏@CultureCode是從你的應用程序中傳遞的參數,和文化表包含引用您的不同語言/文化的列表或者指定回退語言依賴性。

如果需要,您可以將其擴展爲多種後備語言。與單一語言實現相比,它對數據庫有一定影響,但會適應數據的動態特性,這只是多語言動態站點的成本。如果您的數據變化速度不會太快,以幫助減少額外的數據庫負載,則緩存將成爲您的朋友。

0

想想你如何retrive對象列表

  • 是他們緩存
  • 是他們過濾/排序/分頁
  • 是他們在搜查
  • 他們在其他應用程序(報告,合作伙伴訪問)

答案決定了翻譯邏輯可以在應用程序中有多少,以及多少可以在數據庫中。

我現在工作的應用程序只有在應用程序中才能訪問的對象列表。只有2個屬性被翻譯,我不必按這些屬性排序。我加載對象列表,並且每個對象都有翻譯字典中保存的所有語言。好的想法是我的緩存每個鍵只有一個條目。

如果您需要搜索,過濾和按已翻譯的屬性進行排序,認爲它會變得更加困難。 我會嘗試擁有數據庫中的邏輯。

相關問題