2011-08-06 42 views
0

我正在創建一個網站模板,網站的所有者將能夠選擇英語以外的本地語言並自行本地化一些內容。讓我現在更好地解釋一下真實情況:我的網站將會有英文和土耳其文(我的母語是土耳其文,但這種語言應該是可以改變的,適用於任何非英語語言)版本的主要內容標題,例如BLOG ,項目,關於,聯繫等,但這些數字和名稱是完全依賴於用戶的選擇,所以我可以打開一個名爲MySection的新部分,它的標題和土耳其語的本地翻譯將存儲在我的數據庫(使用EF)。同樣在我的DB設置中,本地語言的代碼(在本例中爲「tr」)被存儲。什麼是根據瀏覽器發送網頁內容的最模塊化/組織化的方式,就像這樣:對於英語和一種語言的ASP.NET動態本地化

在數據庫中,章節以這種方式組織(標題和他們的土耳其語翻譯)(所有這些都將在任意數量和完全用戶創建的):

Title  NativeTitle 
    --------------------- 
    BLOG  BLOG 
    PROJECTS PROJELER 
    ABOUT  HAKKINDA 

我也有我的母語設置(我已經創建)設置爲tr(這要由網站所有者也可以被改變)。因此,根據用戶的瀏覽器首選語言設置,我想要顯示土耳其語內容以及所有其他語言首選項,包括(明顯)英語,我想顯示默認的英文內容。靜態內容的特定語言的本地化對於RESX文件來說非常簡單,但在我的情況下,我既沒有靜態內容也沒有特定的已知本地語言,因此我的所有數據都來自數據庫。我想盡可能少地編碼,並儘可能地聲明。這樣做的最佳做法是什麼?正在檢查頁面中本地語言和當前文化的設置,並且如果它們相同,則發送本地發送默認標題的唯一方式?它肯定會工作,但如果我想將其擴展到網站的其他部分呢?我不希望如果和其他人在網站周圍的任何地方,我需要某種集中的字符串映射系統。最好的方法是什麼?

回答

1

您可以覆蓋InitializeCulture在你的基地Pag E要通過檢查Thread.CurrentThread.CurrentUICulture屬性(http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentuiculture.aspx

+0

顯然所有的網頁動態加載您的本地化內容(http://msdn.microsoft.com/en-us/library/system.web.ui.page.initializeculture.aspx)方法已經從您的PageBase類繼承(它繼承從System.Web.UI.Page)。您可以通過web.config確保這一點(請參閱PageBaseType屬性http://msdn.microsoft.com/en-us/library/950xf363.aspx) – Alex

+0

是的,這種方式正是以這種方式創建自定義Page類(有一點點加班)。 –

相關問題