ISO 639 language codes are great, but they are not enough to specify all the cultural and regional differences that distinguish a language.
The ISO 639-1 code ‘en’ means English. But there are many forms of English, both de jure and de facto. How do you distinguish among British English, American English, Candian English, Indian English, and Austrialian English?
RFC 5646 is a standard for identifying not just languages like English (en), French (fr), but also the cultural things that might make them distinct, like country or script. For example, you can represent Brazilian Protuguese usinh pt-BR, and Russian written in a Latin script using ru-Latn.
Microsoft uses codes like these in its own products and calls them culture codes.
It’s a big document, though. Might take a while to understand.