public static Message GetMessage(string msgID, string languageCode = null, int? lcid = null)
{
if (I18NComplete.HideAllLocalizedText)
return Message.Empty;
int languageHash = lcid.HasValue ? lcid.Value : string.IsNullOrWhiteSpace(languageCode) ? CultureInfo.CurrentUICulture.LCID : LCID(languageCode);
Localization localization;
if (!Localizations.TryGetValue(languageHash, out localization))
{
if (CultureInfo.CurrentUICulture.IsNeutralCulture)
{
Localizations[languageHash] = localization = new Localization();
languageHash = I18NComplete.DefaultWorkingLanguageLCID;
}
else
{
var nativeCultureHash = CultureInfo.GetCultureInfo(languageHash).Parent.LCID;
if (!Localizations.TryGetValue(nativeCultureHash, out localization))
{
languageHash = I18NComplete.DefaultWorkingLanguageLCID;
Localizations.TryGetValue(languageHash, out localization);
}
else
{
//save the specific culture as the generic culture, so it will be found next time
Localizations[languageHash] = localization;
}
}
}
return localization.GetMessageObject(msgID);
}