iT邦幫忙

DAY 24
3

DotNetNuke的學習心得系列 第 20

[鐵人賽Day24]DotNetNuke的網頁選單(Menu)翻譯

雖然目前新的版本針對Page(Tab)的設定已經多了Page URL的屬性,可以指定網址該如何呈現,不像較早的版本會使用Page Name(TabName)來處理URL的部份(Ex:「dnndemo.azurewebsites.net/zh-tw/測試頁面/」和「dnndemo.azurewebsites.net/zh-tw/Test/」的差別),但是如果還是使用較早的版本或是不在在Page Name(TabName)的屬性裡使用中文,那麼就必須要修改DotNetNuke裡的GlobalResources.resx檔案,可以使用前一篇的「語言編輯器(Language Editor)」或是其它文字編輯器修改後上傳到網站上。
用文字的敘述其實會看得不太懂意思,所以接下來看圖說故事吧!

網站新增了一個頁面,設定如下:

在zh-TW的語系下看到的網站選單是英文的:

有些讀者可能會想說,把網頁名稱(Page Name)改成中文的就好了:


這樣子的作法並沒有錯,的確是可以達到顯示中文的目的,但是在資料庫的資料表中相對的也會是變成這樣子的內容:

雖然無傷大雅,但是如果有在寫模組需要在程式裡面查詢或處理相關的資料,那麼可能就必須這麼寫TabController.GetTabByTabPath(PortalID, “//測試頁面"),而且如果沒有啟用Content Localization的功能,那麼就不會針對不同的語系可以各別設定Page Name,這時候改了Page Name就會變成每個語系顯示的都是同樣的內容:

所以如果要解決這樣的問題,那麼就需要使用正規的方式處理,秘密就藏在GlobalResources.resx檔案裡:



不過讀者可能會發現,DotNetNuke系統內建的頁面的確可以在GlobalResources.resx的檔案裡面找到(資源名稱為「//[Page Name].String」),但是如果是自己之後再建立的頁面就沒有辦法找到相關的資源名稱,而且也沒有可以讓我們手動新增的地方。

所以這時候必須使用一般的文字編輯器(記事本或Notepad++),把GlobalResources.resx打開,在resx檔案(XML格式)最後面的</root>之前自行增加如下的格式:

如果是最上層的頁面,在name的部份就是「//[網頁名稱].String」,第二層頁面就是「//[第一層網頁名稱]/[第二層網頁名稱].String」,例如:網頁名稱為「ContactUs」就是「//ContactUs.String」,Admin頁面底下的Language頁面就是「//Admin/Language.String」。

的確,這一點筆者也覺得是DotNetNuke團隊在設計上考量不周全的地方,還記得前一篇提到網站預設語系是以en-us為主對吧?!所以只要是在GlobalResources.resx裡面沒有的,就算在GlobalResources.zh-TW.resx裡面增加也可能會有問題,因為只要使用Language Editor修改後儲存,就會以en-us為主,將不一樣的(也就是GlobalResources.resx中沒有的資源名稱)刪除,所以記得一定要在GlobalResources.resx也增加一組同樣的設定值。

(本文同步發表於泰克哪裡去部落格)

[鐵人賽Day1]DotNetNuke簡介
[鐵人賽Day2]DotNetNuke安裝前置作業
[鐵人賽Day3]DotNetNuke安裝-傳統方式安裝在IIS
[鐵人賽Day4]DotNetNuke安裝-透過Web PI安裝
[鐵人賽Day5]DotNetNuke安裝-使用Windows Azure Website
[鐵人賽Day6]DotNetNuke網站結構說明
[鐵人賽Day7]安裝DotNetNuke語系
[鐵人賽Day8]DotNetNuke-新增頁面與模組
[鐵人賽Day9]第一個DotNetNuke模組-Hello DotNetNuke
[鐵人賽Day10]DotNetNuke模組的多國語系
[鐵人賽Day11]安裝DotNetNuke專案範本
[鐵人賽Day12]DotNetNuke模組設計範本–SimpleModule(1)
[鐵人賽Day13]DotNetNuke模組設計範本–SimpleModule(2)
[鐵人賽Day14]DotNetNuke模組設計範本–SimpleModule(3)
[鐵人賽Day15]DotNetNuke模組設計範本–SimpleModule(4)
[鐵人賽Day16]DotNetNuke使用篇–會員帳號設定(User Account Settings)
[鐵人賽Day17]DotNetNuke使用篇–第三方帳號驗證
[鐵人賽Day18]DotNetNuke使用篇–管理使用者帳號、角色
[鐵人賽Day19]DotNetNuke使用篇–建立子網站
[鐵人賽Day20]DotNetNuke使用篇–內容多語系化
[鐵人賽Day21]DotNetNuke使用篇–Host設定介紹
[鐵人賽Day22]DotNetNuke使用篇–網站設定(Site Settings)介紹
[鐵人賽Day23]翻譯DotNetNuke–使用語言編輯器
[鐵人賽Day25]設定DotNetNuke的Email範本


上一篇
[鐵人賽Day23]翻譯DotNetNuke–使用語言編輯器
下一篇
[鐵人賽Day25]設定DotNetNuke的Email範本
系列文
DotNetNuke的學習心得27

尚未有邦友留言

立即登入留言