LazowskiAnton · Extensions

LocaleSmith

每個 .resx 索引鍵的文字,就顯示在使用該索引鍵的位置:值顯示在行尾,滑鼠暫留即可查看所有翻譯;缺少的翻譯和錯誤的預留位置會在使用者看到之前被標出。

免費 · Visual Studio 2022 和 2026 · 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 中開啟 和 複製索引鍵。

顯示某個索引鍵各語言翻譯的暫留卡片,其中兩個缺少

問題

問題與編譯器警告一樣以波浪線顯示,因此凡是能顯示警告的工具也能顯示它們——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 需要 public 類別。請在資源設計工具中將 .resx 檔案的存取修飾詞設為 Public,或使用 public 包裝類別。

它能與 LensSmith 一起使用嗎?

可以。兩者都在行尾顯示內容,因此會共用這塊空間:先顯示索引鍵的值,再顯示診斷訊息。LocaleSmith 的問題會像其他警告一樣顯示在 LensSmith 中。

LocaleSmith 會傳送任何資料嗎?

不會。沒有遙測,也不存取網路;您的資源檔會一直留在您的電腦上。

要在哪裡回報問題或提出功能建議?

請在 GitHub 上的 Feedback 存放庫中建立 issue——那裡有用於回報錯誤和提出建議的表單(如有私密名稱,請先替換)。也可以使用 Marketplace 上的 Q&A 索引標籤。

變更記錄

1.0.1

1.0.0