2011-05-11 3 views
3

저는 사람들이 어떻게 국제화를하는지에 대해 조금씩 읽었습니다. 공통적 인 합의는 이러한 문자열을 별도의 파일 (일반적으로 xml)에 저장하고 필요할 때로드하는 것입니다.왜 국제화 "단어"를 별도의 (XML) 파일에 저장합니까?

대신 왜 그 문자열을 데이터베이스에 저장하지 않는지 궁금합니다. 이런 식으로는별로 좋지 않니?

Btw 내 앱의 특성은 웹 사이트 앱입니다.

+1

xml 파일로 작업하는 것이 훨씬 쉽습니다. (번역 할 때) – zerkms

답변

4

가장 중요한 것은 컴파일 테이블 외부에 문자열 테이블을 저장하여 업데이트 된 번역을 다시 작성하지 않아도되도록하는 것입니다. 이렇게하면 새롭거나 업데이트 된 번역이 나중에 번거 로움없이 통합 될 수 있습니다.

물론이 문자열 테이블은 아무 곳에 나 저장할 수 있습니다. 데이터베이스에 저장하려면 자신을 노크하십시오. 응용 프로그램이 도달 할 수 있고 번역 직원이 올바른 위치에 전달하는 방법을 알고 있으면 차이가 없습니다.

1

데이터베이스에 저장하면 "로캘"스위치가 발생할 때마다 데이터베이스를 쿼리하는 데 추가 오버 헤드가 발생합니다.

자원 번들의 이유입니다. 소스 코드와 함께 패키지하지만 언어를 지원하도록 코드를 변경하지 않아도됩니다.

resourcebundle 클래스를 직접 서브 클래스 화하고 jdbc 지원을 구현하여 로켈 특정 문자열이 데이터베이스에 저장 될 수 있습니다.

http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/

+0

이 질문은 특히 Java에서 대상이되지 않습니다. – Pacerier

+0

btw는 외부 xml 파일에도 액세스 할 때 오버 헤드가 없을 것입니다. ? – Pacerier

+0

시작시 프로그램 파일이나 memcache에 번역 파일을로드하십시오. dbms를 사용하는 것보다 낫습니다. –

3

심각한 국제화는 항상 부품 및 플레이어의 많은 큰 프로젝트입니다. @zerkms가 암시 하듯이 번역 작업은 전 세계의 개인 및 팀이 수행하는 오프라인 활동 일 경우가 많습니다.

따라서 번역 팀이 작성할 수있는 깨끗한 업무용 제품 (번역 된 XML 파일)을 가지고있는 것이 좋습니다.

일단 파일이 번역되면 소프트웨어에서 번역을 처리하는 방법은 귀하에게 달려 있습니다. 변수를 자리 표시 자로 대체해야하는 경우가 종종 있으므로이를 메모리에 유지하는 것이 일반적입니다.

관련 문제