Example
- Add the I18N nuget package to your MVC project.
 
- In web.config, add the 
i18n.LocalizingModule to your <httpModules> or <modules> section. 
<!-- IIS 6 -->
<httpModules>
  <add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" />
</httpModules>
<!-- IIS 7 -->
<system.webServer> 
  <modules>
    <add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" />
  </modules>
</system.webServer>
- Add a folder named "locale" to the root of your site. Create a subfolder for each culture you wish to support. For example, 
/locale/fr/. 
- In each culture-specific folder, create a text file named 
messages.po. 
- For testing purposes, enter the following lines of text in your 
messages.po file: 
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
- Add a controller to your project which returns some text to translate.
 
using System.Web.Mvc;
namespace I18nDemo.Controllers
{
    public class DefaultController : Controller
    {
        public ActionResult Index()
        {
            // Text inside [[[triple brackets]]] must precisely match
            // the msgid in your .po file.
            return Content("[[[Hello, world!]]]");
        }
    }
}
- Run your MVC application and browse to the route corresponding to your controller action, such as http://localhost:[yourportnumber]/default.
Observe that the URL is changed to reflect your default culture, such as
http://localhost:[yourportnumber]/en/default. 
- Replace 
/en/ in the URL with /fr/ (or whatever culture you've selected.) The page should now display the translated version of your text. 
- Change your browser's language setting to prefer your alternate culture and browse to 
/default again. Observe that the URL is changed to reflect your alternate culture and the translated text appears. 
- In web.config, add handlers so that users cannot browse to your 
locale folder. 
<!-- IIS 6 -->
<system.web>
  <httpHandlers>
    <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
  </httpHandlers>
</system.web>
<!-- IIS 7 -->
<system.webServer>
  <handlers>
    <remove name="BlockViewHandler"/>
   <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
  </handlers>
</system.webServer>