Cześć wszystkim,

w pracy tworzymy API na .NET 5, które ma zapewnić wsparcie dla wielu języków. Wszystkie komunikaty mają iść przetłumaczone w zależności od lokalizacji z backendu.
Mamy wydzielone moduły, w każdym z nich są też odpowiednie resx. Chcemy uniknąć tworzenia globalnego resx z wszystkimi komunikatami. Komunikaty błędów są dostarczane w odpowiednim języku przez StringLocalizera.

Pytanie natomiast dotyczy ValueObjectów. Powiedzmy, że jest SharedKernel, a w nim VO nienależące do żadnej konkretnej domeny, jak np. PESEL, Email, NIP itd.
Chciałbym, żeby każdy z ValueObjectów miał metodę fabrykującą zwracającą Result.

public class Result<T>
{ 
   T Value {get;}
   public bool IsSuccess {get;}
   public IEnumerable<Error> {get;}
}

public Email : ValueObject
{
   public string Value {get;}
   
   public static Result<Email> Create(string value)
   {
    ...
   }
}

W jaki sposób przetłumaczyć w poszczególnych modułach, błędy pochodzące z projektu z współdzielonymi ValueObjectami. Czy w każdym module powinno być dopisane odpowiednie tłumaczenie, czy może dla tych obiektów powinienem utworzyć współdzielony resx.

Czy takie współdzielenie ValueObjectów ma sens? Nie chciałbym pisać w kilku projektach tych samych ValueObjectów z identyczną walidacją.