Как обрабатывать локализованный контент в ASP.NET Core?

как лучше всего хранить и отображать локализованный пользовательский контент с помощью моделей в ASP.Net Core, чтобы ваш сайт мог быть многоязычным? Руководства по локализации ASP.NET показывают, как локализовать статические части веб-сайта, такие как метки и сообщения.

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

Есть ли способ сделать это в ASP.NET Core?

nopCommerce предоставляет эту функцию — вы можете добавить несколько языков и ввести данные для продуктов, пользователей, моделей категорий и т. д. на всех выбранных вами языках (см. изображение).

форма ввода двуязычной модели nopCommerce форма ввода двуязычной модели nopCommerce

nopCommerce хранит эти функции локализации в таблице базы данных (LocalizedProperty), по сути, в виде пар ключ-значение с внешними ключами для определения объекта, к которому они привязаны.

таблица локализованных свойств nopCommerce nopCommerce LocalizedProperty table

Как заставить приложение обслуживать правильные значения из такой таблицы в зависимости от локали?


person Michael Inglis    schedule 07.10.2020    source источник
comment
Отвечает ли это на ваш вопрос? Локализация ASP.NET Core DisplayAttribute   -  person Panagiotis Kanavos    schedule 07.10.2020
comment
Не совсем. Я хочу иметь возможность хранить все поля в модели (например, продукт) на стольких языках, сколько необходимо, чтобы, когда пользователь меняет язык, поля из модели отображались на правильном языке.   -  person Michael Inglis    schedule 07.10.2020
comment
Вы можете сделать это, создав ресурсы для нескольких языков. ASP.NET Core выберет правильный язык на основе предпочтительного языка пользователя.   -  person Panagiotis Kanavos    schedule 07.10.2020
comment
Кстати, переведенные ресурсы не обязательно должны поступать из встроенного файла ресурсов, они могут поступать из других источников, например: вспомогательные (зависящие от языка) сборки, файлы JSON или таблицы базы данных, все, что реализует правильный интерфейс. Эти примеры проектов загружать ресурсы из JSON или базы данных   -  person Panagiotis Kanavos    schedule 08.10.2020


Ответы (1)


Вы можете следовать этому решению. Я предлагаю вам иметь два стола. Один для основных данных, а другой для локализованных данных. Например:

  1. Иметь основную таблицу, например. Product, чтобы содержать основные данные, такие как ProductCode, Name, Description, а также иметь поле с именем, например ObjectGuid, для идентификации уникальности объекта Product.
  2. Имейте таблицу локализации, чтобы содержать переведенные данные имени, описания, а также иметь поле с именем, например, язык, чтобы определить язык имени, описания. Эта таблица должна иметь OwnerGuid, если она связана с ObjectGuid.
  3. Свяжите Product с Localize отношением «один-два-много», используя Product.ObjectGuid==Localize.OwnerGuid && UICulture.language==Localize.Language, где UICulture.language предоставляется вашим пользователем.
person Yuthana Rujiwatra    schedule 11.06.2021