수색…


비고

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 마일

일반 자원

Java 자원

"로케일"을 사용하여 자동으로 날짜가 지정된 날짜

Pinch에서 SimpleDateFormatter 는 훌륭하지만, 이름처럼 잘 확장되지 않습니다.

응용 프로그램 전체에 "MM/dd/yyyy" 를 하드 코딩하면 국제 사용자가 만족하지 않을 것입니다.

자바가 당신을 위해 일하게하십시오

DateFormatstatic 메서드를 사용하여 사용자의 올바른 형식을 검색합니다. 데스크톱 응용 프로그램 ( 기본 로켈을 사용하는 )의 경우 간단히 다음을 호출하십시오.

String localizedDate = DateFormat.getDateInstance(style).format(date);

여기서 styleDateFormat 지정된 형식 상수 ( 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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow