private bool IsSnapshotDifferent(CultureKey culture)
        {
            Contract.Requires(culture != null);
            Contract.Requires(_snapshot != null);

            var snapshotValue = _snapshot.GetValueOrDefault(culture).Maybe().Return(x => x.Text) ?? string.Empty;
            var currentValue  = _values.GetValue(culture) ?? string.Empty;

            var snapshotComment = _snapshot.GetValueOrDefault(culture).Maybe().Return(x => x.Comment) ?? string.Empty;
            var currentComment  = _comments.GetValue(culture) ?? string.Empty;

            return(!string.Equals(snapshotValue, currentValue) || !string.Equals(snapshotComment, currentComment));
        }
        private bool IsSnapshotDifferent([NotNull] CultureKey culture)
        {
            Contract.Requires(culture != null);

            if (_snapshot == null)
            {
                return(false);
            }

            var snapshotValue = _snapshot.GetValueOrDefault(culture)?.Text ?? string.Empty;
            var currentValue  = _values.GetValue(culture) ?? string.Empty;

            var snapshotComment = _snapshot.GetValueOrDefault(culture)?.Comment ?? string.Empty;
            var currentComment  = _comments.GetValue(culture) ?? string.Empty;

            return(!string.Equals(snapshotValue, currentValue) || !string.Equals(snapshotComment, currentComment));
        }
        public bool HasStringFormatParameterMismatches(IEnumerable <CultureKey> cultures)
        {
            Contract.Requires(cultures != null);

            return(HasStringFormatParameterMismatches(cultures.Select(lang => _values.GetValue(lang))));
        }