简体   繁体   English

重写本地化规则

[英]Rewrite rules for localization

I need to translate a web site, and use friendly urls too!, but I can't do the rewrite rules, for my problem. 我需要翻译一个网站,也要使用友好的URL !,但是对于我的问题,我无法执行重写规则。 I need something like this. 我需要这样的东西。

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

Knowing that, I have another rules too, for combine with the new form like this. 知道这一点,我还有另一个规则,可以与这种新形式结合使用。

<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>

Isn't a good practice copy the rules and put in each sentence, but how to do it? 复制规则并放入每个句子中不是一个好习惯,但是该怎么做呢?

I'm glad if someone try to help me. 我很高兴有人尝试帮助我。 My regards! 致以我的问候!

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;
            }
        }
    }
}

I solved using this HTTP Module, :D. 我解决了使用此HTTP模块:D的问题。 This guy help me 这个家伙帮我

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM