c# - Asp.Net core 2.0 - 翻译服务器端消息

标签 c# angular6 asp.net-core-2.0 ngx-translate asp.net-core-localization

简介

我的网站使用 asp.net core 2.0Angular 6。 我想支持多语言 - 目前默认英语,西类牙语作为另一种语言。 我在客户端使用 @ngx-translate/core 作为翻译服务,效果非常好且简单。

我的问题

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

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

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

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

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

这将允许我获取这些代码并在客户端上进行翻译,这最终将帮助我将所有翻译放在一个位置并使用 @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/

相关文章:

jquery - Bootstrap 在 Angular 6 应用程序中不起作用

angular - 从 json 创建动态表单时出错找不到名称为 : 'data' 的控件

css - Internet Explorer 上的 Angular 6——Angular Material/Flex 布局不会居中?

c# - 在两个 ASP.NET Core 应用程序之间共享 Cookie

c# - ASP.NET Core 2.0 : static file (site. min.js) 找不到

c# - 有没有办法创建一个共同的事件?

c# - 如何从泛型方法调用另一个类中的方法?

c# - 按键事件处理程序,但在没有表单的 Windows 应用程序上

c# - SQL C# insert 命令不起作用

asp.net-core-2.0 - 必须声明表变量 "@p0"