/// <summary>
 ///     Constructor.
 /// </summary>
 /// <param name="messengerService"> The messenger service. </param>
 /// <param name="messageFactory">   The message factory. This cannot be null. </param>
 public LocalisationServiceSingleton(
     [NotNull] IMessengerService messengerService,
     [NotNull] ILocalisationMessageFactory messageFactory)
     : this(
         messengerService,
         messageFactory,
         new Dictionary <string, int>(1))
 {
 }
        /// <summary>
        ///     Constructor.
        /// </summary>
        /// <exception cref="ArgumentNullException">    Thrown when one or more required arguments are null. </exception>
        /// <param name="messengerService"> The messenger service. </param>
        /// <param name="messageFactory">   The message factory. This cannot be null. </param>
        /// <param name="resourceFiles">    The resource files. This may be null. </param>
        public LocalisationServiceSingleton(
            [NotNull] IMessengerService messengerService,
            [NotNull] ILocalisationMessageFactory messageFactory,
            [NotNull] IDictionary <string, int> resourceFiles)
        {
            _messengerService = messengerService ?? throw new ArgumentNullException(nameof(messengerService));
            _messageFactory   = messageFactory ?? throw new ArgumentNullException(nameof(messageFactory));
            _resourceFiles    = resourceFiles ?? throw new ArgumentNullException(nameof(resourceFiles));

            _languages          = new ObservableCollection <ILanguageLookup>();
            _localisedLanguages = new Dictionary <LanguageEnum, string>(9);
            _languageDictionary = new Dictionary <LanguageEnum, string>(9);

            Languages = new ReadOnlyObservableCollection <ILanguageLookup>(_languages);
        }