ReSharper 2020.3 ヘルプ

ローカライゼーションインスペクションとクイックフィックス

ReSharper は、リソースファイル内のローカライズ可能な文字列、リソースの問題などを検出することにより、アプリケーションをローカライズするのに役立つ多数のコードインスペクションを提供します。これらのインスペクションは、オープンドキュメントの設計時にローカライゼーションの問題を検出し、ソリューション全体まで特定の範囲でローカライゼーションの問題を見つけることができます。

設計時には、検出された問題があなたの注意を引くためにハイライトされます。ハイライトされた問題を解決するために、ReSharper は多数のリソース固有のクイックフィックスを提供します。

「要素はローカライズ可能」インスペクション

このインスペクションは、ハードコードされた文字列リテラルを検出し、リソースファイルに移動することを提案します。同じ文字列がすでにリソースに定義されている場合、ReSharper はリテラルを既存のリソースエントリに置き換えることを提案します。

すべての文字列をリソースに移動してローカライズする必要があるわけではないため、ReSharper は、このインスペクションを構成するいくつかの方法を提供します。「Element is localizable」インスペクションが有効になっている場合、以下のフローチャートに従って動作します。アルゴリズムの各ステップは、チャートで説明されています。

ReSharper: How the 'Element is localizable' inspection works
  1. 逐語的な文字列(英語)には @ が接頭部として付けられます(例: @"Hello world"

  2. デフォルトでは、逐語的文字列はローカライゼーションインスペクションによって無視されますが、ReSharper オプション(Alt+R, O)のコード編集 | インスペクション重大度ページで逐語的な文字列を分析しないオプションを使用して変更できます。

  3. Localizable プロジェクトプロパティは、プロジェクト内の文字列の処理方法を定義します。このプロパティを変更するには、ソリューションエクスプローラーでプロジェクトを右クリックし、コンテキストメニューからプロジェクト項目のプロパティを編集するを選択して、ローカライズ可能> [ デフォルト | はい | いいえ ] を選択します。

  4. プロジェクトに少なくとも 1 つのリソースファイル(.resx)が含まれている場合、ReSharper はプロジェクトをデフォルトでローカライズ可能と見なします。

  5. 文字列値を LocalizableAttribute でマークすることにより、文字列値を消費できる特定の関数およびプロパティをさらに構成できます。これにより、[Localizable(true)] を明示的に有効にしたり、消費された文字列のローカライゼーションインスペクションで [Localizable(false)] を無効にしたりできます。
    シンボルは、外部アノテーションを介してこの属性でマークできることに注意してください。例: 外部アノテーションは、Console.WriteLine[Localizable(true)] でマークするために使用されます。

  6. ローカライズ可能なインスペクタ プロジェクトプロパティは、LocalizableAttribute でマークされたメンバーによって消費されない文字列リテラルを処理する方法を定義します。楽観的アルゴリズムはそのような文字列を無視し、悲観的なそれらにローカライズ可能としてフラグを立てます
    このプロジェクトプロパティを変更するには、ソリューションエクスプローラーでプロジェクトを右クリックし、コンテキストメニューからプロジェクト項目のプロパティを編集するを選択して、ローカライズ可能なインスペクター> [ 楽観的 | 悲観的 ] を選択します。

現在のプロジェクトでローカライゼーションインスペクションを無効にする最も簡単な方法は、エディターでハイライト表示された文字列の上に Alt+Enter を押して、アクションリストの対応するコマンドを使用することです。

Disabling localization inspection for project
このコマンドは、現在のプロジェクトの Localizable プロパティをいいえに設定します。

ローカライゼーションの問題のクイックフィックス

ローカライズインスペクションで検出されたコードの問題でクイックフィックスが利用可能な場合、ReSharper はキャレットの左側に対応するアクションインジケーターを表示します。 Alt+Enter を押すか、インジケータアイコンをクリックして、使用可能なアクションのリストを表示できます。目的のアクションを適用するには、それをクリックするか、リストで選択して Enter を押します。

ローカライゼーションインスペクションのクイックフィックスは次のとおりです。

リソースに移動

このクイックフィックスはリソースに移動リファクタリングを呼び出し、ローカライズ可能な文字列をリソースファイルに移動します。文字列が中括弧でハイライトされている場合に使用できます。

ReSharper: A quick-fix to move string literal to resource

リテラルの代わりにリソースエントリを使用する

ReSharper が何らかの文字列リテラルがすでにリソースに定義されていることを検出した場合は、文字列を対応するリソースの使用方法に置き換えることをお勧めします。

ReSharper: A quick-fix to replace a string literal with an existing resource entry

このクイックフィックスを適用すると、文字列はリソースの使用に置き換えられます。

タイプに「Localizable(false)」のアノテーションを付ける

このクイックフィックスのグループを使用すると、選択したタイプまたはメンバーに [Localizable(false)] 属性を追加して、このシンボルのすべての使用について「要素はローカライズ可能」インスペクションを抑制することができます。

リソースファイルを作成する

リソースファイル名がコードファイルで使用されているが、リソースファイルをまだ作成していない場合は、ReSharper で作成できます。リソースファイル名を赤でハイライトし、対応するクイックフィックスを提案します。

ReSharper: Create resource file quick-fix
クイックフィックスを適用すると、不足しているリソースファイルが作成されます。

リソース項目を作成する

リソース名がコードファイルで使用されているにもかかわらず、このリソースをまだ宣言していない場合、ReSharper はそれを行うことができます。リソース名を赤でハイライトし、対応するクイックフィックスを提案します。

ReSharper: Create resource item quick-fix
クイックフィックスを適用すると、不足しているリソース宣言がリソースファイルに追加されます。

リソースエントリを宣言する

カルチャ階層に編成されたカルチャがいくつかあり、カルチャ固有のリソースファイルで宣言されているがデフォルトカルチャでは宣言されていないリソースエントリがある場合、ReSharper はリソース宣言をハイライトして対応するクイックフィックスを提案します。

ReSharper: Resource value is not declared in the base culture

クイックフィックスを適用した後、リソース宣言はデフォルトのカルチャに挿入され、そこで新しい値に置き換えることができます。

リソースエントリを上書きする

カルチャ階層に編成されたカルチャがいくつかあり、デフォルトカルチャで宣言されているが他のカルチャでオーバーライドされていないリソースエントリがある場合、ReSharper はリソースの名前をハイライトして対応するクイックフィックスを提案します。):

