/// <inheritdoc /> public override int GetHashCode() { unchecked { return((base.GetHashCode() * 397) ^ (ExplicitCulture != null ? ExplicitCulture.GetHashCode() : 0)); } }
private async ObjectPromise GetTranslation(ContextObject context, ScopeData scopeData, IMorestachioLocalizationService service) { var valueContext = await MorestachioExpression.GetValue(context, scopeData); var culture = scopeData.ParserOptions.CultureInfo; if (ExplicitCulture != null) { var cultureValue = (await ExplicitCulture.GetValue(context, scopeData)).Value; if (cultureValue is CultureInfo cul) { culture = cul; } else if (cultureValue is string strCul) { culture = new CultureInfo(strCul); } } else { if (scopeData.CustomData.TryGetValue(MorestachioCustomCultureLocalizationDocumentItem.LocalizationCultureKey, out var customCulture) && customCulture is CultureInfo culInfo) { culture = culInfo; } } var args = Children .OfType <MorestachioLocalizationParameterDocumentItem>() .Cast <ExpressionDocumentItemBase>() .Select(f => new Func <ObjectPromise>(async() => (await f.MorestachioExpression.GetValue(context, scopeData)).Value)) .Concat(Children .OfType <MorestachioLocalizationDocumentItem>() .Select(f => new Func <ObjectPromise>(async() => await f.GetTranslation(context, scopeData, service)))) .ToArray(); var arguments = new object[args.Length]; for (var index = 0; index < args.Length; index++) { var parameters = args[index]; arguments[index] = (await parameters()); } return(service.GetTranslationOrNull(await valueContext.RenderToString(scopeData), culture, arguments)); }