Add BCP47 unicode tags for Locale enum

Co-authored-by: Danny <1695103+Rapptz@users.noreply.github.com>
This commit is contained in:
鏡花水月 2025-07-08 00:06:28 -03:00 committed by GitHub
parent 774b934f74
commit 2502a783cb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
""" """
from __future__ import annotations from __future__ import annotations
import types import types
@ -694,6 +695,42 @@ class MFALevel(Enum, comparable=True):
require_2fa = 1 require_2fa = 1
_UNICODE_LANG_MAP: Dict[str, str] = {
'bg': 'bg-BG',
'zh-CN': 'zh-CN',
'zh-TW': 'zh-TW',
'hr': 'hr-HR',
'cs': 'cs-CZ',
'da': 'da-DK',
'nl': 'nl-NL',
'en-US': 'en-US',
'en-GB': 'en-GB',
'fi': 'fi-FI',
'fr': 'fr-FR',
'de': 'de-DE',
'el': 'el-GR',
'hi': 'hi-IN',
'hu': 'hu-HU',
'id': 'id-ID',
'it': 'it-IT',
'ja': 'ja-JP',
'ko': 'ko-KR',
'lt': 'lt-LT',
'no': 'no-NO',
'pl': 'pl-PL',
'pt-BR': 'pt-BR',
'ro': 'ro-RO',
'ru': 'ru-RU',
'es-ES': 'es-ES',
'es-419': 'es-419',
'sv-SE': 'sv-SE',
'th': 'th-TH',
'tr': 'tr-TR',
'uk': 'uk-UA',
'vi': 'vi-VN',
}
class Locale(Enum): class Locale(Enum):
american_english = 'en-US' american_english = 'en-US'
british_english = 'en-GB' british_english = 'en-GB'
@ -731,6 +768,17 @@ class Locale(Enum):
def __str__(self) -> str: def __str__(self) -> str:
return self.value return self.value
@property
def language_code(self) -> str:
""":class:`str`: Returns the locale's BCP 47 language code in the format of ``language-COUNTRY``.
This is derived from a predefined mapping based on Discord's supported locales.
If no mapping exists for the current locale, this returns the raw locale value as a fallback.
.. versionadded:: 2.6
"""
return _UNICODE_LANG_MAP.get(self.value, self.value)
E = TypeVar('E', bound='Enum') E = TypeVar('E', bound='Enum')