c# - Asp.Net core 2.0 - 翻译服务器端消息
问题描述
介绍
我在我的网站上使用asp.net core 2.0 & angular 6。我想支持多语言——英语作为默认语言,西班牙语作为另一种语言。我在客户端使用@ngx-translate/core作为翻译服务,它的工作非常棒且简单。
我的问题
我有许多来自服务器的不同消息和错误,它们总是以英文显示,因为我从未翻译过它们。我也希望能够翻译来自服务器的消息。
我需要帮助来决定什么是翻译这些消息的最佳方式,或者帮助我找到每种方法的优缺点。
一方面,我可以使用aspnet/Localization并创建.resx文件来翻译服务器中的消息。在这种方法中,我最终会在服务器中得到一堆翻译文件,在客户端中得到一些难以维护的翻译文件。
另一方面,我可以像这样发送错误代码(不是状态代码) -
- 15:用户被拒绝。
- 30:用户不存在。
- 其他一些错误代码。
这将允许我获取这些代码并在客户端上进行翻译,这最终将帮助我将所有翻译放在一个地方并使用@ngx-translate/core 进行翻译。
我发现上述方法至少有一个“问题”,如果将来有人需要使用我的API,他/她将无法理解此错误代码,除非我将公开一个带有示例的 API 参考耗时的。
你有更好的建议吗?或者也许是这种情况的最佳实践?
解决方案
这就是我所做的。我也有 Angular 客户端和 ASP.NET 核心后端。
当客户端调用后端 API 时,它包含包含客户端语言的 Accept-Language 标头。如果后端需要发送任何依赖于语言环境的内容,它会使用本地化字符串。
当 HHTP 调用登陆服务器时,您首先读取语言 ID,然后将线程区域设置为该语言。您将所有字符串存储在 .resx 中,并将 .resx 本地化为客户使用的语言。如果客户端使用您不支持的语言,资源管理器会退回到您的原始语言(例如英语)。
请记住在错误消息中包含错误代码。本地化错误消息很可能需要由不懂该语言的人处理。通过让错误发生,她可以理解错误信息。
推荐阅读
- node.js - 无法在 Heroku 上部署后端
- javascript - 使用 vanilla javascript 计算滚动位置
- c# - UWP 自定义 Sqlite 查询到 JSON
- javascript - GitHub工作流程陆续启动
- ios - 如果用户不授予在 iOS14 上跟踪的权限,我是否需要禁用社交媒体登录?
- github - GitHub CICD 的大文件
- c# - Xamarin Android ForceDarkHelper 是什么?
- lua - Lua ffi.load 找不到没有绝对路径的库
- temporary-objects - 临时物化转换 - 术语和概念的混淆
- python - 如何使用 scala 进程实用程序发送 EOF