2011-07-20 95 views
1

考慮,類似的設置像eBay ...多語言,多頂級域的webapp

域:

domain.com 
domain.de 
domain.it 
domain.ru 
domain.xyz 
.... 

但是: 用戶可以查看頁面德語,並可以創建英文內容,並將其列入英文目錄。

我的問題: 如何設計語言切換,網址爲Web應用程序:

例1:(如亞馬遜)

domain.com -> english catalogue 
domain.de -> german catalogue 

例2:(區域內url)

domain.com/en/ -> english catalogue 
domain.com/de/ -> german catalogue (redirect the .de domain) 

例3:(餅乾裏面的Locale)

domain.com -> english 
domain.de -> redirect to example.com/?locale=de, set a cookie 

例4:(你有嗎?)

哪一個你更喜歡,爲什麼?

感謝您的回覆...

回答

2

您還有更多嗎?我當然是了。但首先...

廣告1.亞馬遜擁有不同的目錄,因爲事實上亞馬遜五金(其在德國的子公司),英國亞馬遜(其英國子公司)其實都是不同的公司(法律依據)。他們的報價往往不同,當然法律要求(即稅收)差異很大。因此,這些網站是相似的(我非常肯定他們正在運行通用軟件,他們正在使用公共基礎設施),但不完全相同(DB後端可能不同)。
如果您正在爲類似公司構建網站,這是有道理的。

廣告2.重定向到語言基於域使得在完全相同的情況下,像在第一個例子中的意義 - 如果你有明顯不同的報價爲國際客戶。

廣告3.使用URL參數和設置cookie的其實是最好的做法,但請注意,這應該只是工作流程中(以後會更多)的一部分。如果您的網站實際上是完全相同的應用程序&內容對於所有用戶而言並不不同,但您只是想對其進行翻譯,那麼它尤其有意義。

示例4.有時(請參閱CNN)人員使用本地域名部分,即http://english.example.com/,http://arabic.example.com/。這可以看作是3的變體 - 您實際上會使用某種URL過濾器並將語言設置爲Cookie。

例5.對於典型的Web應用程序/ Web站點(相同的內容隨處可見),在我看來,這是最好的實際使用某種語言環境檢測工作流程。在這種情況下,無論是否爲特定域名,您都可以用任何語言提供內容。
順便說一句。您可能希望在地理位置上拆分基礎架構,以便位於俄羅斯的服務器池響應http://example.ru/,這些池只包含俄羅斯資源 - 在這種情況下,您肯定會使用重定向。如果你有一箇中央服務器池,它實際上沒有多大意義。
再回到檢測工作流程...

  1. 從Web瀏覽器檢測地點(畢竟有一些原因HTTP Accept-Language頭介紹到)。這應該是主要的:用戶通常希望以他/她的語言查看內容。它已經在Web瀏覽器偏好設置中設置,所以我們爲什麼要強制用戶再次選擇它?
    在檢測到語言(在任何域上)後,您只需設置會話cookie,以便所有後續請求都使用此信息(除非......)。
  2. 如果您的應用程序保存用戶配置文件,最好允許在配置文件中更改用戶的默認UI語言和格式化語言。這也是存儲首選時區的好地方。請注意,該瀏覽器的區域設置應該是這些設置的良好默認設置 - 對於UI語言,您將使用後備機制(稍後將深入討論),因此如果用戶更喜歡de-AT(德國,奧地利)區域設置,它(德語的常用資源),格式化區域設置不會退步,因此它將是de-AT(或de_AT,具體取決於實際的區域設置表示形式)。時區更成問題,但它不是這個答案的主題。
    顯然這應該覆蓋Web瀏覽器的區域設置。
  3. 您可以使用URL參數(即http://example.com/index.html?lang=de)或更低級別的域名(即http://deutsch.example.com/)來覆蓋所有當前的選擇。這很重要,原因有兩個:一是允許用戶以給定的語言爲鏈接添加書籤,二是允許選擇在技術支持會話期間可能有用的精確給定的語言(想象一下幫助臺工程師遠程控制中文語言環境的Web瀏覽器 - 如何切換語言?)。
  4. 或者,您可能想要實現語言切換下拉菜單。顯然它可以簡單地重定向到http://deutsch.example.com/

例子6.一些網站,儘管我非常反對,但使用用戶IP地址來評估他/她的地理位置,以便將他/她重定向到本地化網站。地理定位也可以用於此目的。再說一遍,如果你的本地網站有很大的不同,它可能會讓你感覺很少(很少)。

現在語言回落。通常HTTP Accept-Language頭的樣子:

Accept-Language: da, de;q=0.8, fr;q=0.7 

在這種情況下,最喜歡的語言是丹麥語,但用戶似乎明白了德國和法國也是如此。所以,如果你找不到丹麥的資源,但實際上有德國資源,那麼迴歸英語是不合適的。只有在沒有適合的情況下,您才應該瀏覽列表並回退到您的應用程序默認值。
這也顯示了另一個問題:有時在這個標題中沒有關於國家的信息。那麼應該使用哪種語言環境來格式化日期,數字等?我不認爲這個問題有一個很好的答案 - 在這種情況下,用戶配置文件是一個很好的解決方案。問題是,如果你已經有一些用戶羣,那麼很難迫使他們設置這些信息。

+0

謝謝。子域名保留給一些特殊的用戶帳戶。所以我不能使用它們。所以我想我要這樣: 1如果用戶登錄 - >使用配置文件中的lang 2選擇Accept-Language 3檢查域(.de .ru ..) 4將它們重定向到.com /:locale – Max