#region
|
|
using System.Data;
|
using CSFrameworkV5.Business;
|
using CSFrameworkV5.Core;
|
|
#endregion
|
|
namespace CSFrameworkV5.Language
|
{
|
/// <summary>
|
/// 数据库语言包
|
/// </summary>
|
public class LanDatabase : ILanguage
|
{
|
private DataTable _languageData;
|
|
public LanDatabase()
|
{
|
Load();
|
}
|
|
public string Get(string objectID, string defaultValue,
|
LanguageDataType dataType)
|
{
|
return Get(LanLib.Current, objectID, defaultValue, dataType);
|
}
|
|
public string Get(string userMsg)
|
{
|
return Get(LanLib.Current, userMsg, userMsg,
|
LanguageDataType.Message);
|
}
|
|
public string Get(LanguageType type, string objectID,
|
string defaultValue, LanguageDataType dataType)
|
{
|
//将一个单引号变成两个(跟SQL语法是一样的).
|
//所以在使用Select方法或DataView的时候,一定要注意把字符条件值的一个单引号改成两个单引号,执行
|
if (objectID.IndexOf("'") >= 0)
|
objectID = objectID.Replace("'", "''");
|
|
var rs = _languageData.Select("ObjectID='" + objectID + "'");
|
|
//有语言定义的记录
|
if (rs != null && rs.Length > 0)
|
{
|
var data = rs[0][type.ToStringEx().ToUpper()].ToStringEx();
|
|
if (string.IsNullOrEmpty(data)) //没有定义语言内容
|
{
|
//保存默认的语言资料
|
if (LanLib.Current == LanLib.DefautLanguage &&
|
!string.IsNullOrEmpty(defaultValue))
|
PostLanguage(LanLib.Current, objectID, defaultValue,
|
dataType.ToStringEx());
|
|
return defaultValue;
|
}
|
|
return data;
|
}
|
|
//没有语言定义
|
if (LanLib.Current == LanLib.DefautLanguage)
|
{
|
//保存默认的语言资料
|
if (!string.IsNullOrEmpty(defaultValue))
|
PostLanguage(LanLib.Current, objectID, defaultValue,
|
dataType.ToStringEx());
|
else
|
PostLanguage(LanLib.Current, objectID, objectID,
|
dataType.ToStringEx()); //objID作为语言标识
|
}
|
|
return defaultValue;
|
}
|
|
public string GetByMatch(string objectID, string defaultValue,
|
LanguageDataType dataType)
|
{
|
var rs = _languageData.Select("ObjectID LIKE '%" + objectID + "%'",
|
" ObjectID ASC");
|
if (rs != null && rs.Length > 0)
|
{
|
var data = rs[0][LanLib.Current.ToStringEx().ToUpper()]
|
.ToStringEx();
|
|
if (string.IsNullOrEmpty(data))
|
{
|
if (LanLib.Current == LanLib.DefautLanguage &&
|
!string.IsNullOrEmpty(defaultValue))
|
PostLanguage(LanLib.Current, objectID, defaultValue,
|
dataType.ToStringEx());
|
|
return defaultValue;
|
}
|
|
return data;
|
}
|
|
if (LanLib.Current == LanLib.DefautLanguage &&
|
!string.IsNullOrEmpty(defaultValue))
|
PostLanguage(LanLib.Current, objectID, defaultValue,
|
dataType.ToStringEx());
|
|
return defaultValue;
|
}
|
|
public void Load()
|
{
|
_languageData = new bllLanguage().GetLanguageData();
|
}
|
|
private void PostLanguage(LanguageType current, string objectID,
|
string defaultValue, string itemType)
|
{
|
//提交到语言数据库
|
var post = new bllLanguage().PostLanguage(current.ToStringEx(),
|
objectID, defaultValue, itemType);
|
|
if (post)
|
{
|
//更新缓存
|
var newRow = _languageData.NewRow();
|
newRow["ObjectID"] = objectID;
|
newRow["ItemType"] = itemType;
|
newRow[current.ToStringEx().ToUpper()] = defaultValue;
|
_languageData.AcceptChanges();
|
}
|
}
|
}
|
}
|