【问题标题】:Localisation on a SAAS applicationSAAS 应用程序的本地化
【发布时间】:2011-11-29 14:03:49
【问题描述】:

场景

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

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

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

谢谢

【问题讨论】:

    标签: c# .net asp.net-mvc-3 localization saas


    【解决方案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 加载正确的资源文件。

    【讨论】:

    • 感谢@jgauffin,所以我的假设是正确的。所以如果有这个protected override string GetSubject() { string subject = GetLocalizedEmailString("CompanyRegistrationSubject", this.UserCulture); return subject; }
    • 我会设置 Thread.CurrentUICulture 让 .NET 框架自动使用正确的区域性,而不是在每个本地化方法中指定它。
    • 问题是我不希望 .NET 自动选择它。默认情况下,无论此人在哪个域地址上,它都是英语。我希望管理员可以选择要显示的语言。因此,如果我在公司表中添加一列,例如“Language_Setting”并将其设置为 int 1-9。 1 是默认和英语,其余是可用的语言。我如何让我的 resx 知道使用什么语言?
    • 这不是我要说的。我是说您在请求开始时指定要使用的控制器。阅读我的更新
    • 错字。应该说“使用哪种语言”
    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 2017-03-06
    相关资源
    最近更新 更多