Language Language::TryParseWithValidation(const std::wstring& s) { Language lang = Language::TryParse(s); if (!lang.IsValid()) return Language(); // invalid if (!IsISOLanguage(lang.Lang())) return Language(); // invalid auto country = lang.Country(); if (!country.empty() && !IsISOCountry(country)) return Language(); // invalid return lang; }