0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカライズ

0
Posted at

java.util.Localeクラス

地域や言語などのロケール情報を扱うクラス

インスタンスの作成方法

1.getDefaultメソッド

public static Locale getDefault()

現在動かしているJava環境のロケール情報を取得するメソッド
戻り値:現在のJVMのロケール(例:ja_JP, en_US など)

使用例

public static void main(String[] args) throws Exception {
    Locale defaultLocale = Locale.getDefault();
    System.out.println("言語:" + defaultLocale.getLanguage());
    System.out.println("国:" + defaultLocale.getCountry());
    System.out.println("表示名:" + defaultLocale.getDisplayName());
}

2.コンストラクタを使う

Locale(String language)
Locale locale = new Locale("en");  // 英語(国は未指定)

言語だけを指定するコンストラクタ(国は指定しない)
そのため、getCountryメソッドで国を取得しても空文字が返る

Locale(String language, String country)
Locale locale = new Locale("ja", "JP");  // 日本語(日本)
Locale locale = new Locale("en", "US");  // 英語(アメリカ)

言語+国を指定するコンストラクタ

Locale(String language, String country, String variant)
Locale locale = new Locale("ja", "JP", "OSAKA");

言語+国+バリアント
バリアントは大阪弁とかイギリス英語とかの方言みたいなもの

3.ロケール定数を使う

Locale locale = Locale.JAPAN;
System.out.println(locale.getDisplayName());  // 日本語 (日本)

よく使われる国や言語の組み合わせがロケール定数としてあらかじめ定義されている。
これを使えばnewをしなくてもあらかじめインスタンス化されたインスタンスが利用できる

4.ビルダーを使う

public static void main(String[] args) {
    Locale locale = new Locale.Builder()
        .setLanguage("ja")       // 言語コード
        .setRegion("JP")         // 国コード
        .build();                // Localeインスタンスを生成
}

分かりやすい書き方でLocaleインスタンスを生成できる

5.forLanguageTag(String tag)メソッド

public static void main(String[] args) {
    Locale locale = Locale.forLanguageTag("ja-JP");
    System.out.println(locale.getDisplayName());  // 日本語 (日本)
}

ja-JP のような 言語タグ(BCP 47形式) をもとに Localeインスタンスを生成する

プロパティファイル

db_settings.properties
server_address=192.168.0.3

APIキーやパスワードなどの設定情報とプログラムコードを分ける書き方の時に使うファイル

プロパティファイルにAPIキーやパスワードなどの設定情報を分けて書くことで保守性とセキュリティ対策になる

プロパティファイルの拡張子は.properties
書式はキー=値またはキー:値

java.util.Propertiesクラス

プロパティファイルをJavaのプログラムから読み込むときに使う

読み込む手順

1.java.io.FileReaderオブジェクトやjava.io.FileInputStreamオブジェクトを生成
プロパティファイルを読み込むための通り道を作るイメージ

2.loadメソッドに1で生成したインスタンスの参照を渡す
通り道への地図を渡すイメージ

3.PropertiesオブジェクトのgetメソッドやgetPropertyにキーを渡して値を取得

