我打算實現一個多語言的網站,所以我的第一個想法是使用RESX文件,但我有一個要求,讓每一個文本從管理編輯,創建動態多語言網站
can i do such a feature with resx files or should I store them in a database (schemaless) or is there a better way to do this?
我打算實現一個多語言的網站,所以我的第一個想法是使用RESX文件,但我有一個要求,讓每一個文本從管理編輯,創建動態多語言網站
can i do such a feature with resx files or should I store them in a database (schemaless) or is there a better way to do this?
您可以使用xml或sql表格。 您應該爲管理員準備一個頁面並列出翻譯的所有單詞。 語言管理員的基礎登錄,更新單詞到您的表或xml文件的翻譯。另外,爲了獲得最佳性能,請將每個語言單詞加載到系統捕獲。
編寫一些類似的代碼,用於將文字輸入到表格或xml中。
<%=PLang.GetString("YourWordInEnglish")%>
在你的aspx
...................
public static string GetString(string word)
{
try
{
if (String.IsNullOrWhiteSpace(word)) return "";
Dictionary<string, string> resourcesDictionary = GetResource(GetLanguageID());
if (resourcesDictionary != null)
{
if (!resourcesDictionary.ContainsKey(word.ToLower()))
{
Expression exp = new Expression();
exp.Word = exp.Translation = word;
exp.LanguageID = GetLanguageID();
exp.SiteID = Globals.GetSiteID();
if (exp.SiteID == 0 && exp.LanguageID == 0)
return word;
if (FLClass.createExpression(exp, ref resourcesDictionary) > 0)
return resourcesDictionary[word];
else
return word;
}
return resourcesDictionary[word.ToLower()];
}
else
return word;
}
catch
{
return word;
}
}
.......... ......... 功能編輯
public class ViewExpressionListEdit : BaseWebService
{
[WebMethod(EnableSession = true)]
public bool updateExpression(ExpressionService expressionService)
{
Expression expression = new Expression();
expression.ExpressionID = expressionService.ExpressionID;
expression.Translation = expressionService.Translation;
expression.LanguageID = expressionService.LanguageID;
expression.SiteID = Globals.GetSiteID();
return FLClass.updateExpression(expression);
}
}
您可以使用XML文件進行翻譯,在應用程序啓動時解析它們並將翻譯存儲在緩存中。您可以使用FileSystemWatcher類來查看某人何時更新文件,然後使緩存無效。
我們使用該數據庫表和編輯的T直接在網頁上提供了一個管理頁面分機。 – gsharp