资源文件是常见方式
也有xml翻译方式。
谈谈ASP.NET皮肤机制的实现:http://www.cnblogs.com/tmyh/archive/2010/10/31/aspnet_skin.html
虽然是换肤,但是如果思路明白,多语言是一样的。
标签之类的用:资源文件(中文和英文两套资源文件)
内容之类的用:DB(中文和英文两个库)
asp.net 从 2.0 开始,早已内置 多国语系 的功能,参考一些书籍。
在 App_LocalResources 文件夹里,存放每个页面专属的,事先写好的语系文件 .resx。
using System.Globalization;
using System.Threading;
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Threading;
using System.Globalization;
/// <summary>
/// 所有需要本地化资源切换的页面基类
/// </summary>
public class LocalizedPage : System.Web.UI.Page
{
//設定語系時,每個頁面一定要 Override 的 Method
protected override void InitializeCulture()
{
//從 Session 中取出 user 所做的語系選項
string strSelectLang = (string)(Session["SelectLang"]);
//Response.Write("<p>session in Localized.aspx.cs is: <br>" + strSelectLang);
//若為第一次執行(為null) 或 MasterPage 下拉選單選第一個選項後的 PostBack(為空值""),則先套用 user 自己 IE 中第一個設定的語言
if (String.IsNullOrEmpty(strSelectLang) == true)
return;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strSelectLang);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
base.InitializeCulture();
//originalPage = (string)Session["oriPage"]; //儲存 ContentPage 的「檔名.副檔名」
}
}
可以建一个表,里面放中文,跟英文,或更多,根据你在页面语言切换,读取数据不同,但,同时要考虑好性能。