針對需要支援多語系的場合,.NET 標準做法是為各語系建立專屬資源檔,放入該語系的文字翻譯、專用圖示,Visual Studio 會將這些資源檔編譯成衛星組件(Satellite Assembly)。如此,執行時可依環境彈性載入,有專屬資源就用,沒有就用英文;開發時也可依需求逐步增加新語系,很方便。

但我一直有個困擾,當專案使用到支援多語系元件時,編譯資料夾就會生出一堆語系名稱資料夾,但我的網站沒有要服務歪果仁啊,冒出這麼多用不到的東西令人心煩。

之前遇到,我都很認命地手動刪檔,但想想不對,這太笨了,不像 .NET 的風格,應該有官方解法。

Yes! 在 .csproj 加上 SatelliteResourceLanguages,設定要包含的語系,這樣就行了! 可惡,我為什麼得過且過拖了這麼久?

Tips of how to prevent unnecessary resource files by SatelliteResourceLanguages setting.


Comments

# by 小雞

結果還是有en? 是預設得有的嗎

# by Jeffrey

to 小雞,程式庫預設語系一般是英文,大多不需要額外資源 dll,但如果程式將英文也拆出來放資源檔,就會出現 en 資料夾。

Post a comment