Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SAAS应用程序的本地化_C#_.net_Asp.net Mvc 3_Localization_Saas - Fatal编程技术网

C# SAAS应用程序的本地化

C# SAAS应用程序的本地化,c#,.net,asp.net-mvc-3,localization,saas,C#,.net,Asp.net Mvc 3,Localization,Saas,场景 我们有一个SAAS产品,它有一个管理后端和一个公共前端。我们希望给用户一个选项来更改前端显示的语言。将有7种以上不同语言的选项。我们的产品基于C#和MVC3。前端仅包含约400个字。处理这个问题的最佳方法是什么?我可以将不同的语言存储在resx文件中,并在数据库中设置一个标志来说明管理员选择了哪种语言吗 因此,管理员从下拉列表中选择他的语言,然后所有面向公众的方面都将转换为该语言 我以前从来没有做过这样的事情,所以任何关于潜在陷阱的建议都将不胜感激 谢谢,资源文件是解决这个问题最常用的方法

场景

我们有一个SAAS产品,它有一个管理后端和一个公共前端。我们希望给用户一个选项来更改前端显示的语言。将有7种以上不同语言的选项。我们的产品基于C#和MVC3。前端仅包含约400个字。处理这个问题的最佳方法是什么?我可以将不同的语言存储在resx文件中,并在数据库中设置一个标志来说明管理员选择了哪种语言吗

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

我以前从来没有做过这样的事情,所以任何关于潜在陷阱的建议都将不胜感激


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

我会在基本控制器中使用
OnActionExecuting
来设置当前语言(
Thread.CurrentUICulture

更新

在每个请求的开头指定正确的区域性(在基本控制器中)


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

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

我会在基本控制器中使用
OnActionExecuting
来设置当前语言(
Thread.CurrentUICulture

更新

在每个请求的开头指定正确的区域性(在基本控制器中)


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

谢谢@jgauffin,所以我的假设是正确的。因此,如果让这个
受保护的重写字符串GetSubject(){string subject=GetLocalizedEmailString(“CompanyRegistrationSubject”,this.UserCulture);返回subject;}
我会设置
Thread.CurrentUICulture
让.NET framework自动使用正确的区域性,而不是在每个本地化方法中指定它。问题是我不希望.NET自动选择它。默认情况下,无论此人所在的域地址是什么,它都将是英语。我想管理员有什么语言显示的选择。因此,如果我在我的公司表中添加一列,类似于“Language_Setting”,并将其设置为int 1-9。1为默认语言和英语,其余为可用语言。我如何让我的resx意识到该使用什么语言?这不是我要说的。我的意思是在请求开始时指定要使用的控制器。阅读我的更新。应该说“使用哪种语言”谢谢@jgauffin,所以我的假设是正确的。因此,如果让这个
受保护的重写字符串GetSubject(){string subject=GetLocalizedEmailString(“CompanyRegistrationSubject”,this.UserCulture);返回subject;}
我会设置
Thread.CurrentUICulture
让.NET framework自动使用正确的区域性,而不是在每个本地化方法中指定它。问题是我不希望.NET自动选择它。默认情况下,无论此人所在的域地址是什么,它都将是英语。我想管理员有什么语言显示的选择。因此,如果我在我的公司表中添加一列,类似于“Language_Setting”,并将其设置为int 1-9。1为默认语言和英语,其余为可用语言。我如何让我的resx意识到该使用什么语言?这不是我要说的。我的意思是在请求开始时指定要使用的控制器。阅读我的更新。应该说“使用哪种语言”
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    var cultureId = ((YourUserObj)Session["CurrentUser"]).PreferedLanguage;
    var userCulture = new CultureInfo(cultureId);
    Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = userCulture;
}