动态定义语言asp.net

时间:2012-03-09 09:15:25

标签: asp.net dynamic

我有一个案例,我必须得到管理员定义的语言。我知道如何使用支持语言的网站,例如http://www.codeproject.com/Articles/163215/Dynamic-definition-of-the-list-of-available-langua

Thread.CurrentThread.CurrentCulture =  
                   CultureInfo.CreateSpecificCulture(language);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
        }

但消费者希望定义语言,因此每次他想添加新语言时,他都不需要我更改源代码。我一直在寻找,但一无所获。谁能让我知道怎么做?

2 个答案:

答案 0 :(得分:1)

您可以构建自己的ResourceExpressionBuilder,将关键/值/语言信息存储在数据库表中。然后,您可以在管理中提供接口,以根据此数据库表添加语言和更新值。表达式构建器将允许您使用与内置资源文件相同的语法进行本地化。但这不是一个快速简便的解决方案。实现这一点需要时间。

或者,您可以教客户创建资源文件并将其部署在服务器上。这不应该要求编译。

以下是有关如何覆盖资源管理器的示例。您还可以创建自己的表达式http://msdn.microsoft.com/en-us/library/aa905797.aspx http://msdn.microsoft.com/en-us/library/system.web.compilation.resourceexpressionbuilder.aspx

答案 1 :(得分:1)

您可以将语言存储在数据库表中,然后从那里调用它,并将值应用于language变量。

cmd SqlCommand = new SqlCommand("SELECT TOP 1 Language FROM [WebsiteLanguage]",conn);
objLanguage Object = cmd.ExecuteScalar();
if (!(objLanguage==null)){
   language = objLanguage;
   Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
   Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
}

然后,管理员可以通过您管理区域中的表单UPDATE语言。