首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC 5内容全球化

MVC 5内容全球化
EN

Stack Overflow用户
提问于 2017-07-14 23:07:50
回答 1查看 431关注 0票数 1

我有一个非常复杂的情况,当我需要静态本地化和动态本地化在我正在工作的项目。

我要本地化的是:

  1. 静态页面(例如:“约”、“帮助”、“联系”.)

例如:

"domain.com/about“-用于英语本地化。 “domain.com/es-es/约”-用于西班牙语本地化。

这就是我现在的位置,而且还在起作用。

目前,区域性是在路由机制中提供和指定的(对于SEO最好),而不是存储在cookie或会话中。

RouteConfig.cs看起来是这样的:

代码语言:javascript
复制
    // 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 }
    );
  1. 动态页面-内容用户输入他们的配置文件(比如:“全名”,“关于”.)

现在我有个问题.

基本上,我需要允许用户输入他们的概要文件的许多翻译,并为访问配置文件的用户选择正确的翻译。此外,如果用户访问用户没有为他的语言提供翻译的概要文件,我需要向他展示一个“默认”翻译,但是站点界面将保留在他的语言中。

所以,我的方法是:

对于动态页面,我认为我需要一个包含用户区域性的cookie的帮助,并消除URL中的{区域性}路由参数,当没有cookie时,站点界面定位将从cookie或浏览器(用户语言)中确定。并且内容本地化将由URL "{ content }“末尾的路由参数确定。

例如:

"domain.com/ user /username“-默认内容本地化(用户将设置为默认值的语言)。 "domain.com/user/username/en-us“-用于英语内容本地化。 “domain.com/user/username/es”-用于西班牙语内容本地化。

我得出以下结论:

·对于匿名用户=对于静态页面,本地化由URL中的{区域性}路由参数确定,而对于动态页,则消除{区域性}参数,从cookie中确定站点接口,URL末尾的{ content }参数代表内容本地化。

·对于经过身份验证的用户=所有页面(静态和动态),本地化仅由cookie决定,这使得一个简短友好的URL和SEO不受影响。

这种做法是否可以接受?

我不知道什么是最佳实践解决方案,以实现这一点,同时保持SEO,友好/容易的URL?

顺便说一句-我的重点是URL和SEO,数据库和其他关注是很好的表现。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-15 17:59:49

  • 对于匿名用户=对于静态页面,本地化由URL中的{区域性}路由参数确定,但对于动态页,则消除{区域性}参数,从cookie中确定站点接口,URL末尾的{ content }参数代表内容本地化。

因为你是关心搜索引擎优化,曲奇是禁止在匿名页面。这些页面上的所有内容都应该通过URL来控制。

对于这种情况,我认为将{culture}{content}参数都放入URL中是最直观的,但在相反的一端。

代码语言:javascript
复制
{culture}/{controller}/{action}/{content}

通过精心编制的路由配置,可以使这两个参数在逻辑缺省情况下都是可选的。为了提高可读性,您可以考虑在最后一个参数之前添加一个静态/content/段,这将需要一个额外的路由来使两个段都是可选的。

当没有cookie时,站点界面本地化将从cookie或浏览器(用户语言)中确定。

这很好(假设您使用的是URL,而不是上面提到的可选值的cookie )。这为用户通过URL覆盖浏览器(用户语言)提供了一种简单的方式。因为(用户语言)是一个可以被防火墙修改的标题,这可能不是用户的真正偏好,如果您不提供一种方法来覆盖它是一个可怕的UX。我还建议让用户语言覆盖用户语言在用户界面上可见(通过链接到包含区域性的URL ),而不仅仅是通过URL。

请记住,搜索引擎可能不会提供这个标题,所以当它不可用时,您也应该有一个后备计划(默认区域性)。始终将URL视为提供区域性的首选,而忽略(用户语言)标头。

  • 对于经过身份验证的用户=所有页面(静态和动态),本地化只由cookie决定,这使得一个简短友好的URL和SEO不受影响。

对于只有通过身份验证的用户才能访问的URL,您有更大的灵活性,因此在这里使用cookie是可以的。尽管,如果站点的其他部分将区域性放置在URL中,那么使用URL导航的高级用户可能会感到有些奇怪。

就我个人而言,我的目标是与站点的其他部分保持一致,而不是通过身份验证的页面使用“尼斯短URL”,因为它通常只是匿名页面,其中“好短URL”对于SEO和共享目的都是重要的。但是,如果您期望有许多强大的用户在浏览器中编辑URL,这可能是值得考虑的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45112750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档