diff --git a/locales/templates/Pomodoro.pot b/locales/templates/Pomodoro.pot new file mode 100644 index 00000000..67750a03 --- /dev/null +++ b/locales/templates/Pomodoro.pot @@ -0,0 +1,743 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: src/modules/pomodoro/timer.py:52 +msgctxt "timer|stage:break|name" +msgid "BREAK" +msgstr "" + +#: src/modules/pomodoro/timer.py:53 +msgctxt "timer|stage:focus|name" +msgid "FOCUS" +msgstr "" + +#: src/modules/pomodoro/timer.py:220 +#, possible-python-brace-format +msgctxt "timer|default_base_name" +msgid "Timer {pattern}" +msgstr "" + +#: src/modules/pomodoro/timer.py:392 +#, possible-python-brace-format +msgctxt "timer|kicked_message" +msgid "" +"{mentions} was removed from {channel} because they were inactive! Remember " +"to press {tick} to register your presence every stage." +msgid_plural "" +"{mentions} were removed from {channel} because they were inactive! Remember " +"to press {tick} to register your presence every stage." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/pomodoro/timer.py:485 +#, possible-python-brace-format +msgctxt "timer|status|stage:focus|statusline" +msgid "{channel} is now in **FOCUS**! Good luck, **BREAK** starts {timestamp}" +msgstr "" + +#: src/modules/pomodoro/timer.py:490 +#, possible-python-brace-format +msgctxt "timer|status|stage:break|statusline" +msgid "" +"{channel} is now on **BREAK**! Take a rest, **FOCUS** starts {timestamp}" +msgstr "" + +#: src/modules/pomodoro/timer.py:522 +#, possible-python-brace-format +msgctxt "timer|status|warningline" +msgid "" +"**Warning:** {mentions}, please press {tick} to avoid being removed on the " +"next stage." +msgstr "" + +#: src/modules/pomodoro/timer.py:539 +#, possible-python-brace-format +msgctxt "timer|status|stopped:auto" +msgid "Timer stopped! Join {channel} to start the timer." +msgstr "" + +#: src/modules/pomodoro/timer.py:544 +msgctxt "timer|status|stopped:manual" +msgid "Timer stopped! Press `Start` to restart the timer." +msgstr "" + +#: src/modules/pomodoro/settingui.py:39 +msgctxt "ui:timer_config|menu:channels|placeholder" +msgid "Select Pomodoro Notification Channel" +msgstr "" + +#: src/modules/pomodoro/settingui.py:47 +msgctxt "ui:timer_config|embed|title" +msgid "Timer Configuration Panel" +msgstr "" + +#: src/modules/pomodoro/settingui.py:81 +msgctxt "dash:pomodoro|title" +msgid "Pomodoro Configuration ({commands[configure pomodoro]})" +msgstr "" + +#: src/modules/pomodoro/cog.py:307 +msgctxt "cmd:pomodoro" +msgid "timers" +msgstr "" + +#: src/modules/pomodoro/cog.py:308 +msgctxt "cmd:pomodoro|desc" +msgid "Base group for all pomodoro timer commands." +msgstr "" + +#: src/modules/pomodoro/cog.py:316 +msgctxt "cmd:pomodoro_status" +msgid "show" +msgstr "" + +#: src/modules/pomodoro/cog.py:317 +msgctxt "cmd:pomodoro_status|desc" +msgid "Display the status of a single pomodoro timer." +msgstr "" + +#: src/modules/pomodoro/cog.py:320 +msgctxt "cmd:pomodoro_status|param:channel" +msgid "timer_channel" +msgstr "" + +#: src/modules/pomodoro/cog.py:325 +msgctxt "cmd:pomodoro_status|param:channel|desc" +msgid "The channel for which you want to view the timer." +msgstr "" + +#: src/modules/pomodoro/cog.py:343 +#, possible-python-brace-format +msgctxt "cmd:pomodoro_status|error:no_timer" +msgid "The channel {channel} does not have a timer set up!" +msgstr "" + +#: src/modules/pomodoro/cog.py:353 +msgctxt "cmd:pomodoro_list" +msgid "list" +msgstr "" + +#: src/modules/pomodoro/cog.py:354 +msgctxt "cmd:pomodoro_list|desc" +msgid "List the available pomodoro timers." +msgstr "" + +#: src/modules/pomodoro/cog.py:376 +#, possible-python-brace-format +msgctxt "cmd:pomodoro_list|error:no_timers" +msgid "" +"No timers have been setup in this server!\n" +"You can ask an admin to create one with {command}." +msgstr "" + +#: src/modules/pomodoro/cog.py:388 +msgctxt "cmd:pomodoro_list|error:no_visible_timers" +msgid "There are no visible timers in this server!" +msgstr "" + +#: src/modules/pomodoro/cog.py:398 +#, possible-python-brace-format +msgctxt "cmd:pomodoro_list|embed:timer_list|title" +msgid "Pomodoro Timers in **{guild}**" +msgstr "" + +#: src/modules/pomodoro/cog.py:407 +#, possible-python-brace-format +msgctxt "cmd:pomodoro_list|status:stopped_auto" +msgid "" +"`{pattern}` timer is stopped with no members!\n" +"Join {channel} to restart it." +msgstr "" + +#: src/modules/pomodoro/cog.py:412 +#, possible-python-brace-format +msgctxt "cmd:pomodoro_list|status:stopped_manual" +msgid "" +"`{pattern}` timer is stopped with `{members}` members!\n" +"Join {channel} and press `Start` to start it!" +msgstr "" + +#: src/modules/pomodoro/cog.py:419 +#, possible-python-brace-format +msgctxt "cmd:pomodoro_list|status:running_focus" +msgid "" +"`{pattern}` timer is running with `{members}` members!\n" +"Currently **focusing**, with break starting {timestamp}" +msgstr "" + +#: src/modules/pomodoro/cog.py:425 +#, possible-python-brace-format +msgctxt "cmd:pomodoro_list|status:running_break" +msgid "" +"`{pattern}` timer is running with `{members}` members!\n" +"Currently **resting**, with focus starting {timestamp}" +msgstr "" + +#: src/modules/pomodoro/cog.py:439 +msgctxt "cmd:pomodoro_admin" +msgid "admin" +msgstr "" + +#: src/modules/pomodoro/cog.py:440 +msgctxt "cmd:pomodoro_admin|desc" +msgid "Command group for pomodoro admin controls." +msgstr "" + +#: src/modules/pomodoro/cog.py:446 +msgctxt "cmd:pomodoro_create" +msgid "create" +msgstr "" + +#: src/modules/pomodoro/cog.py:449 +msgctxt "cmd:pomodoro_create|desc" +msgid "Create a new Pomodoro timer. Requires admin permissions." +msgstr "" + +#: src/modules/pomodoro/cog.py:453 +msgctxt "cmd:pomodoro_create|param:channel" +msgid "timer_channel" +msgstr "" + +#: src/modules/pomodoro/cog.py:459 +msgctxt "cmd:pomodoro_create|param:channel|desc" +msgid "" +"Voice channel to create the timer in. (Defaults to your current channel, or " +"makes a new one.)" +msgstr "" + +#: src/modules/pomodoro/cog.py:488 +msgctxt "cmd:pomodoro_create|error:insufficient_perms" +msgid "Only server administrators can create timers!" +msgstr "" + +#: src/modules/pomodoro/cog.py:515 +msgctxt "cmd:pomodoro_create|error:channel_create_failed|title" +msgid "Could not create pomodoro voice channel!" +msgstr "" + +#: src/modules/pomodoro/cog.py:519 +msgctxt "cmd:pomodoro_create|error:channel_create|desc" +msgid "" +"Failed to create a new pomodoro voice channel due to an unknown Discord " +"communication error. Please try creating the channel manually and pass it to " +"the `timer_channel` argument of this command." +msgstr "" + +#: src/modules/pomodoro/cog.py:533 +msgctxt "cmd:pomodoro_create|error:channel_create_permissions|title" +msgid "Could not create pomodoro voice channel!" +msgstr "" + +#: src/modules/pomodoro/cog.py:537 +msgctxt "cmd:pomodoro_create|error:channel_create_permissions|desc" +msgid "" +"No `timer_channel` was provided, and I lack the `MANAGE_CHANNELS` permission " +"needed to create a new voice channel." +msgstr "" + +#: src/modules/pomodoro/cog.py:551 +#, possible-python-brace-format +msgctxt "cmd:pomodoro_create|error:timer_exists" +msgid "" +"A timer already exists in {channel}! Use `/pomodoro admin edit` to modify it." +msgstr "" + +#: src/modules/pomodoro/cog.py:590 +msgctxt "cmd:pomodoro_create|response:success|content" +msgid "Timer created successfully! Use the panel below to reconfigure." +msgstr "" + +#: src/modules/pomodoro/cog.py:596 +msgctxt "cmd:pomodoro_destroy" +msgid "destroy" +msgstr "" + +#: src/modules/pomodoro/cog.py:599 +msgctxt "cmd:pomodoro_destroy|desc" +msgid "" +"Delete a pomodoro timer from a voice channel. Requires admin permissions." +msgstr "" + +#: src/modules/pomodoro/cog.py:603 +msgctxt "cmd:pomodoro_destroy|param:channel" +msgid "timer_channel" +msgstr "" + +#: src/modules/pomodoro/cog.py:606 +msgctxt "cmd:pomodoro_destroy|param:channel" +msgid "Channel with the timer to delete." +msgstr "" + +#: src/modules/pomodoro/cog.py:624 +msgctxt "cmd:pomodoro_destroy|error:no_timer" +msgid "This channel doesn't have an attached pomodoro timer!" +msgstr "" + +#: src/modules/pomodoro/cog.py:639 +msgctxt "cmd:pomodoro_destroy|error:insufficient_perms|owned" +msgid "" +"You need to be an administrator or own this channel to remove this timer!" +msgstr "" + +#: src/modules/pomodoro/cog.py:649 +msgctxt "cmd:pomodoro_destroy|error:insufficient_perms|notowned" +msgid "You need to be a server administrator to remove this timer!" +msgstr "" + +#: src/modules/pomodoro/cog.py:661 +#, possible-python-brace-format +msgctxt "cmd:pomdoro_destroy|response:success|description" +msgid "Timer successfully removed from {channel}." +msgstr "" + +#: src/modules/pomodoro/cog.py:667 +msgctxt "cmd:pomodoro_edit" +msgid "edit" +msgstr "" + +#: src/modules/pomodoro/cog.py:670 +msgctxt "cmd:pomodoro_edit|desc" +msgid "Edit a Timer" +msgstr "" + +#: src/modules/pomodoro/cog.py:674 +msgctxt "cmd:pomodoro_edit|param:channel" +msgid "timer_channel" +msgstr "" + +#: src/modules/pomodoro/cog.py:680 +msgctxt "cmd:pomodoro_edit|param:channel|desc" +msgid "Channel holding the timer to edit." +msgstr "" + +#: src/modules/pomodoro/cog.py:721 +msgctxt "cmd:pomodoro_edit|error:no_timer" +msgid "This channel doesn't have an attached pomodoro timer to edit!" +msgstr "" + +#: src/modules/pomodoro/cog.py:734 +msgctxt "cmd:pomodoro_edit|error:insufficient_perms|role:other" +msgid "" +"Insufficient permissions to modifiy this timer!\n" +"You need to be a server administrator, own this channel, or have the timer " +"manager role." +msgstr "" + +#: src/modules/pomodoro/cog.py:755 +msgctxt "cmd:pomodoro_edit|error:insufficient_permissions|role_needed:admin" +msgid "You need to be a guild admin to modify this option!" +msgstr "" + +#: src/modules/pomodoro/cog.py:760 +msgctxt "cmd:pomodoro_edit|error:insufficient_permissions|role_needed:owner" +msgid "You need to be a channel owner or guild admin to modify this option!" +msgstr "" + +#: src/modules/pomodoro/cog.py:765 +msgctxt "cmd:pomodoro_edit|error:insufficient_permissions|role_needed:manager" +msgid "" +"You need to be a guild admin or have the manager role to modify this option!" +msgstr "" + +#: src/modules/pomodoro/cog.py:801 +msgctxt "cmd:configure_pomodoro" +msgid "pomodoro" +msgstr "" + +#: src/modules/pomodoro/cog.py:802 +msgctxt "cmd:configure_pomodoro|desc" +msgid "Configure Pomodoro Timer System" +msgstr "" + +#: src/modules/pomodoro/lib.py:19 +#, possible-python-brace-format +msgctxt "formatstring:channel_name|key:remaining" +msgid "{remaining}" +msgstr "" + +#: src/modules/pomodoro/lib.py:20 +#, possible-python-brace-format +msgctxt "formatstring:channel_name|key:stage" +msgid "{stage}" +msgstr "" + +#: src/modules/pomodoro/lib.py:21 +#, possible-python-brace-format +msgctxt "formatstring:channel_name|key:members" +msgid "{members}" +msgstr "" + +#: src/modules/pomodoro/lib.py:22 +#, possible-python-brace-format +msgctxt "formatstring:channel_name|key:name" +msgid "{name}" +msgstr "" + +#: src/modules/pomodoro/lib.py:23 +#, possible-python-brace-format +msgctxt "formatstring:channel_name|key:pattern" +msgid "{pattern}" +msgstr "" + +#: src/modules/pomodoro/options.py:32 +msgctxt "timerset:voice_channel" +msgid "channel" +msgstr "" + +#: src/modules/pomodoro/options.py:35 +msgctxt "timerset:voice_channel|desc" +msgid "Channel in which to track timer members and send alerts." +msgstr "" + +#: src/modules/pomodoro/options.py:45 +msgctxt "timerset:notification_channel" +msgid "notification_channel" +msgstr "" + +#: src/modules/pomodoro/options.py:48 +msgctxt "timerset:notification_channel|desc" +msgid "Channel to which to send timer status cards and notifications." +msgstr "" + +#: src/modules/pomodoro/options.py:68 +#, possible-python-brace-format +msgctxt "timerset:notification_channel|format:notset" +msgid "Not Set (Using {channel})" +msgstr "" + +#: src/modules/pomodoro/options.py:78 +msgctxt "timerset:inactivity_threshold|inactivity_threshold" +msgid "inactivity_threshold" +msgstr "" + +#: src/modules/pomodoro/options.py:81 +msgctxt "timerset:inactivity_threshold|desc" +msgid "" +"Number of inactive focus+break stages before a member is removed from the " +"timer." +msgstr "" + +#: src/modules/pomodoro/options.py:85 +msgctxt "timerset:inactivity_threshold|desc" +msgid "How many timer cycles before kicking inactive members." +msgstr "" + +#: src/modules/pomodoro/options.py:99 +msgctxt "timerset:manager_role" +msgid "manager_role" +msgstr "" + +#: src/modules/pomodoro/options.py:102 +msgctxt "timerset:manager_role|desc" +msgid "Role allowed to start, stop, and edit the focus/break lengths." +msgstr "" + +#: src/modules/pomodoro/options.py:114 +msgctxt "timerset:manager_role|format:notset" +msgid "Not Set (Only Admins may start/stop or edit pattern)" +msgstr "" + +#: src/modules/pomodoro/options.py:124 +msgctxt "timerset:voice_alerts" +msgid "voice_alerts" +msgstr "" + +#: src/modules/pomodoro/options.py:127 +msgctxt "timerset:voice_alerts|desc" +msgid "Whether to join the voice channel and announce focus and break stages." +msgstr "" + +#: src/modules/pomodoro/options.py:138 +msgctxt "timerset:base_name" +msgid "name" +msgstr "" + +#: src/modules/pomodoro/options.py:141 +msgctxt "timerset:base_name|desc" +msgid "Timer name, as shown on the timer card." +msgstr "" + +#: src/modules/pomodoro/options.py:145 +msgctxt "timerset:base_name|accepts" +msgid "Any short name, shown on the timer card." +msgstr "" + +#: src/modules/pomodoro/options.py:159 +msgctxt "timerset:channel_name_format" +msgid "channel_name" +msgstr "" + +#: src/modules/pomodoro/options.py:162 +#, possible-python-brace-format +msgctxt "timerset:channel_name_format|desc" +msgid "" +"Auto-updating voice channel name, accepting {remaining}, {name}, {pattern}, " +"and {stage} keys." +msgstr "" + +#: src/modules/pomodoro/options.py:166 +#, possible-python-brace-format +msgctxt "timerset:channel_name|accepts" +msgid "" +"Timer channel name, with keys {remaining}, {name}, {pattern}, and {stage}." +msgstr "" + +#: src/modules/pomodoro/options.py:178 +msgctxt "timerset:focus_length" +msgid "focus_length" +msgstr "" + +#: src/modules/pomodoro/options.py:181 +msgctxt "timerset:focus_length|desc" +msgid "Length of the focus stage of the timer in minutes." +msgstr "" + +#: src/modules/pomodoro/options.py:186 +msgctxt "timerset:focus_length|accepts" +msgid "A positive integer number of minutes." +msgstr "" + +#: src/modules/pomodoro/options.py:210 +msgctxt "timerset:focus_length|desc" +msgid "Please enter a positive number of minutes." +msgstr "" + +#: src/modules/pomodoro/options.py:218 +msgctxt "timerset:break_length" +msgid "break_length" +msgstr "" + +#: src/modules/pomodoro/options.py:221 +msgctxt "timerset:break_length|desc" +msgid "Length of the break stage of the timer in minutes." +msgstr "" + +#: src/modules/pomodoro/options.py:226 +msgctxt "timerset:break_length|accepts" +msgid "A positive integer number of minutes." +msgstr "" + +#: src/modules/pomodoro/options.py:250 +msgctxt "timerset:break_length|desc" +msgid "Please enter a positive number of minutes." +msgstr "" + +#: src/modules/pomodoro/settings.py:19 +msgctxt "guildset:pomodoro_channel" +msgid "pomodoro_channel" +msgstr "" + +#: src/modules/pomodoro/settings.py:22 +msgctxt "guildset:pomodoro_channel|desc" +msgid "Default central notification channel for pomodoro timers." +msgstr "" + +#: src/modules/pomodoro/settings.py:26 +msgctxt "guildset:pomodoro_channel|long_desc" +msgid "" +"Pomodoro timers which do not have a custom notification channel set will " +"send timer notifications in this channel. If this setting is not set, " +"pomodoro notifications will default to the timer voice channel itself." +msgstr "" + +#: src/modules/pomodoro/settings.py:33 +msgctxt "guildset:pomodoro_channel|formatted|notset" +msgid "Not Set (Will use timer voice channel.)" +msgstr "" + +#: src/modules/pomodoro/settings.py:37 +msgctxt "guildset:pomodoro_channel|accepts" +msgid "Timer notification channel name or id." +msgstr "" + +#: src/modules/pomodoro/settings.py:50 +#, possible-python-brace-format +msgctxt "guildset:pomodoro_channel|set_response|set" +msgid "Pomodoro timer notifications will now default to {channel}" +msgstr "" + +#: src/modules/pomodoro/settings.py:55 +msgctxt "guildset:pomodoro_channel|set_response|unset" +msgid "Pomodoro timer notifications will now default to their voice channel." +msgstr "" + +#: src/modules/pomodoro/settings.py:65 +#, possible-python-brace-format +msgctxt "guildset:pomdoro_channel|set_using" +msgid "{cmd} or channel selector below." +msgstr "" + +#: src/modules/pomodoro/ui/edit.py:63 +msgctxt "modal:timer_editor|title" +msgid "Timer Option Editor" +msgstr "" + +#: src/modules/pomodoro/ui/status.py:58 +msgctxt "ui:timer_status|button:present|label" +msgid "Present" +msgstr "" + +#: src/modules/pomodoro/ui/status.py:81 +msgctxt "ui:timer_status|button:edit|error:no_permissions" +msgid "" +"Configuring this timer requires guild admin permissions or the configured " +"manager role!" +msgstr "" + +#: src/modules/pomodoro/ui/status.py:93 +msgctxt "ui:timer_status|button:edit|label" +msgid "Options" +msgstr "" + +#: src/modules/pomodoro/ui/status.py:111 +msgctxt "ui:timer_status|button:start|error:already_running" +msgid "Cannot start a timer that is already running!" +msgstr "" + +#: src/modules/pomodoro/ui/status.py:125 +msgctxt "ui:timer_status|button:start|label" +msgid "Start" +msgstr "" + +#: src/modules/pomodoro/ui/status.py:142 +msgctxt "ui:timer_status|button:stop|label" +msgid "Stop" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:51 +msgctxt "ui:timer_options|button:edit|label" +msgid "Edit" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:67 +msgctxt "ui:timer_options|button:voice_alerts|label" +msgid "Voice Alerts" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:88 +msgctxt "ui:timer_options|button:delete|success|title" +msgid "Timer Deleted" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:92 +#, possible-python-brace-format +msgctxt "ui:timer_options|button:delete|success|description" +msgid "The timer in {channel} has been removed." +msgstr "" + +#: src/modules/pomodoro/ui/config.py:100 +msgctxt "ui:timer_options|button:delete|label" +msgid "Delete" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:119 +msgctxt "ui:timer_options|menu:voice_channel|placeholder" +msgid "Set Voice Channel" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:142 +msgctxt "ui:timer_options|menu:notification_channel|placeholder" +msgid "Set Notification Channel" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:157 +msgctxt "ui:timer_options|menu:manager_role|placeholder" +msgid "Set Manager Role" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:166 +#, possible-python-brace-format +msgctxt "ui:timer_options|embed|title" +msgid "Timer Control Panel for {channel}" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:173 +msgctxt "ui:timer_options|embed|footer" +msgid "Hover over the option names to view descriptions." +msgstr "" + +#: src/modules/pomodoro/ui/config.py:185 +msgctxt "ui:timer_options|embed|field:pattern|name" +msgid "Pattern" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:188 +#, possible-python-brace-format +msgctxt "ui:timer_options|embed|field:pattern|value" +msgid "" +"**`{focus_len} minutes`** focus\n" +"**`{break_len} minutes`** break" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:199 +msgctxt "ui:timer_options|embed|field:channel_name|name" +msgid "Channel Name Preview" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:203 +#, possible-python-brace-format +msgctxt "ui:timer_options|embed|field:channel_name|value" +msgid "" +"**`{name}`**\n" +"(The actual channel name may not match due to ratelimits.)" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:213 +msgctxt "ui:timer_options|embed|field:issues|name" +msgid "Issues" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:231 +msgctxt "ui:timer_options|issue:no_voice_channel" +msgid "The configured voice channel does not exist! Please update it below." +msgstr "" + +#: src/modules/pomodoro/ui/config.py:242 +#, possible-python-brace-format +msgctxt "ui:timer_options|issue:cannot_speak" +msgid "Voice alerts are on, but I don't have speaking permissions in {channel}" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:249 +#, possible-python-brace-format +msgctxt "ui:timer_options|issue:cannot_change_name" +msgid "" +"I cannot update the name of {channel}! (Needs `MANAGE_CHANNELS` permission)" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:260 +msgctxt "ui:timer_options|issue:notif_channel_dne" +msgid "Configured notification channel does not exist!" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:269 +#, possible-python-brace-format +msgctxt "ui:timer_options|issue:notif_channel_write" +msgid "" +"I cannot attach files (`ATTACH_FILES`) or send embeds (`EMBED_LINKS`) in " +"{channel}" +msgstr "" + +#: src/modules/pomodoro/ui/config.py:277 +#, possible-python-brace-format +msgctxt "ui:timer_options|issues:cannot_make_webhooks" +msgid "" +"I cannot create the notification webhook (`MANAGE_WEBHOOKS`) in {channel}" +msgstr "" diff --git a/locales/templates/babel.pot b/locales/templates/babel.pot new file mode 100644 index 00000000..493a1cd4 --- /dev/null +++ b/locales/templates/babel.pot @@ -0,0 +1,365 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/babel/settingui.py:40 +msgctxt "ui:locale_config|button:force|label" +msgid "Toggle Force" +msgstr "" + +#: src/babel/settingui.py:49 +msgctxt "ui:locale_config|embed|title" +msgid "Language Configuration Panel" +msgstr "" + +#: src/babel/settingui.py:83 +msgctxt "dash:locale|title" +msgid "Server Language Configuration ({commands[configure language]})" +msgstr "" + +#: src/babel/cog.py:99 +msgctxt "cmd:configure_language" +msgid "language" +msgstr "" + +#: src/babel/cog.py:101 +msgctxt "cmd:configure_language|desc" +msgid "Configure the default language I will use in this server." +msgstr "" + +#: src/babel/cog.py:147 +#, possible-python-brace-format +msgctxt "cmd:configure_language|error" +msgid "" +"You cannot enable `{force_setting}` without having a configured language!" +msgstr "" + +#: src/babel/cog.py:167 +msgctxt "cmd:configure_language|success" +msgid "Language settings updated!" +msgstr "" + +#: src/babel/cog.py:183 +msgctxt "cmd:userconfig_language" +msgid "language" +msgstr "" + +#: src/babel/cog.py:186 +msgctxt "cmd:userconfig_language|desc" +msgid "Set your preferred interaction language." +msgstr "" + +#: src/babel/cog.py:190 +msgctxt "cmd:userconfig_language|param:language" +msgid "language" +msgstr "" + +#: src/babel/cog.py:195 +msgctxt "cmd:userconfig_language|param:language|desc" +msgid "Which language do you want me to respond in?" +msgstr "" + +#: src/babel/cog.py:211 +msgctxt "cmd:userconfig_language|button:reset|label" +msgid "Reset" +msgstr "" + +#: src/babel/cog.py:251 +#, possible-python-brace-format +msgctxt "acmpl:language|no_match" +msgid "No supported languages matching {partial}" +msgstr "" + +#: src/babel/utils.py:9 +msgctxt "utils|months" +msgid "" +"January,February,March,April,May,June,July,August,September,October,November," +"December" +msgstr "" + +#: src/babel/utils.py:14 +msgctxt "utils|short_months" +msgid "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec" +msgstr "" + +#: src/babel/settings.py:23 +msgctxt "settype:locale|accepts" +msgid "Enter a supported language (e.g. 'en-GB')." +msgstr "" + +#: src/babel/settings.py:34 +msgctxt "settype:locale|summary_table|field:supported|key" +msgid "Supported" +msgstr "" + +#: src/babel/settings.py:44 +msgctxt "settype:locale|formatted:unset" +msgid "Unset" +msgstr "" + +#: src/babel/settings.py:60 +#, possible-python-brace-format +msgctxt "settype:locale|error" +msgid "Sorry, we do not support the language `{lang}` at this time!" +msgstr "" + +#: src/babel/settings.py:75 +msgctxt "userset:locale" +msgid "language" +msgstr "" + +#: src/babel/settings.py:76 +msgctxt "userset:locale|desc" +msgid "Your preferred language for interacting with me." +msgstr "" + +#: src/babel/settings.py:79 +msgctxt "userset:locale|long_desc" +msgid "" +"The language you would prefer me to respond to commands and interactions in. " +"Servers may be configured to override this with their own language." +msgstr "" + +#: src/babel/settings.py:90 +msgctxt "userset:locale|response" +msgid "You have unset your language." +msgstr "" + +#: src/babel/settings.py:92 +#, possible-python-brace-format +msgctxt "userset:locale|response" +msgid "You have set your language to {lang}." +msgstr "" + +#: src/babel/settings.py:110 +msgctxt "guildset:force_locale" +msgid "force_language" +msgstr "" + +#: src/babel/settings.py:112 +msgctxt "guildset:force_locale|desc" +msgid "" +"Whether to force all members to use the configured guild language when " +"interacting with me." +msgstr "" + +#: src/babel/settings.py:115 +msgctxt "guildset:force_locale|long_desc" +msgid "" +"When enabled, commands in this guild will always use the configured guild " +"language, regardless of the member's personally configured language." +msgstr "" + +#: src/babel/settings.py:119 +msgctxt "guildset:force_locale|output" +msgid "Enabled (members will be forced to use the server language)" +msgstr "" + +#: src/babel/settings.py:120 +msgctxt "guildset:force_locale|output" +msgid "Disabled (members may set their own language)" +msgstr "" + +#: src/babel/settings.py:134 +msgctxt "guildset:force_locale|response" +msgid "I will always use the set language in this server." +msgstr "" + +#: src/babel/settings.py:139 +msgctxt "guildset:force_locale|response" +msgid "I will now allow the members to set their own language here." +msgstr "" + +#: src/babel/settings.py:156 +msgctxt "guildset:locale" +msgid "language" +msgstr "" + +#: src/babel/settings.py:157 +msgctxt "guildset:locale|desc" +msgid "Your preferred language for interacting with me." +msgstr "" + +#: src/babel/settings.py:160 +msgctxt "guildset:locale|long_desc" +msgid "" +"The default language to use for responses and interactions in this server. " +"Member's own configured language will override this for their commands " +"unless `force_language` is enabled." +msgstr "" + +#: src/babel/settings.py:172 +msgctxt "guildset:locale|response" +msgid "You have unset the guild language." +msgstr "" + +#: src/babel/settings.py:174 +#, possible-python-brace-format +msgctxt "guildset:locale|response" +msgid "You have set the guild language to {lang}." +msgstr "" + +#: src/babel/enums.py:41 +msgctxt "localenames|locale:en-US" +msgid "American English" +msgstr "" + +#: src/babel/enums.py:42 +msgctxt "localenames|locale:en-GB" +msgid "British English" +msgstr "" + +#: src/babel/enums.py:43 +msgctxt "localenames|locale:bg" +msgid "Bulgarian" +msgstr "" + +#: src/babel/enums.py:44 +msgctxt "localenames|locale:zh-CN" +msgid "Chinese" +msgstr "" + +#: src/babel/enums.py:45 +msgctxt "localenames|locale:zh-TW" +msgid "Taiwan Chinese" +msgstr "" + +#: src/babel/enums.py:46 +msgctxt "localenames|locale:hr" +msgid "Croatian" +msgstr "" + +#: src/babel/enums.py:47 +msgctxt "localenames|locale:cs" +msgid "Czech" +msgstr "" + +#: src/babel/enums.py:48 +msgctxt "localenames|locale:da" +msgid "Danish" +msgstr "" + +#: src/babel/enums.py:49 +msgctxt "localenames|locale:nl" +msgid "Dutch" +msgstr "" + +#: src/babel/enums.py:50 +msgctxt "localenames|locale:fi" +msgid "Finnish" +msgstr "" + +#: src/babel/enums.py:51 +msgctxt "localenames|locale:fr" +msgid "French" +msgstr "" + +#: src/babel/enums.py:52 +msgctxt "localenames|locale:de" +msgid "German" +msgstr "" + +#: src/babel/enums.py:53 +msgctxt "localenames|locale:el" +msgid "Greek" +msgstr "" + +#: src/babel/enums.py:54 +msgctxt "localenames|locale:hi" +msgid "Hindi" +msgstr "" + +#: src/babel/enums.py:55 +msgctxt "localenames|locale:hu" +msgid "Hungarian" +msgstr "" + +#: src/babel/enums.py:56 +msgctxt "localenames|locale:it" +msgid "Italian" +msgstr "" + +#: src/babel/enums.py:57 +msgctxt "localenames|locale:ja" +msgid "Japanese" +msgstr "" + +#: src/babel/enums.py:58 +msgctxt "localenames|locale:ko" +msgid "Korean" +msgstr "" + +#: src/babel/enums.py:59 +msgctxt "localenames|locale:lt" +msgid "Lithuanian" +msgstr "" + +#: src/babel/enums.py:60 +msgctxt "localenames|locale:no" +msgid "Norwegian" +msgstr "" + +#: src/babel/enums.py:61 +msgctxt "localenames|locale:pl" +msgid "Polish" +msgstr "" + +#: src/babel/enums.py:62 +msgctxt "localenames|locale:pt-BR" +msgid "Brazil Portuguese" +msgstr "" + +#: src/babel/enums.py:63 +msgctxt "localenames|locale:ro" +msgid "Romanian" +msgstr "" + +#: src/babel/enums.py:64 +msgctxt "localenames|locale:ru" +msgid "Russian" +msgstr "" + +#: src/babel/enums.py:65 +msgctxt "localenames|locale:es-ES" +msgid "Spain Spanish" +msgstr "" + +#: src/babel/enums.py:66 +msgctxt "localenames|locale:sv-SE" +msgid "Swedish" +msgstr "" + +#: src/babel/enums.py:67 +msgctxt "localenames|locale:th" +msgid "Thai" +msgstr "" + +#: src/babel/enums.py:68 +msgctxt "localenames|locale:tr" +msgid "Turkish" +msgstr "" + +#: src/babel/enums.py:69 +msgctxt "localenames|locale:uk" +msgid "Ukrainian" +msgstr "" + +#: src/babel/enums.py:70 +msgctxt "localenames|locale:vi" +msgid "Vietnamese" +msgstr "" diff --git a/locales/templates/base.pot b/locales/templates/base.pot new file mode 100644 index 00000000..4917316f --- /dev/null +++ b/locales/templates/base.pot @@ -0,0 +1,34 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-11-22 13:17+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: bot/modules/sysadmin/exec_cog.py:70 +msgid "You cannot use this interface!" +msgstr "" + +#: bot/modules/sysadmin/exec_cog.py:252 bot/modules/sysadmin/exec_cog.py:254 +msgid "async" +msgstr "" + +#: bot/modules/sysadmin/exec_cog.py:253 bot/modules/sysadmin/exec_cog.py:255 +msgid "Execute arbitrary code with Exec" +msgstr "" + +#: bot/modules/sysadmin/exec_cog.py:265 +msgid "eval" +msgstr "" diff --git a/locales/templates/config.pot b/locales/templates/config.pot new file mode 100644 index 00000000..903155a0 --- /dev/null +++ b/locales/templates/config.pot @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/config/general.py:41 +msgctxt "guildset:timezone" +msgid "timezone" +msgstr "" + +#: src/modules/config/general.py:44 +msgctxt "guildset:timezone|desc" +msgid "Guild timezone for statistics display." +msgstr "" + +#: src/modules/config/general.py:48 +msgctxt "guildset:timezone|long_desc" +msgid "" +"Guild-wide timezone. Used to determine start of the day for the " +"leaderboards, and as the default statistics timezone for members who have " +"not set one." +msgstr "" + +#: src/modules/config/general.py:62 +#, possible-python-brace-format +msgctxt "guildset:timezone|response" +msgid "The guild timezone has been set to `{timezone}`." +msgstr "" + +#: src/modules/config/general.py:94 +msgctxt "cmd:configure_general" +msgid "general" +msgstr "" + +#: src/modules/config/general.py:95 +msgctxt "cmd:configure_general|desc" +msgid "General configuration panel" +msgstr "" + +#: src/modules/config/general.py:129 +msgctxt "cmd:configure_general|parse_failure:timezone" +msgid "Could not set the timezone!" +msgstr "" + +#: src/modules/config/general.py:150 +msgctxt "cmd:configure_general|success" +msgid "Settings Updated!" +msgstr "" + +#: src/modules/config/general.py:165 +msgctxt "cmd:configure_general|panel|title" +msgid "General Configuration Panel" +msgstr "" + +#: src/modules/config/dashboard.py:144 +msgctxt "ui:dashboard|menu:config|placeholder" +msgid "Open Configuration Panel" +msgstr "" diff --git a/locales/templates/core_config.pot b/locales/templates/core_config.pot new file mode 100644 index 00000000..2a3877f8 --- /dev/null +++ b/locales/templates/core_config.pot @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/core/config.py:28 +msgctxt "group:configure" +msgid "configure" +msgstr "" diff --git a/locales/templates/economy.pot b/locales/templates/economy.pot new file mode 100644 index 00000000..b5426ca5 --- /dev/null +++ b/locales/templates/economy.pot @@ -0,0 +1,500 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: src/modules/economy/settingui.py:33 +msgctxt "ui:economy_config|embed|title" +msgid "Economy Configuration Panel" +msgstr "" + +#: src/modules/economy/settingui.py:68 +msgctxt "dash:economy|title" +msgid "Economy Configuration ({commands[configure economy]})" +msgstr "" + +#. ----- Economy group commands ----- +#: src/modules/economy/cog.py:85 +msgctxt "cmd:economy" +msgid "economy" +msgstr "" + +#: src/modules/economy/cog.py:91 +msgctxt "cmd:economy_balance" +msgid "balance" +msgstr "" + +#: src/modules/economy/cog.py:94 +msgctxt "cmd:economy_balance|desc" +msgid "Display and modify LionCoin balance for members or roles." +msgstr "" + +#: src/modules/economy/cog.py:98 +msgctxt "cmd:economy_balance|param:target" +msgid "target" +msgstr "" + +#: src/modules/economy/cog.py:99 +msgctxt "cmd:economy_balance|param:add" +msgid "add" +msgstr "" + +#: src/modules/economy/cog.py:100 +msgctxt "cmd:economy_balance|param:set" +msgid "set" +msgstr "" + +#: src/modules/economy/cog.py:105 +msgctxt "cmd:economy_balance|param:target|desc" +msgid "" +"Target user or role to view or update. Use @everyone to update the entire " +"guild." +msgstr "" + +#: src/modules/economy/cog.py:109 +msgctxt "cmd:economy_balance|param:add|desc" +msgid "" +"Number of LionCoins to add to the target member's balance. May be negative " +"to remove." +msgstr "" + +#: src/modules/economy/cog.py:113 +msgctxt "cmd:economy_balance|param:set|set" +msgid "New balance to set the target's balance to." +msgstr "" + +#: src/modules/economy/cog.py:150 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|error:no_target" +msgid "There are no valid members in {role.mention}! It has a total of `0` LC." +msgstr "" + +#: src/modules/economy/cog.py:161 +msgctxt "cmd:economy_balance|error:target_is_bot" +msgid "Bots cannot have coin balances!" +msgstr "" + +#: src/modules/economy/cog.py:172 +msgctxt "cmd:economy_balance|error:args" +msgid "You cannot simultaneously `set` and `add` member balances!" +msgstr "" + +#: src/modules/economy/cog.py:217 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:success|affected" +msgid "One user was affected." +msgid_plural "**{count}** users were affected." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/economy/cog.py:223 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|confirm|affected" +msgid "One user will be affected." +msgid_plural "**{count}** users will be affected." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/economy/cog.py:230 +msgctxt "cmd:economy_balance|confirm|button:confirm" +msgid "Yes, adjust balances" +msgstr "" + +#: src/modules/economy/cog.py:234 +msgctxt "cmd:economy_balance|confirm|button:cancel" +msgid "No, cancel" +msgstr "" + +#: src/modules/economy/cog.py:241 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:success_set|desc" +msgid "" +"All members of **{guild_name}** have had their balance set to {coin_emoji}" +"**{amount}**." +msgstr "" + +#: src/modules/economy/cog.py:250 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|confirm_set|desc" +msgid "" +"Are you sure you want to set everyone's balance to {coin_emoji}**{amount}**?" +msgstr "" + +#: src/modules/economy/cog.py:258 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:success_set|desc" +msgid "" +"All members of {role_mention} have had their balance set to {coin_emoji}" +"**{amount}**." +msgstr "" + +#: src/modules/economy/cog.py:267 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|confirm_set|desc" +msgid "" +"Are you sure you want to set the balance of everyone with {role_mention} to " +"{coin_emoji}**{amount}**?" +msgstr "" + +#: src/modules/economy/cog.py:284 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:success_set|desc" +msgid "{user_mention} now has a balance of {coin_emoji}**{amount}**." +msgstr "" + +#: src/modules/economy/cog.py:300 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:success_add|desc" +msgid "" +"All members of **{guild_name}** have been given {coin_emoji}**{amount}**." +msgstr "" + +#: src/modules/economy/cog.py:309 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|confirm_add|desc" +msgid "Are you sure you want to add **{amount}** to everyone's balance?" +msgstr "" + +#: src/modules/economy/cog.py:317 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:success_add|desc" +msgid "All members of {role_mention} have been given {coin_emoji}**{amount}**." +msgstr "" + +#: src/modules/economy/cog.py:326 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|confirm_add|desc" +msgid "" +"Are you sure you want to add {coin_emoji}**{amount}** to everyone in " +"{role_mention}?" +msgstr "" + +#: src/modules/economy/cog.py:348 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:success_add|desc" +msgid "" +"{user_mention} was given {coin_emoji}**{amount}**, and now has a balance of " +"{coin_emoji}**{new_amount}**." +msgstr "" + +#: src/modules/economy/cog.py:359 +msgctxt "cmd:economy_balance|embed:success|title" +msgid "Account successfully updated." +msgid_plural "Accounts successfully updated." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/economy/cog.py:387 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:role_lb|author" +msgid "Balance sheet for {name}" +msgstr "" + +#: src/modules/economy/cog.py:393 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:role_lb|header" +msgid "This server has a total balance of {coin_emoji}**{total}**." +msgstr "" + +#: src/modules/economy/cog.py:401 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:role_lb|header" +msgid "" +"{role_mention} has `{count}` members with non-zero balance, with a total " +"balance of {coin_emoji}**{total}**." +msgstr "" + +#: src/modules/economy/cog.py:413 +msgctxt "cmd:economy_balance|embed:role_lb|row_format" +msgid "`[{pos:>{numwidth}}]` | `{coins:>{coinwidth}} LC` | {mention}" +msgstr "" + +#: src/modules/economy/cog.py:441 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:role_lb|footer" +msgid "Page {page}/{total}" +msgstr "" + +#: src/modules/economy/cog.py:451 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:role_lb|header" +msgid "This server has a total balance of {coin_emoji}**0**." +msgstr "" + +#: src/modules/economy/cog.py:458 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:role_lb|header" +msgid "The role {role_mention} has a total balance of {coin_emoji}**0**." +msgstr "" + +#: src/modules/economy/cog.py:478 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:single|desc" +msgid "{mention} currently owns {coin_emoji} {coins}." +msgstr "" + +#: src/modules/economy/cog.py:488 +#, possible-python-brace-format +msgctxt "cmd:economy_balance|embed:single|author" +msgid "Balance statement for {user}" +msgstr "" + +#: src/modules/economy/cog.py:497 +msgctxt "cmd:economy_reset" +msgid "reset" +msgstr "" + +#: src/modules/economy/cog.py:500 +msgctxt "cmd:economy_reset|desc" +msgid "" +"Reset the coin balance for a target user or role. (See also \"economy " +"balance\".)" +msgstr "" + +#: src/modules/economy/cog.py:504 +msgctxt "cmd:economy_reset|param:target" +msgid "target" +msgstr "" + +#: src/modules/economy/cog.py:509 +msgctxt "cmd:economy_reset|param:target|desc" +msgid "" +"Target user or role to view or update. Use @everyone to reset the entire " +"guild." +msgstr "" + +#: src/modules/economy/cog.py:535 +#, possible-python-brace-format +msgctxt "cmd:economy_reset|confirm:reset_guild|desc" +msgid "" +"Are you sure you want to reset the coin balance for everyone in " +"**{guild_name}**?\n" +"*This is not reversible!*" +msgstr "" + +#: src/modules/economy/cog.py:543 +msgctxt "cmd:economy_reset|confirm:reset_guild|button:confirm" +msgid "Yes, reset the economy" +msgstr "" + +#: src/modules/economy/cog.py:547 +msgctxt "cmd:economy_reset|confirm:reset_guild|button:cancel" +msgid "Cancel reset" +msgstr "" + +#: src/modules/economy/cog.py:563 +#, possible-python-brace-format +msgctxt "cmd:economy_reset|embed:success_guild|desc" +msgid "" +"Everyone in **{guild_name}** has had their balance reset to {coin_emoji}" +"**{amount}**." +msgstr "" + +#: src/modules/economy/cog.py:580 +#, possible-python-brace-format +msgctxt "cmd:economy_reset|error:no_target|desc" +msgid "The role {mention} has no members to reset!" +msgstr "" + +#: src/modules/economy/cog.py:590 +#, possible-python-brace-format +msgctxt "cmd:economy_reset|confirm:reset_role|desc" +msgid "" +"Are you sure you want to reset the balance for everyone in {mention}?\n" +"**{count}** members will be affected." +msgstr "" + +#: src/modules/economy/cog.py:599 +msgctxt "cmd:economy_reset|confirm:reset_role|button:confirm" +msgid "Yes, complete economy reset" +msgstr "" + +#: src/modules/economy/cog.py:603 +msgctxt "cmd:economy_reset|confirm:reset_role|button:cancel" +msgid "Cancel" +msgstr "" + +#: src/modules/economy/cog.py:620 +#, possible-python-brace-format +msgctxt "cmd:economy_reset|embed:success_role|desc" +msgid "" +"Everyone in {role_mention} has had their coin balance reset to {coin_emoji}" +"**{amount}**." +msgstr "" + +#: src/modules/economy/cog.py:642 +#, possible-python-brace-format +msgctxt "cmd:economy_reset|embed:success_user|desc" +msgid "{mention}'s balance has been reset to {coin_emoji}**{amount}**." +msgstr "" + +#: src/modules/economy/cog.py:652 +msgctxt "cmd:send" +msgid "send" +msgstr "" + +#: src/modules/economy/cog.py:655 +msgctxt "cmd:send|desc" +msgid "Gift the target user a certain number of LionCoins." +msgstr "" + +#: src/modules/economy/cog.py:659 +msgctxt "cmd:send|param:target" +msgid "target" +msgstr "" + +#: src/modules/economy/cog.py:660 +msgctxt "cmd:send|param:amount" +msgid "amount" +msgstr "" + +#: src/modules/economy/cog.py:661 +msgctxt "cmd:send|param:note" +msgid "note" +msgstr "" + +#: src/modules/economy/cog.py:664 +msgctxt "cmd:send|param:target|desc" +msgid "User to send the gift to" +msgstr "" + +#: src/modules/economy/cog.py:665 +msgctxt "cmd:send|param:amount|desc" +msgid "Number of coins to send" +msgstr "" + +#: src/modules/economy/cog.py:666 +msgctxt "cmd:send|param:note|desc" +msgid "Optional note to add to the gift." +msgstr "" + +#: src/modules/economy/cog.py:690 +msgctxt "cmd:send|error:not_allowed" +msgid "Sorry, this server has disabled LionCoin transfers!" +msgstr "" + +#: src/modules/economy/cog.py:713 +#, possible-python-brace-format +msgctxt "cmd:send|error:insufficient" +msgid "" +"You do not have enough lioncoins to do this!\n" +"`Current Balance:` {coin_emoji}{balance}" +msgstr "" + +#: src/modules/economy/cog.py:733 +#, possible-python-brace-format +msgctxt "cmd:send|embed:gift|title" +msgid "{user} sent you a gift!" +msgstr "" + +#: src/modules/economy/cog.py:737 +#, possible-python-brace-format +msgctxt "cmd:send|embed:gift|desc" +msgid "{mention} sent you {coin_emoji}**{amount}**." +msgstr "" + +#: src/modules/economy/cog.py:762 +#, possible-python-brace-format +msgctxt "cmd:send|embed:ack|desc" +msgid "" +"**{coin_emoji}{amount}** has been deducted from your balance and sent to " +"{mention}!" +msgstr "" + +#: src/modules/economy/cog.py:772 +msgctxt "cmd:send|embed:ack|desc|error:unreachable" +msgid "" +"Unfortunately, I was not able to message the recipient. Perhaps they have me " +"blocked?" +msgstr "" + +#: src/modules/economy/cog.py:784 +msgctxt "cmd:configure_economy" +msgid "economy" +msgstr "" + +#: src/modules/economy/cog.py:787 +msgctxt "cmd:configure_economy|desc" +msgid "Configure LionCoin Economy" +msgstr "" + +#: src/modules/economy/settings.py:35 +msgctxt "guildset:coins_per_xp" +msgid "coins_per_100xp" +msgstr "" + +#: src/modules/economy/settings.py:38 +msgctxt "guildset:coins_per_xp|desc" +msgid "How many LionCoins to reward members per 100 XP they earn." +msgstr "" + +#: src/modules/economy/settings.py:42 +msgctxt "guildset:coins_per_xp|long_desc" +msgid "" +"Members will be rewarded with this many LionCoins for every 100 XP they earn." +msgstr "" + +#: src/modules/economy/settings.py:46 +msgctxt "guildset:coins_per_xp|long_desc" +msgid "The number of coins to reward per 100 XP." +msgstr "" + +#: src/modules/economy/settings.py:59 +#, possible-python-brace-format +msgctxt "guildset:coins_per_xp|set_response" +msgid "" +"For every **100** XP they earn, members will now be given {coin}**{amount}**." +msgstr "" + +#: src/modules/economy/settings.py:70 +msgctxt "guildset:allow_transfers" +msgid "allow_transfers" +msgstr "" + +#: src/modules/economy/settings.py:73 +msgctxt "guildset:allow_transfers|desc" +msgid "Whether to allow members to transfer LionCoins to each other." +msgstr "" + +#: src/modules/economy/settings.py:77 +msgctxt "guildset:allow_transfers|long_desc" +msgid "" +"If disabled, members will not be able to transfer LionCoins to each other." +msgstr "" + +#: src/modules/economy/settings.py:85 +msgctxt "guildset:allow_transfers|outputs:true" +msgid "Enabled (Coin transfers allowed.)" +msgstr "" + +#: src/modules/economy/settings.py:86 +msgctxt "guildset:allow_transfers|outputs:false" +msgid "Disabled (Coin transfers not allowed.)" +msgstr "" + +#: src/modules/economy/settings.py:102 +#, possible-python-brace-format +msgctxt "guildset:allow_transfers|set_response|set:true" +msgid "Members will now be able to use {send_cmd} to transfer {coin}" +msgstr "" + +#: src/modules/economy/settings.py:107 +#, possible-python-brace-format +msgctxt "guildset:allow_transfers|set_response|set:false" +msgid "Members will not be able to use {send_cmd} to transfer {coin}" +msgstr "" diff --git a/locales/templates/exec.pot b/locales/templates/exec.pot new file mode 100644 index 00000000..f8d4a745 --- /dev/null +++ b/locales/templates/exec.pot @@ -0,0 +1,81 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/sysadmin/exec_cog.py:252 +msgid "async" +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:253 +msgid "Execute arbitrary code with Exec" +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:262 +msgctxt "command" +msgid "eval" +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:263 +msgctxt "command:eval" +msgid "Execute arbitrary code with Eval" +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:266 +msgctxt "command:eval|param:string" +msgid "Code to evaluate." +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:273 +msgctxt "command" +msgid "asyncall" +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:274 +msgctxt "command:asyncall|desc" +msgid "Execute arbitrary code on all shards." +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:277 +msgctxt "command:asyncall|param:string" +msgid "Cross-shard code to execute. Cannot reference ctx!" +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:278 +msgctxt "command:asyncall|param:target" +msgid "Target shard app name, see autocomplete for options." +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:333 +msgid "reload" +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:334 +msgid "Reload a given LionBot extension. Launches an ExecUI." +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:337 +msgid "Name of the extesion to reload. See autocomplete for options." +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:369 +msgid "shutdown" +msgstr "" + +#: src/modules/sysadmin/exec_cog.py:370 +msgid "Shutdown (or restart) the client." +msgstr "" diff --git a/locales/templates/goals-gui.pot b/locales/templates/goals-gui.pot new file mode 100644 index 00000000..7e9bff6d --- /dev/null +++ b/locales/templates/goals-gui.pot @@ -0,0 +1,101 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/gui/cards/goals.py:95 +msgctxt "skin:goals|goal:tasks|name" +msgid "TASKS DONE" +msgstr "" + +#: src/gui/cards/goals.py:99 +msgctxt "skin:goals|goal:tasks|goal" +msgid "GOAL: " +msgstr "" + +#: src/gui/cards/goals.py:125 +msgctxt "skin:goals|goal:attendance|name" +msgid "" +"ATTENDANCE\n" +"RATE" +msgstr "" + +#: src/gui/cards/goals.py:139 +msgctxt "skin:goals|mode:study|goal:middle|above" +msgid "STUDIED" +msgstr "" + +#: src/gui/cards/goals.py:143 +msgctxt "skin:goals|mode:study|goal:middle|below" +msgid "HOURS" +msgstr "" + +#: src/gui/cards/goals.py:147 +msgctxt "skin:goals|mode:voice|goal:middle|above" +msgid "CHATTED" +msgstr "" + +#: src/gui/cards/goals.py:151 +msgctxt "skin:goals|mode:voice|goal:middle|below" +msgid "HOURS" +msgstr "" + +#: src/gui/cards/goals.py:155 +msgctxt "skin:goals|mode:text|goal:middle|above" +msgid "SENT" +msgstr "" + +#: src/gui/cards/goals.py:159 +msgctxt "skin:goals|mode:text|goal:middle|below" +msgid "MESSAGES" +msgstr "" + +#: src/gui/cards/goals.py:163 +msgctxt "skin:goals|mode:anki|goal:middle|above" +msgid "REVIEWED" +msgstr "" + +#: src/gui/cards/goals.py:167 +msgctxt "skin:goals|mode:anki|goal:middle|below" +msgid "CARDS" +msgstr "" + +#: src/gui/cards/goals.py:228 +#, possible-python-brace-format +msgctxt "skin:goals|footer" +msgid "As of {day} {month} • {name}" +msgstr "" + +#: src/gui/cards/goals.py:240 +msgctxt "ui:goals|weekly|title" +msgid "WEEKLY STATISTICS" +msgstr "" + +#: src/gui/cards/goals.py:244 +msgctxt "ui:goals|weekly|task_header" +msgid "GOALS OF THE WEEK" +msgstr "" + +#: src/gui/cards/goals.py:254 +msgctxt "ui:goals|monthly|title" +msgid "MONTHLY STATISTICS" +msgstr "" + +#: src/gui/cards/goals.py:258 +msgctxt "ui:goals|monthly|task_header" +msgid "GOALS OF THE MONTH" +msgstr "" diff --git a/locales/templates/leaderboard-gui.pot b/locales/templates/leaderboard-gui.pot new file mode 100644 index 00000000..a5d16fdb --- /dev/null +++ b/locales/templates/leaderboard-gui.pot @@ -0,0 +1,91 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/gui/cards/leaderboard.py:69 +msgctxt "skin:leaderboard|mode:study|header_text" +msgid "STUDY TIME LEADERBOARD" +msgstr "" + +#: src/gui/cards/leaderboard.py:73 +msgctxt "skin:leaderboard|mode:text|header_text" +msgid "MESSAGE LEADERBOARD" +msgstr "" + +#: src/gui/cards/leaderboard.py:77 +msgctxt "skin:leaderboard|mode:voice|header_text" +msgid "VOICE LEADERBOARD" +msgstr "" + +#: src/gui/cards/leaderboard.py:81 +msgctxt "skin:leaderboard|mode:anki|header_text" +msgid "ANKI REVIEW LEADERBOARD" +msgstr "" + +#: src/gui/cards/leaderboard.py:99 +msgctxt "skin:leaderboard|field:subheader_text" +msgid "SERVER: " +msgstr "" + +#: src/gui/cards/leaderboard.py:129 +#, possible-python-brace-format +msgctxt "skin:leaderboard|mode:study|top_hours_text" +msgid "{amount} hours" +msgstr "" + +#: src/gui/cards/leaderboard.py:133 +#, possible-python-brace-format +msgctxt "skin:leaderboard|mode:text|top_hours_text" +msgid "{amount} XP" +msgstr "" + +#: src/gui/cards/leaderboard.py:137 +#, possible-python-brace-format +msgctxt "skin:leaderboard|mode:voice|top_hours_text" +msgid "{amount} hours" +msgstr "" + +#: src/gui/cards/leaderboard.py:141 +#, possible-python-brace-format +msgctxt "skin:leaderboard|mode:anki|top_hours_text" +msgid "{amount} cards" +msgstr "" + +#: src/gui/cards/leaderboard.py:168 +#, possible-python-brace-format +msgctxt "skin:leaderboard|mode:study|entry_hours_text" +msgid "{HH:.02d}:{MM:.02d}" +msgstr "" + +#: src/gui/cards/leaderboard.py:172 +#, possible-python-brace-format +msgctxt "skin:leaderboard|mode:text|entry_hours_text" +msgid "{amount} XP" +msgstr "" + +#: src/gui/cards/leaderboard.py:176 +#, possible-python-brace-format +msgctxt "skin:leaderboard|mode:voice|entry_hours_text" +msgid "{HH}:{MM}" +msgstr "" + +#: src/gui/cards/leaderboard.py:180 +#, possible-python-brace-format +msgctxt "skin:leaderboard|mode:anki|entry_hours_text" +msgid "{amount} cards" +msgstr "" diff --git a/locales/templates/lion-core.pot b/locales/templates/lion-core.pot new file mode 100644 index 00000000..a65714df --- /dev/null +++ b/locales/templates/lion-core.pot @@ -0,0 +1,122 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/core/setting_types.py:31 +msgctxt "settype:coin|accepts" +msgid "A positive integral number of coins." +msgstr "" + +#: src/core/setting_types.py:47 +msgctxt "settype:coin|parse|error:notinteger" +msgid "The coin quantity must be a positive integer!" +msgstr "" + +#: src/core/setting_types.py:54 +msgctxt "settype:coin|parse|error:too_large" +msgid "Provided number of coins was too high!" +msgstr "" + +#: src/core/setting_types.py:60 +msgctxt "settype:coin|parse|error:too_large" +msgid "Provided number of coins was too low!" +msgstr "" + +#: src/core/setting_types.py:71 +#, possible-python-brace-format +msgctxt "settype:coin|formatted" +msgid "{coin}**{amount}**" +msgstr "" + +#: src/core/setting_types.py:87 +msgctxt "settype:message|accepts" +msgid "JSON formatted raw message data" +msgstr "" + +#: src/core/setting_types.py:102 +msgctxt "settype:message|download|error:not_json" +msgid "The attached message data is not a JSON file!" +msgstr "" + +#: src/core/setting_types.py:107 +msgctxt "settype:message|download|error:size" +msgid "The attached message data is too large!" +msgstr "" + +#: src/core/setting_types.py:116 +msgctxt "settype:message|download|error:decoding" +msgid "" +"Could not decode the message data. Please ensure it is saved with the " +"`UTF-8` encoding." +msgstr "" + +#: src/core/setting_types.py:173 +#, possible-python-brace-format +msgctxt "settype:message|error_suffix" +msgid "" +"You can view, test, and fix your embed using the online [embed builder]" +"({link})." +msgstr "" + +#: src/core/setting_types.py:185 +#, possible-python-brace-format +msgctxt "settype:message|error:invalid_json" +msgid "" +"The provided message data was not a valid JSON document!\n" +"`{error}`" +msgstr "" + +#: src/core/setting_types.py:193 +msgctxt "settype:message|error:json_missing_keys" +msgid "" +"Message data must be a JSON object with at least one of the following " +"fields: `content`, `embed`, `embeds`" +msgstr "" + +#: src/core/setting_types.py:202 +msgctxt "settype:message|error:json_embed_type" +msgid "`embed` field must be a valid JSON object." +msgstr "" + +#: src/core/setting_types.py:210 +msgctxt "settype:message|error:json_embeds_type" +msgid "`embeds` field must be a list." +msgstr "" + +#: src/core/setting_types.py:217 +msgctxt "settype:message|error:json_embed_embeds" +msgid "Message data cannot include both `embed` and `embeds`." +msgstr "" + +#: src/core/setting_types.py:225 +msgctxt "settype:message|error:json_content_type" +msgid "`content` field must be a string." +msgstr "" + +#: src/core/setting_types.py:241 +#, possible-python-brace-format +msgctxt "ui:settype:message|error:embed_conversion" +msgid "" +"Could not parse the message embed data.\n" +"**Error:** `{exception}`" +msgstr "" + +#: src/core/setting_types.py:269 +msgctxt "settype:message|format:too_long" +msgid "Too long to display! See Preview." +msgstr "" diff --git a/locales/templates/member_admin.pot b/locales/templates/member_admin.pot new file mode 100644 index 00000000..0300cec7 --- /dev/null +++ b/locales/templates/member_admin.pot @@ -0,0 +1,382 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/member_admin/settingui.py:57 +msgctxt "ui:memberadmin|menu:greetch|placeholder" +msgid "Select Greeting Channel" +msgstr "" + +#: src/modules/member_admin/settingui.py:86 +msgctxt "ui:memberadmin|menu:autoroles|placeholder" +msgid "Select Autoroles" +msgstr "" + +#: src/modules/member_admin/settingui.py:115 +msgctxt "ui:memberadmin|menu:bot_autoroles|placeholder" +msgid "Select Bot Autoroles" +msgstr "" + +#: src/modules/member_admin/settingui.py:156 +msgctxt "ui:member_admin|button:greet_msg|label" +msgid "Greeting Msg" +msgstr "" + +#: src/modules/member_admin/settingui.py:205 +msgctxt "ui:memberadmin|button:return_msg|label" +msgid "Returning Msg" +msgstr "" + +#: src/modules/member_admin/settingui.py:213 +msgctxt "ui:memberadmin|embed|title" +msgid "Member Admin Configuration Panel" +msgstr "" + +#: src/modules/member_admin/settingui.py:257 +msgctxt "dash:member_admin|title" +msgid "Greetings and Initial Roles ({commands[configure welcome]})" +msgstr "" + +#: src/modules/member_admin/settingui.py:261 +msgctxt "dash:member_admin|dropdown|placeholder" +msgid "Greetings and Initial Roles Panel" +msgstr "" + +#: src/modules/member_admin/cog.py:233 +msgctxt "cmd:resetmember" +msgid "resetmember" +msgstr "" + +#: src/modules/member_admin/cog.py:236 +msgctxt "cmd:resetmember|desc" +msgid "Reset (server-associated) member data for the target member or user." +msgstr "" + +#: src/modules/member_admin/cog.py:240 +msgctxt "cmd:resetmember|param:target" +msgid "member_to_reset" +msgstr "" + +#: src/modules/member_admin/cog.py:241 +msgctxt "cmd:resetmember|param:saved_roles" +msgid "saved_roles" +msgstr "" + +#: src/modules/member_admin/cog.py:246 +msgctxt "cmd:resetmember|param:target|desc" +msgid "Choose the member (current or past) you want to reset." +msgstr "" + +#: src/modules/member_admin/cog.py:250 +msgctxt "cmd:resetmember|param:saved_roles|desc" +msgid "" +"Clear the saved roles for this member, so their past roles are not restored " +"on rejoin." +msgstr "" + +#: src/modules/member_admin/cog.py:276 +#, possible-python-brace-format +msgctxt "cmd:resetmember|reset:saved_roles|success" +msgid "" +"The saved roles for {target} have been reset. They will not regain their " +"roles if they rejoin." +msgstr "" + +#: src/modules/member_admin/cog.py:284 +msgctxt "cmd:resetmember|error:nothing_to_do" +msgid "No reset operation selected, nothing to do." +msgstr "" + +#: src/modules/member_admin/cog.py:300 +msgctxt "cmd:configure_welcome" +msgid "welcome" +msgstr "" + +#: src/modules/member_admin/cog.py:303 +msgctxt "cmd:configure_welcome|desc" +msgid "Configure new member greetings and roles." +msgstr "" + +#: src/modules/member_admin/settings.py:20 +msgctxt "guildset:greeting_message|formatkey:mention" +msgid "Mention the new member." +msgstr "" + +#: src/modules/member_admin/settings.py:22 +msgctxt "guildset:greeting_message|formatkey:user_name" +msgid "Display name of the new member." +msgstr "" + +#: src/modules/member_admin/settings.py:24 +msgctxt "guildset:greeting_message|formatkey:user_avatar" +msgid "Avatar url of the new member." +msgstr "" + +#: src/modules/member_admin/settings.py:26 +msgctxt "guildset:greeting_message|formatkey:guild_name" +msgid "Name of this server." +msgstr "" + +#: src/modules/member_admin/settings.py:28 +msgctxt "guildset:greeting_message|formatkey:guild_icon" +msgid "Server icon url." +msgstr "" + +#: src/modules/member_admin/settings.py:30 +msgctxt "guildset:greeting_message|formatkey:studying_count" +msgid "Number of current voice channel members." +msgstr "" + +#: src/modules/member_admin/settings.py:32 +msgctxt "guildset:greeting_message|formatkey:member_count" +msgid "Number of members in the server." +msgstr "" + +#: src/modules/member_admin/settings.py:40 +msgctxt "guildset:greeting_channel" +msgid "welcome_channel" +msgstr "" + +#: src/modules/member_admin/settings.py:43 +msgctxt "guildset:greeting_channel|desc" +msgid "Channel in which to welcome new members to the server." +msgstr "" + +#: src/modules/member_admin/settings.py:47 +msgctxt "guildset:greeting_channel|long_desc" +msgid "" +"New members will be sent the configured `welcome_message` in this channel, " +"and returning members will be sent the configured `returning_message`. Unset " +"to send these message via direct message." +msgstr "" + +#: src/modules/member_admin/settings.py:53 +msgctxt "guildset:greeting_channel|accepts" +msgid "Name or id of the greeting channel, or 0 for DM." +msgstr "" + +#: src/modules/member_admin/settings.py:67 +msgctxt "guildset:greeting_channel|set_response:unset" +msgid "Welcome messages will now be sent via direct message." +msgstr "" + +#: src/modules/member_admin/settings.py:72 +#, possible-python-brace-format +msgctxt "guildset:greeting_channel|set_response:set" +msgid "Welcome messages will now be sent to {channel}" +msgstr "" + +#: src/modules/member_admin/settings.py:84 +msgctxt "guildset:greeting_channel|formmatted:unset" +msgid "Direct Message" +msgstr "" + +#: src/modules/member_admin/settings.py:91 +msgctxt "guildset:greeting_message" +msgid "welcome_message" +msgstr "" + +#: src/modules/member_admin/settings.py:95 +msgctxt "guildset:greeting_message|desc" +msgid "Custom message used to greet new members when they join the server." +msgstr "" + +#: src/modules/member_admin/settings.py:99 +msgctxt "guildset:greeting_message|long_desc" +msgid "" +"When set, this message will be sent to the `welcome_channel` when a *new* " +"member joins the server. If not set, no message will be sent." +msgstr "" + +#: src/modules/member_admin/settings.py:104 +msgctxt "guildset:greeting_message|accepts" +msgid "JSON formatted greeting message data" +msgstr "" + +#: src/modules/member_admin/settings.py:108 +msgctxt "guildset:greeting_message|default" +msgid "" +"\n" +" {\n" +" \"embed\": {\n" +" \"title\": \"Welcome {user_name}!\",\n" +" \"thumbnail\": {\"url\": \"{user_avatar}\"},\n" +" \"description\": \"Welcome to **{guild_name}**!\",\n" +" \"footer\": {\n" +" \"text\": \"You are the {member_count}th member!\"\n" +" },\n" +" \"color\": 15695665\n" +" }\n" +" }\n" +" " +msgstr "" + +#: src/modules/member_admin/settings.py:136 +msgctxt "guildset:greeting_message|set_response:unset" +msgid "Welcome message unset! New members will not be greeted." +msgstr "" + +#: src/modules/member_admin/settings.py:141 +msgctxt "guildset:greeting_message|set_response:set" +msgid "The welcome message has been updated." +msgstr "" + +#: src/modules/member_admin/settings.py:153 +msgctxt "guildset:greeting_message|formmatted:unset" +msgid "Not set, members will not be welcomed." +msgstr "" + +#: src/modules/member_admin/settings.py:200 +msgctxt "guildset:greeting_message|embed_field|formatkeys|explanation" +msgid "The following placeholders will be substituted with their values." +msgstr "" + +#: src/modules/member_admin/settings.py:203 +msgctxt "guildset:greeting_message|embed_field|formatkeys|name" +msgid "Placeholders" +msgstr "" + +#: src/modules/member_admin/settings.py:213 +msgctxt "guildset:returning_message" +msgid "returning_message" +msgstr "" + +#: src/modules/member_admin/settings.py:217 +msgctxt "guildset:returning_message|desc" +msgid "" +"Custom message used to greet returning members when they rejoin the server." +msgstr "" + +#: src/modules/member_admin/settings.py:221 +msgctxt "guildset:returning_message|long_desc" +msgid "" +"When set, this message will be sent to the `welcome_channel` when a member " +"*returns* to the server. If not set, no message will be sent." +msgstr "" + +#: src/modules/member_admin/settings.py:226 +msgctxt "guildset:returning_message|accepts" +msgid "JSON formatted returning message data" +msgstr "" + +#: src/modules/member_admin/settings.py:230 +msgctxt "guildset:returning_message|default" +msgid "" +"\n" +" {\n" +" \"embed\": {\n" +" \"title\": \"Welcome Back {user_name}!\",\n" +" \"thumbnail\": {\"url\": \"{User_avatar}\"},\n" +" \"description\": \"Welcome back to **{guild_name}**!" +"\\nYou were last seen .\",\n" +" \"color\": 15695665\n" +" }\n" +" }\n" +" " +msgstr "" + +#: src/modules/member_admin/settings.py:247 +msgctxt "guildset:returning_message|formatkey:last_time" +msgid "Unix timestamp of the last time the member was seen in the server." +msgstr "" + +#: src/modules/member_admin/settings.py:258 +msgctxt "guildset:returning_message|set_response:unset" +msgid "Returning member greeting unset! Will use `welcome_message` if set." +msgstr "" + +#: src/modules/member_admin/settings.py:263 +msgctxt "guildset:greeting_message|set_response:set" +msgid "The returning member greeting has been updated." +msgstr "" + +#: src/modules/member_admin/settings.py:275 +msgctxt "guildset:greeting_message|formmatted:unset" +msgid "Not set, will use the `welcome_message` if set." +msgstr "" + +#: src/modules/member_admin/settings.py:325 +msgctxt "guildset:returning_message|embed_field|formatkeys|explanation" +msgid "In *addition* to the placeholders supported by `welcome_message`" +msgstr "" + +#: src/modules/member_admin/settings.py:328 +msgctxt "guildset:returning_message|embed_field|formatkeys|" +msgid "Placeholders" +msgstr "" + +#: src/modules/member_admin/settings.py:339 +msgctxt "guildset:autoroles" +msgid "autoroles" +msgstr "" + +#: src/modules/member_admin/settings.py:343 +msgctxt "guildset:autoroles|desc" +msgid "Roles given to new members when they join the server." +msgstr "" + +#: src/modules/member_admin/settings.py:347 +msgctxt "guildset:autoroles|long_desc" +msgid "" +"These roles will be given when a member joins the server. If " +"`role_persistence` is enabled, these roles will *not* be given to a " +"returning member." +msgstr "" + +#: src/modules/member_admin/settings.py:361 +msgctxt "guildset:bot_autoroles" +msgid "bot_autoroles" +msgstr "" + +#: src/modules/member_admin/settings.py:365 +msgctxt "guildset:bot_autoroles|desc" +msgid "Roles given to new bots when they join the server." +msgstr "" + +#: src/modules/member_admin/settings.py:369 +msgctxt "guildset:bot_autoroles|long_desc" +msgid "These roles will be given when a bot joins the server." +msgstr "" + +#: src/modules/member_admin/settings.py:382 +msgctxt "guildset:role_persistence" +msgid "role_persistence" +msgstr "" + +#: src/modules/member_admin/settings.py:385 +msgctxt "guildset:role_persistence|desc" +msgid "Whether member roles should be restored on rejoin." +msgstr "" + +#: src/modules/member_admin/settings.py:389 +msgctxt "guildset:role_persistence|long_desc" +msgid "" +"If enabled, member roles will be stored when they leave the server, and then " +"restored when they rejoin (instead of giving `autoroles`). Note that this " +"may conflict with other bots who manage join roles." +msgstr "" + +#: src/modules/member_admin/settings.py:405 +msgctxt "guildset:role_persistence|set_response:off" +msgid "Roles will not be restored when members rejoin." +msgstr "" + +#: src/modules/member_admin/settings.py:410 +msgctxt "guildset:greeting_message|set_response:on" +msgid "Roles will now be restored when members rejoin." +msgstr "" diff --git a/locales/templates/meta.pot b/locales/templates/meta.pot new file mode 100644 index 00000000..ca234e58 --- /dev/null +++ b/locales/templates/meta.pot @@ -0,0 +1,113 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/meta/cog.py:23 +msgctxt "cmd:help" +msgid "help" +msgstr "" + +#: src/modules/meta/cog.py:26 +msgctxt "cmd:help|desc" +msgid "See a brief summary of my commands and features." +msgstr "" + +#: src/modules/meta/help_sections.py:40 +#, possible-python-brace-format +msgctxt "helptext|level:member|mode:study" +msgid "" +"\n" +" {config_emoji} Personal Configuration\n" +" *View or adjust personal settings with the {cmd_my} command.*\n" +" {cmd_my_timezone}: Timezone used to display your stats and set " +"reminders.\n" +" {cmd_my_language}: Your preferred language for commands and " +"interactions.\n" +"\n" +"\n" +" {stats_emoji} Statistics\n" +" *Study in voice channels to earn activity ranks and compete on the " +"leaderboard!*\n" +" {cmd_me}: View your personal study profile and set your profile tags.\n" +" {cmd_stats}: View study statistics for the current and past weeks or " +"months.\n" +" {cmd_ranks}: See the list of activity ranks.\n" +" {cmd_leaderboard}: Compete with other members on the server " +"leaderboards.\n" +"\n" +"\n" +" {coin} Economy\n" +" *Earn coins through studying, then spend them on some well deserved " +"rewards!*\n" +" {cmd_send}: Send your {coin} to another member.\n" +" {cmd_shop}: Purchase server roles with your {coin}.\n" +" {cmd_room}: Rent a private voice channel for you and your friends.\n" +"\n" +"\n" +" {utility_emoji} Utilities\n" +" *Some other utilities to help you stay productive while studying!*\n" +" {cmd_reminders}: Ask me to remind you about that important task!\n" +" {cmd_tasklist}: Create tasks and feel the satisfaction of checking them " +"off.\n" +" {cmd_timers}: Stay productive using the classic *pomodoro technique*!\n" +" {cmd_schedule}: Schedule a shared study session and keep yourself " +"accountable!\n" +" " +msgstr "" + +#: src/modules/meta/help_sections.py:73 +#, possible-python-brace-format +msgctxt "helptext|page:admin" +msgid "" +"\n" +" Use {cmd_dashboard} to see an overview of the server configuration, " +"and quickly jump to the feature configuration panels to modify settings.\n" +"\n" +" Configuration panels are also accessible directly through the `/" +"configure` commands and most features may be configured through these " +"commands.\n" +"\n" +" Other relevant commands for guild configuration below:\n" +" `/editshop`: Add/Edit/Remove colour roles from the {coin} shop.\n" +" `/ranks`: Add/Edit/Remove activity ranks.\n" +" `/timer admin`: Add/Edit/Remove Pomodoro timers in voice channels.\n" +" `/rolemenus`: Allow members to equip roles from customisable messages.\n" +" `/economy balance`: Display and modify LionCoin balance for members and " +"roles.\n" +" " +msgstr "" + +#: src/modules/meta/help_sections.py:112 +msgctxt "helptext|level:member|title" +msgid "Command Summary (for members)" +msgstr "" + +#: src/modules/meta/help_sections.py:140 +msgctxt "helptext|level:admin|title" +msgid "Command Summary (for server admins)" +msgstr "" + +#: src/modules/meta/helpui.py:47 +msgctxt "ui:help|button:member_page|label" +msgid "Member Page" +msgstr "" + +#: src/modules/meta/helpui.py:59 +msgctxt "ui:help|button:admin_page|label" +msgid "Admin Page" +msgstr "" diff --git a/locales/templates/moderation.pot b/locales/templates/moderation.pot new file mode 100644 index 00000000..4c21f419 --- /dev/null +++ b/locales/templates/moderation.pot @@ -0,0 +1,257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/moderation/settingui.py:53 +msgctxt "ui:moderation_config|menu:ticket_log|placeholder" +msgid "Select Ticket Log" +msgstr "" + +#: src/modules/moderation/settingui.py:78 +msgctxt "ui:moderation_config|menu:alert_channel|placeholder" +msgid "Select Alert Channel" +msgstr "" + +#: src/modules/moderation/settingui.py:103 +msgctxt "ui:moderation_config|menu:modrole|placeholder" +msgid "Select Moderator Role" +msgstr "" + +#: src/modules/moderation/settingui.py:111 +msgctxt "ui:moderation_config|embed|title" +msgid "Moderation Configuration Panel" +msgstr "" + +#: src/modules/moderation/settingui.py:150 +msgctxt "dash:moderation|title" +msgid "Moderation Settings ({commands[configure moderation]})" +msgstr "" + +#: src/modules/moderation/settingui.py:154 +msgctxt "dash:moderation|dropdown|placeholder" +msgid "Moderation Panel" +msgstr "" + +#: src/modules/moderation/cog.py:136 +msgctxt "cmd:configure_moderation" +msgid "moderation" +msgstr "" + +#: src/modules/moderation/cog.py:139 +msgctxt "cmd:configure_moderation|desc" +msgid "Configure general moderation settings." +msgstr "" + +#: src/modules/moderation/ticket.py:147 +#, possible-python-brace-format +msgctxt "ticket|title:auto" +msgid "Ticket #{ticketid} | {state} | {type}[Auto] | {name}" +msgstr "" + +#: src/modules/moderation/ticket.py:152 +#, possible-python-brace-format +msgctxt "ticket|title:manual" +msgid "Ticket #{ticketid} | {state} | {type} | {name}" +msgstr "" + +#: src/modules/moderation/ticket.py:168 +msgctxt "ticket|field:target|name" +msgid "Target" +msgstr "" + +#: src/modules/moderation/ticket.py:173 +msgctxt "ticket|field:moderator|name" +msgid "Moderator" +msgstr "" + +#: src/modules/moderation/ticket.py:180 +msgctxt "ticket|field:expiry|mode:expiring|name" +msgid "Expires At" +msgstr "" + +#: src/modules/moderation/ticket.py:183 +#, possible-python-brace-format +msgctxt "ticket|field:expiry|mode:expiring|value" +msgid "" +"{timestamp}\n" +"Duration: `{duration}`" +msgstr "" + +#: src/modules/moderation/ticket.py:191 +msgctxt "ticket|field:expiry|mode:expired|name" +msgid "Expired" +msgstr "" + +#: src/modules/moderation/ticket.py:194 +#, possible-python-brace-format +msgctxt "ticket|field:expiry|mode:expired|value" +msgid "{timestamp}" +msgstr "" + +#: src/modules/moderation/ticket.py:201 +msgctxt "ticket|field:expiry|mode:open|name" +msgid "Expiry" +msgstr "" + +#: src/modules/moderation/ticket.py:204 +#, possible-python-brace-format +msgctxt "ticket|field:expiry|mode:open|value" +msgid "{timestamp}" +msgstr "" + +#: src/modules/moderation/ticket.py:212 +msgctxt "ticket|field:context|name" +msgid "Context" +msgstr "" + +#: src/modules/moderation/ticket.py:219 +msgctxt "ticket|field:notes|name" +msgid "Notes" +msgstr "" + +#: src/modules/moderation/ticket.py:226 +msgctxt "ticket|field:pardoned|name" +msgid "Pardoned" +msgstr "" + +#: src/modules/moderation/ticket.py:229 +#, possible-python-brace-format +msgctxt "ticket|field:pardoned|value" +msgid "" +"Pardoned by <&{moderator}> at {timestamp}.\n" +"{reason}" +msgstr "" + +#: src/modules/moderation/settings.py:20 +msgctxt "guildset:ticket_log" +msgid "ticket_log" +msgstr "" + +#: src/modules/moderation/settings.py:23 +msgctxt "guildset:ticket_log|desc" +msgid "Private moderation log to send tickets and moderation events." +msgstr "" + +#: src/modules/moderation/settings.py:27 +msgctxt "guildset:ticket_log|long_desc" +msgid "" +"Warnings, notes, video blacklists, and other moderation events will be " +"posted as numbered tickets with context to this log." +msgstr "" + +#: src/modules/moderation/settings.py:32 +msgctxt "guildset:ticket_log|accepts" +msgid "Ticket channel name or id." +msgstr "" + +#: src/modules/moderation/settings.py:46 +#, possible-python-brace-format +msgctxt "guildset:ticket_log|set_response:set" +msgid "Moderation tickets will be sent to {channel}" +msgstr "" + +#: src/modules/moderation/settings.py:51 +msgctxt "guildset:ticket_log|set_response:unset" +msgid "Moderation tickets will not be logged to a channel." +msgstr "" + +#: src/modules/moderation/settings.py:63 +msgctxt "guildset:ticket_log|formatted:unset" +msgid "Not Set." +msgstr "" + +#: src/modules/moderation/settings.py:70 +msgctxt "guildset:alert_channel" +msgid "alert_channel" +msgstr "" + +#: src/modules/moderation/settings.py:73 +msgctxt "guildset:alert_channel|desc" +msgid "Moderation notification channel for members with DMs disabled." +msgstr "" + +#: src/modules/moderation/settings.py:77 +msgctxt "guildset:alert_channel|long_desc" +msgid "" +"When I need to send a member a moderation-related notification (e.g. asking " +"them to enable their video in a video channel) from this server, I will try " +"to send it via direct messages. If this fails, I will instead mention the " +"user in this channel." +msgstr "" + +#: src/modules/moderation/settings.py:84 +msgctxt "guildset:alert_channel|accepts" +msgid "Alert channel name or id." +msgstr "" + +#: src/modules/moderation/settings.py:98 +#, possible-python-brace-format +msgctxt "guildset:alert_channel|set_response:set" +msgid "Moderation alerts will be sent to {channel}" +msgstr "" + +#: src/modules/moderation/settings.py:103 +msgctxt "guildset:alert_channel|set_response:unset" +msgid "Moderation alerts will be ignored if the member cannot be reached." +msgstr "" + +#: src/modules/moderation/settings.py:115 +msgctxt "guildset:alert_channel|formatted:unset" +msgid "Not Set (Only alert via direct message.)" +msgstr "" + +#: src/modules/moderation/settings.py:122 +msgctxt "guildset:mod_role" +msgid "mod_role" +msgstr "" + +#: src/modules/moderation/settings.py:125 +msgctxt "guildset:mod_role|desc" +msgid "" +"Guild role permitted to view configuration and perform moderation tasks." +msgstr "" + +#: src/modules/moderation/settings.py:129 +msgctxt "guildset:mod_role|long_desc" +msgid "" +"Members with the set role will be able to access my configuration panels, " +"and perform some moderation tasks, such us setting up pomodoro timers. " +"Moderators cannot reconfigure most bot configuration, or perform operations " +"they do not already have permission for in Discord." +msgstr "" + +#: src/modules/moderation/settings.py:136 +msgctxt "guildset:mod_role|accepts" +msgid "Moderation role name or id." +msgstr "" + +#: src/modules/moderation/settings.py:150 +#, possible-python-brace-format +msgctxt "guildset:mod_role|set_response:set" +msgid "Members with the {role} will be considered moderators." +msgstr "" + +#: src/modules/moderation/settings.py:155 +msgctxt "guildset:mod_role|set_response:unset" +msgid "No members will be given moderation privileges." +msgstr "" + +#: src/modules/moderation/settings.py:167 +msgctxt "guildset:mod_role|formatted:unset" +msgid "Not Set." +msgstr "" diff --git a/locales/templates/monthly-gui.pot b/locales/templates/monthly-gui.pot new file mode 100644 index 00000000..0851bc16 --- /dev/null +++ b/locales/templates/monthly-gui.pot @@ -0,0 +1,165 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/gui/cards/monthly.py:39 +msgctxt "skin:monthlystats|mode:study|title" +msgid "STUDY HOURS" +msgstr "" + +#: src/gui/cards/monthly.py:43 +msgctxt "skin:monthlystats|mode:voice|title" +msgid "VOICE CHANNEL ACTIVITY" +msgstr "" + +#: src/gui/cards/monthly.py:47 +msgctxt "skin:monthlystats|mode:text|title" +msgid "MESSAGE ACTIVITY" +msgstr "" + +#: src/gui/cards/monthly.py:51 +msgctxt "skin::monthlystats|mode:anki|title" +msgid "CARDS REVIEWED" +msgstr "" + +#: src/gui/cards/monthly.py:118 +#, possible-python-brace-format +msgctxt "ui:monthlystats|mode:study|bar_value" +msgid "{value} H" +msgstr "" + +#: src/gui/cards/monthly.py:122 +#, possible-python-brace-format +msgctxt "ui:monthlystats|mode:voice|bar_value" +msgid "{value} H" +msgstr "" + +#: src/gui/cards/monthly.py:126 +#, possible-python-brace-format +msgctxt "ui:monthlystats|mode:text|bar_value" +msgid "{value} M" +msgstr "" + +#: src/gui/cards/monthly.py:130 +#, possible-python-brace-format +msgctxt "ui:monthlystats|mode:anki|bar_value" +msgid "{value} C" +msgstr "" + +#: src/gui/cards/monthly.py:152 +msgctxt "skin:monthlystats|weekdays" +msgid "M,T,W,T,F,S,S" +msgstr "" + +#: src/gui/cards/monthly.py:162 +#, possible-python-brace-format +msgctxt "skin:monthlystats|mode:study|summary:this_month" +msgid "THIS MONTH: {amount} HOURS" +msgstr "" + +#: src/gui/cards/monthly.py:166 +#, possible-python-brace-format +msgctxt "skin:monthlystats|mode:voice|summary:this_month" +msgid "THIS MONTH: {amount} HOURS" +msgstr "" + +#: src/gui/cards/monthly.py:170 +#, possible-python-brace-format +msgctxt "skin:monthlystats|mode:text|summary:this_month" +msgid "THIS MONTH: {amount} MESSAGES" +msgstr "" + +#: src/gui/cards/monthly.py:174 +#, possible-python-brace-format +msgctxt "skin:monthlystats|mode:text|summary:this_month" +msgid "THIS MONTH: {amount} CARDS" +msgstr "" + +#: src/gui/cards/monthly.py:196 +#, possible-python-brace-format +msgctxt "skin:monthlystats|mode:study|summary:last_month" +msgid "LAST MONTH: {amount} HOURS" +msgstr "" + +#: src/gui/cards/monthly.py:200 +#, possible-python-brace-format +msgctxt "skin:monthlystats|mode:voice|summary:last_month" +msgid "LAST MONTH: {amount} HOURS" +msgstr "" + +#: src/gui/cards/monthly.py:204 +#, possible-python-brace-format +msgctxt "skin:monthlystats|mode:text|summary:last_month" +msgid "LAST MONTH: {amount} MESSAGES" +msgstr "" + +#: src/gui/cards/monthly.py:208 +#, possible-python-brace-format +msgctxt "skin:monthlystats|mode:text|summary:last_month" +msgid "LAST MONTH: {amount} CARDS" +msgstr "" + +#: src/gui/cards/monthly.py:299 +msgctxt "ui:monthlystats|stats:current_streak|key" +msgid "Current Streak:" +msgstr "" + +#: src/gui/cards/monthly.py:303 +#, possible-python-brace-format +msgctxt "ui:monthlystats|stats:current_streak|value" +msgid "{count} days" +msgstr "" + +#: src/gui/cards/monthly.py:307 +msgctxt "ui:monthlystats|stats:longest_streak|key" +msgid "Longest Streak:" +msgstr "" + +#: src/gui/cards/monthly.py:311 +#, possible-python-brace-format +msgctxt "ui:monthlystats|stats:longest_streak|value" +msgid "{count} days" +msgstr "" + +#: src/gui/cards/monthly.py:315 +msgctxt "ui:monthlystats|stats:daily_average|key" +msgid "Daily Average:" +msgstr "" + +#: src/gui/cards/monthly.py:319 +#, possible-python-brace-format +msgctxt "ui:monthlystats|stats:daily_average|value" +msgid "{count} hours" +msgstr "" + +#: src/gui/cards/monthly.py:323 +msgctxt "ui:monthlystats|stats:days_active|key" +msgid "Days Active:" +msgstr "" + +#: src/gui/cards/monthly.py:327 +#, possible-python-brace-format +msgctxt "ui:monthlystats|stats:days_active|value" +msgid "{count} days" +msgstr "" + +#: src/gui/cards/monthly.py:340 +#, possible-python-brace-format +msgctxt "skin:monthlystats|footer" +msgid "Monthly Statistics • As of {day} {month} • {name} {discrim}" +msgstr "" diff --git a/locales/templates/profile-gui.pot b/locales/templates/profile-gui.pot new file mode 100644 index 00000000..5092e299 --- /dev/null +++ b/locales/templates/profile-gui.pot @@ -0,0 +1,49 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/gui/cards/profile.py:79 +msgctxt "skin:profile|header:profile" +msgid "PROFILE" +msgstr "" + +#: src/gui/cards/profile.py:83 +msgctxt "skin:profile|header:achievements" +msgid "ACHIEVEMENTS" +msgstr "" + +#: src/gui/cards/profile.py:134 +msgctxt "skin:profile|field:rank_unranked_text" +msgid "UNRANKED" +msgstr "" + +#: src/gui/cards/profile.py:138 +#, possible-python-brace-format +msgctxt "skin:profile|field:rank_nextrank_text" +msgid "NEXT RANK: {name} {rangestr}" +msgstr "" + +#: src/gui/cards/profile.py:142 +msgctxt "skin:profile|field:rank_noranks_text" +msgid "NO RANKS AVAILABLE" +msgstr "" + +#: src/gui/cards/profile.py:146 +msgctxt "skin:profile|field:rank_maxrank_text" +msgid "YOU HAVE REACHED THE MAXIMUM RANK" +msgstr "" diff --git a/locales/templates/ranks.pot b/locales/templates/ranks.pot new file mode 100644 index 00000000..8b675701 --- /dev/null +++ b/locales/templates/ranks.pot @@ -0,0 +1,722 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/ranks/cog.py:70 +msgctxt "cmd:configure_ranks|param:rank_type|choice:voice" +msgid "Voice" +msgstr "" + +#: src/modules/ranks/cog.py:71 +msgctxt "cmd:configure_ranks|param:rank_type|choice:xp" +msgid "XP" +msgstr "" + +#: src/modules/ranks/cog.py:72 +msgctxt "cmd:configure_ranks|param:rank_type|choice:message" +msgid "Message" +msgstr "" + +#: src/modules/ranks/cog.py:359 +msgctxt "event:rank_update|embed:notify" +msgid "New Activity Rank Attained!" +msgstr "" + +#. ---------- Commands ---------- +#: src/modules/ranks/cog.py:437 +msgctxt "cmd:ranks" +msgid "ranks" +msgstr "" + +#: src/modules/ranks/cog.py:463 +msgctxt "cmd:configure_ranks" +msgid "ranks" +msgstr "" + +#: src/modules/ranks/cog.py:464 +msgctxt "cmd:configure_ranks|desc" +msgid "Configure Activity Ranks" +msgstr "" + +#: src/modules/ranks/cog.py:524 +#, possible-python-brace-format +msgctxt "" +"cmd:configure_ranks|response:updated|setting:notification|withdm_withchannel" +msgid "" +"Rank update notifications will be sent via **direct message** when possible, " +"otherwise to {channel}" +msgstr "" + +#: src/modules/ranks/cog.py:530 +msgctxt "" +"cmd:configure_ranks|response:updated|setting:notification|withdm_nochannel" +msgid "Rank update notifications will be sent via **direct message**." +msgstr "" + +#: src/modules/ranks/cog.py:536 +#, possible-python-brace-format +msgctxt "" +"cmd:configure_ranks|response:updated|setting:notification|nodm_withchannel" +msgid "Rank update notifications will be sent to {channel}." +msgstr "" + +#: src/modules/ranks/cog.py:541 +msgctxt "" +"cmd:configure_ranks|response:updated|setting:notification|nodm_nochannel" +msgid "Members will not be notified when their activity rank updates." +msgstr "" + +#: src/modules/ranks/utils.py:13 +#, possible-python-brace-format +msgctxt "formatstring:rank_message|key:role_name" +msgid "{role_name}" +msgstr "" + +#: src/modules/ranks/utils.py:14 +#, possible-python-brace-format +msgctxt "formatstring:rank_message|key:guild_name" +msgid "{guild_name}" +msgstr "" + +#: src/modules/ranks/utils.py:15 +#, possible-python-brace-format +msgctxt "formatstring:rank_message|key:user_name" +msgid "{user_name}" +msgstr "" + +#: src/modules/ranks/utils.py:16 +#, possible-python-brace-format +msgctxt "formatstring:rank_message|key:role_id" +msgid "{role_id}" +msgstr "" + +#: src/modules/ranks/utils.py:17 +#, possible-python-brace-format +msgctxt "formatstring:rank_message|key:guild_id" +msgid "{guild_id}" +msgstr "" + +#: src/modules/ranks/utils.py:18 +#, possible-python-brace-format +msgctxt "formatstring:rank_message|key:user_id" +msgid "{user_id}" +msgstr "" + +#: src/modules/ranks/utils.py:19 +#, possible-python-brace-format +msgctxt "formatstring:rank_message|key:role_mention" +msgid "{role_mention}" +msgstr "" + +#: src/modules/ranks/utils.py:20 +#, possible-python-brace-format +msgctxt "formatstring:rank_message|key:user_mention" +msgid "{user_mention}" +msgstr "" + +#: src/modules/ranks/utils.py:21 +#, possible-python-brace-format +msgctxt "formatstring:rank_message|key:requires" +msgid "{rank_requires}" +msgstr "" + +#: src/modules/ranks/settings.py:26 +msgctxt "guildset:rank_type|output:voice" +msgid "`Voice`" +msgstr "" + +#: src/modules/ranks/settings.py:27 +msgctxt "guildset:rank_type|output:xp" +msgid "`Exp`" +msgstr "" + +#: src/modules/ranks/settings.py:28 +msgctxt "guildset:rank_type|output:message" +msgid "`Messages`" +msgstr "" + +#: src/modules/ranks/settings.py:31 +msgctxt "guildset:rank_type|input_format:voice" +msgid "Voice" +msgstr "" + +#: src/modules/ranks/settings.py:32 +msgctxt "guildset:rank_type|input_format:xp" +msgid "Exp" +msgstr "" + +#: src/modules/ranks/settings.py:33 +msgctxt "guildset:rank_type|input_format:message" +msgid "Messages" +msgstr "" + +#: src/modules/ranks/settings.py:36 +msgctxt "guildset:rank_type|input_pattern:voice" +msgid "voice|study" +msgstr "" + +#: src/modules/ranks/settings.py:37 +msgctxt "guildset:rank_type|input_pattern:voice" +msgid "text|message|messages" +msgstr "" + +#: src/modules/ranks/settings.py:38 +msgctxt "guildset:rank_type|input_pattern:xp" +msgid "xp|exp|experience" +msgstr "" + +#: src/modules/ranks/settings.py:45 +msgctxt "guildset:rank_type" +msgid "rank_type" +msgstr "" + +#: src/modules/ranks/settings.py:48 +msgctxt "guildset:rank_type|desc" +msgid "" +"The type of statistic (messages | xp | voice hours) used to determine " +"activity ranks." +msgstr "" + +#: src/modules/ranks/settings.py:52 +msgctxt "guildset:rank_type|long_desc" +msgid "" +"Which statistic is used to reward activity ranks.\n" +"`Voice` is the number of hours active in tracked voice channels, `Exp` is a " +"measure of message activity, and `Message` is a simple count of messages " +"sent." +msgstr "" + +#: src/modules/ranks/settings.py:59 +msgctxt "guildset:rank_type|accepts" +msgid "Voice/Exp/Messages" +msgstr "" + +#: src/modules/ranks/settings.py:71 +msgctxt "guildset:rank_type|set_response|type:voice" +msgid "Members will be awarded activity ranks based on `Voice Activity`." +msgstr "" + +#: src/modules/ranks/settings.py:76 +msgctxt "guildset:rank_type|set_response|type:messages" +msgid "Members will be awarded activity ranks based on `Messages Sent`." +msgstr "" + +#: src/modules/ranks/settings.py:81 +msgctxt "guildset:rank_type|set_response|type:xp" +msgid "Members will be awarded activity ranks based on `Message XP Earned`." +msgstr "" + +#: src/modules/ranks/settings.py:91 +#, possible-python-brace-format +msgctxt "guildset:rank_channel|set_using" +msgid "{cmd} or option menu below." +msgstr "" + +#: src/modules/ranks/settings.py:103 +msgctxt "guildset:rank_channel" +msgid "rank_channel" +msgstr "" + +#: src/modules/ranks/settings.py:106 +msgctxt "guildset:rank_channel|desc" +msgid "The channel in which to send rank update notifications." +msgstr "" + +#: src/modules/ranks/settings.py:110 +msgctxt "guildset:rank_channel|long_desc" +msgid "" +"Whenever a user advances a rank, a congratulatory message will be sent in " +"this channel, if set. If `dm_ranks` is enabled, this channel will only be " +"used when the user has opted not to receive DM notifications, or is " +"otherwise unreachable." +msgstr "" + +#: src/modules/ranks/settings.py:116 +msgctxt "guildset:rank_channel|accepts" +msgid "Rank notification channel name or id." +msgstr "" + +#: src/modules/ranks/settings.py:128 +#, possible-python-brace-format +msgctxt "guildset:rank_channel|set_response|set" +msgid "Rank update messages will be sent to {channel}." +msgstr "" + +#: src/modules/ranks/settings.py:133 +msgctxt "guildset:rank_channel|set_response|unset" +msgid "" +"Rank update messages will be ignored or sent via DM (if `dm_ranks` is " +"enabled)." +msgstr "" + +#: src/modules/ranks/settings.py:143 +#, possible-python-brace-format +msgctxt "guildset:rank_channel|set_using" +msgid "{cmd} or channel selector below." +msgstr "" + +#: src/modules/ranks/settings.py:153 +msgctxt "guildset:dm_ranks" +msgid "dm_ranks" +msgstr "" + +#: src/modules/ranks/settings.py:156 +msgctxt "guildset:dm_ranks|desc" +msgid "Whether to send rank advancement notifications through direct messages." +msgstr "" + +#: src/modules/ranks/settings.py:160 +msgctxt "guildset:dm_ranks|long_desc" +msgid "" +"If enabled, congratulatory messages for rank advancement will be direct " +"messaged to the user, instead of being sent to the configured `rank_channel`." +msgstr "" + +#: src/modules/ranks/settings.py:174 +msgctxt "guildset:dm_ranks|response:true" +msgid "I will direct message members upon rank advancement." +msgstr "" + +#: src/modules/ranks/settings.py:179 +msgctxt "guildset:dm_ranks|response:false" +msgid "I will never direct message members upon rank advancement." +msgstr "" + +#: src/modules/ranks/ui/preview.py:74 +msgctxt "ui:rank_preview|button:edit|error:role_deleted" +msgid "" +"The role underlying this rank no longer exists! Please select a new role " +"from the role menu." +msgstr "" + +#: src/modules/ranks/ui/preview.py:81 +msgctxt "ui:rank_preview|button:edit|error:role_not_assignable" +msgid "" +"I do not have permission to edit the underlying role! Please select a new " +"role from the role menu, or ensure my top role is above the selected role." +msgstr "" + +#: src/modules/ranks/ui/preview.py:90 +msgctxt "ui:rank_preview|button:edit|error|title" +msgid "Failed to edit rank!" +msgstr "" + +#: src/modules/ranks/ui/preview.py:108 +msgctxt "ui:rank_preview|button:edit|label" +msgid "Edit" +msgstr "" + +#: src/modules/ranks/ui/preview.py:139 +#, possible-python-brace-format +msgctxt "ui:rank_preview|button:delete|response:success|description|with_role" +msgid "" +"You have deleted the rank {mention}. Press the button below to also delete " +"the role." +msgstr "" + +#: src/modules/ranks/ui/preview.py:144 +#, possible-python-brace-format +msgctxt "ui:rank_preview|button:delete|response:success|description|no_role" +msgid "You have deleted the rank {mention}." +msgstr "" + +#: src/modules/ranks/ui/preview.py:150 +msgctxt "ui:rank_preview|button:delete|response:success|title" +msgid "Rank Deleted" +msgstr "" + +#: src/modules/ranks/ui/preview.py:160 +msgctxt "" +"ui:rank_preview|button:delete|response:success|button:delete_role|label" +msgid "Delete Role" +msgstr "" + +#: src/modules/ranks/ui/preview.py:176 +#, possible-python-brace-format +msgctxt "" +"ui:rank_preview|button:delete|response:success|button:delete_role|response:" +"errored|desc" +msgid "" +"You have deleted the rank **{name}**! Could not delete the role due to an " +"unknown error." +msgstr "" + +#: src/modules/ranks/ui/preview.py:182 +#, possible-python-brace-format +msgctxt "" +"ui:rank_preview|button:delete|response:success|button:delete_role|response:" +"success|desc" +msgid "You have deleted the rank **{name}** along with the underlying role." +msgstr "" + +#: src/modules/ranks/ui/preview.py:199 +msgctxt "ui:rank_preview|button:delete|label" +msgid "Delete Rank" +msgstr "" + +#: src/modules/ranks/ui/preview.py:219 +#, possible-python-brace-format +msgctxt "ui:rank_preview|menu:roles|error:above_caller" +msgid "" +"You have insufficient permissions to assign {mention} as a rank role! You " +"may only manage roles below your top role." +msgstr "" + +#: src/modules/ranks/ui/preview.py:225 +msgctxt "ui:rank_preview|menu:roles|error:above_caller|title" +msgid "Insufficient permissions!" +msgstr "" + +#: src/modules/ranks/ui/preview.py:241 +msgctxt "ui:rank_preview|menu:roles|error:not_assignable|suberror:is_default" +msgid "The @everyone role cannot be removed, and cannot be a rank!" +msgstr "" + +#: src/modules/ranks/ui/preview.py:246 +msgctxt "ui:rank_preview|menu:roles|error:not_assignable|suberror:is_managed" +msgid "" +"The role is managed by another application or integration, and cannot be a " +"rank!" +msgstr "" + +#: src/modules/ranks/ui/preview.py:251 +msgctxt "" +"ui:rank_preview|menu:roles|error:not_assignable|suberror:no_permissions" +msgid "" +"I do not have the `MANAGE_ROLES` permission in this server, so I cannot " +"manage ranks!" +msgstr "" + +#: src/modules/ranks/ui/preview.py:256 +msgctxt "ui:rank_preview|menu:roles|error:not_assignable|suberror:above_me" +msgid "" +"This role is above my top role in the role hierarchy, so I cannot add or " +"remove it!" +msgstr "" + +#: src/modules/ranks/ui/preview.py:262 +msgctxt "ui:rank_preview|menu:roles|error:not_assignable|suberror:other" +msgid "I am not able to manage the selected role, so it cannot be a rank!" +msgstr "" + +#: src/modules/ranks/ui/preview.py:268 +msgctxt "ui:rank_preview|menu:roles|error:not_assignable|title" +msgid "Could not update rank!" +msgstr "" + +#: src/modules/ranks/ui/preview.py:278 +msgctxt "ui:rank_preview|menu:roles|placeholder" +msgid "Update Rank Role" +msgstr "" + +#: src/modules/ranks/ui/preview.py:290 +msgctxt "ui:rank_preview|embed|title" +msgid "Rank Information" +msgstr "" + +#: src/modules/ranks/ui/preview.py:297 +msgctxt "ui:rank_preview|embed|field:role|name" +msgid "Role" +msgstr "" + +#: src/modules/ranks/ui/preview.py:304 +msgctxt "ui:rank_preview|embed|field:required|name" +msgid "Required" +msgstr "" + +#: src/modules/ranks/ui/preview.py:311 +msgctxt "ui:rank_preview|embed|field:reward|name" +msgid "Reward" +msgstr "" + +#: src/modules/ranks/ui/preview.py:320 +msgctxt "ui:rank_preview|embed|field:message" +msgid "Congratulatory Message" +msgstr "" + +#: src/modules/ranks/ui/config.py:42 +msgctxt "ui:rankconfigui|check|not_permitted" +msgid "You have insufficient server permissions to use this UI!" +msgstr "" + +#: src/modules/ranks/ui/config.py:64 +msgctxt "ui:rank_config|button:overview|label" +msgid "Edit Ranks" +msgstr "" + +#: src/modules/ranks/ui/config.py:82 +msgctxt "ui:rank_config|menu:types|placeholder" +msgid "Select Statistic Type" +msgstr "" + +#: src/modules/ranks/ui/config.py:90 +msgctxt "ui:rank_config|menu:types|option:voice" +msgid "Voice Activity" +msgstr "" + +#: src/modules/ranks/ui/config.py:98 +msgctxt "ui:rank_config|menu:types|option:xp" +msgid "XP Earned" +msgstr "" + +#: src/modules/ranks/ui/config.py:106 +msgctxt "ui:rank_config|menu:types|option:messages" +msgid "Messages Sent" +msgstr "" + +#: src/modules/ranks/ui/config.py:126 +msgctxt "ui:rank_config|menu:channels|placeholder" +msgid "Select Rank Notification Channel" +msgstr "" + +#: src/modules/ranks/ui/config.py:134 +msgctxt "ui:rank_config|embed|title" +msgid "Ranks Configuration Panel" +msgstr "" + +#: src/modules/ranks/ui/config.py:171 +msgctxt "dash:rank|title" +msgid "Rank Configuration ({commands[configure ranks]})" +msgstr "" + +#: src/modules/ranks/ui/overview.py:77 +msgctxt "ui:rank_overview|button:auto|label" +msgid "Auto Create" +msgstr "" + +#: src/modules/ranks/ui/overview.py:91 +msgctxt "ui:rank_overview|button:refresh|label" +msgid "Refresh Member Ranks" +msgstr "" + +#: src/modules/ranks/ui/overview.py:107 +msgctxt "ui:rank_overview|button:clear|label" +msgid "Clear Ranks" +msgstr "" + +#: src/modules/ranks/ui/overview.py:137 +msgctxt "ui:rank_overview|button:create|label" +msgid "Create Rank" +msgstr "" + +#: src/modules/ranks/ui/overview.py:153 +#, possible-python-brace-format +msgctxt "ui:rank_overview|menu:roles|error:above_caller" +msgid "" +"You have insufficient permissions to assign {mention} as a rank role! You " +"may only manage roles below your top role." +msgstr "" + +#: src/modules/ranks/ui/overview.py:159 +msgctxt "ui:rank_overview|menu:roles|error:above_caller|title" +msgid "Insufficient permissions!" +msgstr "" + +#: src/modules/ranks/ui/overview.py:192 +msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:is_default" +msgid "The @everyone role cannot be removed, and cannot be a rank!" +msgstr "" + +#: src/modules/ranks/ui/overview.py:197 +msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:is_managed" +msgid "" +"The role is managed by another application or integration, and cannot be a " +"rank!" +msgstr "" + +#: src/modules/ranks/ui/overview.py:202 +msgctxt "" +"ui:rank_overview|menu:roles|error:not_assignable|suberror:no_permissions" +msgid "" +"I do not have the `MANAGE_ROLES` permission in this server, so I cannot " +"manage ranks!" +msgstr "" + +#: src/modules/ranks/ui/overview.py:207 +msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:above_me" +msgid "" +"This role is above my top role in the role hierarchy, so I cannot add or " +"remove it!" +msgstr "" + +#: src/modules/ranks/ui/overview.py:213 +msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:other" +msgid "I am not able to manage the selected role, so it cannot be a rank!" +msgstr "" + +#: src/modules/ranks/ui/overview.py:219 +msgctxt "ui:rank_overview|menu:roles|error:not_assignable|title" +msgid "Could not create rank!" +msgstr "" + +#: src/modules/ranks/ui/overview.py:243 +msgctxt "ui:rank_overview|menu:roles|placeholder" +msgid "Create from role" +msgstr "" + +#: src/modules/ranks/ui/overview.py:260 +msgctxt "ui:rank_overview|menu:ranks|placeholder" +msgid "View or edit rank" +msgstr "" + +#: src/modules/ranks/ui/overview.py:330 +msgctxt "ui:rank_overview|embed:noranks|desc" +msgid "" +"No activity ranks have been set up!\n" +"Press 'AUTO' to automatically create a standard heirachy of voice | text | " +"xp ranks, or select a role or press Create below!" +msgstr "" + +#: src/modules/ranks/ui/overview.py:338 +#, possible-python-brace-format +msgctxt "ui:rank_overview|embed|title|type:voice" +msgid "Voice Ranks in {guild_name}" +msgstr "" + +#: src/modules/ranks/ui/overview.py:343 +#, possible-python-brace-format +msgctxt "ui:rank_overview|embed|title|type:xp" +msgid "XP ranks in {guild_name}" +msgstr "" + +#: src/modules/ranks/ui/overview.py:348 +#, possible-python-brace-format +msgctxt "ui:rank_overview|embed|title|type:message" +msgid "Message ranks in {guild_name}" +msgstr "" + +#: src/modules/ranks/ui/editor.py:33 +msgctxt "ui:rank_editor|input:role_name|label" +msgid "Role Name" +msgstr "" + +#: src/modules/ranks/ui/editor.py:37 +msgctxt "ui:rank_editor|input:role_name|placeholder" +msgid "Name of the awarded guild role" +msgstr "" + +#: src/modules/ranks/ui/editor.py:53 +msgctxt "ui:rank_editor|input:role_colour|label" +msgid "Role Colour" +msgstr "" + +#: src/modules/ranks/ui/editor.py:57 +msgctxt "ui:rank_editor|input:role_colour|placeholder" +msgid "Colour of the awarded guild role, e.g. #AB1321" +msgstr "" + +#: src/modules/ranks/ui/editor.py:69 +msgctxt "ui:rank_editor|input:role_colour|error:parse" +msgid "" +"`role_colour`: Could not parse colour! Please use `#` format e.g. " +"`#AB1325`." +msgstr "" + +#: src/modules/ranks/ui/editor.py:88 +msgctxt "ui:rank_editor|type:voice|input:requires|label" +msgid "Required Voice Hours" +msgstr "" + +#: src/modules/ranks/ui/editor.py:92 +msgctxt "ui:rank_editor|type:voice|input:requires|placeholder" +msgid "Number of voice hours before awarding this rank" +msgstr "" + +#: src/modules/ranks/ui/editor.py:97 +msgctxt "ui:rank_editor|type:xp|input:requires|label" +msgid "Required XP" +msgstr "" + +#: src/modules/ranks/ui/editor.py:101 +msgctxt "ui:rank_editor|type:xp|input:requires|placeholder" +msgid "Amount of XP needed before obtaining this rank" +msgstr "" + +#: src/modules/ranks/ui/editor.py:106 +msgctxt "ui:rank_editor|type:message|input:requires|label" +msgid "Required Message Count" +msgstr "" + +#: src/modules/ranks/ui/editor.py:110 +msgctxt "ui:rank_editor|type:message|input:requires|placeholder" +msgid "Number of messages needed before awarding rank" +msgstr "" + +#: src/modules/ranks/ui/editor.py:126 +msgctxt "ui:rank_editor|type:voice|input:requires|error:parse" +msgid "" +"`requires`: Could not parse provided minimum time! Please write a number of " +"hours." +msgstr "" + +#: src/modules/ranks/ui/editor.py:137 +msgctxt "ui:rank_editor|type:message|input:requires|error:parse" +msgid "" +"`requires`: Could not parse provided minimum message count! Please enter an " +"integer." +msgstr "" + +#: src/modules/ranks/ui/editor.py:148 +msgctxt "ui:rank_editor|type:xp|input:requires|error:parse" +msgid "" +"`requires`: Could not parse provided minimum XP! Please enter an integer." +msgstr "" + +#: src/modules/ranks/ui/editor.py:162 +msgctxt "ui:rank_editor|input:reward|label" +msgid "LionCoins awarded upon achieving this rank" +msgstr "" + +#: src/modules/ranks/ui/editor.py:166 +msgctxt "ui:rank_editor|input:reward|placeholder" +msgid "LionCoins awarded upon achieving this rank" +msgstr "" + +#: src/modules/ranks/ui/editor.py:181 +msgctxt "ui:rank_editor|input:reward|error:parse" +msgid "`reward`: Please enter an integer number of LionCoins." +msgstr "" + +#: src/modules/ranks/ui/editor.py:197 +msgctxt "ui:rank_editor|input:message|label" +msgid "Rank Message" +msgstr "" + +#: src/modules/ranks/ui/editor.py:201 +msgctxt "ui:rank_editor|input:message|placeholder" +msgid "Congratulatory message sent to the user upon achieving this rank." +msgstr "" + +#: src/modules/ranks/ui/editor.py:207 +#, possible-python-brace-format +msgctxt "ui:rank_editor|input:message|default|type:voice" +msgid "" +"Congratulations {user_mention}!\n" +"For working hard for **{requires}**, you have achieved the rank of " +"**{role_name}** in **{guild_name}**! Keep up the good work." +msgstr "" + +#: src/modules/ranks/ui/editor.py:262 +msgctxt "ui:rank_editor|mode:edit|title" +msgid "Rank Editor" +msgstr "" + +#: src/modules/ranks/ui/editor.py:317 +msgctxt "ui:rank_editor|mode:create|title" +msgid "Rank Creator" +msgstr "" diff --git a/locales/templates/reminders.pot b/locales/templates/reminders.pot new file mode 100644 index 00000000..d69938ec --- /dev/null +++ b/locales/templates/reminders.pot @@ -0,0 +1,358 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: src/modules/reminders/cog.py:92 +msgctxt "reminder|embed" +msgid "You asked me to remind you!" +msgstr "" + +#: src/modules/reminders/cog.py:100 +msgctxt "reminder|embed" +msgid "Context?" +msgstr "" + +#: src/modules/reminders/cog.py:102 +msgctxt "reminder|embed" +msgid "Click Here" +msgstr "" + +#: src/modules/reminders/cog.py:109 +msgctxt "reminder|embed" +msgid "Next reminder" +msgstr "" + +#: src/modules/reminders/cog.py:133 +#, possible-python-brace-format +msgctxt "reminder|formatted|interval" +msgid "Every day" +msgid_plural "Every `{days}` days" +msgstr[0] "" +msgstr[1] "" + +#: src/modules/reminders/cog.py:142 +#, possible-python-brace-format +msgctxt "reminder|formatted|interval" +msgid "Every hour" +msgid_plural "Every `{hours}` hours" +msgstr[0] "" +msgstr[1] "" + +#: src/modules/reminders/cog.py:151 +#, possible-python-brace-format +msgctxt "reminder|formatted|interval" +msgid "Every `{duration}`" +msgstr "" + +#: src/modules/reminders/cog.py:341 +msgctxt "cmd:reminders" +msgid "reminders" +msgstr "" + +#. No help string +#: src/modules/reminders/cog.py:348 +msgctxt "cmd:reminders_show" +msgid "show" +msgstr "" + +#: src/modules/reminders/cog.py:351 +msgctxt "cmd:reminders_show|desc" +msgid "Display your current reminders." +msgstr "" + +#: src/modules/reminders/cog.py:367 +msgctxt "cmd:reminders_show|close_elsewhere" +msgid "Closing since the list was opened elsewhere." +msgstr "" + +#: src/modules/reminders/cog.py:379 +msgctxt "cmd:reminders_clear" +msgid "clear" +msgstr "" + +#: src/modules/reminders/cog.py:382 +msgctxt "cmd:reminders_clear|desc" +msgid "Clear your reminder list." +msgstr "" + +#: src/modules/reminders/cog.py:400 +msgctxt "cmd:reminders_clear|error:no_reminders" +msgid "You have no reminders to clear!" +msgstr "" + +#: src/modules/reminders/cog.py:409 +msgctxt "cmd:reminders_clear|confirm|title" +msgid "Are You Sure?" +msgstr "" + +#: src/modules/reminders/cog.py:412 +#, possible-python-brace-format +msgctxt "cmd:reminders_clear|confirm|desc" +msgid "Are you sure you want to delete your `{count}` reminder?" +msgid_plural "Are you sure you want to clear your `{count}` reminders?" +msgstr[0] "" +msgstr[1] "" + +#: src/modules/reminders/cog.py:418 +msgctxt "cmd:reminders_clear|confirm|button:yes" +msgid "Yes, clear my reminders" +msgstr "" + +#: src/modules/reminders/cog.py:427 +msgctxt "cmd:reminders_clear|success|desc" +msgid "Your reminders have been cleared!" +msgstr "" + +#: src/modules/reminders/cog.py:436 +msgctxt "cmd:reminders_clear|confirm|button:cancel" +msgid "Cancel" +msgstr "" + +#: src/modules/reminders/cog.py:446 +msgctxt "cmd:reminders_cancel" +msgid "cancel" +msgstr "" + +#: src/modules/reminders/cog.py:449 +msgctxt "cmd:reminders_cancel|desc" +msgid "" +"Cancel a single reminder. Use the menu in \"reminder show\" to cancel " +"multiple reminders." +msgstr "" + +#: src/modules/reminders/cog.py:453 +msgctxt "cmd:reminders_cancel|param:reminder" +msgid "reminder" +msgstr "" + +#: src/modules/reminders/cog.py:458 +msgctxt "cmd:reminders_cancel|param:reminder|desc" +msgid "Start typing, then select a reminder to cancel." +msgstr "" + +#: src/modules/reminders/cog.py:477 +msgctxt "cmd:reminders_cancel|error:no_reminders" +msgid "There are no reminders to cancel!" +msgstr "" + +#: src/modules/reminders/cog.py:501 +msgctxt "cmd:reminders_cancel|error:no_match" +msgid "" +"I am not sure which reminder you want to cancel. Please try again, selecting " +"a reminder from the list of choices." +msgstr "" + +#: src/modules/reminders/cog.py:514 +msgctxt "cmd:reminders_cancel|embed:success|desc" +msgid "Reminder successfully cancelled." +msgstr "" + +#: src/modules/reminders/cog.py:531 +msgctxt "cmd:reminders_cancel|acmpl:reminder|error:no_reminders" +msgid "There are no reminders to cancel!" +msgstr "" + +#: src/modules/reminders/cog.py:561 +#, possible-python-brace-format +msgctxt "cmd:reminders_cancel|acmpl:reminder|error:no_matches" +msgid "You do not have any reminders matching \"{partial}\"" +msgstr "" + +#: src/modules/reminders/cog.py:569 +msgctxt "cmd:remindme" +msgid "remindme" +msgstr "" + +#: src/modules/reminders/cog.py:576 +msgctxt "cmd:remindme_at" +msgid "at" +msgstr "" + +#: src/modules/reminders/cog.py:579 +msgctxt "cmd:remindme_at|desc" +msgid "Schedule a reminder for a particular time." +msgstr "" + +#: src/modules/reminders/cog.py:583 +msgctxt "cmd:remindme_at|param:time" +msgid "time" +msgstr "" + +#: src/modules/reminders/cog.py:584 +msgctxt "cmd:remindme_at|param:reminder" +msgid "reminder" +msgstr "" + +#: src/modules/reminders/cog.py:585 +msgctxt "cmd:remindme_at|param:every" +msgid "repeat_every" +msgstr "" + +#: src/modules/reminders/cog.py:588 +msgctxt "cmd:remindme_at|param:time|desc" +msgid "When you want to be reminded. (E.g. `4pm` or `16:00`)." +msgstr "" + +#: src/modules/reminders/cog.py:589 +msgctxt "cmd:remindme_at|param:reminder|desc" +msgid "What should the reminder be?" +msgstr "" + +#: src/modules/reminders/cog.py:590 +msgctxt "cmd:remindme_at|param:every|desc" +msgid "How often to repeat this reminder." +msgstr "" + +#: src/modules/reminders/cog.py:608 +msgctxt "cmd_remindme_at|error:too_many|desc" +msgid "Sorry, you have reached the maximum of `25` reminders!" +msgstr "" + +#: src/modules/reminders/cog.py:612 +msgctxt "cmd_remindme_at|error:too_many|title" +msgid "Could not create reminder!" +msgstr "" + +#: src/modules/reminders/cog.py:625 +msgctxt "cmd_remindme_at|error:too_fast|desc" +msgid "You cannot set a repeating reminder with a period less than 10 minutes." +msgstr "" + +#: src/modules/reminders/cog.py:629 +msgctxt "cmd_remindme_at|error:too_fast|title" +msgid "Could not create reminder!" +msgstr "" + +#: src/modules/reminders/cog.py:647 +#, possible-python-brace-format +msgctxt "cmd:remindme_at|error:parse_time|desc" +msgid "" +"Could not parse provided time `{given}`. Try entering e.g. `4 pm` or `16:00`." +msgstr "" + +#: src/modules/reminders/cog.py:651 +msgctxt "cmd:remindme_at|error:parse_time|title" +msgid "Could not create reminder!" +msgstr "" + +#: src/modules/reminders/cog.py:662 +msgctxt "cmd:remindme_at|error:past_time|desc" +msgid "Provided time is in the past!" +msgstr "" + +#: src/modules/reminders/cog.py:666 +msgctxt "cmd:remindme_at|error:past_time|title" +msgid "Could not create reminder!" +msgstr "" + +#: src/modules/reminders/cog.py:691 +#, possible-python-brace-format +msgctxt "cmd:remindme_in|success|title" +msgid "Reminder Set at {timestamp}" +msgstr "" + +#: src/modules/reminders/cog.py:702 +msgctxt "cmd:remindme_in" +msgid "in" +msgstr "" + +#: src/modules/reminders/cog.py:705 +msgctxt "cmd:remindme_in|desc" +msgid "Schedule a reminder for a given amount of time in the future." +msgstr "" + +#: src/modules/reminders/cog.py:709 +msgctxt "cmd:remindme_in|param:time" +msgid "time" +msgstr "" + +#: src/modules/reminders/cog.py:710 +msgctxt "cmd:remindme_in|param:reminder" +msgid "reminder" +msgstr "" + +#: src/modules/reminders/cog.py:711 +msgctxt "cmd:remindme_in|param:every" +msgid "repeat_every" +msgstr "" + +#: src/modules/reminders/cog.py:714 +msgctxt "cmd:remindme_in|param:time|desc" +msgid "How far into the future to set the reminder (e.g. 1 day 10h 5m)." +msgstr "" + +#: src/modules/reminders/cog.py:715 +msgctxt "cmd:remindme_in|param:reminder|desc" +msgid "What should the reminder be?" +msgstr "" + +#: src/modules/reminders/cog.py:716 +msgctxt "cmd:remindme_in|param:every|desc" +msgid "How often to repeat this reminder. (e.g. 1 day, or 2h)" +msgstr "" + +#: src/modules/reminders/cog.py:734 +msgctxt "cmd_remindme_in|error:too_many|desc" +msgid "Sorry, you have reached the maximum of `25` reminders!" +msgstr "" + +#: src/modules/reminders/cog.py:738 +msgctxt "cmd_remindme_in|error:too_many|title" +msgid "Could not create reminder!" +msgstr "" + +#: src/modules/reminders/cog.py:751 +msgctxt "cmd_remindme_in|error:too_fast|desc" +msgid "You cannot set a repeating reminder with a period less than 10 minutes." +msgstr "" + +#: src/modules/reminders/cog.py:755 +msgctxt "cmd_remindme_in|error:too_fast|title" +msgid "Could not create reminder!" +msgstr "" + +#: src/modules/reminders/cog.py:781 +#, possible-python-brace-format +msgctxt "cmd:remindme_in|success|title" +msgid "Reminder Set {timestamp}" +msgstr "" + +#: src/modules/reminders/cog.py:842 +msgctxt "ui:reminderlist|select:remove|placeholder" +msgid "Select to cancel." +msgstr "" + +#: src/modules/reminders/cog.py:918 +#, possible-python-brace-format +msgctxt "ui:reminderlist|embed:list|author" +msgid "{name}'s reminders" +msgstr "" + +#: src/modules/reminders/cog.py:924 +msgctxt "ui:reminderlist|embed:list|footer" +msgid "Click a reminder twice to jump to the context!" +msgstr "" + +#: src/modules/reminders/cog.py:931 +#, possible-python-brace-format +msgctxt "ui:reminderlist|embed:no_reminders|desc" +msgid "" +"You have no reminders to display!\n" +"Use {remindme} to create a new reminder." +msgstr "" diff --git a/locales/templates/rolemenus.pot b/locales/templates/rolemenus.pot new file mode 100644 index 00000000..4e39146d --- /dev/null +++ b/locales/templates/rolemenus.pot @@ -0,0 +1,1453 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/rolemenus/cog.py:41 +msgctxt "argtype:menu_style|opt:reaction" +msgid "Reaction Roles" +msgstr "" + +#: src/modules/rolemenus/cog.py:45 +msgctxt "argtype:menu_style|opt:button" +msgid "Button Menu" +msgstr "" + +#: src/modules/rolemenus/cog.py:49 +msgctxt "argtype:menu_style|opt:dropdown" +msgid "Dropdown Menu" +msgstr "" + +#: src/modules/rolemenus/cog.py:68 +msgctxt "ctxcmd:rolemenu" +msgid "Role Menu Editor" +msgstr "" + +#: src/modules/rolemenus/cog.py:284 +msgctxt "parse:message_link|suberror:message_dne" +msgid "Could not find the linked message, has it been deleted?" +msgstr "" + +#: src/modules/rolemenus/cog.py:289 +#, possible-python-brace-format +msgctxt "parse:message_link|suberror:no_perms" +msgid "" +"Insufficient permissions! I need the `MESSAGE_HISTORY` permission in " +"{channel}." +msgstr "" + +#: src/modules/rolemenus/cog.py:294 +#, possible-python-brace-format +msgctxt "parse:message_link|suberror:channel_dne" +msgid "The channel `{channelid}` could not be found in this server." +msgstr "" + +#: src/modules/rolemenus/cog.py:299 +msgctxt "parse:message_link|suberror:malformed_link" +msgid "" +"Malformed message link. Please copy the link by right clicking the target " +"message." +msgstr "" + +#: src/modules/rolemenus/cog.py:306 +#, possible-python-brace-format +msgctxt "parse:message_link|error" +msgid "" +"Failed to resolve the provided message link.\n" +"**ERROR:** {error}" +msgstr "" + +#: src/modules/rolemenus/cog.py:418 +msgctxt "cmd:rolemenus" +msgid "rolemenus" +msgstr "" + +#: src/modules/rolemenus/cog.py:421 +msgctxt "cmd:rolemenus|desc" +msgid "View and configure the role menus in this server." +msgstr "" + +#: src/modules/rolemenus/cog.py:438 +msgctxt "cmd:rolemenus|error:author_perms" +msgid "" +"You need the `MANAGE_ROLES` permission in order to manage the server role " +"menus." +msgstr "" + +#: src/modules/rolemenus/cog.py:445 +msgctxt "cmd:rolemenus|error:my_perms" +msgid "" +"I lack the `MANAGE_ROLES` permission required to offer roles from role menus." +msgstr "" + +#: src/modules/rolemenus/cog.py:480 +#, possible-python-brace-format +msgctxt "acmpl:menus|choice:no_choices|name" +msgid "No role menus matching '{partial}'" +msgstr "" + +#: src/modules/rolemenus/cog.py:499 +msgctxt "acmpl:menuroles|param:menu|keyname" +msgid "menu" +msgstr "" + +#: src/modules/rolemenus/cog.py:505 +msgctxt "acmpl:menuroles|choice:no_menu|name" +msgid "Please select a menu first" +msgstr "" + +#: src/modules/rolemenus/cog.py:529 +#, possible-python-brace-format +msgctxt "acmpl:menuroles|choice:invalid_menu|name" +msgid "Menu '{name}' does not exist!" +msgstr "" + +#: src/modules/rolemenus/cog.py:558 +#, possible-python-brace-format +msgctxt "acmpl:menuroles|choice:no_matching|name" +msgid "No roles in this menu matching '{partial}'" +msgstr "" + +#: src/modules/rolemenus/cog.py:565 +msgctxt "group:rolemenu" +msgid "rolemenu" +msgstr "" + +#: src/modules/rolemenus/cog.py:568 +msgctxt "group:rolemenu|desc" +msgid "Base command group for role menu configuration." +msgstr "" + +#: src/modules/rolemenus/cog.py:577 +msgctxt "cmd:rolemenu_create" +msgid "newmenu" +msgstr "" + +#: src/modules/rolemenus/cog.py:580 +msgctxt "cmd:rolemenu_create|desc" +msgid "Create a new role menu (optionally using an existing message)" +msgstr "" + +#: src/modules/rolemenus/cog.py:594 +msgctxt "cmd:rolemenu_create|param:message" +msgid "message_link" +msgstr "" + +#: src/modules/rolemenus/cog.py:595 +msgctxt "cmd:rolemenu_create|param:menu_style" +msgid "menu_style" +msgstr "" + +#: src/modules/rolemenus/cog.py:596 +msgctxt "cmd:rolemenu_create|param:remplate" +msgid "template" +msgstr "" + +#: src/modules/rolemenus/cog.py:597 +msgctxt "cmd:rolemenu_create|param:rawmessage" +msgid "custom_message" +msgstr "" + +#: src/modules/rolemenus/cog.py:607 +msgctxt "cmd:rolemenu_create|param:message|desc" +msgid "Link to an existing message to turn it into a (reaction) role menu" +msgstr "" + +#: src/modules/rolemenus/cog.py:611 +msgctxt "cmd:rolemenu_create|param:menu_style" +msgid "Selection style for this menu (using buttons, dropdowns, or reactions)" +msgstr "" + +#: src/modules/rolemenus/cog.py:615 +msgctxt "cmd:rolemenu_create|param:template" +msgid "Template to use for the menu message body" +msgstr "" + +#: src/modules/rolemenus/cog.py:619 +msgctxt "cmd:rolemenu_create|param:rawmessage" +msgid "Attach a custom menu message to use" +msgstr "" + +#: src/modules/rolemenus/cog.py:648 +msgctxt "cmd:rolemenu_create|error:author_perms" +msgid "" +"You need the `MANAGE_ROLES` permission in order to create new role menus." +msgstr "" + +#: src/modules/rolemenus/cog.py:655 +msgctxt "cmd:rolemenu_create|error:my_perms" +msgid "" +"I lack the `MANAGE_ROLES` permission needed to offer roles from role menus." +msgstr "" + +#: src/modules/rolemenus/cog.py:674 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_create|error:message_exists" +msgid "The message {link} already has a role menu! Use {edit_cmd} to edit it." +msgstr "" + +#: src/modules/rolemenus/cog.py:695 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_create|error:style_notmine" +msgid "" +"I cannot create a `{style}` style menu on a message I didn't send! (Discord " +"restriction)." +msgstr "" + +#: src/modules/rolemenus/cog.py:702 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_create|error:rawmessage_notmine" +msgid "" +"Cannot apply a custom menu message to {message} because I do not own this " +"message!" +msgstr "" + +#: src/modules/rolemenus/cog.py:711 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_create|error:template_notmine" +msgid "" +"Cannot apply a menu message template to {message} because I do not own this " +"message!" +msgstr "" + +#: src/modules/rolemenus/cog.py:724 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_create|error:name_exists" +msgid "A rolemenu called `{name}` already exists! Use {edit_cmd} to edit it." +msgstr "" + +#: src/modules/rolemenus/cog.py:772 +msgctxt "cmd:rolemenu_edit" +msgid "editmenu" +msgstr "" + +#: src/modules/rolemenus/cog.py:775 +msgctxt "cmd:rolemenu_edit|desc" +msgid "Edit an existing role menu." +msgstr "" + +#: src/modules/rolemenus/cog.py:784 +msgctxt "cmd:rolemenu_edit|param:name" +msgid "name" +msgstr "" + +#: src/modules/rolemenus/cog.py:785 +msgctxt "cmd:rolemenu_edit|param:new_name" +msgid "new_name" +msgstr "" + +#: src/modules/rolemenus/cog.py:786 +msgctxt "cmd:rolemenu_edit|param:channel" +msgid "new_channel" +msgstr "" + +#: src/modules/rolemenus/cog.py:791 +msgctxt "cmd:rolemenu_edit|param:menu_style" +msgid "menu_style" +msgstr "" + +#: src/modules/rolemenus/cog.py:792 +msgctxt "cmd:rolemenu_edit|param:remplate" +msgid "template" +msgstr "" + +#: src/modules/rolemenus/cog.py:793 +msgctxt "cmd:rolemenu_edit|param:rawmessage" +msgid "custom_message" +msgstr "" + +#: src/modules/rolemenus/cog.py:798 +msgctxt "cmd:rolemenu_edit|param:name|desc" +msgid "Name of the menu to edit" +msgstr "" + +#: src/modules/rolemenus/cog.py:802 +msgctxt "cmd:rolemenu_edit|param:channel|desc" +msgid "Server channel to move the menu to" +msgstr "" + +#: src/modules/rolemenus/cog.py:811 +msgctxt "cmd:rolemenu_edit|param:menu_style" +msgid "Selection style for this menu (using buttons, dropdowns, or reactions)" +msgstr "" + +#: src/modules/rolemenus/cog.py:815 +msgctxt "cmd:rolemenu_edit|param:template" +msgid "Template to use for the menu message body" +msgstr "" + +#: src/modules/rolemenus/cog.py:819 +msgctxt "cmd:rolemenu_edit|param:rawmessage" +msgid "Attach a custom menu message to use" +msgstr "" + +#: src/modules/rolemenus/cog.py:848 +msgctxt "cmd:rolemenu_edit|error:author_perms" +msgid "You need the `MANAGE_ROLES` permission in order to edit role menus." +msgstr "" + +#: src/modules/rolemenus/cog.py:855 +msgctxt "cmd:rolemenu_edit|error:my_perms" +msgid "" +"I lack the `MANAGE_ROLES` permission needed to offer roles from role menus." +msgstr "" + +#: src/modules/rolemenus/cog.py:878 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_edit|error:menu_not_found" +msgid "This server does not have a role menu called `{name}`!" +msgstr "" + +#: src/modules/rolemenus/cog.py:898 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_edit|parse:new_name|error:name_exists" +msgid "A role menu with the name **{new_name}** already exists!" +msgstr "" + +#: src/modules/rolemenus/cog.py:935 +msgctxt "cmd:rolemenu_edit|parse:template|error:not_managed" +msgid "" +"Cannot set a template message for a role menu attached to a message I did " +"not send." +msgstr "" + +#: src/modules/rolemenus/cog.py:946 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_edit|parse:template|success:template" +msgid "Now using the `{name}` menu message template." +msgstr "" + +#: src/modules/rolemenus/cog.py:953 +msgctxt "cmd:rolemenu_edit|parse:template|success:custom" +msgid "Now using a custom menu message." +msgstr "" + +#: src/modules/rolemenus/cog.py:978 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_edit|repost|success" +msgid "The role menu is now available at {message}" +msgstr "" + +#: src/modules/rolemenus/cog.py:989 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_edit|repost|error:forbidden" +msgid "" +"Cannot update channel! I lack the `EMBED_LINKS` or `SEND_MESSAGES` " +"permission in {channel}." +msgstr "" + +#: src/modules/rolemenus/cog.py:994 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_edit|repost|error:unknown" +msgid "" +"An unknown error occurred trying to repost the menu to {channel}.\n" +"**Error:** `{exception}`" +msgstr "" + +#: src/modules/rolemenus/cog.py:1028 +msgctxt "cmd:rolemenu_delete" +msgid "delmenu" +msgstr "" + +#: src/modules/rolemenus/cog.py:1031 +msgctxt "cmd:rolemenu_delete|desc" +msgid "Delete a role menu." +msgstr "" + +#: src/modules/rolemenus/cog.py:1035 +msgctxt "cmd:rolemenu_delete|param:name" +msgid "menu" +msgstr "" + +#: src/modules/rolemenus/cog.py:1040 +msgctxt "cmd:rolemenu_delete|param:name|desc" +msgid "Name of the rolemenu to delete." +msgstr "" + +#: src/modules/rolemenus/cog.py:1055 +msgctxt "cmd:rolemenu_delete|error:author_perms" +msgid "" +"You need the `MANAGE_ROLES` permission in order to manage the server role " +"menus." +msgstr "" + +#: src/modules/rolemenus/cog.py:1078 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_delete|error:menu_not_found" +msgid "This server does not have a role menu called `{name}`!" +msgstr "" + +#: src/modules/rolemenus/cog.py:1086 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_delete|confirm|title" +msgid "" +"Are you sure you want to delete the role menu **{name}**? This is not " +"reversible!" +msgstr "" + +#: src/modules/rolemenus/cog.py:1091 +msgctxt "cmd:rolemenu_delete|confirm|button:yes" +msgid "Yes, Delete Now" +msgstr "" + +#: src/modules/rolemenus/cog.py:1096 +msgctxt "cmd:rolemenu_delete|confirm|button:no" +msgid "No, Cancel" +msgstr "" + +#: src/modules/rolemenus/cog.py:1121 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_delete|success|desc" +msgid "Successfully deleted the menu **{name}**" +msgstr "" + +#: src/modules/rolemenus/cog.py:1129 +msgctxt "cmd:rolemenu_addrole" +msgid "addrole" +msgstr "" + +#: src/modules/rolemenus/cog.py:1132 +msgctxt "cmd:rolemenu_addrole|desc" +msgid "Add a new role to an existing role menu." +msgstr "" + +#: src/modules/rolemenus/cog.py:1137 +msgctxt "cmd:rolemenu_addrole|param:menu" +msgid "menu" +msgstr "" + +#: src/modules/rolemenus/cog.py:1140 +msgctxt "cmd:rolemenu_addrole|param:role" +msgid "role" +msgstr "" + +#: src/modules/rolemenus/cog.py:1151 +msgctxt "cmd:rolemenu_addrole|param:menu|desc" +msgid "Name of the menu to add a role to" +msgstr "" + +#: src/modules/rolemenus/cog.py:1155 +msgctxt "cmd:rolemenu_addrole|param:role|desc" +msgid "Role to add to the menu" +msgstr "" + +#: src/modules/rolemenus/cog.py:1163 +msgctxt "cmd:rolemenu_addrole|param:duration|desc" +msgid "Lifetime of the role after selection in minutes." +msgstr "" + +#: src/modules/rolemenus/cog.py:1211 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_addrole|error:menu_not_found" +msgid "This server does not have a role menu called `{name}`!" +msgstr "" + +#: src/modules/rolemenus/cog.py:1296 +msgctxt "cmd:rolemenu_addrole|success:create|title" +msgid "Added Menu Role" +msgstr "" + +#: src/modules/rolemenus/cog.py:1300 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_addrole|success:create|desc" +msgid "Add the role {role} to the menu **{menu}**." +msgstr "" + +#: src/modules/rolemenus/cog.py:1318 +msgctxt "cmd:rolemenu_addrole|success:edit|title" +msgid "Menu Role updated" +msgstr "" + +#: src/modules/rolemenus/cog.py:1330 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_addrole|error:role_exists" +msgid "The role {role} is already selectable from the menu **{menu}**" +msgstr "" + +#: src/modules/rolemenus/cog.py:1348 +msgctxt "cmd:rolemenu_addrole|success|error:reaction|name" +msgid "Note" +msgstr "" + +#: src/modules/rolemenus/cog.py:1360 +msgctxt "cmd:rolemenu_addrole|success|button:editor|label" +msgid "Edit Menu" +msgstr "" + +#: src/modules/rolemenus/cog.py:1377 +msgctxt "cmd:rolemenu_editrole" +msgid "editrole" +msgstr "" + +#: src/modules/rolemenus/cog.py:1380 +msgctxt "cmd:rolemenu_editrole|desc" +msgid "Edit role options in an existing role menu." +msgstr "" + +#: src/modules/rolemenus/cog.py:1385 +msgctxt "cmd:rolemenu_editrole|param:menu" +msgid "menu" +msgstr "" + +#: src/modules/rolemenus/cog.py:1388 +msgctxt "cmd:rolemenu_editrole|param:menu_role" +msgid "menu_role" +msgstr "" + +#: src/modules/rolemenus/cog.py:1391 +msgctxt "cmd:rolemenu_editrole|param:role" +msgid "new_role" +msgstr "" + +#: src/modules/rolemenus/cog.py:1402 +msgctxt "cmd:rolemenu_editrole|param:menu|desc" +msgid "Name of the menu to edit the role for" +msgstr "" + +#: src/modules/rolemenus/cog.py:1406 +msgctxt "cmd:rolemenu_editrole|param:menu_role|desc" +msgid "Label, name, or mention of the menu role to edit." +msgstr "" + +#: src/modules/rolemenus/cog.py:1410 +msgctxt "cmd:rolemenu_editrole|param:role|desc" +msgid "New server role this menu role should give." +msgstr "" + +#: src/modules/rolemenus/cog.py:1418 +msgctxt "cmd:rolemenu_editrole|param:duration|desc" +msgid "Lifetime of the role after selection in minutes." +msgstr "" + +#: src/modules/rolemenus/cog.py:1459 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_editrole|error:menu_not_found" +msgid "This server does not have a role menu called `{name}`!" +msgstr "" + +#: src/modules/rolemenus/cog.py:1487 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_editrole|error:role_not_found" +msgid "The menu **{menu}** does not have the role **{name}**" +msgstr "" + +#: src/modules/rolemenus/cog.py:1553 +msgctxt "cmd:rolemenu_editrole|success|title" +msgid "Role menu role updated" +msgstr "" + +#: src/modules/rolemenus/cog.py:1568 +msgctxt "cmd:rolemenu_editrole|success|error:reaction|name" +msgid "Warning!" +msgstr "" + +#: src/modules/rolemenus/cog.py:1593 +msgctxt "cmd:rolemenu_delrole" +msgid "delrole" +msgstr "" + +#: src/modules/rolemenus/cog.py:1596 +msgctxt "cmd:rolemenu_delrole|desc" +msgid "Remove a role from a role menu." +msgstr "" + +#: src/modules/rolemenus/cog.py:1600 +msgctxt "cmd:rolemenu_delrole|param:menu" +msgid "menu" +msgstr "" + +#: src/modules/rolemenus/cog.py:1601 +msgctxt "cmd:rolemenu_delrole|param:menu_role" +msgid "menu_role" +msgstr "" + +#: src/modules/rolemenus/cog.py:1606 +msgctxt "cmd:rolemenu_delrole|param:menu|desc" +msgid "Name of the menu to delete the role from." +msgstr "" + +#: src/modules/rolemenus/cog.py:1610 +msgctxt "cmd:rolemenu_delrole|param:menu_role|desc" +msgid "Name, label, or mention of the role to delete." +msgstr "" + +#: src/modules/rolemenus/cog.py:1628 +msgctxt "cmd:rolemenu_delrole|error:author_perms" +msgid "" +"You need the `MANAGE_ROLES` permission in order to manage the server role " +"menus." +msgstr "" + +#: src/modules/rolemenus/cog.py:1652 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_delrole|error:menu_not_found" +msgid "This server does not have a role menu called `{name}`!" +msgstr "" + +#: src/modules/rolemenus/cog.py:1680 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_delrole|error:role_not_found" +msgid "The menu **{menu}** does not have the role **{name}**" +msgstr "" + +#: src/modules/rolemenus/cog.py:1697 +#, possible-python-brace-format +msgctxt "cmd:rolemenu_delrole|success" +msgid "The role **{name}** was successfully removed from the menu **{menu}**." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:54 +msgctxt "roleset:role" +msgid "role" +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:57 +msgctxt "roleset:role|desc" +msgid "The role associated to this menu item." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:61 +msgctxt "roleset:role|long_desc" +msgid "The role given when this menu item is selected in the role menu." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:74 +#, possible-python-brace-format +msgctxt "roleset:role|set_response:set" +msgid "This menu item will now give the role {role}." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:82 +msgctxt "roleset:label" +msgid "label" +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:85 +msgctxt "roleset:label|desc" +msgid "A short button label for this role." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:90 +msgctxt "roleset:label|long_desc" +msgid "" +"A short name for this role, to be displayed in button labels, dropdown " +"titles, and some menu layouts. By default uses the Discord role name." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:104 +#, possible-python-brace-format +msgctxt "roleset:role|set_response" +msgid "This menu role is now called `{value}`." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:112 +msgctxt "roleset:emoji" +msgid "emoji" +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:115 +msgctxt "roleset:emoji|desc" +msgid "The emoji associated with this role." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:119 +msgctxt "roleset:emoji|long_desc" +msgid "" +"The role emoji is used for the reaction (in reaction role menus), and " +"otherwise appears next to the role label in the button and dropdown styles. " +"The emoji is also displayed next to the role in most menu templates." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:157 +#, possible-python-brace-format +msgctxt "roleset:emoji|error:test_emoji" +msgid "The selected emoji `{emoji}` is invalid or has been deleted." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:168 +#, possible-python-brace-format +msgctxt "roleset:emoji|set_response:set" +msgid "The menu role emoji is now {emoji}." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:173 +msgctxt "roleset:emoji|set_response:unset" +msgid "The menu role emoji has been removed." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:181 +msgctxt "roleset:description" +msgid "description" +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:184 +msgctxt "roleset:description|desc" +msgid "A longer description of this role." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:189 +msgctxt "roleset:description|long_desc" +msgid "" +"The description is displayed under the role label in dropdown style menus. " +"It may also be used as a substitution key in custom role selection responses." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:205 +msgctxt "roleset:description|set_response:set" +msgid "The role description has been set." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:210 +msgctxt "roleset:description|set_response:unset" +msgid "The role description has been removed." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:218 +msgctxt "roleset:price" +msgid "price" +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:221 +msgctxt "roleset:price|desc" +msgid "Price of the role, in LionCoins." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:225 +msgctxt "roleset:price|long_desc" +msgid "How much the role costs when selected, in LionCoins." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:229 +msgctxt "roleset:price|accepts" +msgid "Amount of coins that the role costs." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:242 +#, possible-python-brace-format +msgctxt "roleset:price|set_response:set" +msgid "This role will now cost {price} to equip." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:247 +msgctxt "roleset:price|set_response:unset" +msgid "This role will now be free to equip from this role menu." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:255 +msgctxt "roleset:duration" +msgid "duration" +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:258 +msgctxt "roleset:duration|desc" +msgid "Lifetime of the role after selection" +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:262 +msgctxt "roleset:duration|long_desc" +msgid "" +"Allows creation of 'temporary roles' which expire a given time after being " +"equipped. Refunds will not be given upon expiry." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:267 +msgctxt "roleset:duration|notset" +msgid "Forever." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:280 +#, possible-python-brace-format +msgctxt "roleset:duration|set_response:set" +msgid "This role will now expire after {duration}." +msgstr "" + +#: src/modules/rolemenus/roleoptions.py:285 +msgctxt "roleset:duration|set_response:unset" +msgid "This role will no longer expire after being selected." +msgstr "" + +#: src/modules/rolemenus/templates.py:53 +msgctxt "template:simple|name" +msgid "Simple Menu" +msgstr "" + +#: src/modules/rolemenus/templates.py:57 +msgctxt "template:simple|desc" +msgid "A simple embedded list of roles in the menu" +msgstr "" + +#: src/modules/rolemenus/templates.py:96 +msgctxt "template:two_column|name" +msgid "Two Column" +msgstr "" + +#: src/modules/rolemenus/templates.py:100 +msgctxt "template:two_column|desc" +msgid "A compact two column role layout. Excludes prices and durations." +msgstr "" + +#: src/modules/rolemenus/templates.py:131 +msgctxt "template:three_column|name" +msgid "Three Column" +msgstr "" + +#: src/modules/rolemenus/templates.py:135 +msgctxt "template:three_column|desc" +msgid "" +"A compact three column layout using emojis and labels, excluding prices and " +"durations." +msgstr "" + +#: src/modules/rolemenus/templates.py:168 +msgctxt "template:shop|name" +msgid "Role Shop" +msgstr "" + +#: src/modules/rolemenus/templates.py:172 +msgctxt "template:shop|desc" +msgid "A single column display suitable for simple role shops" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:280 +msgctxt "rolemenu|menu_message|error|title" +msgid "ROLE MENU DISPLAY ERROR" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:284 +#, possible-python-brace-format +msgctxt "rolemenu|menu_message|error|desc" +msgid "" +"A critical error occurred trying to display this role menu.\n" +"Error: `{error}`." +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:336 +#, possible-python-brace-format +msgctxt "rolemenu|update_reactions|error" +msgid "" +"Could not add the {emoji} reaction, perhaps I do not have access to this " +"emoji! Reactions will need to be added manually." +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:381 +msgctxt "ui:rolemenu_dropdown|placeholder" +msgid "Select Roles" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:472 +msgctxt "rolemenu|error:role_gone" +msgid "This role no longer exists!" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:482 +#, possible-python-brace-format +msgctxt "rolemenu|deselect|error:sticky" +msgid "{role} is a sticky role, you cannot remove it with this menu!" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:495 +msgctxt "rolemenu|deselect|error:perms" +msgid "I don't have enough permissions to remove this role from you!" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:502 +msgctxt "rolemenu|deselect|error:discord" +msgid "An unknown error occurred removing your role! Please try again later." +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:531 +msgctxt "rolemenu|deslect|success|title" +msgid "Role removed" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:537 +#, possible-python-brace-format +msgctxt "rolemenu|deselect|success:refund|desc" +msgid "You have removed {role}, and been refunded {coin} **{amount}**." +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:542 +#, possible-python-brace-format +msgctxt "rolemenu|deselect|success:norefund|desc" +msgid "You have unequipped {role}." +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:554 +#, possible-python-brace-format +msgctxt "rolemenu|select|error:required_role" +msgid "You need to have the {role} role to use this!" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:568 +#, possible-python-brace-format +msgctxt "rolemenu|select|error:max_obtainable" +msgid "You already have the maximum of {obtainable} roles from this menu!" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:582 +#, possible-python-brace-format +msgctxt "rolemenu|select|error:insufficient_funds" +msgid "" +"The role {role} costs {coin}**{cost}**,but you only have {coin}**{balance}**!" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:600 +msgctxt "rolemenu|select|error:perms" +msgid "I don't have enough permissions to give you this role!" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:607 +msgctxt "rolemenu|select|error:discord" +msgid "" +"An unknown error occurred while assigning your role! Please try again later." +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:649 +msgctxt "rolemenu|select|success|title" +msgid "Role equipped" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:655 +#, possible-python-brace-format +msgctxt "rolemenu|select|success:purchase|desc" +msgid "You have purchased the role {role} for {coin}**{amount}**" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:660 +#, possible-python-brace-format +msgctxt "rolemenu|select|success:nopurchase|desc" +msgid "You have equipped the role {role}" +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:666 +#, possible-python-brace-format +msgctxt "rolemenu|select|expires_at" +msgid "The role will expire at {timestamp}." +msgstr "" + +#: src/modules/rolemenus/rolemenu.py:719 +#, possible-python-brace-format +msgctxt "rolemenu|content:reactions" +msgid "[Click here]({jump_link}) to jump back." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:56 +msgctxt "menuset:name" +msgid "name" +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:59 +msgctxt "menuset:name|desc" +msgid "Brief name for this role menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:64 +msgctxt "menuset:name|long_desc" +msgid "" +"The role menu name is displayed when selecting the menu in commands, and as " +"the title of most default menu layouts." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:78 +#, possible-python-brace-format +msgctxt "menuset:name|set_response" +msgid "This role menu will now be called **{new_name}**." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:86 +msgctxt "menuset:sticky" +msgid "sticky_roles" +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:89 +msgctxt "menuset:sticky|desc" +msgid "Whether the menu can be used to unequip roles." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:94 +msgctxt "menuset:sticky|long_desc" +msgid "" +"When enabled, members will not be able to remove equipped roles by selecting " +"them in this menu. Note that when disabled, members will be able to unequip " +"the menu roles even if they were not obtained from the menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:110 +msgctxt "menuset:sticky|set_response:true" +msgid "Members will no longer be able to remove roles with this menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:115 +msgctxt "menuset:sticky|set_response:false" +msgid "Members will now be able to remove roles with this menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:123 +msgctxt "menuset:refunds" +msgid "refunds" +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:126 +msgctxt "menuset:refunds|desc" +msgid "Whether removing a role will refund the purchase price for that role." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:131 +msgctxt "menuset:refunds|long_desc" +msgid "" +"When enabled, members who *purchased a role through this role menu* will " +"obtain a full refund when they remove the role through the menu.\n" +"**Refunds will only be given for roles purchased through the same menu.**\n" +"**The `sticky` option must be disabled to allow members to remove roles.**" +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:148 +msgctxt "menuset:refunds|set_response:true" +msgid "Members will now be refunded when removing a role with this menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:153 +msgctxt "menuset:refunds|set_response:false" +msgid "Members will no longer be refunded when removing a role with this menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:161 +msgctxt "menuset:obtainable" +msgid "obtainable" +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:164 +msgctxt "menuset:obtainable|desc" +msgid "The maximum number of roles equippable from this menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:169 +msgctxt "menuset:obtainable|long_desc" +msgid "" +"Members will not be able to obtain more than this number of roles from this " +"menu. This counts roles that were not obtained through the rolemenu system." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:174 +msgctxt "menuset:obtainable|notset" +msgid "Unlimited." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:188 +#, possible-python-brace-format +msgctxt "menuset:obtainable|set_response:set" +msgid "" +"Members will be able to select a maximum of **{value}** roles from this menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:193 +msgctxt "menuset:obtainable|set_response:unset" +msgid "Members will be able to select any number of roles from this menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:201 +msgctxt "menuset:required_role" +msgid "required_role" +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:204 +msgctxt "menuset:required_role|desc" +msgid "Initial role required to use this menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:209 +msgctxt "menuset:required_role|long_desc" +msgid "" +"If set, only members who have the `required_role` will be able to obtain or " +"remove roles using this menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:223 +#, possible-python-brace-format +msgctxt "menuset:required_role|set_response:set" +msgid "Members will need to have the {role} role to use this menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:228 +msgctxt "menuset:required_role|set_response:unset" +msgid "Any member who can see the menu may use it." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:236 +msgctxt "menuset:message" +msgid "custom_message" +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:239 +msgctxt "menuset:message|desc" +msgid "Custom message data used to display the menu." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:243 +msgctxt "menuset:message|long_desc" +msgid "" +"This setting determines the body of the menu message, including the message " +"content and the message embed(s). While most easily modifiable through the " +"`Edit Message` button, raw JSON-formatted message data may also be uploaded " +"via command." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:260 +msgctxt "menuset:message|set_response:set" +msgid "The role menu message has been set. Edit through the menu editor." +msgstr "" + +#: src/modules/rolemenus/menuoptions.py:265 +msgctxt "menuset:message|set_response:unset" +msgid "" +"The role menu message has been unset. Select a template through the menu " +"editor." +msgstr "" + +#: src/modules/rolemenus/ui/menus.py:105 +msgctxt "ui:menu_list|menu:editmenu|placeholder" +msgid "Select Menu to Edit" +msgstr "" + +#: src/modules/rolemenus/ui/menus.py:129 +#, possible-python-brace-format +msgctxt "ui:menu_list|menu_line:attached" +msgid "[`{name}`]({jump_url}) with `{count}` roles." +msgstr "" + +#: src/modules/rolemenus/ui/menus.py:138 +#, possible-python-brace-format +msgctxt "ui:menu_list|menu_line:unattached" +msgid "`{name}` with `{count}` roles." +msgstr "" + +#: src/modules/rolemenus/ui/menus.py:163 +#, possible-python-brace-format +msgctxt "ui:menu_list|embed|title" +msgid "Role Menus in {guild}" +msgstr "" + +#: src/modules/rolemenus/ui/menus.py:172 +msgctxt "ui:menu_list|embed|field:tips|name" +msgid "Tips" +msgstr "" + +#: src/modules/rolemenus/ui/menus.py:176 +msgctxt "ui:menu_list|embed|field:tips|value" +msgid "" +"Right click an existing message or use the `newmenu` command to create a new " +"menu." +msgstr "" + +#: src/modules/rolemenus/ui/menus.py:189 +msgctxt "ui:menu_list|embed|field:unattached|name" +msgid "Unattached Menus" +msgstr "" + +#: src/modules/rolemenus/ui/menus.py:201 +msgctxt "ui:menu_list|embed|footer:text" +msgid "Click a menu name to jump to the message." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:93 +msgctxt "ui:menu_editor|preview|error:title" +msgid "Display Error!" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:97 +#, possible-python-brace-format +msgctxt "ui:menu_editor|preview|error:desc" +msgid "" +"Failed to display preview!\n" +"**Error:** `{exception}`" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:151 +msgctxt "ui:menu_editor|button:options|label" +msgid "Menu Options" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:179 +msgctxt "ui:menu_editor|button:bulk_edit|modal|title" +msgid "Menu Options" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:215 +msgctxt "ui:menu_editor|button:bulk_edit|label" +msgid "Bulk Edit" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:235 +msgctxt "ui:menu_editor|button:sticky|label" +msgid "Toggle Sticky" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:259 +msgctxt "ui:menu_editor|button:refunds|label" +msgid "Toggle Refunds" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:289 +msgctxt "ui:menu_editor|menu:reqroles|placeholder" +msgid "Select Required Role" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:308 +msgctxt "ui:menu_editor|button:modify_roles|label" +msgid "Modify Roles" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:337 +msgctxt "ui:menu_editor|role_editor|modal|title" +msgid "Edit Menu Role" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:411 +msgctxt "ui:menu_editor|menu:add_roles|error:too_many_reactions" +msgid "Too many roles! Reaction role menus cannot exceed `20` roles." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:416 +msgctxt "ui:menu_editor|menu:add_roles|error:too_many_roles" +msgid "Too many roles! Role menus cannot have more than `25` roles." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:455 +msgctxt "ui:menu_editor|menu:add_roles|placeholder" +msgid "Add Roles" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:481 +msgctxt "ui:menu_editor|menu:edit_roles|placeholder" +msgid "Edit Roles" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:514 +msgctxt "ui:menu_editor|menu:del_role|placeholder" +msgid "Remove Roles" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:538 +msgctxt "ui:menu_editor|button:style|error:non-managed" +msgid "" +"Cannot change the style of a menu attached to a message I did not send! " +"Please repost first." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:551 +msgctxt "ui:menu_editor|button:style|label" +msgid "Menu Style" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:576 +msgctxt "ui:menu_editor|menu:style|error:too_many_reactions" +msgid "" +"Too many roles! The Reaction style is limited to `20` roles (Discord " +"limitation)." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:586 +msgctxt "ui:menu_editor|menu:style|error:incomplete_emojis" +msgid "" +"Cannot switch to the Reaction Role Style! Every role needs to have a " +"distinct emoji first." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:602 +msgctxt "ui:menu_editor|menu:style|placeholder" +msgid "Select Menu Style" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:606 +msgctxt "ui:menu_editor|menu:style|option:reaction|label" +msgid "Reaction Roles" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:609 +msgctxt "ui:menu_editor|menu:style|option:reaction|desc" +msgid "Roles are represented compactly as clickable reactions on a message." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:615 +msgctxt "ui:menu_editor|menu:style|option:button|label" +msgid "Button Menu" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:618 +msgctxt "ui:menu_editor|menu:style|option:button|desc" +msgid "" +"Roles are represented in 5 rows of 5 buttons, each with an emoji and label." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:624 +msgctxt "ui:menu_editor|menu:style|option:dropdown|label" +msgid "Dropdown Menu" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:627 +msgctxt "ui:menu_editor|menu:style|option:dropdown|desc" +msgid "Roles are selectable from a dropdown menu below the message." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:697 +msgctxt "ui:menu_editor|menu:template|placeholder" +msgid "Select Message Template" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:707 +msgctxt "ui:menu_editor|menu:template|option:custom|label" +msgid "Custom Message" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:712 +msgctxt "ui:menu_editor|menu:template|option:custom|description" +msgid "Entirely custom menu message (opens an interactive editor)." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:729 +msgctxt "ui:menu_editor|button:delete|confirm|title" +msgid "Are you sure you want to delete this menu? This is not reversible!" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:734 +msgctxt "ui:menu_editor|button:delete|confirm|button:yes" +msgid "Yes, Delete Now" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:739 +msgctxt "ui:menu_editor|button:delete|confirm|button:no" +msgid "No, Go Back" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:756 +msgctxt "ui:menu_editor|button:delete|label" +msgid "Delete Menu" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:813 +msgctxt "ui:menu_editor|button:edit_msg|label" +msgid "Edit Message" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:844 +msgctxt "ui:menu_editor|button:preview|label" +msgid "Preview" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:860 +msgctxt "ui:menu_editor|button:repost|widget:repost|menu:channel|placeholder" +msgid "Select New Channel" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:878 +msgctxt "ui:menu_editor|button:repost|widget:repost|error:perms|title" +msgid "Insufficient Permissions!" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:882 +msgctxt "ui:menu_editor|button:repost|eidget:repost|error:perms|desc" +msgid "I lack the `EMBED_LINKS` or `SEND_MESSAGES` permission in this channel." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:895 +#, possible-python-brace-format +msgctxt "ui:menu_editor|button:repost|widget:repost|error:post_failed" +msgid "" +"An error ocurred while posting to {channel}. Do I have sufficient " +"permissions?" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:907 +msgctxt "ui:menu_editor|button:repost|widget:repost|success|title" +msgid "Role Menu Moved" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:913 +#, possible-python-brace-format +msgctxt "ui:menu_editor|button:repost|widget:repost|success|desc:general" +msgid "The role menu `{name}` is now available at {message_link}." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:927 +msgctxt "ui:menu_editor|button:repost|widget:repost|success|desc:reactions" +msgid "Please check the message reactions are correct." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:940 +msgctxt "ui:menu_editor|button:repost|widget:repost|title" +msgid "Repost Role Menu" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:944 +msgctxt "ui:menu_editor|button:repost|widget:repost|description" +msgid "Please select the channel to which you want to resend this menu." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:959 +msgctxt "ui:menu_editor|button:repost|label:repost" +msgid "Repost" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:964 +msgctxt "ui:menu_editor|button:repost|label:post" +msgid "Post" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:974 +msgctxt "ui:menu_editor|embed|title" +msgid "Role Menu Editor" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:983 +#, possible-python-brace-format +msgctxt "ui:menu_editor|embed|description|jump_text:attached" +msgid "Members may use this menu from {jump_url}" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:988 +msgctxt "ui:menu_editor|embed|description|jump_text:unattached" +msgid "" +"This menu is not currently active!\n" +"Make it available by clicking `Post` below." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:1002 +msgctxt "ui:menu_editor|embed|field:tips|name" +msgid "Command Tips" +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:1006 +#, possible-python-brace-format +msgctxt "ui:menu_editor|embed|field:tips|value" +msgid "" +"Use the following commands for faster menu setup.\n" +"{menuedit} to edit the above menu options.\n" +"{addrole} to add new roles (recommended for roles with emojis).\n" +"{editrole} to edit role options." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:1046 +msgctxt "ui:menu_editor|error:invald_emoji|title" +msgid "Invalid emoji encountered." +msgstr "" + +#: src/modules/rolemenus/ui/menueditor.py:1050 +#, possible-python-brace-format +msgctxt "ui:menu_editor|error:invalid_emoji|desc" +msgid "" +"The emoji `{emoji}` for menu role `{label}` no longer exists, unsetting." +msgstr "" diff --git a/locales/templates/rooms.pot b/locales/templates/rooms.pot new file mode 100644 index 00000000..0b53db6f --- /dev/null +++ b/locales/templates/rooms.pot @@ -0,0 +1,705 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: src/modules/rooms/settingui.py:38 +msgctxt "ui:room_config|menu:category|placeholder" +msgid "Select Private Room Category" +msgstr "" + +#: src/modules/rooms/settingui.py:52 +msgctxt "ui:room_config|button:visible|label" +msgid "Toggle Room Visibility" +msgstr "" + +#: src/modules/rooms/settingui.py:62 +msgctxt "ui:rooms_config|embed|title" +msgid "Private Room System Configuration Panel" +msgstr "" + +#: src/modules/rooms/settingui.py:98 +msgctxt "dash:rooms|title" +msgid "Private Room Configuration ({commands[configure rooms]})" +msgstr "" + +#: src/modules/rooms/roomui.py:55 +msgctxt "ui:room_status|error:owner_required" +msgid "You must be the private room owner to do this!" +msgstr "" + +#: src/modules/rooms/roomui.py:71 +msgctxt "ui:room_status|error:member_required" +msgid "You need to be a member of the private room to do this!" +msgstr "" + +#: src/modules/rooms/roomui.py:89 +msgctxt "ui:room_status|button:deposit|modal:deposit|title" +msgid "Room Deposit" +msgstr "" + +#: src/modules/rooms/roomui.py:93 +msgctxt "ui:room_status|button:deposit|modal:deposit|field:question|label" +msgid "How many LionCoins do you want to deposit?" +msgstr "" + +#: src/modules/rooms/roomui.py:111 +#, possible-python-brace-format +msgctxt "ui:room_status|button:deposit|error:invalid_number" +msgid "Cannot deposit `{inputted}` coins. Please enter a positive integer." +msgstr "" + +#: src/modules/rooms/roomui.py:133 +#, possible-python-brace-format +msgctxt "ui:room_status|button:deposit|error:insufficient_funds" +msgid "" +"You cannot deposit {coin}**{amount}**! You only have {coin}**{balance}**." +msgstr "" + +#: src/modules/rooms/roomui.py:154 +msgctxt "ui:room_status|button:deposit|label" +msgid "Deposit" +msgstr "" + +#: src/modules/rooms/roomui.py:165 +msgctxt "ui:room_status|button:edit|label" +msgid "Edit Room" +msgstr "" + +#: src/modules/rooms/roomui.py:198 +msgctxt "ui:room_status|button:timer|modal:add_timer|title" +msgid "Create Room Timer" +msgstr "" + +#: src/modules/rooms/roomui.py:230 +msgctxt "ui:room_status|button:timer|timer_created" +msgid "Timer created successfully! Use `/pomodoro edit` to configure further." +msgstr "" + +#: src/modules/rooms/roomui.py:248 +msgctxt "ui:room_status|button:timer|label:edit_timer" +msgid "Edit Timer" +msgstr "" + +#: src/modules/rooms/roomui.py:255 +msgctxt "ui:room_status|button:timer|label:add_timer" +msgid "Add Timer" +msgstr "" + +#: src/modules/rooms/roomui.py:298 +#, possible-python-brace-format +msgctxt "ui:room_status|menu:invite|error:too_many_members" +msgid "" +"Too many members! You are inviting `{count}` new members to your room, but " +"you already have `{current}` members! The member cap is `{cap}`." +msgstr "" + +#: src/modules/rooms/roomui.py:324 +msgctxt "ui:room_status|menu:invite_menu|placeholder:capped" +msgid "Room member cap reached!" +msgstr "" + +#: src/modules/rooms/roomui.py:330 +msgctxt "ui:room_status|menu:invite_menu|placeholder:notcapped" +msgid "Add Members" +msgstr "" + +#: src/modules/rooms/roomui.py:353 +msgctxt "ui:room_status|menu:kick_menu|placeholder" +msgid "Remove Members" +msgstr "" + +#: src/modules/rooms/roomui.py:361 +msgctxt "ui:room_status|embed|title" +msgid "Room Control Panel" +msgstr "" + +#: src/modules/rooms/roomui.py:369 +msgctxt "ui:room_status|embed|field:channel|name" +msgid "Channel" +msgstr "" + +#: src/modules/rooms/roomui.py:374 +msgctxt "ui:room_status|embed|field:owner|name" +msgid "Owner" +msgstr "" + +#: src/modules/rooms/roomui.py:379 +msgctxt "ui:room_status|embed|field:created|name" +msgid "Created At" +msgstr "" + +#: src/modules/rooms/roomui.py:389 +#, possible-python-brace-format +msgctxt "ui:room_status|embed|field:bank|value:expiring" +msgid "" +"**Warning:** Insufficient room balance to pay next rent ({coin} **{rent}" +"**).\n" +"The room will expire {expiry}.\n" +"Use {room_deposit_cmd} to increase balance." +msgstr "" + +#: src/modules/rooms/roomui.py:401 +#, possible-python-brace-format +msgctxt "ui:room_status|embed|field:bank|value:notexpiring" +msgid "Next rent due {time} (- {coin}**{rent}**)" +msgstr "" + +#: src/modules/rooms/roomui.py:410 +#, possible-python-brace-format +msgctxt "ui:room_status|embed|field:bank|name" +msgid "Room Balance: {coin}**{amount}**" +msgstr "" + +#: src/modules/rooms/roomui.py:422 +#, possible-python-brace-format +msgctxt "ui:room_status|embed|field:members|name" +msgid "Members ({count}/{cap})" +msgstr "" + +#: src/modules/rooms/cog.py:316 +msgctxt "cmd:room" +msgid "room" +msgstr "" + +#: src/modules/rooms/cog.py:317 +msgctxt "cmd:room|desc" +msgid "Base command group for private room configuration." +msgstr "" + +#: src/modules/rooms/cog.py:324 +msgctxt "cmd:room_rent" +msgid "rent" +msgstr "" + +#: src/modules/rooms/cog.py:327 +msgctxt "cmd:room_rent|desc" +msgid "Rent a private voice channel with LionCoins." +msgstr "" + +#: src/modules/rooms/cog.py:331 +msgctxt "cmd:room_rent|param:days" +msgid "days" +msgstr "" + +#: src/modules/rooms/cog.py:332 +msgctxt "cmd:room_rent|param:members" +msgid "members" +msgstr "" + +#: src/modules/rooms/cog.py:333 +msgctxt "cmd:room_rent|param:name" +msgid "name" +msgstr "" + +#: src/modules/rooms/cog.py:338 +msgctxt "cmd:room_rent|param:days|desc" +msgid "Number of days to pre-purchase. (Default: 1)" +msgstr "" + +#: src/modules/rooms/cog.py:342 +msgctxt "cmd:room_rent|param:members|desc" +msgid "Mention the members you want to add to your private room." +msgstr "" + +#: src/modules/rooms/cog.py:346 +msgctxt "cmd:room_rent|param:name|desc" +msgid "Name of your private voice channel." +msgstr "" + +#: src/modules/rooms/cog.py:364 +msgctxt "cmd:room_rent|error:not_setup" +msgid "" +"The private room system has not been set up! A private room category needs " +"to be set first with `/configure rooms`." +msgstr "" + +#: src/modules/rooms/cog.py:375 +msgctxt "cmd:room_rent|error:insufficient_perms" +msgid "" +"I do not have enough permissions to create a new channel under the " +"configured private room category!" +msgstr "" + +#: src/modules/rooms/cog.py:389 +#, possible-python-brace-format +msgctxt "cmd:room_rent|error:room_exists" +msgid "You already own a private room! Click to visit: {channel}" +msgstr "" + +#: src/modules/rooms/cog.py:409 +#, possible-python-brace-format +msgctxt "cmd:room_rent|error:member_not_found" +msgid "Could not find the requested member {mention} in this server!" +msgstr "" + +#: src/modules/rooms/cog.py:423 +#, possible-python-brace-format +msgctxt "cmd:room_rent|error:too_many_members" +msgid "" +"Too many members! You have requested to add `{count}` members to your room, " +"but the maximum private room size is `{cap}`!" +msgstr "" + +#: src/modules/rooms/cog.py:437 +#, possible-python-brace-format +msgctxt "cmd:room_rent|confirm:purchase" +msgid "" +"Are you sure you want to spend {coin}**{required}** to rent a private room " +"for `one` day?" +msgid_plural "" +"Are you sure you want to spend {coin}**{required}** to rent a private room " +"for `{days}` days?" +msgstr[0] "" +msgstr[1] "" + +#: src/modules/rooms/cog.py:466 +#, possible-python-brace-format +msgctxt "cmd:room_rent|error:insufficient_funds" +msgid "" +"Renting a private room for `one` day costs {coin}**{required}**, but you " +"only have {coin}**{balance}**!" +msgid_plural "" +"Renting a private room for `{days}` days costs {coin}**{required}**, but you " +"only have {coin}**{balance}**!" +msgstr[0] "" +msgstr[1] "" + +#: src/modules/rooms/cog.py:498 +#, possible-python-brace-format +msgctxt "cmd:room_rent|success" +msgid "Successfully created your private room {channel}!" +msgstr "" + +#: src/modules/rooms/cog.py:503 +msgctxt "cmd:room_rent|success|title" +msgid "Private Room Created!" +msgstr "" + +#: src/modules/rooms/cog.py:509 +msgctxt "cmd:room_status" +msgid "status" +msgstr "" + +#: src/modules/rooms/cog.py:512 +msgctxt "cmd:room_status|desc" +msgid "Display the status of your current room." +msgstr "" + +#: src/modules/rooms/cog.py:529 +msgctxt "cmd:room_status|error:no_target" +msgid "" +"Could not identify target private room! Please re-run the command in the " +"private room you wish to view the status of." +msgstr "" + +#: src/modules/rooms/cog.py:544 +msgctxt "cmd:room_invite" +msgid "invite" +msgstr "" + +#: src/modules/rooms/cog.py:547 +msgctxt "cmd:room_invite|desc" +msgid "Add members to your private room." +msgstr "" + +#: src/modules/rooms/cog.py:551 +msgctxt "cmd:room_invite|param:members" +msgid "members" +msgstr "" + +#: src/modules/rooms/cog.py:556 +msgctxt "cmd:room_invite|param:members|desc" +msgid "Mention the members you want to add." +msgstr "" + +#: src/modules/rooms/cog.py:570 +#, possible-python-brace-format +msgctxt "cmd:room_invite|error:no_room" +msgid "" +"You do not own a private room! Use `/room rent` to rent one with {coin}!" +msgstr "" + +#: src/modules/rooms/cog.py:591 +#, possible-python-brace-format +msgctxt "cmd:room_invite|error:member_not_found" +msgid "Could not find the invited member {mention} in this server!" +msgstr "" + +#: src/modules/rooms/cog.py:602 +msgctxt "cmd:room_invite|error:no_new_members" +msgid "All members mentioned are already in the room!" +msgstr "" + +#: src/modules/rooms/cog.py:616 +#, possible-python-brace-format +msgctxt "cmd:room_invite|error:too_many_members" +msgid "" +"Too many members! You have invited `{count}` new members to your room, but " +"you already have `{current}`, and the member cap is `{cap}`!" +msgstr "" + +#: src/modules/rooms/cog.py:640 +msgctxt "cmd:room_invite|success|ack" +msgid "Members Invited successfully." +msgstr "" + +#: src/modules/rooms/cog.py:648 +msgctxt "cmd:room_kick" +msgid "kick" +msgstr "" + +#: src/modules/rooms/cog.py:651 +msgctxt "cmd:room_kick|desc" +msgid "Remove a members from your private room." +msgstr "" + +#: src/modules/rooms/cog.py:655 +msgctxt "cmd:room_kick|param:members" +msgid "members" +msgstr "" + +#: src/modules/rooms/cog.py:660 +msgctxt "cmd:room_kick|param:members|desc" +msgid "" +"Mention the members you want to remove. Also accepts space-separated user " +"ids." +msgstr "" + +#: src/modules/rooms/cog.py:674 +#, possible-python-brace-format +msgctxt "cmd:room_kick|error:no_room" +msgid "" +"You do not own a private room! Use `/room rent` to rent one with {coin}!" +msgstr "" + +#: src/modules/rooms/cog.py:691 +msgctxt "cmd:room_kick|error:no_matching_members" +msgid "None of the mentioned members are in this room!" +msgstr "" + +#: src/modules/rooms/cog.py:708 +msgctxt "cmd:room_kick|success|ack" +msgid "Members removed." +msgstr "" + +#: src/modules/rooms/cog.py:714 +msgctxt "cmd:room_transfer" +msgid "transfer" +msgstr "" + +#: src/modules/rooms/cog.py:717 +msgctxt "cmd:room_transfer|desc" +msgid "Transfer your private room to another room member. Not reversible!" +msgstr "" + +#: src/modules/rooms/cog.py:721 +msgctxt "cmd:room_transfer|param:new_owner" +msgid "new_owner" +msgstr "" + +#: src/modules/rooms/cog.py:726 +msgctxt "cmd:room_transfer|param:new_owner" +msgid "The room member you would like to transfer your room to." +msgstr "" + +#: src/modules/rooms/cog.py:740 +msgctxt "cmd:room_transfer|error:no_room" +msgid "You do not own a private room to transfer!" +msgstr "" + +#: src/modules/rooms/cog.py:752 +#, possible-python-brace-format +msgctxt "cmd:room_transfer|error:target_not_member" +msgid "" +"{mention} is not a member of your private room! You must invite them first." +msgstr "" + +#: src/modules/rooms/cog.py:764 +#, possible-python-brace-format +msgctxt "cmd:room_transfer|error:target_has_room" +msgid "{mention} already owns a room! Members can only own one room at a time." +msgstr "" + +#: src/modules/rooms/cog.py:773 +#, possible-python-brace-format +msgctxt "cmd:room_transfer|confirm|question" +msgid "" +"Are you sure you wish to transfer your private room {channel} to " +"{new_owner}? This action is not reversible!" +msgstr "" + +#: src/modules/rooms/cog.py:793 +#, possible-python-brace-format +msgctxt "cmd:room_transfer|success|description" +msgid "" +"You have successfully transferred ownership of {channel} to {new_owner}." +msgstr "" + +#: src/modules/rooms/cog.py:799 +msgctxt "cmd:room_deposit" +msgid "deposit" +msgstr "" + +#: src/modules/rooms/cog.py:802 +msgctxt "cmd:room_deposit|desc" +msgid "" +"Deposit LionCoins in your private room bank to add more days. (Members may " +"also deposit!)" +msgstr "" + +#: src/modules/rooms/cog.py:806 +msgctxt "cmd:room_deposit|param:coins" +msgid "coins" +msgstr "" + +#: src/modules/rooms/cog.py:811 +msgctxt "cmd:room_deposit|param:coins|desc" +msgid "Number of coins to deposit." +msgstr "" + +#: src/modules/rooms/cog.py:831 +msgctxt "cmd:room_deposit|error:no_target" +msgid "" +"Could not identify target private room! Please re-run the command in the " +"private room you wish to contribute to." +msgstr "" + +#: src/modules/rooms/cog.py:848 +#, possible-python-brace-format +msgctxt "cmd:room_deposit|error:insufficient_funds" +msgid "" +"You cannot deposit {coin}**{amount}**! You only have {coin}**{balance}**." +msgstr "" + +#: src/modules/rooms/cog.py:870 +#, possible-python-brace-format +msgctxt "cmd:room_depost|success" +msgid "" +"Success! You have contributed {coin}**{amount}** to the private room bank." +msgstr "" + +#: src/modules/rooms/cog.py:885 +msgctxt "cmd:configure_rooms" +msgid "rooms" +msgstr "" + +#: src/modules/rooms/cog.py:886 +msgctxt "cmd:configure_rooms|desc" +msgid "Configure Rented Private Rooms" +msgstr "" + +#: src/modules/rooms/room.py:81 +#, possible-python-brace-format +msgctxt "room|notify:deposit|description" +msgid "{member} has deposited {coin}**{amount}** into the room bank!" +msgstr "" + +#: src/modules/rooms/room.py:104 +msgctxt "room|notify:new_members|title" +msgid "New Members!" +msgstr "" + +#: src/modules/rooms/room.py:108 +#, possible-python-brace-format +msgctxt "room|notify:new_members|desc" +msgid "Welcome {members}" +msgstr "" + +#: src/modules/rooms/room.py:163 +#, possible-python-brace-format +msgctxt "room|notify:transfer|description" +msgid "{old_owner} has transferred private room ownership to {new_owner}" +msgstr "" + +#: src/modules/rooms/room.py:227 +msgctxt "room|embed:expiry|title" +msgid "Private Room Expired!" +msgstr "" + +#: src/modules/rooms/room.py:231 +#, possible-python-brace-format +msgctxt "room|embed:expiry|description" +msgid "Your private room in **{guild}** has expired!" +msgstr "" + +#: src/modules/rooms/room.py:245 +#, possible-python-brace-format +msgctxt "room|tick|rent_deducted" +msgid "Daily rent deducted from room balance. New balance: {coin}**{amount}**" +msgstr "" + +#: src/modules/rooms/settings.py:21 +msgctxt "guildset:room_category" +msgid "rooms_category" +msgstr "" + +#: src/modules/rooms/settings.py:25 +msgctxt "guildset:rooms_category|desc" +msgid "Category in which to create private voice channels." +msgstr "" + +#: src/modules/rooms/settings.py:29 +msgctxt "guildset:room_category|long_desc" +msgid "" +"When a member uses {cmds[room rent]} to rent a new private room, a private " +"voice channel will be created under this category, manageable by the member. " +"I must have permission to create new channels in this category, as well as " +"to manage permissions." +msgstr "" + +#: src/modules/rooms/settings.py:37 +msgctxt "guildset:room_category|accepts" +msgid "Private room category name or id." +msgstr "" + +#: src/modules/rooms/settings.py:51 +msgctxt "guildset:rooms_category|set_response:unset" +msgid "" +"The private room category has been unset. Existing private rooms will not be " +"affected. Delete the channels manually to remove the private rooms." +msgstr "" + +#: src/modules/rooms/settings.py:57 +#, possible-python-brace-format +msgctxt "guildset:rooms_category|set_response:set" +msgid "" +"Private room category has been set to {channel}. Existing private rooms will " +"be moved." +msgstr "" + +#: src/modules/rooms/settings.py:67 +#, possible-python-brace-format +msgctxt "guildset:room_category|set_using" +msgid "{cmd} or category selector below." +msgstr "" + +#: src/modules/rooms/settings.py:76 +msgctxt "guildset:rooms_price" +msgid "room_rent" +msgstr "" + +#: src/modules/rooms/settings.py:80 +msgctxt "guildset:rooms_rent|desc" +msgid "Daily rent price for a private room." +msgstr "" + +#: src/modules/rooms/settings.py:84 +msgctxt "guildset:rooms_rent|long_desc" +msgid "" +"Members will be charged this many LionCoins for each day they rent a private " +"room." +msgstr "" + +#: src/modules/rooms/settings.py:88 +msgctxt "guildset:rooms_rent|accepts" +msgid "Number of LionCoins charged per day for a private room." +msgstr "" + +#: src/modules/rooms/settings.py:100 +#, possible-python-brace-format +msgctxt "guildset:rooms_price|set_response" +msgid "Private rooms will now cost {coin}**{amount}** per 24 hours." +msgstr "" + +#: src/modules/rooms/settings.py:112 +msgctxt "guildset:rooms_slots" +msgid "room_member_cap" +msgstr "" + +#: src/modules/rooms/settings.py:115 +msgctxt "guildset:rooms_slots|desc" +msgid "Maximum number of members in each private room." +msgstr "" + +#: src/modules/rooms/settings.py:119 +msgctxt "guildset:rooms_slots|long_desc" +msgid "" +"Private room owners may invite other members to their private room via the " +"UI, or through the {cmds[room invite]} command. This setting limits the " +"maximum number of members a private room may hold." +msgstr "" + +#: src/modules/rooms/settings.py:125 +msgctxt "guildset:rooms_slots|accepts" +msgid "Maximum number of members allowed per private room." +msgstr "" + +#: src/modules/rooms/settings.py:137 +#, possible-python-brace-format +msgctxt "guildset:rooms_slots|set_response" +msgid "Private rooms are now capped to **{amount}** members." +msgstr "" + +#: src/modules/rooms/settings.py:146 +msgctxt "guildset:rooms_visible" +msgid "room_visibility" +msgstr "" + +#: src/modules/rooms/settings.py:149 +msgctxt "guildset:rooms_visible|desc" +msgid "Whether private rented rooms are visible to non-members." +msgstr "" + +#: src/modules/rooms/settings.py:153 +msgctxt "guildset:rooms_visible|long_desc" +msgid "" +"If enabled, new private rooms will be created with the `VIEW_CHANNEL` " +"permission enabled for the `@everyone` role." +msgstr "" + +#: src/modules/rooms/settings.py:157 +msgctxt "guildset:rooms_visible|accepts" +msgid "Visible/Invisible" +msgstr "" + +#: src/modules/rooms/settings.py:159 +msgctxt "guildset:rooms_visible|output:true" +msgid "Visible" +msgstr "" + +#: src/modules/rooms/settings.py:160 +msgctxt "guildset:rooms_visible|output:false" +msgid "Invisible" +msgstr "" + +#: src/modules/rooms/settings.py:166 +msgctxt "guildset:rooms_visible|parse:truthy_values" +msgid "visible|enabled|yes|true|on|enable|1" +msgstr "" + +#: src/modules/rooms/settings.py:170 +msgctxt "guildset:rooms_visible|parse:falsey_values" +msgid "invisible|disabled|no|false|off|disable|0" +msgstr "" + +#: src/modules/rooms/settings.py:182 +msgctxt "guildset:rooms_visible|set_response:enabled" +msgid "Private rooms will now be visible to everyone." +msgstr "" + +#: src/modules/rooms/settings.py:187 +msgctxt "guildset:rooms_visible|set_response:disabled" +msgid "Private rooms will now only be visible to their members (and admins)." +msgstr "" + +#: src/modules/rooms/settings.py:197 +#, possible-python-brace-format +msgctxt "guildset:rooms_visible|set_using" +msgid "{cmd} or toggle below." +msgstr "" diff --git a/locales/templates/schedule.pot b/locales/templates/schedule.pot new file mode 100644 index 00000000..d803f38d --- /dev/null +++ b/locales/templates/schedule.pot @@ -0,0 +1,941 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: src/modules/schedule/cog.py:428 +msgctxt "create_booking|error:no_lobby" +msgid "" +"This server has not set a `session_lobby`, so the scheduled session system " +"is disabled!" +msgstr "" + +#: src/modules/schedule/cog.py:440 +msgctxt "create_booking|error:no_member" +msgid "An unknown Discord error occurred. Please try again in a few minutes." +msgstr "" + +#: src/modules/schedule/cog.py:448 +msgctxt "create_booking|error:blacklisted" +msgid "" +"You have been blacklisted from the scheduled session system in this server." +msgstr "" + +#: src/modules/schedule/cog.py:459 +#, possible-python-brace-format +msgctxt "create_booking|error:insufficient_balance" +msgid "" +"Booking a session costs {coin}**{required}**, but you only have {coin}" +"**{balance}**." +msgid_plural "" +"Booking `{count}` sessions costs {coin}**{required}**, but you only have " +"{coin}**{balance}**." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/schedule/cog.py:473 +msgctxt "create_booking|error:already_booked" +msgid "One or more requested timeslots are already booked!" +msgstr "" + +#: src/modules/schedule/cog.py:668 +msgctxt "cmd:schedule" +msgid "schedule" +msgstr "" + +#: src/modules/schedule/cog.py:671 +msgctxt "cmd:schedule|desc" +msgid "View and manage your scheduled session." +msgstr "" + +#: src/modules/schedule/cog.py:699 +#, possible-python-brace-format +msgctxt "cmd:schedule|cancel_booking|error:parse_slot" +msgid "" +"Time slot `{provided}` not recognised. Please select a session to cancel " +"from the autocomplete options." +msgstr "" + +#: src/modules/schedule/cog.py:707 +#, possible-python-brace-format +msgctxt "cmd:schedule|cancel_booking|error:not_booked" +msgid "Could not cancel {time} booking because it is not booked!" +msgstr "" + +#: src/modules/schedule/cog.py:716 +#, possible-python-brace-format +msgctxt "cmd:schedule|cancel_booking|error:too_soon" +msgid "Cannot cancel {time} booking because it is running or starting soon!" +msgstr "" + +#: src/modules/schedule/cog.py:729 +#, possible-python-brace-format +msgctxt "cmd:schedule|cancel_booking|success" +msgid "Successfully cancelled your booking at {time}." +msgstr "" + +#: src/modules/schedule/cog.py:742 +#, possible-python-brace-format +msgctxt "cmd:schedule|create_booking|error:parse_slot" +msgid "" +"Time slot `{provided}` not recognised. Please select a session to cancel " +"from the autocomplete options." +msgstr "" + +#: src/modules/schedule/cog.py:750 +#, possible-python-brace-format +msgctxt "cmd:schedule|create_booking|error:already_booked" +msgid "You have already booked a scheduled session for {time}." +msgstr "" + +#: src/modules/schedule/cog.py:759 +#, possible-python-brace-format +msgctxt "cmd:schedule|create_booking|error:too_soon" +msgid "Cannot book session at {time} because it is running or starting soon!" +msgstr "" + +#: src/modules/schedule/cog.py:771 +#, possible-python-brace-format +msgctxt "cmd:schedule|create_booking|success" +msgid "You have successfully scheduled a session at {time}." +msgstr "" + +#: src/modules/schedule/cog.py:838 +msgctxt "cmd:configure_schedule" +msgid "schedule" +msgstr "" + +#: src/modules/schedule/cog.py:841 +msgctxt "cmd:configure_schedule|desc" +msgid "Configure Scheduled Session system" +msgstr "" + +#: src/modules/schedule/settings.py:36 +msgctxt "guildset:session_lobby" +msgid "session_lobby" +msgstr "" + +#: src/modules/schedule/settings.py:39 +msgctxt "guildset:session_lobby|desc" +msgid "Channel to post scheduled session announcement and status to." +msgstr "" + +#: src/modules/schedule/settings.py:43 +msgctxt "guildset:session_lobby|long_desc" +msgid "" +"Channel in which to announce scheduled sessions and post their status. I " +"must have the `MANAGE_WEBHOOKS` permission in this channel.\n" +"**This must be configured in order for the scheduled session system to " +"function.**" +msgstr "" + +#: src/modules/schedule/settings.py:49 +msgctxt "guildset:session_lobby|accepts" +msgid "Name or id of the session lobby channel." +msgstr "" + +#: src/modules/schedule/settings.py:61 +#, possible-python-brace-format +msgctxt "guildset:session_lobby|set_response|set" +msgid "Scheduled sessions will now be announced in {channel}" +msgstr "" + +#: src/modules/schedule/settings.py:66 +msgctxt "guildset:session_lobby|set_response|unset" +msgid "" +"The schedule session lobby has been unset. Shutting down scheduled session " +"system." +msgstr "" + +#: src/modules/schedule/settings.py:76 +msgctxt "guildset:session_lobby|formatted|unset" +msgid "`Not Set` (The scheduled session system is disabled.)" +msgstr "" + +#: src/modules/schedule/settings.py:81 +#, possible-python-brace-format +msgctxt "guildset:session_lobby|formatted|set" +msgid "<#{channelid}>" +msgstr "" + +#: src/modules/schedule/settings.py:90 +msgctxt "guildset:session_room" +msgid "session_room" +msgstr "" + +#: src/modules/schedule/settings.py:93 +msgctxt "guildset:session_room|desc" +msgid "Special voice channel open to scheduled session members." +msgstr "" + +#: src/modules/schedule/settings.py:97 +msgctxt "guildset:session_room|long_desc" +msgid "" +"If set, this voice channel serves as a dedicated room for scheduled session " +"members. During (and slightly before) each scheduled session, all members " +"who have booked the session will be given permission to join the voice " +"channel (via permission overwrites). I require the `MANAGE_CHANNEL`, " +"`MANAGE_PERMISSIONS`, `CONNECT`, and `VIEW_CHANNEL` permissions in this " +"channel, and my highest role must be higher than all permission overwrites " +"set in the channel. Furthermore, if this is set to a *category* channel, " +"then the permission overwrites will apply to all *synced* channels under the " +"category, as usual." +msgstr "" + +#: src/modules/schedule/settings.py:107 +msgctxt "guildset:session_room|accepts" +msgid "Name or id of the session room voice channel." +msgstr "" + +#: src/modules/schedule/settings.py:120 +#, possible-python-brace-format +msgctxt "guildset:session_room|set_response|set" +msgid "Schedule session members will now be given access to {channel}" +msgstr "" + +#: src/modules/schedule/settings.py:125 +msgctxt "guildset:session_room|set_response|unset" +msgid "The dedicated schedule session room has been removed." +msgstr "" + +#: src/modules/schedule/settings.py:132 +msgctxt "guildset:session_channels" +msgid "session_channels" +msgstr "" + +#: src/modules/schedule/settings.py:135 +msgctxt "guildset:session_channels|desc" +msgid "Voice channels in which to track activity for scheduled sessions." +msgstr "" + +#: src/modules/schedule/settings.py:139 +msgctxt "guildset:session_channels|long_desc" +msgid "" +"Only activity in these channels (and in `session_room` if set) will count " +"towards scheduled session attendance. If a category is selected, then all " +"channels under the category will also be included. Activity tracking also " +"respects the `untracked_voice_channels` setting." +msgstr "" + +#: src/modules/schedule/settings.py:146 +msgctxt "guildset:session_channels|accepts" +msgid "Comma separated list of session channel names or ids." +msgstr "" + +#: src/modules/schedule/settings.py:163 +#, possible-python-brace-format +msgctxt "guildset:session_channels|set_response|set" +msgid "" +"Activity in the following sessions will now count towards scheduled session " +"attendance: {channels}" +msgstr "" + +#: src/modules/schedule/settings.py:168 +msgctxt "guildset:session_channels|set_response|unset" +msgid "" +"Activity in all (tracked) voice channels will now count towards session " +"attendance." +msgstr "" + +#: src/modules/schedule/settings.py:178 +msgctxt "guildset:session_channels|formatted|unset" +msgid "All Channels (excluding `untracked_channels`)" +msgstr "" + +#: src/modules/schedule/settings.py:208 +msgctxt "guildset:schedule_cost" +msgid "schedule_cost" +msgstr "" + +#: src/modules/schedule/settings.py:211 +msgctxt "guildset:schedule_cost|desc" +msgid "Booking cost for each scheduled session." +msgstr "" + +#: src/modules/schedule/settings.py:215 +msgctxt "guildset:schedule_cost|long_desc" +msgid "" +"Members will be charged this many LionCoins for each scheduled session they " +"book." +msgstr "" + +#: src/modules/schedule/settings.py:219 +msgctxt "guildset:schedule_cost|accepts" +msgid "Price of each session booking (non-negative integer)." +msgstr "" + +#: src/modules/schedule/settings.py:231 +#, possible-python-brace-format +msgctxt "guildset:schedule_cost|set_response" +msgid "" +"Schedule session bookings will now cost {coin} **{amount}** per timeslot." +msgstr "" + +#: src/modules/schedule/settings.py:244 +#, possible-python-brace-format +msgctxt "guildset:schedule_cost|formatted" +msgid "{coin}**{amount}** per booking." +msgstr "" + +#: src/modules/schedule/settings.py:253 +msgctxt "guildset:attendance_reward" +msgid "attendance_reward" +msgstr "" + +#: src/modules/schedule/settings.py:256 +msgctxt "guildset:attendance_reward|desc" +msgid "Reward for attending a booked scheduled session." +msgstr "" + +#: src/modules/schedule/settings.py:260 +msgctxt "guildset:attendance_reward|long_desc" +msgid "" +"When a member successfully attends a scheduled session they booked, they " +"will be awarded this many LionCoins. Should generally be more than the " +"`schedule_cost` setting." +msgstr "" + +#: src/modules/schedule/settings.py:266 +msgctxt "guildset:attendance_reward|accepts" +msgid "Number of coins to reward session attendance." +msgstr "" + +#: src/modules/schedule/settings.py:278 +#, possible-python-brace-format +msgctxt "guildset:attendance_reward|set_response" +msgid "" +"Members will be rewarded {coin}**{amount}** when they attend a scheduled " +"session." +msgstr "" + +#: src/modules/schedule/settings.py:288 +#, possible-python-brace-format +msgctxt "guildset:attendance_reward|formatted" +msgid "{coin}**{amount}** upon attendance." +msgstr "" + +#: src/modules/schedule/settings.py:297 +msgctxt "guildset:attendance_bonus" +msgid "group_attendance_bonus" +msgstr "" + +#: src/modules/schedule/settings.py:300 +msgctxt "guildset:attendance_bonus|desc" +msgid "Bonus reward given when all members attend a scheduled session." +msgstr "" + +#: src/modules/schedule/settings.py:304 +msgctxt "guildset:attendance_bonus|long_desc" +msgid "" +"When all members who have booked a session successfully attend the session, " +"they will be given this bonus in *addition* to the `attendance_reward`." +msgstr "" + +#: src/modules/schedule/settings.py:309 +msgctxt "guildset:attendance_bonus|accepts" +msgid "Bonus coins rewarded when everyone attends a session." +msgstr "" + +#: src/modules/schedule/settings.py:321 +#, possible-python-brace-format +msgctxt "guildset:attendance_bonus|set_response" +msgid "" +"Session members will be rewarded an additional {coin}**{amount}** when " +"everyone attends." +msgstr "" + +#: src/modules/schedule/settings.py:331 +#, possible-python-brace-format +msgctxt "guildset:attendance_bonus|formatted" +msgid "{coin}**{amount}** bonus when all booked members attend." +msgstr "" + +#: src/modules/schedule/settings.py:340 +msgctxt "guildset:min_attendance" +msgid "min_attendance" +msgstr "" + +#: src/modules/schedule/settings.py:343 +msgctxt "guildset:min_attendance|desc" +msgid "Minimum attendance before reward eligability." +msgstr "" + +#: src/modules/schedule/settings.py:347 +msgctxt "guildset:min_attendance|long_desc" +msgid "" +"Scheduled session members will need to attend the session for at least this " +"number of minutes before they are marked as having attended (and hence are " +"rewarded)." +msgstr "" + +#: src/modules/schedule/settings.py:352 +msgctxt "guildset:min_attendance|accepts" +msgid "Number of minutes (1-60) before attendance is counted." +msgstr "" + +#: src/modules/schedule/settings.py:366 +#, possible-python-brace-format +msgctxt "guildset:min_attendance|set_response" +msgid "" +"Members will be rewarded after they have attended booked sessions for at " +"least **`{amount}`** minutes." +msgstr "" + +#: src/modules/schedule/settings.py:376 +#, possible-python-brace-format +msgctxt "guildset:min_attendance|formatted" +msgid "**`{amount}`** minutes" +msgstr "" + +#: src/modules/schedule/settings.py:397 +msgctxt "guildset:min_attendance|parse|error" +msgid "" +"Minimum attendance must be an integer number of minutes between `1` and `60`." +msgstr "" + +#: src/modules/schedule/settings.py:407 +msgctxt "guildset:schedule_blacklist_role" +msgid "schedule_blacklist_role" +msgstr "" + +#: src/modules/schedule/settings.py:410 +msgctxt "guildset:schedule_blacklist_role|desc" +msgid "Role which disables scheduled session booking." +msgstr "" + +#: src/modules/schedule/settings.py:414 +msgctxt "guildset:schedule_blacklist_role|long_desc" +msgid "" +"Members with this role will not be allowed to book scheduled sessions in " +"this server. If the role is manually added, all future scheduled sessions " +"for the user are cancelled. This provides a way to stop repeatedly " +"unreliable members from blocking the group bonus for all members. " +"Alternatively, consider setting the booking cost (and reward) very high to " +"provide a strong disincentive for not attending a session." +msgstr "" + +#: src/modules/schedule/settings.py:422 +msgctxt "guildset:schedule_blacklist_role|accepts" +msgid "Blacklist role name or id." +msgstr "" + +#: src/modules/schedule/settings.py:434 +#, possible-python-brace-format +msgctxt "guildset:schedule_blacklist_role|set_response|set" +msgid "Members with {role} will be unable to book scheduled sessions." +msgstr "" + +#: src/modules/schedule/settings.py:439 +msgctxt "guildset:schedule_blacklist_role|set_response|unset" +msgid "The schedule blacklist role has been unset." +msgstr "" + +#: src/modules/schedule/settings.py:449 +#, possible-python-brace-format +msgctxt "guildset:schedule_blacklist_role|formatted|set" +msgid "{role} members will not be able to book scheduled sessions." +msgstr "" + +#: src/modules/schedule/settings.py:454 +msgctxt "guildset:schedule_blacklist_role|formatted|unset" +msgid "Not Set" +msgstr "" + +#: src/modules/schedule/settings.py:463 +msgctxt "guildset:schedule_blacklist_after" +msgid "schedule_blacklist_after" +msgstr "" + +#: src/modules/schedule/settings.py:466 +msgctxt "guildset:schedule_blacklist_after|desc" +msgid "Number of missed sessions within 24h before blacklisting." +msgstr "" + +#: src/modules/schedule/settings.py:470 +msgctxt "guildset:schedule_blacklist_after|long_desc" +msgid "" +"Members who miss more than this number of booked sessions in a single 24 " +"hour period will be automatically given the `blacklist_role`. Has no effect " +"if the `blacklist_role` is not set or if I do not have sufficient " +"permissions to assign the blacklist role." +msgstr "" + +#: src/modules/schedule/settings.py:477 +msgctxt "guildset:schedule_blacklist_after|accepts" +msgid "A number of missed sessions (1-24) before blacklisting." +msgstr "" + +#: src/modules/schedule/settings.py:492 +#, possible-python-brace-format +msgctxt "guildset:schedule_blacklist_after|set_response|set" +msgid "" +"Members will be blacklisted after **`{amount}`** missed sessions within " +"`24h`." +msgstr "" + +#: src/modules/schedule/settings.py:497 +msgctxt "guildset:schedule_blacklist_after|set_response|unset" +msgid "" +"Members will not be automatically blacklisted from booking scheduled " +"sessions." +msgstr "" + +#: src/modules/schedule/settings.py:507 +#, possible-python-brace-format +msgctxt "guildset:schedule_blacklist_after|formatted|set" +msgid "Blacklist after **`{amount}`** missed sessions within `24h`." +msgstr "" + +#: src/modules/schedule/settings.py:512 +msgctxt "guildset:schedule_blacklist_after|formatted|unset" +msgid "Do not automatically blacklist." +msgstr "" + +#: src/modules/schedule/settings.py:524 +msgctxt "guildset:schedule_blacklist_role|parse|error" +msgid "Blacklist threshold must be a number between `1` and `24`." +msgstr "" + +#: src/modules/schedule/ui/settingui.py:69 +msgctxt "ui:schedule_config|button:page0|label" +msgid "Page 1" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:88 +msgctxt "ui:schedule_config|menu:lobby|placeholder" +msgid "Select Lobby Channel" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:105 +msgctxt "ui:schedule_config|menu:room|placeholder" +msgid "Select Session Room" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:123 +msgctxt "ui:schedule_config|menu:channels|placeholder" +msgid "Select Session Channels" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:137 +msgctxt "ui:schedule_config|button:page1|label" +msgid "Page 2" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:152 +msgctxt "ui:schedule_config|button:page2|label" +msgid "Page 3" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:169 +msgctxt "ui:schedule_config|menu:blacklist_role|placeholder" +msgid "Select Blacklist Role" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:177 +msgctxt "ui:schedule_config|embed|title" +msgid "Scheduled Session Configuration Panel" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:230 +msgctxt "dash:schedule|title" +msgid "Scheduled Session Configuration ({commands[configure schedule]})" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:247 +msgctxt "dash:schedule|section:schedule_channels|name" +msgid "Scheduled Session Channels ({commands[configure schedule]})" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:257 +msgctxt "dash:schedule|section:schedule_rewards|name" +msgid "Scheduled Session Rewards ({commands[configure schedule]})" +msgstr "" + +#: src/modules/schedule/ui/settingui.py:267 +msgctxt "dash:schedule|section:schedule_blacklist|name" +msgid "Scheduled Session Blacklist ({commands[configure schedule]})" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:31 +msgctxt "ui:schedule|about" +msgid "Guide tips here TBD" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:116 +msgctxt "ui:schedule|button:clear|error:nothing" +msgid "No upcoming sessions to cancel! Your schedule is already clear." +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:129 +msgctxt "ui:schedule|button:clear|success" +msgid "Successfully cancelled and refunded your upcoming scheduled sessions." +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:142 +msgctxt "ui:schedule|button:clear|label" +msgid "Clear Schedule" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:158 +msgctxt "ui:schedule|button:about|label" +msgid "About Schedule" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:184 +msgctxt "ui:schedule|menu:booking|error:current_slot" +msgid "You cannot schedule a currently running session!" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:191 +msgctxt "ui:schedule|menu:booking|error:next_slot" +msgid "Too late! You cannot schedule a session starting in the next minute." +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:198 +msgctxt "ui:schedule|menu:booking|error:already_booked" +msgid "You have already booked one or more of the requested sessions!" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:211 +#, possible-python-brace-format +msgctxt "ui:schedule|menu:booking|error:insufficient_balance" +msgid "" +"Booking `{count}` scheduled sessions requires {coin}**{required}**, but you " +"only have {coin}**{balance}**!" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:227 +#, possible-python-brace-format +msgctxt "ui:schedule|menu:booking|success" +msgid "Successfully booked your scheduled session at {times}." +msgid_plural "" +"Successfully booked the following scheduled sessions.\n" +"{times}" +msgstr[0] "" +msgstr[1] "" + +#: src/modules/schedule/ui/scheduleui.py:250 +msgctxt "ui:schedule|menu:booking|placeholder:blacklisted" +msgid "Book Sessions (Cannot book - Blacklisted)" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:258 +#, possible-python-brace-format +msgctxt "ui:schedule|menu:booking|placeholder:regular" +msgid "Book Sessions ({amount} LC)" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:303 +#, possible-python-brace-format +msgctxt "ui:schedule|menu:slots|option|format" +msgid "{day} {time} ({until})" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:307 +msgctxt "ui:schedule|menu:slots|option|day:today" +msgid "Today" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:311 +msgctxt "ui:schedule|menu:slots|option|day:tomorrow" +msgid "Tomorrow" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:333 +#, possible-python-brace-format +msgctxt "ui:schedule|format_until|positive" +msgid "in <1 hour" +msgid_plural "in {number} hours" +msgstr[0] "" +msgstr[1] "" + +#: src/modules/schedule/ui/scheduleui.py:340 +msgctxt "ui:schedule|format_until|now" +msgid "right now!" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:362 +msgctxt "ui:schedule|menu:cancel|error:current_slot" +msgid "" +"You cannot cancel a currently running *scheduled* session! Please attend it " +"if possible." +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:368 +msgctxt "ui:schedule|menu:cancel|error:too_late" +msgid "" +"Too late! You cannot cancel a scheduled session within a minute of it " +"starting. Please attend it if possible." +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:385 +msgctxt "ui:schedule|menu:cancel|error:already_cancelled" +msgid "The selected bookings no longer exist! Nothing to cancel." +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:395 +#, possible-python-brace-format +msgctxt "ui:schedule|menu:cancel|success" +msgid "" +"Successfully cancelled and refunded your scheduled session booking for " +"{times}." +msgid_plural "" +"Successfully cancelled and refunded your scheduled session bookings:\n" +"{times}." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/schedule/ui/scheduleui.py:416 +msgctxt "ui:schedule|menu:cancel|placeholder" +msgid "Cancel booked sessions" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:438 +msgctxt "ui:schedule|embed|author" +msgid "Your Scheduled Sessions and Past Statistics" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:450 +msgctxt "ui:schedule|embed|field:stats|field:recent" +msgid "Recent" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:457 +msgctxt "ui:schedule|embed|field:stats|field:alltime" +msgid "All Time" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:463 +msgctxt "ui:schedule|embed|field:stats|field:streak" +msgid "Streak" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:468 +#, possible-python-brace-format +msgctxt "ui:schedule|embed|field:stats|field:streak|value:zero" +msgid "One session attended! Keep it up!" +msgid_plural "**{streak}** sessions attended in a row! Good job!" +msgstr[0] "" +msgstr[1] "" + +#: src/modules/schedule/ui/scheduleui.py:475 +msgctxt "ui:schedule|embed|field:stats|field:streak|value:positive" +msgid "No streak yet!" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:483 +msgctxt "ui:schedule|embed|field:stats|name" +msgid "Session Statistics" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:502 +msgctxt "ui:schedule|embed|field:upcoming|name" +msgid "Upcoming Sessions" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:506 +msgctxt "ui:schedule|embed|field:upcoming|value:empty" +msgid "No sessions scheduled yet!" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:520 +#, possible-python-brace-format +msgctxt "ui:schedule|embed|stats_format" +msgid "" +"**{attended}** attended out of **{total}** booked.\r\n" +"**{percent}%** attendance rate.\r\n" +"**{average}** average attendance time." +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:534 +#, possible-python-brace-format +msgctxt "ui:schedule|booking_format:short" +msgid "`{until}` | {start} - {end}" +msgstr "" + +#: src/modules/schedule/ui/scheduleui.py:538 +#, possible-python-brace-format +msgctxt "ui:schedule|booking_format:long" +msgid "> `{until}` | {start} - {end}" +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:52 +msgctxt "ui:sessionui|button:book|label" +msgid "Book" +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:56 +msgctxt "ui:sessionui|button:cancel|label" +msgid "Cancel" +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:60 +msgctxt "ui:sessionui|button:schedule|label" +msgid "Open Schedule" +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:87 +msgctxt "ui:session|button:book|error:starting_soon" +msgid "Too late! This session has started or is starting shortly." +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:94 +msgctxt "ui:session|button:book|error:already_booked" +msgid "You are already a member of this session!" +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:101 +msgctxt "ui:session|button:book|success" +msgid "Successfully booked this session." +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:115 +msgctxt "ui:session|button:book|error|title" +msgid "Could not book session" +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:133 +msgctxt "ui:session|button:cancel|error:starting_soon" +msgid "Too late! This session has started or is starting shortly." +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:140 +msgctxt "ui:session|button:cancel|error:not_booked" +msgid "You are not a member of this session!" +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:150 +msgctxt "ui:session|button:cancel|success" +msgid "Successfully cancelled this session." +msgstr "" + +#: src/modules/schedule/ui/sessionui.py:164 +msgctxt "ui:session|button:cancel|error|title" +msgid "Could not cancel session" +msgstr "" + +#: src/modules/schedule/core/session.py:186 +msgctxt "session|error:lobby_webhook_perms" +msgid "" +"Insufficient permissions to create a webhook in this channel. I require the " +"`MANAGE_WEBHOOKS` permission." +msgstr "" + +#: src/modules/schedule/core/session.py:261 +#, possible-python-brace-format +msgctxt "session|prepare|error:room_permissions" +msgid "" +"Could not prepare the configured session room {room} for the next scheduled " +"session! I require the `MANAGE_CHANNEL`, `MANAGE_ROLES`, `CONNECT` and " +"`VIEW_CHANNEL` permissions." +msgstr "" + +#: src/modules/schedule/core/session.py:304 +#, possible-python-brace-format +msgctxt "session|open|error:room_permissions" +msgid "" +"Could not set up the configured session room {room} for this scheduled " +"session! I require the `MANAGE_CHANNEL`, `MANAGE_ROLES`, `CONNECT` and " +"`VIEW_CHANNEL` permissions." +msgstr "" + +#: src/modules/schedule/core/session.py:345 +#, possible-python-brace-format +msgctxt "session|status|title" +msgid "Session {start} - {end}" +msgstr "" + +#: src/modules/schedule/core/session.py:356 +msgctxt "session|status|desc:cancelled" +msgid "" +"I cancelled this scheduled session because I was unavailable. All members " +"who booked the session have been refunded." +msgstr "" + +#: src/modules/schedule/core/session.py:363 +msgctxt "session|status|desc:no_members" +msgid "*No members scheduled this session.*" +msgstr "" + +#: src/modules/schedule/core/session.py:369 +#, possible-python-brace-format +msgctxt "session|status:preparing|desc:has_members" +msgid "Starting {start}" +msgstr "" + +#: src/modules/schedule/core/session.py:372 +msgctxt "session|status:preparing|field:members" +msgid "Members" +msgstr "" + +#: src/modules/schedule/core/session.py:379 +#, possible-python-brace-format +msgctxt "session|status:running|desc:has_members" +msgid "Finishing {start}" +msgstr "" + +#: src/modules/schedule/core/session.py:413 +msgctxt "session|status:running|field:waiting" +msgid "Waiting For" +msgstr "" + +#: src/modules/schedule/core/session.py:419 +msgctxt "session|status:running|field:attending" +msgid "Attending" +msgstr "" + +#: src/modules/schedule/core/session.py:425 +msgctxt "session|status:running|field:attended" +msgid "Attended" +msgstr "" + +#: src/modules/schedule/core/session.py:450 +#, possible-python-brace-format +msgctxt "session|status:finished|desc:everyone_att" +msgid "" +"Everyone attended the session! All members were rewarded with {coin} " +"**{reward} + {bonus}**!" +msgstr "" + +#: src/modules/schedule/core/session.py:461 +#, possible-python-brace-format +msgctxt "session|status:finished|desc:some_att" +msgid "" +"Everyone who attended was rewarded with {coin} **{reward}**! Some members " +"did not attend so everyone missed out on the bonus {coin} **{bonus}**.\n" +"**Members who missed their session have all future sessions cancelled " +"without refund!*" +msgstr "" + +#: src/modules/schedule/core/session.py:473 +msgctxt "session|status:finished|desc:some_att" +msgid "" +"No-one attended this session! No-one received rewards.\n" +"**Members who missed their session have all future sessions cancelled " +"without refund!*" +msgstr "" + +#: src/modules/schedule/core/session.py:479 +msgctxt "session|status:finished|field:attended" +msgid "Attended" +msgstr "" + +#: src/modules/schedule/core/session.py:484 +msgctxt "session|status:finished|field:missing" +msgid "Missing" +msgstr "" diff --git a/locales/templates/settings_base.pot b/locales/templates/settings_base.pot new file mode 100644 index 00000000..db2ef65f --- /dev/null +++ b/locales/templates/settings_base.pot @@ -0,0 +1,218 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/settings/ui.py:179 +msgctxt "setting|formatted|notset" +msgid "Not Set" +msgstr "" + +#: src/settings/ui.py:338 +#, possible-python-brace-format +msgctxt "setting|summary_embed|title" +msgid "Configuration options for `{name}`" +msgstr "" + +#: src/settings/ui.py:350 +msgctxt "setting|summary_table|field:currently|key" +msgid "Currently" +msgstr "" + +#: src/settings/ui.py:357 +msgctxt "setting|summary_table|field:default|key" +msgid "By Default" +msgstr "" + +#: src/settings/ui.py:364 +msgctxt "setting|summary_table|field:set|key" +msgid "Set Using" +msgstr "" + +#: src/settings/setting_types.py:48 +msgctxt "settype:string|accepts" +msgid "Any Text" +msgstr "" + +#: src/settings/setting_types.py:89 +#, possible-python-brace-format +msgctxt "settype:string|error" +msgid "Provided string is too long! Maximum length: {maxlen} characters." +msgstr "" + +#: src/settings/setting_types.py:114 +msgctxt "settype:emoji|accepts" +msgid "Paste a builtin emoji, custom emoji, or emoji id." +msgstr "" + +#: src/settings/setting_types.py:167 +#, possible-python-brace-format +msgctxt "settype:emoji|error:parse" +msgid "" +"Could not parse `{provided}` as a Discord emoji. Supported formats are " +"builtin emojis (e.g. `{builtin}`), custom emojis (e.g. {custom}), or custom " +"emoji ids (e.g. `{custom_id}`)." +msgstr "" + +#: src/settings/setting_types.py:236 +msgctxt "settype:channel|accepts" +msgid "A channel name or id" +msgstr "" + +#: src/settings/setting_types.py:281 +#, possible-python-brace-format +msgctxt "settype:channel|parse|error:not_found" +msgid "Channel `{string}` could not be found in this guild!" +msgstr "" + +#: src/settings/setting_types.py:367 +msgctxt "settype:role|accepts" +msgid "A role name or id" +msgstr "" + +#: src/settings/setting_types.py:426 +#, possible-python-brace-format +msgctxt "settype:role|parse|error:not_found" +msgid "Role `{string}` could not be found in this guild!" +msgstr "" + +#: src/settings/setting_types.py:491 +msgctxt "settype:bool|accepts" +msgid "Enabled/Disabled" +msgstr "" + +#: src/settings/setting_types.py:496 +msgctxt "settype:bool|parse:truthy_values" +msgid "enabled|yes|true|on|enable|1" +msgstr "" + +#: src/settings/setting_types.py:500 +msgctxt "settype:bool|parse:falsey_values" +msgid "disabled|no|false|off|disable|0" +msgstr "" + +#: src/settings/setting_types.py:505 +msgctxt "settype:bool|output:true" +msgid "On" +msgstr "" + +#: src/settings/setting_types.py:506 +msgctxt "settype:bool|output:false" +msgid "Off" +msgstr "" + +#: src/settings/setting_types.py:507 +msgctxt "settype:bool|output:none" +msgid "Not Set" +msgstr "" + +#: src/settings/setting_types.py:618 +msgctxt "settype:integer|accepts" +msgid "An integer" +msgstr "" + +#: src/settings/setting_types.py:681 +msgctxt "settype:emoji|desc" +msgid "Unicode or custom emoji" +msgstr "" + +#: src/settings/setting_types.py:753 +msgctxt "settype:guildid|accepts" +msgid "Any Snowflake ID" +msgstr "" + +#: src/settings/setting_types.py:822 +msgctxt "settype:timezone|accepts" +msgid "A timezone name from the 'tz database' (e.g. 'Europe/London')" +msgstr "" + +#: src/settings/setting_types.py:892 +msgctxt "settype:timezone|summary_table|field:supported|key" +msgid "Supported" +msgstr "" + +#: src/settings/setting_types.py:896 +#, possible-python-brace-format +msgctxt "settype:timezone|summary_table|field:supported|value" +msgid "Any timezone from the [tz database]({link})." +msgstr "" + +#: src/settings/setting_types.py:913 +#, possible-python-brace-format +msgctxt "set_type:timezone|acmpl|no_matching" +msgid "No timezones matching '{input}'!" +msgstr "" + +#: src/settings/setting_types.py:926 +#, possible-python-brace-format +msgctxt "set_type:timezone|acmpl|choice" +msgid "{tz} (Currently {now})" +msgstr "" + +#: src/settings/setting_types.py:956 +msgctxt "settype:timestamp|accepts" +msgid "A timestamp in the form YYYY-MM-DD HH:MM" +msgstr "" + +#: src/settings/setting_types.py:985 +#, possible-python-brace-format +msgctxt "settype:timestamp|parse|error:invalid" +msgid "" +"Could not parse `{provided}` as a timestamp. Please use `YYYY-MM-DD HH:MM` " +"format." +msgstr "" + +#: src/settings/setting_types.py:1016 +msgctxt "settype:raw|accepts" +msgid "Anything" +msgstr "" + +#: src/settings/setting_types.py:1069 +msgctxt "settype:enum|accepts" +msgid "A valid option." +msgstr "" + +#: src/settings/setting_types.py:1119 +#, possible-python-brace-format +msgctxt "settype:enum|parse|error:not_found" +msgid "`{provided}` is not a valid option!" +msgstr "" + +#: src/settings/setting_types.py:1167 +msgctxt "settype:duration|accepts" +msgid "A number of days, hours, minutes, and seconds, e.g. `2d 4h 10s`." +msgstr "" + +#: src/settings/setting_types.py:1348 +msgctxt "settype:channel_list|accepts" +msgid "Comma separated list of channel ids." +msgstr "" + +#: src/settings/setting_types.py:1359 +msgctxt "settype:role_list|accepts" +msgid "Comma separated list of role ids." +msgstr "" + +#: src/settings/setting_types.py:1375 +msgctxt "settype:stringlist|accepts" +msgid "Comma separated strings." +msgstr "" + +#: src/settings/setting_types.py:1386 +msgctxt "settype:guildidlist|accepts" +msgid "Comma separated list of guild ids." +msgstr "" diff --git a/locales/templates/shop.pot b/locales/templates/shop.pot new file mode 100644 index 00000000..5b4c4c6b --- /dev/null +++ b/locales/templates/shop.pot @@ -0,0 +1,573 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/shop/cog.py:108 +msgctxt "group:editshop" +msgid "editshop" +msgstr "" + +#: src/modules/shop/cog.py:117 +msgctxt "group:shop" +msgid "shop" +msgstr "" + +#: src/modules/shop/cog.py:123 +msgctxt "cmd:shop_open" +msgid "open" +msgstr "" + +#: src/modules/shop/cog.py:124 +msgctxt "cmd:shop_open|desc" +msgid "Open the server shop." +msgstr "" + +#: src/modules/shop/cog.py:150 +msgctxt "cmd:shop_open|error:no_shops" +msgid "There is nothing to buy!" +msgstr "" + +#: src/modules/shop/cog.py:212 +msgctxt "ui:stores|button:close|label" +msgid "Close" +msgstr "" + +#: src/modules/shop/cog.py:219 +msgctxt "ui:stores|button:close|response|title" +msgid "Shop Closed" +msgstr "" + +#: src/modules/shop/shops/colours.py:103 +#, possible-python-brace-format +msgctxt "ui:colourstore|menu:buycolours|label" +msgid "{name} ({price} LC)" +msgstr "" + +#: src/modules/shop/shops/colours.py:108 +#, possible-python-brace-format +msgctxt "ui:colourstore|menu:buycolours|label" +msgid "{name} (This is your colour!)" +msgstr "" + +#: src/modules/shop/shops/colours.py:113 +#, possible-python-brace-format +msgctxt "ui:colourstore|menu:buycolours|desc" +msgid "Colour: {colour}" +msgstr "" + +#: src/modules/shop/shops/colours.py:118 +msgctxt "ui:colourstore|menu:buycolours|desc" +msgid "Colour: Unknown" +msgstr "" + +#: src/modules/shop/shops/colours.py:132 +msgctxt "shop:colours|name" +msgid "Colour Shop" +msgstr "" + +#: src/modules/shop/shops/colours.py:169 +msgctxt "shop:colour|purchase|error:not_purchasable" +msgid "This item may not be purchased!" +msgstr "" + +#: src/modules/shop/shops/colours.py:182 +msgctxt "shop:colour|purchase|error:no_guild" +msgid "Could not retrieve the server from Discord!" +msgstr "" + +#: src/modules/shop/shops/colours.py:192 +msgctxt "shop:colour|purchase|error:no_member" +msgid "Could not retrieve the member from Discord." +msgstr "" + +#: src/modules/shop/shops/colours.py:202 +msgctxt "shop:colour|purchase|error:no_role" +msgid "This colour role could not be found in the server." +msgstr "" + +#: src/modules/shop/shops/colours.py:211 +#, possible-python-brace-format +msgctxt "shop:colour|purchase|error:low_balance" +msgid "" +"This item costs {coin}{amount}!\n" +"Your balance is {coin}{balance}" +msgstr "" + +#: src/modules/shop/shops/colours.py:226 +msgctxt "shop:colour|purchase|error:owned" +msgid "You already own this item!" +msgstr "" + +#: src/modules/shop/shops/colours.py:260 +msgctxt "shop:colour|purchase|error:failed_no_role" +msgid "This colour role no longer exists!" +msgstr "" + +#: src/modules/shop/shops/colours.py:267 +msgctxt "shop:colour|purchase|error:failed_permissions" +msgid "I do not have enough permissions to give you this colour role!" +msgstr "" + +#: src/modules/shop/shops/colours.py:274 +msgctxt "shop:colour|purchase|error:failed_unknown" +msgid "An unknown error occurred while giving you this colour role!" +msgstr "" + +#: src/modules/shop/shops/colours.py:343 +msgctxt "grp:editshop_colours" +msgid "colours" +msgstr "" + +#: src/modules/shop/shops/colours.py:348 +msgctxt "cmd:editshop_colours_create" +msgid "create" +msgstr "" + +#: src/modules/shop/shops/colours.py:351 +msgctxt "cmd:editshop_colours_create|desc" +msgid "Create a new colour role with the given colour." +msgstr "" + +#: src/modules/shop/shops/colours.py:355 +msgctxt "cmd:editshop_colours_create|param:colour" +msgid "colour" +msgstr "" + +#: src/modules/shop/shops/colours.py:356 +msgctxt "cmd:editshop_colours_create|param:name" +msgid "name" +msgstr "" + +#: src/modules/shop/shops/colours.py:357 +msgctxt "cmd:editshop_colours_create|param:price" +msgid "price" +msgstr "" + +#: src/modules/shop/shops/colours.py:362 +msgctxt "cmd:editshop_colours_create|param:colour|desc" +msgid "What colour should the role be? (As a hex code, e.g. #AB22AB)" +msgstr "" + +#: src/modules/shop/shops/colours.py:366 +msgctxt "cmd:editshop_colours_create|param:name|desc" +msgid "What should the colour role be called?" +msgstr "" + +#: src/modules/shop/shops/colours.py:370 +msgctxt "cmd:editshop_colours_create|param:price|desc" +msgid "How much should the colour role cost?" +msgstr "" + +#: src/modules/shop/shops/colours.py:392 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_create|error:parse_colour" +msgid "" +"I could not extract a colour value from `{colour}`!\n" +"Please enter the colour as a hex string, e.g. `#FA0BC1`" +msgstr "" + +#: src/modules/shop/shops/colours.py:402 +msgctxt "cmd:editshop_colours_create|error:perms" +msgid "" +"I do not have permission to create server roles!\n" +"Please either give me this permission, or create the role manually and use `/" +"editshop colours add` instead." +msgstr "" + +#: src/modules/shop/shops/colours.py:418 +msgctxt "cmd:editshop_colours_create|error:max_colours" +msgid "" +"This server already has the maximum of `25` colour roles!\n" +"Please remove some before adding or creating more." +msgstr "" + +#: src/modules/shop/shops/colours.py:437 +msgctxt "cmd:editshop_colours_create|error:failed_unknown" +msgid "" +"An unknown Discord error occurred while creating your colour role!\n" +"Please try again in a few minutes." +msgstr "" + +#: src/modules/shop/shops/colours.py:487 +msgctxt "cmd:editshop_colours_create|resp:done|title" +msgid "Colour Role Created" +msgstr "" + +#: src/modules/shop/shops/colours.py:491 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_create|resp:done|desc" +msgid "" +"You have created the role {mention}, and added it to the colour shop for " +"{coin}**{price}**!" +msgstr "" + +#: src/modules/shop/shops/colours.py:498 +msgctxt "cmd:editshop_colours_create|resp:done|field:position_note|value" +msgid "" +"The new colour role was added below all other roles. Remember a member's " +"active colour is determined by their highest coloured role!" +msgstr "" + +#: src/modules/shop/shops/colours.py:502 +msgctxt "cmd:editshop_colours_create|resp:done|field:position_note|name" +msgid "Note" +msgstr "" + +#: src/modules/shop/shops/colours.py:511 +msgctxt "cmd:editshop_colours_edit" +msgid "edit" +msgstr "" + +#: src/modules/shop/shops/colours.py:514 +msgctxt "cmd:editshop_colours_edit|desc" +msgid "Edit the name, colour, or price of a colour role." +msgstr "" + +#: src/modules/shop/shops/colours.py:518 +msgctxt "cmd:editshop_colours_edit|param:role" +msgid "role" +msgstr "" + +#: src/modules/shop/shops/colours.py:519 +msgctxt "cmd:editshop_colours_edit|param:name" +msgid "name" +msgstr "" + +#: src/modules/shop/shops/colours.py:520 +msgctxt "cmd:editshop_colours_edit|param:colour" +msgid "colour" +msgstr "" + +#: src/modules/shop/shops/colours.py:521 +msgctxt "cmd:editshop_colours_edit|param:price" +msgid "price" +msgstr "" + +#: src/modules/shop/shops/colours.py:526 +msgctxt "cmd:editshop_colours_edit|param:role|desc" +msgid "Select a colour role to edit." +msgstr "" + +#: src/modules/shop/shops/colours.py:530 +msgctxt "cmd:editshop_colours_edit|param:name|desc" +msgid "New name to give the colour role." +msgstr "" + +#: src/modules/shop/shops/colours.py:534 +msgctxt "cmd:editshop_colours_edit|param:colour|desc" +msgid "New colour for the colour role (as hex, e.g. #AB12AB)." +msgstr "" + +#: src/modules/shop/shops/colours.py:538 +msgctxt "cmd:editshop_colours_edit|param:price|desc" +msgid "New price for the colour role." +msgstr "" + +#: src/modules/shop/shops/colours.py:567 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_edit|error:invalid_role" +msgid "{mention} is not in the colour role shop!" +msgstr "" + +#: src/modules/shop/shops/colours.py:581 +msgctxt "cmd:editshop_colours_edit|error:no_args" +msgid "You must give me one of `name`, `colour`, or `price` to update!" +msgstr "" + +#: src/modules/shop/shops/colours.py:597 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_edit|error:parse_colour" +msgid "" +"I could not extract a colour value from `{colour}`!\n" +"Please enter the colour as a hex string, e.g. `#FA0BC1`" +msgstr "" + +#: src/modules/shop/shops/colours.py:612 +msgctxt "cmd:editshop_colours_edit|error:perms" +msgid "I do not have sufficient server permissions to edit this role!" +msgstr "" + +#: src/modules/shop/shops/colours.py:628 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_edit|resp:done|line:price" +msgid "{tick} Set price to {coin}**{price}**" +msgstr "" + +#: src/modules/shop/shops/colours.py:645 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_edit|resp:done|line:role" +msgid "{tick} Updated role to {mention}" +msgstr "" + +#: src/modules/shop/shops/colours.py:655 +msgctxt "cmd:editshop_colours_edit|resp:done|embed:title" +msgid "Colour Role Updated" +msgstr "" + +#: src/modules/shop/shops/colours.py:661 +msgctxt "cmd:editshop_colours_auto" +msgid "auto" +msgstr "" + +#: src/modules/shop/shops/colours.py:662 +msgctxt "cmd:editshop_colours_auto|desc" +msgid "Automatically create a set of colour roles." +msgstr "" + +#: src/modules/shop/shops/colours.py:671 +msgctxt "cmd:editshop_colours_add" +msgid "add" +msgstr "" + +#: src/modules/shop/shops/colours.py:674 +msgctxt "cmd:editshop_colours_add|desc" +msgid "Add an existing role to the colour shop." +msgstr "" + +#: src/modules/shop/shops/colours.py:678 +msgctxt "cmd:editshop_colours_add|param:role" +msgid "role" +msgstr "" + +#: src/modules/shop/shops/colours.py:679 +msgctxt "cmd:editshop_colours_add|param:price" +msgid "price" +msgstr "" + +#: src/modules/shop/shops/colours.py:684 +msgctxt "cmd:editshop_colours_add|param:role|desc" +msgid "Select a role to add to the colour shop." +msgstr "" + +#: src/modules/shop/shops/colours.py:688 +msgctxt "cmd:editshop_colours_add|param:price|desc" +msgid "How much should this role cost?" +msgstr "" + +#: src/modules/shop/shops/colours.py:713 +msgctxt "cmd:editshop_colours_add|error:max_colours" +msgid "" +"This server already has the maximum of `25` colour roles!\n" +"Please remove some before adding or creating more." +msgstr "" + +#: src/modules/shop/shops/colours.py:722 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_add|error:role_exists" +msgid "The role {mention} is already registered as a colour role!" +msgstr "" + +#: src/modules/shop/shops/colours.py:731 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_add|error:role_perms" +msgid "" +"I do not have enough permissions to assign the role {mention}! Please ensure " +"I have the `MANAGE_ROLES` permission, and that my top role is above this " +"role." +msgstr "" + +#: src/modules/shop/shops/colours.py:742 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_add|error:caller_perms" +msgid "" +"You do not have sufficient server permissions to assign {mention} to the " +"shop! You must have `MANAGE_ROLES`, and your top role must be above this " +"role." +msgstr "" + +#: src/modules/shop/shops/colours.py:751 +msgctxt "cmd:editshop_colours_add|error:role_has_admin" +msgid "" +"I refuse to add an administrator role to the LionCoin shop. That is a really " +"bad idea." +msgstr "" + +#: src/modules/shop/shops/colours.py:772 +msgctxt "cmd:editshop_colours_add|resp:done|embed:title" +msgid "Colour Role Created" +msgstr "" + +#: src/modules/shop/shops/colours.py:775 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_add|resp:done|embed:desc" +msgid "You have added {mention} to the colour shop for {coin}**{price}**!" +msgstr "" + +#: src/modules/shop/shops/colours.py:783 +msgctxt "cmd:editshop_colours_clear" +msgid "clear" +msgstr "" + +#: src/modules/shop/shops/colours.py:786 +msgctxt "cmd:editshop_colours_clear|desc" +msgid "" +"Remove all the colour roles from the shop, and optionally delete the roles." +msgstr "" + +#: src/modules/shop/shops/colours.py:790 +msgctxt "cmd:editshop_colours_clear|param:delete" +msgid "delete_roles" +msgstr "" + +#: src/modules/shop/shops/colours.py:795 +msgctxt "cmd:editshop_colours_clear|param:delete|desc" +msgid "Also delete the associated roles." +msgstr "" + +#: src/modules/shop/shops/colours.py:837 +msgctxt "cmd:editshop_colours_clear|error:no_colours" +msgid "There are no coloured roles to remove!" +msgstr "" + +#: src/modules/shop/shops/colours.py:881 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_clear|resp:done|line:clear" +msgid "{tick} Colour shop cleared." +msgstr "" + +#: src/modules/shop/shops/colours.py:892 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_clear|resp:done|line:refunding" +msgid "{loading} Refunded **{count}/{total}** members." +msgstr "" + +#: src/modules/shop/shops/colours.py:898 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_clear|resp:done|line:refunded" +msgid "{tick} Refunded **{total}/{total}** members." +msgstr "" + +#: src/modules/shop/shops/colours.py:911 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_clear|resp:done|line:deleted_failed" +msgid "" +"{emoji} Deleted **{count}/{total}** colour roles. (**{failed}** failed!)" +msgstr "" + +#: src/modules/shop/shops/colours.py:916 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_clear|resp:done|line:deleted" +msgid "{emoji} Deleted **{count}/{total}** colour roles." +msgstr "" + +#: src/modules/shop/shops/colours.py:965 +msgctxt "cmd:editshop_colours_remove" +msgid "remove" +msgstr "" + +#: src/modules/shop/shops/colours.py:968 +msgctxt "cmd:editshop_colours_remove|desc" +msgid "Remove a specific colour role from the shop." +msgstr "" + +#: src/modules/shop/shops/colours.py:972 +msgctxt "cmd:editshop_colours_remove|param:role" +msgid "role" +msgstr "" + +#: src/modules/shop/shops/colours.py:973 +msgctxt "cmd:editshop_colours_remove" +msgid "delete_role" +msgstr "" + +#: src/modules/shop/shops/colours.py:978 +msgctxt "cmd:editshop_colours_remove|param:role|desc" +msgid "Select the colour role to remove." +msgstr "" + +#: src/modules/shop/shops/colours.py:982 +msgctxt "cmd:editshop_colours_remove|param:delete_role|desc" +msgid "Whether to delete the associated role." +msgstr "" + +#: src/modules/shop/shops/colours.py:1007 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_remove|error:not_colour" +msgid "{mention} is not in the colour role shop!" +msgstr "" + +#: src/modules/shop/shops/colours.py:1025 +msgctxt "cmd:editshop_colours_remove|resp:done|line:delete" +msgid "Successfully deleted the role." +msgstr "" + +#: src/modules/shop/shops/colours.py:1030 +msgctxt "cmd:editshop_colours_remove|resp:done|line:delete" +msgid "I do not have sufficient permissions to delete the role." +msgstr "" + +#: src/modules/shop/shops/colours.py:1035 +msgctxt "cmd:editshop_colours_remove|resp:done|line:delete" +msgid "Failed to delete the role for an unknown reason." +msgstr "" + +#: src/modules/shop/shops/colours.py:1040 +msgctxt "cmd:editshop_colours_remove|resp:done|line:delete" +msgid "Could not find the role in order to delete it." +msgstr "" + +#: src/modules/shop/shops/colours.py:1051 +#, possible-python-brace-format +msgctxt "cmd:editshop_colours_remove|resp:done|embed:desc" +msgid "" +"Removed {mention} from the colour shop.\n" +"{delete_line}" +msgstr "" + +#: src/modules/shop/shops/colours.py:1111 +msgctxt "ui:colourstore|menu:buycolours|embed:error|title" +msgid "Purchase Failed!" +msgstr "" + +#: src/modules/shop/shops/colours.py:1122 +#, possible-python-brace-format +msgctxt "ui:colourstore|menu:buycolours|resp:done|desc" +msgid "{tick} You have purchased {mention}" +msgstr "" + +#: src/modules/shop/shops/colours.py:1157 +msgctxt "ui:colourstore|menu:buycolours|placeholder" +msgid "There are no colour roles available to purchase!" +msgstr "" + +#: src/modules/shop/shops/colours.py:1163 +msgctxt "ui:colourstore|menu:buycolours|placeholder" +msgid "Select a colour role to purchase!" +msgstr "" + +#: src/modules/shop/shops/colours.py:1192 +#, possible-python-brace-format +msgctxt "ui:colourstore|embed|line:owned_item" +msgid "`[{j:02}]` | `{price} LC` | {mention} (You own this!)" +msgstr "" + +#: src/modules/shop/shops/colours.py:1197 +#, possible-python-brace-format +msgctxt "ui:colourstore|embed|line:item" +msgid "`[{j:02}]` | `{price} LC` | {mention}" +msgstr "" + +#: src/modules/shop/shops/colours.py:1204 +msgctxt "ui:colourstore|embed|desc" +msgid "No colour roles available for purchase!" +msgstr "" + +#: src/modules/shop/shops/colours.py:1207 +msgctxt "ui:colourstore|embed|title" +msgid "Colour Role Shop" +msgstr "" diff --git a/locales/templates/statistics.pot b/locales/templates/statistics.pot new file mode 100644 index 00000000..e5be65c9 --- /dev/null +++ b/locales/templates/statistics.pot @@ -0,0 +1,697 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/statistics/cog.py:42 +msgctxt "cmd:me" +msgid "me" +msgstr "" + +#: src/modules/statistics/cog.py:45 +msgctxt "cmd:me|desc" +msgid "Display your personal profile and summary statistics." +msgstr "" + +#: src/modules/statistics/cog.py:54 +msgctxt "cmd:stats" +msgid "stats" +msgstr "" + +#: src/modules/statistics/cog.py:57 +msgctxt "cmd:stats|desc" +msgid "Weekly and monthly statistics for your recent activity." +msgstr "" + +#: src/modules/statistics/cog.py:69 +msgctxt "cmd:leaderboard" +msgid "leaderboard" +msgstr "" + +#: src/modules/statistics/cog.py:72 +msgctxt "cmd:leaderboard|desc" +msgid "Server leaderboard." +msgstr "" + +#: src/modules/statistics/cog.py:88 +msgctxt "cmd:configure_statistics" +msgid "statistics" +msgstr "" + +#: src/modules/statistics/cog.py:89 +msgctxt "cmd:configure_statistics|desc" +msgid "Statistics configuration panel" +msgstr "" + +#: src/modules/statistics/cog.py:92 +msgctxt "cmd:configure_statistics|param:season_start" +msgid "season_start" +msgstr "" + +#: src/modules/statistics/cog.py:97 +msgctxt "cmd:configure_statistics|param:season_start|desc" +msgid "" +"Time from which to start counting activity for rank badges and season " +"leadeboards." +msgstr "" + +#: src/modules/statistics/cog.py:127 +#, possible-python-brace-format +msgctxt "cmd:configure_statistics|resp:success|desc" +msgid "" +"Activity ranks and season leaderboard will now be measured from " +"{season_start}." +msgstr "" + +#: src/modules/statistics/settings.py:37 +msgctxt "settype:stat|output:voice" +msgid "`Voice`" +msgstr "" + +#: src/modules/statistics/settings.py:38 +msgctxt "settype:stat|output:text" +msgid "`Text`" +msgstr "" + +#: src/modules/statistics/settings.py:39 +msgctxt "settype:stat|output:anki" +msgid "`Anki`" +msgstr "" + +#: src/modules/statistics/settings.py:42 +msgctxt "settype:stat|input_format:voice" +msgid "Voice" +msgstr "" + +#: src/modules/statistics/settings.py:43 +msgctxt "settype:stat|input_format:text" +msgid "Text" +msgstr "" + +#: src/modules/statistics/settings.py:44 +msgctxt "settype:stat|input_format:anki" +msgid "Anki" +msgstr "" + +#: src/modules/statistics/settings.py:47 +msgctxt "settype:stat|input_pattern:voice" +msgid "voice|study" +msgstr "" + +#: src/modules/statistics/settings.py:48 +msgctxt "settype:stat|input_pattern:text" +msgid "text|messages" +msgstr "" + +#: src/modules/statistics/settings.py:49 +msgctxt "settype:stat|input_pattern:anki" +msgid "anki" +msgstr "" + +#: src/modules/statistics/settings.py:53 +msgctxt "settype:state|accepts" +msgid "Voice/Text/Anki" +msgstr "" + +#: src/modules/statistics/settings.py:66 +msgctxt "userset:show_global_stats" +msgid "global_stats" +msgstr "" + +#: src/modules/statistics/settings.py:69 +msgctxt "userset:show_global_stats|desc" +msgid "Whether displayed statistics include all your servers." +msgstr "" + +#: src/modules/statistics/settings.py:73 +msgctxt "userset:show_global_stats|long_desc" +msgid "" +"Whether statistics commands display combined stats for all servers or just " +"your current server." +msgstr "" + +#: src/modules/statistics/settings.py:88 +msgctxt "guildset:season_start" +msgid "season_start" +msgstr "" + +#: src/modules/statistics/settings.py:91 +msgctxt "guildset:season_start|desc" +msgid "Start of the current statistics season." +msgstr "" + +#: src/modules/statistics/settings.py:95 +msgctxt "guildset:season_start|long_desc" +msgid "" +"Activity ranks will be determined based on tracked activity since this time, " +"and the leaderboard will display activity since this time by default. Unset " +"to disable seasons and use all-time statistics instead." +msgstr "" + +#: src/modules/statistics/settings.py:101 +msgctxt "guildset:season_start|accepts" +msgid "The season start time in the form YYYY-MM-DD HH:MM" +msgstr "" + +#: src/modules/statistics/settings.py:105 +msgctxt "guildset:season_start|notset" +msgid "Not Set (Using all-time statistics)" +msgstr "" + +#: src/modules/statistics/settings.py:124 +#, possible-python-brace-format +msgctxt "guildset:season_start|parse|error:future_time" +msgid "Provided season start time {timestamp} is in the future!" +msgstr "" + +#: src/modules/statistics/settings.py:135 +#, possible-python-brace-format +msgctxt "guildset:season_start|set_response|set" +msgid "" +"The leaderboard season and activity ranks will now count from {timestamp}. " +"Member ranks will update when they are next active. Use {rank_cmd} to " +"refresh immediately." +msgstr "" + +#: src/modules/statistics/settings.py:144 +#, possible-python-brace-format +msgctxt "guildset:season_start|set_response|unset" +msgid "" +"The leaderboard and activity ranks will now count all-time statistics. " +"Member ranks will update when they are next active. Use {rank_cmd} to " +"refresh immediately." +msgstr "" + +#: src/modules/statistics/settings.py:155 +msgctxt "guildset:unranked_roles" +msgid "unranked_roles" +msgstr "" + +#: src/modules/statistics/settings.py:158 +msgctxt "guildset:unranked_roles|desc" +msgid "Roles to exclude from the leaderboards." +msgstr "" + +#: src/modules/statistics/settings.py:162 +msgctxt "guildset:unranked_roles|long_desc" +msgid "" +"When set, members with *any* of these roles will not appear on the /" +"leaderboard ranking list." +msgstr "" + +#: src/modules/statistics/settings.py:166 +msgctxt "guildset:unranked_roles|accepts" +msgid "Comma separated list of unranked role names or ids." +msgstr "" + +#: src/modules/statistics/settings.py:182 +msgctxt "guildset:unranked_roles|set_using" +msgid "Role selector below." +msgstr "" + +#: src/modules/statistics/settings.py:192 +#, possible-python-brace-format +msgctxt "guildset:unranked_roles|set_response|set" +msgid "" +"Members of the following roles will not appear on the leaderboard: {roles}" +msgstr "" + +#: src/modules/statistics/settings.py:199 +msgctxt "guildset:unranked_roles|set_response|unset" +msgid "You have cleared the unranked role list." +msgstr "" + +#: src/modules/statistics/settings.py:213 +msgctxt "guildset:visible_stats" +msgid "visible_stats" +msgstr "" + +#: src/modules/statistics/settings.py:216 +msgctxt "guildset:visible_stats|desc" +msgid "Which statistics will be visible in the statistics commands." +msgstr "" + +#: src/modules/statistics/settings.py:220 +msgctxt "guildset:visible_stats|desc" +msgid "" +"Choose which statistics types to display in the leaderboard and statistics " +"commands." +msgstr "" + +#: src/modules/statistics/settings.py:224 +msgctxt "guildset:visible_stats|accepts" +msgid "Voice, Text, Anki" +msgstr "" + +#: src/modules/statistics/settings.py:245 +msgctxt "guildset:visible_stats|set_using" +msgid "Option menu below." +msgstr "" + +#: src/modules/statistics/settings.py:253 +#, possible-python-brace-format +msgctxt "guildset:visible_stats|set_response" +msgid "Members will be able to view the following statistics types: {types}" +msgstr "" + +#: src/modules/statistics/settings.py:263 +msgctxt "guildset:default_stat" +msgid "default_stat" +msgstr "" + +#: src/modules/statistics/settings.py:266 +msgctxt "guildset:default_stat|desc" +msgid "Statistic type to display by default in setting dialogues." +msgstr "" + +#: src/modules/statistics/settings.py:270 +msgctxt "guildset:default_stat|long_desc" +msgid "Which statistic type to display by default in setting dialogues." +msgstr "" + +#: src/modules/statistics/settings.py:303 +msgctxt "ui:statistics_config|menu:unranked_roles|placeholder" +msgid "Select Unranked Roles" +msgstr "" + +#: src/modules/statistics/settings.py:327 +msgctxt "ui:statistics_config|menu:visible_stats|item:voice|mode:voice" +msgid "Voice Activity" +msgstr "" + +#: src/modules/statistics/settings.py:332 +msgctxt "ui:statistics_config|menu:visible_stats|item:voice|mode:study" +msgid "Study Statistics" +msgstr "" + +#: src/modules/statistics/settings.py:342 +msgctxt "ui:statistics_config|menu:visible_stats|item:text" +msgid "Message Activity" +msgstr "" + +#: src/modules/statistics/settings.py:350 +msgctxt "ui:statistics_config|menu:visible_stats|item:anki" +msgid "Anki Reviews" +msgstr "" + +#: src/modules/statistics/settings.py:361 +msgctxt "ui:statistics_config|menu:visible_stats|placeholder" +msgid "Select Visible Statistics" +msgstr "" + +#: src/modules/statistics/settings.py:382 +msgctxt "ui:statistics_config|embed|title" +msgid "Statistics Configuration Panel" +msgstr "" + +#: src/modules/statistics/settings.py:396 +msgctxt "dash:stats|title" +msgid "Activity Statistics Configuration ({commands[configure statistics]})" +msgstr "" + +#: src/modules/statistics/ui/goals.py:92 +msgctxt "ui:MonthlyUI|name" +msgid "Monthly" +msgstr "" + +#: src/modules/statistics/ui/goals.py:135 +msgctxt "ui:WeeklyUI|name" +msgid "Weekly" +msgstr "" + +#: src/modules/statistics/ui/summary.py:18 +msgctxt "ui:SummaryUI|name" +msgid "Summary" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:96 +msgctxt "menu:stat_type|opt:weekly_voice|name" +msgid "Weekly Voice Statistics" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:101 +msgctxt "menu:stat_type|opt:weekly_text|name" +msgid "Weekly Text Statistics" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:106 +msgctxt "menu:stat_type|opt:weekly_anki|name" +msgid "Weekly Anki Statistics" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:112 +msgctxt "menu:stat_type|opt:monthly_voice|name" +msgid "Monthly Voice Statistics" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:117 +msgctxt "menu:stat_type|opt:monthly_text|name" +msgid "Monthly Text Statistics" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:122 +msgctxt "menu:stat_type|opt:monthly_anki|name" +msgid "Monthly Anki Statistics" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:144 +msgctxt "modal:goal_editor|field:task_goal|label" +msgid "Task goal" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:148 +msgctxt "modal:goal_editor|field:task_goal|placeholder" +msgid "Enter the number of tasklist tasks you aim to do" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:159 +#, possible-python-brace-format +msgctxt "modal:goal_editor|field:task_goal|error:NAN" +msgid "The provided task goal `{input}` is not a number! Please try again." +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:181 +msgctxt "modal:goal_editor|field:voice_goal|label" +msgid "Study time goal" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:185 +msgctxt "modal:goal_editor|field:voice_goal|placeholder" +msgid "Enter a number of hours of study to aim for." +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:190 +msgctxt "modal:goal_editor|field:text_goal|label" +msgid "Message goal" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:194 +msgctxt "modal:goal_editor|field:text_goal|placeholder" +msgid "Enter a message count to aim for." +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:199 +msgctxt "modal:goal_editor|field:anki_goal|label" +msgid "Card goal" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:203 +msgctxt "modal:goal_editor|field:anki_goal|label" +msgid "Enter a number of card revisions to aim for." +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:216 +#, possible-python-brace-format +msgctxt "modal:goal_editor|field:voice_goal|error:NAN" +msgid "" +"The provided study time goal `{input}` is not a number! Please try again." +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:223 +#, possible-python-brace-format +msgctxt "modal:goal_editor|field:text_goal|error:NAN" +msgid "The provided message goal `{input}` is not a number! Please try again." +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:230 +#, possible-python-brace-format +msgctxt "modal:goal_editor|field:anki_goal|error:NAN" +msgid "The provided card goal `{input}` is not a number! Please try again." +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:252 +msgctxt "modal:goal_editor|field:weekly_task_editor|label" +msgid "Tasks to complete this week (one per line)" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:256 +msgctxt "modal:goal_editor|field:weekly_task_editor|placeholder" +msgid "" +"[ ] Write my biology essay\n" +"[x] Complete the second maths assignment\n" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:262 +msgctxt "modal:goal_editor|field:monthly_task_editor|label" +msgid "Tasks to complete this month (one per line)" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:266 +msgctxt "modal:goal_editor|field:monthly_task_editor|placeholder" +msgid "" +"[ ] Write my biology essay\n" +"[x] Complete the second maths assignment\n" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:284 +#, possible-python-brace-format +msgctxt "modal:goal_editor||field:task_editor|error:parse_general" +msgid "" +"Malformed task!\n" +"`{input}`" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:301 +msgctxt "modal:goal_editor|title" +msgid "Weekly goal editor" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:306 +msgctxt "modal:goal_editor|monthly|title" +msgid "Monthly goal editor" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:499 +msgctxt "ui:weeklymonthly|button:edit_goals|label" +msgid "Edit Goals" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:515 +#, possible-python-brace-format +msgctxt "ui:weeklymonthly|menu:period|monthly|label" +msgid "{month} {year}" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:530 +#, possible-python-brace-format +msgctxt "ui:weeklymonthly|menu:period|weekly|label" +msgid "{year} W{week}" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:534 +#, possible-python-brace-format +msgctxt "ui:weeklymonthly|menu:period|weekly|desc" +msgid "" +"{start_day} {start_month} {start_year} to {end_day} {end_month} {end_year}" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:612 +msgctxt "ui:weeklymonthly|button:period|close|label" +msgid "Close Selector" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:617 +msgctxt "ui:weeklymonthly|button:period|weekly|label" +msgid "Select Week" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:622 +msgctxt "ui:weeklymonthly|button:period|monthly|label" +msgid "Select Month" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:687 +msgctxt "ui:weeklymonthly|menu:period|weekly|placeholder" +msgid "Select a week to display" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:692 +msgctxt "ui:weeklymonthly|menu:period|monthly|placeholder" +msgid "Select a month to display" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:714 +msgctxt "ui:WeeklyMonthly|button:global|resp:success" +msgid "" +"You will now see combined statistics from all your servers (where " +"applicable)! Press again to revert." +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:727 +msgctxt "ui:WeeklyMonthly|button:global|mode:local" +msgid "Server Statistics" +msgstr "" + +#: src/modules/statistics/ui/weeklymonthly.py:732 +msgctxt "ui:WeeklyMonthly|button:global|mode:global" +msgid "Global Statistics" +msgstr "" + +#: src/modules/statistics/ui/profile.py:41 +msgctxt "modal:profile_editor|field:editor|label" +msgid "Profile Tags (One line per tag)" +msgstr "" + +#: src/modules/statistics/ui/profile.py:45 +msgctxt "modal:profile_editor|field:editor|placeholder" +msgid "" +"Mathematician\n" +"Loves Cats" +msgstr "" + +#: src/modules/statistics/ui/profile.py:53 +msgctxt "modal:profile_editor|title" +msgid "Profile Tag Editor" +msgstr "" + +#: src/modules/statistics/ui/profile.py:71 +#, possible-python-brace-format +msgctxt "modal:profile_editor|error:too_many_tags" +msgid "Too many tags! You can have at most `{limit}` profile tags." +msgstr "" + +#: src/modules/statistics/ui/profile.py:92 +msgctxt "menu:stat_type|opt:voice|name" +msgid "Voice Statistics" +msgstr "" + +#: src/modules/statistics/ui/profile.py:97 +msgctxt "menu:stat_type|opt:text|name" +msgid "Text Statistics" +msgstr "" + +#: src/modules/statistics/ui/profile.py:102 +msgctxt "menu:stat_type|opt:anki|name" +msgid "Anki Statistics" +msgstr "" + +#: src/modules/statistics/ui/profile.py:190 +msgctxt "modal:profile_editor|resp:success" +msgid "Your profile has been updated!" +msgstr "" + +#: src/modules/statistics/ui/profile.py:200 +msgctxt "ui:profile_card|button:edit|label" +msgid "Edit Profile Badges" +msgstr "" + +#: src/modules/statistics/ui/profile.py:219 +msgctxt "ui:profile_card|button:statistics|label:hide" +msgid "Hide Statistics" +msgstr "" + +#: src/modules/statistics/ui/profile.py:224 +msgctxt "ui:profile_card|button:statistics|label:show" +msgid "Show Statistics" +msgstr "" + +#: src/modules/statistics/ui/profile.py:253 +msgctxt "ui:Profile|button:global|resp:success" +msgid "" +"You will now see statistics from all you servers (where applicable)! Press " +"again to revert." +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:231 +msgctxt "ui:leaderboard|menu:stats|placeholder" +msgid "Select Activity Type" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:240 +msgctxt "ui:leaderboard|menu:stats|item:voice" +msgid "Voice Activity" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:251 +msgctxt "ui:leaderboard|menu:stats|item:study" +msgid "Study Statistics" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:262 +msgctxt "ui:leaderboard|menu:stats|item:message" +msgid "Message Activity" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:273 +msgctxt "ui:leaderboard|menu;stats|item:anki" +msgid "Anki Cards Reviewed" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:327 +msgctxt "ui:leaderboard|button:season|label" +msgid "This Season" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:331 +msgctxt "ui:leaderboard|button:day|label" +msgid "Today" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:335 +msgctxt "ui:leaderboard|button:week|label" +msgid "This Week" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:339 +msgctxt "ui:leaderboard|button:month|label" +msgid "This Month" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:343 +msgctxt "ui:leaderboard|button:alltime|label" +msgid "All Time" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:347 +msgctxt "ui:leaderboard|button:jump|label" +msgid "Jump" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:362 +msgctxt "ui:leaderboard|button:jump|input:title" +msgid "Jump to page" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:366 +msgctxt "ui:leaderboard|button:jump|input:question" +msgid "Page number to jump to" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:377 +msgctxt "ui:leaderboard|button:jump|error:invalid_page" +msgid "Invalid page number, please try again!" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:428 +msgctxt "ui:leaderboard|mode:voice|message:empty|desc" +msgid "There has been no voice activity in this period!" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:433 +msgctxt "ui:leaderboard|mode:text|message:empty|desc" +msgid "There has been no message activity in this period!" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:438 +msgctxt "ui:leaderboard|mode:anki|message:empty|desc" +msgid "There have been no Anki cards reviewed in this period!" +msgstr "" + +#: src/modules/statistics/ui/leaderboard.py:444 +msgctxt "ui:leaderboard|message:empty|title" +msgid "Leaderboard Empty!" +msgstr "" diff --git a/locales/templates/stats-gui.pot b/locales/templates/stats-gui.pot new file mode 100644 index 00000000..fbc290a7 --- /dev/null +++ b/locales/templates/stats-gui.pot @@ -0,0 +1,140 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. First column +#: src/gui/cards/stats.py:72 +msgctxt "skin:stats|header:col1" +msgid "STATISTICS" +msgstr "" + +#: src/gui/cards/stats.py:75 +msgctxt "skin:stats|subheader:leaderboard" +msgid "LEADERBOARD POSITION" +msgstr "" + +#: src/gui/cards/stats.py:79 +msgctxt "skin:stats|mode:study|subheader:study" +msgid "STUDY TIME" +msgstr "" + +#: src/gui/cards/stats.py:83 +msgctxt "skin:stats|mode:voice|subheader:study" +msgid "VOICE TIME" +msgstr "" + +#: src/gui/cards/stats.py:87 +msgctxt "skin:stats|mode:text|subheader:study" +msgid "MESSAGES" +msgstr "" + +#: src/gui/cards/stats.py:91 +msgctxt "skin:stats|mode:anki|subheader:study" +msgid "CARDS REVIEWED" +msgstr "" + +#: src/gui/cards/stats.py:102 +msgctxt "skin:stats|subheader:workouts" +msgid "WORKOUTS" +msgstr "" + +#: src/gui/cards/stats.py:118 +msgctxt "skin:stats|field:daily" +msgid "DAILY" +msgstr "" + +#: src/gui/cards/stats.py:122 +msgctxt "skin:stats|field:weekly" +msgid "WEEKLY" +msgstr "" + +#: src/gui/cards/stats.py:126 +msgctxt "skin:stats|field:monthly" +msgid "MONTHLY" +msgstr "" + +#: src/gui/cards/stats.py:130 +msgctxt "skin:stats|field:alltime" +msgid "ALL TIME" +msgstr "" + +#: src/gui/cards/stats.py:134 +msgctxt "skin:stats|field:time" +msgid "TIME" +msgstr "" + +#: src/gui/cards/stats.py:138 +msgctxt "skin:stats|field:anki" +msgid "ANKI: COMING SOON" +msgstr "" + +#: src/gui/cards/stats.py:155 +msgctxt "skin:stats|mode:study|header:col2" +msgid "STUDY STREAK" +msgstr "" + +#: src/gui/cards/stats.py:159 +msgctxt "skin:stats|mode:voice|header:col2" +msgid "VOICE STREAK" +msgstr "" + +#: src/gui/cards/stats.py:163 +msgctxt "skin:stats|mode:text|header:col2" +msgid "ACTIVITY STREAK" +msgstr "" + +#: src/gui/cards/stats.py:167 +msgctxt "skin:stats|mode:anki|header:col2" +msgid "ANKI REVIEW STREAK" +msgstr "" + +#: src/gui/cards/stats.py:180 +#, possible-python-brace-format +msgctxt "skin:stats|mode:study|field:col2_summary" +msgid "{amount} HRS" +msgstr "" + +#: src/gui/cards/stats.py:184 +#, possible-python-brace-format +msgctxt "skin:stats|mode:voice|field:col2_summary" +msgid "{amount} HRS" +msgstr "" + +#: src/gui/cards/stats.py:188 +#, possible-python-brace-format +msgctxt "skin:stats|mode:text|field:col2_summary" +msgid "{amount} XP" +msgstr "" + +#: src/gui/cards/stats.py:192 +#, possible-python-brace-format +msgctxt "skin:stats|mode:anki|field:col2_summary" +msgid "{amount} CARDS" +msgstr "" + +#: src/gui/cards/stats.py:223 +msgctxt "skin:stats|cal|weekdays" +msgid "S,M,T,W,T,F,S" +msgstr "" + +#: src/gui/cards/stats.py:227 +msgctxt "skin:stats|cal|months" +msgid "" +"JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER," +"DECEMBER" +msgstr "" diff --git a/locales/templates/sysadmin.pot b/locales/templates/sysadmin.pot new file mode 100644 index 00000000..d5c6a554 --- /dev/null +++ b/locales/templates/sysadmin.pot @@ -0,0 +1,199 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/sysadmin/presence.py:116 +msgctxt "botset:presence_status" +msgid "online_status" +msgstr "" + +#: src/modules/sysadmin/presence.py:117 +msgctxt "botset:presence_status|desc" +msgid "Bot status indicator" +msgstr "" + +#: src/modules/sysadmin/presence.py:120 +msgctxt "botset:presence_status|long_desc" +msgid "Whether the bot account displays as online, idle, dnd, or offline." +msgstr "" + +#: src/modules/sysadmin/presence.py:124 +msgctxt "botset:presence_status|accepts" +msgid "Online/Idle/Dnd/Offline" +msgstr "" + +#: src/modules/sysadmin/presence.py:133 +msgctxt "botset:presence_status|output:online" +msgid "**Online**" +msgstr "" + +#: src/modules/sysadmin/presence.py:134 +msgctxt "botset:presence_status|output:idle" +msgid "**Idle**" +msgstr "" + +#: src/modules/sysadmin/presence.py:135 +msgctxt "botset:presence_status|output:dnd" +msgid "**Do Not Disturb**" +msgstr "" + +#: src/modules/sysadmin/presence.py:136 +msgctxt "botset:presence_status|output:offline" +msgid "**Offline**" +msgstr "" + +#: src/modules/sysadmin/presence.py:139 +msgctxt "botset:presence_status|input_format:online" +msgid "Online" +msgstr "" + +#: src/modules/sysadmin/presence.py:140 +msgctxt "botset:presence_status|input_format:idle" +msgid "Idle" +msgstr "" + +#: src/modules/sysadmin/presence.py:141 +msgctxt "botset:presence_status|input_format:dnd" +msgid "DND" +msgstr "" + +#: src/modules/sysadmin/presence.py:142 +msgctxt "botset:presence_status|input_format:offline" +msgid "Offline" +msgstr "" + +#: src/modules/sysadmin/presence.py:145 +msgctxt "botset:presence_status|input_pattern:online" +msgid "on|online" +msgstr "" + +#: src/modules/sysadmin/presence.py:146 +msgctxt "botset:presence_status|input_pattern:idle" +msgid "idle" +msgstr "" + +#: src/modules/sysadmin/presence.py:147 +msgctxt "botset:presence_status|input_pattern:dnd" +msgid "do not disturb|dnd" +msgstr "" + +#: src/modules/sysadmin/presence.py:148 +msgctxt "botset:presence_status|input_pattern:offline" +msgid "off|offline|invisible" +msgstr "" + +#: src/modules/sysadmin/presence.py:155 +msgctxt "botset:presence_type" +msgid "activity_type" +msgstr "" + +#: src/modules/sysadmin/presence.py:156 +msgctxt "botset:presence_type|desc" +msgid "Type of presence activity" +msgstr "" + +#: src/modules/sysadmin/presence.py:159 +msgctxt "botset:presence_type|long_desc" +msgid "" +"Whether the bot activity is shown as 'Listening', 'Playing', or 'Watching'." +msgstr "" + +#: src/modules/sysadmin/presence.py:163 +msgctxt "botset:presence_type|accepts" +msgid "Listening/Playing/Watching/Streaming" +msgstr "" + +#: src/modules/sysadmin/presence.py:172 +msgctxt "botset:presence_type|output:watching" +msgid "**Watching**" +msgstr "" + +#: src/modules/sysadmin/presence.py:173 +msgctxt "botset:presence_type|output:listening" +msgid "**Listening**" +msgstr "" + +#: src/modules/sysadmin/presence.py:174 +msgctxt "botset:presence_type|output:playing" +msgid "**Playing**" +msgstr "" + +#: src/modules/sysadmin/presence.py:175 +msgctxt "botset:presence_type|output:streaming" +msgid "**Streaming**" +msgstr "" + +#: src/modules/sysadmin/presence.py:178 +msgctxt "botset:presence_type|input_format:watching" +msgid "Watching" +msgstr "" + +#: src/modules/sysadmin/presence.py:179 +msgctxt "botset:presence_type|input_format:listening" +msgid "Listening" +msgstr "" + +#: src/modules/sysadmin/presence.py:180 +msgctxt "botset:presence_type|input_format:playing" +msgid "Playing" +msgstr "" + +#: src/modules/sysadmin/presence.py:181 +msgctxt "botset:presence_type|input_format:streaming" +msgid "Streaming" +msgstr "" + +#: src/modules/sysadmin/presence.py:184 +msgctxt "botset:presence_type|input_pattern:watching" +msgid "watching" +msgstr "" + +#: src/modules/sysadmin/presence.py:185 +msgctxt "botset:presence_type|input_pattern:listening" +msgid "listening" +msgstr "" + +#: src/modules/sysadmin/presence.py:186 +msgctxt "botset:presence_type|input_pattern:playing" +msgid "playing" +msgstr "" + +#: src/modules/sysadmin/presence.py:187 +msgctxt "botset:presence_type|input_pattern:streaming" +msgid "streaming" +msgstr "" + +#: src/modules/sysadmin/presence.py:194 +msgctxt "botset:presence_name" +msgid "activity_name" +msgstr "" + +#: src/modules/sysadmin/presence.py:195 +msgctxt "botset:presence_name|desc" +msgid "Name of the presence activity" +msgstr "" + +#: src/modules/sysadmin/presence.py:196 +msgctxt "botset:presence_name|long_desc" +msgid "Presence activity name." +msgstr "" + +#: src/modules/sysadmin/presence.py:197 +msgctxt "botset:presence_name|accepts" +msgid "The name of the activity to show." +msgstr "" diff --git a/locales/templates/tasklist.pot b/locales/templates/tasklist.pot new file mode 100644 index 00000000..dd4a5a7d --- /dev/null +++ b/locales/templates/tasklist.pot @@ -0,0 +1,778 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: src/modules/tasklist/cog.py:34 +msgctxt "argtype:Before|opt:HOUR" +msgid "The last hour" +msgstr "" + +#: src/modules/tasklist/cog.py:35 +msgctxt "argtype:Before|opt:HALFDAY" +msgid "The last 12 hours" +msgstr "" + +#: src/modules/tasklist/cog.py:36 +msgctxt "argtype:Before|opt:DAY" +msgid "The last 24 hours" +msgstr "" + +#: src/modules/tasklist/cog.py:37 +msgctxt "argtype:Before|opt:TODAY" +msgid "Today" +msgstr "" + +#: src/modules/tasklist/cog.py:38 +msgctxt "argtype:Before|opt:YESTERDAY" +msgid "Yesterday" +msgstr "" + +#: src/modules/tasklist/cog.py:39 +msgctxt "argtype:Before|opt:Monday" +msgid "This Monday" +msgstr "" + +#: src/modules/tasklist/cog.py:40 +msgctxt "argtype:Before|opt:THISMONTH" +msgid "This Month" +msgstr "" + +#: src/modules/tasklist/cog.py:222 +msgctxt "cmd:tasklist" +msgid "tasklist" +msgstr "" + +#: src/modules/tasklist/cog.py:225 +msgctxt "cmd:tasklist|desc" +msgid "Open your tasklist." +msgstr "" + +#: src/modules/tasklist/cog.py:234 +msgctxt "group:tasks" +msgid "tasks" +msgstr "" + +#: src/modules/tasklist/cog.py:235 +msgctxt "group:tasks|desc" +msgid "Base command group for tasklist commands." +msgstr "" + +#: src/modules/tasklist/cog.py:257 +msgctxt "argtype:taskid|error:no_tasks" +msgid "Tasklist empty! No matching tasks." +msgstr "" + +#: src/modules/tasklist/cog.py:302 +#, possible-python-brace-format +msgctxt "argtype:taskid|error:parse_multi" +msgid "(Warning: {error})" +msgstr "" + +#: src/modules/tasklist/cog.py:336 +#, possible-python-brace-format +msgctxt "argtype:taskid|error:no_matching" +msgid "No tasks matching '{partial}'!" +msgstr "" + +#: src/modules/tasklist/cog.py:356 +msgctxt "cmd:tasks_new" +msgid "new" +msgstr "" + +#: src/modules/tasklist/cog.py:359 +msgctxt "cmd:tasks_new|desc" +msgid "Add a new task to your tasklist." +msgstr "" + +#: src/modules/tasklist/cog.py:363 +msgctxt "cmd:tasks_new|param:content" +msgid "task" +msgstr "" + +#: src/modules/tasklist/cog.py:364 +msgctxt "cmd:tasks_new|param:parent" +msgid "parent" +msgstr "" + +#: src/modules/tasklist/cog.py:367 +msgctxt "cmd:tasks_new|param:content|desc" +msgid "Content of your new task." +msgstr "" + +#: src/modules/tasklist/cog.py:368 +msgctxt "cmd:tasks_new|param:parent" +msgid "Parent of this task." +msgstr "" + +#: src/modules/tasklist/cog.py:388 +#, possible-python-brace-format +msgctxt "cmd:tasks_new|error:parse_parent" +msgid "Could not find parent task number `{input}` in your tasklist." +msgstr "" + +#: src/modules/tasklist/cog.py:403 +#, possible-python-brace-format +msgctxt "cmd:tasks_new|resp:success" +msgid "{tick} Created task `{label}`." +msgstr "" + +#: src/modules/tasklist/cog.py:415 +msgctxt "cmd:tasks_upload" +msgid "upload" +msgstr "" + +#: src/modules/tasklist/cog.py:418 +msgctxt "cmd:tasks_upload|desc" +msgid "Upload a list of tasks to append to or replace your tasklist." +msgstr "" + +#: src/modules/tasklist/cog.py:422 +msgctxt "cmd:tasks_upload|param:tasklist" +msgid "tasklist" +msgstr "" + +#: src/modules/tasklist/cog.py:423 +msgctxt "cmd:tasks_upload|param:append" +msgid "append" +msgstr "" + +#: src/modules/tasklist/cog.py:428 +msgctxt "cmd:tasks_upload|param:tasklist|desc" +msgid "" +"Text file containing a (standard markdown formatted) checklist of tasks to " +"add or append." +msgstr "" + +#: src/modules/tasklist/cog.py:432 +msgctxt "cmd:tasks_upload|param:append|desc" +msgid "" +"Whether to append the given tasks or replace your entire tasklist. Defaults " +"to True." +msgstr "" + +#: src/modules/tasklist/cog.py:448 +msgctxt "cmd:tasks_upload|error:not_text" +msgid "The attached tasklist must be a text file!" +msgstr "" + +#: src/modules/tasklist/cog.py:456 +msgctxt "cmd:tasks_upload|error:too_large" +msgid "The attached tasklist was too large!" +msgstr "" + +#: src/modules/tasklist/cog.py:467 +msgctxt "cmd:tasks_upload|error:too_many_lines" +msgid "" +"Too many tasks! Refusing to process a tasklist with more than `1000` lines." +msgstr "" + +#: src/modules/tasklist/cog.py:473 +msgctxt "cmd:tasks_upload|error:decoding" +msgid "" +"Could not decode attached tasklist. Please make sure it is saved with the " +"`UTF-8` encoding." +msgstr "" + +#: src/modules/tasklist/cog.py:523 +#, possible-python-brace-format +msgctxt "cmd:tasks_upload|resp:success" +msgid "{tick} Updated your tasklist." +msgstr "" + +#: src/modules/tasklist/cog.py:535 +msgctxt "cmd:tasks_edit" +msgid "edit" +msgstr "" + +#: src/modules/tasklist/cog.py:538 +msgctxt "cmd:tasks_edit|desc" +msgid "Edit a task in your tasklist." +msgstr "" + +#: src/modules/tasklist/cog.py:542 +msgctxt "cmd:tasks_edit|param:taskstr" +msgid "task" +msgstr "" + +#: src/modules/tasklist/cog.py:543 +msgctxt "cmd:tasks_edit|param:new_content" +msgid "new_task" +msgstr "" + +#: src/modules/tasklist/cog.py:544 +msgctxt "cmd:tasks_edit|param:new_parent" +msgid "new_parent" +msgstr "" + +#: src/modules/tasklist/cog.py:547 +msgctxt "cmd:tasks_edit|param:taskstr|desc" +msgid "Which task do you want to update?" +msgstr "" + +#: src/modules/tasklist/cog.py:548 +msgctxt "cmd:tasks_edit|param:new_content|desc" +msgid "What do you want to change the task to?" +msgstr "" + +#: src/modules/tasklist/cog.py:549 +msgctxt "cmd:tasks_edit|param:new_parent|desc" +msgid "Which task do you want to be the new parent?" +msgstr "" + +#: src/modules/tasklist/cog.py:568 +#, possible-python-brace-format +msgctxt "cmd:tasks_edit|error:parse_taskstr" +msgid "Could not find target task number `{input}` in your tasklist." +msgstr "" + +#: src/modules/tasklist/cog.py:584 +#, possible-python-brace-format +msgctxt "cmd:tasks_edit|error:parse_parent" +msgid "Could not find new parent task number `{input}` in your tasklist." +msgstr "" + +#: src/modules/tasklist/cog.py:603 +#, possible-python-brace-format +msgctxt "cmd:tasks_edit|resp:success|desc" +msgid "{tick} Task `{label}` updated." +msgstr "" + +#: src/modules/tasklist/cog.py:625 +msgctxt "ui:tasklist_single_editor|title" +msgid "Edit Task" +msgstr "" + +#: src/modules/tasklist/cog.py:640 +msgctxt "cmd:tasks_clear" +msgid "clear" +msgstr "" + +#: src/modules/tasklist/cog.py:641 +msgctxt "cmd:tasks_clear|desc" +msgid "Clear your tasklist." +msgstr "" + +#: src/modules/tasklist/cog.py:651 +msgctxt "cmd:tasks_clear|resp:success" +msgid "Your tasklist has been cleared." +msgstr "" + +#: src/modules/tasklist/cog.py:659 +msgctxt "cmd:tasks_remove" +msgid "remove" +msgstr "" + +#: src/modules/tasklist/cog.py:662 +msgctxt "cmd:tasks_remove|desc" +msgid "" +"Remove tasks matching all the provided conditions. (E.g. remove tasks " +"completed before today)." +msgstr "" + +#: src/modules/tasklist/cog.py:666 +msgctxt "cmd:tasks_remove|param:taskidstr" +msgid "tasks" +msgstr "" + +#: src/modules/tasklist/cog.py:667 +msgctxt "cmd:tasks_remove|param:created_before" +msgid "created_before" +msgstr "" + +#: src/modules/tasklist/cog.py:668 +msgctxt "cmd:tasks_remove|param:updated_before" +msgid "updated_before" +msgstr "" + +#: src/modules/tasklist/cog.py:669 +msgctxt "cmd:tasks_remove|param:completed" +msgid "completed" +msgstr "" + +#: src/modules/tasklist/cog.py:670 +msgctxt "cmd:tasks_remove|param:cascade" +msgid "cascade" +msgstr "" + +#: src/modules/tasklist/cog.py:675 +msgctxt "cmd:tasks_remove|param:taskidstr|desc" +msgid "List of task numbers or ranges to remove (e.g. 1, 2, 5-7, 8.1-3, 9-)." +msgstr "" + +#: src/modules/tasklist/cog.py:679 +msgctxt "cmd:tasks_remove|param:created_before|desc" +msgid "Only delete tasks created before the selected time." +msgstr "" + +#: src/modules/tasklist/cog.py:683 +msgctxt "cmd:tasks_remove|param:updated_before|desc" +msgid "" +"Only deleted tasks update (i.e. completed or edited) before the selected " +"time." +msgstr "" + +#: src/modules/tasklist/cog.py:687 +msgctxt "cmd:tasks_remove|param:completed" +msgid "Only delete tasks which are (not) complete." +msgstr "" + +#: src/modules/tasklist/cog.py:691 +msgctxt "cmd:tasks_remove|param:cascade" +msgid "Whether to recursively remove subtasks of removed tasks." +msgstr "" + +#: src/modules/tasklist/cog.py:760 +#, possible-python-brace-format +msgctxt "cmd:tasks_remove|resp:success" +msgid "{tick} Deleted task `{label}`" +msgid_plural "{tick} Deleted `{count}` tasks from your tasklist." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/tasklist/cog.py:778 +msgctxt "cmd:tasks_tick" +msgid "tick" +msgstr "" + +#: src/modules/tasklist/cog.py:779 +msgctxt "cmd:tasks_tick|desc" +msgid "Mark the given tasks as completed." +msgstr "" + +#: src/modules/tasklist/cog.py:782 +msgctxt "cmd:tasks_tick|param:taskidstr" +msgid "tasks" +msgstr "" + +#: src/modules/tasklist/cog.py:783 +msgctxt "cmd:tasks_tick|param:cascade" +msgid "cascade" +msgstr "" + +#: src/modules/tasklist/cog.py:788 +msgctxt "cmd:tasks_tick|param:taskidstr|desc" +msgid "List of task numbers or ranges to remove (e.g. 1, 2, 5-7, 8.1-3, 9-)." +msgstr "" + +#: src/modules/tasklist/cog.py:792 +msgctxt "cmd:tasks_tick|param:cascade|desc" +msgid "Whether to also mark all subtasks as complete." +msgstr "" + +#: src/modules/tasklist/cog.py:836 +#, possible-python-brace-format +msgctxt "cmd:tasks_tick|resp:success" +msgid "{tick} Marked `{label}` as complete." +msgid_plural "{tick} Marked `{count}` tasks as complete." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/tasklist/cog.py:854 +msgctxt "cmd:tasks_untick" +msgid "untick" +msgstr "" + +#: src/modules/tasklist/cog.py:855 +msgctxt "cmd:tasks_untick|desc" +msgid "Mark the given tasks as incomplete." +msgstr "" + +#: src/modules/tasklist/cog.py:858 +msgctxt "cmd:tasks_untick|param:taskidstr" +msgid "taskids" +msgstr "" + +#: src/modules/tasklist/cog.py:859 +msgctxt "cmd:tasks_untick|param:cascade" +msgid "cascade" +msgstr "" + +#: src/modules/tasklist/cog.py:864 +msgctxt "cmd:tasks_untick|param:taskidstr|desc" +msgid "List of task numbers or ranges to remove (e.g. 1, 2, 5-7, 8.1-3, 9-)." +msgstr "" + +#: src/modules/tasklist/cog.py:868 +msgctxt "cmd:tasks_untick|param:cascade|desc" +msgid "Whether to also mark all subtasks as incomplete." +msgstr "" + +#: src/modules/tasklist/cog.py:909 +#, possible-python-brace-format +msgctxt "cmd:tasks_untick|resp:success" +msgid "{tick} Marked `{label}` as incomplete." +msgid_plural "{tick} Marked `{count}` tasks as incomplete." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/tasklist/cog.py:933 +msgctxt "cmd:configure_tasklist" +msgid "tasklist" +msgstr "" + +#: src/modules/tasklist/cog.py:934 +msgctxt "cmd:configure_tasklist|desc" +msgid "Tasklist configuration panel" +msgstr "" + +#: src/modules/tasklist/cog.py:937 +msgctxt "cmd:configure_tasklist|param:reward" +msgid "reward" +msgstr "" + +#: src/modules/tasklist/cog.py:938 +msgctxt "cmd:configure_tasklist|param:reward_limit" +msgid "reward_limit" +msgstr "" + +#: src/modules/tasklist/cog.py:974 +#, possible-python-brace-format +msgctxt "cmd:configure_tasklist|resp:success|desc" +msgid "" +"Members will now be rewarded {coin}**{amount}** for each task they complete " +"up to a maximum of `{limit}` tasks per 24h." +msgstr "" + +#: src/modules/tasklist/tasklist.py:254 +#, possible-python-brace-format +msgctxt "tasklist|parse:multi-range|error:parents_match" +msgid "Parents don't match in range `{range}`" +msgstr "" + +#: src/modules/tasklist/tasklist.py:276 +#, possible-python-brace-format +msgctxt "tasklist|parse:multi-range|error:parse" +msgid "Could not parse `{range}` as a task number or range." +msgstr "" + +#: src/modules/tasklist/tasklist.py:307 +#, possible-python-brace-format +msgctxt "modal:tasklist_bulk_editor|error:parse_task" +msgid "" +"Malformed taskline!\n" +"`{input}`" +msgstr "" + +#: src/modules/tasklist/tasklist.py:319 +msgctxt "modal:tasklist_bulk_editor|error:task_too_long" +msgid "Please keep your tasks under 100 characters!" +msgstr "" + +#: src/modules/tasklist/ui.py:38 +msgctxt "ui:tasklist_caller|button:tasklist|label" +msgid "Open Tasklist" +msgstr "" + +#: src/modules/tasklist/ui.py:56 +msgctxt "modal:tasklist_single_editor|field:task|label" +msgid "Task content" +msgstr "" + +#: src/modules/tasklist/ui.py:68 +msgctxt "modal:tasklist_single_editor|field:parent|label" +msgid "Parent Task" +msgstr "" + +#: src/modules/tasklist/ui.py:72 +msgctxt "modal:tasklist_single_editor|field:parent|placeholder" +msgid "Enter a task number, e.g. 2.1" +msgstr "" + +#: src/modules/tasklist/ui.py:103 +msgctxt "modal:tasklist_bulk_editor|field:tasklist|label" +msgid "Tasklist" +msgstr "" + +#: src/modules/tasklist/ui.py:107 +msgctxt "modal:tasklist_bulk_editor|field:tasklist|placeholder" +msgid "" +"- [ ] This is task 1, unfinished.\n" +"- [x] This is task 2, finished.\n" +" - [ ] This is subtask 2.1." +msgstr "" + +#: src/modules/tasklist/ui.py:129 +msgctxt "modal:tasklist_bulk_editor" +msgid "Tasklist Editor" +msgstr "" + +#: src/modules/tasklist/ui.py:185 +msgctxt "ui:tasklist|menu:main|mode:toggle|placeholder" +msgid "Select to Toggle" +msgstr "" + +#: src/modules/tasklist/ui.py:189 +#, possible-python-brace-format +msgctxt "ui:tasklist|menu:sub|mode:toggle|placeholder" +msgid "Toggle from {label}.*" +msgstr "" + +#: src/modules/tasklist/ui.py:195 +msgctxt "ui:tasklist|menu:main|mode:edit|placeholder" +msgid "Select to Edit" +msgstr "" + +#: src/modules/tasklist/ui.py:199 +#, possible-python-brace-format +msgctxt "ui:tasklist|menu:sub|mode:edit|placeholder" +msgid "Edit from {label}.*" +msgstr "" + +#: src/modules/tasklist/ui.py:205 +msgctxt "ui:tasklist|menu:main|mode:delete|placeholder" +msgid "Select to Delete" +msgstr "" + +#: src/modules/tasklist/ui.py:209 +#, possible-python-brace-format +msgctxt "ui:tasklist|menu:sub|mode:delete|placeholder" +msgid "Delete from {label}.*" +msgstr "" + +#: src/modules/tasklist/ui.py:405 +#, possible-python-brace-format +msgctxt "ui:tasklist_single_editor|field:parent|error:parse_id" +msgid "Could not find the given parent task number `{input}` in your tasklist." +msgstr "" + +#: src/modules/tasklist/ui.py:419 +#, possible-python-brace-format +msgctxt "ui:tasklist_single_editor|field:parent|error:multiple_matching" +msgid "" +"Multiple tasks matching given parent task `{input}`. Please use a task " +"number instead!" +msgstr "" + +#: src/modules/tasklist/ui.py:426 +#, possible-python-brace-format +msgctxt "ui:tasklist_single_editor|field:parent|error:no_matching" +msgid "No tasks matching given parent task `{input}`." +msgstr "" + +#: src/modules/tasklist/ui.py:497 +msgctxt "ui:tasklist|menu:edit|modal:title" +msgid "Edit task" +msgstr "" + +#: src/modules/tasklist/ui.py:590 +msgctxt "ui:tasklist_single_editor|title" +msgid "Add task" +msgstr "" + +#: src/modules/tasklist/ui.py:623 +msgctxt "ui:tasklist|button:edit_mode|label" +msgid "Edit" +msgstr "" + +#: src/modules/tasklist/ui.py:639 +msgctxt "ui:tasklist|button:delete_mode|label" +msgid "Delete" +msgstr "" + +#: src/modules/tasklist/ui.py:655 +msgctxt "ui:tasklist|button:toggle_mode|label" +msgid "Toggle" +msgstr "" + +#: src/modules/tasklist/ui.py:672 +msgctxt "ui:tasklist|button:edit_bulk|error:too_long" +msgid "" +"Your tasklist is too long to be edited in a Discord text input! Use the save " +"button and {cmds[tasks upload]} instead." +msgstr "" + +#: src/modules/tasklist/ui.py:686 +msgctxt "ui:tasklist|button:edit_bulk|label" +msgid "Bulk Edit" +msgstr "" + +#: src/modules/tasklist/ui.py:699 +msgctxt "ui:tasklist|button:clear|label" +msgid "Clear Tasklist" +msgstr "" + +#: src/modules/tasklist/ui.py:718 +#, possible-python-brace-format +msgctxt "ui:tasklist|button:save|dm:contents" +msgid "Your tasklist as of {now} is attached. Click here to jump back: {jump}" +msgstr "" + +#: src/modules/tasklist/ui.py:731 +msgctxt "ui:tasklist|button:save|error:dms" +msgid "Could not DM you! Do you have me blocked? Tasklist attached below." +msgstr "" + +#: src/modules/tasklist/ui.py:776 +msgctxt "ui:tasklist|error:wrong_user" +msgid "This is not your tasklist!" +msgstr "" + +#: src/modules/tasklist/ui.py:818 +#, possible-python-brace-format +msgctxt "ui:tasklist|embed|author" +msgid "{name}'s tasklist ({completed}/{total} complete)" +msgstr "" + +#: src/modules/tasklist/ui.py:840 +msgctxt "ui:tasklist|embed|description" +msgid "" +"**You have no tasks on your tasklist!**\n" +"Add a task with {cmds[tasks new]}, or by pressing the {new_button} button " +"below." +msgstr "" + +#: src/modules/tasklist/settings.py:33 +msgctxt "guildset:task_reward" +msgid "task_reward" +msgstr "" + +#: src/modules/tasklist/settings.py:36 +msgctxt "guildset:task_reward|desc" +msgid "Number of LionCoins given for each completed task." +msgstr "" + +#: src/modules/tasklist/settings.py:40 +msgctxt "guildset:task_reward|long_desc" +msgid "" +"The number of coins members will be rewarded each time they complete a task " +"on their tasklist." +msgstr "" + +#: src/modules/tasklist/settings.py:44 +msgctxt "guildset:task_reward|accepts" +msgid "The number of LionCoins to reward per task." +msgstr "" + +#: src/modules/tasklist/settings.py:56 +#, possible-python-brace-format +msgctxt "guildset:task_reward|response" +msgid "" +"Members will now be rewarded {coin}**{amount}** for each completed task." +msgstr "" + +#: src/modules/tasklist/settings.py:65 +#, possible-python-brace-format +msgctxt "guildset:task_reward|formatted" +msgid "{coin}**{amount}** per task." +msgstr "" + +#: src/modules/tasklist/settings.py:73 +msgctxt "guildset:task_reward_limit" +msgid "task_reward_limit" +msgstr "" + +#: src/modules/tasklist/settings.py:76 +msgctxt "guildset:task_reward_limit|desc" +msgid "Maximum number of task rewards given per 24h." +msgstr "" + +#: src/modules/tasklist/settings.py:80 +msgctxt "guildset:task_reward_limit|long_desc" +msgid "" +"Maximum number of times in each 24h period that members will be rewarded for " +"completing a task." +msgstr "" + +#: src/modules/tasklist/settings.py:85 +msgctxt "guildset:task_reward_limit|accepts" +msgid "The maximum number of tasks to reward LC for per 24h." +msgstr "" + +#: src/modules/tasklist/settings.py:97 +#, possible-python-brace-format +msgctxt "guildset:task_reward_limit|response" +msgid "" +"Members will now be rewarded for task completion at most **{amount}** times " +"per 24h." +msgstr "" + +#: src/modules/tasklist/settings.py:106 +#, possible-python-brace-format +msgctxt "guildset:task_reward_limit|formatted" +msgid "`{number}` per 24 hours." +msgstr "" + +#: src/modules/tasklist/settings.py:113 +msgctxt "guildset:tasklist_channels" +msgid "tasklist_channels" +msgstr "" + +#: src/modules/tasklist/settings.py:116 +msgctxt "guildset:tasklist_channels|desc" +msgid "Channels in which to publicly display member tasklists." +msgstr "" + +#: src/modules/tasklist/settings.py:120 +#, possible-python-brace-format +msgctxt "guildset:tasklist_channels|long_desc" +msgid "" +"A member's tasklist (from {cmds[tasklist]}) is usually only visible to the " +"member themselves. If set, tasklists opened in `tasklist_channels` will be " +"visible to all members, and the interface will have a much longer expiry " +"period. If a category is provided, this will apply to all channels under the " +"category." +msgstr "" + +#: src/modules/tasklist/settings.py:127 +msgctxt "guildset:tasklist_channels|accepts" +msgid "Comma separated list of tasklist channel names or ids." +msgstr "" + +#: src/modules/tasklist/settings.py:144 +#, possible-python-brace-format +msgctxt "guildset:tasklist_channels|set_response|set" +msgid "" +"Tasklists will now be publicly displayed in the following channels: " +"{channels}" +msgstr "" + +#: src/modules/tasklist/settings.py:149 +msgctxt "guildset:tasklist_channels|set_response|unset" +msgid "Member tasklists will never be publicly displayed." +msgstr "" + +#: src/modules/tasklist/settings.py:158 +msgctxt "guildset:tasklist_channels|set_using" +msgid "Channel selector below." +msgstr "" + +#: src/modules/tasklist/settings.py:289 +msgctxt "ui:tasklist_config|button:close|label" +msgid "Close" +msgstr "" + +#: src/modules/tasklist/settings.py:290 +msgctxt "ui:tasklist_config|button:reset|label" +msgid "Reset" +msgstr "" + +#: src/modules/tasklist/settings.py:293 +msgctxt "ui:tasklist_config|menu:channels|placeholder" +msgid "Set Tasklist Channels" +msgstr "" + +#: src/modules/tasklist/settings.py:311 +msgctxt "ui:tasklist_config|embed|title" +msgid "Tasklist Configuration Panel" +msgstr "" + +#: src/modules/tasklist/settings.py:320 +msgctxt "dash:tasklist|name" +msgid "Tasklist Configuration ({commands[configure tasklist]})" +msgstr "" diff --git a/locales/templates/test.pot b/locales/templates/test.pot new file mode 100644 index 00000000..f69433fe --- /dev/null +++ b/locales/templates/test.pot @@ -0,0 +1,78 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/test/test.py:47 src/modules/test/test.py:54 +msgid "test" +msgstr "" + +#: src/modules/test/test.py:55 +msgid "Test" +msgstr "" + +#: src/modules/test/test.py:62 +msgid "editor" +msgstr "" + +#: src/modules/test/test.py:63 +msgid "Test message editor" +msgstr "" + +#: src/modules/test/test.py:89 +msgid "test_ephemeral" +msgstr "" + +#: src/modules/test/test.py:90 +msgid "Test ephemeral delete and edit" +msgstr "" + +#: src/modules/test/test.py:102 +msgid "colours" +msgstr "" + +#: src/modules/test/test.py:103 +msgid "Test Ansi colours" +msgstr "" + +#: src/modules/test/test.py:123 +msgid "fail" +msgstr "" + +#: src/modules/test/test.py:130 +msgid "pager" +msgstr "" + +#: src/modules/test/test.py:158 +msgid "pager2" +msgstr "" + +#: src/modules/test/test.py:189 +msgid "prettyusers" +msgstr "" + +#: src/modules/test/test.py:239 +msgid "dmview" +msgstr "" + +#: src/modules/test/test.py:250 +msgid "multiview" +msgstr "" + +#: src/modules/test/test.py:267 +msgid "stats-card" +msgstr "" diff --git a/locales/templates/text-tracker.pot b/locales/templates/text-tracker.pot new file mode 100644 index 00000000..809fc0ab --- /dev/null +++ b/locales/templates/text-tracker.pot @@ -0,0 +1,222 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/tracking/text/cog.py:249 +msgctxt "cmd:configure_message_exp" +msgid "message_exp" +msgstr "" + +#: src/tracking/text/cog.py:252 +msgctxt "cmd:configure_message_exp|desc" +msgid "Configure Message Tracking & Experience" +msgstr "" + +#: src/tracking/text/cog.py:315 +msgctxt "cmd:leo_configure_exp_rates" +msgid "experience_rates" +msgstr "" + +#: src/tracking/text/cog.py:318 +msgctxt "cmd:leo_configure_exp_rates|desc" +msgid "Global experience rate configuration" +msgstr "" + +#: src/tracking/text/ui.py:45 +msgctxt "ui:text_tracker_config|menu:untracked_channels|placeholder" +msgid "Select Untracked Channels" +msgstr "" + +#: src/tracking/text/ui.py:52 +msgctxt "ui:text_tracker_config|embed|title" +msgid "Message Tracking Configuration Panel" +msgstr "" + +#: src/tracking/text/ui.py:89 +msgctxt "dash:text_tracking|title" +msgid "Message XP configuration ({commands[configure message_exp]})" +msgstr "" + +#: src/tracking/text/settings.py:33 +msgctxt "guildset:xp_per_period" +msgid "xp_per_5min" +msgstr "" + +#: src/tracking/text/settings.py:36 +msgctxt "guildset:xp_per_period|desc" +msgid "" +"How much XP members will be given every 5 minute period they are active." +msgstr "" + +#: src/tracking/text/settings.py:40 +msgctxt "guildset:xp_per_period|long_desc" +msgid "" +"Amount of message XP to give members for each 5 minute period in which they " +"are active (send a message). Note that this XP is only given *once* per " +"period." +msgstr "" + +#: src/tracking/text/settings.py:45 +msgctxt "guildset:xp_per_period|accepts" +msgid "Number of message XP to reward per 5 minute active period." +msgstr "" + +#: src/tracking/text/settings.py:57 +#, possible-python-brace-format +msgctxt "guildset:xp_per_period|set_response" +msgid "" +"For every **5** minutes they are active (i.e. in which they send a message), " +"members will now be given **{amount}** XP." +msgstr "" + +#: src/tracking/text/settings.py:65 +msgctxt "guildset:word_xp" +msgid "xp_per_100words" +msgstr "" + +#: src/tracking/text/settings.py:68 +msgctxt "guildset:word_xp|desc" +msgid "How much XP members will be given per hundred words they write." +msgstr "" + +#: src/tracking/text/settings.py:72 +msgctxt "guildset:word_xp|long_desc" +msgid "" +"Amount of message XP to be given (additionally to the XP per period) for " +"each hundred words. Useful for rewarding communication." +msgstr "" + +#: src/tracking/text/settings.py:77 +msgctxt "guildset:word_xp|accepts" +msgid "Number of XP to reward per hundred words sent." +msgstr "" + +#: src/tracking/text/settings.py:89 +#, possible-python-brace-format +msgctxt "guildset:word_xp|set_response" +msgid "" +"For every **100** words they send, members will now be rewarded an " +"additional **{amount}** XP." +msgstr "" + +#: src/tracking/text/settings.py:95 +msgctxt "guildset:untracked_text_channels" +msgid "untracked_text_channels" +msgstr "" + +#: src/tracking/text/settings.py:98 +msgctxt "guildset:untracked_text_channels|desc" +msgid "Channels in which Message XP will not be given." +msgstr "" + +#: src/tracking/text/settings.py:102 +msgctxt "guildset:untracked_text_channels|long_desc" +msgid "" +"Messages sent in these channels will not count towards a member's message " +"XP. If a category is selected, then all channels under the category will " +"also be untracked." +msgstr "" + +#: src/tracking/text/settings.py:107 +msgctxt "guildset:untracked_text_channels|accepts" +msgid "Comma separated list of untracked text channel names or ids." +msgstr "" + +#: src/tracking/text/settings.py:111 +msgctxt "guildset:untracked_text_channels|notset" +msgid "Not Set (all text channels will be tracked.)" +msgstr "" + +#: src/tracking/text/settings.py:128 +#, possible-python-brace-format +msgctxt "guildset:untracked_text_channels|set_response|set" +msgid "Messages in or under the following channels will be ignored: {channels}" +msgstr "" + +#: src/tracking/text/settings.py:133 +msgctxt "guildset:untracked_text_channels|set_response|notset" +msgid "Message XP will now be tracked in every channel." +msgstr "" + +#: src/tracking/text/settings.py:142 +msgctxt "guildset:untracked_text_channels|set_using" +msgid "Channel selector below" +msgstr "" + +#: src/tracking/text/settings.py:173 +msgctxt "botset:xp_per_period" +msgid "xp_per_5min" +msgstr "" + +#: src/tracking/text/settings.py:176 +msgctxt "botset:xp_per_period|desc" +msgid "" +"How much global XP members will be given every 5 minute period they are " +"active." +msgstr "" + +#: src/tracking/text/settings.py:180 +msgctxt "botset:xp_per_period|long_desc" +msgid "" +"Amount of global message XP to give members for each 5 minute period in " +"which they are active (send a message). Note that this XP is only given " +"*once* per period." +msgstr "" + +#: src/tracking/text/settings.py:186 +msgctxt "botset:xp_per_period|accepts" +msgid "Number of message XP to reward per 5 minute active period." +msgstr "" + +#: src/tracking/text/settings.py:198 +#, possible-python-brace-format +msgctxt "leoset:xp_per_period|set_response" +msgid "" +"For every **5** minutes they are active (i.e. in which they send a message), " +"all users will now be given **{amount}** global XP." +msgstr "" + +#: src/tracking/text/settings.py:206 +msgctxt "botset:word_xp" +msgid "xp_per_100words" +msgstr "" + +#: src/tracking/text/settings.py:209 +msgctxt "botset:word_xp|desc" +msgid "How much global XP members will be given per hundred words they write." +msgstr "" + +#: src/tracking/text/settings.py:213 +msgctxt "botset:word_xp|long_desc" +msgid "" +"Amount of global message XP to be given (additionally to the XP per period) " +"for each hundred words. Useful for rewarding communication." +msgstr "" + +#: src/tracking/text/settings.py:218 +msgctxt "botset:word_xp|accepts" +msgid "Number of XP to reward per hundred words sent." +msgstr "" + +#: src/tracking/text/settings.py:230 +#, possible-python-brace-format +msgctxt "leoset:word_xp|set_response" +msgid "" +"For every **100** words they send, users will now be rewarded an additional " +"**{amount}** global XP." +msgstr "" diff --git a/locales/templates/timer-gui.pot b/locales/templates/timer-gui.pot new file mode 100644 index 00000000..48e54931 --- /dev/null +++ b/locales/templates/timer-gui.pot @@ -0,0 +1,33 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/gui/cards/timer.py:73 +msgctxt "skin:timer|field:date_text" +msgid "Use /now to show what you are working on!" +msgstr "" + +#: src/gui/cards/timer.py:89 +msgctxt "skin:timer|stage:focus|field:stage_text" +msgid "FOCUS" +msgstr "" + +#: src/gui/cards/timer.py:103 +msgctxt "skin:timer|stage:break|field:stage_text" +msgid "BREAK" +msgstr "" diff --git a/locales/templates/user_config.pot b/locales/templates/user_config.pot new file mode 100644 index 00000000..07512fb1 --- /dev/null +++ b/locales/templates/user_config.pot @@ -0,0 +1,97 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/user_config/cog.py:38 +msgctxt "userset:timezone" +msgid "timezone" +msgstr "" + +#: src/modules/user_config/cog.py:41 +msgctxt "userset:timezone|desc" +msgid "Timezone in which to display statistics." +msgstr "" + +#: src/modules/user_config/cog.py:45 +msgctxt "userset:timezone|long_desc" +msgid "" +"All personal time-related features of StudyLion will use this timezone for " +"you, including personal statistics. Note that leaderboards will still be " +"shown in the server's own timezone." +msgstr "" + +#: src/modules/user_config/cog.py:60 +#, possible-python-brace-format +msgctxt "userset:timezone|response:set" +msgid "Your personal timezone has been set to `{timezone}`." +msgstr "" + +#: src/modules/user_config/cog.py:65 +msgctxt "userset:timezone|response:unset" +msgid "" +"You have unset your timezone. Statistics will be displayed in the server " +"timezone." +msgstr "" + +#: src/modules/user_config/cog.py:81 +msgctxt "cmd:userconfig" +msgid "my" +msgstr "" + +#: src/modules/user_config/cog.py:82 +msgctxt "cmd:userconfig|desc" +msgid "User configuration commands." +msgstr "" + +#: src/modules/user_config/cog.py:89 +msgctxt "cmd:userconfig_timezone" +msgid "timezone" +msgstr "" + +#: src/modules/user_config/cog.py:92 +msgctxt "cmd:userconfig_timezone|desc" +msgid "" +"Set your personal timezone, used for displaying stats and setting reminders." +msgstr "" + +#: src/modules/user_config/cog.py:96 +msgctxt "cmd:userconfig_timezone|param:timezone" +msgid "timezone" +msgstr "" + +#: src/modules/user_config/cog.py:101 +msgctxt "cmd:userconfig_timezone|param:timezone|desc" +msgid "What timezone are you in? Try typing your country or continent." +msgstr "" + +#: src/modules/user_config/cog.py:117 +#, possible-python-brace-format +msgctxt "cmd:userconfig_timezone|response:set" +msgid "Your timezone is currently set to {timezone}" +msgstr "" + +#: src/modules/user_config/cog.py:121 +msgctxt "cmd:userconfig_timezone|button:reset|label" +msgid "Reset" +msgstr "" + +#: src/modules/user_config/cog.py:133 +#, possible-python-brace-format +msgctxt "cmd:userconfig_timezone|response:unset" +msgid "Your timezone is not set. Using the server timezone `{timezone}`." +msgstr "" diff --git a/locales/templates/utils.pot b/locales/templates/utils.pot new file mode 100644 index 00000000..605fc4bc --- /dev/null +++ b/locales/templates/utils.pot @@ -0,0 +1,510 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/utils/cog.py:18 +msgctxt "cmd:page" +msgid "page" +msgstr "" + +#: src/utils/cog.py:21 +msgctxt "cmd:page|desc" +msgid "" +"Jump to a given page of the ouput of a previous command in this channel." +msgstr "" + +#: src/utils/cog.py:34 +msgctxt "cmd:page|error:no_pager" +msgid "No pager listening in this channel!" +msgstr "" + +#: src/utils/cog.py:45 +msgctxt "cmd:page_next" +msgid "next" +msgstr "" + +#: src/utils/cog.py:46 +msgctxt "cmd:page_next|desc" +msgid "Jump to the next page of output." +msgstr "" + +#: src/utils/cog.py:52 +msgctxt "cmd:page_prev" +msgid "prev" +msgstr "" + +#: src/utils/cog.py:53 +msgctxt "cmd:page_prev|desc" +msgid "Jump to the previous page of output." +msgstr "" + +#: src/utils/cog.py:59 +msgctxt "cmd:page_first" +msgid "first" +msgstr "" + +#: src/utils/cog.py:60 +msgctxt "cmd:page_first|desc" +msgid "Jump to the first page of output." +msgstr "" + +#: src/utils/cog.py:66 +msgctxt "cmd:page_last" +msgid "last" +msgstr "" + +#: src/utils/cog.py:67 +msgctxt "cmd:page_last|desc" +msgid "Jump to the last page of output." +msgstr "" + +#: src/utils/cog.py:73 +msgctxt "cmd:page_select" +msgid "select" +msgstr "" + +#: src/utils/cog.py:74 +msgctxt "cmd:page_select|desc" +msgid "Select a page of the output to jump to." +msgstr "" + +#: src/utils/cog.py:77 +msgctxt "cmd:page_select|param:page" +msgid "page" +msgstr "" + +#: src/utils/cog.py:80 +msgctxt "cmd:page_select|param:page|desc" +msgid "The page name or number to jump to." +msgstr "" + +#: src/utils/cog.py:86 +msgctxt "cmd:page_select|error:no_pager" +msgid "No pager listening in this channel!" +msgstr "" + +#: src/utils/cog.py:97 +msgctxt "cmd:page_select|acmpl|error:no_pager" +msgid "No active pagers in this channel!" +msgstr "" + +#: src/utils/transformers.py:43 +#, possible-python-brace-format +msgctxt "utils:parse_dur|error" +msgid "Cannot parse `{value}` as a duration." +msgstr "" + +#: src/utils/transformers.py:68 +#, possible-python-brace-format +msgctxt "util:Duration|acmpl|error" +msgid "Cannot extract duration from \"{partial}\"" +msgstr "" + +#: src/utils/lib.py:670 +msgctxt "util:parse_dur|regex:day" +msgid "(?P\\d+)\\s*(?:(d)|(day))" +msgstr "" + +#: src/utils/lib.py:677 +msgctxt "util:parse_dur|regex:hour" +msgid "(?P\\d+)\\s*(?:(h)|(hour))" +msgstr "" + +#: src/utils/lib.py:684 +msgctxt "util:parse_dur|regex:minute" +msgid "(?P\\d+)\\s*(?:(m)|(min))" +msgstr "" + +#: src/utils/lib.py:691 +msgctxt "util:parse_dur|regex:second" +msgid "(?P\\d+)\\s*(?:(s)|(sec))" +msgstr "" + +#: src/utils/ui/config.py:35 +msgctxt "ui:configui|modal:edit|title" +msgid "Setting Editor" +msgstr "" + +#: src/utils/ui/config.py:75 +msgctxt "ui:configui|check|not_permitted" +msgid "You have insufficient server permissions to use this UI!" +msgstr "" + +#: src/utils/ui/config.py:153 +msgctxt "ui:configui|button:edit|label" +msgid "Edit" +msgstr "" + +#: src/utils/ui/config.py:192 +msgctxt "ui:guild_config_base|button:reset|label" +msgid "Reset" +msgstr "" + +#. List of valid keys indicating movement to the next page +#: src/utils/ui/pagers.py:50 +msgctxt "cmd:page|pager:Pager|options:next" +msgid "n, nxt, next, forward, +" +msgstr "" + +#. List of valid keys indicating movement to the previous page +#: src/utils/ui/pagers.py:53 +msgctxt "cmd:page|pager:Pager|options:prev" +msgid "p, prev, back, -" +msgstr "" + +#. List of valid keys indicating movement to the first page +#: src/utils/ui/pagers.py:56 +msgctxt "cmd:page|pager:Pager|options:first" +msgid "f, first, one, start" +msgstr "" + +#. List of valid keys indicating movement to the last page +#: src/utils/ui/pagers.py:59 +msgctxt "cmd:page|pager:Pager|options:last" +msgid "l, last, end" +msgstr "" + +#: src/utils/ui/pagers.py:273 +#, possible-python-brace-format +msgctxt "cmd:page|pager:Pager|error:parse" +msgid "Could not understand page specification `{value}`." +msgstr "" + +#: src/utils/ui/pagers.py:302 +#, possible-python-brace-format +msgctxt "cmd:page|acmpl|pager:Pager|choice:last" +msgid "Last: Page {page}/{total}" +msgstr "" + +#: src/utils/ui/pagers.py:307 +#, possible-python-brace-format +msgctxt "cmd:page|acmpl|pager:Pager|choice:current" +msgid "Current: Page {page}/{total}" +msgstr "" + +#: src/utils/ui/pagers.py:319 +#, possible-python-brace-format +msgctxt "cmd:page|acmpl|pager:Pager|choice:general" +msgid "Page {page}" +msgstr "" + +#: src/utils/ui/pagers.py:353 +#, possible-python-brace-format +msgctxt "cmd:page|acmpl|pager:Page|choice:select" +msgid "Selected: Page {page}/{total}" +msgstr "" + +#: src/utils/ui/pagers.py:363 +msgctxt "cmd:page|acmpl|pager:Page|error:parse" +msgid "No matching pages!" +msgstr "" + +#: src/utils/ui/msgeditor.py:75 +msgctxt "ui:msg_editor|error:empty" +msgid "Rendering failed! The message content and embed cannot both be empty." +msgstr "" + +#: src/utils/ui/msgeditor.py:86 +#, possible-python-brace-format +msgctxt "ui:msg_editor|error:embed_failed" +msgid "" +"Rendering failed! Could not parse the embed.\n" +"Error: {error}" +msgstr "" + +#: src/utils/ui/msgeditor.py:104 +#, possible-python-brace-format +msgctxt "ui:msg_editor|error:invalid_change" +msgid "" +"Rendering failed! The message was not modified.\n" +"Error: `{text}`" +msgstr "" + +#: src/utils/ui/msgeditor.py:123 +msgctxt "ui:msg_editor|modal:content|field:content|label" +msgid "Message Content" +msgstr "" + +#: src/utils/ui/msgeditor.py:132 +msgctxt "ui:msg_editor|modal:content|title" +msgid "Content Editor" +msgstr "" + +#: src/utils/ui/msgeditor.py:150 +msgctxt "ui:msg_editor|button:edit|label" +msgid "Edit Content" +msgstr "" + +#: src/utils/ui/msgeditor.py:162 +msgctxt "ui:msg_editor|button:add_embed|sample_embed|title" +msgid "Title Placeholder" +msgstr "" + +#: src/utils/ui/msgeditor.py:163 +msgctxt "ui:msg_editor|button:add_embed|sample_embed|description" +msgid "Description Placeholder" +msgstr "" + +#: src/utils/ui/msgeditor.py:174 +msgctxt "ui:msg_editor|button:add_embed|label" +msgid "Add Embed" +msgstr "" + +#: src/utils/ui/msgeditor.py:192 +msgctxt "ui:msg_editor|modal:body|field:content|label" +msgid "Message Content" +msgstr "" + +#: src/utils/ui/msgeditor.py:203 +msgctxt "ui:msg_editor|modal:body|field:desc|label" +msgid "Embed Description" +msgstr "" + +#: src/utils/ui/msgeditor.py:214 +msgctxt "ui:msg_editor|modal:body|field:title|label" +msgid "Embed Title" +msgstr "" + +#: src/utils/ui/msgeditor.py:225 +msgctxt "ui:msg_editor|modal:body|field:colour|label" +msgid "Embed Colour" +msgstr "" + +#: src/utils/ui/msgeditor.py:240 +msgctxt "ui:msg_editor|modal:body|title" +msgid "Message Body Editor" +msgstr "" + +#: src/utils/ui/msgeditor.py:265 +msgctxt "ui:msg_editor|button:body|error:invalid_colour" +msgid "" +"Invalid colour format! Please enter colours as hex codes, e.g. `#E67E22`" +msgstr "" + +#: src/utils/ui/msgeditor.py:285 +msgctxt "ui:msg_editor|button:body|label" +msgid "Body" +msgstr "" + +#: src/utils/ui/msgeditor.py:302 +msgctxt "ui:msg_editor|modal:author|field:name|label" +msgid "Author Name" +msgstr "" + +#: src/utils/ui/msgeditor.py:313 +msgctxt "ui:msg_editor|modal:author|field:link|label" +msgid "Author URL" +msgstr "" + +#: src/utils/ui/msgeditor.py:323 +msgctxt "ui:msg_editor|modal:author|field:image|label" +msgid "Author Image URL" +msgstr "" + +#: src/utils/ui/msgeditor.py:334 +msgctxt "ui:msg_editor|modal:author|title" +msgid "Embed Author Editor" +msgstr "" + +#: src/utils/ui/msgeditor.py:360 +msgctxt "ui:msg_editor|button:author|label" +msgid "Author" +msgstr "" + +#: src/utils/ui/msgeditor.py:377 +msgctxt "ui:msg_editor|modal:footer|field:text|label" +msgid "Footer Text" +msgstr "" + +#: src/utils/ui/msgeditor.py:388 +msgctxt "ui:msg_editor|modal:footer|field:image|label" +msgid "Footer Image URL" +msgstr "" + +#: src/utils/ui/msgeditor.py:398 +msgctxt "ui:msg_editor|modal:footer|field:timestamp|label" +msgid "Embed Timestamp (in ISO format)" +msgstr "" + +#: src/utils/ui/msgeditor.py:410 +msgctxt "ui:msg_editor|modal:footer|title" +msgid "Embed Footer Editor" +msgstr "" + +#: src/utils/ui/msgeditor.py:429 +msgctxt "ui:msg_editor|button:footer|error:invalid_timestamp" +msgid "Invalid timestamp! Please enter the timestamp in ISO format." +msgstr "" + +#: src/utils/ui/msgeditor.py:449 +msgctxt "ui:msg_editor|button:footer|label" +msgid "Footer" +msgstr "" + +#: src/utils/ui/msgeditor.py:467 +msgctxt "ui:msg_editor|modal:images|field:thumb|label" +msgid "Thumbnail Image URL" +msgstr "" + +#: src/utils/ui/msgeditor.py:477 +msgctxt "ui:msg_editor|modal:images|field:image|label" +msgid "Embed Image URL" +msgstr "" + +#: src/utils/ui/msgeditor.py:487 +msgctxt "ui:msg_editor|modal:images|title" +msgid "Embed images Editor" +msgstr "" + +#: src/utils/ui/msgeditor.py:517 +msgctxt "ui:msg_editor|button:images|label" +msgid "Images" +msgstr "" + +#: src/utils/ui/msgeditor.py:535 +msgctxt "ui:msg_editor|modal:add_field|field:position|label" +msgid "Field number to insert at" +msgstr "" + +#: src/utils/ui/msgeditor.py:545 +msgctxt "ui:msg_editor|modal:add_field|field:name|label" +msgid "Field name" +msgstr "" + +#: src/utils/ui/msgeditor.py:555 +msgctxt "ui:msg_editor|modal:add_field|field:value|label" +msgid "Field value" +msgstr "" + +#: src/utils/ui/msgeditor.py:565 +msgctxt "ui:msg_editor|modal:add_field|field:inline|label" +msgid "Whether the field is inline" +msgstr "" + +#: src/utils/ui/msgeditor.py:569 +msgctxt "ui:msg_editor|modal:add_field|field:inline|placeholder" +msgid "True/False" +msgstr "" + +#: src/utils/ui/msgeditor.py:582 +msgctxt "ui:msg_editor|modal:add_field|title" +msgid "Add Embed Field" +msgstr "" + +#: src/utils/ui/msgeditor.py:602 +msgctxt "ui:msg_editor|modal:add_field|error:position_not_int" +msgid "The field position must be an integer!" +msgstr "" + +#: src/utils/ui/msgeditor.py:621 +msgctxt "ui:msg_editor|button:add_field|label" +msgid "Add Field" +msgstr "" + +#: src/utils/ui/msgeditor.py:637 +msgctxt "ui:msg_editor|format_field|name_placeholder" +msgid "-" +msgstr "" + +#: src/utils/ui/msgeditor.py:666 +msgctxt "ui:msg_editor|modal:edit_field|field:name|label" +msgid "Field name" +msgstr "" + +#: src/utils/ui/msgeditor.py:677 +msgctxt "ui:msg_editor|modal:edit_field|field:value|label" +msgid "Field value" +msgstr "" + +#: src/utils/ui/msgeditor.py:688 +msgctxt "ui:msg_editor|modal:edit_field|field:inline|label" +msgid "Whether the field is inline" +msgstr "" + +#: src/utils/ui/msgeditor.py:692 +msgctxt "ui:msg_editor|modal:edit_field|field:inline|placeholder" +msgid "True/False" +msgstr "" + +#: src/utils/ui/msgeditor.py:704 +msgctxt "ui:msg_editor|modal:edit_field|title" +msgid "Edit Embed Field" +msgstr "" + +#: src/utils/ui/msgeditor.py:733 +msgctxt "ui:msg_editor|menu:edit_field|placeholder" +msgid "Edit Embed Field" +msgstr "" + +#: src/utils/ui/msgeditor.py:772 +msgctxt "ui:msg_deleteor|menu:delete_field|placeholder" +msgid "Remove Embed Field" +msgstr "" + +#: src/utils/ui/msgeditor.py:808 +msgctxt "ui:msg_editor|button:save|label" +msgid "Save" +msgstr "" + +#: src/utils/ui/msgeditor.py:833 +msgctxt "ui:msg_editor|button:download|label" +msgid "Download" +msgstr "" + +#: src/utils/ui/msgeditor.py:852 +msgctxt "ui:msg_editor|button:undo|label" +msgid "Undo" +msgstr "" + +#: src/utils/ui/msgeditor.py:872 +msgctxt "ui:msg_editor|button:redo|label" +msgid "Redo" +msgstr "" + +#: src/utils/ui/msgeditor.py:891 +msgctxt "ui:msg_editor|button:quit|confirm" +msgid "You have unsaved changes! Are you sure you want to quit?" +msgstr "" + +#: src/utils/ui/msgeditor.py:896 +msgctxt "ui:msg_editor|button:quit|confirm|button:yes" +msgid "Yes, Quit Now" +msgstr "" + +#: src/utils/ui/msgeditor.py:902 +msgctxt "ui:msg_editor|button:quit|confirm|button:no" +msgid "No, Go Back" +msgstr "" + +#: src/utils/ui/msgeditor.py:996 +msgctxt "ui:msg_editor|timeout_warning|title" +msgid "Warning!" +msgstr "" + +#: src/utils/ui/msgeditor.py:1000 +#, possible-python-brace-format +msgctxt "ui:msg_editor|timeout_warning|desc" +msgid "" +"This interface will time out {timestamp}. Press 'Continue' below to keep " +"editing." +msgstr "" + +#: src/utils/ui/msgeditor.py:1009 +msgctxt "ui:msg_editor|timeout_warning|continue" +msgid "Continue" +msgstr "" diff --git a/locales/templates/video.pot b/locales/templates/video.pot new file mode 100644 index 00000000..aae7e41b --- /dev/null +++ b/locales/templates/video.pot @@ -0,0 +1,356 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/modules/video_channels/settingui.py:57 +msgctxt "ui:video_config|menu:channels|placeholder" +msgid "Select Video Channels" +msgstr "" + +#: src/modules/video_channels/settingui.py:82 +msgctxt "ui:video_config|menu:exempt|placeholder" +msgid "Select Exempt Roles" +msgstr "" + +#: src/modules/video_channels/settingui.py:109 +msgctxt "ui:video_config|menu:video_blacklist|placeholder" +msgid "Select Blacklist Role" +msgstr "" + +#: src/modules/video_channels/settingui.py:117 +msgctxt "ui:video_config|embed|title" +msgid "Video Channel Configuration Panel" +msgstr "" + +#: src/modules/video_channels/settingui.py:156 +msgctxt "dash:video|title" +msgid "Video Channel Settings ({commands[configure video_channels]})" +msgstr "" + +#: src/modules/video_channels/settingui.py:160 +msgctxt "dash:video|option|name" +msgid "Video Channel Panel" +msgstr "" + +#: src/modules/video_channels/cog.py:229 +msgctxt "video_watchdog|kick_blacklisted_member|audit_reason" +msgid "Removing video blacklisted member from a video channel." +msgstr "" + +#: src/modules/video_channels/cog.py:246 +msgctxt "video_watchdog|kick_blacklisted_member|notification|title" +msgid "You have been disconnected." +msgstr "" + +#: src/modules/video_channels/cog.py:250 +#, possible-python-brace-format +msgctxt "video_watchdog|kick_blacklisted_member|notification|desc" +msgid "" +"You were disconnected from the video channel {channel} because you are " +"blacklisted from video channels in **{server}**." +msgstr "" + +#: src/modules/video_channels/cog.py:290 +#, possible-python-brace-format +msgctxt "video_watchdog|join_task|jump_field" +msgid "[Click to jump back]({link})" +msgstr "" + +#: src/modules/video_channels/cog.py:297 +msgctxt "video_watchdog|join_task|initial_request:title" +msgid "Please enable your video!" +msgstr "" + +#: src/modules/video_channels/cog.py:301 +#, possible-python-brace-format +msgctxt "video_watchdog|join_task|initial_request:description" +msgid "" +"**You have joined the video channel {channel}!**\n" +"Please **enable your video** or **leave the channel** or you will be " +"disconnected {timestamp} and potentially **blacklisted**." +msgstr "" + +#: src/modules/video_channels/cog.py:316 +msgctxt "video_watchdog|join_task|thanks:title" +msgid "Thanks for enabling your video!" +msgstr "" + +#: src/modules/video_channels/cog.py:323 +msgctxt "video_watchdog|join_task|bye:title" +msgid "Thanks for leaving the channel promptly!" +msgstr "" + +#: src/modules/video_channels/cog.py:367 +msgctxt "video_watchdog|join_task|kick_after_grace|audit_reason" +msgid "Member never enabled their video in video channel." +msgstr "" + +#: src/modules/video_channels/cog.py:385 +#, possible-python-brace-format +msgctxt "video_watchdog|join_task|kick_after_grace|ticket_reason" +msgid "Failed to enable their video in time in the video channel {channel}" +msgstr "" + +#: src/modules/video_channels/cog.py:403 +msgctxt "video_watchdog|join_task|kick_after_grace|warning|title" +msgid "You have received a warning!" +msgstr "" + +#: src/modules/video_channels/cog.py:407 +#, possible-python-brace-format +msgctxt "video_watchdog|join_task|kick_after_grace|warning|desc" +msgid "" +"**You must enable your camera in camera-only rooms.**\n" +"You have been disconnected from the video {channel} for not enabling your " +"camera." +msgstr "" + +#: src/modules/video_channels/cog.py:422 +msgctxt "video_watchdog|join_task|kick_after_grace|blacklist|title" +msgid "You have been blacklisted!" +msgstr "" + +#: src/modules/video_channels/cog.py:426 +msgctxt "video_watchdog|join_task|kick_after_grace|blacklist|desc" +msgid "You have been blacklisted from the video channels in this server." +msgstr "" + +#: src/modules/video_channels/cog.py:459 +#, possible-python-brace-format +msgctxt "video_watchdog|disabled_video_kick|audit_reason" +msgid "" +"Disconnected for disabling video for more than {number} seconds in video " +"channel." +msgstr "" + +#: src/modules/video_channels/cog.py:474 +msgctxt "video_watchdog|disabled_video_kick|notification|title" +msgid "You have been disconnected." +msgstr "" + +#: src/modules/video_channels/cog.py:478 +#, possible-python-brace-format +msgctxt "video_watchdog|disabled_video_kick|notification|desc" +msgid "" +"You were disconnected from the video channel {channel} because you disabled " +"your video.\n" +"Please keep your video on at all times, and leave the channel if you need to " +"disable it!" +msgstr "" + +#: src/modules/video_channels/cog.py:510 +msgctxt "cmd:configure_video" +msgid "video_channels" +msgstr "" + +#: src/modules/video_channels/cog.py:512 +msgctxt "cmd:configure_video|desc" +msgid "Configure video-only channels and blacklisting." +msgstr "" + +#: src/modules/video_channels/settings.py:29 +msgctxt "guildset:video_channels" +msgid "video_channels" +msgstr "" + +#: src/modules/video_channels/settings.py:32 +msgctxt "guildset:video_channels|desc" +msgid "List of voice channels and categories in which to enforce video." +msgstr "" + +#: src/modules/video_channels/settings.py:36 +msgctxt "guildset:video_channels|long_desc" +msgid "" +"Member will be required to turn on their video in these channels.\n" +"If they do not enable their video with `15` seconds of joining, they will be " +"asked to enable it through a notification in direct messages or the " +"`alert_channel`. If they still have not enabled it after the " +"`video_grace_period` has passed, they will be kicked from the channel. " +"Further, after the first offence (which is considered a warning), they will " +"be given the `video_blacklist` role, if configured, which will stop them " +"from joining video channels.\n" +"As usual, if a category is configured, this will apply to all voice channels " +"under the category." +msgstr "" + +#: src/modules/video_channels/settings.py:50 +msgctxt "guildset:video_channels|accepts" +msgid "Comma separated channel ids or names." +msgstr "" + +#: src/modules/video_channels/settings.py:67 +#, possible-python-brace-format +msgctxt "guildset:video_channels|set_response:set" +msgid "" +"Members will be asked to turn on their video in the following channels: " +"{channels}" +msgstr "" + +#: src/modules/video_channels/settings.py:72 +msgctxt "guildset:video_channels|set_response:unset" +msgid "Members will not be asked to turn on their video in any channels." +msgstr "" + +#: src/modules/video_channels/settings.py:105 +msgctxt "guildset:video_blacklist" +msgid "video_blacklist" +msgstr "" + +#: src/modules/video_channels/settings.py:108 +msgctxt "guildset:video_blacklist|desc" +msgid "Role given when members are blacklisted from video channels." +msgstr "" + +#: src/modules/video_channels/settings.py:112 +msgctxt "guildset:video_blacklist|long_desc" +msgid "" +"This role will be automatically given after a member has failed to keep " +"their video enabled in a video channel (see above).\n" +"Members who have this role will not be able to join configured video " +"channels. The role permissions may be freely configured by server admins to " +"place further restrictions on the offender.\n" +"The role may also be manually assigned, to the same effect.\n" +"If this role is not set, no video blacklist will occur, and members will " +"only be kicked from the channel and warned." +msgstr "" + +#: src/modules/video_channels/settings.py:123 +msgctxt "guildset:video_blacklist|accepts" +msgid "Blacklist role name or id." +msgstr "" + +#: src/modules/video_channels/settings.py:138 +#, possible-python-brace-format +msgctxt "guildset:video_blacklist|set_response:set" +msgid "Members who fail to keep their video on will be given {role}" +msgstr "" + +#: src/modules/video_channels/settings.py:143 +msgctxt "guildset:video_blacklist|set_response:unset" +msgid "" +"Members will no longer be automatically blacklisted from video channels." +msgstr "" + +#: src/modules/video_channels/settings.py:155 +msgctxt "guildset:video_blacklist|formatted:unset" +msgid "Not Set. (Members will not be automatically blacklisted.)" +msgstr "" + +#: src/modules/video_channels/settings.py:162 +msgctxt "guildset:video_durations" +msgid "video_blacklist_durations" +msgstr "" + +#: src/modules/video_channels/settings.py:165 +msgctxt "guildset:video_durations|desc" +msgid "Sequence of durations for automatic video blacklists." +msgstr "" + +#: src/modules/video_channels/settings.py:169 +msgctxt "guildset:video_durations|long_desc" +msgid "" +"When `video_blacklist` is set and members fail to turn on their video within " +"the configured `video_grace_period`, they will be automatically blacklisted " +"(i.e. given the `video_blacklist` role).\n" +"This setting describes *how long* the member will be blacklisted for, for " +"each offence.\n" +"E.g. if this is set to `1d, 7d, 30d`, then on the first offence the member " +"will be blacklisted for 1 day, on the second for 7 days, and on the third " +"for 30 days. A subsequent offence will result in an infinite blacklist." +msgstr "" + +#: src/modules/video_channels/settings.py:181 +msgctxt "guildset:video_durations|accepts" +msgid "Comma separated list of durations." +msgstr "" + +#: src/modules/video_channels/settings.py:208 +#, possible-python-brace-format +msgctxt "guildset:video_durations|set_response:set" +msgid "Members will be automatically blacklisted for: {durations}" +msgstr "" + +#: src/modules/video_channels/settings.py:213 +msgctxt "guildset:video_durations|set_response:unset" +msgid "Video blacklists are now always permanent." +msgstr "" + +#: src/modules/video_channels/settings.py:221 +msgctxt "guildset:video_grace_period" +msgid "video_grace_period" +msgstr "" + +#: src/modules/video_channels/settings.py:224 +msgctxt "guildset:video_grace_period|desc" +msgid "" +"How long to wait (in seconds) before kicking/blacklist members who don't " +"enable their video." +msgstr "" + +#: src/modules/video_channels/settings.py:228 +msgctxt "guildset:video_grace_period|long_desc" +msgid "" +"The length of time a member has to enable their video after joining a video " +"channel. After this time, if they have not enabled their video, they will be " +"kicked from the channel and potentially blacklisted from video channels." +msgstr "" + +#: src/modules/video_channels/settings.py:234 +msgctxt "guildset:video_grace_period|accepts" +msgid "How many seconds to wait for a member to enable video." +msgstr "" + +#: src/modules/video_channels/settings.py:248 +#, possible-python-brace-format +msgctxt "guildset:video_grace_period|set_response:set" +msgid "Members will now have **{duration}** to enable their video." +msgstr "" + +#: src/modules/video_channels/settings.py:256 +msgctxt "guildset:video_exempt" +msgid "video_exempt" +msgstr "" + +#: src/modules/video_channels/settings.py:259 +msgctxt "guildset:video_exempt|desc" +msgid "List of roles which are exempt from video channels." +msgstr "" + +#: src/modules/video_channels/settings.py:263 +msgctxt "guildset:video_exempt|long_desc" +msgid "" +"Members who have **any** of these roles will not be required to enable their " +"video in the `video_channels`. This also overrides the `video_blacklist` " +"role." +msgstr "" + +#: src/modules/video_channels/settings.py:269 +msgctxt "guildset:video_exempt|accepts" +msgid "List of exempt role names or ids." +msgstr "" + +#: src/modules/video_channels/settings.py:284 +#, possible-python-brace-format +msgctxt "guildset:video_exempt|set_response:set" +msgid "The following roles will now be exempt from video channels: {roles}" +msgstr "" + +#: src/modules/video_channels/settings.py:289 +msgctxt "guildset:video_exempt|set_response:unset" +msgid "No members will be exempt from video channel requirements." +msgstr "" diff --git a/locales/templates/voice-tracker.pot b/locales/templates/voice-tracker.pot new file mode 100644 index 00000000..27dc32c6 --- /dev/null +++ b/locales/templates/voice-tracker.pot @@ -0,0 +1,240 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/tracking/voice/cog.py:646 +msgctxt "cmd:configure_voice_rates" +msgid "voice_rewards" +msgstr "" + +#: src/tracking/voice/cog.py:649 +msgctxt "cmd:configure_voice_rates|desc" +msgid "Configure Voice tracking rewards and experience" +msgstr "" + +#: src/tracking/voice/cog.py:706 +#, possible-python-brace-format +msgctxt "cmd:configure_voice_tracking|mode:voice|resp:success|desc" +msgid "" +"Members will now be rewarded {coin}**{base} (+ {bonus})** per hour they " +"spend (live) in a voice channel, up to a total of **{cap}** hours per server " +"day." +msgstr "" + +#: src/tracking/voice/cog.py:717 +#, possible-python-brace-format +msgctxt "cmd:configure_voice_tracking|mode:study|resp:success|desc" +msgid "" +"Members will now be rewarded {coin}**{base}** per hour of study in this " +"server, with a bonus of {coin}**{bonus}** if they stream of display video, " +"up to a total of **{cap}** hours per server day." +msgstr "" + +#: src/tracking/voice/settings.py:40 +msgctxt "guildset:untracked_channels" +msgid "untracked_channels" +msgstr "" + +#: src/tracking/voice/settings.py:43 +msgctxt "guildset:untracked_channels|desc" +msgid "Channels which will be ignored for statistics tracking." +msgstr "" + +#: src/tracking/voice/settings.py:47 +msgctxt "guildset:untracked_channels|long_desc" +msgid "" +"Activity in these channels will not count towards a member's statistics. If " +"a category is selected, all channels under the category will be untracked." +msgstr "" + +#: src/tracking/voice/settings.py:52 +msgctxt "guildset:untracked_channels|accepts" +msgid "Comma separated list of untracked channel name/ids." +msgstr "" + +#: src/tracking/voice/settings.py:56 +msgctxt "guildset:untracked_channels|notset" +msgid "Not Set (all voice channels will be tracked.)" +msgstr "" + +#: src/tracking/voice/settings.py:73 +msgctxt "guildset:untracked_channels|set" +msgid "Channel selector below." +msgstr "" + +#: src/tracking/voice/settings.py:82 +#, possible-python-brace-format +msgctxt "guildset:untracked_channels|set_response|set" +msgid "Activity in the following channels will now be ignored: {channels}" +msgstr "" + +#: src/tracking/voice/settings.py:89 +msgctxt "guildset:untracked_channels|set_response|unset" +msgid "All voice channels will now be tracked." +msgstr "" + +#: src/tracking/voice/settings.py:117 +msgctxt "guildset:hourly_reward" +msgid "hourly_reward" +msgstr "" + +#: src/tracking/voice/settings.py:120 +msgctxt "guildset:hourly_reward|mode:voice|desc" +msgid "LionCoins given per hour in a voice channel." +msgstr "" + +#: src/tracking/voice/settings.py:124 +msgctxt "guildset:hourly_reward|mode:voice|long_desc" +msgid "" +"Number of LionCoins to each member per hour that they stay in a tracked " +"voice channel." +msgstr "" + +#: src/tracking/voice/settings.py:128 +msgctxt "guildset:hourly_reward|accepts" +msgid "Number of coins to reward per hour in voice." +msgstr "" + +#: src/tracking/voice/settings.py:144 +#, possible-python-brace-format +msgctxt "guildset:hourly_reward|formatted" +msgid "{coin}**{amount}** per hour." +msgstr "" + +#: src/tracking/voice/settings.py:159 +#, possible-python-brace-format +msgctxt "guildset:hourly_reward|mode:voice|response" +msgid "Members will be given {coin}**{amount}** per hour in a voice channel!" +msgstr "" + +#: src/tracking/voice/settings.py:171 +msgctxt "guildset:hourly_reward|mode:study|desc" +msgid "LionCoins given per hour of study." +msgstr "" + +#: src/tracking/voice/settings.py:175 +msgctxt "guildset:hourly_reward|mode:study|long_desc" +msgid "Number of LionCoins given per hour of study, up to the daily hour cap." +msgstr "" + +#: src/tracking/voice/settings.py:183 +#, possible-python-brace-format +msgctxt "guildset:hourly_reward|mode:study|response" +msgid "Members will be given {coin}**{amount}** per hour that they study!" +msgstr "" + +#: src/tracking/voice/settings.py:197 +msgctxt "guildset:hourly_live_bonus" +msgid "hourly_live_bonus" +msgstr "" + +#: src/tracking/voice/settings.py:200 +msgctxt "guildset:hourly_live_bonus|desc" +msgid "Bonus Lioncoins given per hour when a member streams or video-chats." +msgstr "" + +#: src/tracking/voice/settings.py:205 +msgctxt "guildset:hourly_live_bonus|long_desc" +msgid "" +"When a member streams or video-chats in a channel they will be given this " +"bonus *additionally* to the `hourly_reward`." +msgstr "" + +#: src/tracking/voice/settings.py:210 +msgctxt "guildset:hourly_live_bonus|accepts" +msgid "Number of bonus coins to reward per hour when live." +msgstr "" + +#: src/tracking/voice/settings.py:226 +#, possible-python-brace-format +msgctxt "guildset:hourly_live_bonus|formatted" +msgid "{coin}**{amount}** bonus per hour when live." +msgstr "" + +#: src/tracking/voice/settings.py:237 +#, possible-python-brace-format +msgctxt "guildset:hourly_live_bonus|response" +msgid "" +"Live members will now *additionally* be given {coin}**{amount}** per hour." +msgstr "" + +#: src/tracking/voice/settings.py:248 +msgctxt "guildset:daily_voice_cap" +msgid "daily_voice_cap" +msgstr "" + +#: src/tracking/voice/settings.py:251 +msgctxt "guildset:daily_voice_cap|desc" +msgid "Maximum number of hours per day to count for each member." +msgstr "" + +#: src/tracking/voice/settings.py:255 +msgctxt "guildset:daily_voice_cap|long_desc" +msgid "" +"Time spend in voice channels over this amount will not be tracked towards " +"the member's statistics. Tracking will resume at the start of the next day. " +"The start of the day is determined by the configured guild timezone." +msgstr "" + +#: src/tracking/voice/settings.py:261 +msgctxt "guildset:daily_voice_cap|accepts" +msgid "The maximum number of voice hours to track per day." +msgstr "" + +#: src/tracking/voice/settings.py:277 +#, possible-python-brace-format +msgctxt "guildset:daily_voice_cap|response" +msgid "" +"Members will be tracked for at most {duration} per day. (**NOTE:** This will " +"not affect members currently in voice channels.)" +msgstr "" + +#: src/tracking/voice/settings.py:335 +msgctxt "ui:voice_tracker_config|button:close|label" +msgid "Close" +msgstr "" + +#: src/tracking/voice/settings.py:349 +msgctxt "ui:voice_tracker_config|button:reset|label" +msgid "Reset" +msgstr "" + +#: src/tracking/voice/settings.py:362 +msgctxt "ui:voice_tracker_config|menu:untracked_channels|placeholder" +msgid "Set Untracked Channels" +msgstr "" + +#: src/tracking/voice/settings.py:428 src/tracking/voice/settings.py:482 +msgctxt "ui:voice_tracker_config|mode:voice|embed|title" +msgid "Voice Tracker Configuration Panel" +msgstr "" + +#: src/tracking/voice/settings.py:433 src/tracking/voice/settings.py:487 +msgctxt "ui:voice_tracker_config|mode:study|embed|title" +msgid "Study Tracker Configuration Panel" +msgstr "" + +#: src/tracking/voice/settings.py:472 +msgctxt "ui:voice_tracker_config|menu:untracked_channels|placeholder" +msgid "Select Untracked Channels" +msgstr "" + +#: src/tracking/voice/settings.py:528 +msgctxt "dash:voice_tracker|title" +msgid "Voice Tracker Configuration ({commands[configure voice_rewards]})" +msgstr "" diff --git a/locales/templates/wards.pot b/locales/templates/wards.pot new file mode 100644 index 00000000..2fb1f4cc --- /dev/null +++ b/locales/templates/wards.pot @@ -0,0 +1,78 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/wards.py:65 +msgctxt "ward:sys_admin|failed" +msgid "You must be a bot owner to do this!" +msgstr "" + +#: src/wards.py:81 +msgctxt "ward:high_management|failed" +msgid "You must have the `ADMINISTRATOR` permission in this server to do this!" +msgstr "" + +#: src/wards.py:97 +msgctxt "ward:low_management|failed" +msgid "You must have the `MANAGE_GUILD` permission in this server to do this!" +msgstr "" + +#: src/wards.py:121 +#, possible-python-brace-format +msgctxt "ward:equippable_role|error:bot_managed" +msgid "I cannot manage {role} because it is managed by another bot!" +msgstr "" + +#: src/wards.py:128 +#, possible-python-brace-format +msgctxt "ward:equippable_role|error:integration" +msgid "I cannot manage {role} because it is managed by a server integration." +msgstr "" + +#: src/wards.py:135 +msgctxt "ward:equippable_role|error:default_role" +msgid "I cannot manage the server's default role." +msgstr "" + +#: src/wards.py:142 +msgctxt "ward:equippable_role|error:no_perms" +msgid "I need the `MANAGE_ROLES` permission before I can manage roles!" +msgstr "" + +#: src/wards.py:149 +#, possible-python-brace-format +msgctxt "ward:equippable_role|error:my_top_role" +msgid "I cannot assign or remove {role} because it is above my top role!" +msgstr "" + +#: src/wards.py:156 +#, possible-python-brace-format +msgctxt "ward:equippable_role|error:not_assignable" +msgid "I don't have sufficient permissions to assign or remove {role}." +msgstr "" + +#: src/wards.py:164 +msgctxt "ward:equippable_role|error:actor_perms" +msgid "You need the `MANAGE_ROLES` permission before you can configure roles!" +msgstr "" + +#: src/wards.py:171 +#, possible-python-brace-format +msgctxt "ward:equippable_role|error:actor_top_role" +msgid "You cannot configure {role} because it is above your top role!" +msgstr "" diff --git a/locales/templates/weekly-gui.pot b/locales/templates/weekly-gui.pot new file mode 100644 index 00000000..515afe2a --- /dev/null +++ b/locales/templates/weekly-gui.pot @@ -0,0 +1,97 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-16 17:01+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/gui/cards/weekly.py:52 +msgctxt "skin:weeklystats|mode:study|title" +msgid "STUDY HOURS" +msgstr "" + +#: src/gui/cards/weekly.py:56 +msgctxt "skin:weeklystats|mode:voice|title" +msgid "VOICE CHANNEL ACTIVITY" +msgstr "" + +#: src/gui/cards/weekly.py:60 +msgctxt "skin:weeklystats|mode:text|title" +msgid "MESSAGE ACTIVITY" +msgstr "" + +#: src/gui/cards/weekly.py:64 +msgctxt "skin::weeklystats|mode:anki|title" +msgid "CARDS REVIEWED" +msgstr "" + +#: src/gui/cards/weekly.py:137 +msgctxt "skin:weeklystats|weekdays" +msgid "M,T,W,T,F,S,S" +msgstr "" + +#: src/gui/cards/weekly.py:207 +#, possible-python-brace-format +msgctxt "skin:weeklystats|mode:study|summary:this_week" +msgid "THIS WEEK: {amount} HOURS" +msgstr "" + +#: src/gui/cards/weekly.py:211 +#, possible-python-brace-format +msgctxt "skin:weeklystats|mode:voice|summary:this_week" +msgid "THIS WEEK: {amount} HOURS" +msgstr "" + +#: src/gui/cards/weekly.py:215 +#, possible-python-brace-format +msgctxt "skin:weeklystats|mode:text|summary:this_week" +msgid "THIS WEEK: {amount} MESSAGES" +msgstr "" + +#: src/gui/cards/weekly.py:219 +#, possible-python-brace-format +msgctxt "skin:weeklystats|mode:text|summary:this_week" +msgid "THIS WEEK: {amount} CARDS" +msgstr "" + +#: src/gui/cards/weekly.py:240 +#, possible-python-brace-format +msgctxt "skin:weeklystats|mode:study|summary:last_week" +msgid "LAST WEEK: {amount} HOURS" +msgstr "" + +#: src/gui/cards/weekly.py:244 +#, possible-python-brace-format +msgctxt "skin:weeklystats|mode:voice|summary:last_week" +msgid "LAST WEEK: {amount} HOURS" +msgstr "" + +#: src/gui/cards/weekly.py:248 +#, possible-python-brace-format +msgctxt "skin:weeklystats|mode:text|summary:last_week" +msgid "LAST WEEK: {amount} MESSAGES" +msgstr "" + +#: src/gui/cards/weekly.py:252 +#, possible-python-brace-format +msgctxt "skin:weeklystats|mode:text|summary:last_week" +msgid "LAST WEEK: {amount} CARDS" +msgstr "" + +#: src/gui/cards/weekly.py:272 +#, possible-python-brace-format +msgctxt "skin:weeklystats|footer" +msgid "Weekly Statistics • As of {day} {month} • {name} {discrim}" +msgstr ""