【问题标题】:Rewrite rules for localization重写本地化规则
【发布时间】:2014-07-21 22:07:35
【问题描述】:

我需要翻译一个网站,也需要使用友好的网址!但我的问题是我无法执行重写规则。我需要这样的东西。

I've   => http://test.com/test
I need => http://test.com/en-US/test 

知道了,我也有另外一条规则,像这样和新的形式结合起来。

<rule name="products">
   <match url="^products/([0-9]+)/([a-zA-Z0-9_-]+)/?$" ignoreCase="true"/>
   <action type="Rewrite" url="/products/Detail.aspx?t={R:1}&amp;i={R:2}" appendQueryString="false"/>
 </rule>

复制规则并放在每个句子中不是一个好习惯,但是怎么做呢?

如果有人尝试帮助我,我很高兴。我的问候!

【问题讨论】:

  • 这个i18n对你有帮助吗?

标签: c# asp.net url-rewriting web-config


【解决方案1】:
public class LocaleParser : IHttpModule
{
   public void Init(HttpApplication context)
   {
      context.BeginRequest += context_BeginRequest;
   }

   void context_BeginRequest(object sender, EventArgs e)
   {
       var req = HttpContext.Current.Request.Url.AbsoluteUri;
       var targetUrl = req;

        if (req.IndexOf('/') != -1)
        {
            var langparm = req.Split('/')[1].ToLower();

            switch (langparm)
            {
                case "pt":
                    HttpContext.Current.Items["locale"] = "PT";
                    targetUrl = req.Substring(3);
                    break;
                case "en":
                    HttpContext.Current.Items["locale"] = "EN";
                    targetUrl = req.Substring(3);
                    break;
                case "es":
                    HttpContext.Current.Items["locale"] = "ES";
                    targetUrl = req.Substring(3);
                    break;
            }
        }
    }
}

我使用这个 HTTP 模块解决了,:D。 This guy帮帮我

【讨论】:

    猜你喜欢
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 2011-03-16
    • 2014-11-30
    相关资源
    最近更新 更多