1调用多语言相关程序的方法写在Glabal.asax中的Application_Start()方法中
public
class
Global
: System.Web.
HttpApplication
{
protected
void
Application_Start(
object
sender,
EventArgs
e)
{
MultiLanguage_Helper
.WriteUILanguageData2JS(
HttpRuntime
.AppDomainAppPath);
if
(
MultiLanguage_Helper
.MultiLanguage ==
null
)
{
string
_dbPath =
HttpRuntime
.AppDomainAppPath +
@"MultiLanguage\MultiLanguage.db"
;
MultiLanguage_Helper
.SetWCFMultiLanguageData(_dbPath);
}
}
。。。。。。。
}
多语言的程序
///
<summary>
///
SQLite辅助类
///
</summary>
public
class
MultiLanguage_Helper
{
///
<summary>
///
多语言数据集
///
</summary>
public
static
DataTable
MultiLanguage =
null
;
///
<summary>
///
设置WCF多语言数据
///
</summary>
///
<returns></returns>
public
static
void
SetWCFMultiLanguageData(
string
_dbPath)
{
try
{
string
_sql =
@"select error_code,language_code,value from error_multilanguageInfo;"
;
string
_connectionString =
string
.Format(
"Data Source={0};Pooling=true;FailIfMissing=false"
,_dbPath);
using
(
SQLiteConnection
_conn =
new
SQLiteConnection
(_connectionString))
{
SQLiteCommand
_command =
new
SQLiteCommand
(_conn);
_command.CommandText = _sql;
SQLiteDataAdapter
_adapter =
new
SQLiteDataAdapter
(_command);
_conn.Open();
MultiLanguage =
new
DataTable
();
_adapter.Fill(MultiLanguage);
}
}
catch
(
Exception
ex)
{
throw
new
Exception
(
"error"
,ex);
}
}
///
<summary>
///
写入多语言JS文件
///
</summary>
///
<param name="_webPath"></param>
public
static
void
WriteUILanguageData2JS(
string
_webPath)
{
try
{
string
_dbPath = _webPath +
@"MultiLanguage\MultiLanguage.db"
;
string
_dbVersion =
""
;
///
检查是否需要更新JS文件
bool
_isUpdate = IsUpdate2JS(_dbPath,
ref
_dbVersion);
if
(!_isUpdate)
return
;
///
获取web多语言类型
DataTable
_dtLangType = GetUILanguageType(_dbPath);
///
获取web多语言数据
DataTable
_dtLangData =GetUIMultiLanguageData(_dbPath);
foreach
(
DataRow
_drLangType
in
_dtLangType.Rows)
{
string
_strUILang =
"SYS_LANGUAGE.UI_LANGUAGE_JSON = {\r\n"
;
DataRow
[] _drLangData = _dtLangData.Select(
"LANGUAGE_CODE='"
+ _drLangType[
"LANGUAGE_CODE"
].ToString() +
"'"
);
foreach
(
DataRow
item
in
_drLangData)
{
_strUILang +=
"\""
+item[
"INFO_CODE"
].ToString().Trim() +
"\" : \""
+ item[
"VALUE"
].ToString().Trim() +
"\",\r\n"
;
}
_strUILang = _strUILang.Substring(0, _strUILang.Length - 3);
_strUILang +=
"\r\n}"
;
///
写入语言JS文件
string
_filePath = _webPath +
@"MultiLanguage\UI-Lang-"
+ _drLangType[
"LANGUAGE_CODE"
].ToString() +
".js"
;
StreamWriter
_sw =
new
StreamWriter
(_filePath,
false
);
_sw.Write(_strUILang);
_sw.Close();
}
///
更新web.config中记录的版本,与SQLite中一致
Configuration
config =
WebConfigurationManager
.OpenWebConfiguration(
"/"
);
AppSettingsSection
app = config.AppSettings;
app.Settings[
"UIMultiLanguageVersion"
].Value = _dbVersion;
config.Save(
ConfigurationSaveMode
.Modified);
}
catch
(
Exception
ex)
{
throw
new
Exception
(
"error"
,ex);
}
}
///
<summary>
///
获取webUI多语言数据
///
</summary>
///
<returns></returns>
private
static
DataTable
GetUIMultiLanguageData(
string
_dbPath)
{
try
{
DataTable
_dt =
new
DataTable
();
string
_sql =
@"select LANGUAGE_CODE,INFO_CODE,VALUE from ui_multilanguageInfo"
;
string
_connectionString =
string
.Format(
"Data Source={0};Pooling=true;FailIfMissing=false"
, _dbPath);
using
(
SQLiteConnection
_conn =
new
SQLiteConnection
(_connectionString))
{
SQLiteCommand
_command =
new
SQLiteCommand
(_conn);
_command.CommandText = _sql;
SQLiteDataAdapter
_adapter =
new
SQLiteDataAdapter
(_command);
_conn.Open();
_adapter.Fill(_dt);
}
return
_dt;
}
catch
(
Exception
ex)
{
throw
new
Exception
(
"error"
, ex);
}
}
///
<summary>
///
获取webUI多语言的类型
///
</summary>
///
<param name="_dbPath"></param>
///
<returns></returns>
private
static
DataTable
GetUILanguageType(
string
_dbPath)
{
try
{
DataTable
_dt =
new
DataTable
();
string
_sql =
"select distinct language_code from ui_multilanguageInfo;"
;
string
_connectionString =
string
.Format(
"Data Source={0};Pooling=true;FailIfMissing=false"
, _dbPath);
using
(
SQLiteConnection
_conn =
new
SQLiteConnection
(_connectionString))
{
SQLiteCommand
_command =
new
SQLiteCommand
(_conn);
_command.CommandText = _sql;
SQLiteDataAdapter
_adapter =
new
SQLiteDataAdapter
(_command);
_conn.Open();
_adapter.Fill(_dt);
}
return
_dt;
}
catch
(
Exception
ex)
{
throw
new
Exception
(
"error"
,ex);
}
}
///
<summary>
///
获取UI多语言版本
///
</summary>
///
<param name="_dbPath"></param>
///
<returns></returns>
private
static
string
GetUIMultiLanguageVersion(
string
_dbPath)
{
try
{
string
_sql =
"select version from version where id='UI_MultiLanguageInfo'"
;
string
_connectionString =
string
.Format(
"Data Source={0};Pooling=true;FailIfMissing=false"
, _dbPath);
using
(
SQLiteConnection
_conn =
new
SQLiteConnection
(_connectionString))
{
SQLiteCommand
_comm =
new
SQLiteCommand
(_conn);
_comm.CommandText = _sql;
_conn.Open();
object
_version = _comm.ExecuteScalar();
return
_version.ToString();
}
}
catch
(
Exception
ex)
{
throw
new
Exception
(
"error"
,ex);
}
}
///
<summary>
///
SQLite中的UI多语言信息是否需要更新到JS文件
///
</summary>
///
<param name="_dbPath"></param>
///
<returns></returns>
private
static
bool
IsUpdate2JS(
string
_dbPath,
ref
string
ref_dbVersion)
{
try
{
string
_dbVersion =GetUIMultiLanguageVersion(_dbPath);
string
_serverVersion = System.Configuration.
ConfigurationManager
.AppSettings[
"UIMultiLanguageVersion"
];
if
(_dbVersion == _serverVersion)
{
return
false
;
}
else
{
ref_dbVersion = _dbVersion;
return
true
;
}
}
catch
(
Exception
ex)
{
throw
new
Exception
(
"error"
,ex);
}
}
}
}