首页 > 解决方案 > Asp.Net core 2.0 - 翻译服务器端消息

问题描述

介绍

我在我的网站上使用asp.net core 2.0 & angular 6。我想支持多语言——英语作为默认语言,西班牙语作为另一种语言。我在客户端使用@ngx-translate/core作为翻译服务,它的工作非常棒且简单。

我的问题

我有许多来自服务器的不同消息和错误,它们总是以英文显示,因为我从未翻译过它们。我也希望能够翻译来自服务器的消息。

我需要帮助来决定什么是翻译这些消息的最佳方式,或者帮助我找到每种方法的优缺点。

一方面,我可以使用aspnet/Localization并创建.resx文件来翻译服务器中的消息。在这种方法中,我最终会在服务器中得到一堆翻译文件,在客户端中得到一些难以维护的翻译文件。

另一方面,我可以像这样发送错误代码(不是状态代码) -

  1. 15:用户被拒绝。
  2. 30:用户不存在。
  3. 其他一些错误代码。

这将允许我获取这些代码并在客户端上进行翻译,这最终将帮助我将所有翻译放在一个地方并使用@ngx-translate/core 进行翻译

我发现上述方法至少有一个“问题”,如果将来有人需要使用我的API,他/她将无法理解此错误代码,除非我将公开一个带有示例的 API 参考耗时的。

你有更好的建议吗?或者也许是这种情况的最佳实践?

标签: c#angular6asp.net-core-2.0ngx-translateasp.net-core-localization

解决方案


这就是我所做的。我也有 Angular 客户端和 ASP.NET 核心后端。

当客户端调用后端 API 时,它包含包含客户端语言的 Accept-Language 标头。如果后端需要发送任何依赖于语言环境的内容,它会使用本地化字符串。

当 HHTP 调用登陆服务器时,您首先读取语言 ID,然后将线程区域设置为该语言。您将所有字符串存储在 .resx 中,并将 .resx 本地化为客户使用的语言。如果客户端使用您不支持的语言,资源管理器会退回到您的原始语言(例如英语)。

请记住在错误消息中包含错误代码。本地化错误消息很可能需要由不懂该语言的人处理。通过让错误发生,她可以理解错误信息。


推荐阅读