Asp.Net core 2.0 - перевод сообщений на стороне сервера - PullRequest
0 голосов
/ 28 января 2019

Intro

Я использую asp.net core 2.0 & angular 6 для моего сайта.Я хочу поддерживать многоязычность - английский по умолчанию и испанский как еще один язык.Я использую @ ngx-translate / core в качестве службы перевода на стороне клиента, которая работает потрясающе и просто.

Моя проблема

У меня много разных сообщений и ошибок, которые приходят с сервера, и они всегда появляются на английском, потому что я их никогда не переводил.Я также хочу иметь возможность переводить сообщения с сервера.

Мне нужна помощь, чтобы решить, как лучше всего перевести сообщения, или, возможно, помочь мне найти плюсы и минусы для каждого метода.

С одной стороны, я могу использовать aspnet / Localization и создавать .resx файлы для перевода сообщений на сервере.В этом методе я получу несколько файлов перевода на сервере и некоторые на клиенте, которые будет сложно поддерживать.

С другой стороны, я могу отправлять коды ошибок ( некоды состояния ) примерно так -

  1. 15: пользователю отказано.
  2. 30: пользователя не существует.
  3. Некоторые другие коды ошибок.

Это позволит мне взять эти коды и перевести их на клиент, что в конечном итоге поможет мне собрать все переводы в одном месте и перевести их, используя @ ngx-translate / core.

Я обнаружил, по крайней мере, одну "проблему" с вышеописанным способом, если в будущем кому-то понадобится использовать мой API , он / она не будетбыть в состоянии понять эти коды ошибок, если я не предоставлю ссылку на API с примерами, которые могут занимать много времени.

У вас есть лучшие предложения?Или, может быть, Best Practice для этого случая?

1 Ответ

0 голосов
/ 05 февраля 2019

Это то, что я сделал.У меня также есть Angular client и ASP.NET core backend.

Когда клиент вызывает API Backend, он включает в себя заголовок Accept-Language, который содержит язык клиента.Если бэкенду нужно отправить что-либо, что зависит от локали, он использует локализованные строки.

Когда HHTP-вызов приземляется на сервер, вы сначала читаете идентификатор языка, а затем устанавливаете локаль потока на этот язык.Вы храните все свои строки в .resx и локализуете .resx на языки, которые используют ваши клиенты.Если клиент использует язык, который вы не поддерживаете, менеджер ресурсов использует исходный язык (например, английский).

Не забудьте включить код ошибки в сообщение об ошибке.Весьма вероятно, что локализованное сообщение об ошибке должно обрабатываться человеком, не понимающим язык.Имея ошибку go, она понимает сообщение об ошибке.

...