Skip to content

Commit

Permalink
Merge branch 'V3/develop' of https://github.com/Cog-Creators/Red-Disc…
Browse files Browse the repository at this point in the history
…ordBot into Cog-Creators-V3/develop
  • Loading branch information
BenCos17 committed Feb 6, 2025
2 parents ba53946 + 73958d8 commit 8a3e45c
Show file tree
Hide file tree
Showing 32 changed files with 184 additions and 88 deletions.
16 changes: 16 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
.. Red changelogs
Redbot 3.5.16 (2025-02-06)
==========================

| Thanks to all these amazing people that contributed to this release:
| :ghuser:`Flame442`, :ghuser:`Jackenmen`
This is a hotfix release changing our implementation to prevent crash at startup
when invalid value of global locale/regional format configuration is encountered.
We have seen a few reports of this occurring and we believe that this was caused by
some 3rd-party cog(s) passing invalid values to Red <3.5 i18n APIs as those versions
did not validate the input in some scenarios. During startup, Red will now simply
log a warning, if it encounters incorrect global locale/regional format configuration
and reset it to a known valid value.

----

Redbot 3.5.15 (2025-02-03)
==========================

Expand Down
2 changes: 1 addition & 1 deletion redbot/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ def _early_init():


# This is bumped automatically by release workflow (`.github/workflows/scripts/bump_version.py`)
_VERSION = "3.5.16.dev1"
_VERSION = "3.5.17.dev1"

__version__, version_info = VersionInfo._get_version()

Expand Down
80 changes: 80 additions & 0 deletions redbot/core/_i18n.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
from __future__ import annotations

from contextvars import ContextVar
from typing import TYPE_CHECKING, List, Optional

from babel.core import Locale, UnknownLocaleError

if TYPE_CHECKING:
from redbot.core.i18n import Translator


__all__ = (
"current_locale",
"current_locale_default",
"current_regional_format",
"current_regional_format_default",
"translators",
"set_global_locale",
"set_global_regional_format",
"set_contextual_locale",
"set_contextual_regional_format",
)


FRESH_INSTALL_LOCALE = "en-US"
current_locale = ContextVar("current_locale")
current_locale_default = FRESH_INSTALL_LOCALE
current_regional_format = ContextVar("current_regional_format")
current_regional_format_default = None

translators: List[Translator] = []


def _reload_locales() -> None:
for translator in translators:
translator.load_translations()


def _get_standardized_locale_name(language_code: str) -> str:
try:
locale = Locale.parse(language_code, sep="-")
except (ValueError, UnknownLocaleError):
raise ValueError("Invalid language code. Use format: `en-US`")
if locale.territory is None:
raise ValueError(
"Invalid format - language code has to include country code, e.g. `en-US`"
)
return f"{locale.language}-{locale.territory}"


def set_global_locale(language_code: str, /) -> str:
global current_locale_default
current_locale_default = _get_standardized_locale_name(language_code)
_reload_locales()
return current_locale_default


def set_global_regional_format(language_code: Optional[str], /) -> Optional[str]:
global current_regional_format_default
if language_code is not None:
language_code = _get_standardized_locale_name(language_code)
current_regional_format_default = language_code
return language_code


def set_contextual_locale(language_code: str, /, verify_language_code: bool = False) -> str:
if verify_language_code:
language_code = _get_standardized_locale_name(language_code)
current_locale.set(language_code)
_reload_locales()
return language_code


def set_contextual_regional_format(
language_code: str, /, verify_language_code: bool = False
) -> str:
if verify_language_code and language_code is not None:
language_code = _get_standardized_locale_name(language_code)
current_regional_format.set(language_code)
return language_code
6 changes: 3 additions & 3 deletions redbot/core/locales/ar-SA.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/bg-BG.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/cs-CZ.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/da-DK.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/de-DE.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/es-ES.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/fi-FI.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/fr-FR.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/hi-IN.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/hr-HR.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/hu-HU.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions redbot/core/locales/id-ID.po

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 8a3e45c

Please sign in to comment.