LocaleSmith
すべての .resx キーのテキストを、キーを使っているその場所に表示します。値は行の後ろに、すべての翻訳はホバーで。不足している翻訳や誤ったプレースホルダーは、ユーザーの目に触れる前に指摘されます。
無料 · Visual Studio 2022 と 2026 · UI は 14 言語 · テレメトリなし
LocaleSmith を選ぶ理由

読めるコード
Strings.InvoiceSaved だけでは多くを語りませんが、「Invoice {0} saved」ならすべてがわかります。テキストは行の後ろに、控えめな斜体で表示されます。
すべての言語がすぐそこに
値にポインターを合わせればすべての翻訳を表示。エディター全体をドイツ語や日本語に切り替えれば、アプリを実行する前に画面を確認できます。
ミスはユーザーより先に
不足している翻訳、既定のテキストにない {1}、キーの入力ミス、引数が足りない string.Format — すべてコード上で下線が引かれます。
無料、条件なし
サブスクリプションも試用期間も催促画面もテレメトリもありません。Visual Studio 2022 と 2026、x64 と ARM64 で動作します。
機能
- キーの横に値: 各キーのテキストを行の後ろに引用符付きで表示。
{0}などのプレースホルダーは色分けされ、改行は ↵ で示されます。 - プレビューの言語: リソースにある任意の言語で値を表示。.NET が既定のリソースから取得する値は、⚠ 付きの黄色で示されます。
- ホバーですべての翻訳: キーの全言語を一覧するカードを表示。クリックすると、その言語の .resx が値の位置で開きます。値がなければ自動で追加されます。
- コード上の問題: 不足している翻訳、プレースホルダーの不一致、存在しないキー、引数の数が合わない
string.Format呼び出しを波線で表示します。 - リソースに抽出: C#、Visual Basic、XAML の文字列上で Ctrl+. を押すと、文字列を .resx ファイルに移し、その場所にキーを挿入します。
- 常に最新: ソリューションの .resx ファイルをバックグラウンドで読み込んで監視するため、保存した変更はすぐに反映されます。
- ダーク テーマとライト テーマ: 色は Visual Studio のテーマに従います。
認識するキー
| コード | 場所 |
|---|---|
Strings.Key, Properties.Resources.Key | C#, Visual Basic, F# |
{x:Static res:Strings.Key} | XAML (WPF, WinUI, MAUI, Avalonia) |
localizer["Key"], @Localizer["Key"] | ASP.NET Core と Blazor: IStringLocalizer、IViewLocalizer |
GetString("Key") | ResourceManager とローカライザー |
ホバーですべての翻訳
値にポインターを合わせると、キーの全言語を一覧するカードが表示され、不足している翻訳は黄色で示されます。言語をクリックすると、その .resx が値を選択した状態で開くので、そのまま上書き入力できます。上部には .resx で開く と キーをコピー があります。

問題
問題はコンパイラの警告と同じ波線で表示されるため、警告を表示するツールならどれでもこれらも表示します。LensSmith なら行末に書き出します。各ルールは個別にオフにできます。

| ルール | 下線が引かれるもの |
|---|---|
| LOC001 | 一部の言語ファイルにないキー。該当する言語の一覧も表示します。 |
| LOC002 | 既定のテキストとプレースホルダーが異なる翻訳。余分なプレースホルダーは実行時に失敗するため、エラーになります。 |
| LOC003 | どのリソース ファイルにもないキーを使った localizer["Key"] や GetString("Key")。最も近い既存のキーも表示します。 |
| LOC004 | テキストが必要とする数より引数が少ない (エラー)、または使われる数より多い (警告) string.Format(Strings.Key, …)。 |
リソースに抽出
文字列内にキャレットを置いて Ctrl+. を押すと、リソースに抽出… がテキストから作ったキーと最も近い .resx ファイルを提案します。ファイルに同じテキストが既にあれば、そのキーが使われます。文字列は Strings.Key (ファイルがその名前空間をインポートしていない場合は名前空間付き) に、XAML では {x:Static res:Strings.Key} に置き換えられ、xmlns も自動で追加されます。
![提案されたキーとファイルを表示する [リソースに抽出] ダイアログ](../../localesmith/marketplace/extract.png)
設定
ツール → オプション → SmithWorks → LocaleSmith。各オプションに説明があり、上部のプレビューで選択した言語の値をすぐに確認できます。
| オプション | 既定値 |
|---|---|
| キーの横にリソースの値を表示する | オン |
| プレビューの言語 | 既定のリソース |
| 最大文字数 | 80 |
| 問題: LOC001–LOC004 | すべてオン |
| 電球メニューに [リソースに抽出] を表示する | オン |
設定は %LocalAppData%\LocaleSmith に保存されます。

よくある質問
どの .resx ファイルを読み込みますか?
ソリューションのフォルダー (.sln または .slnx ファイルがあるフォルダー、またはリポジトリのルート) 以下にあるすべての .resx ファイルです。ただし bin、obj、node_modules は除きます。画像などテキスト以外のリソースはスキップされます。
キーの後ろに値が表示されないのはなぜですか?
キーがソリューション内の .resx ファイルに存在し、クラス名がファイル名と一致している必要があります (Strings.resx → Strings。ジェネレーターと同様に、ドットはアンダースコアになります)。値はソリューションを開いてファイルが読み込まれた少し後に表示されます。
抽出後、新しいプロパティに下線が引かれます。なぜですか?
プロジェクトがカスタム ツールで厳密に型指定されたクラス (Strings.Designer.cs) を生成している場合は、すぐに再生成されます。ビルド時に生成するプロジェクトでは、次のビルド後にプロパティが追加されます。
XAML の {x:Static} でリソース クラスが見つかりません。
x:Static にはパブリック クラスが必要です。リソース デザイナーで .resx ファイルのアクセス修飾子を Public に設定するか、パブリックなラッパーを使用してください。
LensSmith と一緒に使えますか?
はい。どちらも行末に書き出すため、そのスペースを共有します。キーの値が先に、診断メッセージがその後に表示されます。LocaleSmith の問題は、ほかの警告と同じように LensSmith に表示されます。
LocaleSmith はデータを送信しますか?
いいえ。テレメトリもネットワーク アクセスもありません。リソース ファイルはお使いのコンピューターから出ません。
問題の報告や機能の提案はどこでできますか?
GitHub の Feedback リポジトリで Issue を作成してください。バグとアイデア用のフォームがあります (非公開の名前は変更してください)。Marketplace の Q&A タブもご利用いただけます。
変更履歴
1.0.1
- 設定に「Marketplace で評価」リンクを追加しました。
1.0.0
- 最初の公開リリース。