加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:39:25 所属栏目:asp.Net 来源:网络整理
导读:问题场景: 在基于SaaS的应用程序中实现ASP.Net本地化. 额外的复杂性:租户应该能够编辑本地化的内容.因此,如果托管应用程序有10个租户,每个租户支持5种语言,我们最终可能会有50个单位的翻译内容. 鉴于上述情况,请建议理想的方法. 下面列出的是过去使用的方
问题场景:

在基于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

解决方法

我会选择第二种选择.特别是因为您的资源条目可能会被修改,所以不能像您所说的那样选择resex文件.

.您可以轻松找到一个好的资源提供者,如westwind one或编写自定义提供者.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读