我有一個非常複雜的情況,當我需要在我正在處理的項目中使用靜態本地化和動態本地化時。MVC 5內容全球化
我需要的本地化:
- 靜態的頁面(如: 「關於」, 「幫助」, 「聯繫人」 ...)
例如:
「domain.com/about」 - 用於英文本地化。
「domain.com/es-es/about」 - 用於西班牙語本地化。
這就是我現在的位置,它正在工作。
目前文化是在路由機制(最適合SEO)中提供和指定的,並且不存儲在cookie或會話中。
RouteConfig.cs看起來是這樣的:
// Localized Default:
routes.MapRoute(
name: "LocalizedDefault",
url: "{culture}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { culture = new CultureRouteConstraint() }
);
// Default:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { culture = "en-us", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
- 動態頁面 - 內容的用戶在他們的個人資料(如輸入 「姓名」, 「關於」 ... )
現在,這裏是我有...
基本上我需要讓用戶輸入他們的個人資料的許多翻譯,並且還挑選合適的翻譯用戶訪問個人資料的問題。 此外,如果用戶訪問用戶未提供其語言翻譯的個人資料,則需要向他展示「默認」翻譯,但該網站界面仍將保留其語言。
所以,我對這種做法:
對於動態網頁,我想我需要從一個cookie,它包含了用戶的文化幫助,並消除在URL中的{文化}路由參數,該網站界面當沒有cookie時,本地化將由cookie或瀏覽器(用戶語言)確定。內容本地化將根據URL「{content}」末尾的路由參數確定。
例如:
「domain.com/user/username」 - 對於默認內容定位(用戶將設置爲默認的語言)。
「domain.com/user/username/en-us」 - 用於英文內容本地化。
「domain.com/user/username/es-es」 - 用於西班牙語內容本地化。
我得出了以下結論:
•對於匿名用戶=的定位是通過在URL中的{文化}路線參數確定靜態頁面,但對於動態頁面的{文化}參數被消除,網站界面由cookie確定,URL末尾的{content}參數代表內容本地化。
•對於通過身份驗證的用戶=所有頁面(靜態爲&動態)本地化僅由cookie確定,這會生成一個簡短的&友好的URL,並且SEO不受影響。
這種方法可以接受嗎?
我不能確定什麼是最佳實踐解決方案,以實現這一點,同時保留搜索引擎優化和友好/簡單的網址?
順便說一句 - 我專注於URL和SEO,數據庫和其他問題都表現良好。
謝謝!
我希望能從你那裏得到答案,你似乎對這個話題有很好的理解。謝謝。 –