ReSharper: Resource value is not overridden in specific cultures

クイックフィックスを適用すると、リソース宣言がカルチャ固有のリソースファイルに挿入され、そこで正しい値を指定できます。

リソースエントリを削除する

ReSharper は以下の場合にこのクイックフィックスを提案します:

  • 資源項目は、中立および特定の文化において等しい値を有します。

  • 同じリソース名を持つ宣言が 2 つ以上あります。

  • カルチャ階層で編成されたカルチャがいくつかあり、特定のカルチャで宣言されているがデフォルトカルチャでは宣言されていないリソースエントリがあります。

ReSharper: A quick-fix to remove a resource entry

クイックフィックスを適用すると、現在のリソースファイルからリソース宣言が削除されます。

冗長なリソースエントリタイプを削除する

リソース項目の文字列・タイプを指定することは、それがデフォルトのリソース項目タイプであるため、冗長です。ReSharper は冗長な属性を削除することを提案します。

ReSharper: A quick-fix to remove redundant resource entry type

安全な削除

カルチャ階層に編成されたカルチャがいくつかあり、デフォルトカルチャで宣言されているがカルチャ固有のリソースファイルではオーバーライドされていないリソースエントリがある場合、ReSharper はこのクイックフィックスを提案するリソースの名前をハイライトします。

ReSharper: A quick-fix to remove a resource entry, which has no culture-specific overrides

このクイックフィックスを適用した後、安全なリソース削除リファクタリングの手順に従います。

関連ページ:

設計時にコードの問題を検出する

ReSharper は、エディターでコードファイルを開くとすぐに分析を開始し、最後まで編集を続けます。検出されたすべてのコードの問題は、重大度に従ってエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のマーカーバーにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。また、JSLint、ESLint、TSLint から Javascript / Typescript コードの検証と修正をエディターで使用すること...

特定の範囲でコードの問題を見つける

設計時コードインスペクションは、エディターでコーディングしたり、特定のファイルを見直したりするときに役立ちます。ただし、ReSharper を使用すると、ソリューション全体または狭い範囲でスタティックコード分析を実行し、結果をフレンドリーな視点で調べることもできます。必要に応じてインスペクション結果を共有することもできます。Visual Studio および ReSharper を起動せずに、コマンドラインから特定のスコープ内のコードをインスペクションすることもできます。開始コードインスペクショ...

ローカライゼーションリファクタリング

ReSharper は、プロジェクトの国際化を大幅に簡素化する一連のリソース関連のリファクタリングを提供します。リソースに移動 :プロジェクトの内部化に取り組むときは、ローカライズ可能な文字列をリソースファイルに格納するのが一般的です。ReSharper はローカライズ対象の文字列を検出してハイライ

コードインスペクション設定の構成

コードアノテーションを使用して、ReSharper がコードをインスペクションする方法をカスタマイズすることもできます。設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押し...

外部アノテーション

使い方:ソースが利用できない外部ライブラリを使用している場合、コード注釈を指定するための属性をそこで使用することは現実的ではないようです。この場合、外部注釈を使用できます。これにより、すでにコンパイルされているエンティティを、ReSharper のコード分析エンジンによって認識される属性で補完できます。外部注釈を使用すると、ライブラリのコンパイル時に宣言されていなかった属性(メソッド、パラメーター、その他の宣言)を表示することで、エンジンを「チート」できます。外部注釈は XML ファイルで指定...

プロジェクト固有のプロパティを構成する

ReSharper の設定のメインセット(ReSharper | オプションダイアログで設定)は、グローバルまたはソリューションごとに適用されます。各プロジェクトまたはフォルダーごとに個別に設定できる環境設定もあります。これらの設定は、プロジェクトアイテムのプロパティポップアップで利用できます。プロジェクトアイテムのプロパティポップアップは、ソリューションエクスプローラーでプロジェクトのコンテキストメニューからプロジェクト項目のプロパティを編集するを選択して呼び出すことができます。他の ReSh...