ref:
https://dotblogs.com.tw/yc421206/2015/11/27/asp_net_multiple_language_local_global_resource
ASP.NET 目錄:
App_Code
App_Data
App_GlobalResouces 整個網站
App_LocalResouces 特定某頁
Local is specific to particular page and Global is common for whole porta
本地資源檔 App_LocalResouces
用於特定頁面
放在 App_LocalResources
資源檔格式:
以login.aspx為例,預設本地端資源檔規則為 web stite name.resx,其他國家語言則是 web stite name.culture.resx,範例如下:
預設語系:login.aspx.resx
英文美國:login.aspx.en-US.resx
英文英國:login.aspx.en-GB.resx
不特別指定語系時會套用 login.aspx.resx
全域資源檔 App_GlobalResources
所有頁面共用
放在 App_GlobalResources
資源檔格式:
跟本地資源檔不一樣的是,不需要帶入頁面名稱,範例如下:
預設語系:Config.resx
英文美國:Config.en-US.resx
英文英國:Config.en-GB.resx
資源檔取用分為隱含和明確套用
明確式比隱含套用方便
開始使用多語系時一定要先建立預設語系資源檔,若沒有該檔案,其他語系的資源檔會失效
建立預設資源檔後,其他的語系則是用複製檔案的方式
資源檔維護
使用 ResX Manager,它可以由 VS 的擴充工具取得
工具自動產生本地資源檔
手動建立其實還蠻累的,利用VS IDE所提供的功能可以大量建立控制項的所屬的資源定義,在*.aspx檔裡,焦點一定要在 UI Design 模式,Generate Local Resource 選單才能點 (我卡在這裡)
VS IDE 產生本地端資源檔,如下圖:
工具產生出來的欄位,帶有後綴詞 Resource1,這命名不合我的原則,我得再用文字編輯器處理*.resx 和 *.aspx ,把 Resource1 全部取代掉;另外,他還會產生我不需要替換的欄位,與其這樣,不如我一開始就自己來
控制項的資源檔屬性
在 UI 的Design 視窗裡有一個Data屬性,就是用來處理資源檔的,如下圖:
明確(Explicit)套用本地資源檔
在前端 *.aspx,使用 <%$ Resources:Name %> 便可取得資源檔的定義