LazowskiAnton · Extensions

LocaleSmith

すべての .resx キーのテキストを、キーを使っているその場所に表示します。値は行の後ろに、すべての翻訳はホバーで。不足している翻訳や誤ったプレースホルダーは、ユーザーの目に触れる前に指摘されます。

無料 · Visual Studio 2022 と 2026 · UI は 14 言語 · テレメトリなし

LocaleSmith を選ぶ理由

LocaleSmith なしとありの同じコード: リソース キーとそのテキスト

読めるコード

Strings.InvoiceSaved だけでは多くを語りませんが、「Invoice {0} saved」ならすべてがわかります。テキストは行の後ろに、控えめな斜体で表示されます。

すべての言語がすぐそこに

値にポインターを合わせればすべての翻訳を表示。エディター全体をドイツ語や日本語に切り替えれば、アプリを実行する前に画面を確認できます。

ミスはユーザーより先に

不足している翻訳、既定のテキストにない {1}、キーの入力ミス、引数が足りない string.Format — すべてコード上で下線が引かれます。

無料、条件なし

サブスクリプションも試用期間も催促画面もテレメトリもありません。Visual Studio 2022 と 2026、x64 と ARM64 で動作します。

機能

認識するキー

コード場所
Strings.Key, Properties.Resources.KeyC#, 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 で開く と キーをコピー があります。

キーの翻訳を表示するホバー カード (2 つの翻訳が不足)

問題

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

翻訳が不足しているキーと、書式引数の数が誤っているキーに引かれた波線
ルール下線が引かれるもの
LOC001一部の言語ファイルにないキー。該当する言語の一覧も表示します。
LOC002既定のテキストとプレースホルダーが異なる翻訳。余分なプレースホルダーは実行時に失敗するため、エラーになります。
LOC003どのリソース ファイルにもないキーを使った localizer["Key"] や GetString("Key")。最も近い既存のキーも表示します。
LOC004テキストが必要とする数より引数が少ない (エラー)、または使われる数より多い (警告) string.Format(Strings.Key, …)。

リソースに抽出

文字列内にキャレットを置いて Ctrl+. を押すと、リソースに抽出… がテキストから作ったキーと最も近い .resx ファイルを提案します。ファイルに同じテキストが既にあれば、そのキーが使われます。文字列は Strings.Key (ファイルがその名前空間をインポートしていない場合は名前空間付き) に、XAML では {x:Static res:Strings.Key} に置き換えられ、xmlns も自動で追加されます。

提案されたキーとファイルを表示する [リソースに抽出] ダイアログ

設定

ツール → オプション → SmithWorks → LocaleSmith。各オプションに説明があり、上部のプレビューで選択した言語の値をすぐに確認できます。

オプション既定値
キーの横にリソースの値を表示するオン
プレビューの言語既定のリソース
最大文字数80
問題: LOC001–LOC004すべてオン
電球メニューに [リソースに抽出] を表示するオン

設定は %LocalAppData%\LocaleSmith に保存されます。

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

1.0.0