简介
我的网站使用 asp.net core 2.0 和 Angular 6。 我想支持多语言 - 目前默认英语,西类牙语作为另一种语言。 我在客户端使用 @ngx-translate/core 作为翻译服务,效果非常好且简单。
我的问题
我有许多来自服务器的不同消息和错误,它们总是以英文显示,因为我从未翻译过它们。我也希望能够翻译来自服务器的消息。
我需要帮助来决定翻译消息的最佳方式,或者帮助我找到每种方法的优缺点。
一方面,我可以使用 aspnet/Localization 并创建 .resx 文件来翻译服务器中的消息。在这种方法中,我最终会在服务器中得到一堆翻译文件,在客户端中得到一些翻译文件,这将很难维护。
另一方面,我可以像这样发送错误代码(不是状态代码) -
- 15:用户被拒绝。
- 30:用户不存在。
- 一些其他错误代码。
这将允许我获取这些代码并在客户端上进行翻译,这最终将帮助我将所有翻译放在一个位置并使用 @ngx-translate/core.
我发现上面的方法至少有一个“问题”,如果将来有人需要使用我的API,他/她将无法理解这个错误代码,除非我将公开带有示例的 API 引用,这可能非常耗时。
您有更好的建议吗?或者也许是这种情况的最佳实践?
最佳答案
这就是我所做的。我还有 Angular 客户端和 ASP.NET core 后端。
当客户端调用后端 API 时,它包含包含客户端语言的 Accept-Language header 。如果后端需要发送任何取决于语言环境的内容,它将使用本地化的字符串。
当 HHTP 调用登陆服务器时,您首先读取语言 ID,然后将线程区域设置设置为该语言。您将所有字符串存储在 .resx 中,并将 .resx 本地化为您客户使用的语言。如果客户端使用您不支持的语言,资源管理器将回退到您的原始语言(例如英语)。
请记住在错误消息中包含错误代码。本地化的错误消息很可能需要由不懂该语言的人来处理。通过让错误消失,她可以理解错误消息。
关于c# - Asp.Net core 2.0 - 翻译服务器端消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54398344/