ASP.Net多租户SaaS应用程序中的本地化(i18N)

Tus*_*ood 5 asp.net localization saas internationalization multi-tenant

问题场景:

在基于SaaS的应用程序中实现ASP.Net本地化.

额外的复杂性:租户应该能够编辑本地化的内容.因此,如果托管应用程序有10个租户,每个租户支持5种语言,我们最终可能会有50个单位的翻译内容.

鉴于上述情况,请建议理想的方法.

下面列出的是过去使用的方法(对于我的其他应用程序)以及它们现在不相关的原因:

选项1:ASP.Net资源文件

问题:每个可本地化资源(.aspx页面)只创建一个语言文件.因此,每个租户翻译都不可能有一个Home.aspx.resx文件.虽然resx键可以修改为包含TenantId(lblFirstName_44)并存储在同一个resx文件中,但是这样很难维护,我们最终可能会遇到大文件.

选项2:在专用数据库表中存储多语言内容(标签,消息,MenuItems)

问题:这在过去运行良好(在最终用户需要动态更新可本地化内容的情况下).早期的解决方案在很大程度上依赖于缓存数据,在多租户解决方案的情况下,每个租户需要对每页进行大量缓存.也可以按内容类型(标签,消息,MenuItems)完成缓存

另一种方法是实现自定义资源提供程序(通过构建.Net的现有提供程序)

选项3:第三方开源解决方案,如FairlyLocal

问题:虽然实现起来非常简单,但是存在与.resx文件相同的缺点 - 不是为了允许最终用户修改内容和维护同一文件的多个版本(租户)而设计的.

注意:如果没有找到其他解决方案,我们可能会选择选项2

Ill*_*ati 0

我会选择第二个选择。特别是由于您的资源条目可能会被修改,因此 resex 文件不是您所说的一个选项。

。您可以轻松找到一个好的资源提供程序(例如westwind one)或编写自定义提供程序。