ハードコーディングされた文字列リテラル
ソースコードにハードコードされた文字列リテラルが含まれている場合は、 国際化対応コードのインスペクションを有効にしてハイライトすることができます。 その後、ローカライズのためにこれらの文字列を プロパティファイルに抽出するか、ローカライズされることを意図していない場合は無視します。
ハードコーディングされた文字列リテラルのハイライトを有効にする
設定 ダイアログ Ctrl+Alt+S を開き、 エディター を展開して インスペクション をクリックします。
目的のプロファイルを選択し、 Java でノード 国際化対応 を見つけます。
ハードコードされた文字列 インスペクションを有効にして、ハードコードされた文字列リテラルをエディターでハイライトします。
変更を適用して、ダイアログを閉じます。
エディターでは、ハードコードされた文字列リテラルをハイライトします(下のスクリーンショット参照)。

ハードコーディングされた文字列の国際化ダイアログ
IntelliJ IDEA は、文字列リテラルをプロパティファイルに抽出するための特別なインテンションアクション ハードコード文字列リテラルの国際化 を提供します。 java.util.ResourceBundle クラスまたはカスタムユーティリティクラスを使用してリソースバンドルにアクセスできます。
項目 | 説明 |
|---|---|
Properties file | このフィールドに、抽出した文字列リテラルを保存する既存の .properties ファイルを指定します。 ファイルのパスを手動で入力するか、 参照 |
リソースバンドル内のすべてのプロパティファイルを更新する | ターゲットバンドル内のすべてのプロパティファイルを更新するには、このチェックボックスを選択します。 |
プロパティキー | デフォルトでは、このフィールドには、抽出される文字列の値に基づいて、推奨されるキー名が表示されます。 デフォルトの名前をそのまま使用するか、任意の名前を入力します。 |
プロパティ値 | デフォルトでは、このフィールドには抽出される文字列の値が表示されます。 デフォルト値をそのまま使用するか、目的の値を入力します。 |
リソースバンドル式 | デフォルトでは、このフィールドには、ソースコード内のリソースバンドル宣言からのリソースバンドル式が表示されます。 リソースバンドルがソースコードで宣言されていない場合、フィールドは表示されません。 目的の式を定義するには、次のいずれかを実行します。
|
国際化テンプレートの編集 | リンクをクリックして ファイルテンプレートを編集 ダイアログを開き、カスタムユーティリティクラスのメソッドにアクセスするための I18nized Expressionテンプレートを変更します。 詳細については、 国際化された式テンプレートを編集する を参照してください。 変更されたファイルテンプレートは、すべてのプロジェクトに影響するグローバル設定です。 デフォルトに戻す場合は、 ファイルおよびコードテンプレート ダイアログを開き、 コード タブで 国際化式テンプレートを見つけて、 リセット ボタン |
プレビュー | この読み取り専用フィールドには、 インテンションアクションを適用した結果が表示されます。 |
ハードコーディングされた文字列リテラルの抽出
java.util.ResourceBundleを使用して文字列リテラルを抽出する
まず、プロジェクト内に少なくとも 1 つのプロパティファイル ( my .properties など) が必要です。
ソースコードで、抽出されたリテラルの格納に使用されるリソースバンドルを次の形式で指定します。
private static ResourceBundle <field name> = ResourceBundle.getBundle("<bundle name>");例:
private static ResourceBundle myBundle = ResourceBundle.getBundle("awesomeBundle");ハイライトされた文字列をクリックし、 Alt+Enter を押して を選択します。 この例では、 IntelliJ IDEA を使用して新しいJavaプロジェクトを作成する際に含まれるオプションのサンプルコードを使用しています。

ハーコード化された文字列の国際化ダイアログで、既存のターゲットプロパティファイル、プロパティのキーと値、リソースバンドル式を指定します。
ResourceBundleフィールドがソースコードで宣言されている場合、IntelliJ IDEA はデフォルトでその名前を提案します。 このフィールドをソースコードで宣言していない場合、このフィールドは表示されません。 ソースコードに ResourceBundle タイプの式を含める必要があります。
OK をクリックします。 ハードコードされた文字列リテラルの行が置き換えられます。
リソースバンドルがソースコードで宣言されている場合は、次のようになります。
System.out.println(myBundle.getString("hello.world"));ダイアログボックスでリソースバンドルが定義されている場合は、次のようにします。
System.out.println(ResourceBundle.getBundle("awesomeBundle").getString("hello.world"));
国際化された式テンプレートを編集する
カスタムユーティリティクラスを使用してリソースバンドルにアクセスする場合は、設定または ハーコード化された文字列の国際化ダイアログのいずれかを使用して、カスタムユーティリティクラスのメソッドを指す 国際化式テンプレートを定義できます。
設定 ダイアログを Ctrl+Alt+S 開き、その後 に移動してください。 ここでテンプレートを編集できます。

ハーコード化された文字列の国際化ダイアログで、 国際化テンプレートの編集 を選択します。 ファイルテンプレート ダイアログで、カスタムユーティリティクラスのメソッドを指すように 国際化式を変更します。

ハードコーディングされた文字列リテラルの無視
ハードコードされた文字列リテラルを無視する場合は、 国際化を必要としない アノテーションを使用します。
Alt+Enter を押して、文字列リテラルのインテンションアクションを表示します。
アクションのリストから フィールド「out」に「@NonNls」としてアノテーションを付ける を選択します。
annotations.xml ファイルを保存する場所を指定します。