2009-04-03 9 views
1

여기에 문제가 있습니다.데이터베이스 내에서 텍스트를 번역하는 가장 좋은 방법은 무엇입니까

웹 사이트를 여러 언어로 번역해야합니다. 우리는 이미 gettext를 사용하여 정적 컨텐츠를 번역합니다. 그러나 우리는 여러 언어로 된 텍스트 컨텐츠를 번역해야합니다.

ui는 문제가되지 않습니다.

텍스트 번역에는 두 가지 방법이 있습니다. 1. 텍스트 입력 내에서 JSON 사용 왜이 솔루션이 좋지 않은가요? 우리가 속성의 실제 크기를 짐작할 수 없기 때문에 모든 텍스트 입력이 더 커야합니다.

  1. 원래 모델을 계속 참조하고 모든 필드를 변환하는 변환 테이블을 사용하십시오. 레코드로 필드 크기를 정의 할 수 없기 때문에 여전히 큰 필드가 필요합니다.

  2. 마지막으로 가장 좋은 해결책은 번역 테이블을 만드는 것입니다. 테이블은 다른 테이블의 외래 키를 유지합니다. 각 번역에 대해 번역해야 할 레코드를 복사합니다. 변환 표에는 model_name (primary), reference_id (primary), translated_id (primary), locale (primary)의 네 필드가 있습니다. 이 솔루션을 사용하면 동일한 언어로 동일한 모델에 대해 여러 번역을 수행 할 수 없습니다.

  3. 마지막으로, 우리가 제안한 누군가와 같은 것을 사용할 수 있습니다 ... 데이터베이스 gettext. 우리는 문자열과 유일한 문자열 (key, text, locale)을 포함하는 테이블을 가지고있어서 모델에서 사용 된 것과 동일한 문자열을 찾은 다음 대신 찾은 것을 사용합니다.

내 의견으로는 이러한 모든 솔루션은 해킹 된 것이므로 4 가지 해결책이 더 나은 것으로 보입니다.

나는 훌륭한 문서를 찾지 못했기 때문에이 질문을 빛내고 싶습니다.

답변

1

여러 언어를 다루는 방법은 다음과 같습니다 (일부 전문가는이 솔루션도 살펴 보았습니다!).

  • 우리는 텍스트를 가지고있는 데이터베이스의 테이블 (textid, 키, NL, 영국, 독일, 프랑스)
  • 우리는 (예를 들어에서 productnameid를) 텍스트 테이블 ForeignKeys를이
  • 정적 텍스트가 html 페이지로 번역해야하는 것은 해시로 둘러 쌓여 있습니다. ## htmlstream이 해시 사이에서 내용을 번역하기 위해 구문 분석되면 html 콘텐츠가 서버에서 클라이언트로 전송되기 바로 전에 ## name ##
  • 입니다.
  • 번역 된 텍스트는이 솔루션은 유연하고 그것은 우리를 위해 작동

여전히 빠르게 만드는 캐시에 저장되어, 우리는 시간 당 100,000 이상의 페이지 뷰를 가지고 웹 사이트를 구축 할 수 있습니다.

관련 문제