Asp.net MVC 多语言应用 - finly - 博客园

来源: Asp.net MVC 多语言应用 – finly – 博客园

这里以Mvc3模版项目的登录页为例,简单说一下过程:

首先准备资源文件,即语言包。为web site项目添加Resource文件夹,然后在Resource文件夹下添加两个resx文件

命令行工具ResGen.exe将这两个resx文件生成同名的resources文件,如zh-CN.resources、en-US.resources,生成后将这两个resources文件放到Resource目录下

写一个静态getLang

<span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number1 index0 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">namespace</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">System.Web.Mvc</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number2 index1 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">{</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number3 index2 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">    </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">using</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">System.Collections;</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number4 index3 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">    </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">using</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">System.Resources;</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number5 index4 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">    </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">using</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">System.Linq;</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number6 index5 alt1"</span><span class="tag">></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number7 index6 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">    </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">public</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">static</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">class</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">LocalizationHelper</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number8 index7 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">    </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">{</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number9 index8 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">        </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">public</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">static</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">string</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">Lang(</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">this</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">HtmlHelper html, </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">string</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">key)</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number10 index9 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">        </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">{</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number11 index10 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">            </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">return</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">GetLang(key);</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number12 index11 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">        </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">}</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number13 index12 alt2"</span><span class="tag">></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number14 index13 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">        </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">public</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">static</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">string</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">GetLang(</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">string</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">key)</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number15 index14 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">        </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">{</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number16 index15 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">            </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">var</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">filePath = HttpContext.Current.Server.MapPath(</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">"~/Resource"</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">);</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number17 index16 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">            </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">string</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">language = HttpContext.Current.Session[</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">"CurrentLanguage"</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">] == </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">null</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">?</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number18 index17 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">                </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">"zh-CN"</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">: HttpContext.Current.Session[</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">"CurrentLanguage"</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">].ToString();</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number19 index18 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">            </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">string</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">resxPath = </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">string</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">.Format(</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">@"{0}\{1}.resources"</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">, filePath, language);</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number20 index19 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">            </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">ResourceReader reader = </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">new</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">ResourceReader(resxPath);</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number21 index20 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">            </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">var</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">entry = reader.Cast&lt;DictionaryEntry&gt;().FirstOrDefault&lt;DictionaryEntry&gt;(x =&gt; x.Key.ToString() == key);</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number22 index21 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">            </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">reader.Close();</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number23 index22 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">            </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">return</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">entry.Value == </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">null</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">? </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">""</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">: (</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">string</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">)entry.Value;</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number24 index23 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">        </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">}</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number25 index24 alt2"</span><span class="tag">></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number26 index25 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">        </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">public</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">static</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">string</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">GetLanguage(</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">this</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">HtmlHelper html)</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number27 index26 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">        </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">{</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number28 index27 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">            </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">return</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">HttpContext.Current.Session[</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">"CurrentLanguage"</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">].ToString();</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number29 index28 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">        </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">}</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number30 index29 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">    </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">}</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number31 index30 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">}</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number31 index30 alt2"</span><span class="tag">></span>

 第二步、为动态切换语言,要在Global.asax文件中添加Application_AcquireRequestState事件,如:

复制代码

<span class="tag"></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"cnblogs_code_toolbar"</span><span class="tag">></span><span class="pln">
</span><span class="tag"><pre></span><span class="pln">protected void Application_AcquireRequestState(object sender, EventArgs e)
        {
            if (HttpContext.Current.Session != null)
            {
                System.Globalization.CultureInfo ci =
                    (System.Globalization.CultureInfo)this.Session["CurrentLanguage"];
                if (ci == null)
                {
                    ci = new System.Globalization.CultureInfo(Request.UserLanguages[0].ToString());
                    this.Session["CurrentLanguage"] = ci;
                }
                System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
                System.Threading.Thread.CurrentThread.CurrentCulture =
                    System.Globalization.CultureInfo.CreateSpecificCulture(ci.Name);
            }
        }</span><span class="tag"></pre></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"cnblogs_code_toolbar"</span><span class="tag">><span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"cnblogs_code_copy"</span><span class="tag">><a</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">"复制代码"</span><span class="tag">><img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"http://www.mikel.cn/wp-content/uploads/2015/04/copycode29.gif"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"复制代码"</span><span class="pln"> </span><span class="tag">/></a></span></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"cnblogs_code_toolbar"</span><span class="tag">></span>
第三步、在HomeController中添加ChangeLanguage方法,很简单、就一句代码,如:
<span class="tag"></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"cnblogs_code_toolbar"</span><span class="tag">></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number1 index0 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">public</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">JsonResult ChangeLanguage()</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number2 index1 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">       </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">{</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number3 index2 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">           </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">string</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">aa = Request[</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">"language"</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">];</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number4 index3 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">           </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">Session[</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">"CurrentLanguage"</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">] = </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">new</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">System.Globalization.CultureInfo(Request[</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">"language"</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">]);</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number5 index4 alt2"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">           </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp keyword"</span><span class="tag">></span><span class="pln">return</span><span class="tag"></code></span><span class="pln"> </span><span class="tag"><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">Json(</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp string"</span><span class="tag">></span><span class="pln">"操作成功!"</span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">, JsonRequestBehavior.AllowGet);</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number6 index5 alt1"</span><span class="tag">><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp spaces"</span><span class="tag">></span><span class="pln">       </span><span class="tag"></code><code</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"csharp plain"</span><span class="tag">></span><span class="pln">}</span><span class="tag"></code></div></span><span class="pln">
</span><span class="tag"><div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"line number6 index5 alt1"</span><span class="tag">></span>
赞(0) 打赏
分享到: 更多 (0)
标签:

相关推荐

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

登录

注册