2011-04-14 8 views
0

현재 내 CS 과정의 일부로 데스크톱 게임을 개발 중입니다. 가 필요하지 않지만
나는
그래서 내가 웹을 탐색하고 발견 내 응용 프로그램 현지화를 지원하려는 두 가지 기술
- ResourceBundle의
- 특성 파일
난 그저, 내가 나를 위해 더 적합 결정할 수 없다 그러나 GUI를위한 현지화 된 메시지와 레이블이 필요합니다. 는 foobar
Btw는 FooBar_UNIX_en_US 같이해야한다 ResourceBundle의
확장하는 경우
또한 나는 할당 (애플릿하지 데스크탑)현지화 기술

클론 (gopherwoods 스튜디오에 의해) 얽힘이다 예를 들어 어떻게 이러한 파일/클래스 이름을 지정해야합니다
에 혼란 스러워요

~ 감사합니다

당신은 올바른 방향에

답변

1

둘 다 사용 - 프로그램의 관점에서 보면 ResourceBundles이고 번역자 관점에서는 속성 파일입니다. ResourceBundle은 속성 파일에서 문자열 (문자열 만)을로드 할 수 있습니다.

그래서 당신은 단순히 (일반 사람을 무시, 오스트리아 독일어 특수 문자열) Messages.properties (기본값), Messages_eo.properties (에스페란토 번역) Messages_de.properties (독일어 번역), Messages_de_AT.properties 같은 파일을 넣어.

그러면 프로그램에서 ResourceBundle bundle = ResourceBundle.getBundle("Messages")을 수행하고 런타임은 특성 파일에서 현재 로케일에 대한 자원 번들을 빌드합니다.

문자열 이외의 다른 내용을 변환해야하는 경우 ResourceBundle을 서브 클래스 화하여 .class 개의 파일이 필요합니다. 두 가지를 혼합하여 사용할 수도 있지만 여러 번 다른 번들 (예 : text 번들 하나와 동적 리소스 용)으로 분할하는 것이 좋습니다.

+0

설명해 주셔서 감사합니다. – Batreekh

1

는 규칙은 일반적으로 Name_<language>_<country>입니다.

자체는 로컬 화 문자열을 되돌리기 위해 속성 파일을 사용할 수 있으므로이를 사용할 수 있습니다. 그렇게하면 지원하려는 각 언어에 대해 새 클래스를 컴파일 할 필요가 없습니다. 언어에 대한 새 특성 파일을 작성하기 만하면됩니다.

ResourceBundle.getBundle() 공장 출하 방식을 확인하십시오.

+0

덕분에 링크 – Batreekh

0

리소스 번들을 사용하는 것이 가장 좋은 방법이라고 생각합니다.

Java 자체는 가장 구체적인 것으로부터 가장 구체적인 것으로 (가장 일반적인) 리소스 번들을 참조하려고 시도합니다. 다음과 같은 자원이있는 경우

는 :

resource 
resource_en 
resource_en_GB 
resource_fr 
resource_fr_CA 

그리고 최종 사용자가 로컬 그가 resource_en에 무엇을 표시 할 en_NZ (뉴질랜드)입니다.

그러나 캐나다 퀘벡 출신의 사람은 resource_fr_CA에있는 사람을 가장 많이 표시합니다.

희망이 있습니다.