2008-12-16 36 views
1

我有,這將最終支持4種語言和2個國家(美國&加拿大,英語和西班牙語)網站最佳方式虛擬目錄

我不知道什麼是設置的最佳方法目錄結構?

現在,我有一個根網站叫site.com:

這將帶您到您選擇您的國家和語言的頁面。

理想情況下,我想有目錄,如下所示:

site.com/ca/en/ (Canada English) 
site.com/ca/fr/ (Canada French) 
site.com/us/en/ (US English) 
site.com/us/es/ (US Spanish) 

但是,這將意味着我將會把一個「CA」和「我們」虛擬目錄和語言的虛擬內部的目錄。是很好的做法,或者我應該這樣做:

site.com/ca-en/ (Canada English) 
site.com/ca-fr/ (Canada French) 
site.com/us-en/ (US English) 
site.com/us-es/ (US Spanish) 

編輯:我也做了以下內容:

有一個虛擬目錄:/ CA /和/ US /應用程序。他們都有一個default.aspx,這只是一個重定向。在我的情況下,我將它們重定向到他們的英文網站:

例如: site.com/ca/ - > site.com/ca/en/ site.com/us/ - > site。 com/us/en/

如果輸入site.com,則會將您推送到語言選擇頁面。基本上,我在每個請求中使用Global.asax中的正則表達式來查找語言/文化字符串。

這有以下好處。國家分離。因此,您可以控制site.com/ca/或site.com/us/,並且可以爲每個國家/地區提供一個簡單的URL。

無論如何,虛擬目錄/ en /,/ fr /和/ es /位於其各自的國家物理文件夾內。

所以,你有以下(虛擬迪爾斯是大膽):

site.com/ca/ EN /(默認) site.com/ca/ FR/ 網站。 COM /美國/ EN /(默認) site.com/us/ ES/

這意味着,你需要有五(相同的)應用程序,除了可以使用獲取當前語言和國家的URL(並將其指向正確的數據庫)。

+0

感謝您寫回您的解決方案! – Ropstah 2010-01-14 15:52:35

+0

沒問題。雖然,我現在在我的網站中使用URL路由來執行此操作。更優雅。 – Armstrongest 2010-01-15 16:44:38

回答

1

那麼,他們希望每個網站的Url都不相同。

本質上,它實際上是一個網站(用於維護的原因),我們正在利用全球化確定要使用的連接字符串(不同的數據庫,相同的結構,每一個)

我們每次發佈,我會發布時間到四個地點。完全相同的應用

使用一個URL的全球化聽起來像一個好主意,但我不認爲它會正確蜘蛛,即使它,也不提供良好的書籤鏈接。 (法國人使用設置爲英語的計算機將鏈接發送給另一個法國人)。還有其他的影響,但是有一個原因像蘋果和微軟這樣的網站爲每種語言/文化使用不同的URL。

在每個會話開始時,我檢查url並相應地設置連接字符串。

在結束,我只是把一個/ ca /​​和/ us /目錄放在主應用程序中,爲每種語言添加一些虛擬目錄做一個響應重定向到「選擇語言」頁面。

也許不是最好的解決方案,但它似乎工作。

這樣做的另一個好處是,如果有一些特殊頁面只適用於一個站點,它可以只添加到該站點。

1

爲什麼不在一個站點上檢查客戶端設置(request.servervariables/HTTP_ACCEPT_LANGUAGE)以選擇使用哪種首選語言並在asp.Net中使用內置的全球化?

如果完全不同的內容將顯示取決於國家/語言,那麼我可以理解爲什麼將它們分開。

0

對於語言代碼連字符國家代碼,本地化的一般接受術語是ll-CC。例如:en-US,雖然en-US可能是默認的en-GB或en-CA,因爲後備... es-MX等也值得。儘管使用子域名可能會更好,但如果前面沒有複雜的負載均衡規則,則可以分割資源。例如:us.en.yoursite.com ...這也允許在webfarm環境中更輕鬆地分解服務器。我建議讓實際代碼與每個網站的設置更改相同以匹配本地化。然後使用通過文本鍵傳遞的本地化資源,並根據網站的本地化模式解析語言翻譯。注意:.Net和其他平臺提供了內置的資源本地化選項。