Java Language
현지화 및 국제화
수색…
비고
Java는 응용 프로그램의 현지화를위한 강력하고 유연한 메커니즘을 제공하지만, 사용자의 로켈을 무시하거나 변경하는 프로그램을 잘못 사용하고 바람을 피기 쉽기 때문에 프로그램이 어떻게 작동하는지 예상 할 수 있습니다.
사용자는 이전에 사용하던 형식으로 현지화 된 데이터를 볼 것으로 예상되며 수동으로 지원하려는 시도는 어리석은 일입니다. 다음은 사용자가 "항상"특정 방식으로 표시한다고 가정 할 수있는 콘텐츠를 사용자가 기대하는 다양한 방식의 작은 예입니다.
날짜 | 번호 | 현지 통화로 | 외화 보유 | 거리 | |
---|---|---|---|---|---|
브라질 | |||||
중국 | |||||
이집트 | |||||
멕시코 | 20/3/16 | 1.234, 56 | $ 1,000.50 | 1,000.50 USD | |
영국 | 20/3/16 | 1,234.56 | £ 1,000.50 | 100km | |
미국 | 3/20/16 | 1,234.56 | $ 1,000.50 | 1,000.50 MXN | 60 마일 |
일반 자원
- Wikipedia : 국제화 및 현지화
Java 자원
- Java 튜토리얼 : 국제화
- Oracle : 국제화 : Java 플랫폼에서의 로케일 이해
- JavaDoc :
Locale
"로케일"을 사용하여 자동으로 날짜가 지정된 날짜
Pinch에서 SimpleDateFormatter
는 훌륭하지만, 이름처럼 잘 확장되지 않습니다.
응용 프로그램 전체에 "MM/dd/yyyy"
를 하드 코딩하면 국제 사용자가 만족하지 않을 것입니다.
자바가 당신을 위해 일하게하십시오
DateFormat
의 static
메서드를 사용하여 사용자의 올바른 형식을 검색합니다. 데스크톱 응용 프로그램 ( 기본 로켈을 사용하는 )의 경우 간단히 다음을 호출하십시오.
String localizedDate = DateFormat.getDateInstance(style).format(date);
여기서 style
는 DateFormat
지정된 형식 상수 ( FULL
, LONG
, MEDIUM
, SHORT
등) 중 하나입니다.
사용자가 요청의 일부로 로케일을 지정하는 서버 측 응용 프로그램의 경우, 대신 getDateInstance()
명시 적으로 전달해야합니다.
String localizedDate =
DateFormat.getDateInstance(style, request.getLocale()).format(date);
문자열 비교
대소 문자를 무시한 두 문자열 비교 :
"School".equalsIgnoreCase("school"); // true
사용하지 마십시오.
text1.toLowerCase().equals(text2.toLowerCase());
언어는 대소 문자 변환 규칙이 다릅니다. '나'는 영어로 'i'로 변환됩니다. 그러나 터키에서는 '나'가 'ı'가된다. toLowerCase()
사용해야하는 경우에는 Locale
: String.toLowerCase(Locale)
을 예상하는 오버로드를 사용하십시오.
사소한 차이점을 무시하고 두 문자열 비교 :
Collator collator = Collator.getInstance(Locale.GERMAN);
collator.setStrength(Collator.PRIMARY);
collator.equals("Gärten", "gaerten"); // returns true
대소 문자를 무시하고 자연어 순서에 맞는 문자열 정렬 (콜 레션 키를 사용하여 :
String[] texts = new String[] {"Birne", "äther", "Apfel"};
Collator collator = Collator.getInstance(Locale.GERMAN);
collator.setStrength(Collator.SECONDARY); // ignore case
Arrays.sort(texts, collator::compare); // will return {"Apfel", "äther", "Birne"}
장소
java.util.Locale
클래스는 주어진 텍스트, 숫자, 날짜 또는 연산을 지역화 할 "지리적, 정치적 또는 문화적"영역을 나타내는 데 사용됩니다. 따라서 Locale 객체는 국가, 지역, 언어 및 언어 변형을 포함 할 수 있습니다. 예를 들어 한 국가의 특정 지역에서 사용되거나 해당 언어가 시작된 국가와 다른 국가에서 사용되는 방언을 포함 할 수 있습니다.
Locale 인스턴스는 입력, 출력 또는 내부 조작을위한 변환이든 상관없이 해당 동작을 현지화해야하는 구성 요소로 전달됩니다. Locale 클래스는 그 자체로 국제화 또는 지역화를 수행 할 수 없습니다.
언어
언어는 ISO 639 2 또는 3 문자 언어 코드 또는 등록 된 언어 하위 태그 (최대 8 자) 여야합니다. 언어에 2 자 및 3 자 언어 코드가있는 경우 2 자 코드를 사용하십시오. 언어 코드의 전체 목록은 IANA 언어 서브 태그 레지스트리에서 찾을 수 있습니다.
언어 코드는 대소 문자를 구별하지 않지만 Locale 클래스는 항상 소문자 버전의 언어 코드를 사용합니다
로켈 작성
java.util.Locale
인스턴스를 생성하는 방법에는 4 가지가 있습니다.
Locale constants
Locale constructors
Locale.Builder class
Locale.forLanguageTag factory method
Java ResourceBundle
다음과 같이 ResourceBundle 인스턴스를 생성한다.
Locale locale = new Locale("en", "US");
ResourceBundle labels = ResourceBundle.getBundle("i18n.properties");
System.out.println(labels.getString("message"));
속성 파일 i18n.properties
가 있다고 가정합니다.
message=This is locale
산출:
This is locale
로케일 설정
다른 언어를 사용하여 상태를 재현하려면 setDefault()
메서드를 사용할 수 있습니다. 사용법 :
setDefault(Locale.JAPANESE); //Set Japanese