我當前的專案上, 有些使用者將前往世界各地和當他們到達不同的目的地, 使用任何機器時派上用場. 那些客人機器將運行 Windows 安裝和配置為本地語言環境. (我剛發現的客人機器可能沒有正確的語言包… 可能不會, 事實上… 我停車現在一個人).
SharePoint 需要提供一種機制,藉以使用者能夠選擇他們的首選的語言,然後榮譽那語言無論使用者如何訪問苔蘚青苔. 換句話說, 無視無論瀏覽器會告訴 IIS/苔蘚和相反查找該首選語言和使用它.
我們要去調查兩種方法:
- HTTP 處理常式: 在 IIS 上安裝一個自訂 HTTP 處理常式將查找使用者的苔蘚設定檔, 弄的首選語言,然後在將控制傳遞給苔蘚之前切換周圍所需的 HTTP 標頭.
- global.asax: 修改 global.asax 來做同樣的事情. 我們可能會修改別的東西, 但這個想法是,我們找到一些我們可以在其中插入我們地區設定開關的邏輯的地方.
其他複雜的因素是我們需要支援 60 k 使用者, 關於 1,000 這可能會同時訪問 MOSS 在高峰負荷.
HTTP 處理常式似乎相當激烈, 但可能是最好的地方,要放入的代碼,因為它是在 IIS 級別和全知. 它是工作的好的單點.
我們傾向于一種 global.asax 類型的方法, 主要是因為我們相信我們會有更多選擇,此時,緩存資料.
我會更多關於這個主題的博客,因為我瞭解更多.
如果你有知道關於這件事, 請發表評論🙂
</結束>
跟我在 Twitter 上 http://www.twitter.com/pagalvin
Technorati 標籤: 多語言, SharePoint 解決方案的設計
我還沒有測試這個,所以我不敢肯定,如果它的工作原理.
頁類有 InitializeCulture() 可以重寫的方法. 如果你這樣做在你自訂的 masterpage 後面的代碼, 你能做某事的線沿線:
重寫受保護無效 InitializeCulture()
{
// 重寫虛方法 InitializeCulture() 檢查是否設定檔包含使用者的語言設置
字串 UserCulture = GetCultureFromUserProfile();
如果 ( UserCulture != "")
{
// 是在設定檔中的使用者語言設置: 切換到它
Thread.CurrentThread.CurrentUICulture = 新 CultureInfo(UserCulture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);
}
}
很明顯你可以建立一些緩存到此方法的實現.
源: http://quickstarts.asp.net/QuickStartv20/util/srcview.aspx?path=~/aspnet/samples/localization/LocalizePers.src&檔 = LocalizePers_cs\LocalizePers_cs.aspx&郎 = C # 源
我想用以下流的 HTTP 處理常式:
1. 請求進來, 檢查 cookie 的會話 cookie 的語言首選項 (當關閉瀏覽器時,會話 cookie 過期)
2. 檢查請求是否為 ASPX 頁, 如果不是, 跳過請求
3. 如果 cookie 存在, 將語言標頭設置為指定的值. 你是做!
4. 沒有 cookie, 身份驗證憑據,在 SP 中查找使用者, 找到語言首選項
5. 設置 cookie 標題和語言的 HTTP 標頭. 做.
APX 的第一個頁面請求將有 SPS 查找的開銷但從那時起與每個請求有沒有查找,所以將本機的速度. 不需要會話緩存或任何其他開銷通過使用會話 cookie 太. 一旦關閉瀏覽器, 會話 cookie 就會消失. 如果使用者更改他們的語言偏好的 SPS 他們只需要關閉並重新打開瀏覽器才會生效.
實際上的 HTTP 處理常式不是在 iis 一級…它是在應用程式級別 (ISAPI 篩選器在 IIS 一級)…我會小心的不列顛哥倫比亞省 SP 有它自己的處理常式…所以一定要測試一下…我以前做過,但有一些衝突與 SP 處理常式.
我會更傾向于使用 HTTPHandler, 唯一的原因是我不喜歡觸摸的 SharePoint 檔. 再加上它是容易創建要部署的 HttHandler 的 SharePoint 解決方案 ( 並使用 SPWebConfig API 修改 web.config). 有的使用者負載你做, 我能想像你有一個相當大的農場, 你真的不想要去對每個伺服器上的檔.
部署 global.asa 檔通過一個解決方案是一個糟糕的主意, 如果你肯收回它, 您的原始檔案是不見了 …
也有能力迅速地收回解決方案可能會是個好主意, 在情況下事情出錯與處理常式的性能.