2

현재 전자 상거래 솔루션을 설계하고 있습니다. 주요 요구 사항 중 하나는 상점에서 현지화 된 품목 세부 사항을 지원하는 것입니다. 동일한 상점은 사용자의 언어 선택 및/또는 브라우저 환경 설정을 통해 여러 언어를 지원할 수 있어야합니다. 여러 행이있을 것이다,
항목 (ID, SKU, 가격, ...)
ItemDetails (ITEM_ID, 언어, 제목, ...) 각 항목에 대한현지화 된 제품 모델 방법

:

나는 두 개의 테이블이 (item_id, language) 쌍이 고유 할 항목에 해당합니다.

나는대로이 모델 싶습니다 : 사용자의 세션을 기반으로
class Item
{
public string sku;
public double price;
public ItemDetails Details;
}

, 내가 항목을 싶습니다은 세부 사항 (자신의 세션에서) 사용자가 선택한 언어에 해당 개체를 가지고 돌아왔다.

이것을 나타내는 몇 가지 방법은 무엇입니까?

답변

1

데이터베이스에 많은 동적 컨텐츠가 저장되어있는 비슷한 세계화 작업을하고 있습니다. 내가 다국어 동적 데이터 수 있도록 데려 갈거야 접근 방식은 다음과 같이이다 :

@CultureCode 응용 프로그램에서 전달 된 매개 변수이며, 문화 테이블을 참조 할 수 있도록 다른 언어/문화의 목록을 포함
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 

또는 대체 언어 종속성을 지정합니다.

필요한 경우 여러 대체 언어로 확장 할 수 있습니다. 단일 언어 구현에 비해 데이터베이스에 약간의 히트가 있지만 데이터의 동적 특성을 수용 할 수 있습니다. 이는 다국어 동적 사이트의 비용 일뿐입니다. 추가 된 데이터베이스로드를 줄이기 위해 너무 빠르게 변경되지 않는 데이터가 있으면 캐싱이 친구가됩니다.

0

  • 들이
  • 들이 다른 응용 프로그램 (보고서, 파트너에 의해 액세스 할 수 있습니다 검색됩니다 페이징/
  • 들이 정렬/필터링

    • 들이 캐시 당신은 객체의 목록을 가져 오지 방법에 대해 생각)

    대답은 번역 논리가 응용 프로그램에 얼마나있을 수 있는지와 얼마나 많은가를 결정합니다. 데이터베이스에있을 수 있습니다.

    내가 지금 작업하는 응용 프로그램에는 응용 프로그램에서만 액세스 할 수있는 개체 목록이 있습니다. 오직 2 개의 속성 만 번역되며 이러한 속성별로 정렬하지 않아도됩니다. 개체 목록을로드하고 모든 개체는 이미 사전에 저장된 모든 언어에 대한 번역을 가지고 있습니다. 좋은 생각은 내 캐시가 키당 하나의 항목 만 가지고 있다는 것입니다.

    번역 된 속성별로 검색, 필터링 및 정렬해야하는 경우가 더 어려워집니다. 그럼 데이터베이스에 논리를 넣으려고합니다.

  • 관련 문제