asp.net - ASP.Net Multi-Tenancy SaaS 应用程序中的本地化 (i18N)

标签 asp.net localization internationalization saas multi-tenant

问题场景:
在基于 SaaS 的应用程序中实现 ASP.Net 本地化。
额外的复杂性:租户应该能够编辑本地化的内容。因此,如果托管应用程序有 10 个租户,每个租户支持 5 种语言,我们最终可以得到 50 个翻译内容单元。
鉴于上述情况,请建议什么是理想的方法。
下面列出了过去使用的方法(用于我的其他应用程序)以及为什么它们现在不相关:
选项1:
ASP.Net 资源文件

问题:
每个可本地化资源(.aspx 页)仅创建一个语言文件。因此,不可能为每个租户翻译都有一个 Home.aspx.resx 文件。
虽然可以修改 resx 键以包含 TenantId (lblFirstName_44) 并存储在同一个 resx 文件中,但这将很难维护,我们最终可能会得到大文件。
选项 2:
在专用数据库表(标签、消息、菜单项)中存储多语言内容

问题:
这在过去很有效(在最终用户需要动态更新可本地化内容的情况下)。早期的解决方案严重依赖缓存数据,在 Multi-Tenancy 解决方案的情况下,数据需要每页(每个租户)进行大量缓存。缓存也可以按内容类型(标签、消息、菜单项)完成
另一种方法可能是实现自定义资源提供程序(通过在 .Net 的现有提供程序上构建)
选项 3:
FairlyLocal 等第三方开源解决方案

问题:
尽管实现起来非常简单,但它也有与 .resx 文件相同的缺点——不是为允许最终用户修改内容和维护同一文件的多个版本(租户方面)而设计的。
注意:如果找不到其他解决方案,我们可能会选择选项 2

最佳答案

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

.你可以很容易地找到一个好的资源提供者,比如westwind一个或编写自定义提供程序。

关于asp.net - ASP.Net Multi-Tenancy SaaS 应用程序中的本地化 (i18N),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6571481/

相关文章:

symfony - Symfony 2 URL 结构中的可选区域性参数?

c# - Asp.net MVC Ajax 调用不调用 Controller 方法

c# - 将 ASP.Net 表单数据发布到另一个页面

.net - JSON序列化时如何本地化?

unicode - 多字节语言的网站本地化

javascript - RequireJS i18n 翻译字符串中的参数替换

javascript - React 中的 i18n 与 .properties 文件

JavaScript 在部分 View MVC 中失败

c# - 控件属性也存储在 ViewState 中吗?

asp.net-core - 自定义 DataAnnotations 本地化 - 仅创建单例对象