Добавить свойство в (широко используемый) существующий класс против создания нового класса против условного? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть сайт, который использует Angular на внешнем интерфейсе и C # на внутреннем.У меня есть класс AC #, который получает данные из базы данных.У меня есть новое поле (перевод значения на испанский язык), которое я хочу добавить, и я не уверен, какой из следующих 3 сценариев будет оптимальным.

Вот как выглядит код в настоящее время:

public class CustomerIssueManager
{
        static public List<GenericRecordDTO> GetCustomerIssues(MyStore db)
        {
            List<GenericRecordDTO> responseDTO = new List<GenericRecordDTO>();

            try
            {
                var customerIssues = db.CustomerIssues.Where(m => m.IsActive && m.Name.ToLower() != "none").OrderBy(o => o.Name).ToList();

                foreach (var c in customerIssues)
                {
                    GenericRecordDTO issue = new GenericRecordDTO();
                    issue.ID = c.ID;
                    issue.Value = c.Name;
                    responseDTO.Add(issue);
                }
            }
       }
}

public class GenericRecordDTO
{
    public int ID { get; set; }
    public string Value {get; set; } = "";
}

Вот сценарии, которые я рассматриваю:

Сценарий 1 : Есть ли существенная разница между добавлением следующего в GenericRecordDTO:

public string SpanishValue { get; set; } = "";

Последствия: Есть много классов, которые используют GenericRecordDTO, которым не нужно SpanishValue

Сценарий 2 : В отличие от создания другого класса:

public class GenericRecordTransDTO 

и добавления к нему SpanishValue?Решает проблему из сценария 1

Сценарий 3 : в отличие от сохранения GenericRecordDTO.cs как есть, но в CustomerIssueManager.cs задается условие для испанского сайта:

if(englishSite) { issue.Value = c.Name; }
else { issue.Value = c.SpanishName; }

Не уверен, смогу ли я проверить испанский сайт на этом этапе или мне нужно сделать это позже?И есть ли какие-либо недостатки в проверке испанского сайта здесь по сравнению с более поздними в TypeScript / Angular?

1 Ответ

0 голосов
/ 01 марта 2019

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

Для меня я бы выбрал сторону языкового сервера и загрузил бы контент соответствующим образом.Если запрос данных запрашивает испанский клиент, то в поле «Имя» будет указано испанское имя, английский пользователь, затем английское имя и т. Д. Это дает преимущество обработки всей локализации на стороне сервера, по крайней мере, до тех пор, покачто касается строк.

Однако важно понимать, что локализация - это больше, чем просто текст, поэтому вам все равно может понадобиться форматирование на стороне клиента для чисел, дат и т. д. Для этого я бы рекомендовал использоватьбиблиотека форматирования, которая принимает информацию о локали, а затем доставляет эту информацию с сервера через полезную нагрузку конфигурации.

Что касается обнаружения стороны языкового сервера, это можно сделать несколькими способами.Например:

  1. Вы можете отправить явный заголовок или переменную с вашими запросами, указав, какой язык использовать.
  2. Вы можете использовать заголовок Accept-Language, отправленный браузером, чтобы принять решениекакой язык вы хотели бы использовать.
  3. Вы можете сделать это параметром конфигурации, который пользователь может установить в своем профиле, и проверить запись в базе данных для активного пользователя, чтобы решить, какой язык вы хотите использовать.
...