2013-11-09 191 views
0

我打算實現一個多語言的網站,所以我的第一個想法是使用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? 
+0

我們使用該數據庫表和編輯的T直接在網頁上提供了一個管理頁面分機。 – gsharp

回答

1

您可以使用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); 
    } 
} 
1

您可以使用XML文件進行翻譯,在應用程序啓動時解析它們並將翻譯存儲在緩存中。您可以使用FileSystemWatcher類來查看某人何時更新文件,然後使緩存無效。