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

2024-01-06

问题场景:

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

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

鉴于上述情况,请建议什么是理想的方法。

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

选项1: ASP.Net 资源文件

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

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

问题: 这在过去很有效(在最终用户需要动态更新可本地化内容的情况下)。早期的解决方案严重依赖缓存数据,在多租户解决方案的情况下,数据需要每个租户的每页进行大量缓存。缓存也可以按内容类型(标签、消息、菜单项)进行

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

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

问题: 尽管实现起来非常简单,但它具有与 .resx 文件相同的缺点 - 其设计目的不是允许最终用户修改内容并维护同一文件的多个版本(租户方面)。

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


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

。您可以轻松找到好的资源提供商,例如westwind http://www.west-wind.com/presentations/wwdbresourceprovider/一个或编写一个自定义提供程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