我正在開發雙語ASP.NET應用程序,我想知道帽子是在應用程序中存儲UICulture和Culture值的最佳方式嗎?在ASP.NET中保存UICulture的最佳方式是什麼?
- 餅乾。
- 會議。
- QueryString。
- 或其他東西。
更新: 我要做出同樣的ASPX形式是雙語網頁,我已經有了一個答案,到現在是讓一個單獨的頁面,並使其通過訪問子域名,我我現在真正在做的是使用會話,但我想現在什麼是用戶資源文件的最佳做法,使頁面雙語而不創建它的副本。
我正在開發雙語ASP.NET應用程序,我想知道帽子是在應用程序中存儲UICulture和Culture值的最佳方式嗎?在ASP.NET中保存UICulture的最佳方式是什麼?
更新: 我要做出同樣的ASPX形式是雙語網頁,我已經有了一個答案,到現在是讓一個單獨的頁面,並使其通過訪問子域名,我我現在真正在做的是使用會話,但我想現在什麼是用戶資源文件的最佳做法,使頁面雙語而不創建它的副本。
通常情況下,這取決於您的特定用例。
最常見的,但是你會可能要爲每個頁面和語言不同URL爲了擁有它被搜索引擎正確索引。例如網址,如:
我喜歡第2個選項。
或者,你可以重定向基於瀏覽器的語言時,他們第一上您的網站後,用戶(但請確保用戶還可以瀏覽其他語言)。
更新:這並不意味着你必須爲你的語言,使您的網站儘可能多的版本。
如果您對每種語言的子域:
InitializeCulture
方法(你可以使用一個基類所有爲了網頁,以保持乾燥)InitializeCulture
方法如果您決定不使用子域名,但請在網址的文化名稱,你可以使用URL重寫指向每個URL相同的頁面。
一些代碼來讓你開始:
protected override void InitializeCulture() {
// Identify the culture and replace the hardcoded values below
// (Use Request.Url.xxx for example)
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en", false);
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);
base.InitializeCulture();
}
您始終可以使用URL重寫來存儲用戶所選的文化偏好。不太確定ASP.Net是如何實現的,但在MVC中使用路由表很容易。
爲了闡明,您的網址將是這個樣子:http://example.org/en-gb/Action 作爲一個解決方案,這將刪除會話的開銷,可能有人已經轉向了cookies在瀏覽器中,並獲取生成難看的查詢字符串。
我會試着拿回一個如何做網址重寫的例子。
downvote的解釋會很好。 – pms1969
我沒有投票,但我可以提供解釋。我得出的結論是,對於那些沒有更好的事情的人,擁有大自我的人,以及最後工作不好的人來說,計算器已經成爲一種在線治療方式。你可以告訴他們是誰。它們通常有數千個點,除非您爲stackoverflow工作,或者您符合上述配置文件之一,否則無法積累。無論哪種方式不用擔心。你在1420點的時候意味着你知道你在說什麼。這也意味着你不是其中之一..... –
是的。很高興知道什麼被認爲是不正確的或者不同意的。它讓你有機會得出答案,或者做得更好。它也給未來的讀者一點知識,否則他們不會有。沒什麼大不了的。從我+1。 :-) – pms1969
最好的做法是創建子域\用它自己單獨的IIS網站各語言的網站。對於需要雙字節的亞洲語言,情況尤其如此。
您將在雅虎,谷歌等:
說真的,'雙字節'?子域名與網站的內部表示無關。 –
各地看到這種做法你怎麼設置的區域性,根據用戶的喜好,選擇現場語言還是閱讀瀏覽器語言? –
沒有用戶的喜好 –