2011-10-02 80 views
1

方案本地化的SaaS应用程序

我们有一个具有管理员后端与公共前端一个SaaS产品。我们希望为用户提供更改前端显示语言的选项。将有7种不同语言的选项。我们的产品建立在C#和MVC3上。前端只包含约400个字。处理这个问题的最好方法是什么?我可以将不同的语言存储在resx文件中,并在数据库中有一个标志来说明管理员选择了哪种语言?

因此,管理员从下拉列表中选择他的语言,然后他所有面向公众的一方将转换为该语言。

我从来没有做过这样的事情,所以任何有关潜在隐患的建议将不胜感激。

谢谢

回答

1

资源文件是最常见的解决方法。将语言选择存储在数据库中是一个好主意。

我会用OnActionExecuting在你的基地控制器设置当前的语言(Thread.CurrentUICulture

更新

指定正确的文化在每个请求的开始(在你的基本控制器)

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    var cultureId = ((YourUserObj)Session["CurrentUser"]).PreferedLanguage; 
    var userCulture = new CultureInfo(cultureId); 
    Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = userCulture; 
} 

然后让.NET加载正确的资源文件。

+0

谢谢@jgauffin,所以我与我的假设走在正确的轨道上。所以如果有这个保护覆盖字符串GetSubject() {subject} = GetLocalizedEmailString(“CompanyRegistrationSubject”,this.UserCulture); return subject; }' – Eilimint

+0

我会设置'Thread.CurrentUICulture'让.NET框架自动使用正确的文化,而不是在每个本地化方法上指定它。 – jgauffin

+0

事情是我不想让.NET自动选择它。默认情况下,无论用户在哪个域名地址,它都是英文。我希望管理员可以选择要显示的语言。所以如果我在我的公司表上添加了一列,像'Language_Setting',并将其作为int 1-9。 1为默认和英文,其余为可用语言。如何让我的resx实现使用哪种语言? – Eilimint