Internationalization Framework¶
Basic Usage¶
from redbot.core import commands
from redbot.core.i18n import Translator, cog_i18n
_ = Translator("ExampleCog", __file__)
@cog_i18n(_)
class ExampleCog:
"""description"""
@commands.command()
async def mycom(self, ctx):
"""command description"""
await ctx.send(_("This is a test command"))
Tutorial¶
After making your cog, generate a messages.pot file
We recommend using redgettext - a modified version of pygettext for Red.
You can install redgettext by running pip install redgettext in a command prompt.
To generate the messages.pot file, you will now need to run
python -m redgettext -c [path_to_cog]
This file will contain all strings to be translated, including
docstrings.
(For advanced usage check python -m redgettext -h)
You can now use a tool like poedit to translate the strings in your messages.pot file.
API Reference¶
-
redbot.core.i18n.cog_i18n(translator)[source]¶ Get a class decorator to link the translator to this cog.
-
class
redbot.core.i18n.Translator(name, file_location)[source]¶ Bases:
collections.abc.Callable,typing.GenericFunction to get translated strings at runtime.
-
redbot.core.i18n.get_babel_locale(locale=None)[source]¶ Function to convert a locale to a
babel.core.Locale.Parameters: locale (Optional[str]) – The locale to convert, if not specified it defaults to the bot’s locale. Returns: The babel locale object. Return type: babel.core.Locale
-
redbot.core.i18n.get_babel_regional_format(regional_format=None)[source]¶ Function to convert a regional format to a
babel.core.Locale.If
regional_formatparameter is passed, this behaves the same asget_babel_locale.Parameters: regional_format (Optional[str]) – The regional format to convert, if not specified it defaults to the bot’s regional format. Returns: The babel locale object. Return type: babel.core.Locale