Java에서 다국어를 지원하는 Locale 사용 방법 정보

9665 단어 Java다국어
오랜만에 자바를 접하게 됐는데 다국어 대응을 할 때 로케어 사용법에 고민이 있어 체크용 코드를 만들어 봤다.

개시하다


로컬의 값을 얻으려면 언어 처리를 자동으로 바꿉니다.
Locale.getDefault 결과 및 일본어를 나타내는 LocaleJAPANESE가 비슷한 편이라면 일본어 정보를 보여주고 싶었지만 예상치에 못 미쳤다.

걱정거리


Locale.getDefault()의 값은 ja입니다.JP인데, Locale.JAPANESE의 값이 ja이기 때문에 일본어로 비교할 수 없습니다.Locale.JAPAN의 값은 ja입니다.JP니까 일본어 로컬을 보여줘야 돼.getDefault의 값과 Locale입니다.JAPAN을 비교 판정해서 표현하면 되나요?

해석하다


Locale.JAPAN은 일본(국), 로컬을 대표한다.JAPANESE는 일본어를 나타냅니다.
일본에 사는 사람도 영어를 쓰는 언어가 있기 때문에 로컬.JAPAN과 비교하기가 어렵다.
Locale.getDefault().getLanguage를 통해 얻은 값과 LocaleJAPANESE.getLanguage()의 값을 비교하는 것이 좋습니다.
귀찮은 영어는 미국 영어 엔.미국, 영국 영어 enGB, 오스트레일리아 영어 enAU가 있지만 영어로 표시하면 됩니다.영국 영어가 콕니라면 my를 me 또는 be 동사로 바꿀 필요가 있습니까?도쿄 사람들이 말하는 이상한 관서강처럼 이른바 모키니가 될까
LocaleTest.java
import java.util.Locale;
public class LocaleTest{
  public static void main(String[] args){
    Locale localization=Locale.getDefault();

    System.out.println("java.version:" + System.getProperty("java.version"));

    System.out.println("localization.toString():" + localization.toString()); // Locale型を文字列で表示

    System.out.println("localization.getCountry() :" + localization.getCountry() ); // 国
    System.out.println("localization.getLanguage() :" + localization.getLanguage() ); // 言語
    System.out.println("localization.getDisplayVariant():" + localization.getDisplayVariant()); // バリアント

    System.out.println("Locale.getDefault():" + localization); // Locale型
    System.out.println("localization.getLanguage():" + localization.getLanguage()); // 文字列型

    System.out.println("Locale.JAPAN(国):" + Locale.JAPAN);
    System.out.println("Locale.JAPAN(国.getCountry()):" + Locale.JAPAN.getCountry());
    System.out.println("Locale.JAPAN(国.getLanguage()):" + Locale.JAPAN.getLanguage());
    String msg=localization==Locale.JAPAN ? "こんにちは 世界!" : "Hello World";
    System.out.println(msg);

    System.out.println("Locale.JAPANESE(日本語):" + Locale.JAPANESE);
    System.out.println("Locale.JAPANESE(日本語.getCountry()):" + Locale.JAPANESE.getCountry());
    System.out.println("Locale.JAPANESE(日本語.getLanguage()):" + Locale.JAPANESE.getLanguage());
    msg=localization==Locale.JAPANESE ? "こんにちは 世界!" : "Hello World";
    System.out.println(msg);

    System.out.println("localization.getLanguage()==Locale.JAPANESE.getLanguage()");
    msg=localization.getLanguage()==Locale.JAPANESE.getLanguage() ? "こんにちは 世界!" : "Hello World";
    System.out.println(msg);

  }
}

실행 결과

java.version:1.8.0_181
localization.toString():ja_JP
localization.getCountry() :JP
localization.getLanguage() :ja
localization.getDisplayVariant():
Locale.getDefault():ja_JP
localization.getLanguage():ja
Locale.JAPAN(国):ja_JP
Locale.JAPAN(国.getCountry()):JP
Locale.JAPAN(国.getLanguage()):ja
こんにちは 世界!
Locale.JAPANESE(日本語):ja
Locale.JAPANESE(日本語.getCountry()):
Locale.JAPANESE(日本語.getLanguage()):ja
Hello World
localization.getLanguage()==Locale.JAPANESE.getLanguage()
こんにちは 世界!

좋은 웹페이지 즐겨찾기