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 с примерами, которые могут быть кропотливый.
У вас есть лучшие предложения? Или, может быть, лучшая практика для этого случая?
1 ответ
Это то, что я сделал. У меня также есть Angular клиент и ядро ASP.NET.
Когда клиент вызывает API Backend, он включает в себя заголовок Accept-Language, который содержит язык клиента. Если бэкэнд должен отправить что-нибудь, что зависит от локали, он использует локализованные строки.
Когда вызов HHTP приземляется на сервере, вы сначала читаете идентификатор языка, а затем устанавливаете языковой стандарт потока на этот язык. Вы храните все свои строки в.resx и локализуете.resx на языки, которые используют ваши клиенты. Если клиент использует язык, который вы не поддерживаете, менеджер ресурсов использует исходный язык (например, английский).
Не забудьте включить код ошибки в сообщение об ошибке. Весьма вероятно, что локализованное сообщение об ошибке должно обрабатываться человеком, не понимающим язык. Имея сообщение об ошибке, она понимает сообщение об ошибке.