2012-03-11 4 views
4

현지화 된 통화 환경에서 전자 상거래 제품 정보 (즉, 제품 가격, 현재 가격)를 저장하는 가장 좋은 전략은 무엇입니까?데이터베이스, 통화 모델링, 현지화 전략

나는 등 현지화, 구분 기호, 정밀 숫자를 사용하여 통화의 표시에 관한 issue in Spree, an e-commerce engine for Ruby on Rails 건너 온

그러나, 우리는 데이터베이스에있는 값의 저장이 현지화을 포함해야하는지 알아 내야했다 resolving the display of price became more complex, 때 구분 기호/정밀도 자릿수 또는 정규화 된이어야합니다. 이 솔루션은 데이터베이스의 저장된 값을 잠재적으로 정규화하는 것뿐만 아니라 값 표시를 지역화하는 작업을 포함합니다. 그러나 "표준"정밀도 및 구분 기호에 맞게 데이터를 수정하거나 "통화"필드를 사용하도록 모델을 수정하고 입력 표준을 유지하는 것이 표준 작업인지는 확실하지 않습니다.

사례 연구 :.

미국에서 제품이 ("EN"현지화 파일을 사용)하는 경우는 다음이 2.99로 데이터베이스에 저장됩니다 사이트 업데이트가 독일로 지역화 할 경우 ("드"를 사용하여, 2.99 달러이다 지역화 파일), 2,99에 가격이 책정됩니다. 하지만 해당 가격 (및 cost_price) 값의 업데이트는 2.99 또는 2,99로 저장해야하며, 2.99에 저장되어 있고 값이 모델에서 볼 때 현지화는 값을 2,99로 수정하십시오.

나는 사용자 지식을 알지 못하게 표준화하는 것을 주저합니다. 통화 가치를 표준화하고 있습니까? 아니면 모델이 다중 통화 형식을 처리하도록 변경해야합니까?

Spree 엔진이 현지화를 변경할 수 있음에도 불구하고 아직 사용자의 요구가 뒤집힐 수 있다고 생각하지 않는다는 점에 유의해야 할 추가 문제가 있습니다. 기술적으로 "다중 통화"환경이 아니라고 나는 믿는다. 저울질 할 수있는 선택을하고 싶습니다.

관련 질문 :

  1. database design: accounts with multi currency
  2. Currency modeling in database

답변

3

문제는 서로 다른 문화와 다른 교환 정권에서 판매하는 제품을 가지고있다. 미국의 경우 1,450,000 원, 독일의 경우 € 1111,11입니다. 두 가지 주요 요소가 있습니다 :

A. 다른 통화에 다른 가격이 있습니다
에서 A와 관련하여 서로 다른 문화

에 금액을 표시하는 여러 가지 방법이 있습니다, 그럴 수

  • 하나의 가격/통화로 저장하고 즉시 다른 환율로 조정
  • 또는 야간 조정
  • 또는 다른 국가의 가격이 다를 수 있습니다.

통화별로 분리 된 가격표를 볼 것입니다.야간에 업데이트하는 것은 아마도 합리적 일 것입니다.

ProductId Currency Price 
1   EUR  1111.11 
1   CAD  1436.65 
1   USD  1450.00 

이 값은 필요한 경우 쉽게 계산할 수 있도록 숫자 여야합니다. 당신은 화면에 주어진 문화를 선택한 가격을 포맷해야 B

에 관한 데이터베이스

에 진수 (10,2)를 사용합니다. 유로화로 지불하는 미국인을 상상해보십시오. 그들이 뭘보고 싶어하니? 귀하의 출력은 선택의 문화에 따라 다음과 같이 보일 것이다 :

는 1,111.11 유로

Culture Price Long Name 
de_de 1.111,11 (German) 
fr_ca 1 111,11 (Quebec) 
en_us 1,111.11 (US English) 

그것은 모두 같은 양, 단지 사용자의 선호에 따라 다른 형식의 말할. 사용자가 다른 양를 입력하는 경우

은 또한 구문 분석 선택한 문화를 기반으로 그 값을해야합니다. Yii (미안, PHP) L10N과 I18N features을 확인하십시오.

참고 :

무슨 일이 있어도

, 부동 소수점으로 저장하지 않는, 또는 당신은 시간이 지남에 미묘한 오류를 얻을 것이다. 계산

+0

그래서 2.99로 저장해야하지 2,99의 결과 필드의 소수점 이하 4 자리 숫자를 사용하여

이 고려 진수 형식을 사용? 그리고 자릿수와 정밀도가 형식으로 정규화 되었습니까? –

+0

저장소의 서식에 대해 걱정할 필요가 없습니다. 디스플레이에 사용자에게 표시 할 형식. 그가 독일인이라면 독일인을 위해 포맷하십시오. 그가 미국인이라면 미국인을 위해 포맷하십시오. –

+0

이 답변은 대단히 도움이되지 않는다고 생각합니다. 독일 사용자가 전형적인 독일어 패션 인 "2,99"로 가격을 입력하면 어떤 응용 프로그램이이를 "2.99"의 "올바른"숫자로 변환합니까? 모델의 setter 메서드를 재정의 하시겠습니까? –

관련 문제