現在ASP
就一個網站的多語言特性來說
原來在HTML部分直接寫的文字都不能直接寫要輸出的文字
那麼在MVC下怎麼能透明的實現多語言呢?所謂透明的實現是指
例如
<html>
<head>
</head>
<body>
多語言輸出的文字 //這裡就不能直接寫中文了
</body>
</html>
這裡<%= Html
怎麼為 HTMLHelper 進行擴展?下面這個類就是增加了的擴展類
Code
using System;
using System
using System
using System
using System
using System
using System
using System
using System
using System
using System
using System
using System
using System
using System
namespace System
public static class LocalizationHelpers {
/// <summary>
/// 在外邊的 Html 中直接使用
/// </summary>
/// <param name=
/// <param name=
/// <returns></returns>
public static string Lang(this HtmlHelper htmlhelper
string FilePath = htmlhelper
return GetLangString(htmlhelper
}
/// <summary>
/// 在外邊的 Html 中直接使用
/// </summary>
/// <param name=
/// <param name=
/// <returns></returns>
public static string LangOutJsVar(this HtmlHelper htmlhelper
string FilePath = htmlhelper
string langstr = GetLangString(htmlhelper
return string
}
/// <summary>
/// 在 C# 中使用
/// </summary>
/// <param name=
/// <param name=
/// <returns></returns>
public static string InnerLang(HttpContextBase httpContext
string FilePath = (
return GetLangString(httpContext
}
private static string GetLangString(HttpContextBase httpContext
LangType langtype = ;
if ([
langtype = (LangType)[
}
return LangResourceFileProvider
}
}
public static class LangResourceFileProvider {
public static string GetLangString(string Key
string filename;
switch (langtype) {
case : filename =
case LangType
default: filename =
}
System
string resourcetype;
byte[] resourcedata;
string result = string
try {
reader
//去掉第一個字節
byte[] arr = new byte[resourcedata
for (int i =
arr[i] = resourcedata[i +
}
result = System
}
catch (Exception ex) {
}
finally {
reader
}
return result;
}
}
public enum LangType {
cn
en
}
}
這個類叫 LocalizationHelpers
這裡使用了
上面這個類很簡單
在前台的
<script language=
<%= Html
function show()
{
alert(msg);
}
</script>
這樣就OK了
如果有的需要在C#中取資源字符串
ViewData[
我根據ASP
From:http://tw.wingwit.com/Article/program/net/201311/12771.html