Browse Source

Add Interaction.translate method

Co-authored-by: I. Ahmad <[email protected]>
Co-authored-by: James Hilton-Balfe <[email protected]>
Co-authored-by: Bluesy <[email protected]>
Co-authored-by: Nadir Chowdhury <[email protected]>
pull/8431/head
Soheab 3 years ago
committed by GitHub
parent
commit
c83134ab65
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 44
      discord/interactions.py

44
discord/interactions.py

@ -42,6 +42,7 @@ from .permissions import Permissions
from .http import handle_message_parameters
from .webhook.async_ import async_context, Webhook, interaction_response_params, interaction_message_response_params
from .app_commands.namespace import Namespace
from .app_commands.translator import locale_str, TranslationContext, TranslationContextLocation
__all__ = (
'Interaction',
@ -503,6 +504,49 @@ class Interaction:
proxy_auth=http.proxy_auth,
)
async def translate(
self, string: Union[str, locale_str], *, locale: Locale = MISSING, data: Any = MISSING
) -> Optional[str]:
"""|coro|
Translates a string using the set :class:`~discord.app_commands.Translator`.
.. versionadded:: 2.1
Parameters
----------
string: Union[:class:`str`, :class:`~discord.app_commands.locale_str`]
The string to translate.
:class:`~discord.app_commands.locale_str` can be used to add more context,
information, or any metadata necessary.
locale: :class:`Locale`
The locale to use, this is handy if you want the translation
for a specific locale.
Defaults to the user's :attr:`.locale`.
data: Any
The extraneous data that is being translated.
If not specified, either :attr:`.command` or :attr:`.message` will be passed,
depending on which is available in the context.
Returns
--------
Optional[:class:`str`]
The translated string, or ``None`` if a translator was not set.
"""
translator = self._state._translator
if not translator:
return None
if not isinstance(string, locale_str):
string = locale_str(string)
if locale is MISSING:
locale = self.locale
if data is MISSING:
data = self.command or self.message
context = TranslationContext(location=TranslationContextLocation.other, data=data)
return await translator.translate(string, locale=locale, context=context)
class InteractionResponse:
"""Represents a Discord interaction response.

Loading…
Cancel
Save