Я не уверен, что именно вы пытаетесь достичь.Если все, что вам нужно, это удалить регион, сохранив различие скрипта (например, если вы заинтересованы в zh-Hans, а не просто в zh), вам нужно использовать свойство Parent ().Хотя это может вернуть устаревшее (zh-CHS), поэтому вы можете использовать свойство IetfLanguageTag , чтобы решить, что:
CultureInfo.CurrentCulture.Parent.IetfLanguageTag
en-US -> en
zh-CN -> zh-Hans
zh-TW -> zh-Hant
Иногда он по-прежнему не дает ожидаемого ответа, поскольку он поддерживает только поддерживаемые языковые теги (но это ничем не отличается от свойства TwoLetterISOLanguageName):
az-Cyrl-AZ -> az
az-Latn-AZ -> az
И похоже,некоторые цепочки были опущены:
sr-Cyrl-BA -> (Invariant)
Вы можете проверить наличие инварианта, а затем вернуть свойство TwoLetterISOLanguageName, чтобы обойти это.