public static void main(String[] args) {
    Properties props = new Properties();
    try (FileInputStream fis = new FileInputStream("config.properties")) {
            props.load(fis);

            String server = props.getProperty("server");
            String port = props.getProperty("port");
            System.out.println("Server: " + server);
            System.out.println("Port: " + port);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

listメソッド

public static void main(String[] args) {
    Properties props = new Properties();
    props.setProperty("username", "admin");
    props.setProperty("password", "secret");
    
    // すべてのプロパティを一覧表示(標準出力)
    props.list(System.out);
}

キーと値のペアを一覧で表示するためのメソッド

キーに対応する値を返すメソッド

getProperty(String key) メソッド
String value = props.getProperty("username");

戻り値は必ずString
存在しないキーならnullを返す

get(Object key) メソッド
Object value = props.get("username");

戻り値はObject型

native2ascii

native2ascii input.txt output.properties

プロパティファイルで日本語を使いたいときに使うJavaの標準ツール

input.txtの中身が以下だった場合

こんにちは

output.propertiesの中身はnative2asciiで以下に変換される

\u3053\u3093\u306B\u3061\u306F

指定した文字コードでプロパティファイルを読み込む方法

Charset.forName(String charsetName)メソッド

Properties prop = new Properties();
prop.load(new FileReader(
    "sample.properties",
    Charset.forName("UTF-8")));
System.out.println(prop.getProperty("test"));

forNameで読み込みたい形式の文字コードを指定して、FileReaderクラスのコンストラクタに渡す

java.io.InputStreamReaderクラスのコンストラクタで指定

Properties prop = new Properties();
prop.load(new InputStreamReader(
    new FileInputStream("sample.properties"),
    "utf-8"
    ));
System.out.println(prop.getProperty("test"));

java.util.ResourceBundleクラス

ResourceBundle resource = ResourceBundle.getBundle("sample");
System.out.println(resource.getString("test"));

java.util.Propertiesと同様にプロパティファイルを読み込むための抽象クラス

getBundleメソッド

プロパティファイルを読み込むために使う
実行すると読み込みたいプロパティファイルを元にjava.util.PropertyResourceBundleクラスのインスタンスを生成
その参照が戻る

ロケール情報によって読み込むプロパティファイルを切り替えることができる
プロパティファイルを切り替えるにはsample_ja_JP.propertiesのようにアンダースコアで言語や国を書く必要がある

ロケール情報に対応するプロパティファイルがない場合、java.util.MissingResourceExceptionがスローされるので注意

抽象クラスのため、staticであるgetBundleを使う必要がある

getStringメソッド

プロパティファイルからキーを指定して値を取り出すメソッド

java.time.format.DateTimeFormatterクラス

日付や時刻を扱う、日付の表示形式を変えるためのクラス

インスタンスを生成する方法

1.事前に定義された定数を使用する

LocalDate date = LocalDate.now();

// フォーマット(→文字列)
String formatted = date.format(DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(formatted); // 例: 2025-08-07

定数によって決まったフォーマットにformatメソッドで変換することができる

パターン文字を使用する

LocalDateTime now = LocalDateTime.of(2025, 8, 7, 13, 45, 9);

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 EEEE HH:mm:ss");

パターン文字とofPatternメソッドを使って自分の好きなフォーマットにすることができる

ローカライズされたスタイルを使用する

LocalDate date = LocalDate.of(2025, 8, 7);

// ローカライズされたスタイルを使う(日本ロケール)
DateTimeFormatter formatter = DateTimeFormatter
                            .ofLocalizedDate(FormatStyle.FULL)
                            .withLocale(Locale.JAPAN);

String result = date.format(formatter);
System.out.println(result); // 例: 2025年8月7日木曜日

ofLocalizedDateメソッド,ofLocalizedTimeメソッド,ofLocalizedDateTimeメソッドなどで情報を取得する
FULL,LONGなどの列挙定数で取得した情報の密度を決める

java.text.NumberFormatクラス

NumberFormat f1 = NumberFormat.getInstance();         // 数値
NumberFormat f2 = NumberFormat.getIntegerInstance();  // 整数
NumberFormat f3 = NumberFormat.getCurrencyInstance(); // 通貨
NumberFormat f4 = NumberFormat.getPercentInstance();  // パーセント

System.out.println(f1.format(1234.56));   // → 1,234.56
System.out.println(f2.format(1234.56));   // → 1,235(四捨五入される)
System.out.println(f3.format(1234.56));   // → ¥1,234(日本ロケールの場合)
System.out.println(f4.format(0.75));      // → 75%

数値の書式を扱うクラス

メソッドによって数値の表現方法を変えられる
getInstanceメソッドは数値
getIntegerInstanceメソッドは整数型数値
getCurrencyInstanceメソッドは通貨
getPercentInstanceメソッドはパーセント

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?