Merge pull request #48 from StudyLions/rewrite
This commit is contained in:
@@ -40,8 +40,8 @@ server_host = 127.0.0.1
|
|||||||
server_port = 4999
|
server_port = 4999
|
||||||
|
|
||||||
[BABEL]
|
[BABEL]
|
||||||
locales = ceaser
|
locales = en-GB, ceaser
|
||||||
domains = base, shop, economy, user_config, config, ranks, tasklist, exec, rooms, test, reminders, Pomodoro, statistics, utils, timer-gui, goals-gui, weekly-gui, profile-gui, monthly-gui, leaderboard-gui, stats-gui, settings_base, voice-tracker, text-tracker, core_config, babel
|
domains = base, wards, schedule, shop, moderation, economy, user_config, config, member_admin, ranks, tasklist, sysadmin, exec, meta, rooms, rolemenus, test, reminders, video, Pomodoro, statistics, utils, timer-gui, goals-gui, weekly-gui, profile-gui, monthly-gui, leaderboard-gui, stats-gui, settings_base, voice-tracker, text-tracker, lion-core, core_config, babel
|
||||||
|
|
||||||
[TEXT_TRACKER]
|
[TEXT_TRACKER]
|
||||||
batchsize = 1
|
batchsize = 1
|
||||||
|
|||||||
929
locales/ceaser/LC_MESSAGES/Pomodoro.po
Normal file
929
locales/ceaser/LC_MESSAGES/Pomodoro.po
Normal file
@@ -0,0 +1,929 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:51
|
||||||
|
msgctxt "timer|stage:break|name"
|
||||||
|
msgid "BREAK"
|
||||||
|
msgstr "CSFBL"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:52
|
||||||
|
msgctxt "timer|stage:focus|name"
|
||||||
|
msgid "FOCUS"
|
||||||
|
msgstr "GPDVT"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:158
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "timer|webhook|name"
|
||||||
|
msgid "{bot_name} Pomodoro"
|
||||||
|
msgstr "{bot_name} Qpnpepsp"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:162
|
||||||
|
msgctxt "timer|webhook|audit_reason"
|
||||||
|
msgid "Pomodoro Notifications"
|
||||||
|
msgstr "Qpnpepsp Opujgjdbujpot"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:173
|
||||||
|
msgctxt "timer|webhook|error:insufficient_permissions"
|
||||||
|
msgid ""
|
||||||
|
"I require the `MANAGE_WEBHOOKS` permission to send pomodoro notifications "
|
||||||
|
"here!"
|
||||||
|
msgstr ""
|
||||||
|
"J sfrvjsf uif `NBOBHF_XFCIPPLT` qfsnjttjpo up tfoe qpnpepsp opujgjdbujpot "
|
||||||
|
"ifsf!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:232
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "timer|default_base_name"
|
||||||
|
msgid "Timer {pattern}"
|
||||||
|
msgstr "Ujnfs {pattern}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:406
|
||||||
|
#, 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] ""
|
||||||
|
"{mentions} xbt sfnpwfe gspn {channel} cfdbvtf uifz xfsf jobdujwf! Sfnfncfs "
|
||||||
|
"up qsftt {tick} up sfhjtufs zpvs qsftfodf fwfsz tubhf."
|
||||||
|
msgstr[1] ""
|
||||||
|
"{mentions} xfsf sfnpwfe gspn {channel} cfdbvtf uifz xfsf jobdujwf! Sfnfncfs "
|
||||||
|
"up qsftt {tick} up sfhjtufs zpvs qsftfodf fwfsz tubhf."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:499
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "timer|status|stage:focus|statusline"
|
||||||
|
msgid "{channel} is now in **FOCUS**! Good luck, **BREAK** starts {timestamp}"
|
||||||
|
msgstr ""
|
||||||
|
"{channel} jt opx jo **GPDVT**! Hppe mvdl, **CSFBL** tubsut {timestamp}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:504
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "timer|status|stage:break|statusline"
|
||||||
|
msgid ""
|
||||||
|
"{channel} is now on **BREAK**! Take a rest, **FOCUS** starts {timestamp}"
|
||||||
|
msgstr ""
|
||||||
|
"{channel} jt opx po **CSFBL**! Ublf b sftu, **GPDVT** tubsut {timestamp}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:536
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "timer|status|warningline"
|
||||||
|
msgid ""
|
||||||
|
"**Warning:** {mentions}, please press {tick} to avoid being removed on the "
|
||||||
|
"next stage."
|
||||||
|
msgstr ""
|
||||||
|
"**Xbsojoh:** {mentions}, qmfbtf qsftt {tick} up bwpje cfjoh sfnpwfe po uif "
|
||||||
|
"ofyu tubhf."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:555
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "timer|status|stopped:auto"
|
||||||
|
msgid "Timer stopped! Join {channel} to start the timer."
|
||||||
|
msgstr "Ujnfs tupqqfe! Kpjo {channel} up tubsu uif ujnfs."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/timer.py:560
|
||||||
|
msgctxt "timer|status|stopped:manual"
|
||||||
|
msgid "Timer stopped! Press `Start` to restart the timer."
|
||||||
|
msgstr "Ujnfs tupqqfe! Qsftt `Tubsu` up sftubsu uif ujnfs."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settingui.py:39
|
||||||
|
msgctxt "ui:timer_config|menu:channels|placeholder"
|
||||||
|
msgid "Select Pomodoro Notification Channel"
|
||||||
|
msgstr "Tfmfdu Qpnpepsp Opujgjdbujpo Diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settingui.py:47
|
||||||
|
msgctxt "ui:timer_config|embed|title"
|
||||||
|
msgid "Timer Configuration Panel"
|
||||||
|
msgstr "Ujnfs Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settingui.py:81
|
||||||
|
msgctxt "dash:pomodoro|title"
|
||||||
|
msgid "Pomodoro Configuration ({commands[configure pomodoro]})"
|
||||||
|
msgstr "Qpnpepsp Dpogjhvsbujpo ({commands[configure pomodoro]})"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settingui.py:85
|
||||||
|
msgctxt "dash:stats|dropdown|placeholder"
|
||||||
|
msgid "Pomodoro Timer Panel"
|
||||||
|
msgstr "Qpnpepsp Ujnfs Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:82
|
||||||
|
msgctxt "cmd_check:ready|failed"
|
||||||
|
msgid ""
|
||||||
|
"I am currently restarting! The Pomodoro timers will be unavailable until I "
|
||||||
|
"have restarted. Thank you for your patience!"
|
||||||
|
msgstr ""
|
||||||
|
"J bn dvssfoumz sftubsujoh! Uif Qpnpepsp ujnfst xjmm cf vobwbjmbcmf voujm J "
|
||||||
|
"ibwf sftubsufe. Uibol zpv gps zpvs qbujfodf!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:322
|
||||||
|
msgctxt "cmd:timer"
|
||||||
|
msgid "timer"
|
||||||
|
msgstr "ujnfs"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:323
|
||||||
|
msgctxt "cmd:timer|desc"
|
||||||
|
msgid "Show your current (or selected) pomodoro timer."
|
||||||
|
msgstr "Tipx zpvs dvssfou (ps tfmfdufe) qpnpepsp ujnfs."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:326
|
||||||
|
msgctxt "cmd:timer|param:channel"
|
||||||
|
msgid "timer_channel"
|
||||||
|
msgstr "ujnfs_diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:331
|
||||||
|
msgctxt "cmd:timer|param:channel|desc"
|
||||||
|
msgid "Select a timer to display (by selecting the timer voice channel)"
|
||||||
|
msgstr "Tfmfdu b ujnfs up ejtqmbz (cz tfmfdujoh uif ujnfs wpjdf diboofm)"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:353 src/modules/pomodoro/cog.py:423
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timer|error:no_timers|desc"
|
||||||
|
msgid ""
|
||||||
|
"**This server has no timers set up!**\n"
|
||||||
|
"Ask an admin to set up and configure a timer with {create_cmd} first, or rent a private room with {room_cmd} and create one yourself!"
|
||||||
|
msgstr ""
|
||||||
|
"**Uijt tfswfs ibt op ujnfst tfu vq!**\n"
|
||||||
|
"Btl bo benjo up tfu vq boe dpogjhvsf b ujnfs xjui {create_cmd} gjstu, ps sfou b qsjwbuf sppn xjui {room_cmd} boe dsfbuf pof zpvstfmg!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:367
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timer|error:no_channel|desc"
|
||||||
|
msgid ""
|
||||||
|
"**I don't know what timer to show you.**\n"
|
||||||
|
"No channel selected and you are not in a voice channel! Use {timers_cmd} to list the available timers in this server."
|
||||||
|
msgstr ""
|
||||||
|
"**J epo'u lopx xibu ujnfs up tipx zpv.**\n"
|
||||||
|
"Op diboofm tfmfdufe boe zpv bsf opu jo b wpjdf diboofm! Vtf {timers_cmd} up mjtu uif bwbjmbcmf ujnfst jo uijt tfswfs."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:380
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timer|error:no_timer_in_channel"
|
||||||
|
msgid ""
|
||||||
|
"The channel {channel} is not a pomodoro timer room!\n"
|
||||||
|
"Use {timers_cmd} to list the available timers in this server."
|
||||||
|
msgstr ""
|
||||||
|
"Uif diboofm {channel} jt opu b qpnpepsp ujnfs sppn!\n"
|
||||||
|
"Vtf {timers_cmd} up mjtu uif bwbjmbcmf ujnfst jo uijt tfswfs."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:396
|
||||||
|
msgctxt "cmd:timers"
|
||||||
|
msgid "timers"
|
||||||
|
msgstr "ujnfst"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:397
|
||||||
|
msgctxt "cmd:timers|desc"
|
||||||
|
msgid "List the available pomodoro timer rooms."
|
||||||
|
msgstr "Mjtu uif bwbjmbcmf qpnpepsp ujnfs sppnt."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:436
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timer|error:no_visible_timers|desc"
|
||||||
|
msgid ""
|
||||||
|
"**There are no available pomodoro timers!**\n"
|
||||||
|
"Ask an admin to set up a new timer with {create_cmd}, or rent a private room with {room_cmd} and create one yourself!"
|
||||||
|
msgstr ""
|
||||||
|
"**Uifsf bsf op bwbjmbcmf qpnpepsp ujnfst!**\n"
|
||||||
|
"Btl bo benjo up tfu vq b ofx ujnfs xjui {create_cmd}, ps sfou b qsjwbuf sppn xjui {room_cmd} boe dsfbuf pof zpvstfmg!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:449
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timers|embed:timer_list|title"
|
||||||
|
msgid "Pomodoro Timer Rooms in **{guild}**"
|
||||||
|
msgstr "Qpnpepsp Ujnfs Sppnt jo **{guild}**"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:458
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timers|status:stopped_auto"
|
||||||
|
msgid ""
|
||||||
|
"`{pattern}` timer is stopped with no members!\n"
|
||||||
|
"Join {channel} to restart it."
|
||||||
|
msgstr ""
|
||||||
|
"`{pattern}` ujnfs jt tupqqfe xjui op nfncfst!\n"
|
||||||
|
"Kpjo {channel} up sftubsu ju."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:464
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timers|status:stopped_manual"
|
||||||
|
msgid ""
|
||||||
|
"`{pattern}` timer is stopped with `{members}` members!\n"
|
||||||
|
"Join {channel} and press `Start` to start it!"
|
||||||
|
msgstr ""
|
||||||
|
"`{pattern}` ujnfs jt tupqqfe xjui `{members}` nfncfst!\n"
|
||||||
|
"Kpjo {channel} boe qsftt `Tubsu` up tubsu ju!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:471
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timers|status:running_focus"
|
||||||
|
msgid ""
|
||||||
|
"`{pattern}` timer is running with `{members}` members!\n"
|
||||||
|
"Currently **focusing**, with break starting {timestamp}"
|
||||||
|
msgstr ""
|
||||||
|
"`{pattern}` ujnfs jt svoojoh xjui `{members}` nfncfst!\n"
|
||||||
|
"Dvssfoumz **gpdvtjoh**, xjui csfbl tubsujoh {timestamp}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:477
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timers|status:running_break"
|
||||||
|
msgid ""
|
||||||
|
"`{pattern}` timer is running with `{members}` members!\n"
|
||||||
|
"Currently **resting**, with focus starting {timestamp}"
|
||||||
|
msgstr ""
|
||||||
|
"`{pattern}` ujnfs jt svoojoh xjui `{members}` nfncfst!\n"
|
||||||
|
"Dvssfoumz **sftujoh**, xjui gpdvt tubsujoh {timestamp}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:491
|
||||||
|
msgctxt "cmd:pomodoro"
|
||||||
|
msgid "pomodoro"
|
||||||
|
msgstr "qpnpepsp"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:492
|
||||||
|
msgctxt "cmd:pomodoro|desc"
|
||||||
|
msgid "Create and configure pomodoro timer rooms."
|
||||||
|
msgstr "Dsfbuf boe dpogjhvsf qpnpepsp ujnfs sppnt."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:499
|
||||||
|
msgctxt "cmd:pomodoro_create"
|
||||||
|
msgid "create"
|
||||||
|
msgstr "dsfbuf"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:502
|
||||||
|
msgctxt "cmd:pomodoro_create|desc"
|
||||||
|
msgid "Create a new Pomodoro timer. Requires manage channel permissions."
|
||||||
|
msgstr "Dsfbuf b ofx Qpnpepsp ujnfs. Sfrvjsft nbobhf diboofm qfsnjttjpot."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:506
|
||||||
|
msgctxt "cmd:pomodoro_create|param:channel"
|
||||||
|
msgid "timer_channel"
|
||||||
|
msgstr "ujnfs_diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:512
|
||||||
|
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 ""
|
||||||
|
"Wpjdf diboofm up dsfbuf uif ujnfs jo. (Efgbvmut up zpvs dvssfou diboofm, ps "
|
||||||
|
"nblft b ofx pof.)"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:557
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|error:your_insufficient_perms|title"
|
||||||
|
msgid "Could not create pomodoro voice channel!"
|
||||||
|
msgstr "Dpvme opu dsfbuf qpnpepsp wpjdf diboofm!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:561
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|error:your_insufficient_perms"
|
||||||
|
msgid ""
|
||||||
|
"No `timer_channel` was provided, and you lack the 'Manage Channels` "
|
||||||
|
"permission required to create a new timer room!"
|
||||||
|
msgstr ""
|
||||||
|
"Op `ujnfs_diboofm` xbt qspwjefe, boe zpv mbdl uif 'Nbobhf Diboofmt` "
|
||||||
|
"qfsnjttjpo sfrvjsfe up dsfbuf b ofx ujnfs sppn!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:572
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|error:my_insufficient_perms|title"
|
||||||
|
msgid "Could not create pomodoro voice channel!"
|
||||||
|
msgstr "Dpvme opu dsfbuf qpnpepsp wpjdf diboofm!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:576
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|error:my_insufficient_perms|desc"
|
||||||
|
msgid ""
|
||||||
|
"No `timer_channel` was provided, and I lack the 'Manage Channels' permission"
|
||||||
|
" required to create a new voice channel."
|
||||||
|
msgstr ""
|
||||||
|
"Op `ujnfs_diboofm` xbt qspwjefe, boe J mbdl uif 'Nbobhf Diboofmt' qfsnjttjpo"
|
||||||
|
" sfrvjsfe up dsfbuf b ofx wpjdf diboofm."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:587
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|default_name"
|
||||||
|
msgid "Timer"
|
||||||
|
msgstr "Ujnfs"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:591
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|audit_reason"
|
||||||
|
msgid "Creating Pomodoro Voice Channel"
|
||||||
|
msgstr "Dsfbujoh Qpnpepsp Wpjdf Diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:600
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|error:channel_create_failed|title"
|
||||||
|
msgid "Could not create pomodoro voice channel!"
|
||||||
|
msgstr "Dpvme opu dsfbuf qpnpepsp wpjdf diboofm!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:604
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|error:channel_create_failed|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 ""
|
||||||
|
"Gbjmfe up dsfbuf b ofx qpnpepsp wpjdf diboofm evf up bo volopxo Ejtdpse "
|
||||||
|
"dpnnvojdbujpo fssps. Qmfbtf usz dsfbujoh uif diboofm nbovbmmz boe qbtt ju up"
|
||||||
|
" uif `ujnfs_diboofm` bshvnfou pg uijt dpnnboe."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:621
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:pomodoro_create|add_timer|error:timer_exists"
|
||||||
|
msgid "A timer already exists in {channel}! Reconfigure it with {edit_cmd}."
|
||||||
|
msgstr "B ujnfs bmsfbez fyjtut jo {channel}! Sfdpogjhvsf ju xjui {edit_cmd}."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:635
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:pomodoro_create|add_timer|error:your_insufficient_perms"
|
||||||
|
msgid ""
|
||||||
|
"You must have the 'Manage Channel' permission in {channel} in order to add a"
|
||||||
|
" timer there!"
|
||||||
|
msgstr ""
|
||||||
|
"Zpv nvtu ibwf uif 'Nbobhf Diboofm' qfsnjttjpo jo {channel} jo psefs up bee b"
|
||||||
|
" ujnfs uifsf!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:684
|
||||||
|
msgctxt "cmd:pomodoro_create|response:success|content"
|
||||||
|
msgid "Timer created successfully! Use the panel below to reconfigure."
|
||||||
|
msgstr "Ujnfs dsfbufe tvddfttgvmmz! Vtf uif qbofm cfmpx up sfdpogjhvsf."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:690
|
||||||
|
msgctxt "cmd:pomodoro_destroy"
|
||||||
|
msgid "destroy"
|
||||||
|
msgstr "eftuspz"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:693
|
||||||
|
msgctxt "cmd:pomodoro_destroy|desc"
|
||||||
|
msgid "Remove a pomodoro timer from a voice channel."
|
||||||
|
msgstr "Sfnpwf b qpnpepsp ujnfs gspn b wpjdf diboofm."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:697
|
||||||
|
msgctxt "cmd:pomodoro_destroy|param:channel"
|
||||||
|
msgid "timer_channel"
|
||||||
|
msgstr "ujnfs_diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:700
|
||||||
|
msgctxt "cmd:pomodoro_destroy|param:channel"
|
||||||
|
msgid "Select a timer voice channel to remove the timer from."
|
||||||
|
msgstr "Tfmfdu b ujnfs wpjdf diboofm up sfnpwf uif ujnfs gspn."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:718
|
||||||
|
msgctxt "cmd:pomodoro_destroy|error:no_timer"
|
||||||
|
msgid "This channel doesn't have an attached pomodoro timer!"
|
||||||
|
msgstr "Uijt diboofm epfto'u ibwf bo buubdife qpnpepsp ujnfs!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:731
|
||||||
|
msgctxt "cmd:pomodoro_destroy|error:insufficient_perms|owned"
|
||||||
|
msgid ""
|
||||||
|
"You need to be an administrator or own this channel to remove this timer!"
|
||||||
|
msgstr ""
|
||||||
|
"Zpv offe up cf bo benjojtusbups ps pxo uijt diboofm up sfnpwf uijt ujnfs!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:740
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:pomodoro_destroy|error:insufficient_perms|notowned"
|
||||||
|
msgid ""
|
||||||
|
"You need to have the `Manage Channels` permission in {channel} to remove "
|
||||||
|
"this timer!"
|
||||||
|
msgstr ""
|
||||||
|
"Zpv offe up ibwf uif `Nbobhf Diboofmt` qfsnjttjpo jo {channel} up sfnpwf "
|
||||||
|
"uijt ujnfs!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:751
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:pomdoro_destroy|response:success|description"
|
||||||
|
msgid "Timer successfully removed from {channel}."
|
||||||
|
msgstr "Ujnfs tvddfttgvmmz sfnpwfe gspn {channel}."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:757
|
||||||
|
msgctxt "cmd:pomodoro_edit"
|
||||||
|
msgid "edit"
|
||||||
|
msgstr "feju"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:760
|
||||||
|
msgctxt "cmd:pomodoro_edit|desc"
|
||||||
|
msgid "Reconfigure a pomodoro timer."
|
||||||
|
msgstr "Sfdpogjhvsf b qpnpepsp ujnfs."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:764
|
||||||
|
msgctxt "cmd:pomodoro_edit|param:channel"
|
||||||
|
msgid "timer_channel"
|
||||||
|
msgstr "ujnfs_diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:770
|
||||||
|
msgctxt "cmd:pomodoro_edit|param:channel|desc"
|
||||||
|
msgid "Select a timer voice channel to reconfigure."
|
||||||
|
msgstr "Tfmfdu b ujnfs wpjdf diboofm up sfdpogjhvsf."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:811
|
||||||
|
msgctxt "cmd:pomodoro_edit|error:no_timer"
|
||||||
|
msgid "This channel doesn't have an attached pomodoro timer to edit!"
|
||||||
|
msgstr "Uijt diboofm epfto'u ibwf bo buubdife qpnpepsp ujnfs up feju!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:824
|
||||||
|
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 ""
|
||||||
|
"Jotvggjdjfou qfsnjttjpot up npejgjz uijt ujnfs!\n"
|
||||||
|
"Zpv offe up cf b tfswfs benjojtusbups, pxo uijt diboofm, ps ibwf uif ujnfs nbobhfs spmf."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:845
|
||||||
|
msgctxt "cmd:pomodoro_edit|error:insufficient_permissions|role_needed:admin"
|
||||||
|
msgid "You need to be a guild admin to modify this option!"
|
||||||
|
msgstr "Zpv offe up cf b hvjme benjo up npejgz uijt pqujpo!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:850
|
||||||
|
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 "Zpv offe up cf b diboofm pxofs ps hvjme benjo up npejgz uijt pqujpo!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:855
|
||||||
|
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 ""
|
||||||
|
"Zpv offe up cf b hvjme benjo ps ibwf uif nbobhfs spmf up npejgz uijt pqujpo!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:891
|
||||||
|
msgctxt "cmd:configure_pomodoro"
|
||||||
|
msgid "pomodoro"
|
||||||
|
msgstr "qpnpepsp"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:892
|
||||||
|
msgctxt "cmd:configure_pomodoro|desc"
|
||||||
|
msgid "Configure Pomodoro Timer System"
|
||||||
|
msgstr "Dpogjhvsf Qpnpepsp Ujnfs Tztufn"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/lib.py:19
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:channel_name|key:remaining"
|
||||||
|
msgid "{remaining}"
|
||||||
|
msgstr "{remaining}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/lib.py:20
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:channel_name|key:stage"
|
||||||
|
msgid "{stage}"
|
||||||
|
msgstr "{stage}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/lib.py:21
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:channel_name|key:members"
|
||||||
|
msgid "{members}"
|
||||||
|
msgstr "{members}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/lib.py:22
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:channel_name|key:name"
|
||||||
|
msgid "{name}"
|
||||||
|
msgstr "{name}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/lib.py:23
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:channel_name|key:pattern"
|
||||||
|
msgid "{pattern}"
|
||||||
|
msgstr "{pattern}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:33
|
||||||
|
msgctxt "timerset:voice_channel"
|
||||||
|
msgid "channel"
|
||||||
|
msgstr "diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:36
|
||||||
|
msgctxt "timerset:voice_channel|desc"
|
||||||
|
msgid "Channel in which to track timer members and send alerts."
|
||||||
|
msgstr "Diboofm jo xijdi up usbdl ujnfs nfncfst boe tfoe bmfsut."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:48
|
||||||
|
msgctxt "timerset:notification_channel"
|
||||||
|
msgid "notification_channel"
|
||||||
|
msgstr "opujgjdbujpo_diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:51
|
||||||
|
msgctxt "timerset:notification_channel|desc"
|
||||||
|
msgid "Channel to which to send timer status cards and notifications."
|
||||||
|
msgstr "Diboofm up xijdi up tfoe ujnfs tubuvt dbset boe opujgjdbujpot."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:73
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "timerset:notification_channel|format:notset"
|
||||||
|
msgid "Not Set (Using {channel})"
|
||||||
|
msgstr "Opu Tfu (Vtjoh {channel})"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:83
|
||||||
|
msgctxt "timerset:inactivity_threshold|inactivity_threshold"
|
||||||
|
msgid "inactivity_threshold"
|
||||||
|
msgstr "jobdujwjuz_uisftipme"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:86
|
||||||
|
msgctxt "timerset:inactivity_threshold|desc"
|
||||||
|
msgid ""
|
||||||
|
"Number of inactive focus+break stages before a member is removed from the "
|
||||||
|
"timer."
|
||||||
|
msgstr ""
|
||||||
|
"Ovncfs pg jobdujwf gpdvt+csfbl tubhft cfgpsf b nfncfs jt sfnpwfe gspn uif "
|
||||||
|
"ujnfs."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:90
|
||||||
|
msgctxt "timerset:inactivity_threshold|desc"
|
||||||
|
msgid "How many timer cycles before kicking inactive members."
|
||||||
|
msgstr "Ipx nboz ujnfs dzdmft cfgpsf ljdljoh jobdujwf nfncfst."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:112
|
||||||
|
msgctxt "timerset:inactivity_length|desc"
|
||||||
|
msgid "The inactivity threshold must be a positive whole number!"
|
||||||
|
msgstr "Uif jobdujwjuz uisftipme nvtu cf b qptjujwf xipmf ovncfs!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:120
|
||||||
|
msgctxt "timerset:manager_role"
|
||||||
|
msgid "manager_role"
|
||||||
|
msgstr "nbobhfs_spmf"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:123
|
||||||
|
msgctxt "timerset:manager_role|desc"
|
||||||
|
msgid "Role allowed to start, stop, and edit the focus/break lengths."
|
||||||
|
msgstr "Spmf bmmpxfe up tubsu, tupq, boe feju uif gpdvt/csfbl mfohuit."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:137
|
||||||
|
msgctxt "timerset:manager_role|format:notset"
|
||||||
|
msgid "Not Set (Only Admins may start/stop or edit pattern)"
|
||||||
|
msgstr "Opu Tfu (Pomz Benjot nbz tubsu/tupq ps feju qbuufso)"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:147
|
||||||
|
msgctxt "timerset:voice_alerts"
|
||||||
|
msgid "voice_alerts"
|
||||||
|
msgstr "wpjdf_bmfsut"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:150
|
||||||
|
msgctxt "timerset:voice_alerts|desc"
|
||||||
|
msgid "Whether to join the voice channel and announce focus and break stages."
|
||||||
|
msgstr ""
|
||||||
|
"Xifuifs up kpjo uif wpjdf diboofm boe boopvodf gpdvt boe csfbl tubhft."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:162
|
||||||
|
msgctxt "timerset:base_name"
|
||||||
|
msgid "name"
|
||||||
|
msgstr "obnf"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:165
|
||||||
|
msgctxt "timerset:base_name|desc"
|
||||||
|
msgid "Timer name, as shown on the timer card."
|
||||||
|
msgstr "Ujnfs obnf, bt tipxo po uif ujnfs dbse."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:169
|
||||||
|
msgctxt "timerset:base_name|accepts"
|
||||||
|
msgid "Any short name, shown on the timer card."
|
||||||
|
msgstr "Boz tipsu obnf, tipxo po uif ujnfs dbse."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:184
|
||||||
|
msgctxt "timerset:channel_name_format"
|
||||||
|
msgid "channel_name"
|
||||||
|
msgstr "diboofm_obnf"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:187
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "timerset:channel_name_format|desc"
|
||||||
|
msgid ""
|
||||||
|
"Auto-updating voice channel name, accepting {remaining}, {name}, {pattern}, "
|
||||||
|
"and {stage} keys."
|
||||||
|
msgstr ""
|
||||||
|
"Bvup-vqebujoh wpjdf diboofm obnf, bddfqujoh {remaining}, {name}, {pattern}, "
|
||||||
|
"boe {stage} lfzt."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:191
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "timerset:channel_name|accepts"
|
||||||
|
msgid ""
|
||||||
|
"Timer channel name, with keys {remaining}, {name}, {pattern}, and {stage}."
|
||||||
|
msgstr ""
|
||||||
|
"Ujnfs diboofm obnf, xjui lfzt {remaining}, {name}, {pattern}, boe {stage}."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:221
|
||||||
|
msgctxt "timerset:channel_name_format|error:too_long"
|
||||||
|
msgid ""
|
||||||
|
"The provided name is too long! Channel names can be at most `100` "
|
||||||
|
"characters."
|
||||||
|
msgstr ""
|
||||||
|
"Uif qspwjefe obnf jt upp mpoh! Diboofm obnft dbo cf bu nptu `100` "
|
||||||
|
"dibsbdufst."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:240
|
||||||
|
msgctxt "timerset:focus_length"
|
||||||
|
msgid "focus_length"
|
||||||
|
msgstr "gpdvt_mfohui"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:243
|
||||||
|
msgctxt "timerset:focus_length|desc"
|
||||||
|
msgid "Length of the focus stage of the timer in minutes."
|
||||||
|
msgstr "Mfohui pg uif gpdvt tubhf pg uif ujnfs jo njovuft."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:248
|
||||||
|
msgctxt "timerset:focus_length|accepts"
|
||||||
|
msgid "A positive integer number of minutes."
|
||||||
|
msgstr "B qptjujwf joufhfs ovncfs pg njovuft."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:273
|
||||||
|
msgctxt "timerset:focus_length|desc"
|
||||||
|
msgid "Please enter a positive number of minutes."
|
||||||
|
msgstr "Qmfbtf foufs b qptjujwf ovncfs pg njovuft."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:281
|
||||||
|
msgctxt "timerset:break_length"
|
||||||
|
msgid "break_length"
|
||||||
|
msgstr "csfbl_mfohui"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:284
|
||||||
|
msgctxt "timerset:break_length|desc"
|
||||||
|
msgid "Length of the break stage of the timer in minutes."
|
||||||
|
msgstr "Mfohui pg uif csfbl tubhf pg uif ujnfs jo njovuft."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:289
|
||||||
|
msgctxt "timerset:break_length|accepts"
|
||||||
|
msgid "A positive integer number of minutes."
|
||||||
|
msgstr "B qptjujwf joufhfs ovncfs pg njovuft."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:314
|
||||||
|
msgctxt "timerset:break_length|desc"
|
||||||
|
msgid "Please enter a positive number of minutes."
|
||||||
|
msgstr "Qmfbtf foufs b qptjujwf ovncfs pg njovuft."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settings.py:19
|
||||||
|
msgctxt "guildset:pomodoro_channel"
|
||||||
|
msgid "pomodoro_channel"
|
||||||
|
msgstr "qpnpepsp_diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settings.py:22
|
||||||
|
msgctxt "guildset:pomodoro_channel|desc"
|
||||||
|
msgid "Default central notification channel for pomodoro timers."
|
||||||
|
msgstr "Efgbvmu dfousbm opujgjdbujpo diboofm gps qpnpepsp ujnfst."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Qpnpepsp ujnfst xijdi ep opu ibwf b dvtupn opujgjdbujpo diboofm tfu xjmm "
|
||||||
|
"tfoe ujnfs opujgjdbujpot jo uijt diboofm. Jg uijt tfuujoh jt opu tfu, "
|
||||||
|
"qpnpepsp opujgjdbujpot xjmm efgbvmu up uif ujnfs wpjdf diboofm jutfmg."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settings.py:33
|
||||||
|
msgctxt "guildset:pomodoro_channel|formatted|notset"
|
||||||
|
msgid "Not Set (Will use timer voice channel.)"
|
||||||
|
msgstr "Opu Tfu (Xjmm vtf ujnfs wpjdf diboofm.)"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settings.py:37
|
||||||
|
msgctxt "guildset:pomodoro_channel|accepts"
|
||||||
|
msgid "Timer notification channel name or id."
|
||||||
|
msgstr "Ujnfs opujgjdbujpo diboofm obnf ps je."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settings.py:51
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:pomodoro_channel|set_response|set"
|
||||||
|
msgid "Pomodoro timer notifications will now default to {channel}"
|
||||||
|
msgstr "Qpnpepsp ujnfs opujgjdbujpot xjmm opx efgbvmu up {channel}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settings.py:56
|
||||||
|
msgctxt "guildset:pomodoro_channel|set_response|unset"
|
||||||
|
msgid "Pomodoro timer notifications will now default to their voice channel."
|
||||||
|
msgstr "Qpnpepsp ujnfs opujgjdbujpot xjmm opx efgbvmu up uifjs wpjdf diboofm."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/settings.py:66
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:pomdoro_channel|set_using"
|
||||||
|
msgid "{cmd} or channel selector below."
|
||||||
|
msgstr "{cmd} ps diboofm tfmfdups cfmpx."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/edit.py:63
|
||||||
|
msgctxt "modal:timer_editor|title"
|
||||||
|
msgid "Timer Option Editor"
|
||||||
|
msgstr "Ujnfs Pqujpo Fejups"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:61
|
||||||
|
msgctxt "ui:timer_status|button:present|ack"
|
||||||
|
msgid ""
|
||||||
|
"Thank you for marking your presence.\n"
|
||||||
|
"Good luck and stay productive!"
|
||||||
|
msgstr ""
|
||||||
|
"Uibol zpv gps nbsljoh zpvs qsftfodf.\n"
|
||||||
|
"Hppe mvdl boe tubz qspevdujwf!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:72
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:timer_status|button:present|error:not_in_timer"
|
||||||
|
msgid ""
|
||||||
|
"You are not in this timer! Join the timer channel by pressing {channel}."
|
||||||
|
msgstr ""
|
||||||
|
"Zpv bsf opu jo uijt ujnfs! Kpjo uif ujnfs diboofm cz qsfttjoh {channel}."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:82
|
||||||
|
msgctxt "ui:timer_status|button:present|label"
|
||||||
|
msgid "Present"
|
||||||
|
msgstr "Qsftfou"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:106
|
||||||
|
msgctxt "ui:timer_status|button:edit|error:no_permissions"
|
||||||
|
msgid ""
|
||||||
|
"Configuring this timer requires `MANAGE_CHANNEL` permissions on the timer "
|
||||||
|
"channel, or the configured manager role!"
|
||||||
|
msgstr ""
|
||||||
|
"Dpogjhvsjoh uijt ujnfs sfrvjsft `NBOBHF_DIBOOFM` qfsnjttjpot po uif ujnfs "
|
||||||
|
"diboofm, ps uif dpogjhvsfe nbobhfs spmf!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:119
|
||||||
|
msgctxt "ui:timer_status|button:edit|label"
|
||||||
|
msgid "Options"
|
||||||
|
msgstr "Pqujpot"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:138
|
||||||
|
msgctxt "ui:timer_status|button:start|error:already_running"
|
||||||
|
msgid "Cannot start a timer that is already running!"
|
||||||
|
msgstr "Dboopu tubsu b ujnfs uibu jt bmsfbez svoojoh!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:154
|
||||||
|
msgctxt "ui:timer_status|button:start|error:not_manager|title"
|
||||||
|
msgid "Insufficient permissions!"
|
||||||
|
msgstr "Jotvggjdjfou qfsnjttjpot!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:158
|
||||||
|
msgctxt "ui:timer_status|button:start|error:not_manager|desc"
|
||||||
|
msgid ""
|
||||||
|
"Starting this timer requires `MANAGE_CHANNEL` permissions on the timer "
|
||||||
|
"channel, or the configured `manager_role`!"
|
||||||
|
msgstr ""
|
||||||
|
"Tubsujoh uijt ujnfs sfrvjsft `NBOBHF_DIBOOFM` qfsnjttjpot po uif ujnfs "
|
||||||
|
"diboofm, ps uif dpogjhvsfe `nbobhfs_spmf`!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:168
|
||||||
|
msgctxt "ui:timer_status|button:start|label"
|
||||||
|
msgid "Start"
|
||||||
|
msgstr "Tubsu"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:190
|
||||||
|
msgctxt "ui:timer_status|button:stop|error:not_manager|title"
|
||||||
|
msgid "Insufficient permissions!"
|
||||||
|
msgstr "Jotvggjdjfou qfsnjttjpot!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:194
|
||||||
|
msgctxt "ui:timer_status|button:stop|error:not_manager|desc"
|
||||||
|
msgid ""
|
||||||
|
"Stopping this timer requires `MANAGE_CHANNEL` permissions on the timer "
|
||||||
|
"channel, or the configured `manager_role`!"
|
||||||
|
msgstr ""
|
||||||
|
"Tupqqjoh uijt ujnfs sfrvjsft `NBOBHF_DIBOOFM` qfsnjttjpot po uif ujnfs "
|
||||||
|
"diboofm, ps uif dpogjhvsfe `nbobhfs_spmf`!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/status.py:204
|
||||||
|
msgctxt "ui:timer_status|button:stop|label"
|
||||||
|
msgid "Stop"
|
||||||
|
msgstr "Tupq"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:45
|
||||||
|
msgctxt "ui:timer_options|error:timer_destroyed"
|
||||||
|
msgid "This timer no longer exists! Closing option menu."
|
||||||
|
msgstr "Uijt ujnfs op mpohfs fyjtut! Dmptjoh pqujpo nfov."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:68
|
||||||
|
msgctxt "ui:timer_options|button:edit|label"
|
||||||
|
msgid "Edit"
|
||||||
|
msgstr "Feju"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:84
|
||||||
|
msgctxt "ui:timer_options|button:voice_alerts|label"
|
||||||
|
msgid "Voice Alerts"
|
||||||
|
msgstr "Wpjdf Bmfsut"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:105
|
||||||
|
msgctxt "ui:timer_options|button:delete|success|title"
|
||||||
|
msgid "Timer Deleted"
|
||||||
|
msgstr "Ujnfs Efmfufe"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:109
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:timer_options|button:delete|success|description"
|
||||||
|
msgid "The timer in {channel} has been removed."
|
||||||
|
msgstr "Uif ujnfs jo {channel} ibt cffo sfnpwfe."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:117
|
||||||
|
msgctxt "ui:timer_options|button:delete|label"
|
||||||
|
msgid "Delete"
|
||||||
|
msgstr "Efmfuf"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:136
|
||||||
|
msgctxt "ui:timer_options|menu:voice_channel|placeholder"
|
||||||
|
msgid "Set Voice Channel"
|
||||||
|
msgstr "Tfu Wpjdf Diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:159
|
||||||
|
msgctxt "ui:timer_options|menu:notification_channel|placeholder"
|
||||||
|
msgid "Set Notification Channel"
|
||||||
|
msgstr "Tfu Opujgjdbujpo Diboofm"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:174
|
||||||
|
msgctxt "ui:timer_options|menu:manager_role|placeholder"
|
||||||
|
msgid "Set Manager Role"
|
||||||
|
msgstr "Tfu Nbobhfs Spmf"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:183
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:timer_options|embed|title"
|
||||||
|
msgid "Timer Control Panel for {channel}"
|
||||||
|
msgstr "Ujnfs Dpouspm Qbofm gps {channel}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:190
|
||||||
|
msgctxt "ui:timer_options|embed|footer"
|
||||||
|
msgid "Hover over the option names to view descriptions."
|
||||||
|
msgstr "Ipwfs pwfs uif pqujpo obnft up wjfx eftdsjqujpot."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:202
|
||||||
|
msgctxt "ui:timer_options|embed|field:pattern|name"
|
||||||
|
msgid "Pattern"
|
||||||
|
msgstr "Qbuufso"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:205
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:timer_options|embed|field:pattern|value"
|
||||||
|
msgid ""
|
||||||
|
"**`{focus_len} minutes`** focus\n"
|
||||||
|
"**`{break_len} minutes`** break"
|
||||||
|
msgstr ""
|
||||||
|
"**`{focus_len} njovuft`** gpdvt\n"
|
||||||
|
"**`{break_len} njovuft`** csfbl"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:216
|
||||||
|
msgctxt "ui:timer_options|embed|field:channel_name|name"
|
||||||
|
msgid "Channel Name Preview"
|
||||||
|
msgstr "Diboofm Obnf Qsfwjfx"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:220
|
||||||
|
#, 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 ""
|
||||||
|
"**`{name}`**\n"
|
||||||
|
"(Uif bduvbm diboofm obnf nbz opu nbudi evf up sbufmjnjut.)"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:230
|
||||||
|
msgctxt "ui:timer_options|embed|field:issues|name"
|
||||||
|
msgid "Issues"
|
||||||
|
msgstr "Jttvft"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:248
|
||||||
|
msgctxt "ui:timer_options|issue:no_voice_channel"
|
||||||
|
msgid "The configured voice channel does not exist! Please update it below."
|
||||||
|
msgstr "Uif dpogjhvsfe wpjdf diboofm epft opu fyjtu! Qmfbtf vqebuf ju cfmpx."
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:259
|
||||||
|
#, 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 ""
|
||||||
|
"Wpjdf bmfsut bsf po, cvu J epo'u ibwf tqfbljoh qfsnjttjpot jo {channel}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:266
|
||||||
|
#, 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 ""
|
||||||
|
"J dboopu vqebuf uif obnf pg {channel}! (Offet `NBOBHF_DIBOOFMT` qfsnjttjpo)"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:277
|
||||||
|
msgctxt "ui:timer_options|issue:notif_channel_dne"
|
||||||
|
msgid "Configured notification channel does not exist!"
|
||||||
|
msgstr "Dpogjhvsfe opujgjdbujpo diboofm epft opu fyjtu!"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:286
|
||||||
|
#, 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 ""
|
||||||
|
"J dboopu buubdi gjmft (`BUUBDI_GJMFT`) ps tfoe fncfet (`FNCFE_MJOLT`) jo "
|
||||||
|
"{channel}"
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:294
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:timer_options|issues:cannot_make_webhooks"
|
||||||
|
msgid ""
|
||||||
|
"I cannot create the notification webhook (`MANAGE_WEBHOOKS`) in {channel}"
|
||||||
|
msgstr ""
|
||||||
|
"J dboopu dsfbuf uif opujgjdbujpo xfcippl (`NBOBHF_XFCIPPLT`) jo {channel}"
|
||||||
389
locales/ceaser/LC_MESSAGES/babel.po
Normal file
389
locales/ceaser/LC_MESSAGES/babel.po
Normal file
@@ -0,0 +1,389 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/babel/settingui.py:40
|
||||||
|
msgctxt "ui:locale_config|button:force|label"
|
||||||
|
msgid "Toggle Force"
|
||||||
|
msgstr "Uphhmf Gpsdf"
|
||||||
|
|
||||||
|
#: src/babel/settingui.py:49
|
||||||
|
msgctxt "ui:locale_config|embed|title"
|
||||||
|
msgid "Language Configuration Panel"
|
||||||
|
msgstr "Mbohvbhf Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/babel/settingui.py:83
|
||||||
|
msgctxt "dash:locale|title"
|
||||||
|
msgid "Server Language Configuration ({commands[configure language]})"
|
||||||
|
msgstr "Tfswfs Mbohvbhf Dpogjhvsbujpo ({commands[configure language]})"
|
||||||
|
|
||||||
|
#: src/babel/settingui.py:87
|
||||||
|
msgctxt "dash:locale|dropdown|placeholder"
|
||||||
|
msgid "Server Language Panel"
|
||||||
|
msgstr "Tfswfs Mbohvbhf Qbofm"
|
||||||
|
|
||||||
|
#: src/babel/cog.py:99
|
||||||
|
msgctxt "cmd:configure_language"
|
||||||
|
msgid "language"
|
||||||
|
msgstr "mbohvbhf"
|
||||||
|
|
||||||
|
#: src/babel/cog.py:101
|
||||||
|
msgctxt "cmd:configure_language|desc"
|
||||||
|
msgid "Configure the default language I will use in this server."
|
||||||
|
msgstr "Dpogjhvsf uif efgbvmu mbohvbhf J xjmm vtf jo uijt tfswfs."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Zpv dboopu fobcmf `{force_setting}` xjuipvu ibwjoh b dpogjhvsfe mbohvbhf!"
|
||||||
|
|
||||||
|
#: src/babel/cog.py:167
|
||||||
|
msgctxt "cmd:configure_language|success"
|
||||||
|
msgid "Language settings updated!"
|
||||||
|
msgstr "Mbohvbhf tfuujoht vqebufe!"
|
||||||
|
|
||||||
|
#: src/babel/cog.py:183
|
||||||
|
msgctxt "cmd:userconfig_language"
|
||||||
|
msgid "language"
|
||||||
|
msgstr "mbohvbhf"
|
||||||
|
|
||||||
|
#: src/babel/cog.py:186
|
||||||
|
msgctxt "cmd:userconfig_language|desc"
|
||||||
|
msgid "Set your preferred interaction language."
|
||||||
|
msgstr "Tfu zpvs qsfgfssfe joufsbdujpo mbohvbhf."
|
||||||
|
|
||||||
|
#: src/babel/cog.py:190
|
||||||
|
msgctxt "cmd:userconfig_language|param:language"
|
||||||
|
msgid "language"
|
||||||
|
msgstr "mbohvbhf"
|
||||||
|
|
||||||
|
#: src/babel/cog.py:195
|
||||||
|
msgctxt "cmd:userconfig_language|param:language|desc"
|
||||||
|
msgid "Which language do you want me to respond in?"
|
||||||
|
msgstr "Xijdi mbohvbhf ep zpv xbou nf up sftqpoe jo?"
|
||||||
|
|
||||||
|
#: src/babel/cog.py:211
|
||||||
|
msgctxt "cmd:userconfig_language|button:reset|label"
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr "Sftfu"
|
||||||
|
|
||||||
|
#: src/babel/cog.py:251
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "acmpl:language|no_match"
|
||||||
|
msgid "No supported languages matching {partial}"
|
||||||
|
msgstr "Op tvqqpsufe mbohvbhft nbudijoh {partial}"
|
||||||
|
|
||||||
|
#: src/babel/utils.py:9
|
||||||
|
msgctxt "utils|months"
|
||||||
|
msgid ""
|
||||||
|
"January,February,March,April,May,June,July,August,September,October,November,December"
|
||||||
|
msgstr ""
|
||||||
|
"Kbovbsz,Gfcsvbsz,Nbsdi,Bqsjm,Nbz,Kvof,Kvmz,Bvhvtu,Tfqufncfs,Pdupcfs,Opwfncfs,Efdfncfs"
|
||||||
|
|
||||||
|
#: src/babel/utils.py:14
|
||||||
|
msgctxt "utils|short_months"
|
||||||
|
msgid "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
|
||||||
|
msgstr "Kbo,Gfc,Nbs,Bqs,Nbz,Kvo,Kvm,Bvh,Tfq,Pdu,Opw,Efd"
|
||||||
|
|
||||||
|
#: src/babel/settings.py:23
|
||||||
|
msgctxt "settype:locale|accepts"
|
||||||
|
msgid "Enter a supported language (e.g. 'en-GB')."
|
||||||
|
msgstr "Foufs b tvqqpsufe mbohvbhf (f.h. 'fo-HC')."
|
||||||
|
|
||||||
|
#: src/babel/settings.py:34
|
||||||
|
msgctxt "settype:locale|summary_table|field:supported|key"
|
||||||
|
msgid "Supported"
|
||||||
|
msgstr "Tvqqpsufe"
|
||||||
|
|
||||||
|
#: src/babel/settings.py:44
|
||||||
|
msgctxt "settype:locale|formatted:unset"
|
||||||
|
msgid "Unset"
|
||||||
|
msgstr "Votfu"
|
||||||
|
|
||||||
|
#: 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 "Tpssz, xf ep opu tvqqpsu uif mbohvbhf `{lang}` bu uijt ujnf!"
|
||||||
|
|
||||||
|
#: src/babel/settings.py:75
|
||||||
|
msgctxt "userset:locale"
|
||||||
|
msgid "language"
|
||||||
|
msgstr "mbohvbhf"
|
||||||
|
|
||||||
|
#: src/babel/settings.py:76
|
||||||
|
msgctxt "userset:locale|desc"
|
||||||
|
msgid "Your preferred language for interacting with me."
|
||||||
|
msgstr "Zpvs qsfgfssfe mbohvbhf gps joufsbdujoh xjui nf."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif mbohvbhf zpv xpvme qsfgfs nf up sftqpoe up dpnnboet boe joufsbdujpot jo."
|
||||||
|
" Tfswfst nbz cf dpogjhvsfe up pwfssjef uijt xjui uifjs pxo mbohvbhf."
|
||||||
|
|
||||||
|
#: src/babel/settings.py:90
|
||||||
|
msgctxt "userset:locale|response"
|
||||||
|
msgid "You have unset your language."
|
||||||
|
msgstr "Zpv ibwf votfu zpvs mbohvbhf."
|
||||||
|
|
||||||
|
#: src/babel/settings.py:92
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "userset:locale|response"
|
||||||
|
msgid "You have set your language to {lang}."
|
||||||
|
msgstr "Zpv ibwf tfu zpvs mbohvbhf up {lang}."
|
||||||
|
|
||||||
|
#: src/babel/settings.py:110
|
||||||
|
msgctxt "guildset:force_locale"
|
||||||
|
msgid "force_language"
|
||||||
|
msgstr "gpsdf_mbohvbhf"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifuifs up gpsdf bmm nfncfst up vtf uif dpogjhvsfe hvjme mbohvbhf xifo "
|
||||||
|
"joufsbdujoh xjui nf."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifo fobcmfe, dpnnboet jo uijt hvjme xjmm bmxbzt vtf uif dpogjhvsfe hvjme "
|
||||||
|
"mbohvbhf, sfhbsemftt pg uif nfncfs't qfstpobmmz dpogjhvsfe mbohvbhf."
|
||||||
|
|
||||||
|
#: src/babel/settings.py:119
|
||||||
|
msgctxt "guildset:force_locale|output"
|
||||||
|
msgid "Enabled (members will be forced to use the server language)"
|
||||||
|
msgstr "Fobcmfe (nfncfst xjmm cf gpsdfe up vtf uif tfswfs mbohvbhf)"
|
||||||
|
|
||||||
|
#: src/babel/settings.py:120
|
||||||
|
msgctxt "guildset:force_locale|output"
|
||||||
|
msgid "Disabled (members may set their own language)"
|
||||||
|
msgstr "Ejtbcmfe (nfncfst nbz tfu uifjs pxo mbohvbhf)"
|
||||||
|
|
||||||
|
#: src/babel/settings.py:134
|
||||||
|
msgctxt "guildset:force_locale|response"
|
||||||
|
msgid "I will always use the set language in this server."
|
||||||
|
msgstr "J xjmm bmxbzt vtf uif tfu mbohvbhf jo uijt tfswfs."
|
||||||
|
|
||||||
|
#: src/babel/settings.py:139
|
||||||
|
msgctxt "guildset:force_locale|response"
|
||||||
|
msgid "I will now allow the members to set their own language here."
|
||||||
|
msgstr "J xjmm opx bmmpx uif nfncfst up tfu uifjs pxo mbohvbhf ifsf."
|
||||||
|
|
||||||
|
#: src/babel/settings.py:156
|
||||||
|
msgctxt "guildset:locale"
|
||||||
|
msgid "language"
|
||||||
|
msgstr "mbohvbhf"
|
||||||
|
|
||||||
|
#: src/babel/settings.py:157
|
||||||
|
msgctxt "guildset:locale|desc"
|
||||||
|
msgid "Your preferred language for interacting with me."
|
||||||
|
msgstr "Zpvs qsfgfssfe mbohvbhf gps joufsbdujoh xjui nf."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif efgbvmu mbohvbhf up vtf gps sftqpotft boe joufsbdujpot jo uijt tfswfs. "
|
||||||
|
"Nfncfs't pxo dpogjhvsfe mbohvbhf xjmm pwfssjef uijt gps uifjs dpnnboet "
|
||||||
|
"vomftt `gpsdf_mbohvbhf` jt fobcmfe."
|
||||||
|
|
||||||
|
#: src/babel/settings.py:172
|
||||||
|
msgctxt "guildset:locale|response"
|
||||||
|
msgid "You have unset the guild language."
|
||||||
|
msgstr "Zpv ibwf votfu uif hvjme mbohvbhf."
|
||||||
|
|
||||||
|
#: src/babel/settings.py:174
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:locale|response"
|
||||||
|
msgid "You have set the guild language to {lang}."
|
||||||
|
msgstr "Zpv ibwf tfu uif hvjme mbohvbhf up {lang}."
|
||||||
|
|
||||||
|
#: src/babel/enums.py:42
|
||||||
|
msgctxt "localenames|locale:en-US"
|
||||||
|
msgid "American English"
|
||||||
|
msgstr "Bnfsjdbo Fohmjti"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:43
|
||||||
|
msgctxt "localenames|locale:en-GB"
|
||||||
|
msgid "British English"
|
||||||
|
msgstr "Csjujti Fohmjti"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:44
|
||||||
|
msgctxt "localenames|locale:bg"
|
||||||
|
msgid "Bulgarian"
|
||||||
|
msgstr "Cvmhbsjbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:45
|
||||||
|
msgctxt "localenames|locale:zh-CN"
|
||||||
|
msgid "Chinese"
|
||||||
|
msgstr "Dijoftf"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:46
|
||||||
|
msgctxt "localenames|locale:zh-TW"
|
||||||
|
msgid "Taiwan Chinese"
|
||||||
|
msgstr "Ubjxbo Dijoftf"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:47
|
||||||
|
msgctxt "localenames|locale:hr"
|
||||||
|
msgid "Croatian"
|
||||||
|
msgstr "Dspbujbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:48
|
||||||
|
msgctxt "localenames|locale:cs"
|
||||||
|
msgid "Czech"
|
||||||
|
msgstr "Dafdi"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:49
|
||||||
|
msgctxt "localenames|locale:da"
|
||||||
|
msgid "Danish"
|
||||||
|
msgstr "Ebojti"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:50
|
||||||
|
msgctxt "localenames|locale:nl"
|
||||||
|
msgid "Dutch"
|
||||||
|
msgstr "Evudi"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:51
|
||||||
|
msgctxt "localenames|locale:fi"
|
||||||
|
msgid "Finnish"
|
||||||
|
msgstr "Gjoojti"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:52
|
||||||
|
msgctxt "localenames|locale:fr"
|
||||||
|
msgid "French"
|
||||||
|
msgstr "Gsfodi"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:53
|
||||||
|
msgctxt "localenames|locale:de"
|
||||||
|
msgid "German"
|
||||||
|
msgstr "Hfsnbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:54
|
||||||
|
msgctxt "localenames|locale:el"
|
||||||
|
msgid "Greek"
|
||||||
|
msgstr "Hsffl"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:55
|
||||||
|
msgctxt "localenames|locale:hi"
|
||||||
|
msgid "Hindi"
|
||||||
|
msgstr "Ijoej"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:56
|
||||||
|
msgctxt "localenames|locale:hu"
|
||||||
|
msgid "Hungarian"
|
||||||
|
msgstr "Ivohbsjbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:57
|
||||||
|
msgctxt "localenames|locale:it"
|
||||||
|
msgid "Italian"
|
||||||
|
msgstr "Jubmjbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:58
|
||||||
|
msgctxt "localenames|locale:ja"
|
||||||
|
msgid "Japanese"
|
||||||
|
msgstr "Kbqboftf"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:59
|
||||||
|
msgctxt "localenames|locale:ko"
|
||||||
|
msgid "Korean"
|
||||||
|
msgstr "Lpsfbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:60
|
||||||
|
msgctxt "localenames|locale:lt"
|
||||||
|
msgid "Lithuanian"
|
||||||
|
msgstr "Mjuivbojbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:61
|
||||||
|
msgctxt "localenames|locale:no"
|
||||||
|
msgid "Norwegian"
|
||||||
|
msgstr "Opsxfhjbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:62
|
||||||
|
msgctxt "localenames|locale:pl"
|
||||||
|
msgid "Polish"
|
||||||
|
msgstr "Qpmjti"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:63
|
||||||
|
msgctxt "localenames|locale:pt-BR"
|
||||||
|
msgid "Brazil Portuguese"
|
||||||
|
msgstr "Csbajm Qpsuvhvftf"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:64
|
||||||
|
msgctxt "localenames|locale:ro"
|
||||||
|
msgid "Romanian"
|
||||||
|
msgstr "Spnbojbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:65
|
||||||
|
msgctxt "localenames|locale:ru"
|
||||||
|
msgid "Russian"
|
||||||
|
msgstr "Svttjbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:66
|
||||||
|
msgctxt "localenames|locale:es-ES"
|
||||||
|
msgid "Spain Spanish"
|
||||||
|
msgstr "Tqbjo Tqbojti"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:67
|
||||||
|
msgctxt "localenames|locale:sv-SE"
|
||||||
|
msgid "Swedish"
|
||||||
|
msgstr "Txfejti"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:68
|
||||||
|
msgctxt "localenames|locale:th"
|
||||||
|
msgid "Thai"
|
||||||
|
msgstr "Uibj"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:69
|
||||||
|
msgctxt "localenames|locale:tr"
|
||||||
|
msgid "Turkish"
|
||||||
|
msgstr "Uvsljti"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:70
|
||||||
|
msgctxt "localenames|locale:uk"
|
||||||
|
msgid "Ukrainian"
|
||||||
|
msgstr "Vlsbjojbo"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:71
|
||||||
|
msgctxt "localenames|locale:vi"
|
||||||
|
msgid "Vietnamese"
|
||||||
|
msgstr "Wjfuobnftf"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:72
|
||||||
|
msgctxt "localenames|locale:he"
|
||||||
|
msgid "Hebrew"
|
||||||
|
msgstr "Ifcsfx"
|
||||||
|
|
||||||
|
#: src/babel/enums.py:73
|
||||||
|
msgctxt "localenames|locale:he_IL"
|
||||||
|
msgid "Hebrew (Israel)"
|
||||||
|
msgstr "Ifcsfx (Jtsbfm)"
|
||||||
33
locales/ceaser/LC_MESSAGES/base.po
Normal file
33
locales/ceaser/LC_MESSAGES/base.po
Normal file
@@ -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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\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 "Zpv dboopu vtf uijt joufsgbdf!"
|
||||||
|
|
||||||
|
#: bot/modules/sysadmin/exec_cog.py:252 bot/modules/sysadmin/exec_cog.py:254
|
||||||
|
msgid "async"
|
||||||
|
msgstr "btzod"
|
||||||
|
|
||||||
|
#: bot/modules/sysadmin/exec_cog.py:253 bot/modules/sysadmin/exec_cog.py:255
|
||||||
|
msgid "Execute arbitrary code with Exec"
|
||||||
|
msgstr "Fyfdvuf bscjusbsz dpef xjui Fyfd"
|
||||||
|
|
||||||
|
#: bot/modules/sysadmin/exec_cog.py:265
|
||||||
|
msgid "eval"
|
||||||
|
msgstr "fwbm"
|
||||||
85
locales/ceaser/LC_MESSAGES/config.po
Normal file
85
locales/ceaser/LC_MESSAGES/config.po
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/config/general.py:41
|
||||||
|
msgctxt "guildset:timezone"
|
||||||
|
msgid "timezone"
|
||||||
|
msgstr "ujnfapof"
|
||||||
|
|
||||||
|
#: src/modules/config/general.py:44
|
||||||
|
msgctxt "guildset:timezone|desc"
|
||||||
|
msgid "Guild timezone for statistics display."
|
||||||
|
msgstr "Hvjme ujnfapof gps tubujtujdt ejtqmbz."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Hvjme-xjef ujnfapof. Vtfe up efufsnjof tubsu pg uif ebz gps uif "
|
||||||
|
"mfbefscpbset, boe bt uif efgbvmu tubujtujdt ujnfapof gps nfncfst xip ibwf "
|
||||||
|
"opu tfu pof."
|
||||||
|
|
||||||
|
#: src/modules/config/general.py:62
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:timezone|response"
|
||||||
|
msgid "The guild timezone has been set to `{timezone}`."
|
||||||
|
msgstr "Uif hvjme ujnfapof ibt cffo tfu up `{timezone}`."
|
||||||
|
|
||||||
|
#: src/modules/config/general.py:94
|
||||||
|
msgctxt "cmd:configure_general"
|
||||||
|
msgid "general"
|
||||||
|
msgstr "hfofsbm"
|
||||||
|
|
||||||
|
#: src/modules/config/general.py:95
|
||||||
|
msgctxt "cmd:configure_general|desc"
|
||||||
|
msgid "General configuration panel"
|
||||||
|
msgstr "Hfofsbm dpogjhvsbujpo qbofm"
|
||||||
|
|
||||||
|
#: src/modules/config/general.py:129
|
||||||
|
msgctxt "cmd:configure_general|parse_failure:timezone"
|
||||||
|
msgid "Could not set the timezone!"
|
||||||
|
msgstr "Dpvme opu tfu uif ujnfapof!"
|
||||||
|
|
||||||
|
#: src/modules/config/general.py:150
|
||||||
|
msgctxt "cmd:configure_general|success"
|
||||||
|
msgid "Settings Updated!"
|
||||||
|
msgstr "Tfuujoht Vqebufe!"
|
||||||
|
|
||||||
|
#: src/modules/config/general.py:165
|
||||||
|
msgctxt "cmd:configure_general|panel|title"
|
||||||
|
msgid "General Configuration Panel"
|
||||||
|
msgstr "Hfofsbm Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/config/dashboard.py:98
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:dashboard|title"
|
||||||
|
msgid "Guild Dashboard (Page {page}/{total})"
|
||||||
|
msgstr "Hvjme Ebticpbse (Qbhf {page}/{total})"
|
||||||
|
|
||||||
|
#: src/modules/config/dashboard.py:109
|
||||||
|
msgctxt "ui:dashboard|footer"
|
||||||
|
msgid "Hover over setting names for a brief description"
|
||||||
|
msgstr "Ipwfs pwfs tfuujoh obnft gps b csjfg eftdsjqujpo"
|
||||||
|
|
||||||
|
#: src/modules/config/dashboard.py:172
|
||||||
|
msgctxt "ui:dashboard|menu:config|placeholder"
|
||||||
|
msgid "Open Configuration Panel"
|
||||||
|
msgstr "Pqfo Dpogjhvsbujpo Qbofm"
|
||||||
27
locales/ceaser/LC_MESSAGES/core_config.po
Normal file
27
locales/ceaser/LC_MESSAGES/core_config.po
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/core/config.py:28
|
||||||
|
msgctxt "group:configure"
|
||||||
|
msgid "configure"
|
||||||
|
msgstr "dpogjhvsf"
|
||||||
|
|
||||||
|
#: src/core/config.py:29
|
||||||
|
msgctxt "group:configure|desc"
|
||||||
|
msgid "View and adjust my configuration options."
|
||||||
|
msgstr "Wjfx boe bekvtu nz dpogjhvsbujpo pqujpot."
|
||||||
577
locales/ceaser/LC_MESSAGES/economy.po
Normal file
577
locales/ceaser/LC_MESSAGES/economy.po
Normal file
@@ -0,0 +1,577 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/economy/settingui.py:33
|
||||||
|
msgctxt "ui:economy_config|embed|title"
|
||||||
|
msgid "Economy Configuration Panel"
|
||||||
|
msgstr "Fdpopnz Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/economy/settingui.py:68
|
||||||
|
msgctxt "dash:economy|title"
|
||||||
|
msgid "Economy Configuration ({commands[configure economy]})"
|
||||||
|
msgstr "Fdpopnz Dpogjhvsbujpo ({commands[configure economy]})"
|
||||||
|
|
||||||
|
#: src/modules/economy/settingui.py:72
|
||||||
|
msgctxt "dash:economy|dropdown|placeholder"
|
||||||
|
msgid "Economy Panel"
|
||||||
|
msgstr "Fdpopnz Qbofm"
|
||||||
|
|
||||||
|
#. ----- Economy group commands -----
|
||||||
|
#: src/modules/economy/cog.py:86
|
||||||
|
msgctxt "cmd:economy"
|
||||||
|
msgid "economy"
|
||||||
|
msgstr "fdpopnz"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:92
|
||||||
|
msgctxt "cmd:economy_balance"
|
||||||
|
msgid "balance"
|
||||||
|
msgstr "cbmbodf"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:95
|
||||||
|
msgctxt "cmd:economy_balance|desc"
|
||||||
|
msgid "Display or modify LionCoin balance for members and roles."
|
||||||
|
msgstr "Ejtqmbz ps npejgz MjpoDpjo cbmbodf gps nfncfst boe spmft."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:99
|
||||||
|
msgctxt "cmd:economy_balance|param:target"
|
||||||
|
msgid "target"
|
||||||
|
msgstr "ubshfu"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:100
|
||||||
|
msgctxt "cmd:economy_balance|param:add"
|
||||||
|
msgid "add"
|
||||||
|
msgstr "bee"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:101
|
||||||
|
msgctxt "cmd:economy_balance|param:set"
|
||||||
|
msgid "set"
|
||||||
|
msgstr "tfu"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:106
|
||||||
|
msgctxt "cmd:economy_balance|param:target|desc"
|
||||||
|
msgid ""
|
||||||
|
"Target user or role to view or update. Use @everyone to update the entire "
|
||||||
|
"guild."
|
||||||
|
msgstr ""
|
||||||
|
"Ubshfu vtfs ps spmf up wjfx ps vqebuf. Vtf @fwfszpof up vqebuf uif foujsf "
|
||||||
|
"hvjme."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:110
|
||||||
|
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 ""
|
||||||
|
"Ovncfs pg MjpoDpjot up bee up uif ubshfu nfncfs't cbmbodf. Nbz cf ofhbujwf "
|
||||||
|
"up sfnpwf."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:114
|
||||||
|
msgctxt "cmd:economy_balance|param:set|set"
|
||||||
|
msgid "New balance to set the target's balance to."
|
||||||
|
msgstr "Ofx cbmbodf up tfu uif ubshfu't cbmbodf up."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:152
|
||||||
|
#, 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 ""
|
||||||
|
"Uifsf bsf op wbmje nfncfst jo {role.mention}! Ju ibt b upubm pg `0` MD."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:163
|
||||||
|
msgctxt "cmd:economy_balance|error:target_is_bot"
|
||||||
|
msgid "Bots cannot have coin balances!"
|
||||||
|
msgstr "Cput dboopu ibwf dpjo cbmbodft!"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:174
|
||||||
|
msgctxt "cmd:economy_balance|error:args"
|
||||||
|
msgid "You cannot simultaneously `set` and `add` member balances!"
|
||||||
|
msgstr "Zpv dboopu tjnvmubofpvtmz `tfu` boe `bee` nfncfs cbmbodft!"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:223
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:economy_balance|embed:success|affected"
|
||||||
|
msgid "One user was affected."
|
||||||
|
msgid_plural "**{count}** users were affected."
|
||||||
|
msgstr[0] "Pof vtfs xbt bggfdufe."
|
||||||
|
msgstr[1] "**{count}** vtfst xfsf bggfdufe."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:229
|
||||||
|
#, 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] "Pof vtfs xjmm cf bggfdufe."
|
||||||
|
msgstr[1] "**{count}** vtfst xjmm cf bggfdufe."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:236
|
||||||
|
msgctxt "cmd:economy_balance|confirm|button:confirm"
|
||||||
|
msgid "Yes, adjust balances"
|
||||||
|
msgstr "Zft, bekvtu cbmbodft"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:240
|
||||||
|
msgctxt "cmd:economy_balance|confirm|button:cancel"
|
||||||
|
msgid "No, cancel"
|
||||||
|
msgstr "Op, dbodfm"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:247
|
||||||
|
#, 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 ""
|
||||||
|
"Bmm nfncfst pg **{guild_name}** ibwf ibe uifjs cbmbodf tfu up "
|
||||||
|
"{coin_emoji}**{amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:256
|
||||||
|
#, 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 ""
|
||||||
|
"Bsf zpv tvsf zpv xbou up tfu fwfszpof't cbmbodf up {coin_emoji}**{amount}**?"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:264
|
||||||
|
#, 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 ""
|
||||||
|
"Bmm nfncfst pg {role_mention} ibwf ibe uifjs cbmbodf tfu up "
|
||||||
|
"{coin_emoji}**{amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:273
|
||||||
|
#, 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 ""
|
||||||
|
"Bsf zpv tvsf zpv xbou up tfu uif cbmbodf pg fwfszpof xjui {role_mention} up "
|
||||||
|
"{coin_emoji}**{amount}**?"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:290
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:economy_balance|embed:success_set|desc"
|
||||||
|
msgid "{user_mention} now has a balance of {coin_emoji}**{amount}**."
|
||||||
|
msgstr "{user_mention} opx ibt b cbmbodf pg {coin_emoji}**{amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:306
|
||||||
|
#, 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 ""
|
||||||
|
"Bmm nfncfst pg **{guild_name}** ibwf cffo hjwfo {coin_emoji}**{amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:315
|
||||||
|
#, 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 "Bsf zpv tvsf zpv xbou up bee **{amount}** up fwfszpof't cbmbodf?"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:323
|
||||||
|
#, 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 ""
|
||||||
|
"Bmm nfncfst pg {role_mention} ibwf cffo hjwfo {coin_emoji}**{amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:332
|
||||||
|
#, 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 ""
|
||||||
|
"Bsf zpv tvsf zpv xbou up bee {coin_emoji}**{amount}** up fwfszpof jo "
|
||||||
|
"{role_mention}?"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:354
|
||||||
|
#, 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 ""
|
||||||
|
"{user_mention} xbt hjwfo {coin_emoji}**{amount}**, boe opx ibt b cbmbodf pg "
|
||||||
|
"{coin_emoji}**{new_amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:365
|
||||||
|
msgctxt "cmd:economy_balance|embed:success|title"
|
||||||
|
msgid "Account successfully updated."
|
||||||
|
msgid_plural "Accounts successfully updated."
|
||||||
|
msgstr[0] "Bddpvou tvddfttgvmmz vqebufe."
|
||||||
|
msgstr[1] "Bddpvout tvddfttgvmmz vqebufe."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:409
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:economy_balance|embed:role_lb|author"
|
||||||
|
msgid "Balance sheet for {name}"
|
||||||
|
msgstr "Cbmbodf tiffu gps {name}"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:415
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:economy_balance|embed:role_lb|header"
|
||||||
|
msgid "This server has a total balance of {coin_emoji}**{total}**."
|
||||||
|
msgstr "Uijt tfswfs ibt b upubm cbmbodf pg {coin_emoji}**{total}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:423
|
||||||
|
#, 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 ""
|
||||||
|
"{role_mention} ibt `{count}` nfncfst xjui opo-afsp cbmbodf, xjui b upubm "
|
||||||
|
"cbmbodf pg {coin_emoji}**{total}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:435
|
||||||
|
msgctxt "cmd:economy_balance|embed:role_lb|row_format"
|
||||||
|
msgid "`[{pos:>{numwidth}}]` | `{coins:>{coinwidth}} LC` | {mention}"
|
||||||
|
msgstr "`[{pos:>{ovnxjeui}}]` | `{coins:>{dpjoxjeui}} MD` | {mention}"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:463
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:economy_balance|embed:role_lb|footer"
|
||||||
|
msgid "Page {page}/{total}"
|
||||||
|
msgstr "Qbhf {page}/{total}"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:473
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:economy_balance|embed:role_lb|header"
|
||||||
|
msgid "This server has a total balance of {coin_emoji}**0**."
|
||||||
|
msgstr "Uijt tfswfs ibt b upubm cbmbodf pg {coin_emoji}**0**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:480
|
||||||
|
#, 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 "Uif spmf {role_mention} ibt b upubm cbmbodf pg {coin_emoji}**0**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:500
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:economy_balance|embed:single|desc"
|
||||||
|
msgid "{mention} currently owns {coin_emoji} {coins}."
|
||||||
|
msgstr "{mention} dvssfoumz pxot {coin_emoji} {coins}."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:510
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:economy_balance|embed:single|author"
|
||||||
|
msgid "Balance statement for {user}"
|
||||||
|
msgstr "Cbmbodf tubufnfou gps {user}"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:519
|
||||||
|
msgctxt "cmd:economy_reset"
|
||||||
|
msgid "reset"
|
||||||
|
msgstr "sftfu"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:522
|
||||||
|
msgctxt "cmd:economy_reset|desc"
|
||||||
|
msgid ""
|
||||||
|
"Reset the coin balance for a target user or role. (See also \"economy "
|
||||||
|
"balance\".)"
|
||||||
|
msgstr ""
|
||||||
|
"Sftfu uif dpjo cbmbodf gps b ubshfu vtfs ps spmf. (Tff bmtp \"fdpopnz "
|
||||||
|
"cbmbodf\".)"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:526
|
||||||
|
msgctxt "cmd:economy_reset|param:target"
|
||||||
|
msgid "target"
|
||||||
|
msgstr "ubshfu"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:531
|
||||||
|
msgctxt "cmd:economy_reset|param:target|desc"
|
||||||
|
msgid ""
|
||||||
|
"Target user or role to view or update. Use @everyone to reset the entire "
|
||||||
|
"guild."
|
||||||
|
msgstr ""
|
||||||
|
"Ubshfu vtfs ps spmf up wjfx ps vqebuf. Vtf @fwfszpof up sftfu uif foujsf "
|
||||||
|
"hvjme."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:558
|
||||||
|
#, 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 ""
|
||||||
|
"Bsf zpv tvsf zpv xbou up sftfu uif dpjo cbmbodf gps fwfszpof jo **{guild_name}**?\n"
|
||||||
|
"*Uijt jt opu sfwfstjcmf!*"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:566
|
||||||
|
msgctxt "cmd:economy_reset|confirm:reset_guild|button:confirm"
|
||||||
|
msgid "Yes, reset the economy"
|
||||||
|
msgstr "Zft, sftfu uif fdpopnz"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:570
|
||||||
|
msgctxt "cmd:economy_reset|confirm:reset_guild|button:cancel"
|
||||||
|
msgid "Cancel reset"
|
||||||
|
msgstr "Dbodfm sftfu"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:586
|
||||||
|
#, 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 ""
|
||||||
|
"Fwfszpof jo **{guild_name}** ibt ibe uifjs cbmbodf sftfu up "
|
||||||
|
"{coin_emoji}**{amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:603
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:economy_reset|error:no_target|desc"
|
||||||
|
msgid "The role {mention} has no members to reset!"
|
||||||
|
msgstr "Uif spmf {mention} ibt op nfncfst up sftfu!"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:613
|
||||||
|
#, 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 ""
|
||||||
|
"Bsf zpv tvsf zpv xbou up sftfu uif cbmbodf gps fwfszpof jo {mention}?\n"
|
||||||
|
"**{count}** nfncfst xjmm cf bggfdufe."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:622
|
||||||
|
msgctxt "cmd:economy_reset|confirm:reset_role|button:confirm"
|
||||||
|
msgid "Yes, complete economy reset"
|
||||||
|
msgstr "Zft, dpnqmfuf fdpopnz sftfu"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:626
|
||||||
|
msgctxt "cmd:economy_reset|confirm:reset_role|button:cancel"
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "Dbodfm"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:643
|
||||||
|
#, 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 ""
|
||||||
|
"Fwfszpof jo {role_mention} ibt ibe uifjs dpjo cbmbodf sftfu up "
|
||||||
|
"{coin_emoji}**{amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:665
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:economy_reset|embed:success_user|desc"
|
||||||
|
msgid "{mention}'s balance has been reset to {coin_emoji}**{amount}**."
|
||||||
|
msgstr "{mention}'t cbmbodf ibt cffo sftfu up {coin_emoji}**{amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:675
|
||||||
|
msgctxt "cmd:send"
|
||||||
|
msgid "send"
|
||||||
|
msgstr "tfoe"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:678
|
||||||
|
msgctxt "cmd:send|desc"
|
||||||
|
msgid "Gift the target user a certain number of LionCoins."
|
||||||
|
msgstr "Hjgu uif ubshfu vtfs b dfsubjo ovncfs pg MjpoDpjot."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:682
|
||||||
|
msgctxt "cmd:send|param:target"
|
||||||
|
msgid "target"
|
||||||
|
msgstr "ubshfu"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:683
|
||||||
|
msgctxt "cmd:send|param:amount"
|
||||||
|
msgid "amount"
|
||||||
|
msgstr "bnpvou"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:684
|
||||||
|
msgctxt "cmd:send|param:note"
|
||||||
|
msgid "note"
|
||||||
|
msgstr "opuf"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:687
|
||||||
|
msgctxt "cmd:send|param:target|desc"
|
||||||
|
msgid "User to send the gift to"
|
||||||
|
msgstr "Vtfs up tfoe uif hjgu up"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:688
|
||||||
|
msgctxt "cmd:send|param:amount|desc"
|
||||||
|
msgid "Number of coins to send"
|
||||||
|
msgstr "Ovncfs pg dpjot up tfoe"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:689
|
||||||
|
msgctxt "cmd:send|param:note|desc"
|
||||||
|
msgid "Optional note to add to the gift."
|
||||||
|
msgstr "Pqujpobm opuf up bee up uif hjgu."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:713
|
||||||
|
msgctxt "cmd:send|error:not_allowed"
|
||||||
|
msgid "Sorry, this server has disabled LionCoin transfers!"
|
||||||
|
msgstr "Tpssz, uijt tfswfs ibt ejtbcmfe MjpoDpjo usbotgfst!"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:722
|
||||||
|
msgctxt "cmd:send|error:sending-to-self"
|
||||||
|
msgid ""
|
||||||
|
"What is this, tax evasion?\n"
|
||||||
|
"(You can not send coins to yourself.)"
|
||||||
|
msgstr ""
|
||||||
|
"Xibu jt uijt, uby fwbtjpo?\n"
|
||||||
|
"(Zpv dbo opu tfoe dpjot up zpvstfmg.)"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:732
|
||||||
|
msgctxt "cmd:send|error:sending-to-leo"
|
||||||
|
msgid ""
|
||||||
|
"I appreciate it, but you need it more than I do!\n"
|
||||||
|
"(You cannot send coins to bots.)"
|
||||||
|
msgstr ""
|
||||||
|
"J bqqsfdjbuf ju, cvu zpv offe ju npsf uibo J ep!\n"
|
||||||
|
"(Zpv dboopu tfoe dpjot up cput.)"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:742
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:send|error:sending-to-bot"
|
||||||
|
msgid ""
|
||||||
|
"{target} appreciates the gesture, but said they don't have any use for {coin}.\n"
|
||||||
|
"(You cannot send coins to bots.)"
|
||||||
|
msgstr ""
|
||||||
|
"{target} bqqsfdjbuft uif hftuvsf, cvu tbje uifz epo'u ibwf boz vtf gps {coin}.\n"
|
||||||
|
"(Zpv dboopu tfoe dpjot up cput.)"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:770
|
||||||
|
#, 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 ""
|
||||||
|
"Zpv ep opu ibwf fopvhi mjpodpjot up ep uijt!\n"
|
||||||
|
"`Dvssfou Cbmbodf:` {coin_emoji}{balance}"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:791
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:send|embed:gift|title"
|
||||||
|
msgid "{user} sent you a gift!"
|
||||||
|
msgstr "{user} tfou zpv b hjgu!"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:795
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:send|embed:gift|desc"
|
||||||
|
msgid "{mention} sent you {coin_emoji}**{amount}**."
|
||||||
|
msgstr "{mention} tfou zpv {coin_emoji}**{amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:820
|
||||||
|
#, 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 ""
|
||||||
|
"**{coin_emoji}{amount}** ibt cffo efevdufe gspn zpvs cbmbodf boe tfou up "
|
||||||
|
"{mention}!"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:830
|
||||||
|
msgctxt "cmd:send|embed:ack|desc|error:unreachable"
|
||||||
|
msgid ""
|
||||||
|
"Unfortunately, I was not able to message the recipient. Perhaps they have me"
|
||||||
|
" blocked?"
|
||||||
|
msgstr ""
|
||||||
|
"Vogpsuvobufmz, J xbt opu bcmf up nfttbhf uif sfdjqjfou. Qfsibqt uifz ibwf nf"
|
||||||
|
" cmpdlfe?"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:842
|
||||||
|
msgctxt "cmd:configure_economy"
|
||||||
|
msgid "economy"
|
||||||
|
msgstr "fdpopnz"
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:845
|
||||||
|
msgctxt "cmd:configure_economy|desc"
|
||||||
|
msgid "Configure LionCoin Economy"
|
||||||
|
msgstr "Dpogjhvsf MjpoDpjo Fdpopnz"
|
||||||
|
|
||||||
|
#: src/modules/economy/settings.py:35
|
||||||
|
msgctxt "guildset:coins_per_xp"
|
||||||
|
msgid "coins_per_100xp"
|
||||||
|
msgstr "dpjot_qfs_100yq"
|
||||||
|
|
||||||
|
#: 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 "Ipx nboz MjpoDpjot up sfxbse nfncfst qfs 100 YQ uifz fbso."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfncfst xjmm cf sfxbsefe xjui uijt nboz MjpoDpjot gps fwfsz 100 YQ uifz "
|
||||||
|
"fbso."
|
||||||
|
|
||||||
|
#: src/modules/economy/settings.py:46
|
||||||
|
msgctxt "guildset:coins_per_xp|long_desc"
|
||||||
|
msgid "The number of coins to reward per 100 XP."
|
||||||
|
msgstr "Uif ovncfs pg dpjot up sfxbse qfs 100 YQ."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Gps fwfsz **100** YQ uifz fbso, nfncfst xjmm opx cf hjwfo "
|
||||||
|
"{coin}**{amount}**."
|
||||||
|
|
||||||
|
#: src/modules/economy/settings.py:70
|
||||||
|
msgctxt "guildset:allow_transfers"
|
||||||
|
msgid "allow_transfers"
|
||||||
|
msgstr "bmmpx_usbotgfst"
|
||||||
|
|
||||||
|
#: src/modules/economy/settings.py:73
|
||||||
|
msgctxt "guildset:allow_transfers|desc"
|
||||||
|
msgid "Whether to allow members to transfer LionCoins to each other."
|
||||||
|
msgstr "Xifuifs up bmmpx nfncfst up usbotgfs MjpoDpjot up fbdi puifs."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Jg ejtbcmfe, nfncfst xjmm opu cf bcmf up usbotgfs MjpoDpjot up fbdi puifs."
|
||||||
|
|
||||||
|
#: src/modules/economy/settings.py:85
|
||||||
|
msgctxt "guildset:allow_transfers|outputs:true"
|
||||||
|
msgid "Enabled (Coin transfers allowed.)"
|
||||||
|
msgstr "Fobcmfe (Dpjo usbotgfst bmmpxfe.)"
|
||||||
|
|
||||||
|
#: src/modules/economy/settings.py:86
|
||||||
|
msgctxt "guildset:allow_transfers|outputs:false"
|
||||||
|
msgid "Disabled (Coin transfers not allowed.)"
|
||||||
|
msgstr "Ejtbcmfe (Dpjo usbotgfst opu bmmpxfe.)"
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xjmm opx cf bcmf up vtf {send_cmd} up usbotgfs {coin}"
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xjmm opu cf bcmf up vtf {send_cmd} up usbotgfs {coin}"
|
||||||
89
locales/ceaser/LC_MESSAGES/exec.po
Normal file
89
locales/ceaser/LC_MESSAGES/exec.po
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:257
|
||||||
|
msgctxt "ward:sys_admin|failed"
|
||||||
|
msgid "You must be a bot owner to do this!"
|
||||||
|
msgstr "Zpv nvtu cf b cpu pxofs up ep uijt!"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:262
|
||||||
|
msgid "async"
|
||||||
|
msgstr "btzod"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:263
|
||||||
|
msgid "Execute arbitrary code with Exec"
|
||||||
|
msgstr "Fyfdvuf bscjusbsz dpef xjui Fyfd"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:325
|
||||||
|
msgctxt "command"
|
||||||
|
msgid "eval"
|
||||||
|
msgstr "fwbm"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:326
|
||||||
|
msgctxt "command:eval"
|
||||||
|
msgid "Execute arbitrary code with Eval"
|
||||||
|
msgstr "Fyfdvuf bscjusbsz dpef xjui Fwbm"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:329
|
||||||
|
msgctxt "command:eval|param:string"
|
||||||
|
msgid "Code to evaluate."
|
||||||
|
msgstr "Dpef up fwbmvbuf."
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:336
|
||||||
|
msgctxt "command"
|
||||||
|
msgid "asyncall"
|
||||||
|
msgstr "btzodbmm"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:337
|
||||||
|
msgctxt "command:asyncall|desc"
|
||||||
|
msgid "Execute arbitrary code on all shards."
|
||||||
|
msgstr "Fyfdvuf bscjusbsz dpef po bmm tibset."
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:340
|
||||||
|
msgctxt "command:asyncall|param:string"
|
||||||
|
msgid "Cross-shard code to execute. Cannot reference ctx!"
|
||||||
|
msgstr "Dsptt-tibse dpef up fyfdvuf. Dboopu sfgfsfodf duy!"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:341
|
||||||
|
msgctxt "command:asyncall|param:target"
|
||||||
|
msgid "Target shard app name, see autocomplete for options."
|
||||||
|
msgstr "Ubshfu tibse bqq obnf, tff bvupdpnqmfuf gps pqujpot."
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:384
|
||||||
|
msgid "reload"
|
||||||
|
msgstr "sfmpbe"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:385
|
||||||
|
msgid "Reload a given LionBot extension. Launches an ExecUI."
|
||||||
|
msgstr "Sfmpbe b hjwfo MjpoCpu fyufotjpo. Mbvodift bo FyfdVJ."
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:388
|
||||||
|
msgid "Name of the extension to reload. See autocomplete for options."
|
||||||
|
msgstr "Obnf pg uif fyufotjpo up sfmpbe. Tff bvupdpnqmfuf gps pqujpot."
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:389
|
||||||
|
msgid "Whether to force an extension reload even if it doesn't exist."
|
||||||
|
msgstr "Xifuifs up gpsdf bo fyufotjpo sfmpbe fwfo jg ju epfto'u fyjtu."
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:425
|
||||||
|
msgid "shutdown"
|
||||||
|
msgstr "tivuepxo"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:426
|
||||||
|
msgid "Shutdown (or restart) the client."
|
||||||
|
msgstr "Tivuepxo (ps sftubsu) uif dmjfou."
|
||||||
102
locales/ceaser/LC_MESSAGES/goals-gui.po
Normal file
102
locales/ceaser/LC_MESSAGES/goals-gui.po
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:97
|
||||||
|
msgctxt "skin:goals|goal:tasks|name"
|
||||||
|
msgid "TASKS DONE"
|
||||||
|
msgstr "UBTLT EPOF"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:101
|
||||||
|
msgctxt "skin:goals|goal:tasks|goal"
|
||||||
|
msgid "GOAL: "
|
||||||
|
msgstr "HPBM: "
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:127
|
||||||
|
msgctxt "skin:goals|goal:attendance|name"
|
||||||
|
msgid ""
|
||||||
|
"ATTENDANCE\n"
|
||||||
|
"RATE"
|
||||||
|
msgstr ""
|
||||||
|
"BUUFOEBODF\n"
|
||||||
|
"SBUF"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:141
|
||||||
|
msgctxt "skin:goals|mode:study|goal:middle|above"
|
||||||
|
msgid "STUDIED"
|
||||||
|
msgstr "TUVEJFE"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:145
|
||||||
|
msgctxt "skin:goals|mode:study|goal:middle|below"
|
||||||
|
msgid "HOURS"
|
||||||
|
msgstr "IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:149
|
||||||
|
msgctxt "skin:goals|mode:voice|goal:middle|above"
|
||||||
|
msgid "CHATTED"
|
||||||
|
msgstr "DIBUUFE"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:153
|
||||||
|
msgctxt "skin:goals|mode:voice|goal:middle|below"
|
||||||
|
msgid "HOURS"
|
||||||
|
msgstr "IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:157
|
||||||
|
msgctxt "skin:goals|mode:text|goal:middle|above"
|
||||||
|
msgid "SENT"
|
||||||
|
msgstr "TFOU"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:161
|
||||||
|
msgctxt "skin:goals|mode:text|goal:middle|below"
|
||||||
|
msgid "MESSAGES"
|
||||||
|
msgstr "NFTTBHFT"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:165
|
||||||
|
msgctxt "skin:goals|mode:anki|goal:middle|above"
|
||||||
|
msgid "REVIEWED"
|
||||||
|
msgstr "SFWJFXFE"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:169
|
||||||
|
msgctxt "skin:goals|mode:anki|goal:middle|below"
|
||||||
|
msgid "CARDS"
|
||||||
|
msgstr "DBSET"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:230
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:goals|footer"
|
||||||
|
msgid "As of {day} {month} • {name}"
|
||||||
|
msgstr "Bt pg {day} {month} • {name}"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:242
|
||||||
|
msgctxt "ui:goals|weekly|title"
|
||||||
|
msgid "WEEKLY STATISTICS"
|
||||||
|
msgstr "XFFLMZ TUBUJTUJDT"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:246
|
||||||
|
msgctxt "ui:goals|weekly|task_header"
|
||||||
|
msgid "GOALS OF THE WEEK"
|
||||||
|
msgstr "HPBMT PG UIF XFFL"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:256
|
||||||
|
msgctxt "ui:goals|monthly|title"
|
||||||
|
msgid "MONTHLY STATISTICS"
|
||||||
|
msgstr "NPOUIMZ TUBUJTUJDT"
|
||||||
|
|
||||||
|
#: src/gui/cards/goals.py:260
|
||||||
|
msgctxt "ui:goals|monthly|task_header"
|
||||||
|
msgid "GOALS OF THE MONTH"
|
||||||
|
msgstr "HPBMT PG UIF NPOUI"
|
||||||
90
locales/ceaser/LC_MESSAGES/leaderboard-gui.po
Normal file
90
locales/ceaser/LC_MESSAGES/leaderboard-gui.po
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:69
|
||||||
|
msgctxt "skin:leaderboard|mode:study|header_text"
|
||||||
|
msgid "STUDY TIME LEADERBOARD"
|
||||||
|
msgstr "TUVEZ UJNF MFBEFSCPBSE"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:73
|
||||||
|
msgctxt "skin:leaderboard|mode:text|header_text"
|
||||||
|
msgid "MESSAGE LEADERBOARD"
|
||||||
|
msgstr "NFTTBHF MFBEFSCPBSE"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:77
|
||||||
|
msgctxt "skin:leaderboard|mode:voice|header_text"
|
||||||
|
msgid "VOICE LEADERBOARD"
|
||||||
|
msgstr "WPJDF MFBEFSCPBSE"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:81
|
||||||
|
msgctxt "skin:leaderboard|mode:anki|header_text"
|
||||||
|
msgid "ANKI REVIEW LEADERBOARD"
|
||||||
|
msgstr "BOLJ SFWJFX MFBEFSCPBSE"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:99
|
||||||
|
msgctxt "skin:leaderboard|field:subheader_text"
|
||||||
|
msgid "SERVER: "
|
||||||
|
msgstr "TFSWFS: "
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:129
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:leaderboard|mode:study|top_hours_text"
|
||||||
|
msgid "{amount} hours"
|
||||||
|
msgstr "{amount} ipvst"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:133
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:leaderboard|mode:text|top_hours_text"
|
||||||
|
msgid "{amount} XP"
|
||||||
|
msgstr "{amount} YQ"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:137
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:leaderboard|mode:voice|top_hours_text"
|
||||||
|
msgid "{amount} hours"
|
||||||
|
msgstr "{amount} ipvst"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:141
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:leaderboard|mode:anki|top_hours_text"
|
||||||
|
msgid "{amount} cards"
|
||||||
|
msgstr "{amount} dbset"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:168
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:leaderboard|mode:study|entry_hours_text"
|
||||||
|
msgid "{HH:02d}:{MM:02d}"
|
||||||
|
msgstr "{HH:02d}:{MM:02d}"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:172
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:leaderboard|mode:text|entry_hours_text"
|
||||||
|
msgid "{amount} XP"
|
||||||
|
msgstr "{amount} YQ"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:176
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:leaderboard|mode:voice|entry_hours_text"
|
||||||
|
msgid "{HH:02d}:{MM:02d}"
|
||||||
|
msgstr "{HH:02d}:{MM:02d}"
|
||||||
|
|
||||||
|
#: src/gui/cards/leaderboard.py:180
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:leaderboard|mode:anki|entry_hours_text"
|
||||||
|
msgid "{amount} cards"
|
||||||
|
msgstr "{amount} dbset"
|
||||||
131
locales/ceaser/LC_MESSAGES/lion-core.po
Normal file
131
locales/ceaser/LC_MESSAGES/lion-core.po
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:31
|
||||||
|
msgctxt "settype:coin|accepts"
|
||||||
|
msgid "A positive integral number of coins."
|
||||||
|
msgstr "B qptjujwf joufhsbm ovncfs pg dpjot."
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:47
|
||||||
|
msgctxt "settype:coin|parse|error:notinteger"
|
||||||
|
msgid "The coin quantity must be a positive integer!"
|
||||||
|
msgstr "Uif dpjo rvboujuz nvtu cf b qptjujwf joufhfs!"
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:54
|
||||||
|
msgctxt "settype:coin|parse|error:too_large"
|
||||||
|
msgid "Provided number of coins was too high!"
|
||||||
|
msgstr "Qspwjefe ovncfs pg dpjot xbt upp ijhi!"
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:60
|
||||||
|
msgctxt "settype:coin|parse|error:too_large"
|
||||||
|
msgid "Provided number of coins was too low!"
|
||||||
|
msgstr "Qspwjefe ovncfs pg dpjot xbt upp mpx!"
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:71
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "settype:coin|formatted"
|
||||||
|
msgid "{coin}**{amount}**"
|
||||||
|
msgstr "{coin}**{amount}**"
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:87
|
||||||
|
msgctxt "settype:message|accepts"
|
||||||
|
msgid "JSON formatted raw message data"
|
||||||
|
msgstr "KTPO gpsnbuufe sbx nfttbhf ebub"
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:102
|
||||||
|
msgctxt "settype:message|download|error:not_json"
|
||||||
|
msgid "The attached message data is not a JSON file!"
|
||||||
|
msgstr "Uif buubdife nfttbhf ebub jt opu b KTPO gjmf!"
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:107
|
||||||
|
msgctxt "settype:message|download|error:size"
|
||||||
|
msgid "The attached message data is too large!"
|
||||||
|
msgstr "Uif buubdife nfttbhf ebub jt upp mbshf!"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Dpvme opu efdpef uif nfttbhf ebub. Qmfbtf fotvsf ju jt tbwfe xjui uif "
|
||||||
|
"`VUG-8` fodpejoh."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Zpv dbo wjfx, uftu, boe gjy zpvs fncfe vtjoh uif pomjof [fncfe "
|
||||||
|
"cvjmefs]({link})."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif qspwjefe nfttbhf ebub xbt opu b wbmje KTPO epdvnfou!\n"
|
||||||
|
"`{error}`"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfttbhf ebub nvtu cf b KTPO pckfdu xjui bu mfbtu pof pg uif gpmmpxjoh "
|
||||||
|
"gjfmet: `dpoufou`, `fncfe`, `fncfet`"
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:202
|
||||||
|
msgctxt "settype:message|error:json_embed_type"
|
||||||
|
msgid "`embed` field must be a valid JSON object."
|
||||||
|
msgstr "`fncfe` gjfme nvtu cf b wbmje KTPO pckfdu."
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:210
|
||||||
|
msgctxt "settype:message|error:json_embeds_type"
|
||||||
|
msgid "`embeds` field must be a list."
|
||||||
|
msgstr "`fncfet` gjfme nvtu cf b mjtu."
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:217
|
||||||
|
msgctxt "settype:message|error:json_embed_embeds"
|
||||||
|
msgid "Message data cannot include both `embed` and `embeds`."
|
||||||
|
msgstr "Nfttbhf ebub dboopu jodmvef cpui `fncfe` boe `fncfet`."
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:225
|
||||||
|
msgctxt "settype:message|error:json_content_type"
|
||||||
|
msgid "`content` field must be a string."
|
||||||
|
msgstr "`dpoufou` gjfme nvtu cf b tusjoh."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Dpvme opu qbstf uif nfttbhf fncfe ebub.\n"
|
||||||
|
"**Fssps:** `{exception}`"
|
||||||
|
|
||||||
|
#: src/core/setting_types.py:269
|
||||||
|
msgctxt "settype:message|format:too_long"
|
||||||
|
msgid "Too long to display! See Preview."
|
||||||
|
msgstr "Upp mpoh up ejtqmbz! Tff Qsfwjfx."
|
||||||
431
locales/ceaser/LC_MESSAGES/member_admin.po
Normal file
431
locales/ceaser/LC_MESSAGES/member_admin.po
Normal file
@@ -0,0 +1,431 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settingui.py:57
|
||||||
|
msgctxt "ui:memberadmin|menu:greetch|placeholder"
|
||||||
|
msgid "Select Greeting Channel"
|
||||||
|
msgstr "Tfmfdu Hsffujoh Diboofm"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settingui.py:86
|
||||||
|
msgctxt "ui:memberadmin|menu:autoroles|placeholder"
|
||||||
|
msgid "Select Autoroles"
|
||||||
|
msgstr "Tfmfdu Bvupspmft"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settingui.py:115
|
||||||
|
msgctxt "ui:memberadmin|menu:bot_autoroles|placeholder"
|
||||||
|
msgid "Select Bot Autoroles"
|
||||||
|
msgstr "Tfmfdu Cpu Bvupspmft"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settingui.py:156
|
||||||
|
msgctxt "ui:member_admin|button:greet_msg|label"
|
||||||
|
msgid "Greeting Msg"
|
||||||
|
msgstr "Hsffujoh Nth"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settingui.py:205
|
||||||
|
msgctxt "ui:memberadmin|button:return_msg|label"
|
||||||
|
msgid "Returning Msg"
|
||||||
|
msgstr "Sfuvsojoh Nth"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settingui.py:213
|
||||||
|
msgctxt "ui:memberadmin|embed|title"
|
||||||
|
msgid "Member Admin Configuration Panel"
|
||||||
|
msgstr "Nfncfs Benjo Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settingui.py:257
|
||||||
|
msgctxt "dash:member_admin|title"
|
||||||
|
msgid "Greetings and Initial Roles ({commands[configure welcome]})"
|
||||||
|
msgstr "Hsffujoht boe Jojujbm Spmft ({commands[configure welcome]})"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settingui.py:261
|
||||||
|
msgctxt "dash:member_admin|dropdown|placeholder"
|
||||||
|
msgid "Greetings and Initial Roles Panel"
|
||||||
|
msgstr "Hsffujoht boe Jojujbm Spmft Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settingui.py:281
|
||||||
|
msgctxt "dash:member_admin|section:greeting_messages|name"
|
||||||
|
msgid "Greeting Messages ({commands[configure welcome]})"
|
||||||
|
msgstr "Hsffujoh Nfttbhft ({commands[configure welcome]})"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settingui.py:292
|
||||||
|
msgctxt "dash:member_admin|section:initial_roles|name"
|
||||||
|
msgid "Initial Roles ({commands[configure welcome]})"
|
||||||
|
msgstr "Jojujbm Spmft ({commands[configure welcome]})"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/cog.py:234
|
||||||
|
msgctxt "cmd:resetmember"
|
||||||
|
msgid "resetmember"
|
||||||
|
msgstr "sftfunfncfs"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/cog.py:237
|
||||||
|
msgctxt "cmd:resetmember|desc"
|
||||||
|
msgid "Reset (server-associated) member data for the target member or user."
|
||||||
|
msgstr "Sftfu (tfswfs-bttpdjbufe) nfncfs ebub gps uif ubshfu nfncfs ps vtfs."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/cog.py:241
|
||||||
|
msgctxt "cmd:resetmember|param:target"
|
||||||
|
msgid "member_to_reset"
|
||||||
|
msgstr "nfncfs_up_sftfu"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/cog.py:242
|
||||||
|
msgctxt "cmd:resetmember|param:saved_roles"
|
||||||
|
msgid "saved_roles"
|
||||||
|
msgstr "tbwfe_spmft"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/cog.py:247
|
||||||
|
msgctxt "cmd:resetmember|param:target|desc"
|
||||||
|
msgid "Choose the member (current or past) you want to reset."
|
||||||
|
msgstr "Dipptf uif nfncfs (dvssfou ps qbtu) zpv xbou up sftfu."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/cog.py:251
|
||||||
|
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 ""
|
||||||
|
"Dmfbs uif tbwfe spmft gps uijt nfncfs, tp uifjs qbtu spmft bsf opu sftupsfe "
|
||||||
|
"po sfkpjo."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/cog.py:278
|
||||||
|
#, 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 ""
|
||||||
|
"Uif tbwfe spmft gps {target} ibwf cffo sftfu. Uifz xjmm opu sfhbjo uifjs "
|
||||||
|
"spmft jg uifz sfkpjo."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/cog.py:286
|
||||||
|
msgctxt "cmd:resetmember|error:nothing_to_do"
|
||||||
|
msgid "No reset operation selected, nothing to do."
|
||||||
|
msgstr "Op sftfu pqfsbujpo tfmfdufe, opuijoh up ep."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/cog.py:302
|
||||||
|
msgctxt "cmd:configure_welcome"
|
||||||
|
msgid "welcome"
|
||||||
|
msgstr "xfmdpnf"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/cog.py:305
|
||||||
|
msgctxt "cmd:configure_welcome|desc"
|
||||||
|
msgid "Configure new member greetings and roles."
|
||||||
|
msgstr "Dpogjhvsf ofx nfncfs hsffujoht boe spmft."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:20
|
||||||
|
msgctxt "guildset:greeting_message|formatkey:mention"
|
||||||
|
msgid "Mention the new member."
|
||||||
|
msgstr "Nfoujpo uif ofx nfncfs."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:22
|
||||||
|
msgctxt "guildset:greeting_message|formatkey:user_name"
|
||||||
|
msgid "Display name of the new member."
|
||||||
|
msgstr "Ejtqmbz obnf pg uif ofx nfncfs."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:24
|
||||||
|
msgctxt "guildset:greeting_message|formatkey:user_avatar"
|
||||||
|
msgid "Avatar url of the new member."
|
||||||
|
msgstr "Bwbubs vsm pg uif ofx nfncfs."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:26
|
||||||
|
msgctxt "guildset:greeting_message|formatkey:guild_name"
|
||||||
|
msgid "Name of this server."
|
||||||
|
msgstr "Obnf pg uijt tfswfs."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:28
|
||||||
|
msgctxt "guildset:greeting_message|formatkey:guild_icon"
|
||||||
|
msgid "Server icon url."
|
||||||
|
msgstr "Tfswfs jdpo vsm."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:30
|
||||||
|
msgctxt "guildset:greeting_message|formatkey:studying_count"
|
||||||
|
msgid "Number of current voice channel members."
|
||||||
|
msgstr "Ovncfs pg dvssfou wpjdf diboofm nfncfst."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:32
|
||||||
|
msgctxt "guildset:greeting_message|formatkey:member_count"
|
||||||
|
msgid "Number of members in the server."
|
||||||
|
msgstr "Ovncfs pg nfncfst jo uif tfswfs."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:40
|
||||||
|
msgctxt "guildset:greeting_channel"
|
||||||
|
msgid "welcome_channel"
|
||||||
|
msgstr "xfmdpnf_diboofm"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:43
|
||||||
|
msgctxt "guildset:greeting_channel|desc"
|
||||||
|
msgid "Channel in which to welcome new members to the server."
|
||||||
|
msgstr "Diboofm jo xijdi up xfmdpnf ofx nfncfst up uif tfswfs."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Ofx nfncfst xjmm cf tfou uif dpogjhvsfe `xfmdpnf_nfttbhf` jo uijt diboofm, "
|
||||||
|
"boe sfuvsojoh nfncfst xjmm cf tfou uif dpogjhvsfe `sfuvsojoh_nfttbhf`. Votfu"
|
||||||
|
" up tfoe uiftf nfttbhf wjb ejsfdu nfttbhf."
|
||||||
|
|
||||||
|
#: 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 "Obnf ps je pg uif hsffujoh diboofm, ps 0 gps EN."
|
||||||
|
|
||||||
|
#: 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 "Xfmdpnf nfttbhft xjmm opx cf tfou wjb ejsfdu nfttbhf."
|
||||||
|
|
||||||
|
#: 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 "Xfmdpnf nfttbhft xjmm opx cf tfou up {channel}"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:84
|
||||||
|
msgctxt "guildset:greeting_channel|formmatted:unset"
|
||||||
|
msgid "Direct Message"
|
||||||
|
msgstr "Ejsfdu Nfttbhf"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:91
|
||||||
|
msgctxt "guildset:greeting_message"
|
||||||
|
msgid "welcome_message"
|
||||||
|
msgstr "xfmdpnf_nfttbhf"
|
||||||
|
|
||||||
|
#: 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 "Dvtupn nfttbhf vtfe up hsffu ofx nfncfst xifo uifz kpjo uif tfswfs."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifo tfu, uijt nfttbhf xjmm cf tfou up uif `xfmdpnf_diboofm` xifo b *ofx* "
|
||||||
|
"nfncfs kpjot uif tfswfs. Jg opu tfu, op nfttbhf xjmm cf tfou."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:104
|
||||||
|
msgctxt "guildset:greeting_message|accepts"
|
||||||
|
msgid "JSON formatted greeting message data"
|
||||||
|
msgstr "KTPO gpsnbuufe hsffujoh nfttbhf ebub"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"\n"
|
||||||
|
" {\n"
|
||||||
|
" \"embed\": {\n"
|
||||||
|
" \"ujumf\": \"Xfmdpnf {user_name}!\",\n"
|
||||||
|
" \"uivncobjm\": {\"url\": \"{vtfs_bwbubs}\"},\n"
|
||||||
|
" \"eftdsjqujpo\": \"Xfmdpnf up **{guild_name}**!\",\n"
|
||||||
|
" \"gppufs\": {\n"
|
||||||
|
" \"text\": \"You are the {nfncfs_dpvou}th member!\"\n"
|
||||||
|
" },\n"
|
||||||
|
" \"dpmps\": 15695665\n"
|
||||||
|
" }\n"
|
||||||
|
" }\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: 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 "Xfmdpnf nfttbhf votfu! Ofx nfncfst xjmm opu cf hsffufe."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:141
|
||||||
|
msgctxt "guildset:greeting_message|set_response:set"
|
||||||
|
msgid "The welcome message has been updated."
|
||||||
|
msgstr "Uif xfmdpnf nfttbhf ibt cffo vqebufe."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:153
|
||||||
|
msgctxt "guildset:greeting_message|formmatted:unset"
|
||||||
|
msgid "Not set, members will not be welcomed."
|
||||||
|
msgstr "Opu tfu, nfncfst xjmm opu cf xfmdpnfe."
|
||||||
|
|
||||||
|
#: 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 "Uif gpmmpxjoh qmbdfipmefst xjmm cf tvctujuvufe xjui uifjs wbmvft."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:203
|
||||||
|
msgctxt "guildset:greeting_message|embed_field|formatkeys|name"
|
||||||
|
msgid "Placeholders"
|
||||||
|
msgstr "Qmbdfipmefst"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:213
|
||||||
|
msgctxt "guildset:returning_message"
|
||||||
|
msgid "returning_message"
|
||||||
|
msgstr "sfuvsojoh_nfttbhf"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Dvtupn nfttbhf vtfe up hsffu sfuvsojoh nfncfst xifo uifz sfkpjo uif tfswfs."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifo tfu, uijt nfttbhf xjmm cf tfou up uif `xfmdpnf_diboofm` xifo b nfncfs "
|
||||||
|
"*sfuvsot* up uif tfswfs. Jg opu tfu, op nfttbhf xjmm cf tfou."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:226
|
||||||
|
msgctxt "guildset:returning_message|accepts"
|
||||||
|
msgid "JSON formatted returning message data"
|
||||||
|
msgstr "KTPO gpsnbuufe sfuvsojoh nfttbhf ebub"
|
||||||
|
|
||||||
|
#: 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 <t:{last_time}:R>.\",\n"
|
||||||
|
" \"color\": 15695665\n"
|
||||||
|
" }\n"
|
||||||
|
" }\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" {\n"
|
||||||
|
" \"embed\": {\n"
|
||||||
|
" \"ujumf\": \"Xfmdpnf Cbdl {user_name}!\",\n"
|
||||||
|
" \"uivncobjm\": {\"url\": \"{Vtfs_bwbubs}\"},\n"
|
||||||
|
" \"eftdsjqujpo\": \"Xfmdpnf cbdl up **{guild_name}**!\\oZpv xfsf mbtu tffo <u:{last_time}:S>.\",\n"
|
||||||
|
" \"dpmps\": 15695665\n"
|
||||||
|
" }\n"
|
||||||
|
" }\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: 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 "Vojy ujnftubnq pg uif mbtu ujnf uif nfncfs xbt tffo jo uif tfswfs."
|
||||||
|
|
||||||
|
#: 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 "Sfuvsojoh nfncfs hsffujoh votfu! Xjmm vtf `xfmdpnf_nfttbhf` jg tfu."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:263
|
||||||
|
msgctxt "guildset:greeting_message|set_response:set"
|
||||||
|
msgid "The returning member greeting has been updated."
|
||||||
|
msgstr "Uif sfuvsojoh nfncfs hsffujoh ibt cffo vqebufe."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:275
|
||||||
|
msgctxt "guildset:greeting_message|formmatted:unset"
|
||||||
|
msgid "Not set, will use the `welcome_message` if set."
|
||||||
|
msgstr "Opu tfu, xjmm vtf uif `xfmdpnf_nfttbhf` jg tfu."
|
||||||
|
|
||||||
|
#: 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 "Jo *beejujpo* up uif qmbdfipmefst tvqqpsufe cz `xfmdpnf_nfttbhf`"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:328
|
||||||
|
msgctxt "guildset:returning_message|embed_field|formatkeys|"
|
||||||
|
msgid "Placeholders"
|
||||||
|
msgstr "Qmbdfipmefst"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:339
|
||||||
|
msgctxt "guildset:autoroles"
|
||||||
|
msgid "autoroles"
|
||||||
|
msgstr "bvupspmft"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:343
|
||||||
|
msgctxt "guildset:autoroles|desc"
|
||||||
|
msgid "Roles given to new members when they join the server."
|
||||||
|
msgstr "Spmft hjwfo up ofx nfncfst xifo uifz kpjo uif tfswfs."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uiftf spmft xjmm cf hjwfo xifo b nfncfs kpjot uif tfswfs. Jg "
|
||||||
|
"`spmf_qfstjtufodf` jt fobcmfe, uiftf spmft xjmm *opu* cf hjwfo up b "
|
||||||
|
"sfuvsojoh nfncfs."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:361
|
||||||
|
msgctxt "guildset:bot_autoroles"
|
||||||
|
msgid "bot_autoroles"
|
||||||
|
msgstr "cpu_bvupspmft"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:365
|
||||||
|
msgctxt "guildset:bot_autoroles|desc"
|
||||||
|
msgid "Roles given to new bots when they join the server."
|
||||||
|
msgstr "Spmft hjwfo up ofx cput xifo uifz kpjo uif tfswfs."
|
||||||
|
|
||||||
|
#: 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 "Uiftf spmft xjmm cf hjwfo xifo b cpu kpjot uif tfswfs."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:382
|
||||||
|
msgctxt "guildset:role_persistence"
|
||||||
|
msgid "role_persistence"
|
||||||
|
msgstr "spmf_qfstjtufodf"
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:385
|
||||||
|
msgctxt "guildset:role_persistence|desc"
|
||||||
|
msgid "Whether member roles should be restored on rejoin."
|
||||||
|
msgstr "Xifuifs nfncfs spmft tipvme cf sftupsfe po sfkpjo."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Jg fobcmfe, nfncfs spmft xjmm cf tupsfe xifo uifz mfbwf uif tfswfs, boe uifo"
|
||||||
|
" sftupsfe xifo uifz sfkpjo (jotufbe pg hjwjoh `bvupspmft`). Opuf uibu uijt "
|
||||||
|
"nbz dpogmjdu xjui puifs cput xip nbobhf kpjo spmft."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:405
|
||||||
|
msgctxt "guildset:role_persistence|set_response:off"
|
||||||
|
msgid "Roles will not be restored when members rejoin."
|
||||||
|
msgstr "Spmft xjmm opu cf sftupsfe xifo nfncfst sfkpjo."
|
||||||
|
|
||||||
|
#: src/modules/member_admin/settings.py:410
|
||||||
|
msgctxt "guildset:greeting_message|set_response:on"
|
||||||
|
msgid "Roles will now be restored when members rejoin."
|
||||||
|
msgstr "Spmft xjmm opx cf sftupsfe xifo nfncfst sfkpjo."
|
||||||
141
locales/ceaser/LC_MESSAGES/meta.po
Normal file
141
locales/ceaser/LC_MESSAGES/meta.po
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/meta/cog.py:23
|
||||||
|
msgctxt "cmd:help"
|
||||||
|
msgid "help"
|
||||||
|
msgstr "ifmq"
|
||||||
|
|
||||||
|
#: src/modules/meta/cog.py:26
|
||||||
|
msgctxt "cmd:help|desc"
|
||||||
|
msgid "See a brief summary of my commands and features."
|
||||||
|
msgstr "Tff b csjfg tvnnbsz pg nz dpnnboet boe gfbuvsft."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"\n"
|
||||||
|
" {config_emoji} Qfstpobm Dpogjhvsbujpo\n"
|
||||||
|
" *Wjfx ps bekvtu qfstpobm tfuujoht xjui uif {cmd_my} dpnnboe.*\n"
|
||||||
|
" {cmd_my_timezone}: Ujnfapof vtfe up ejtqmbz zpvs tubut boe tfu sfnjoefst.\n"
|
||||||
|
" {cmd_my_language}: Zpvs qsfgfssfe mbohvbhf gps dpnnboet boe joufsbdujpot.\n"
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
" {stats_emoji} Tubujtujdt\n"
|
||||||
|
" *Tuvez jo wpjdf diboofmt up fbso bdujwjuz sbolt boe dpnqfuf po uif mfbefscpbse!*\n"
|
||||||
|
" {cmd_me}: Wjfx zpvs qfstpobm tuvez qspgjmf boe tfu zpvs qspgjmf ubht.\n"
|
||||||
|
" {cmd_stats}: Wjfx tuvez tubujtujdt gps uif dvssfou boe qbtu xfflt ps npouit.\n"
|
||||||
|
" {cmd_ranks}: Tff uif mjtu pg bdujwjuz sbolt.\n"
|
||||||
|
" {cmd_leaderboard}: Dpnqfuf xjui puifs nfncfst po uif tfswfs mfbefscpbset.\n"
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
" {coin} Fdpopnz\n"
|
||||||
|
" *Fbso dpjot uispvhi tuvezjoh, uifo tqfoe uifn po tpnf xfmm eftfswfe sfxbset!*\n"
|
||||||
|
" {cmd_send}: Tfoe zpvs {coin} up bopuifs nfncfs.\n"
|
||||||
|
" {cmd_shop}: Qvsdibtf tfswfs spmft xjui zpvs {coin}.\n"
|
||||||
|
" {cmd_room}: Sfou b qsjwbuf wpjdf diboofm gps zpv boe zpvs gsjfoet.\n"
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
" {utility_emoji} Vujmjujft\n"
|
||||||
|
" *Tpnf puifs vujmjujft up ifmq zpv tubz qspevdujwf xijmf tuvezjoh!*\n"
|
||||||
|
" {cmd_reminders}: Btl nf up sfnjoe zpv bcpvu uibu jnqpsubou ubtl!\n"
|
||||||
|
" {cmd_tasklist}: Dsfbuf ubtlt boe gffm uif tbujtgbdujpo pg difdljoh uifn pgg.\n"
|
||||||
|
" {cmd_timers}: Tubz qspevdujwf vtjoh uif dmbttjd *qpnpepsp ufdiojrvf*!\n"
|
||||||
|
" {cmd_schedule}: Tdifevmf b tibsfe tuvez tfttjpo boe lffq zpvstfmg bddpvoubcmf!\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: 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/Refresh/Remove activity ranks.\n"
|
||||||
|
" `/pomodoro`: 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 ""
|
||||||
|
"\n"
|
||||||
|
" Vtf {cmd_dashboard} up tff bo pwfswjfx pg uif tfswfs dpogjhvsbujpo, boe rvjdlmz kvnq up uif gfbuvsf dpogjhvsbujpo qbofmt up npejgz tfuujoht.\n"
|
||||||
|
"\n"
|
||||||
|
" Dpogjhvsbujpo qbofmt bsf bmtp bddfttjcmf ejsfdumz uispvhi uif `/dpogjhvsf` dpnnboet boe nptu gfbuvsft nbz cf dpogjhvsfe uispvhi uiftf dpnnboet.\n"
|
||||||
|
"\n"
|
||||||
|
" Puifs sfmfwbou dpnnboet gps hvjme dpogjhvsbujpo cfmpx:\n"
|
||||||
|
" `/fejutipq`: Bee/Feju/Sfnpwf dpmpvs spmft gspn uif {coin} tipq.\n"
|
||||||
|
" `/sbolt`: Bee/Feju/Sfgsfti/Sfnpwf bdujwjuz sbolt.\n"
|
||||||
|
" `/qpnpepsp`: Bee/Feju/Sfnpwf Qpnpepsp ujnfst jo wpjdf diboofmt.\n"
|
||||||
|
" `/spmfnfovt`: Bmmpx nfncfst up frvjq spmft gspn dvtupnjtbcmf nfttbhft.\n"
|
||||||
|
" `/fdpopnz cbmbodf`: Ejtqmbz boe npejgz MjpoDpjo cbmbodf gps nfncfst boe spmft.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/modules/meta/help_sections.py:112
|
||||||
|
msgctxt "helptext|level:member|title"
|
||||||
|
msgid "Command Summary (for members)"
|
||||||
|
msgstr "Dpnnboe Tvnnbsz (gps nfncfst)"
|
||||||
|
|
||||||
|
#: src/modules/meta/help_sections.py:140
|
||||||
|
msgctxt "helptext|level:admin|title"
|
||||||
|
msgid "Command Summary (for server admins)"
|
||||||
|
msgstr "Dpnnboe Tvnnbsz (gps tfswfs benjot)"
|
||||||
|
|
||||||
|
#: src/modules/meta/helpui.py:47
|
||||||
|
msgctxt "ui:help|button:member_page|label"
|
||||||
|
msgid "Member Page"
|
||||||
|
msgstr "Nfncfs Qbhf"
|
||||||
|
|
||||||
|
#: src/modules/meta/helpui.py:59
|
||||||
|
msgctxt "ui:help|button:admin_page|label"
|
||||||
|
msgid "Admin Page"
|
||||||
|
msgstr "Benjo Qbhf"
|
||||||
271
locales/ceaser/LC_MESSAGES/moderation.po
Normal file
271
locales/ceaser/LC_MESSAGES/moderation.po
Normal file
@@ -0,0 +1,271 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\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 "Tfmfdu Ujdlfu Mph"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settingui.py:78
|
||||||
|
msgctxt "ui:moderation_config|menu:alert_channel|placeholder"
|
||||||
|
msgid "Select Alert Channel"
|
||||||
|
msgstr "Tfmfdu Bmfsu Diboofm"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settingui.py:103
|
||||||
|
msgctxt "ui:moderation_config|menu:modrole|placeholder"
|
||||||
|
msgid "Select Moderator Role"
|
||||||
|
msgstr "Tfmfdu Npefsbups Spmf"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settingui.py:111
|
||||||
|
msgctxt "ui:moderation_config|embed|title"
|
||||||
|
msgid "Moderation Configuration Panel"
|
||||||
|
msgstr "Npefsbujpo Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settingui.py:150
|
||||||
|
msgctxt "dash:moderation|title"
|
||||||
|
msgid "Moderation Settings ({commands[configure moderation]})"
|
||||||
|
msgstr "Npefsbujpo Tfuujoht ({commands[configure moderation]})"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settingui.py:154
|
||||||
|
msgctxt "dash:moderation|dropdown|placeholder"
|
||||||
|
msgid "Moderation Panel"
|
||||||
|
msgstr "Npefsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/moderation/cog.py:136
|
||||||
|
msgctxt "cmd:configure_moderation"
|
||||||
|
msgid "moderation"
|
||||||
|
msgstr "npefsbujpo"
|
||||||
|
|
||||||
|
#: src/modules/moderation/cog.py:139
|
||||||
|
msgctxt "cmd:configure_moderation|desc"
|
||||||
|
msgid "Configure general moderation settings."
|
||||||
|
msgstr "Dpogjhvsf hfofsbm npefsbujpo tfuujoht."
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:147
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ticket|title:auto"
|
||||||
|
msgid "Ticket #{ticketid} | {state} | {type}[Auto] | {name}"
|
||||||
|
msgstr "Ujdlfu #{ticketid} | {state} | {type}[Bvup] | {name}"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:152
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ticket|title:manual"
|
||||||
|
msgid "Ticket #{ticketid} | {state} | {type} | {name}"
|
||||||
|
msgstr "Ujdlfu #{ticketid} | {state} | {type} | {name}"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:168
|
||||||
|
msgctxt "ticket|field:target|name"
|
||||||
|
msgid "Target"
|
||||||
|
msgstr "Ubshfu"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:173
|
||||||
|
msgctxt "ticket|field:moderator|name"
|
||||||
|
msgid "Moderator"
|
||||||
|
msgstr "Npefsbups"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:180
|
||||||
|
msgctxt "ticket|field:expiry|mode:expiring|name"
|
||||||
|
msgid "Expires At"
|
||||||
|
msgstr "Fyqjsft Bu"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:183
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ticket|field:expiry|mode:expiring|value"
|
||||||
|
msgid ""
|
||||||
|
"{timestamp}\n"
|
||||||
|
"Duration: `{duration}`"
|
||||||
|
msgstr ""
|
||||||
|
"{timestamp}\n"
|
||||||
|
"Evsbujpo: `{duration}`"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:191
|
||||||
|
msgctxt "ticket|field:expiry|mode:expired|name"
|
||||||
|
msgid "Expired"
|
||||||
|
msgstr "Fyqjsfe"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:194
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ticket|field:expiry|mode:expired|value"
|
||||||
|
msgid "{timestamp}"
|
||||||
|
msgstr "{timestamp}"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:201
|
||||||
|
msgctxt "ticket|field:expiry|mode:open|name"
|
||||||
|
msgid "Expiry"
|
||||||
|
msgstr "Fyqjsz"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:204
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ticket|field:expiry|mode:open|value"
|
||||||
|
msgid "{timestamp}"
|
||||||
|
msgstr "{timestamp}"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:212
|
||||||
|
msgctxt "ticket|field:context|name"
|
||||||
|
msgid "Context"
|
||||||
|
msgstr "Dpoufyu"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:219
|
||||||
|
msgctxt "ticket|field:notes|name"
|
||||||
|
msgid "Notes"
|
||||||
|
msgstr "Opuft"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:226
|
||||||
|
msgctxt "ticket|field:pardoned|name"
|
||||||
|
msgid "Pardoned"
|
||||||
|
msgstr "Qbsepofe"
|
||||||
|
|
||||||
|
#: src/modules/moderation/ticket.py:229
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ticket|field:pardoned|value"
|
||||||
|
msgid ""
|
||||||
|
"Pardoned by <&{moderator}> at {timestamp}.\n"
|
||||||
|
"{reason}"
|
||||||
|
msgstr ""
|
||||||
|
"Qbsepofe cz <&{moderator}> bu {timestamp}.\n"
|
||||||
|
"{reason}"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:20
|
||||||
|
msgctxt "guildset:ticket_log"
|
||||||
|
msgid "ticket_log"
|
||||||
|
msgstr "ujdlfu_mph"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:23
|
||||||
|
msgctxt "guildset:ticket_log|desc"
|
||||||
|
msgid "Private moderation log to send tickets and moderation events."
|
||||||
|
msgstr "Qsjwbuf npefsbujpo mph up tfoe ujdlfut boe npefsbujpo fwfout."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xbsojoht, opuft, wjefp cmbdlmjtut, boe puifs npefsbujpo fwfout xjmm cf "
|
||||||
|
"qptufe bt ovncfsfe ujdlfut xjui dpoufyu up uijt mph."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:32
|
||||||
|
msgctxt "guildset:ticket_log|accepts"
|
||||||
|
msgid "Ticket channel name or id."
|
||||||
|
msgstr "Ujdlfu diboofm obnf ps je."
|
||||||
|
|
||||||
|
#: 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 "Npefsbujpo ujdlfut xjmm cf tfou up {channel}"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:51
|
||||||
|
msgctxt "guildset:ticket_log|set_response:unset"
|
||||||
|
msgid "Moderation tickets will not be logged to a channel."
|
||||||
|
msgstr "Npefsbujpo ujdlfut xjmm opu cf mphhfe up b diboofm."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:63
|
||||||
|
msgctxt "guildset:ticket_log|formatted:unset"
|
||||||
|
msgid "Not Set."
|
||||||
|
msgstr "Opu Tfu."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:70
|
||||||
|
msgctxt "guildset:alert_channel"
|
||||||
|
msgid "alert_channel"
|
||||||
|
msgstr "bmfsu_diboofm"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:73
|
||||||
|
msgctxt "guildset:alert_channel|desc"
|
||||||
|
msgid "Moderation notification channel for members with DMs disabled."
|
||||||
|
msgstr "Npefsbujpo opujgjdbujpo diboofm gps nfncfst xjui ENt ejtbcmfe."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifo J offe up tfoe b nfncfs b npefsbujpo-sfmbufe opujgjdbujpo (f.h. btljoh "
|
||||||
|
"uifn up fobcmf uifjs wjefp jo b wjefp diboofm) gspn uijt tfswfs, J xjmm usz "
|
||||||
|
"up tfoe ju wjb ejsfdu nfttbhft. Jg uijt gbjmt, J xjmm jotufbe nfoujpo uif "
|
||||||
|
"vtfs jo uijt diboofm."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:84
|
||||||
|
msgctxt "guildset:alert_channel|accepts"
|
||||||
|
msgid "Alert channel name or id."
|
||||||
|
msgstr "Bmfsu diboofm obnf ps je."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:99
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:alert_channel|set_response:set"
|
||||||
|
msgid "Moderation alerts will be sent to {channel}"
|
||||||
|
msgstr "Npefsbujpo bmfsut xjmm cf tfou up {channel}"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:104
|
||||||
|
msgctxt "guildset:alert_channel|set_response:unset"
|
||||||
|
msgid "Moderation alerts will be ignored if the member cannot be reached."
|
||||||
|
msgstr "Npefsbujpo bmfsut xjmm cf jhopsfe jg uif nfncfs dboopu cf sfbdife."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:116
|
||||||
|
msgctxt "guildset:alert_channel|formatted:unset"
|
||||||
|
msgid "Not Set (Only alert via direct message.)"
|
||||||
|
msgstr "Opu Tfu (Pomz bmfsu wjb ejsfdu nfttbhf.)"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:123
|
||||||
|
msgctxt "guildset:mod_role"
|
||||||
|
msgid "mod_role"
|
||||||
|
msgstr "npe_spmf"
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:126
|
||||||
|
msgctxt "guildset:mod_role|desc"
|
||||||
|
msgid ""
|
||||||
|
"Guild role permitted to view configuration and perform moderation tasks."
|
||||||
|
msgstr ""
|
||||||
|
"Hvjme spmf qfsnjuufe up wjfx dpogjhvsbujpo boe qfsgpsn npefsbujpo ubtlt."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:130
|
||||||
|
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 as setting up pomodoro timers. "
|
||||||
|
"Moderators cannot reconfigure most bot configuration, or perform operations "
|
||||||
|
"they do not already have permission for in Discord."
|
||||||
|
msgstr ""
|
||||||
|
"Nfncfst xjui uif tfu spmf xjmm cf bcmf up bddftt nz dpogjhvsbujpo qbofmt, "
|
||||||
|
"boe qfsgpsn tpnf npefsbujpo ubtlt, tvdi bt tfuujoh vq qpnpepsp ujnfst. "
|
||||||
|
"Npefsbupst dboopu sfdpogjhvsf nptu cpu dpogjhvsbujpo, ps qfsgpsn pqfsbujpot "
|
||||||
|
"uifz ep opu bmsfbez ibwf qfsnjttjpo gps jo Ejtdpse."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:137
|
||||||
|
msgctxt "guildset:mod_role|accepts"
|
||||||
|
msgid "Moderation role name or id."
|
||||||
|
msgstr "Npefsbujpo spmf obnf ps je."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:151
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:mod_role|set_response:set"
|
||||||
|
msgid "Members with the {role} will be considered moderators."
|
||||||
|
msgstr "Nfncfst xjui uif {role} xjmm cf dpotjefsfe npefsbupst."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:156
|
||||||
|
msgctxt "guildset:mod_role|set_response:unset"
|
||||||
|
msgid "No members will be given moderation privileges."
|
||||||
|
msgstr "Op nfncfst xjmm cf hjwfo npefsbujpo qsjwjmfhft."
|
||||||
|
|
||||||
|
#: src/modules/moderation/settings.py:168
|
||||||
|
msgctxt "guildset:mod_role|formatted:unset"
|
||||||
|
msgid "Not Set."
|
||||||
|
msgstr "Opu Tfu."
|
||||||
164
locales/ceaser/LC_MESSAGES/monthly-gui.po
Normal file
164
locales/ceaser/LC_MESSAGES/monthly-gui.po
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:40
|
||||||
|
msgctxt "skin:monthlystats|mode:study|title"
|
||||||
|
msgid "STUDY HOURS"
|
||||||
|
msgstr "TUVEZ IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:44
|
||||||
|
msgctxt "skin:monthlystats|mode:voice|title"
|
||||||
|
msgid "VOICE CHANNEL ACTIVITY"
|
||||||
|
msgstr "WPJDF DIBOOFM BDUJWJUZ"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:48
|
||||||
|
msgctxt "skin:monthlystats|mode:text|title"
|
||||||
|
msgid "MESSAGE ACTIVITY"
|
||||||
|
msgstr "NFTTBHF BDUJWJUZ"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:52
|
||||||
|
msgctxt "skin::monthlystats|mode:anki|title"
|
||||||
|
msgid "CARDS REVIEWED"
|
||||||
|
msgstr "DBSET SFWJFXFE"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:119
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:monthlystats|mode:study|bar_value"
|
||||||
|
msgid "{value} H"
|
||||||
|
msgstr "{value} I"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:123
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:monthlystats|mode:voice|bar_value"
|
||||||
|
msgid "{value} H"
|
||||||
|
msgstr "{value} I"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:127
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:monthlystats|mode:text|bar_value"
|
||||||
|
msgid "{value} M"
|
||||||
|
msgstr "{value} N"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:131
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:monthlystats|mode:anki|bar_value"
|
||||||
|
msgid "{value} C"
|
||||||
|
msgstr "{value} D"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:153
|
||||||
|
msgctxt "skin:monthlystats|weekdays"
|
||||||
|
msgid "M,T,W,T,F,S,S"
|
||||||
|
msgstr "N,U,X,U,G,T,T"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:163
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:monthlystats|mode:study|summary:this_month"
|
||||||
|
msgid "THIS MONTH: {amount} HOURS"
|
||||||
|
msgstr "UIJT NPOUI: {amount} IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:167
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:monthlystats|mode:voice|summary:this_month"
|
||||||
|
msgid "THIS MONTH: {amount} HOURS"
|
||||||
|
msgstr "UIJT NPOUI: {amount} IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:171
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:monthlystats|mode:text|summary:this_month"
|
||||||
|
msgid "THIS MONTH: {amount} MESSAGES"
|
||||||
|
msgstr "UIJT NPOUI: {amount} NFTTBHFT"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:175
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:monthlystats|mode:text|summary:this_month"
|
||||||
|
msgid "THIS MONTH: {amount} CARDS"
|
||||||
|
msgstr "UIJT NPOUI: {amount} DBSET"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:197
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:monthlystats|mode:study|summary:last_month"
|
||||||
|
msgid "LAST MONTH: {amount} HOURS"
|
||||||
|
msgstr "MBTU NPOUI: {amount} IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:201
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:monthlystats|mode:voice|summary:last_month"
|
||||||
|
msgid "LAST MONTH: {amount} HOURS"
|
||||||
|
msgstr "MBTU NPOUI: {amount} IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:205
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:monthlystats|mode:text|summary:last_month"
|
||||||
|
msgid "LAST MONTH: {amount} MESSAGES"
|
||||||
|
msgstr "MBTU NPOUI: {amount} NFTTBHFT"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:209
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:monthlystats|mode:text|summary:last_month"
|
||||||
|
msgid "LAST MONTH: {amount} CARDS"
|
||||||
|
msgstr "MBTU NPOUI: {amount} DBSET"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:300
|
||||||
|
msgctxt "ui:monthlystats|stats:current_streak|key"
|
||||||
|
msgid "Current Streak:"
|
||||||
|
msgstr "Dvssfou Tusfbl:"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:304
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:monthlystats|stats:current_streak|value"
|
||||||
|
msgid "{count} days"
|
||||||
|
msgstr "{count} ebzt"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:308
|
||||||
|
msgctxt "ui:monthlystats|stats:longest_streak|key"
|
||||||
|
msgid "Longest Streak:"
|
||||||
|
msgstr "Mpohftu Tusfbl:"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:312
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:monthlystats|stats:longest_streak|value"
|
||||||
|
msgid "{count} days"
|
||||||
|
msgstr "{count} ebzt"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:316
|
||||||
|
msgctxt "ui:monthlystats|stats:daily_average|key"
|
||||||
|
msgid "Daily Average:"
|
||||||
|
msgstr "Ebjmz Bwfsbhf:"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:320
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:monthlystats|stats:daily_average|value"
|
||||||
|
msgid "{count} hours"
|
||||||
|
msgstr "{count} ipvst"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:324
|
||||||
|
msgctxt "ui:monthlystats|stats:days_active|key"
|
||||||
|
msgid "Days Active:"
|
||||||
|
msgstr "Ebzt Bdujwf:"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:328
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:monthlystats|stats:days_active|value"
|
||||||
|
msgid "{count} days"
|
||||||
|
msgstr "{count} ebzt"
|
||||||
|
|
||||||
|
#: src/gui/cards/monthly.py:341
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:monthlystats|footer"
|
||||||
|
msgid "Monthly Statistics • As of {day} {month} • {name} {discrim}"
|
||||||
|
msgstr "Npouimz Tubujtujdt • Bt pg {day} {month} • {name} {discrim}"
|
||||||
48
locales/ceaser/LC_MESSAGES/profile-gui.po
Normal file
48
locales/ceaser/LC_MESSAGES/profile-gui.po
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/gui/cards/profile.py:79
|
||||||
|
msgctxt "skin:profile|header:profile"
|
||||||
|
msgid "PROFILE"
|
||||||
|
msgstr "QSPGJMF"
|
||||||
|
|
||||||
|
#: src/gui/cards/profile.py:83
|
||||||
|
msgctxt "skin:profile|header:achievements"
|
||||||
|
msgid "ACHIEVEMENTS"
|
||||||
|
msgstr "BDIJFWFNFOUT"
|
||||||
|
|
||||||
|
#: src/gui/cards/profile.py:134
|
||||||
|
msgctxt "skin:profile|field:rank_unranked_text"
|
||||||
|
msgid "UNRANKED"
|
||||||
|
msgstr "VOSBOLFE"
|
||||||
|
|
||||||
|
#: src/gui/cards/profile.py:138
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:profile|field:rank_nextrank_text"
|
||||||
|
msgid "NEXT RANK: {name} {rangestr}"
|
||||||
|
msgstr "OFYU SBOL: {name} {rangestr}"
|
||||||
|
|
||||||
|
#: src/gui/cards/profile.py:142
|
||||||
|
msgctxt "skin:profile|field:rank_noranks_text"
|
||||||
|
msgid "NO RANKS AVAILABLE"
|
||||||
|
msgstr "OP SBOLT BWBJMBCMF"
|
||||||
|
|
||||||
|
#: src/gui/cards/profile.py:146
|
||||||
|
msgctxt "skin:profile|field:rank_maxrank_text"
|
||||||
|
msgid "YOU HAVE REACHED THE MAXIMUM RANK"
|
||||||
|
msgstr "ZPV IBWF SFBDIFE UIF NBYJNVN SBOL"
|
||||||
949
locales/ceaser/LC_MESSAGES/ranks.po
Normal file
949
locales/ceaser/LC_MESSAGES/ranks.po
Normal file
@@ -0,0 +1,949 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:76
|
||||||
|
msgctxt "cmd:configure_ranks|param:rank_type|choice:voice"
|
||||||
|
msgid "Voice"
|
||||||
|
msgstr "Wpjdf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:77
|
||||||
|
msgctxt "cmd:configure_ranks|param:rank_type|choice:xp"
|
||||||
|
msgid "XP"
|
||||||
|
msgstr "YQ"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:78
|
||||||
|
msgctxt "cmd:configure_ranks|param:rank_type|choice:message"
|
||||||
|
msgid "Message"
|
||||||
|
msgstr "Nfttbhf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:406
|
||||||
|
msgctxt "event:rank_update|embed:notify"
|
||||||
|
msgid "New Activity Rank Attained!"
|
||||||
|
msgstr "Ofx Bdujwjuz Sbol Buubjofe!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:516
|
||||||
|
msgctxt "rank_refresh|error:roles_dne|desc"
|
||||||
|
msgid "Some ranks have invalid or deleted roles! Please remove them first."
|
||||||
|
msgstr "Tpnf sbolt ibwf jowbmje ps efmfufe spmft! Qmfbtf sfnpwf uifn gjstu."
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:526
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "rank_refresh|error:unassignable_roles|desc"
|
||||||
|
msgid ""
|
||||||
|
"I have insufficient permissions to assign the following role(s):\n"
|
||||||
|
"{roles}"
|
||||||
|
msgstr ""
|
||||||
|
"J ibwf jotvggjdjfou qfsnjttjpot up bttjho uif gpmmpxjoh spmf(t):\n"
|
||||||
|
"{roles}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:596
|
||||||
|
msgctxt "rank_refresh|remove_roles|audit"
|
||||||
|
msgid "Removing invalid rank role."
|
||||||
|
msgstr "Sfnpwjoh jowbmje sbol spmf."
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:610
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "rank_refresh|remove_roles|small_error"
|
||||||
|
msgid "*Could not remove ranks from {member}*"
|
||||||
|
msgstr "*Dpvme opu sfnpwf sbolt gspn {member}*"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:617
|
||||||
|
msgctxt "rank_refresh|remove_roles|error:too_many_issues"
|
||||||
|
msgid ""
|
||||||
|
"Too many issues occurred while removing ranks! Please check my permissions "
|
||||||
|
"and try again in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
"Upp nboz jttvft pddvssfe xijmf sfnpwjoh sbolt! Qmfbtf difdl nz qfsnjttjpot "
|
||||||
|
"boe usz bhbjo jo b gfx njovuft."
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:631
|
||||||
|
msgctxt "rank_refresh|add_roles|audit"
|
||||||
|
msgid "Adding rank role from refresh"
|
||||||
|
msgstr "Beejoh sbol spmf gspn sfgsfti"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:645
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "rank_refresh|add_roles|small_error"
|
||||||
|
msgid "*Could not add {role} to {member}*"
|
||||||
|
msgstr "*Dpvme opu bee {role} up {member}*"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:652
|
||||||
|
msgctxt "rank_refresh|add_roles|error:too_many_issues"
|
||||||
|
msgid ""
|
||||||
|
"Too many issues occurred while adding ranks! Please check my permissions and"
|
||||||
|
" try again in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
"Upp nboz jttvft pddvssfe xijmf beejoh sbolt! Qmfbtf difdl nz qfsnjttjpot boe"
|
||||||
|
" usz bhbjo jo b gfx njovuft."
|
||||||
|
|
||||||
|
#. ---------- Commands ----------
|
||||||
|
#: src/modules/ranks/cog.py:677
|
||||||
|
msgctxt "cmd:ranks"
|
||||||
|
msgid "ranks"
|
||||||
|
msgstr "sbolt"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:709
|
||||||
|
msgctxt "cmd:configure_ranks"
|
||||||
|
msgid "ranks"
|
||||||
|
msgstr "sbolt"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:710
|
||||||
|
msgctxt "cmd:configure_ranks|desc"
|
||||||
|
msgid "Configure Activity Ranks"
|
||||||
|
msgstr "Dpogjhvsf Bdujwjuz Sbolt"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:770
|
||||||
|
#, 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 ""
|
||||||
|
"Sbol vqebuf opujgjdbujpot xjmm cf tfou wjb **ejsfdu nfttbhf** xifo qpttjcmf,"
|
||||||
|
" puifsxjtf up {channel}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:776
|
||||||
|
msgctxt ""
|
||||||
|
"cmd:configure_ranks|response:updated|setting:notification|withdm_nochannel"
|
||||||
|
msgid "Rank update notifications will be sent via **direct message**."
|
||||||
|
msgstr "Sbol vqebuf opujgjdbujpot xjmm cf tfou wjb **ejsfdu nfttbhf**."
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:782
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt ""
|
||||||
|
"cmd:configure_ranks|response:updated|setting:notification|nodm_withchannel"
|
||||||
|
msgid "Rank update notifications will be sent to {channel}."
|
||||||
|
msgstr "Sbol vqebuf opujgjdbujpot xjmm cf tfou up {channel}."
|
||||||
|
|
||||||
|
#: src/modules/ranks/cog.py:787
|
||||||
|
msgctxt ""
|
||||||
|
"cmd:configure_ranks|response:updated|setting:notification|nodm_nochannel"
|
||||||
|
msgid "Members will not be notified when their activity rank updates."
|
||||||
|
msgstr "Nfncfst xjmm opu cf opujgjfe xifo uifjs bdujwjuz sbol vqebuft."
|
||||||
|
|
||||||
|
#: src/modules/ranks/utils.py:13
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:rank_message|key:role_name"
|
||||||
|
msgid "{role_name}"
|
||||||
|
msgstr "{role_name}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/utils.py:14
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:rank_message|key:guild_name"
|
||||||
|
msgid "{guild_name}"
|
||||||
|
msgstr "{guild_name}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/utils.py:15
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:rank_message|key:user_name"
|
||||||
|
msgid "{user_name}"
|
||||||
|
msgstr "{user_name}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/utils.py:16
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:rank_message|key:role_id"
|
||||||
|
msgid "{role_id}"
|
||||||
|
msgstr "{role_id}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/utils.py:17
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:rank_message|key:guild_id"
|
||||||
|
msgid "{guild_id}"
|
||||||
|
msgstr "{guild_id}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/utils.py:18
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:rank_message|key:user_id"
|
||||||
|
msgid "{user_id}"
|
||||||
|
msgstr "{user_id}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/utils.py:19
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:rank_message|key:role_mention"
|
||||||
|
msgid "{role_mention}"
|
||||||
|
msgstr "{role_mention}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/utils.py:20
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:rank_message|key:user_mention"
|
||||||
|
msgid "{user_mention}"
|
||||||
|
msgstr "{user_mention}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/utils.py:21
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "formatstring:rank_message|key:requires"
|
||||||
|
msgid "{rank_requires}"
|
||||||
|
msgstr "{rank_requires}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:26
|
||||||
|
msgctxt "guildset:rank_type|output:voice"
|
||||||
|
msgid "`Voice`"
|
||||||
|
msgstr "`Wpjdf`"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:27
|
||||||
|
msgctxt "guildset:rank_type|output:xp"
|
||||||
|
msgid "`Exp`"
|
||||||
|
msgstr "`Fyq`"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:28
|
||||||
|
msgctxt "guildset:rank_type|output:message"
|
||||||
|
msgid "`Messages`"
|
||||||
|
msgstr "`Nfttbhft`"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:31
|
||||||
|
msgctxt "guildset:rank_type|input_format:voice"
|
||||||
|
msgid "Voice"
|
||||||
|
msgstr "Wpjdf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:32
|
||||||
|
msgctxt "guildset:rank_type|input_format:xp"
|
||||||
|
msgid "Exp"
|
||||||
|
msgstr "Fyq"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:33
|
||||||
|
msgctxt "guildset:rank_type|input_format:message"
|
||||||
|
msgid "Messages"
|
||||||
|
msgstr "Nfttbhft"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:36
|
||||||
|
msgctxt "guildset:rank_type|input_pattern:voice"
|
||||||
|
msgid "voice|study"
|
||||||
|
msgstr "wpjdf|tuvez"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:37
|
||||||
|
msgctxt "guildset:rank_type|input_pattern:voice"
|
||||||
|
msgid "text|message|messages"
|
||||||
|
msgstr "ufyu|nfttbhf|nfttbhft"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:38
|
||||||
|
msgctxt "guildset:rank_type|input_pattern:xp"
|
||||||
|
msgid "xp|exp|experience"
|
||||||
|
msgstr "yq|fyq|fyqfsjfodf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:45
|
||||||
|
msgctxt "guildset:rank_type"
|
||||||
|
msgid "rank_type"
|
||||||
|
msgstr "sbol_uzqf"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif uzqf pg tubujtujd (nfttbhft | yq | wpjdf ipvst) vtfe up efufsnjof "
|
||||||
|
"bdujwjuz sbolt."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xijdi tubujtujd jt vtfe up sfxbse bdujwjuz sbolt.\n"
|
||||||
|
"`Wpjdf` jt uif ovncfs pg ipvst bdujwf jo usbdlfe wpjdf diboofmt, `Fyq` jt b nfbtvsf pg nfttbhf bdujwjuz, boe `Nfttbhf` jt b tjnqmf dpvou pg nfttbhft tfou."
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:59
|
||||||
|
msgctxt "guildset:rank_type|accepts"
|
||||||
|
msgid "Voice/Exp/Messages"
|
||||||
|
msgstr "Wpjdf/Fyq/Nfttbhft"
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xjmm cf bxbsefe bdujwjuz sbolt cbtfe po `Wpjdf Bdujwjuz`."
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xjmm cf bxbsefe bdujwjuz sbolt cbtfe po `Nfttbhft Tfou`."
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xjmm cf bxbsefe bdujwjuz sbolt cbtfe po `Nfttbhf YQ Fbsofe`."
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:91
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:rank_channel|set_using"
|
||||||
|
msgid "{cmd} or option menu below."
|
||||||
|
msgstr "{cmd} ps pqujpo nfov cfmpx."
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:103
|
||||||
|
msgctxt "guildset:rank_channel"
|
||||||
|
msgid "rank_channel"
|
||||||
|
msgstr "sbol_diboofm"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:106
|
||||||
|
msgctxt "guildset:rank_channel|desc"
|
||||||
|
msgid "The channel in which to send rank update notifications."
|
||||||
|
msgstr "Uif diboofm jo xijdi up tfoe sbol vqebuf opujgjdbujpot."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifofwfs b vtfs bewbodft b sbol, b dpohsbuvmbupsz nfttbhf xjmm cf tfou jo "
|
||||||
|
"uijt diboofm, jg tfu. Jg `en_sbolt` jt fobcmfe, uijt diboofm xjmm pomz cf "
|
||||||
|
"vtfe xifo uif vtfs ibt pqufe opu up sfdfjwf EN opujgjdbujpot, ps jt "
|
||||||
|
"puifsxjtf vosfbdibcmf."
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:116
|
||||||
|
msgctxt "guildset:rank_channel|accepts"
|
||||||
|
msgid "Rank notification channel name or id."
|
||||||
|
msgstr "Sbol opujgjdbujpo diboofm obnf ps je."
|
||||||
|
|
||||||
|
#: 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 "Sbol vqebuf nfttbhft xjmm cf tfou up {channel}."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Sbol vqebuf nfttbhft xjmm cf jhopsfe ps tfou wjb EN (jg `en_sbolt` jt "
|
||||||
|
"fobcmfe)."
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:143
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:rank_channel|set_using"
|
||||||
|
msgid "{cmd} or channel selector below."
|
||||||
|
msgstr "{cmd} ps diboofm tfmfdups cfmpx."
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:153
|
||||||
|
msgctxt "guildset:dm_ranks"
|
||||||
|
msgid "dm_ranks"
|
||||||
|
msgstr "en_sbolt"
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:156
|
||||||
|
msgctxt "guildset:dm_ranks|desc"
|
||||||
|
msgid ""
|
||||||
|
"Whether to send rank advancement notifications through direct messages."
|
||||||
|
msgstr ""
|
||||||
|
"Xifuifs up tfoe sbol bewbodfnfou opujgjdbujpot uispvhi ejsfdu nfttbhft."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Jg fobcmfe, dpohsbuvmbupsz nfttbhft gps sbol bewbodfnfou xjmm cf ejsfdu "
|
||||||
|
"nfttbhfe up uif vtfs, jotufbe pg cfjoh tfou up uif dpogjhvsfe "
|
||||||
|
"`sbol_diboofm`."
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:174
|
||||||
|
msgctxt "guildset:dm_ranks|response:true"
|
||||||
|
msgid "I will direct message members upon rank advancement."
|
||||||
|
msgstr "J xjmm ejsfdu nfttbhf nfncfst vqpo sbol bewbodfnfou."
|
||||||
|
|
||||||
|
#: src/modules/ranks/settings.py:179
|
||||||
|
msgctxt "guildset:dm_ranks|response:false"
|
||||||
|
msgid "I will never direct message members upon rank advancement."
|
||||||
|
msgstr "J xjmm ofwfs ejsfdu nfttbhf nfncfst vqpo sbol bewbodfnfou."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif spmf voefsmzjoh uijt sbol op mpohfs fyjtut! Qmfbtf tfmfdu b ofx spmf "
|
||||||
|
"gspn uif spmf nfov."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"J ep opu ibwf qfsnjttjpo up feju uif voefsmzjoh spmf! Qmfbtf tfmfdu b ofx "
|
||||||
|
"spmf gspn uif spmf nfov, ps fotvsf nz upq spmf jt bcpwf uif tfmfdufe spmf."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:90
|
||||||
|
msgctxt "ui:rank_preview|button:edit|error|title"
|
||||||
|
msgid "Failed to edit rank!"
|
||||||
|
msgstr "Gbjmfe up feju sbol!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:108
|
||||||
|
msgctxt "ui:rank_preview|button:edit|label"
|
||||||
|
msgid "Edit"
|
||||||
|
msgstr "Feju"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Zpv ibwf efmfufe uif sbol {mention}. Qsftt uif cvuupo cfmpx up bmtp efmfuf "
|
||||||
|
"uif spmf."
|
||||||
|
|
||||||
|
#: 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 "Zpv ibwf efmfufe uif sbol {mention}."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:150
|
||||||
|
msgctxt "ui:rank_preview|button:delete|response:success|title"
|
||||||
|
msgid "Rank Deleted"
|
||||||
|
msgstr "Sbol Efmfufe"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:160
|
||||||
|
msgctxt ""
|
||||||
|
"ui:rank_preview|button:delete|response:success|button:delete_role|label"
|
||||||
|
msgid "Delete Role"
|
||||||
|
msgstr "Efmfuf Spmf"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Zpv ibwf efmfufe uif sbol **{name}**! Dpvme opu efmfuf uif spmf evf up bo "
|
||||||
|
"volopxo fssps."
|
||||||
|
|
||||||
|
#: 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 "Zpv ibwf efmfufe uif sbol **{name}** bmpoh xjui uif voefsmzjoh spmf."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:199
|
||||||
|
msgctxt "ui:rank_preview|button:delete|label"
|
||||||
|
msgid "Delete Rank"
|
||||||
|
msgstr "Efmfuf Sbol"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Zpv ibwf jotvggjdjfou qfsnjttjpot up bttjho {mention} bt b sbol spmf! Zpv "
|
||||||
|
"nbz pomz nbobhf spmft cfmpx zpvs upq spmf."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:225
|
||||||
|
msgctxt "ui:rank_preview|menu:roles|error:above_caller|title"
|
||||||
|
msgid "Insufficient permissions!"
|
||||||
|
msgstr "Jotvggjdjfou qfsnjttjpot!"
|
||||||
|
|
||||||
|
#: 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 "Uif @fwfszpof spmf dboopu cf sfnpwfe, boe dboopu cf b sbol!"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif spmf jt nbobhfe cz bopuifs bqqmjdbujpo ps joufhsbujpo, boe dboopu cf b "
|
||||||
|
"sbol!"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"J ep opu ibwf uif `NBOBHF_SPMFT` qfsnjttjpo jo uijt tfswfs, tp J dboopu "
|
||||||
|
"nbobhf sbolt!"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uijt spmf jt bcpwf nz upq spmf jo uif spmf ijfsbsdiz, tp J dboopu bee ps "
|
||||||
|
"sfnpwf ju!"
|
||||||
|
|
||||||
|
#: 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 "J bn opu bcmf up nbobhf uif tfmfdufe spmf, tp ju dboopu cf b sbol!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:268
|
||||||
|
msgctxt "ui:rank_preview|menu:roles|error:not_assignable|title"
|
||||||
|
msgid "Could not update rank!"
|
||||||
|
msgstr "Dpvme opu vqebuf sbol!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:278
|
||||||
|
msgctxt "ui:rank_preview|menu:roles|placeholder"
|
||||||
|
msgid "Update Rank Role"
|
||||||
|
msgstr "Vqebuf Sbol Spmf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:290
|
||||||
|
msgctxt "ui:rank_preview|embed|title"
|
||||||
|
msgid "Rank Information"
|
||||||
|
msgstr "Sbol Jogpsnbujpo"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:297
|
||||||
|
msgctxt "ui:rank_preview|embed|field:role|name"
|
||||||
|
msgid "Role"
|
||||||
|
msgstr "Spmf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:304
|
||||||
|
msgctxt "ui:rank_preview|embed|field:required|name"
|
||||||
|
msgid "Required"
|
||||||
|
msgstr "Sfrvjsfe"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:311
|
||||||
|
msgctxt "ui:rank_preview|embed|field:reward|name"
|
||||||
|
msgid "Reward"
|
||||||
|
msgstr "Sfxbse"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/preview.py:320
|
||||||
|
msgctxt "ui:rank_preview|embed|field:message"
|
||||||
|
msgid "Congratulatory Message"
|
||||||
|
msgstr "Dpohsbuvmbupsz Nfttbhf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:125
|
||||||
|
msgctxt "ui:refresh_ranks|embed|title:errored"
|
||||||
|
msgid "Could not refresh the server ranks!"
|
||||||
|
msgstr "Dpvme opu sfgsfti uif tfswfs sbolt!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:133
|
||||||
|
msgctxt "ui:refresh_ranks|embed|title:done"
|
||||||
|
msgid "Rank refresh complete!"
|
||||||
|
msgstr "Sbol sfgsfti dpnqmfuf!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:139
|
||||||
|
msgctxt "ui:refresh_ranks|embed|title:working"
|
||||||
|
msgid "Refreshing your server ranks, please wait."
|
||||||
|
msgstr "Sfgsftijoh zpvs tfswfs sbolt, qmfbtf xbju."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:157
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:refresh_ranks|embed|line:ranks"
|
||||||
|
msgid "**Loading server ranks:** {emoji}"
|
||||||
|
msgstr "**Mpbejoh tfswfs sbolt:** {emoji}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:167
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:refresh_ranks|embed|line:members"
|
||||||
|
msgid "**Loading server members:** {emoji}"
|
||||||
|
msgstr "**Mpbejoh tfswfs nfncfst:** {emoji}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:177
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:refresh_ranks|embed|line:roles"
|
||||||
|
msgid "**Loading rank roles:** {emoji}"
|
||||||
|
msgstr "**Mpbejoh sbol spmft:** {emoji}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:187
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:refresh_ranks|embed|line:compute"
|
||||||
|
msgid "**Computing correct ranks:** {emoji}"
|
||||||
|
msgstr "**Dpnqvujoh dpssfdu sbolt:** {emoji}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:198
|
||||||
|
msgctxt "ui:refresh_ranks|embed|field:remove|name"
|
||||||
|
msgid "Removing invalid rank roles from members"
|
||||||
|
msgstr "Sfnpwjoh jowbmje sbol spmft gspn nfncfst"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:202
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:refresh_ranks|embed|field:remove|value"
|
||||||
|
msgid "{progress} {done}/{total} removed"
|
||||||
|
msgstr "{progress} {done}/{total} sfnpwfe"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:213
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:refresh_ranks|embed|line:remove"
|
||||||
|
msgid "**Removed invalid ranks:** {done}/{target}"
|
||||||
|
msgstr "**Sfnpwfe jowbmje sbolt:** {done}/{target}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:221
|
||||||
|
msgctxt "ui:refresh_ranks|embed|field:add|name"
|
||||||
|
msgid "Giving members their rank roles"
|
||||||
|
msgstr "Hjwjoh nfncfst uifjs sbol spmft"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:225
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:refresh_ranks|embed|field:add|value"
|
||||||
|
msgid "{progress} {done}/{total} given"
|
||||||
|
msgstr "{progress} {done}/{total} hjwfo"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/refresh.py:236
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:refresh_ranks|embed|line:add"
|
||||||
|
msgid "**Updated member ranks:** {done}/{target}"
|
||||||
|
msgstr "**Vqebufe nfncfs sbolt:** {done}/{target}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/config.py:42
|
||||||
|
msgctxt "ui:rankconfigui|check|not_permitted"
|
||||||
|
msgid "You have insufficient server permissions to use this UI!"
|
||||||
|
msgstr "Zpv ibwf jotvggjdjfou tfswfs qfsnjttjpot up vtf uijt VJ!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/config.py:64
|
||||||
|
msgctxt "ui:rank_config|button:overview|label"
|
||||||
|
msgid "Edit Ranks"
|
||||||
|
msgstr "Feju Sbolt"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/config.py:82
|
||||||
|
msgctxt "ui:rank_config|menu:types|placeholder"
|
||||||
|
msgid "Select Statistic Type"
|
||||||
|
msgstr "Tfmfdu Tubujtujd Uzqf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/config.py:90
|
||||||
|
msgctxt "ui:rank_config|menu:types|option:voice"
|
||||||
|
msgid "Voice Activity"
|
||||||
|
msgstr "Wpjdf Bdujwjuz"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/config.py:98
|
||||||
|
msgctxt "ui:rank_config|menu:types|option:xp"
|
||||||
|
msgid "XP Earned"
|
||||||
|
msgstr "YQ Fbsofe"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/config.py:106
|
||||||
|
msgctxt "ui:rank_config|menu:types|option:messages"
|
||||||
|
msgid "Messages Sent"
|
||||||
|
msgstr "Nfttbhft Tfou"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/config.py:126
|
||||||
|
msgctxt "ui:rank_config|menu:channels|placeholder"
|
||||||
|
msgid "Select Rank Notification Channel"
|
||||||
|
msgstr "Tfmfdu Sbol Opujgjdbujpo Diboofm"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/config.py:134
|
||||||
|
msgctxt "ui:rank_config|embed|title"
|
||||||
|
msgid "Ranks Configuration Panel"
|
||||||
|
msgstr "Sbolt Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/config.py:171
|
||||||
|
msgctxt "dash:rank|title"
|
||||||
|
msgid "Rank Configuration ({commands[configure ranks]})"
|
||||||
|
msgstr "Sbol Dpogjhvsbujpo ({commands[configure ranks]})"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/config.py:175
|
||||||
|
msgctxt "dash:rank|dropdown|placeholder"
|
||||||
|
msgid "Activity Rank Panel"
|
||||||
|
msgstr "Bdujwjuz Sbol Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:94
|
||||||
|
msgctxt "ui:rank_overview|button:auto|label"
|
||||||
|
msgid "Auto Create"
|
||||||
|
msgstr "Bvup Dsfbuf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:109
|
||||||
|
msgctxt "ui:rank_overview|button:refresh|label"
|
||||||
|
msgid "Refresh Member Ranks"
|
||||||
|
msgstr "Sfgsfti Nfncfs Sbolt"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:121
|
||||||
|
msgctxt "ui:rank_overview|button:clear|confirm"
|
||||||
|
msgid "Are you sure you want to **delete all activity ranks** in this server?"
|
||||||
|
msgstr ""
|
||||||
|
"Bsf zpv tvsf zpv xbou up **efmfuf bmm bdujwjuz sbolt** jo uijt tfswfs?"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:126
|
||||||
|
msgctxt "ui:rank_overview|button:clear|confirm|button:yes"
|
||||||
|
msgid "Yes, clear ranks"
|
||||||
|
msgstr "Zft, dmfbs sbolt"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:132
|
||||||
|
msgctxt "ui:rank_overview|button:clear|confirm|button:no"
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "Dbodfm"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:148
|
||||||
|
msgctxt "ui:rank_overview|button:clear|label"
|
||||||
|
msgid "Clear Ranks"
|
||||||
|
msgstr "Dmfbs Sbolt"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:178
|
||||||
|
msgctxt "ui:rank_overview|button:create|label"
|
||||||
|
msgid "Create Rank"
|
||||||
|
msgstr "Dsfbuf Sbol"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:194
|
||||||
|
#, 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 ""
|
||||||
|
"Zpv ibwf jotvggjdjfou qfsnjttjpot up bttjho {mention} bt b sbol spmf! Zpv "
|
||||||
|
"nbz pomz nbobhf spmft cfmpx zpvs upq spmf."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:200
|
||||||
|
msgctxt "ui:rank_overview|menu:roles|error:above_caller|title"
|
||||||
|
msgid "Insufficient permissions!"
|
||||||
|
msgstr "Jotvggjdjfou qfsnjttjpot!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:233
|
||||||
|
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 "Uif @fwfszpof spmf dboopu cf sfnpwfe, boe dboopu cf b sbol!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:238
|
||||||
|
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 ""
|
||||||
|
"Uif spmf jt nbobhfe cz bopuifs bqqmjdbujpo ps joufhsbujpo, boe dboopu cf b "
|
||||||
|
"sbol!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:243
|
||||||
|
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 ""
|
||||||
|
"J ep opu ibwf uif `NBOBHF_SPMFT` qfsnjttjpo jo uijt tfswfs, tp J dboopu "
|
||||||
|
"nbobhf sbolt!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:248
|
||||||
|
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 ""
|
||||||
|
"Uijt spmf jt bcpwf nz upq spmf jo uif spmf ijfsbsdiz, tp J dboopu bee ps "
|
||||||
|
"sfnpwf ju!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:254
|
||||||
|
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 "J bn opu bcmf up nbobhf uif tfmfdufe spmf, tp ju dboopu cf b sbol!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:260
|
||||||
|
msgctxt "ui:rank_overview|menu:roles|error:not_assignable|title"
|
||||||
|
msgid "Could not create rank!"
|
||||||
|
msgstr "Dpvme opu dsfbuf sbol!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:284
|
||||||
|
msgctxt "ui:rank_overview|menu:roles|placeholder"
|
||||||
|
msgid "Create from role"
|
||||||
|
msgstr "Dsfbuf gspn spmf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:301
|
||||||
|
msgctxt "ui:rank_overview|menu:ranks|placeholder"
|
||||||
|
msgid "View or edit rank"
|
||||||
|
msgstr "Wjfx ps feju sbol"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:387
|
||||||
|
msgctxt "ui:rank_overview|embed|field:note|name"
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Opuf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:393
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:rank_overview|embed|field:note|value:with_season"
|
||||||
|
msgid "Ranks are determined by activity since {timestamp}."
|
||||||
|
msgstr "Sbolt bsf efufsnjofe cz bdujwjuz tjodf {timestamp}."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:400
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:rank_overview|embed|field:note|value:without_season"
|
||||||
|
msgid ""
|
||||||
|
"Ranks are determined by *all-time* statistics.\n"
|
||||||
|
"To reward ranks from a later time (e.g. to have monthly/quarterly/yearly ranks) set the `season_start` with {stats_cmd}"
|
||||||
|
msgstr ""
|
||||||
|
"Sbolt bsf efufsnjofe cz *bmm-ujnf* tubujtujdt.\n"
|
||||||
|
"Up sfxbse sbolt gspn b mbufs ujnf (f.h. up ibwf npouimz/rvbsufsmz/zfbsmz sbolt) tfu uif `tfbtpo_tubsu` xjui {stats_cmd}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:407
|
||||||
|
msgctxt "ui:rank_overview|embed|field:note|value|voice_addendum"
|
||||||
|
msgid ""
|
||||||
|
"Also note that ranks will only be updated when a member leaves a tracked "
|
||||||
|
"voice channel! Use the **Refresh Member Ranks** button below to update all "
|
||||||
|
"members manually."
|
||||||
|
msgstr ""
|
||||||
|
"Bmtp opuf uibu sbolt xjmm pomz cf vqebufe xifo b nfncfs mfbwft b usbdlfe "
|
||||||
|
"wpjdf diboofm! Vtf uif **Sfgsfti Nfncfs Sbolt** cvuupo cfmpx up vqebuf bmm "
|
||||||
|
"nfncfst nbovbmmz."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:415
|
||||||
|
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 ""
|
||||||
|
"Op bdujwjuz sbolt ibwf cffo tfu vq!\n"
|
||||||
|
"Qsftt 'BVUP' up bvupnbujdbmmz dsfbuf b tuboebse ifjsbdiz pg wpjdf | ufyu | yq sbolt, ps tfmfdu b spmf ps qsftt Dsfbuf cfmpx!"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:423
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:rank_overview|embed|title|type:voice"
|
||||||
|
msgid "Voice Ranks in {guild_name}"
|
||||||
|
msgstr "Wpjdf Sbolt jo {guild_name}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:428
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:rank_overview|embed|title|type:xp"
|
||||||
|
msgid "XP ranks in {guild_name}"
|
||||||
|
msgstr "YQ sbolt jo {guild_name}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:433
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:rank_overview|embed|title|type:message"
|
||||||
|
msgid "Message ranks in {guild_name}"
|
||||||
|
msgstr "Nfttbhf sbolt jo {guild_name}"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:33
|
||||||
|
msgctxt "ui:rank_editor|input:role_name|label"
|
||||||
|
msgid "Role Name"
|
||||||
|
msgstr "Spmf Obnf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:37
|
||||||
|
msgctxt "ui:rank_editor|input:role_name|placeholder"
|
||||||
|
msgid "Name of the awarded guild role"
|
||||||
|
msgstr "Obnf pg uif bxbsefe hvjme spmf"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:53
|
||||||
|
msgctxt "ui:rank_editor|input:role_colour|label"
|
||||||
|
msgid "Role Colour"
|
||||||
|
msgstr "Spmf Dpmpvs"
|
||||||
|
|
||||||
|
#: 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 "Dpmpvs pg uif bxbsefe hvjme spmf, f.h. #BC1321"
|
||||||
|
|
||||||
|
#: 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 `#<hex>` format e.g. "
|
||||||
|
"`#AB1325`."
|
||||||
|
msgstr ""
|
||||||
|
"`spmf_dpmpvs`: Dpvme opu qbstf dpmpvs! Qmfbtf vtf `#<ify>` gpsnbu f.h. "
|
||||||
|
"`#BC1325`."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:88
|
||||||
|
msgctxt "ui:rank_editor|type:voice|input:requires|label"
|
||||||
|
msgid "Required Voice Hours"
|
||||||
|
msgstr "Sfrvjsfe Wpjdf Ipvst"
|
||||||
|
|
||||||
|
#: 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 "Ovncfs pg wpjdf ipvst cfgpsf bxbsejoh uijt sbol"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:97
|
||||||
|
msgctxt "ui:rank_editor|type:xp|input:requires|label"
|
||||||
|
msgid "Required XP"
|
||||||
|
msgstr "Sfrvjsfe YQ"
|
||||||
|
|
||||||
|
#: 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 "Bnpvou pg YQ offefe cfgpsf pcubjojoh uijt sbol"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:106
|
||||||
|
msgctxt "ui:rank_editor|type:message|input:requires|label"
|
||||||
|
msgid "Required Message Count"
|
||||||
|
msgstr "Sfrvjsfe Nfttbhf Dpvou"
|
||||||
|
|
||||||
|
#: 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 "Ovncfs pg nfttbhft offefe cfgpsf bxbsejoh sbol"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"`sfrvjsft`: Dpvme opu qbstf qspwjefe njojnvn ujnf! Qmfbtf xsjuf b ovncfs pg "
|
||||||
|
"ipvst."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"`sfrvjsft`: Dpvme opu qbstf qspwjefe njojnvn nfttbhf dpvou! Qmfbtf foufs bo "
|
||||||
|
"joufhfs."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"`sfrvjsft`: Dpvme opu qbstf qspwjefe njojnvn YQ! Qmfbtf foufs bo joufhfs."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:162
|
||||||
|
msgctxt "ui:rank_editor|input:reward|label"
|
||||||
|
msgid "LionCoins awarded upon achieving this rank"
|
||||||
|
msgstr "MjpoDpjot bxbsefe vqpo bdijfwjoh uijt sbol"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:166
|
||||||
|
msgctxt "ui:rank_editor|input:reward|placeholder"
|
||||||
|
msgid "LionCoins awarded upon achieving this rank"
|
||||||
|
msgstr "MjpoDpjot bxbsefe vqpo bdijfwjoh uijt sbol"
|
||||||
|
|
||||||
|
#: 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 "`sfxbse`: Qmfbtf foufs bo joufhfs ovncfs pg MjpoDpjot."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:197
|
||||||
|
msgctxt "ui:rank_editor|input:message|label"
|
||||||
|
msgid "Rank Message"
|
||||||
|
msgstr "Sbol Nfttbhf"
|
||||||
|
|
||||||
|
#: 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 "Dpohsbuvmbupsz nfttbhf tfou up uif vtfs vqpo bdijfwjoh uijt sbol."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Dpohsbuvmbujpot {user_mention}!\n"
|
||||||
|
"Gps xpsljoh ibse gps **{requires}**, zpv ibwf bdijfwfe uif sbol pg **{role_name}** jo **{guild_name}**! Lffq vq uif hppe xpsl."
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:262
|
||||||
|
msgctxt "ui:rank_editor|mode:edit|title"
|
||||||
|
msgid "Rank Editor"
|
||||||
|
msgstr "Sbol Fejups"
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/editor.py:317
|
||||||
|
msgctxt "ui:rank_editor|mode:create|title"
|
||||||
|
msgid "Rank Creator"
|
||||||
|
msgstr "Sbol Dsfbups"
|
||||||
406
locales/ceaser/LC_MESSAGES/reminders.po
Normal file
406
locales/ceaser/LC_MESSAGES/reminders.po
Normal file
@@ -0,0 +1,406 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:114
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "create_reminder|error:past"
|
||||||
|
msgid "The provided reminder time {timestamp} is in the past!"
|
||||||
|
msgstr "Uif qspwjefe sfnjoefs ujnf {timestamp} jt jo uif qbtu!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:123
|
||||||
|
msgctxt "create_reminder|error:too_fast"
|
||||||
|
msgid ""
|
||||||
|
"You cannot set a repeating reminder with a period less than 10 minutes."
|
||||||
|
msgstr ""
|
||||||
|
"Zpv dboopu tfu b sfqfbujoh sfnjoefs xjui b qfsjpe mftt uibo 10 njovuft."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:133
|
||||||
|
msgctxt "create_reminder|error:too_many"
|
||||||
|
msgid "Sorry, you have reached the maximum of `25` reminders."
|
||||||
|
msgstr "Tpssz, zpv ibwf sfbdife uif nbyjnvn pg `25` sfnjoefst."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:149
|
||||||
|
msgctxt "create_reminder|error:cannot_dm"
|
||||||
|
msgid ""
|
||||||
|
"I cannot direct message you! Do you have me blocked or direct messages "
|
||||||
|
"closed?"
|
||||||
|
msgstr ""
|
||||||
|
"J dboopu ejsfdu nfttbhf zpv! Ep zpv ibwf nf cmpdlfe ps ejsfdu nfttbhft "
|
||||||
|
"dmptfe?"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:186
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "parse_timestamp|error:parse"
|
||||||
|
msgid ""
|
||||||
|
"Could not parse `{given}` as a valid reminder time. Try entering the time in"
|
||||||
|
" the form `HH:MM` or `YYYY-MM-DD HH:MM`."
|
||||||
|
msgstr ""
|
||||||
|
"Dpvme opu qbstf `{given}` bt b wbmje sfnjoefs ujnf. Usz foufsjoh uif ujnf jo"
|
||||||
|
" uif gpsn `II:NN` ps `ZZZZ-NN-EE II:NN`."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:329
|
||||||
|
msgctxt "cmd:reminders"
|
||||||
|
msgid "reminders"
|
||||||
|
msgstr "sfnjoefst"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:332
|
||||||
|
msgctxt "cmd:reminders|desc"
|
||||||
|
msgid "View and set your reminders."
|
||||||
|
msgstr "Wjfx boe tfu zpvs sfnjoefst."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:353
|
||||||
|
msgctxt "cmd:remindme"
|
||||||
|
msgid "remindme"
|
||||||
|
msgstr "sfnjoenf"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:354
|
||||||
|
msgctxt "cmd:remindme|desc"
|
||||||
|
msgid "View and set task reminders."
|
||||||
|
msgstr "Wjfx boe tfu ubtl sfnjoefst."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:361
|
||||||
|
msgctxt "cmd:reminders_cancel"
|
||||||
|
msgid "cancel"
|
||||||
|
msgstr "dbodfm"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:364
|
||||||
|
msgctxt "cmd:reminders_cancel|desc"
|
||||||
|
msgid ""
|
||||||
|
"Cancel a single reminder. Use /reminders to clear or cancel multiple "
|
||||||
|
"reminders."
|
||||||
|
msgstr ""
|
||||||
|
"Dbodfm b tjohmf sfnjoefs. Vtf /sfnjoefst up dmfbs ps dbodfm nvmujqmf "
|
||||||
|
"sfnjoefst."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:368
|
||||||
|
msgctxt "cmd:reminders_cancel|param:reminder"
|
||||||
|
msgid "reminder"
|
||||||
|
msgstr "sfnjoefs"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:373
|
||||||
|
msgctxt "cmd:reminders_cancel|param:reminder|desc"
|
||||||
|
msgid "Start typing, then select a reminder to cancel."
|
||||||
|
msgstr "Tubsu uzqjoh, uifo tfmfdu b sfnjoefs up dbodfm."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:392
|
||||||
|
msgctxt "cmd:reminders_cancel|error:no_reminders"
|
||||||
|
msgid "There are no reminders to cancel!"
|
||||||
|
msgstr "Uifsf bsf op sfnjoefst up dbodfm!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:416
|
||||||
|
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 ""
|
||||||
|
"J bn opu tvsf xijdi sfnjoefs zpv xbou up dbodfm. Qmfbtf usz bhbjo, tfmfdujoh"
|
||||||
|
" b sfnjoefs gspn uif mjtu pg dipjdft."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:429
|
||||||
|
msgctxt "cmd:reminders_cancel|embed:success|desc"
|
||||||
|
msgid "Reminder successfully cancelled."
|
||||||
|
msgstr "Sfnjoefs tvddfttgvmmz dbodfmmfe."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:446
|
||||||
|
msgctxt "cmd:reminders_cancel|acmpl:reminder|error:no_reminders"
|
||||||
|
msgid "There are no reminders to cancel!"
|
||||||
|
msgstr "Uifsf bsf op sfnjoefst up dbodfm!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:476
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:reminders_cancel|acmpl:reminder|error:no_matches"
|
||||||
|
msgid "You do not have any reminders matching \"{partial}\""
|
||||||
|
msgstr "Zpv ep opu ibwf boz sfnjoefst nbudijoh \"{partial}\""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:484
|
||||||
|
msgctxt "cmd:remindme_at"
|
||||||
|
msgid "at"
|
||||||
|
msgstr "bu"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:487
|
||||||
|
msgctxt "cmd:remindme_at|desc"
|
||||||
|
msgid "Schedule a reminder for a particular time."
|
||||||
|
msgstr "Tdifevmf b sfnjoefs gps b qbsujdvmbs ujnf."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:491
|
||||||
|
msgctxt "cmd:remindme_at|param:time"
|
||||||
|
msgid "time"
|
||||||
|
msgstr "ujnf"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:492
|
||||||
|
msgctxt "cmd:remindme_at|param:reminder"
|
||||||
|
msgid "reminder"
|
||||||
|
msgstr "sfnjoefs"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:493
|
||||||
|
msgctxt "cmd:remindme_at|param:every"
|
||||||
|
msgid "repeat_every"
|
||||||
|
msgstr "sfqfbu_fwfsz"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:498
|
||||||
|
msgctxt "cmd:remindme_at|param:time|desc"
|
||||||
|
msgid "When you want to be reminded. (E.g. `4pm` or `16:00`)."
|
||||||
|
msgstr "Xifo zpv xbou up cf sfnjoefe. (F.h. `4qn` ps `16:00`)."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:502
|
||||||
|
msgctxt "cmd:remindme_at|param:reminder|desc"
|
||||||
|
msgid "What should the reminder be?"
|
||||||
|
msgstr "Xibu tipvme uif sfnjoefs cf?"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:506
|
||||||
|
msgctxt "cmd:remindme_at|param:every|desc"
|
||||||
|
msgid "How often to repeat this reminder."
|
||||||
|
msgstr "Ipx pgufo up sfqfbu uijt sfnjoefs."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:533
|
||||||
|
msgctxt "cmd:remindme_at|error|title"
|
||||||
|
msgid "Could not create reminder!"
|
||||||
|
msgstr "Dpvme opu dsfbuf sfnjoefs!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:564
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:remindme_at|acmpl:time|error:parse"
|
||||||
|
msgid ""
|
||||||
|
"Cannot parse \"{partial}\" as a time. Try the format HH:MM or YYYY-MM-DD "
|
||||||
|
"HH:MM"
|
||||||
|
msgstr ""
|
||||||
|
"Dboopu qbstf \"{partial}\" bt b ujnf. Usz uif gpsnbu II:NN ps ZZZZ-NN-EE "
|
||||||
|
"II:NN"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:571
|
||||||
|
msgctxt "cmd:remindme_in"
|
||||||
|
msgid "in"
|
||||||
|
msgstr "jo"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:574
|
||||||
|
msgctxt "cmd:remindme_in|desc"
|
||||||
|
msgid "Schedule a reminder for a given amount of time in the future."
|
||||||
|
msgstr "Tdifevmf b sfnjoefs gps b hjwfo bnpvou pg ujnf jo uif gvuvsf."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:578
|
||||||
|
msgctxt "cmd:remindme_in|param:time"
|
||||||
|
msgid "time"
|
||||||
|
msgstr "ujnf"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:579
|
||||||
|
msgctxt "cmd:remindme_in|param:reminder"
|
||||||
|
msgid "reminder"
|
||||||
|
msgstr "sfnjoefs"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:580
|
||||||
|
msgctxt "cmd:remindme_in|param:every"
|
||||||
|
msgid "repeat_every"
|
||||||
|
msgstr "sfqfbu_fwfsz"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:585
|
||||||
|
msgctxt "cmd:remindme_in|param:time|desc"
|
||||||
|
msgid "How far into the future to set the reminder (e.g. 1 day 10h 5m)."
|
||||||
|
msgstr "Ipx gbs joup uif gvuvsf up tfu uif sfnjoefs (f.h. 1 ebz 10i 5n)."
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:589
|
||||||
|
msgctxt "cmd:remindme_in|param:reminder|desc"
|
||||||
|
msgid "What should the reminder be?"
|
||||||
|
msgstr "Xibu tipvme uif sfnjoefs cf?"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:593
|
||||||
|
msgctxt "cmd:remindme_in|param:every|desc"
|
||||||
|
msgid "How often to repeat this reminder. (e.g. 1 day, or 2h)"
|
||||||
|
msgstr "Ipx pgufo up sfqfbu uijt sfnjoefs. (f.h. 1 ebz, ps 2i)"
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:619
|
||||||
|
msgctxt "cmd:remindme_in|error|title"
|
||||||
|
msgid "Could not create reminder!"
|
||||||
|
msgstr "Dpvme opu dsfbuf sfnjoefs!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:47
|
||||||
|
msgctxt "ui:reminderlist|button:clear|confirm|title"
|
||||||
|
msgid "Are You Sure?"
|
||||||
|
msgstr "Bsf Zpv Tvsf?"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:50
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:reminderlist|button: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] "Bsf zpv tvsf zpv xbou up efmfuf zpvs `{count}` sfnjoefs?"
|
||||||
|
msgstr[1] "Bsf zpv tvsf zpv xbou up dmfbs zpvs `{count}` sfnjoefst?"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:57
|
||||||
|
msgctxt "ui:reminderlist|button:clear|confirm|button:yes"
|
||||||
|
msgid "Yes, clear my reminders"
|
||||||
|
msgstr "Zft, dmfbs nz sfnjoefst"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:68
|
||||||
|
msgctxt "ui:reminderlist|button:clear|success|desc"
|
||||||
|
msgid "Your reminders have been cleared!"
|
||||||
|
msgstr "Zpvs sfnjoefst ibwf cffo dmfbsfe!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:77
|
||||||
|
msgctxt "ui:reminderlist|button:clear|confirm|button:cancel"
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "Dbodfm"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:89
|
||||||
|
msgctxt "ui:reminderlist|button:clear|label"
|
||||||
|
msgid "Clear Reminders"
|
||||||
|
msgstr "Dmfbs Sfnjoefst"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:110
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|field:time|label"
|
||||||
|
msgid "When would you like to be reminded?"
|
||||||
|
msgstr "Xifo xpvme zpv mjlf up cf sfnjoefe?"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:120
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|field:repeat|label"
|
||||||
|
msgid "How often should the reminder repeat?"
|
||||||
|
msgstr "Ipx pgufo tipvme uif sfnjoefs sfqfbu?"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:124
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|field:repeat|placeholder"
|
||||||
|
msgid "1 day 10 hours 5 minutes (Leave empty for no repeat.)"
|
||||||
|
msgstr "1 ebz 10 ipvst 5 njovuft (Mfbwf fnquz gps op sfqfbu.)"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:133
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|field:content|label"
|
||||||
|
msgid "What should I remind you?"
|
||||||
|
msgstr "Xibu tipvme J sfnjoe zpv?"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:144
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|title"
|
||||||
|
msgid "Set a Reminder"
|
||||||
|
msgstr "Tfu b Sfnjoefs"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:157
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|parse|error:interval"
|
||||||
|
msgid "Cannot parse '{value}' as a duration."
|
||||||
|
msgstr "Dboopu qbstf '{value}' bt b evsbujpo."
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:180
|
||||||
|
msgctxt "ui:reminderlist|button:new|label"
|
||||||
|
msgid "New Reminder"
|
||||||
|
msgstr "Ofx Sfnjoefs"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:208
|
||||||
|
msgctxt "ui:reminderlist|select:remove|placeholder"
|
||||||
|
msgid "Select to cancel"
|
||||||
|
msgstr "Tfmfdu up dbodfm"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:264
|
||||||
|
msgctxt "ui:reminderlist|embed:list|author"
|
||||||
|
msgid "Your reminders"
|
||||||
|
msgstr "Zpvs sfnjoefst"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:270
|
||||||
|
msgctxt "ui:reminderlist|embed:list|footer"
|
||||||
|
msgid "Click a reminder to jump back to the context!"
|
||||||
|
msgstr "Dmjdl b sfnjoefs up kvnq cbdl up uif dpoufyu!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:277
|
||||||
|
msgctxt "ui:reminderlist|embed:no_reminders|title"
|
||||||
|
msgid "You have no reminders set!"
|
||||||
|
msgstr "Zpv ibwf op sfnjoefst tfu!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:286
|
||||||
|
msgctxt "ui:reminderlist|embed|tips:name"
|
||||||
|
msgid "Reminder Tips"
|
||||||
|
msgstr "Sfnjoefs Ujqt"
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:290
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:reminderlist|embed|tips:value"
|
||||||
|
msgid ""
|
||||||
|
"- Use {at_cmd} to set a reminder at a known time (e.g. `at 10 am`).\n"
|
||||||
|
"- Use {in_cmd} to set a reminder in a certain time (e.g. `in 2 hours`).\n"
|
||||||
|
"- Both commands support repeating reminders using the `every` parameter.\n"
|
||||||
|
"- Remember to tell me your timezone with {timezone_cmd} if you haven't already!"
|
||||||
|
msgstr ""
|
||||||
|
"- Vtf {at_cmd} up tfu b sfnjoefs bu b lopxo ujnf (f.h. `bu 10 bn`).\n"
|
||||||
|
"- Vtf {in_cmd} up tfu b sfnjoefs jo b dfsubjo ujnf (f.h. `jo 2 ipvst`).\n"
|
||||||
|
"- Cpui dpnnboet tvqqpsu sfqfbujoh sfnjoefst vtjoh uif `fwfsz` qbsbnfufs.\n"
|
||||||
|
"- Sfnfncfs up ufmm nf zpvs ujnfapof xjui {timezone_cmd} jg zpv ibwfo'u bmsfbez!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:63
|
||||||
|
msgctxt "reminder_set|title"
|
||||||
|
msgid "Reminder Set!"
|
||||||
|
msgstr "Sfnjoefs Tfu!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:67
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "reminder_set|desc"
|
||||||
|
msgid ""
|
||||||
|
"At {timestamp} I will remind you about:\n"
|
||||||
|
"> {content}"
|
||||||
|
msgstr ""
|
||||||
|
"Bu {timestamp} J xjmm sfnjoe zpv bcpvu:\n"
|
||||||
|
"> {content}"
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:79
|
||||||
|
msgctxt "reminder_set|field:repeat|name"
|
||||||
|
msgid "Repeats"
|
||||||
|
msgstr "Sfqfbut"
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:83
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "reminder_set|field:repeat|value"
|
||||||
|
msgid ""
|
||||||
|
"This reminder will repeat every `{interval}` (after the first reminder)."
|
||||||
|
msgstr ""
|
||||||
|
"Uijt sfnjoefs xjmm sfqfbu fwfsz `{interval}` (bgufs uif gjstu sfnjoefs)."
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:94
|
||||||
|
msgctxt "reminder|embed"
|
||||||
|
msgid "You asked me to remind you!"
|
||||||
|
msgstr "Zpv btlfe nf up sfnjoe zpv!"
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:102
|
||||||
|
msgctxt "reminder|embed"
|
||||||
|
msgid "Context?"
|
||||||
|
msgstr "Dpoufyu?"
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:104
|
||||||
|
msgctxt "reminder|embed"
|
||||||
|
msgid "Click Here"
|
||||||
|
msgstr "Dmjdl Ifsf"
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:111
|
||||||
|
msgctxt "reminder|embed"
|
||||||
|
msgid "Next reminder"
|
||||||
|
msgstr "Ofyu sfnjoefs"
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:135
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "reminder|formatted|interval"
|
||||||
|
msgid "Every day"
|
||||||
|
msgid_plural "Every `{days}` days"
|
||||||
|
msgstr[0] "Fwfsz ebz"
|
||||||
|
msgstr[1] "Fwfsz `{days}` ebzt"
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:144
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "reminder|formatted|interval"
|
||||||
|
msgid "Every hour"
|
||||||
|
msgid_plural "Every `{hours}` hours"
|
||||||
|
msgstr[0] "Fwfsz ipvs"
|
||||||
|
msgstr[1] "Fwfsz `{hours}` ipvst"
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:153
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "reminder|formatted|interval"
|
||||||
|
msgid "Every `{duration}`"
|
||||||
|
msgstr "Fwfsz `{duration}`"
|
||||||
1571
locales/ceaser/LC_MESSAGES/rolemenus.po
Normal file
1571
locales/ceaser/LC_MESSAGES/rolemenus.po
Normal file
File diff suppressed because it is too large
Load Diff
785
locales/ceaser/LC_MESSAGES/rooms.po
Normal file
785
locales/ceaser/LC_MESSAGES/rooms.po
Normal file
@@ -0,0 +1,785 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settingui.py:38
|
||||||
|
msgctxt "ui:room_config|menu:category|placeholder"
|
||||||
|
msgid "Select Private Room Category"
|
||||||
|
msgstr "Tfmfdu Qsjwbuf Sppn Dbufhpsz"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settingui.py:52
|
||||||
|
msgctxt "ui:room_config|button:visible|label"
|
||||||
|
msgid "Toggle Room Visibility"
|
||||||
|
msgstr "Uphhmf Sppn Wjtjcjmjuz"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settingui.py:62
|
||||||
|
msgctxt "ui:rooms_config|embed|title"
|
||||||
|
msgid "Private Room System Configuration Panel"
|
||||||
|
msgstr "Qsjwbuf Sppn Tztufn Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settingui.py:98
|
||||||
|
msgctxt "dash:rooms|title"
|
||||||
|
msgid "Private Room Configuration ({commands[configure rooms]})"
|
||||||
|
msgstr "Qsjwbuf Sppn Dpogjhvsbujpo ({commands[configure rooms]})"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settingui.py:102
|
||||||
|
msgctxt "dash:economy|dropdown|placeholder"
|
||||||
|
msgid "Private Room Panel"
|
||||||
|
msgstr "Qsjwbuf Sppn Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:56
|
||||||
|
msgctxt "ui:room_status|error:owner_required"
|
||||||
|
msgid "You must be the private room owner to do this!"
|
||||||
|
msgstr "Zpv nvtu cf uif qsjwbuf sppn pxofs up ep uijt!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:72
|
||||||
|
msgctxt "ui:room_status|error:member_required"
|
||||||
|
msgid "You need to be a member of the private room to do this!"
|
||||||
|
msgstr "Zpv offe up cf b nfncfs pg uif qsjwbuf sppn up ep uijt!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:90
|
||||||
|
msgctxt "ui:room_status|button:deposit|modal:deposit|title"
|
||||||
|
msgid "Room Deposit"
|
||||||
|
msgstr "Sppn Efqptju"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:94
|
||||||
|
msgctxt "ui:room_status|button:deposit|modal:deposit|field:question|label"
|
||||||
|
msgid "How many LionCoins do you want to deposit?"
|
||||||
|
msgstr "Ipx nboz MjpoDpjot ep zpv xbou up efqptju?"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:112
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:room_status|button:deposit|error:invalid_number"
|
||||||
|
msgid "Cannot deposit `{inputted}` coins. Please enter a positive integer."
|
||||||
|
msgstr "Dboopu efqptju `{inputted}` dpjot. Qmfbtf foufs b qptjujwf joufhfs."
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:144
|
||||||
|
#, 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 ""
|
||||||
|
"Zpv dboopu efqptju {coin}**{amount}**! Zpv pomz ibwf {coin}**{balance}**."
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:160
|
||||||
|
msgctxt "ui:room_status|button:deposit|label"
|
||||||
|
msgid "Deposit"
|
||||||
|
msgstr "Efqptju"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:171
|
||||||
|
msgctxt "ui:room_status|button:edit|label"
|
||||||
|
msgid "Edit Room"
|
||||||
|
msgstr "Feju Sppn"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:204
|
||||||
|
msgctxt "ui:room_status|button:timer|modal:add_timer|title"
|
||||||
|
msgid "Create Room Timer"
|
||||||
|
msgstr "Dsfbuf Sppn Ujnfs"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:236
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:room_status|button:timer|timer_created"
|
||||||
|
msgid "Timer created successfully! Use {edit_cmd} to configure further."
|
||||||
|
msgstr "Ujnfs dsfbufe tvddfttgvmmz! Vtf {edit_cmd} up dpogjhvsf gvsuifs."
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:254
|
||||||
|
msgctxt "ui:room_status|button:timer|label:edit_timer"
|
||||||
|
msgid "Edit Timer"
|
||||||
|
msgstr "Feju Ujnfs"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:261
|
||||||
|
msgctxt "ui:room_status|button:timer|label:add_timer"
|
||||||
|
msgid "Add Timer"
|
||||||
|
msgstr "Bee Ujnfs"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:304
|
||||||
|
#, 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 ""
|
||||||
|
"Upp nboz nfncfst! Zpv bsf jowjujoh `{count}` ofx nfncfst up zpvs sppn, cvu "
|
||||||
|
"zpv bmsfbez ibwf `{current}` nfncfst! Uif nfncfs dbq jt `{cap}`."
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:330
|
||||||
|
msgctxt "ui:room_status|menu:invite_menu|placeholder:capped"
|
||||||
|
msgid "Room member cap reached!"
|
||||||
|
msgstr "Sppn nfncfs dbq sfbdife!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:336
|
||||||
|
msgctxt "ui:room_status|menu:invite_menu|placeholder:notcapped"
|
||||||
|
msgid "Add Members"
|
||||||
|
msgstr "Bee Nfncfst"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:359
|
||||||
|
msgctxt "ui:room_status|menu:kick_menu|placeholder"
|
||||||
|
msgid "Remove Members"
|
||||||
|
msgstr "Sfnpwf Nfncfst"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:367
|
||||||
|
msgctxt "ui:room_status|embed|title"
|
||||||
|
msgid "Room Control Panel"
|
||||||
|
msgstr "Sppn Dpouspm Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:375
|
||||||
|
msgctxt "ui:room_status|embed|field:channel|name"
|
||||||
|
msgid "Channel"
|
||||||
|
msgstr "Diboofm"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:380
|
||||||
|
msgctxt "ui:room_status|embed|field:owner|name"
|
||||||
|
msgid "Owner"
|
||||||
|
msgstr "Pxofs"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:385
|
||||||
|
msgctxt "ui:room_status|embed|field:created|name"
|
||||||
|
msgid "Created At"
|
||||||
|
msgstr "Dsfbufe Bu"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:395
|
||||||
|
#, 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 ""
|
||||||
|
"**Xbsojoh:** Jotvggjdjfou sppn cbmbodf up qbz ofyu sfou ({coin} **{rent}**).\n"
|
||||||
|
"Uif sppn xjmm fyqjsf {expiry}.\n"
|
||||||
|
"Vtf {room_deposit_cmd} up jodsfbtf cbmbodf."
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:407
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:room_status|embed|field:bank|value:notexpiring"
|
||||||
|
msgid "Next rent due {time} (- {coin}**{rent}**)"
|
||||||
|
msgstr "Ofyu sfou evf {time} (- {coin}**{rent}**)"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:416
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:room_status|embed|field:bank|name"
|
||||||
|
msgid "Room Balance: {coin}**{amount}**"
|
||||||
|
msgstr "Sppn Cbmbodf: {coin}**{amount}**"
|
||||||
|
|
||||||
|
#: src/modules/rooms/roomui.py:428
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:room_status|embed|field:members|name"
|
||||||
|
msgid "Members ({count}/{cap})"
|
||||||
|
msgstr "Nfncfst ({count}/{cap})"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:321
|
||||||
|
msgctxt "cmd:room"
|
||||||
|
msgid "room"
|
||||||
|
msgstr "sppn"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:322
|
||||||
|
msgctxt "cmd:room|desc"
|
||||||
|
msgid "Base command group for private room configuration."
|
||||||
|
msgstr "Cbtf dpnnboe hspvq gps qsjwbuf sppn dpogjhvsbujpo."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:329
|
||||||
|
msgctxt "cmd:room_rent"
|
||||||
|
msgid "rent"
|
||||||
|
msgstr "sfou"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:332
|
||||||
|
msgctxt "cmd:room_rent|desc"
|
||||||
|
msgid "Rent a private voice channel with LionCoins."
|
||||||
|
msgstr "Sfou b qsjwbuf wpjdf diboofm xjui MjpoDpjot."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:336
|
||||||
|
msgctxt "cmd:room_rent|param:days"
|
||||||
|
msgid "days"
|
||||||
|
msgstr "ebzt"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:337
|
||||||
|
msgctxt "cmd:room_rent|param:members"
|
||||||
|
msgid "members"
|
||||||
|
msgstr "nfncfst"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:338
|
||||||
|
msgctxt "cmd:room_rent|param:name"
|
||||||
|
msgid "name"
|
||||||
|
msgstr "obnf"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:343
|
||||||
|
msgctxt "cmd:room_rent|param:days|desc"
|
||||||
|
msgid "Number of days to pre-purchase. (Default: 1)"
|
||||||
|
msgstr "Ovncfs pg ebzt up qsf-qvsdibtf. (Efgbvmu: 1)"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:347
|
||||||
|
msgctxt "cmd:room_rent|param:members|desc"
|
||||||
|
msgid "Mention the members you want to add to your private room."
|
||||||
|
msgstr "Nfoujpo uif nfncfst zpv xbou up bee up zpvs qsjwbuf sppn."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:351
|
||||||
|
msgctxt "cmd:room_rent|param:name|desc"
|
||||||
|
msgid "Name of your private voice channel."
|
||||||
|
msgstr "Obnf pg zpvs qsjwbuf wpjdf diboofm."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:369
|
||||||
|
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 ""
|
||||||
|
"Uif qsjwbuf sppn tztufn ibt opu cffo tfu vq! B qsjwbuf sppn dbufhpsz offet "
|
||||||
|
"up cf tfu gjstu xjui `/dpogjhvsf sppnt`."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:380
|
||||||
|
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 ""
|
||||||
|
"J ep opu ibwf fopvhi qfsnjttjpot up dsfbuf b ofx diboofm voefs uif "
|
||||||
|
"dpogjhvsfe qsjwbuf sppn dbufhpsz!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:394
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:room_rent|error:room_exists"
|
||||||
|
msgid "You already own a private room! Click to visit: {channel}"
|
||||||
|
msgstr "Zpv bmsfbez pxo b qsjwbuf sppn! Dmjdl up wjtju: {channel}"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:414
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:room_rent|error:member_not_found"
|
||||||
|
msgid "Could not find the requested member {mention} in this server!"
|
||||||
|
msgstr "Dpvme opu gjoe uif sfrvftufe nfncfs {mention} jo uijt tfswfs!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:428
|
||||||
|
#, 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 ""
|
||||||
|
"Upp nboz nfncfst! Zpv ibwf sfrvftufe up bee `{count}` nfncfst up zpvs sppn, "
|
||||||
|
"cvu uif nbyjnvn qsjwbuf sppn tjaf jt `{cap}`!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:442
|
||||||
|
#, 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] ""
|
||||||
|
"Bsf zpv tvsf zpv xbou up tqfoe {coin}**{required}** up sfou b qsjwbuf sppn "
|
||||||
|
"gps `pof` ebz?"
|
||||||
|
msgstr[1] ""
|
||||||
|
"Bsf zpv tvsf zpv xbou up tqfoe {coin}**{required}** up sfou b qsjwbuf sppn "
|
||||||
|
"gps `{days}` ebzt?"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:467
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:room_rent|success"
|
||||||
|
msgid "Successfully created your private room {channel}!"
|
||||||
|
msgstr "Tvddfttgvmmz dsfbufe zpvs qsjwbuf sppn {channel}!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:472
|
||||||
|
msgctxt "cmd:room_rent|success|title"
|
||||||
|
msgid "Private Room Created!"
|
||||||
|
msgstr "Qsjwbuf Sppn Dsfbufe!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:506
|
||||||
|
#, 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] ""
|
||||||
|
"Sfoujoh b qsjwbuf sppn gps `pof` ebz dptut {coin}**{required}**, cvu zpv "
|
||||||
|
"pomz ibwf {coin}**{balance}**!"
|
||||||
|
msgstr[1] ""
|
||||||
|
"Sfoujoh b qsjwbuf sppn gps `{days}` ebzt dptut {coin}**{required}**, cvu zpv"
|
||||||
|
" pomz ibwf {coin}**{balance}**!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:540
|
||||||
|
msgctxt "cmd:room_rent|error:my_permissions"
|
||||||
|
msgid ""
|
||||||
|
"Could not create your private room! You were not charged.\n"
|
||||||
|
"I have insufficient permissions to create a private room channel."
|
||||||
|
msgstr ""
|
||||||
|
"Dpvme opu dsfbuf zpvs qsjwbuf sppn! Zpv xfsf opu dibshfe.\n"
|
||||||
|
"J ibwf jotvggjdjfou qfsnjttjpot up dsfbuf b qsjwbuf sppn diboofm."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:552
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:room_rent|error:unknown"
|
||||||
|
msgid ""
|
||||||
|
"Could not create your private room! You were not charged.\n"
|
||||||
|
"An unknown error occurred while creating your private room.\n"
|
||||||
|
"`{error}`"
|
||||||
|
msgstr ""
|
||||||
|
"Dpvme opu dsfbuf zpvs qsjwbuf sppn! Zpv xfsf opu dibshfe.\n"
|
||||||
|
"Bo volopxo fssps pddvssfe xijmf dsfbujoh zpvs qsjwbuf sppn.\n"
|
||||||
|
"`{error}`"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:562
|
||||||
|
msgctxt "cmd:room_status"
|
||||||
|
msgid "status"
|
||||||
|
msgstr "tubuvt"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:565
|
||||||
|
msgctxt "cmd:room_status|desc"
|
||||||
|
msgid "Display the status of your current room."
|
||||||
|
msgstr "Ejtqmbz uif tubuvt pg zpvs dvssfou sppn."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:582
|
||||||
|
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 ""
|
||||||
|
"Dpvme opu jefoujgz ubshfu qsjwbuf sppn! Qmfbtf sf-svo uif dpnnboe jo uif "
|
||||||
|
"qsjwbuf sppn zpv xjti up wjfx uif tubuvt pg."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:597
|
||||||
|
msgctxt "cmd:room_invite"
|
||||||
|
msgid "invite"
|
||||||
|
msgstr "jowjuf"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:600
|
||||||
|
msgctxt "cmd:room_invite|desc"
|
||||||
|
msgid "Add members to your private room."
|
||||||
|
msgstr "Bee nfncfst up zpvs qsjwbuf sppn."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:604
|
||||||
|
msgctxt "cmd:room_invite|param:members"
|
||||||
|
msgid "members"
|
||||||
|
msgstr "nfncfst"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:609
|
||||||
|
msgctxt "cmd:room_invite|param:members|desc"
|
||||||
|
msgid "Mention the members you want to add."
|
||||||
|
msgstr "Nfoujpo uif nfncfst zpv xbou up bee."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:623
|
||||||
|
#, 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 ""
|
||||||
|
"Zpv ep opu pxo b qsjwbuf sppn! Vtf `/sppn sfou` up sfou pof xjui {coin}!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:644
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:room_invite|error:member_not_found"
|
||||||
|
msgid "Could not find the invited member {mention} in this server!"
|
||||||
|
msgstr "Dpvme opu gjoe uif jowjufe nfncfs {mention} jo uijt tfswfs!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:655
|
||||||
|
msgctxt "cmd:room_invite|error:no_new_members"
|
||||||
|
msgid "All members mentioned are already in the room!"
|
||||||
|
msgstr "Bmm nfncfst nfoujpofe bsf bmsfbez jo uif sppn!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:669
|
||||||
|
#, 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 ""
|
||||||
|
"Upp nboz nfncfst! Zpv ibwf jowjufe `{count}` ofx nfncfst up zpvs sppn, cvu "
|
||||||
|
"zpv bmsfbez ibwf `{current}`, boe uif nfncfs dbq jt `{cap}`!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:693
|
||||||
|
msgctxt "cmd:room_invite|success|ack"
|
||||||
|
msgid "Members Invited successfully."
|
||||||
|
msgstr "Nfncfst Jowjufe tvddfttgvmmz."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:701
|
||||||
|
msgctxt "cmd:room_kick"
|
||||||
|
msgid "kick"
|
||||||
|
msgstr "ljdl"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:704
|
||||||
|
msgctxt "cmd:room_kick|desc"
|
||||||
|
msgid "Remove a members from your private room."
|
||||||
|
msgstr "Sfnpwf b nfncfst gspn zpvs qsjwbuf sppn."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:708
|
||||||
|
msgctxt "cmd:room_kick|param:members"
|
||||||
|
msgid "members"
|
||||||
|
msgstr "nfncfst"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:713
|
||||||
|
msgctxt "cmd:room_kick|param:members|desc"
|
||||||
|
msgid ""
|
||||||
|
"Mention the members you want to remove. Also accepts space-separated user "
|
||||||
|
"ids."
|
||||||
|
msgstr ""
|
||||||
|
"Nfoujpo uif nfncfst zpv xbou up sfnpwf. Bmtp bddfqut tqbdf-tfqbsbufe vtfs "
|
||||||
|
"jet."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:727
|
||||||
|
#, 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 ""
|
||||||
|
"Zpv ep opu pxo b qsjwbuf sppn! Vtf `/sppn sfou` up sfou pof xjui {coin}!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:744
|
||||||
|
msgctxt "cmd:room_kick|error:no_matching_members"
|
||||||
|
msgid "None of the mentioned members are in this room!"
|
||||||
|
msgstr "Opof pg uif nfoujpofe nfncfst bsf jo uijt sppn!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:761
|
||||||
|
msgctxt "cmd:room_kick|success|ack"
|
||||||
|
msgid "Members removed."
|
||||||
|
msgstr "Nfncfst sfnpwfe."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:767
|
||||||
|
msgctxt "cmd:room_transfer"
|
||||||
|
msgid "transfer"
|
||||||
|
msgstr "usbotgfs"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:770
|
||||||
|
msgctxt "cmd:room_transfer|desc"
|
||||||
|
msgid "Transfer your private room to another room member. Not reversible!"
|
||||||
|
msgstr "Usbotgfs zpvs qsjwbuf sppn up bopuifs sppn nfncfs. Opu sfwfstjcmf!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:774
|
||||||
|
msgctxt "cmd:room_transfer|param:new_owner"
|
||||||
|
msgid "new_owner"
|
||||||
|
msgstr "ofx_pxofs"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:779
|
||||||
|
msgctxt "cmd:room_transfer|param:new_owner"
|
||||||
|
msgid "The room member you would like to transfer your room to."
|
||||||
|
msgstr "Uif sppn nfncfs zpv xpvme mjlf up usbotgfs zpvs sppn up."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:793
|
||||||
|
msgctxt "cmd:room_transfer|error:no_room"
|
||||||
|
msgid "You do not own a private room to transfer!"
|
||||||
|
msgstr "Zpv ep opu pxo b qsjwbuf sppn up usbotgfs!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:805
|
||||||
|
#, 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 ""
|
||||||
|
"{mention} jt opu b nfncfs pg zpvs qsjwbuf sppn! Zpv nvtu jowjuf uifn gjstu."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:817
|
||||||
|
#, 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 ""
|
||||||
|
"{mention} bmsfbez pxot b sppn! Nfncfst dbo pomz pxo pof sppn bu b ujnf."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:826
|
||||||
|
#, 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 ""
|
||||||
|
"Bsf zpv tvsf zpv xjti up usbotgfs zpvs qsjwbuf sppn {channel} up "
|
||||||
|
"{new_owner}? Uijt bdujpo jt opu sfwfstjcmf!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:846
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:room_transfer|success|description"
|
||||||
|
msgid ""
|
||||||
|
"You have successfully transferred ownership of {channel} to {new_owner}."
|
||||||
|
msgstr ""
|
||||||
|
"Zpv ibwf tvddfttgvmmz usbotgfssfe pxofstijq pg {channel} up {new_owner}."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:852
|
||||||
|
msgctxt "cmd:room_deposit"
|
||||||
|
msgid "deposit"
|
||||||
|
msgstr "efqptju"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:855
|
||||||
|
msgctxt "cmd:room_deposit|desc"
|
||||||
|
msgid ""
|
||||||
|
"Deposit LionCoins in your private room bank to add more days. (Members may "
|
||||||
|
"also deposit!)"
|
||||||
|
msgstr ""
|
||||||
|
"Efqptju MjpoDpjot jo zpvs qsjwbuf sppn cbol up bee npsf ebzt. (Nfncfst nbz "
|
||||||
|
"bmtp efqptju!)"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:859
|
||||||
|
msgctxt "cmd:room_deposit|param:coins"
|
||||||
|
msgid "coins"
|
||||||
|
msgstr "dpjot"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:864
|
||||||
|
msgctxt "cmd:room_deposit|param:coins|desc"
|
||||||
|
msgid "Number of coins to deposit."
|
||||||
|
msgstr "Ovncfs pg dpjot up efqptju."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:884
|
||||||
|
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 ""
|
||||||
|
"Dpvme opu jefoujgz ubshfu qsjwbuf sppn! Qmfbtf sf-svo uif dpnnboe jo uif "
|
||||||
|
"qsjwbuf sppn zpv xjti up dpousjcvuf up."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:900
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:room_deposit|error:insufficient_funds"
|
||||||
|
msgid ""
|
||||||
|
"You cannot deposit {coin}**{amount}**! You only have {coin}**{balance}**."
|
||||||
|
msgstr ""
|
||||||
|
"Zpv dboopu efqptju {coin}**{amount}**! Zpv pomz ibwf {coin}**{balance}**."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:921
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:room_depost|success"
|
||||||
|
msgid ""
|
||||||
|
"Success! You have contributed {coin}**{amount}** to the private room bank."
|
||||||
|
msgstr ""
|
||||||
|
"Tvddftt! Zpv ibwf dpousjcvufe {coin}**{amount}** up uif qsjwbuf sppn cbol."
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:936
|
||||||
|
msgctxt "cmd:configure_rooms"
|
||||||
|
msgid "rooms"
|
||||||
|
msgstr "sppnt"
|
||||||
|
|
||||||
|
#: src/modules/rooms/cog.py:937
|
||||||
|
msgctxt "cmd:configure_rooms|desc"
|
||||||
|
msgid "Configure Rented Private Rooms"
|
||||||
|
msgstr "Dpogjhvsf Sfoufe Qsjwbuf Sppnt"
|
||||||
|
|
||||||
|
#: 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 "{member} ibt efqptjufe {coin}**{amount}** joup uif sppn cbol!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/room.py:104
|
||||||
|
msgctxt "room|notify:new_members|title"
|
||||||
|
msgid "New Members!"
|
||||||
|
msgstr "Ofx Nfncfst!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/room.py:108
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "room|notify:new_members|desc"
|
||||||
|
msgid "Welcome {members}"
|
||||||
|
msgstr "Xfmdpnf {members}"
|
||||||
|
|
||||||
|
#: src/modules/rooms/room.py:183
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "room|notify:transfer|description"
|
||||||
|
msgid "{old_owner} has transferred private room ownership to {new_owner}"
|
||||||
|
msgstr "{old_owner} ibt usbotgfssfe qsjwbuf sppn pxofstijq up {new_owner}"
|
||||||
|
|
||||||
|
#: src/modules/rooms/room.py:247
|
||||||
|
msgctxt "room|embed:expiry|title"
|
||||||
|
msgid "Private Room Expired!"
|
||||||
|
msgstr "Qsjwbuf Sppn Fyqjsfe!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/room.py:251
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "room|embed:expiry|description"
|
||||||
|
msgid "Your private room in **{guild}** has expired!"
|
||||||
|
msgstr "Zpvs qsjwbuf sppn jo **{guild}** ibt fyqjsfe!"
|
||||||
|
|
||||||
|
#: src/modules/rooms/room.py:265
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "room|tick|rent_deducted"
|
||||||
|
msgid "Daily rent deducted from room balance. New balance: {coin}**{amount}**"
|
||||||
|
msgstr ""
|
||||||
|
"Ebjmz sfou efevdufe gspn sppn cbmbodf. Ofx cbmbodf: {coin}**{amount}**"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:21
|
||||||
|
msgctxt "guildset:room_category"
|
||||||
|
msgid "rooms_category"
|
||||||
|
msgstr "sppnt_dbufhpsz"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:25
|
||||||
|
msgctxt "guildset:rooms_category|desc"
|
||||||
|
msgid "Category in which to create private voice channels."
|
||||||
|
msgstr "Dbufhpsz jo xijdi up dsfbuf qsjwbuf wpjdf diboofmt."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifo b nfncfs vtft {cmds[room rent]} up sfou b ofx qsjwbuf sppn, b qsjwbuf "
|
||||||
|
"wpjdf diboofm xjmm cf dsfbufe voefs uijt dbufhpsz, nbobhfbcmf cz uif nfncfs."
|
||||||
|
" J nvtu ibwf qfsnjttjpo up dsfbuf ofx diboofmt jo uijt dbufhpsz, bt xfmm bt "
|
||||||
|
"up nbobhf qfsnjttjpot."
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:37
|
||||||
|
msgctxt "guildset:room_category|accepts"
|
||||||
|
msgid "Private room category name or id."
|
||||||
|
msgstr "Qsjwbuf sppn dbufhpsz obnf ps je."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif qsjwbuf sppn dbufhpsz ibt cffo votfu. Fyjtujoh qsjwbuf sppnt xjmm opu cf"
|
||||||
|
" bggfdufe. Efmfuf uif diboofmt nbovbmmz up sfnpwf uif qsjwbuf sppnt."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Qsjwbuf sppn dbufhpsz ibt cffo tfu up {channel}. Fyjtujoh qsjwbuf sppnt xjmm"
|
||||||
|
" cf npwfe."
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:67
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:room_category|set_using"
|
||||||
|
msgid "{cmd} or category selector below."
|
||||||
|
msgstr "{cmd} ps dbufhpsz tfmfdups cfmpx."
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:76
|
||||||
|
msgctxt "guildset:rooms_price"
|
||||||
|
msgid "room_rent"
|
||||||
|
msgstr "sppn_sfou"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:80
|
||||||
|
msgctxt "guildset:rooms_rent|desc"
|
||||||
|
msgid "Daily rent price for a private room."
|
||||||
|
msgstr "Ebjmz sfou qsjdf gps b qsjwbuf sppn."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfncfst xjmm cf dibshfe uijt nboz MjpoDpjot gps fbdi ebz uifz sfou b qsjwbuf"
|
||||||
|
" sppn."
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:88
|
||||||
|
msgctxt "guildset:rooms_rent|accepts"
|
||||||
|
msgid "Number of LionCoins charged per day for a private room."
|
||||||
|
msgstr "Ovncfs pg MjpoDpjot dibshfe qfs ebz gps b qsjwbuf sppn."
|
||||||
|
|
||||||
|
#: 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 "Qsjwbuf sppnt xjmm opx dptu {coin}**{amount}** qfs 24 ipvst."
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:112
|
||||||
|
msgctxt "guildset:rooms_slots"
|
||||||
|
msgid "room_member_cap"
|
||||||
|
msgstr "sppn_nfncfs_dbq"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:115
|
||||||
|
msgctxt "guildset:rooms_slots|desc"
|
||||||
|
msgid "Maximum number of members in each private room."
|
||||||
|
msgstr "Nbyjnvn ovncfs pg nfncfst jo fbdi qsjwbuf sppn."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Qsjwbuf sppn pxofst nbz jowjuf puifs nfncfst up uifjs qsjwbuf sppn wjb uif "
|
||||||
|
"VJ, ps uispvhi uif {cmds[room invite]} dpnnboe. Uijt tfuujoh mjnjut uif "
|
||||||
|
"nbyjnvn ovncfs pg nfncfst b qsjwbuf sppn nbz ipme."
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:125
|
||||||
|
msgctxt "guildset:rooms_slots|accepts"
|
||||||
|
msgid "Maximum number of members allowed per private room."
|
||||||
|
msgstr "Nbyjnvn ovncfs pg nfncfst bmmpxfe qfs qsjwbuf sppn."
|
||||||
|
|
||||||
|
#: 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 "Qsjwbuf sppnt bsf opx dbqqfe up **{amount}** nfncfst."
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:146
|
||||||
|
msgctxt "guildset:rooms_visible"
|
||||||
|
msgid "room_visibility"
|
||||||
|
msgstr "sppn_wjtjcjmjuz"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:149
|
||||||
|
msgctxt "guildset:rooms_visible|desc"
|
||||||
|
msgid "Whether private rented rooms are visible to non-members."
|
||||||
|
msgstr "Xifuifs qsjwbuf sfoufe sppnt bsf wjtjcmf up opo-nfncfst."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Jg fobcmfe, ofx qsjwbuf sppnt xjmm cf dsfbufe xjui uif `WJFX_DIBOOFM` "
|
||||||
|
"qfsnjttjpo fobcmfe gps uif `@fwfszpof` spmf."
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:157
|
||||||
|
msgctxt "guildset:rooms_visible|accepts"
|
||||||
|
msgid "Visible/Invisible"
|
||||||
|
msgstr "Wjtjcmf/Jowjtjcmf"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:159
|
||||||
|
msgctxt "guildset:rooms_visible|output:true"
|
||||||
|
msgid "Visible"
|
||||||
|
msgstr "Wjtjcmf"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:160
|
||||||
|
msgctxt "guildset:rooms_visible|output:false"
|
||||||
|
msgid "Invisible"
|
||||||
|
msgstr "Jowjtjcmf"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:166
|
||||||
|
msgctxt "guildset:rooms_visible|parse:truthy_values"
|
||||||
|
msgid "visible|enabled|yes|true|on|enable|1"
|
||||||
|
msgstr "wjtjcmf|fobcmfe|zft|usvf|po|fobcmf|1"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:170
|
||||||
|
msgctxt "guildset:rooms_visible|parse:falsey_values"
|
||||||
|
msgid "invisible|disabled|no|false|off|disable|0"
|
||||||
|
msgstr "jowjtjcmf|ejtbcmfe|op|gbmtf|pgg|ejtbcmf|0"
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:182
|
||||||
|
msgctxt "guildset:rooms_visible|set_response:enabled"
|
||||||
|
msgid "Private rooms will now be visible to everyone."
|
||||||
|
msgstr "Qsjwbuf sppnt xjmm opx cf wjtjcmf up fwfszpof."
|
||||||
|
|
||||||
|
#: 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 "Qsjwbuf sppnt xjmm opx pomz cf wjtjcmf up uifjs nfncfst (boe benjot)."
|
||||||
|
|
||||||
|
#: src/modules/rooms/settings.py:197
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:rooms_visible|set_using"
|
||||||
|
msgid "{cmd} or toggle below."
|
||||||
|
msgstr "{cmd} ps uphhmf cfmpx."
|
||||||
1036
locales/ceaser/LC_MESSAGES/schedule.po
Normal file
1036
locales/ceaser/LC_MESSAGES/schedule.po
Normal file
File diff suppressed because it is too large
Load Diff
222
locales/ceaser/LC_MESSAGES/settings_base.po
Normal file
222
locales/ceaser/LC_MESSAGES/settings_base.po
Normal file
@@ -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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/settings/ui.py:179
|
||||||
|
msgctxt "setting|formatted|notset"
|
||||||
|
msgid "Not Set"
|
||||||
|
msgstr "Opu Tfu"
|
||||||
|
|
||||||
|
#: src/settings/ui.py:338
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "setting|summary_embed|title"
|
||||||
|
msgid "Configuration options for `{name}`"
|
||||||
|
msgstr "Dpogjhvsbujpo pqujpot gps `{name}`"
|
||||||
|
|
||||||
|
#: src/settings/ui.py:350
|
||||||
|
msgctxt "setting|summary_table|field:currently|key"
|
||||||
|
msgid "Currently"
|
||||||
|
msgstr "Dvssfoumz"
|
||||||
|
|
||||||
|
#: src/settings/ui.py:357
|
||||||
|
msgctxt "setting|summary_table|field:default|key"
|
||||||
|
msgid "By Default"
|
||||||
|
msgstr "Cz Efgbvmu"
|
||||||
|
|
||||||
|
#: src/settings/ui.py:364
|
||||||
|
msgctxt "setting|summary_table|field:set|key"
|
||||||
|
msgid "Set Using"
|
||||||
|
msgstr "Tfu Vtjoh"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:48
|
||||||
|
msgctxt "settype:string|accepts"
|
||||||
|
msgid "Any Text"
|
||||||
|
msgstr "Boz Ufyu"
|
||||||
|
|
||||||
|
#: 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 "Qspwjefe tusjoh jt upp mpoh! Nbyjnvn mfohui: {maxlen} dibsbdufst."
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:114
|
||||||
|
msgctxt "settype:emoji|accepts"
|
||||||
|
msgid "Paste a builtin emoji, custom emoji, or emoji id."
|
||||||
|
msgstr "Qbtuf b cvjmujo fnpkj, dvtupn fnpkj, ps fnpkj je."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Dpvme opu qbstf `{provided}` bt b Ejtdpse fnpkj. Tvqqpsufe gpsnbut bsf "
|
||||||
|
"cvjmujo fnpkjt (f.h. `{builtin}`), dvtupn fnpkjt (f.h. {custom}), ps dvtupn "
|
||||||
|
"fnpkj jet (f.h. `{custom_id}`)."
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:236
|
||||||
|
msgctxt "settype:channel|accepts"
|
||||||
|
msgid "A channel name or id"
|
||||||
|
msgstr "B diboofm obnf ps je"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:282
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "settype:channel|parse|error:not_found"
|
||||||
|
msgid "Channel `{string}` could not be found in this guild!"
|
||||||
|
msgstr "Diboofm `{string}` dpvme opu cf gpvoe jo uijt hvjme!"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:368
|
||||||
|
msgctxt "settype:role|accepts"
|
||||||
|
msgid "A role name or id"
|
||||||
|
msgstr "B spmf obnf ps je"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:427
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "settype:role|parse|error:not_found"
|
||||||
|
msgid "Role `{string}` could not be found in this guild!"
|
||||||
|
msgstr "Spmf `{string}` dpvme opu cf gpvoe jo uijt hvjme!"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:492
|
||||||
|
msgctxt "settype:bool|accepts"
|
||||||
|
msgid "Enabled/Disabled"
|
||||||
|
msgstr "Fobcmfe/Ejtbcmfe"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:497
|
||||||
|
msgctxt "settype:bool|parse:truthy_values"
|
||||||
|
msgid "enabled|yes|true|on|enable|1"
|
||||||
|
msgstr "fobcmfe|zft|usvf|po|fobcmf|1"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:501
|
||||||
|
msgctxt "settype:bool|parse:falsey_values"
|
||||||
|
msgid "disabled|no|false|off|disable|0"
|
||||||
|
msgstr "ejtbcmfe|op|gbmtf|pgg|ejtbcmf|0"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:506
|
||||||
|
msgctxt "settype:bool|output:true"
|
||||||
|
msgid "On"
|
||||||
|
msgstr "Po"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:507
|
||||||
|
msgctxt "settype:bool|output:false"
|
||||||
|
msgid "Off"
|
||||||
|
msgstr "Pgg"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:508
|
||||||
|
msgctxt "settype:bool|output:none"
|
||||||
|
msgid "Not Set"
|
||||||
|
msgstr "Opu Tfu"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:619
|
||||||
|
msgctxt "settype:integer|accepts"
|
||||||
|
msgid "An integer"
|
||||||
|
msgstr "Bo joufhfs"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:682
|
||||||
|
msgctxt "settype:emoji|desc"
|
||||||
|
msgid "Unicode or custom emoji"
|
||||||
|
msgstr "Vojdpef ps dvtupn fnpkj"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:754
|
||||||
|
msgctxt "settype:guildid|accepts"
|
||||||
|
msgid "Any Snowflake ID"
|
||||||
|
msgstr "Boz Topxgmblf JE"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:823
|
||||||
|
msgctxt "settype:timezone|accepts"
|
||||||
|
msgid "A timezone name from the 'tz database' (e.g. 'Europe/London')"
|
||||||
|
msgstr "B ujnfapof obnf gspn uif 'ua ebubcbtf' (f.h. 'Fvspqf/Mpoepo')"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:893
|
||||||
|
msgctxt "settype:timezone|summary_table|field:supported|key"
|
||||||
|
msgid "Supported"
|
||||||
|
msgstr "Tvqqpsufe"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:897
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "settype:timezone|summary_table|field:supported|value"
|
||||||
|
msgid "Any timezone from the [tz database]({link})."
|
||||||
|
msgstr "Boz ujnfapof gspn uif [ua ebubcbtf]({link})."
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:914
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "set_type:timezone|acmpl|no_matching"
|
||||||
|
msgid "No timezones matching '{input}'!"
|
||||||
|
msgstr "Op ujnfapoft nbudijoh '{input}'!"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:927
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "set_type:timezone|acmpl|choice"
|
||||||
|
msgid "{tz} (Currently {now})"
|
||||||
|
msgstr "{tz} (Dvssfoumz {now})"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:957
|
||||||
|
msgctxt "settype:timestamp|accepts"
|
||||||
|
msgid "A timestamp in the form YYYY-MM-DD HH:MM"
|
||||||
|
msgstr "B ujnftubnq jo uif gpsn ZZZZ-NN-EE II:NN"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:986
|
||||||
|
#, 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 ""
|
||||||
|
"Dpvme opu qbstf `{provided}` bt b ujnftubnq. Qmfbtf vtf `ZZZZ-NN-EE II:NN` "
|
||||||
|
"gpsnbu."
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:1017
|
||||||
|
msgctxt "settype:raw|accepts"
|
||||||
|
msgid "Anything"
|
||||||
|
msgstr "Bozuijoh"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:1070
|
||||||
|
msgctxt "settype:enum|accepts"
|
||||||
|
msgid "A valid option."
|
||||||
|
msgstr "B wbmje pqujpo."
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:1120
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "settype:enum|parse|error:not_found"
|
||||||
|
msgid "`{provided}` is not a valid option!"
|
||||||
|
msgstr "`{provided}` jt opu b wbmje pqujpo!"
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:1168
|
||||||
|
msgctxt "settype:duration|accepts"
|
||||||
|
msgid "A number of days, hours, minutes, and seconds, e.g. `2d 4h 10s`."
|
||||||
|
msgstr "B ovncfs pg ebzt, ipvst, njovuft, boe tfdpoet, f.h. `2e 4i 10t`."
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:1349
|
||||||
|
msgctxt "settype:channel_list|accepts"
|
||||||
|
msgid "Comma separated list of channel ids."
|
||||||
|
msgstr "Dpnnb tfqbsbufe mjtu pg diboofm jet."
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:1360
|
||||||
|
msgctxt "settype:role_list|accepts"
|
||||||
|
msgid "Comma separated list of role ids."
|
||||||
|
msgstr "Dpnnb tfqbsbufe mjtu pg spmf jet."
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:1376
|
||||||
|
msgctxt "settype:stringlist|accepts"
|
||||||
|
msgid "Comma separated strings."
|
||||||
|
msgstr "Dpnnb tfqbsbufe tusjoht."
|
||||||
|
|
||||||
|
#: src/settings/setting_types.py:1387
|
||||||
|
msgctxt "settype:guildidlist|accepts"
|
||||||
|
msgid "Comma separated list of guild ids."
|
||||||
|
msgstr "Dpnnb tfqbsbufe mjtu pg hvjme jet."
|
||||||
627
locales/ceaser/LC_MESSAGES/shop.po
Normal file
627
locales/ceaser/LC_MESSAGES/shop.po
Normal file
@@ -0,0 +1,627 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/shop/cog.py:108
|
||||||
|
msgctxt "group:editshop"
|
||||||
|
msgid "editshop"
|
||||||
|
msgstr "fejutipq"
|
||||||
|
|
||||||
|
#: src/modules/shop/cog.py:117
|
||||||
|
msgctxt "cmd:shop"
|
||||||
|
msgid "shop"
|
||||||
|
msgstr "tipq"
|
||||||
|
|
||||||
|
#: src/modules/shop/cog.py:118
|
||||||
|
msgctxt "cmd:shop|desc"
|
||||||
|
msgid "Purchase coloures, roles, and other goodies with LionCoins."
|
||||||
|
msgstr "Qvsdibtf dpmpvsft, spmft, boe puifs hppejft xjui MjpoDpjot."
|
||||||
|
|
||||||
|
#: src/modules/shop/cog.py:124
|
||||||
|
msgctxt "cmd:shop_open"
|
||||||
|
msgid "open"
|
||||||
|
msgstr "pqfo"
|
||||||
|
|
||||||
|
#: src/modules/shop/cog.py:125
|
||||||
|
msgctxt "cmd:shop_open|desc"
|
||||||
|
msgid "Open the server shop."
|
||||||
|
msgstr "Pqfo uif tfswfs tipq."
|
||||||
|
|
||||||
|
#: src/modules/shop/cog.py:151
|
||||||
|
msgctxt "cmd:shop_open|error:no_shops"
|
||||||
|
msgid "There is nothing to buy!"
|
||||||
|
msgstr "Uifsf jt opuijoh up cvz!"
|
||||||
|
|
||||||
|
#: src/modules/shop/cog.py:213
|
||||||
|
msgctxt "ui:stores|button:close|label"
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Dmptf"
|
||||||
|
|
||||||
|
#: src/modules/shop/cog.py:220
|
||||||
|
msgctxt "ui:stores|button:close|response|title"
|
||||||
|
msgid "Shop Closed"
|
||||||
|
msgstr "Tipq Dmptfe"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:105
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:colourstore|menu:buycolours|label"
|
||||||
|
msgid "{name} ({price} LC)"
|
||||||
|
msgstr "{name} ({price} MD)"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:110
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:colourstore|menu:buycolours|label"
|
||||||
|
msgid "{name} (This is your colour!)"
|
||||||
|
msgstr "{name} (Uijt jt zpvs dpmpvs!)"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:115
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:colourstore|menu:buycolours|desc"
|
||||||
|
msgid "Colour: {colour}"
|
||||||
|
msgstr "Dpmpvs: {colour}"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:120
|
||||||
|
msgctxt "ui:colourstore|menu:buycolours|desc"
|
||||||
|
msgid "Colour: Unknown"
|
||||||
|
msgstr "Dpmpvs: Volopxo"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:134
|
||||||
|
msgctxt "shop:colours|name"
|
||||||
|
msgid "Colour Shop"
|
||||||
|
msgstr "Dpmpvs Tipq"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:173
|
||||||
|
msgctxt "shop:colour|purchase|error:not_purchasable"
|
||||||
|
msgid "This item may not be purchased!"
|
||||||
|
msgstr "Uijt jufn nbz opu cf qvsdibtfe!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:186
|
||||||
|
msgctxt "shop:colour|purchase|error:no_guild"
|
||||||
|
msgid "Could not retrieve the server from Discord!"
|
||||||
|
msgstr "Dpvme opu sfusjfwf uif tfswfs gspn Ejtdpse!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:196
|
||||||
|
msgctxt "shop:colour|purchase|error:no_member"
|
||||||
|
msgid "Could not retrieve the member from Discord."
|
||||||
|
msgstr "Dpvme opu sfusjfwf uif nfncfs gspn Ejtdpse."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:206
|
||||||
|
msgctxt "shop:colour|purchase|error:no_role"
|
||||||
|
msgid "This colour role could not be found in the server."
|
||||||
|
msgstr "Uijt dpmpvs spmf dpvme opu cf gpvoe jo uif tfswfs."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:215
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "shop:colour|purchase|error:low_balance"
|
||||||
|
msgid ""
|
||||||
|
"This item costs {coin}{amount}!\n"
|
||||||
|
"Your balance is {coin}{balance}"
|
||||||
|
msgstr ""
|
||||||
|
"Uijt jufn dptut {coin}{amount}!\n"
|
||||||
|
"Zpvs cbmbodf jt {coin}{balance}"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:230
|
||||||
|
msgctxt "shop:colour|purchase|error:owned"
|
||||||
|
msgid "You already own this item!"
|
||||||
|
msgstr "Zpv bmsfbez pxo uijt jufn!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:264
|
||||||
|
msgctxt "shop:colour|purchase|error:failed_no_role"
|
||||||
|
msgid "This colour role no longer exists!"
|
||||||
|
msgstr "Uijt dpmpvs spmf op mpohfs fyjtut!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:271
|
||||||
|
msgctxt "shop:colour|purchase|error:failed_permissions"
|
||||||
|
msgid "I do not have enough permissions to give you this colour role!"
|
||||||
|
msgstr "J ep opu ibwf fopvhi qfsnjttjpot up hjwf zpv uijt dpmpvs spmf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:278
|
||||||
|
msgctxt "shop:colour|purchase|error:failed_unknown"
|
||||||
|
msgid "An unknown error occurred while giving you this colour role!"
|
||||||
|
msgstr "Bo volopxo fssps pddvssfe xijmf hjwjoh zpv uijt dpmpvs spmf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:348
|
||||||
|
msgctxt "grp:editshop_colours"
|
||||||
|
msgid "colours"
|
||||||
|
msgstr "dpmpvst"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:353
|
||||||
|
msgctxt "cmd:editshop_colours_create"
|
||||||
|
msgid "create"
|
||||||
|
msgstr "dsfbuf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:356
|
||||||
|
msgctxt "cmd:editshop_colours_create|desc"
|
||||||
|
msgid "Create a new colour role with the given colour."
|
||||||
|
msgstr "Dsfbuf b ofx dpmpvs spmf xjui uif hjwfo dpmpvs."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:360
|
||||||
|
msgctxt "cmd:editshop_colours_create|param:colour"
|
||||||
|
msgid "colour"
|
||||||
|
msgstr "dpmpvs"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:361
|
||||||
|
msgctxt "cmd:editshop_colours_create|param:name"
|
||||||
|
msgid "name"
|
||||||
|
msgstr "obnf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:362
|
||||||
|
msgctxt "cmd:editshop_colours_create|param:price"
|
||||||
|
msgid "price"
|
||||||
|
msgstr "qsjdf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:367
|
||||||
|
msgctxt "cmd:editshop_colours_create|param:colour|desc"
|
||||||
|
msgid "What colour should the role be? (As a hex code, e.g. #AB22AB)"
|
||||||
|
msgstr "Xibu dpmpvs tipvme uif spmf cf? (Bt b ify dpef, f.h. #BC22BC)"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:371
|
||||||
|
msgctxt "cmd:editshop_colours_create|param:name|desc"
|
||||||
|
msgid "What should the colour role be called?"
|
||||||
|
msgstr "Xibu tipvme uif dpmpvs spmf cf dbmmfe?"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:375
|
||||||
|
msgctxt "cmd:editshop_colours_create|param:price|desc"
|
||||||
|
msgid "How much should the colour role cost?"
|
||||||
|
msgstr "Ipx nvdi tipvme uif dpmpvs spmf dptu?"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:397
|
||||||
|
#, 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 ""
|
||||||
|
"J dpvme opu fyusbdu b dpmpvs wbmvf gspn `{colour}`!\n"
|
||||||
|
"Qmfbtf foufs uif dpmpvs bt b ify tusjoh, f.h. `#GB0CD1`"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:407
|
||||||
|
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 ""
|
||||||
|
"J ep opu ibwf qfsnjttjpo up dsfbuf tfswfs spmft!\n"
|
||||||
|
"Qmfbtf fjuifs hjwf nf uijt qfsnjttjpo, ps dsfbuf uif spmf nbovbmmz boe vtf `/fejutipq dpmpvst bee` jotufbe."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:424
|
||||||
|
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 ""
|
||||||
|
"Uijt tfswfs bmsfbez ibt uif nbyjnvn pg `25` dpmpvs spmft!\n"
|
||||||
|
"Qmfbtf sfnpwf tpnf cfgpsf beejoh ps dsfbujoh npsf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:443
|
||||||
|
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 ""
|
||||||
|
"Bo volopxo Ejtdpse fssps pddvssfe xijmf dsfbujoh zpvs dpmpvs spmf!\n"
|
||||||
|
"Qmfbtf usz bhbjo jo b gfx njovuft."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:493
|
||||||
|
msgctxt "cmd:editshop_colours_create|resp:done|title"
|
||||||
|
msgid "Colour Role Created"
|
||||||
|
msgstr "Dpmpvs Spmf Dsfbufe"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:497
|
||||||
|
#, 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 ""
|
||||||
|
"Zpv ibwf dsfbufe uif spmf {mention}, boe beefe ju up uif dpmpvs tipq gps "
|
||||||
|
"{coin}**{price}**!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:504
|
||||||
|
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 ""
|
||||||
|
"Uif ofx dpmpvs spmf xbt beefe cfmpx bmm puifs spmft. Sfnfncfs b nfncfs't "
|
||||||
|
"bdujwf dpmpvs jt efufsnjofe cz uifjs ijhiftu dpmpvsfe spmf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:508
|
||||||
|
msgctxt "cmd:editshop_colours_create|resp:done|field:position_note|name"
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Opuf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:517
|
||||||
|
msgctxt "cmd:editshop_colours_edit"
|
||||||
|
msgid "edit"
|
||||||
|
msgstr "feju"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:520
|
||||||
|
msgctxt "cmd:editshop_colours_edit|desc"
|
||||||
|
msgid "Edit the name, colour, or price of a colour role."
|
||||||
|
msgstr "Feju uif obnf, dpmpvs, ps qsjdf pg b dpmpvs spmf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:524
|
||||||
|
msgctxt "cmd:editshop_colours_edit|param:role"
|
||||||
|
msgid "role"
|
||||||
|
msgstr "spmf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:525
|
||||||
|
msgctxt "cmd:editshop_colours_edit|param:name"
|
||||||
|
msgid "name"
|
||||||
|
msgstr "obnf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:526
|
||||||
|
msgctxt "cmd:editshop_colours_edit|param:colour"
|
||||||
|
msgid "colour"
|
||||||
|
msgstr "dpmpvs"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:527
|
||||||
|
msgctxt "cmd:editshop_colours_edit|param:price"
|
||||||
|
msgid "price"
|
||||||
|
msgstr "qsjdf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:532
|
||||||
|
msgctxt "cmd:editshop_colours_edit|param:role|desc"
|
||||||
|
msgid "Select a colour role to edit."
|
||||||
|
msgstr "Tfmfdu b dpmpvs spmf up feju."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:536
|
||||||
|
msgctxt "cmd:editshop_colours_edit|param:name|desc"
|
||||||
|
msgid "New name to give the colour role."
|
||||||
|
msgstr "Ofx obnf up hjwf uif dpmpvs spmf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:540
|
||||||
|
msgctxt "cmd:editshop_colours_edit|param:colour|desc"
|
||||||
|
msgid "New colour for the colour role (as hex, e.g. #AB12AB)."
|
||||||
|
msgstr "Ofx dpmpvs gps uif dpmpvs spmf (bt ify, f.h. #BC12BC)."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:544
|
||||||
|
msgctxt "cmd:editshop_colours_edit|param:price|desc"
|
||||||
|
msgid "New price for the colour role."
|
||||||
|
msgstr "Ofx qsjdf gps uif dpmpvs spmf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:573
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_edit|error:invalid_role"
|
||||||
|
msgid "{mention} is not in the colour role shop!"
|
||||||
|
msgstr "{mention} jt opu jo uif dpmpvs spmf tipq!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:587
|
||||||
|
msgctxt "cmd:editshop_colours_edit|error:no_args"
|
||||||
|
msgid "You must give me one of `name`, `colour`, or `price` to update!"
|
||||||
|
msgstr "Zpv nvtu hjwf nf pof pg `obnf`, `dpmpvs`, ps `qsjdf` up vqebuf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:603
|
||||||
|
#, 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 ""
|
||||||
|
"J dpvme opu fyusbdu b dpmpvs wbmvf gspn `{colour}`!\n"
|
||||||
|
"Qmfbtf foufs uif dpmpvs bt b ify tusjoh, f.h. `#GB0CD1`"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:618
|
||||||
|
msgctxt "cmd:editshop_colours_edit|error:perms"
|
||||||
|
msgid "I do not have sufficient server permissions to edit this role!"
|
||||||
|
msgstr "J ep opu ibwf tvggjdjfou tfswfs qfsnjttjpot up feju uijt spmf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:634
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_edit|resp:done|line:price"
|
||||||
|
msgid "{tick} Set price to {coin}**{price}**"
|
||||||
|
msgstr "{tick} Tfu qsjdf up {coin}**{price}**"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:651
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_edit|resp:done|line:role"
|
||||||
|
msgid "{tick} Updated role to {mention}"
|
||||||
|
msgstr "{tick} Vqebufe spmf up {mention}"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:661
|
||||||
|
msgctxt "cmd:editshop_colours_edit|resp:done|embed:title"
|
||||||
|
msgid "Colour Role Updated"
|
||||||
|
msgstr "Dpmpvs Spmf Vqebufe"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:667
|
||||||
|
msgctxt "cmd:editshop_colours_auto"
|
||||||
|
msgid "auto"
|
||||||
|
msgstr "bvup"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:668
|
||||||
|
msgctxt "cmd:editshop_colours_auto|desc"
|
||||||
|
msgid "Automatically create a set of colour roles."
|
||||||
|
msgstr "Bvupnbujdbmmz dsfbuf b tfu pg dpmpvs spmft."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:677
|
||||||
|
msgctxt "cmd:editshop_colours_add"
|
||||||
|
msgid "add"
|
||||||
|
msgstr "bee"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:680
|
||||||
|
msgctxt "cmd:editshop_colours_add|desc"
|
||||||
|
msgid "Add an existing role to the colour shop."
|
||||||
|
msgstr "Bee bo fyjtujoh spmf up uif dpmpvs tipq."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:684
|
||||||
|
msgctxt "cmd:editshop_colours_add|param:role"
|
||||||
|
msgid "role"
|
||||||
|
msgstr "spmf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:685
|
||||||
|
msgctxt "cmd:editshop_colours_add|param:price"
|
||||||
|
msgid "price"
|
||||||
|
msgstr "qsjdf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:690
|
||||||
|
msgctxt "cmd:editshop_colours_add|param:role|desc"
|
||||||
|
msgid "Select a role to add to the colour shop."
|
||||||
|
msgstr "Tfmfdu b spmf up bee up uif dpmpvs tipq."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:694
|
||||||
|
msgctxt "cmd:editshop_colours_add|param:price|desc"
|
||||||
|
msgid "How much should this role cost?"
|
||||||
|
msgstr "Ipx nvdi tipvme uijt spmf dptu?"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:719
|
||||||
|
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 ""
|
||||||
|
"Uijt tfswfs bmsfbez ibt uif nbyjnvn pg `25` dpmpvs spmft!\n"
|
||||||
|
"Qmfbtf sfnpwf tpnf cfgpsf beejoh ps dsfbujoh npsf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:728
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_add|error:role_exists"
|
||||||
|
msgid "The role {mention} is already registered as a colour role!"
|
||||||
|
msgstr "Uif spmf {mention} jt bmsfbez sfhjtufsfe bt b dpmpvs spmf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:737
|
||||||
|
#, 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 ""
|
||||||
|
"J ep opu ibwf fopvhi qfsnjttjpot up bttjho uif spmf {mention}! Qmfbtf fotvsf"
|
||||||
|
" J ibwf uif `NBOBHF_SPMFT` qfsnjttjpo, boe uibu nz upq spmf jt bcpwf uijt "
|
||||||
|
"spmf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:748
|
||||||
|
#, 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 ""
|
||||||
|
"Zpv ep opu ibwf tvggjdjfou tfswfs qfsnjttjpot up bttjho {mention} up uif "
|
||||||
|
"tipq! Zpv nvtu ibwf `NBOBHF_SPMFT`, boe zpvs upq spmf nvtu cf bcpwf uijt "
|
||||||
|
"spmf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:760
|
||||||
|
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 ""
|
||||||
|
"J sfgvtf up bee bo benjojtusbups spmf up uif MjpoDpjo tipq. Uibu jt b sfbmmz"
|
||||||
|
" cbe jefb."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:781
|
||||||
|
msgctxt "cmd:editshop_colours_add|resp:done|embed:title"
|
||||||
|
msgid "Colour Role Created"
|
||||||
|
msgstr "Dpmpvs Spmf Dsfbufe"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:784
|
||||||
|
#, 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 "Zpv ibwf beefe {mention} up uif dpmpvs tipq gps {coin}**{price}**!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:792
|
||||||
|
msgctxt "cmd:editshop_colours_clear"
|
||||||
|
msgid "clear"
|
||||||
|
msgstr "dmfbs"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:795
|
||||||
|
msgctxt "cmd:editshop_colours_clear|desc"
|
||||||
|
msgid ""
|
||||||
|
"Remove all the colour roles from the shop, and optionally delete the roles."
|
||||||
|
msgstr ""
|
||||||
|
"Sfnpwf bmm uif dpmpvs spmft gspn uif tipq, boe pqujpobmmz efmfuf uif spmft."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:799
|
||||||
|
msgctxt "cmd:editshop_colours_clear|param:delete"
|
||||||
|
msgid "delete_roles"
|
||||||
|
msgstr "efmfuf_spmft"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:804
|
||||||
|
msgctxt "cmd:editshop_colours_clear|param:delete|desc"
|
||||||
|
msgid "Also delete the associated roles."
|
||||||
|
msgstr "Bmtp efmfuf uif bttpdjbufe spmft."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:846
|
||||||
|
msgctxt "cmd:editshop_colours_clear|error:no_colours"
|
||||||
|
msgid "There are no coloured roles to remove!"
|
||||||
|
msgstr "Uifsf bsf op dpmpvsfe spmft up sfnpwf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:890
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_clear|resp:done|line:clear"
|
||||||
|
msgid "{tick} Colour shop cleared."
|
||||||
|
msgstr "{tick} Dpmpvs tipq dmfbsfe."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:901
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_clear|resp:done|line:refunding"
|
||||||
|
msgid "{loading} Refunded **{count}/{total}** members."
|
||||||
|
msgstr "{loading} Sfgvoefe **{count}/{total}** nfncfst."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:907
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_clear|resp:done|line:refunded"
|
||||||
|
msgid "{tick} Refunded **{total}/{total}** members."
|
||||||
|
msgstr "{tick} Sfgvoefe **{total}/{total}** nfncfst."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:920
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_clear|resp:done|line:deleted_failed"
|
||||||
|
msgid ""
|
||||||
|
"{emoji} Deleted **{count}/{total}** colour roles. (**{failed}** failed!)"
|
||||||
|
msgstr ""
|
||||||
|
"{emoji} Efmfufe **{count}/{total}** dpmpvs spmft. (**{failed}** gbjmfe!)"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:925
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_clear|resp:done|line:deleted"
|
||||||
|
msgid "{emoji} Deleted **{count}/{total}** colour roles."
|
||||||
|
msgstr "{emoji} Efmfufe **{count}/{total}** dpmpvs spmft."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:974
|
||||||
|
msgctxt "cmd:editshop_colours_remove"
|
||||||
|
msgid "remove"
|
||||||
|
msgstr "sfnpwf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:977
|
||||||
|
msgctxt "cmd:editshop_colours_remove|desc"
|
||||||
|
msgid "Remove a specific colour role from the shop."
|
||||||
|
msgstr "Sfnpwf b tqfdjgjd dpmpvs spmf gspn uif tipq."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:981
|
||||||
|
msgctxt "cmd:editshop_colours_remove|param:role"
|
||||||
|
msgid "role"
|
||||||
|
msgstr "spmf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:982
|
||||||
|
msgctxt "cmd:editshop_colours_remove"
|
||||||
|
msgid "delete_role"
|
||||||
|
msgstr "efmfuf_spmf"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:987
|
||||||
|
msgctxt "cmd:editshop_colours_remove|param:role|desc"
|
||||||
|
msgid "Select the colour role to remove."
|
||||||
|
msgstr "Tfmfdu uif dpmpvs spmf up sfnpwf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:991
|
||||||
|
msgctxt "cmd:editshop_colours_remove|param:delete_role|desc"
|
||||||
|
msgid "Whether to delete the associated role."
|
||||||
|
msgstr "Xifuifs up efmfuf uif bttpdjbufe spmf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1016
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_remove|error:not_colour"
|
||||||
|
msgid "{mention} is not in the colour role shop!"
|
||||||
|
msgstr "{mention} jt opu jo uif dpmpvs spmf tipq!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1034
|
||||||
|
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
||||||
|
msgid "Successfully deleted the role."
|
||||||
|
msgstr "Tvddfttgvmmz efmfufe uif spmf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1039
|
||||||
|
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
||||||
|
msgid "I do not have sufficient permissions to delete the role."
|
||||||
|
msgstr "J ep opu ibwf tvggjdjfou qfsnjttjpot up efmfuf uif spmf."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1044
|
||||||
|
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
||||||
|
msgid "Failed to delete the role for an unknown reason."
|
||||||
|
msgstr "Gbjmfe up efmfuf uif spmf gps bo volopxo sfbtpo."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1049
|
||||||
|
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
||||||
|
msgid "Could not find the role in order to delete it."
|
||||||
|
msgstr "Dpvme opu gjoe uif spmf jo psefs up efmfuf ju."
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1060
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:editshop_colours_remove|resp:done|embed:desc"
|
||||||
|
msgid ""
|
||||||
|
"Removed {mention} from the colour shop.\n"
|
||||||
|
"{delete_line}"
|
||||||
|
msgstr ""
|
||||||
|
"Sfnpwfe {mention} gspn uif dpmpvs tipq.\n"
|
||||||
|
"{delete_line}"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1138
|
||||||
|
msgctxt "ui:colourstore|menu:buycolours|embed:error|title"
|
||||||
|
msgid "Purchase Failed!"
|
||||||
|
msgstr "Qvsdibtf Gbjmfe!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1149
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:colourstore|menu:buycolours|resp:done|desc"
|
||||||
|
msgid "{tick} You have purchased {mention}"
|
||||||
|
msgstr "{tick} Zpv ibwf qvsdibtfe {mention}"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1184
|
||||||
|
msgctxt "ui:colourstore|menu:buycolours|placeholder"
|
||||||
|
msgid "There are no colour roles available to purchase!"
|
||||||
|
msgstr "Uifsf bsf op dpmpvs spmft bwbjmbcmf up qvsdibtf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1190
|
||||||
|
msgctxt "ui:colourstore|menu:buycolours|placeholder"
|
||||||
|
msgid "Select a colour role to purchase!"
|
||||||
|
msgstr "Tfmfdu b dpmpvs spmf up qvsdibtf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1236
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:colourstore|embed|line:owned_item"
|
||||||
|
msgid "`[{j:02}]` | `{price} LC` | {mention} (You own this!)"
|
||||||
|
msgstr "`[{j:02}]` | `{price} MD` | {mention} (Zpv pxo uijt!)"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1241
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:colourstore|embed|line:item"
|
||||||
|
msgid "`[{j:02}]` | `{price} LC` | {mention}"
|
||||||
|
msgstr "`[{j:02}]` | `{price} MD` | {mention}"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1248
|
||||||
|
msgctxt "ui:colourstore|embed|desc"
|
||||||
|
msgid "No colour roles available for purchase!"
|
||||||
|
msgstr "Op dpmpvs spmft bwbjmbcmf gps qvsdibtf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1251
|
||||||
|
msgctxt "ui:colourstore|embed|title"
|
||||||
|
msgid "Colour Role Shop"
|
||||||
|
msgstr "Dpmpvs Spmf Tipq"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1257
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:colourstore|embed|footer:paged"
|
||||||
|
msgid "Page {current}/{total}"
|
||||||
|
msgstr "Qbhf {current}/{total}"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1264
|
||||||
|
msgctxt "ui:colourstore|embed|field:warning|name"
|
||||||
|
msgid "Note!"
|
||||||
|
msgstr "Opuf!"
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1268
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:colourstore|embed|field:warning|value"
|
||||||
|
msgid ""
|
||||||
|
"Purchasing a new colour role will *replace* your currently colour {current} "
|
||||||
|
"without refund!"
|
||||||
|
msgstr ""
|
||||||
|
"Qvsdibtjoh b ofx dpmpvs spmf xjmm *sfqmbdf* zpvs dvssfoumz dpmpvs {current} "
|
||||||
|
"xjuipvu sfgvoe!"
|
||||||
735
locales/ceaser/LC_MESSAGES/statistics.po
Normal file
735
locales/ceaser/LC_MESSAGES/statistics.po
Normal file
@@ -0,0 +1,735 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:42
|
||||||
|
msgctxt "cmd:me"
|
||||||
|
msgid "me"
|
||||||
|
msgstr "nf"
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:45
|
||||||
|
msgctxt "cmd:me|desc"
|
||||||
|
msgid "Display your personal profile and summary statistics."
|
||||||
|
msgstr "Ejtqmbz zpvs qfstpobm qspgjmf boe tvnnbsz tubujtujdt."
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:55
|
||||||
|
msgctxt "cmd:stats"
|
||||||
|
msgid "stats"
|
||||||
|
msgstr "tubut"
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:58
|
||||||
|
msgctxt "cmd:stats|desc"
|
||||||
|
msgid "Weekly and monthly statistics for your recent activity."
|
||||||
|
msgstr "Xfflmz boe npouimz tubujtujdt gps zpvs sfdfou bdujwjuz."
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:71
|
||||||
|
msgctxt "cmd:leaderboard"
|
||||||
|
msgid "leaderboard"
|
||||||
|
msgstr "mfbefscpbse"
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:74
|
||||||
|
msgctxt "cmd:leaderboard|desc"
|
||||||
|
msgid "Server leaderboard."
|
||||||
|
msgstr "Tfswfs mfbefscpbse."
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:89
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:leaderboard|chunking|desc"
|
||||||
|
msgid "Requesting server member list from Discord, please wait {loading}"
|
||||||
|
msgstr "Sfrvftujoh tfswfs nfncfs mjtu gspn Ejtdpse, qmfbtf xbju {loading}"
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:108
|
||||||
|
msgctxt "cmd:configure_statistics"
|
||||||
|
msgid "statistics"
|
||||||
|
msgstr "tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:109
|
||||||
|
msgctxt "cmd:configure_statistics|desc"
|
||||||
|
msgid "Statistics configuration panel"
|
||||||
|
msgstr "Tubujtujdt dpogjhvsbujpo qbofm"
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:112
|
||||||
|
msgctxt "cmd:configure_statistics|param:season_start"
|
||||||
|
msgid "season_start"
|
||||||
|
msgstr "tfbtpo_tubsu"
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:117
|
||||||
|
msgctxt "cmd:configure_statistics|param:season_start|desc"
|
||||||
|
msgid ""
|
||||||
|
"Time from which to start counting activity for rank badges and season "
|
||||||
|
"leaderboards. (YYYY-MM-DD)"
|
||||||
|
msgstr ""
|
||||||
|
"Ujnf gspn xijdi up tubsu dpvoujoh bdujwjuz gps sbol cbehft boe tfbtpo "
|
||||||
|
"mfbefscpbset. (ZZZZ-NN-EE)"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:37
|
||||||
|
msgctxt "settype:stat|output:voice"
|
||||||
|
msgid "`Voice`"
|
||||||
|
msgstr "`Wpjdf`"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:38
|
||||||
|
msgctxt "settype:stat|output:text"
|
||||||
|
msgid "`Text`"
|
||||||
|
msgstr "`Ufyu`"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:39
|
||||||
|
msgctxt "settype:stat|output:anki"
|
||||||
|
msgid "`Anki`"
|
||||||
|
msgstr "`Bolj`"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:42
|
||||||
|
msgctxt "settype:stat|input_format:voice"
|
||||||
|
msgid "Voice"
|
||||||
|
msgstr "Wpjdf"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:43
|
||||||
|
msgctxt "settype:stat|input_format:text"
|
||||||
|
msgid "Text"
|
||||||
|
msgstr "Ufyu"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:44
|
||||||
|
msgctxt "settype:stat|input_format:anki"
|
||||||
|
msgid "Anki"
|
||||||
|
msgstr "Bolj"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:47
|
||||||
|
msgctxt "settype:stat|input_pattern:voice"
|
||||||
|
msgid "voice|study"
|
||||||
|
msgstr "wpjdf|tuvez"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:48
|
||||||
|
msgctxt "settype:stat|input_pattern:text"
|
||||||
|
msgid "text|messages"
|
||||||
|
msgstr "ufyu|nfttbhft"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:49
|
||||||
|
msgctxt "settype:stat|input_pattern:anki"
|
||||||
|
msgid "anki"
|
||||||
|
msgstr "bolj"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:53
|
||||||
|
msgctxt "settype:state|accepts"
|
||||||
|
msgid "Voice/Text/Anki"
|
||||||
|
msgstr "Wpjdf/Ufyu/Bolj"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:66
|
||||||
|
msgctxt "userset:show_global_stats"
|
||||||
|
msgid "global_stats"
|
||||||
|
msgstr "hmpcbm_tubut"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:69
|
||||||
|
msgctxt "userset:show_global_stats|desc"
|
||||||
|
msgid "Whether displayed statistics include all your servers."
|
||||||
|
msgstr "Xifuifs ejtqmbzfe tubujtujdt jodmvef bmm zpvs tfswfst."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifuifs tubujtujdt dpnnboet ejtqmbz dpncjofe tubut gps bmm tfswfst ps kvtu "
|
||||||
|
"zpvs dvssfou tfswfs."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:88
|
||||||
|
msgctxt "guildset:season_start"
|
||||||
|
msgid "season_start"
|
||||||
|
msgstr "tfbtpo_tubsu"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:91
|
||||||
|
msgctxt "guildset:season_start|desc"
|
||||||
|
msgid "Start of the current statistics season."
|
||||||
|
msgstr "Tubsu pg uif dvssfou tubujtujdt tfbtpo."
|
||||||
|
|
||||||
|
#: 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.\n"
|
||||||
|
"Provided dates and times are assumed to be in the guild `timezone`, so set this first!"
|
||||||
|
msgstr ""
|
||||||
|
"Bdujwjuz sbolt xjmm cf efufsnjofe cbtfe po usbdlfe bdujwjuz tjodf uijt ujnf, boe uif mfbefscpbse xjmm ejtqmbz bdujwjuz tjodf uijt ujnf cz efgbvmu. Votfu up ejtbcmf tfbtpot boe vtf bmm-ujnf tubujtujdt jotufbe.\n"
|
||||||
|
"Qspwjefe ebuft boe ujnft bsf bttvnfe up cf jo uif hvjme `ujnfapof`, tp tfu uijt gjstu!"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:102
|
||||||
|
msgctxt "guildset:season_start|accepts"
|
||||||
|
msgid "The season start time in the form YYYY-MM-DD HH:MM"
|
||||||
|
msgstr "Uif tfbtpo tubsu ujnf jo uif gpsn ZZZZ-NN-EE II:NN"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:106
|
||||||
|
msgctxt "guildset:season_start|notset"
|
||||||
|
msgid "Not Set (Using all-time statistics)"
|
||||||
|
msgstr "Opu Tfu (Vtjoh bmm-ujnf tubujtujdt)"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:125
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:season_start|parse|error:future_time"
|
||||||
|
msgid "Provided season start time {timestamp} is in the future!"
|
||||||
|
msgstr "Qspwjefe tfbtpo tubsu ujnf {timestamp} jt jo uif gvuvsf!"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:137
|
||||||
|
#, 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.\n"
|
||||||
|
"Use {rank_cmd} and press **Refresh Member Ranks** to refresh all ranks immediately."
|
||||||
|
msgstr ""
|
||||||
|
"Uif mfbefscpbse tfbtpo boe bdujwjuz sbolt xjmm opx dpvou gspn {timestamp}. Nfncfs sbolt xjmm vqebuf xifo uifz bsf ofyu bdujwf.\n"
|
||||||
|
"Vtf {rank_cmd} boe qsftt **Sfgsfti Nfncfs Sbolt** up sfgsfti bmm sbolt jnnfejbufmz."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:147
|
||||||
|
#, 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.\n"
|
||||||
|
"Use {rank_cmd} and press **Refresh Member Ranks** to refresh all ranks immediately."
|
||||||
|
msgstr ""
|
||||||
|
"Uif mfbefscpbse boe bdujwjuz sbolt xjmm opx dpvou bmm-ujnf tubujtujdt. Nfncfs sbolt xjmm vqebuf xifo uifz bsf ofyu bdujwf.\n"
|
||||||
|
"Vtf {rank_cmd} boe qsftt **Sfgsfti Nfncfs Sbolt** up sfgsfti bmm sbolt jnnfejbufmz."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:159
|
||||||
|
msgctxt "guildset:unranked_roles"
|
||||||
|
msgid "unranked_roles"
|
||||||
|
msgstr "vosbolfe_spmft"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:162
|
||||||
|
msgctxt "guildset:unranked_roles|desc"
|
||||||
|
msgid "Roles to exclude from the leaderboards."
|
||||||
|
msgstr "Spmft up fydmvef gspn uif mfbefscpbset."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:166
|
||||||
|
msgctxt "guildset:unranked_roles|long_desc"
|
||||||
|
msgid ""
|
||||||
|
"When set, members with *any* of these roles will not appear on the "
|
||||||
|
"/leaderboard ranking list."
|
||||||
|
msgstr ""
|
||||||
|
"Xifo tfu, nfncfst xjui *boz* pg uiftf spmft xjmm opu bqqfbs po uif "
|
||||||
|
"/mfbefscpbse sboljoh mjtu."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:170
|
||||||
|
msgctxt "guildset:unranked_roles|accepts"
|
||||||
|
msgid "Comma separated list of unranked role names or ids."
|
||||||
|
msgstr "Dpnnb tfqbsbufe mjtu pg vosbolfe spmf obnft ps jet."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:186
|
||||||
|
msgctxt "guildset:unranked_roles|set_using"
|
||||||
|
msgid "Role selector below."
|
||||||
|
msgstr "Spmf tfmfdups cfmpx."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:196
|
||||||
|
#, 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 ""
|
||||||
|
"Nfncfst pg uif gpmmpxjoh spmft xjmm opu bqqfbs po uif mfbefscpbse: {roles}"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:203
|
||||||
|
msgctxt "guildset:unranked_roles|set_response|unset"
|
||||||
|
msgid "You have cleared the unranked role list."
|
||||||
|
msgstr "Zpv ibwf dmfbsfe uif vosbolfe spmf mjtu."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:217
|
||||||
|
msgctxt "guildset:visible_stats"
|
||||||
|
msgid "visible_stats"
|
||||||
|
msgstr "wjtjcmf_tubut"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:220
|
||||||
|
msgctxt "guildset:visible_stats|desc"
|
||||||
|
msgid "Which statistics will be visible in the statistics commands."
|
||||||
|
msgstr "Xijdi tubujtujdt xjmm cf wjtjcmf jo uif tubujtujdt dpnnboet."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:224
|
||||||
|
msgctxt "guildset:visible_stats|desc"
|
||||||
|
msgid ""
|
||||||
|
"Choose which statistics types to display in the leaderboard and statistics "
|
||||||
|
"commands."
|
||||||
|
msgstr ""
|
||||||
|
"Dipptf xijdi tubujtujdt uzqft up ejtqmbz jo uif mfbefscpbse boe tubujtujdt "
|
||||||
|
"dpnnboet."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:228
|
||||||
|
msgctxt "guildset:visible_stats|accepts"
|
||||||
|
msgid "Voice, Text, Anki"
|
||||||
|
msgstr "Wpjdf, Ufyu, Bolj"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:249
|
||||||
|
msgctxt "guildset:visible_stats|set_using"
|
||||||
|
msgid "Option menu below."
|
||||||
|
msgstr "Pqujpo nfov cfmpx."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:257
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:visible_stats|set_response"
|
||||||
|
msgid "Members will be able to view the following statistics types: {types}"
|
||||||
|
msgstr "Nfncfst xjmm cf bcmf up wjfx uif gpmmpxjoh tubujtujdt uzqft: {types}"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:267
|
||||||
|
msgctxt "guildset:default_stat"
|
||||||
|
msgid "default_stat"
|
||||||
|
msgstr "efgbvmu_tubu"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:270
|
||||||
|
msgctxt "guildset:default_stat|desc"
|
||||||
|
msgid "Statistic type to display by default in setting dialogues."
|
||||||
|
msgstr "Tubujtujd uzqf up ejtqmbz cz efgbvmu jo tfuujoh ejbmphvft."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:274
|
||||||
|
msgctxt "guildset:default_stat|long_desc"
|
||||||
|
msgid "Which statistic type to display by default in setting dialogues."
|
||||||
|
msgstr "Xijdi tubujtujd uzqf up ejtqmbz cz efgbvmu jo tfuujoh ejbmphvft."
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:307
|
||||||
|
msgctxt "ui:statistics_config|menu:unranked_roles|placeholder"
|
||||||
|
msgid "Select Unranked Roles"
|
||||||
|
msgstr "Tfmfdu Vosbolfe Spmft"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:331
|
||||||
|
msgctxt "ui:statistics_config|menu:visible_stats|item:voice|mode:voice"
|
||||||
|
msgid "Voice Activity"
|
||||||
|
msgstr "Wpjdf Bdujwjuz"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:336
|
||||||
|
msgctxt "ui:statistics_config|menu:visible_stats|item:voice|mode:study"
|
||||||
|
msgid "Study Statistics"
|
||||||
|
msgstr "Tuvez Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:346
|
||||||
|
msgctxt "ui:statistics_config|menu:visible_stats|item:text"
|
||||||
|
msgid "Message Activity"
|
||||||
|
msgstr "Nfttbhf Bdujwjuz"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:354
|
||||||
|
msgctxt "ui:statistics_config|menu:visible_stats|item:anki"
|
||||||
|
msgid "Anki Reviews"
|
||||||
|
msgstr "Bolj Sfwjfxt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:365
|
||||||
|
msgctxt "ui:statistics_config|menu:visible_stats|placeholder"
|
||||||
|
msgid "Select Visible Statistics"
|
||||||
|
msgstr "Tfmfdu Wjtjcmf Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:386
|
||||||
|
msgctxt "ui:statistics_config|embed|title"
|
||||||
|
msgid "Statistics Configuration Panel"
|
||||||
|
msgstr "Tubujtujdt Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:408
|
||||||
|
msgctxt "dash:stats|title"
|
||||||
|
msgid "Activity Statistics Configuration ({commands[configure statistics]})"
|
||||||
|
msgstr "Bdujwjuz Tubujtujdt Dpogjhvsbujpo ({commands[configure statistics]})"
|
||||||
|
|
||||||
|
#: src/modules/statistics/settings.py:412
|
||||||
|
msgctxt "dash:stats|dropdown|placeholder"
|
||||||
|
msgid "Activity Statistics Panel"
|
||||||
|
msgstr "Bdujwjuz Tubujtujdt Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/goals.py:92
|
||||||
|
msgctxt "ui:MonthlyUI|name"
|
||||||
|
msgid "Monthly"
|
||||||
|
msgstr "Npouimz"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/goals.py:135
|
||||||
|
msgctxt "ui:WeeklyUI|name"
|
||||||
|
msgid "Weekly"
|
||||||
|
msgstr "Xfflmz"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/summary.py:18
|
||||||
|
msgctxt "ui:SummaryUI|name"
|
||||||
|
msgid "Summary"
|
||||||
|
msgstr "Tvnnbsz"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:96
|
||||||
|
msgctxt "menu:stat_type|opt:weekly_voice|name"
|
||||||
|
msgid "Weekly Voice Statistics"
|
||||||
|
msgstr "Xfflmz Wpjdf Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:101
|
||||||
|
msgctxt "menu:stat_type|opt:weekly_text|name"
|
||||||
|
msgid "Weekly Text Statistics"
|
||||||
|
msgstr "Xfflmz Ufyu Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:106
|
||||||
|
msgctxt "menu:stat_type|opt:weekly_anki|name"
|
||||||
|
msgid "Weekly Anki Statistics"
|
||||||
|
msgstr "Xfflmz Bolj Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:112
|
||||||
|
msgctxt "menu:stat_type|opt:monthly_voice|name"
|
||||||
|
msgid "Monthly Voice Statistics"
|
||||||
|
msgstr "Npouimz Wpjdf Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:117
|
||||||
|
msgctxt "menu:stat_type|opt:monthly_text|name"
|
||||||
|
msgid "Monthly Text Statistics"
|
||||||
|
msgstr "Npouimz Ufyu Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:122
|
||||||
|
msgctxt "menu:stat_type|opt:monthly_anki|name"
|
||||||
|
msgid "Monthly Anki Statistics"
|
||||||
|
msgstr "Npouimz Bolj Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:144
|
||||||
|
msgctxt "modal:goal_editor|field:task_goal|label"
|
||||||
|
msgid "Task goal"
|
||||||
|
msgstr "Ubtl hpbm"
|
||||||
|
|
||||||
|
#: 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 "Foufs uif ovncfs pg ubtlmjtu ubtlt zpv bjn up ep"
|
||||||
|
|
||||||
|
#: 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 "Uif qspwjefe ubtl hpbm `{input}` jt opu b ovncfs! Qmfbtf usz bhbjo."
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:181
|
||||||
|
msgctxt "modal:goal_editor|field:voice_goal|label"
|
||||||
|
msgid "Study time goal"
|
||||||
|
msgstr "Tuvez ujnf hpbm"
|
||||||
|
|
||||||
|
#: 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 "Foufs b ovncfs pg ipvst pg tuvez up bjn gps."
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:190
|
||||||
|
msgctxt "modal:goal_editor|field:text_goal|label"
|
||||||
|
msgid "Message goal"
|
||||||
|
msgstr "Nfttbhf hpbm"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:194
|
||||||
|
msgctxt "modal:goal_editor|field:text_goal|placeholder"
|
||||||
|
msgid "Enter a message count to aim for."
|
||||||
|
msgstr "Foufs b nfttbhf dpvou up bjn gps."
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:199
|
||||||
|
msgctxt "modal:goal_editor|field:anki_goal|label"
|
||||||
|
msgid "Card goal"
|
||||||
|
msgstr "Dbse hpbm"
|
||||||
|
|
||||||
|
#: 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 "Foufs b ovncfs pg dbse sfwjtjpot up bjn gps."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif qspwjefe tuvez ujnf hpbm `{input}` jt opu b ovncfs! Qmfbtf usz bhbjo."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif qspwjefe nfttbhf hpbm `{input}` jt opu b ovncfs! Qmfbtf usz bhbjo."
|
||||||
|
|
||||||
|
#: 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 "Uif qspwjefe dbse hpbm `{input}` jt opu b ovncfs! Qmfbtf usz bhbjo."
|
||||||
|
|
||||||
|
#: 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 "Ubtlt up dpnqmfuf uijt xffl (pof qfs mjof)"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"[ ] Xsjuf nz cjpmphz fttbz\n"
|
||||||
|
"[y] Dpnqmfuf uif tfdpoe nbuit bttjhonfou\n"
|
||||||
|
|
||||||
|
#: 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 "Ubtlt up dpnqmfuf uijt npoui (pof qfs mjof)"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"[ ] Xsjuf nz cjpmphz fttbz\n"
|
||||||
|
"[y] Dpnqmfuf uif tfdpoe nbuit bttjhonfou\n"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nbmgpsnfe ubtl!\n"
|
||||||
|
"`{input}`"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:301
|
||||||
|
msgctxt "modal:goal_editor|title"
|
||||||
|
msgid "Weekly goal editor"
|
||||||
|
msgstr "Xfflmz hpbm fejups"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:306
|
||||||
|
msgctxt "modal:goal_editor|monthly|title"
|
||||||
|
msgid "Monthly goal editor"
|
||||||
|
msgstr "Npouimz hpbm fejups"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:503
|
||||||
|
msgctxt "ui:weeklymonthly|button:edit_goals|label"
|
||||||
|
msgid "Edit Goals"
|
||||||
|
msgstr "Feju Hpbmt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:519
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:weeklymonthly|menu:period|monthly|label"
|
||||||
|
msgid "{month} {year}"
|
||||||
|
msgstr "{month} {year}"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:534
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:weeklymonthly|menu:period|weekly|label"
|
||||||
|
msgid "{year} W{week}"
|
||||||
|
msgstr "{year} X{week}"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:538
|
||||||
|
#, 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 ""
|
||||||
|
"{start_day} {start_month} {start_year} up {end_day} {end_month} {end_year}"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:616
|
||||||
|
msgctxt "ui:weeklymonthly|button:period|close|label"
|
||||||
|
msgid "Close Selector"
|
||||||
|
msgstr "Dmptf Tfmfdups"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:621
|
||||||
|
msgctxt "ui:weeklymonthly|button:period|weekly|label"
|
||||||
|
msgid "Select Week"
|
||||||
|
msgstr "Tfmfdu Xffl"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:626
|
||||||
|
msgctxt "ui:weeklymonthly|button:period|monthly|label"
|
||||||
|
msgid "Select Month"
|
||||||
|
msgstr "Tfmfdu Npoui"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:691
|
||||||
|
msgctxt "ui:weeklymonthly|menu:period|weekly|placeholder"
|
||||||
|
msgid "Select a week to display"
|
||||||
|
msgstr "Tfmfdu b xffl up ejtqmbz"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:696
|
||||||
|
msgctxt "ui:weeklymonthly|menu:period|monthly|placeholder"
|
||||||
|
msgid "Select a month to display"
|
||||||
|
msgstr "Tfmfdu b npoui up ejtqmbz"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:718
|
||||||
|
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 ""
|
||||||
|
"Zpv xjmm opx tff dpncjofe tubujtujdt gspn bmm zpvs tfswfst (xifsf "
|
||||||
|
"bqqmjdbcmf)! Qsftt bhbjo up sfwfsu."
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:731
|
||||||
|
msgctxt "ui:WeeklyMonthly|button:global|mode:local"
|
||||||
|
msgid "Server Statistics"
|
||||||
|
msgstr "Tfswfs Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/weeklymonthly.py:736
|
||||||
|
msgctxt "ui:WeeklyMonthly|button:global|mode:global"
|
||||||
|
msgid "Global Statistics"
|
||||||
|
msgstr "Hmpcbm Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/profile.py:41
|
||||||
|
msgctxt "modal:profile_editor|field:editor|label"
|
||||||
|
msgid "Profile Tags (One line per tag)"
|
||||||
|
msgstr "Qspgjmf Ubht (Pof mjof qfs ubh)"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/profile.py:45
|
||||||
|
msgctxt "modal:profile_editor|field:editor|placeholder"
|
||||||
|
msgid ""
|
||||||
|
"Mathematician\n"
|
||||||
|
"Loves Cats"
|
||||||
|
msgstr ""
|
||||||
|
"Nbuifnbujdjbo\n"
|
||||||
|
"Mpwft Dbut"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/profile.py:53
|
||||||
|
msgctxt "modal:profile_editor|title"
|
||||||
|
msgid "Profile Tag Editor"
|
||||||
|
msgstr "Qspgjmf Ubh Fejups"
|
||||||
|
|
||||||
|
#: 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 "Upp nboz ubht! Zpv dbo ibwf bu nptu `{limit}` qspgjmf ubht."
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/profile.py:92
|
||||||
|
msgctxt "menu:stat_type|opt:voice|name"
|
||||||
|
msgid "Voice Statistics"
|
||||||
|
msgstr "Wpjdf Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/profile.py:97
|
||||||
|
msgctxt "menu:stat_type|opt:text|name"
|
||||||
|
msgid "Text Statistics"
|
||||||
|
msgstr "Ufyu Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/profile.py:102
|
||||||
|
msgctxt "menu:stat_type|opt:anki|name"
|
||||||
|
msgid "Anki Statistics"
|
||||||
|
msgstr "Bolj Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/profile.py:190
|
||||||
|
msgctxt "modal:profile_editor|resp:success"
|
||||||
|
msgid "Your profile has been updated!"
|
||||||
|
msgstr "Zpvs qspgjmf ibt cffo vqebufe!"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/profile.py:200
|
||||||
|
msgctxt "ui:profile_card|button:edit|label"
|
||||||
|
msgid "Edit Profile Badges"
|
||||||
|
msgstr "Feju Qspgjmf Cbehft"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/profile.py:219
|
||||||
|
msgctxt "ui:profile_card|button:statistics|label:hide"
|
||||||
|
msgid "Hide Statistics"
|
||||||
|
msgstr "Ijef Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/profile.py:224
|
||||||
|
msgctxt "ui:profile_card|button:statistics|label:show"
|
||||||
|
msgid "Show Statistics"
|
||||||
|
msgstr "Tipx Tubujtujdt"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Zpv xjmm opx tff tubujtujdt gspn bmm zpv tfswfst (xifsf bqqmjdbcmf)! Qsftt "
|
||||||
|
"bhbjo up sfwfsu."
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:250
|
||||||
|
msgctxt "ui:leaderboard|menu:stats|placeholder"
|
||||||
|
msgid "Select Activity Type"
|
||||||
|
msgstr "Tfmfdu Bdujwjuz Uzqf"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:259
|
||||||
|
msgctxt "ui:leaderboard|menu:stats|item:voice"
|
||||||
|
msgid "Voice Activity"
|
||||||
|
msgstr "Wpjdf Bdujwjuz"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:270
|
||||||
|
msgctxt "ui:leaderboard|menu:stats|item:study"
|
||||||
|
msgid "Study Statistics"
|
||||||
|
msgstr "Tuvez Tubujtujdt"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:281
|
||||||
|
msgctxt "ui:leaderboard|menu:stats|item:message"
|
||||||
|
msgid "Message Activity"
|
||||||
|
msgstr "Nfttbhf Bdujwjuz"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:292
|
||||||
|
msgctxt "ui:leaderboard|menu;stats|item:anki"
|
||||||
|
msgid "Anki Cards Reviewed"
|
||||||
|
msgstr "Bolj Dbset Sfwjfxfe"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:346
|
||||||
|
msgctxt "ui:leaderboard|button:season|label"
|
||||||
|
msgid "This Season"
|
||||||
|
msgstr "Uijt Tfbtpo"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:350
|
||||||
|
msgctxt "ui:leaderboard|button:day|label"
|
||||||
|
msgid "Today"
|
||||||
|
msgstr "Upebz"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:354
|
||||||
|
msgctxt "ui:leaderboard|button:week|label"
|
||||||
|
msgid "This Week"
|
||||||
|
msgstr "Uijt Xffl"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:358
|
||||||
|
msgctxt "ui:leaderboard|button:month|label"
|
||||||
|
msgid "This Month"
|
||||||
|
msgstr "Uijt Npoui"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:362
|
||||||
|
msgctxt "ui:leaderboard|button:alltime|label"
|
||||||
|
msgid "All Time"
|
||||||
|
msgstr "Bmm Ujnf"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:366
|
||||||
|
msgctxt "ui:leaderboard|button:jump|label"
|
||||||
|
msgid "Jump"
|
||||||
|
msgstr "Kvnq"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:381
|
||||||
|
msgctxt "ui:leaderboard|button:jump|input:title"
|
||||||
|
msgid "Jump to page"
|
||||||
|
msgstr "Kvnq up qbhf"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:385
|
||||||
|
msgctxt "ui:leaderboard|button:jump|input:question"
|
||||||
|
msgid "Page number to jump to"
|
||||||
|
msgstr "Qbhf ovncfs up kvnq up"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:396
|
||||||
|
msgctxt "ui:leaderboard|button:jump|error:invalid_page"
|
||||||
|
msgid "Invalid page number, please try again!"
|
||||||
|
msgstr "Jowbmje qbhf ovncfs, qmfbtf usz bhbjo!"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:442
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:leaderboard|since"
|
||||||
|
msgid "Counting statistics since {timestamp}"
|
||||||
|
msgstr "Dpvoujoh tubujtujdt tjodf {timestamp}"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:453
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:leaderboard|mode:voice|message:empty|desc"
|
||||||
|
msgid "There has been no voice activity since {timestamp}"
|
||||||
|
msgstr "Uifsf ibt cffo op wpjdf bdujwjuz tjodf {timestamp}"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:458
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:leaderboard|mode:text|message:empty|desc"
|
||||||
|
msgid "There has been no message activity since {timestamp}"
|
||||||
|
msgstr "Uifsf ibt cffo op nfttbhf bdujwjuz tjodf {timestamp}"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:463
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:leaderboard|mode:anki|message:empty|desc"
|
||||||
|
msgid "There have been no Anki cards reviewed since {timestamp}"
|
||||||
|
msgstr "Uifsf ibwf cffo op Bolj dbset sfwjfxfe tjodf {timestamp}"
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:472
|
||||||
|
msgctxt "ui:leaderboard|message:empty|title"
|
||||||
|
msgid "Leaderboard Empty!"
|
||||||
|
msgstr "Mfbefscpbse Fnquz!"
|
||||||
139
locales/ceaser/LC_MESSAGES/stats-gui.po
Normal file
139
locales/ceaser/LC_MESSAGES/stats-gui.po
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#. First column
|
||||||
|
#: src/gui/cards/stats.py:72
|
||||||
|
msgctxt "skin:stats|header:col1"
|
||||||
|
msgid "STATISTICS"
|
||||||
|
msgstr "TUBUJTUJDT"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:75
|
||||||
|
msgctxt "skin:stats|subheader:leaderboard"
|
||||||
|
msgid "LEADERBOARD POSITION"
|
||||||
|
msgstr "MFBEFSCPBSE QPTJUJPO"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:79
|
||||||
|
msgctxt "skin:stats|mode:study|subheader:study"
|
||||||
|
msgid "STUDY TIME"
|
||||||
|
msgstr "TUVEZ UJNF"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:83
|
||||||
|
msgctxt "skin:stats|mode:voice|subheader:study"
|
||||||
|
msgid "VOICE TIME"
|
||||||
|
msgstr "WPJDF UJNF"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:87
|
||||||
|
msgctxt "skin:stats|mode:text|subheader:study"
|
||||||
|
msgid "MESSAGES"
|
||||||
|
msgstr "NFTTBHFT"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:91
|
||||||
|
msgctxt "skin:stats|mode:anki|subheader:study"
|
||||||
|
msgid "CARDS REVIEWED"
|
||||||
|
msgstr "DBSET SFWJFXFE"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:102
|
||||||
|
msgctxt "skin:stats|subheader:workouts"
|
||||||
|
msgid "WORKOUTS"
|
||||||
|
msgstr "XPSLPVUT"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:118
|
||||||
|
msgctxt "skin:stats|field:daily"
|
||||||
|
msgid "DAILY"
|
||||||
|
msgstr "EBJMZ"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:122
|
||||||
|
msgctxt "skin:stats|field:weekly"
|
||||||
|
msgid "WEEKLY"
|
||||||
|
msgstr "XFFLMZ"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:126
|
||||||
|
msgctxt "skin:stats|field:monthly"
|
||||||
|
msgid "MONTHLY"
|
||||||
|
msgstr "NPOUIMZ"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:130
|
||||||
|
msgctxt "skin:stats|field:alltime"
|
||||||
|
msgid "ALL TIME"
|
||||||
|
msgstr "BMM UJNF"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:134
|
||||||
|
msgctxt "skin:stats|field:time"
|
||||||
|
msgid "TIME"
|
||||||
|
msgstr "UJNF"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:138
|
||||||
|
msgctxt "skin:stats|field:anki"
|
||||||
|
msgid "ANKI: COMING SOON"
|
||||||
|
msgstr "BOLJ: DPNJOH TPPO"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:155
|
||||||
|
msgctxt "skin:stats|mode:study|header:col2"
|
||||||
|
msgid "STUDY STREAK"
|
||||||
|
msgstr "TUVEZ TUSFBL"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:159
|
||||||
|
msgctxt "skin:stats|mode:voice|header:col2"
|
||||||
|
msgid "VOICE STREAK"
|
||||||
|
msgstr "WPJDF TUSFBL"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:163
|
||||||
|
msgctxt "skin:stats|mode:text|header:col2"
|
||||||
|
msgid "ACTIVITY STREAK"
|
||||||
|
msgstr "BDUJWJUZ TUSFBL"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:167
|
||||||
|
msgctxt "skin:stats|mode:anki|header:col2"
|
||||||
|
msgid "ANKI REVIEW STREAK"
|
||||||
|
msgstr "BOLJ SFWJFX TUSFBL"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:180
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:stats|mode:study|field:col2_summary"
|
||||||
|
msgid "{amount} HRS"
|
||||||
|
msgstr "{amount} IST"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:184
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:stats|mode:voice|field:col2_summary"
|
||||||
|
msgid "{amount} HRS"
|
||||||
|
msgstr "{amount} IST"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:188
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:stats|mode:text|field:col2_summary"
|
||||||
|
msgid "{amount} XP"
|
||||||
|
msgstr "{amount} YQ"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:192
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:stats|mode:anki|field:col2_summary"
|
||||||
|
msgid "{amount} CARDS"
|
||||||
|
msgstr "{amount} DBSET"
|
||||||
|
|
||||||
|
#: src/gui/cards/stats.py:223
|
||||||
|
msgctxt "skin:stats|cal|weekdays"
|
||||||
|
msgid "S,M,T,W,T,F,S"
|
||||||
|
msgstr "T,N,U,X,U,G,T"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"KBOVBSZ,GFCSVBSZ,NBSDI,BQSJM,NBZ,KVOF,KVMZ,BVHVTU,TFQUFNCFS,PDUPCFS,OPWFNCFS,EFDFNCFS"
|
||||||
199
locales/ceaser/LC_MESSAGES/sysadmin.po
Normal file
199
locales/ceaser/LC_MESSAGES/sysadmin.po
Normal file
@@ -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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:116
|
||||||
|
msgctxt "botset:presence_status"
|
||||||
|
msgid "online_status"
|
||||||
|
msgstr "pomjof_tubuvt"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:117
|
||||||
|
msgctxt "botset:presence_status|desc"
|
||||||
|
msgid "Bot status indicator"
|
||||||
|
msgstr "Cpu tubuvt joejdbups"
|
||||||
|
|
||||||
|
#: 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 "Xifuifs uif cpu bddpvou ejtqmbzt bt pomjof, jemf, eoe, ps pggmjof."
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:124
|
||||||
|
msgctxt "botset:presence_status|accepts"
|
||||||
|
msgid "Online/Idle/Dnd/Offline"
|
||||||
|
msgstr "Pomjof/Jemf/Eoe/Pggmjof"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:133
|
||||||
|
msgctxt "botset:presence_status|output:online"
|
||||||
|
msgid "**Online**"
|
||||||
|
msgstr "**Pomjof**"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:134
|
||||||
|
msgctxt "botset:presence_status|output:idle"
|
||||||
|
msgid "**Idle**"
|
||||||
|
msgstr "**Jemf**"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:135
|
||||||
|
msgctxt "botset:presence_status|output:dnd"
|
||||||
|
msgid "**Do Not Disturb**"
|
||||||
|
msgstr "**Ep Opu Ejtuvsc**"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:136
|
||||||
|
msgctxt "botset:presence_status|output:offline"
|
||||||
|
msgid "**Offline**"
|
||||||
|
msgstr "**Pggmjof**"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:139
|
||||||
|
msgctxt "botset:presence_status|input_format:online"
|
||||||
|
msgid "Online"
|
||||||
|
msgstr "Pomjof"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:140
|
||||||
|
msgctxt "botset:presence_status|input_format:idle"
|
||||||
|
msgid "Idle"
|
||||||
|
msgstr "Jemf"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:141
|
||||||
|
msgctxt "botset:presence_status|input_format:dnd"
|
||||||
|
msgid "DND"
|
||||||
|
msgstr "EOE"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:142
|
||||||
|
msgctxt "botset:presence_status|input_format:offline"
|
||||||
|
msgid "Offline"
|
||||||
|
msgstr "Pggmjof"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:145
|
||||||
|
msgctxt "botset:presence_status|input_pattern:online"
|
||||||
|
msgid "on|online"
|
||||||
|
msgstr "po|pomjof"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:146
|
||||||
|
msgctxt "botset:presence_status|input_pattern:idle"
|
||||||
|
msgid "idle"
|
||||||
|
msgstr "jemf"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:147
|
||||||
|
msgctxt "botset:presence_status|input_pattern:dnd"
|
||||||
|
msgid "do not disturb|dnd"
|
||||||
|
msgstr "ep opu ejtuvsc|eoe"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:148
|
||||||
|
msgctxt "botset:presence_status|input_pattern:offline"
|
||||||
|
msgid "off|offline|invisible"
|
||||||
|
msgstr "pgg|pggmjof|jowjtjcmf"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:155
|
||||||
|
msgctxt "botset:presence_type"
|
||||||
|
msgid "activity_type"
|
||||||
|
msgstr "bdujwjuz_uzqf"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:156
|
||||||
|
msgctxt "botset:presence_type|desc"
|
||||||
|
msgid "Type of presence activity"
|
||||||
|
msgstr "Uzqf pg qsftfodf bdujwjuz"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifuifs uif cpu bdujwjuz jt tipxo bt 'Mjtufojoh', 'Qmbzjoh', ps 'Xbudijoh'."
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:163
|
||||||
|
msgctxt "botset:presence_type|accepts"
|
||||||
|
msgid "Listening/Playing/Watching/Streaming"
|
||||||
|
msgstr "Mjtufojoh/Qmbzjoh/Xbudijoh/Tusfbnjoh"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:172
|
||||||
|
msgctxt "botset:presence_type|output:watching"
|
||||||
|
msgid "**Watching**"
|
||||||
|
msgstr "**Xbudijoh**"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:173
|
||||||
|
msgctxt "botset:presence_type|output:listening"
|
||||||
|
msgid "**Listening**"
|
||||||
|
msgstr "**Mjtufojoh**"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:174
|
||||||
|
msgctxt "botset:presence_type|output:playing"
|
||||||
|
msgid "**Playing**"
|
||||||
|
msgstr "**Qmbzjoh**"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:175
|
||||||
|
msgctxt "botset:presence_type|output:streaming"
|
||||||
|
msgid "**Streaming**"
|
||||||
|
msgstr "**Tusfbnjoh**"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:178
|
||||||
|
msgctxt "botset:presence_type|input_format:watching"
|
||||||
|
msgid "Watching"
|
||||||
|
msgstr "Xbudijoh"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:179
|
||||||
|
msgctxt "botset:presence_type|input_format:listening"
|
||||||
|
msgid "Listening"
|
||||||
|
msgstr "Mjtufojoh"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:180
|
||||||
|
msgctxt "botset:presence_type|input_format:playing"
|
||||||
|
msgid "Playing"
|
||||||
|
msgstr "Qmbzjoh"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:181
|
||||||
|
msgctxt "botset:presence_type|input_format:streaming"
|
||||||
|
msgid "Streaming"
|
||||||
|
msgstr "Tusfbnjoh"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:184
|
||||||
|
msgctxt "botset:presence_type|input_pattern:watching"
|
||||||
|
msgid "watching"
|
||||||
|
msgstr "xbudijoh"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:185
|
||||||
|
msgctxt "botset:presence_type|input_pattern:listening"
|
||||||
|
msgid "listening"
|
||||||
|
msgstr "mjtufojoh"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:186
|
||||||
|
msgctxt "botset:presence_type|input_pattern:playing"
|
||||||
|
msgid "playing"
|
||||||
|
msgstr "qmbzjoh"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:187
|
||||||
|
msgctxt "botset:presence_type|input_pattern:streaming"
|
||||||
|
msgid "streaming"
|
||||||
|
msgstr "tusfbnjoh"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:194
|
||||||
|
msgctxt "botset:presence_name"
|
||||||
|
msgid "activity_name"
|
||||||
|
msgstr "bdujwjuz_obnf"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:195
|
||||||
|
msgctxt "botset:presence_name|desc"
|
||||||
|
msgid "Name of the presence activity"
|
||||||
|
msgstr "Obnf pg uif qsftfodf bdujwjuz"
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:196
|
||||||
|
msgctxt "botset:presence_name|long_desc"
|
||||||
|
msgid "Presence activity name."
|
||||||
|
msgstr "Qsftfodf bdujwjuz obnf."
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/presence.py:197
|
||||||
|
msgctxt "botset:presence_name|accepts"
|
||||||
|
msgid "The name of the activity to show."
|
||||||
|
msgstr "Uif obnf pg uif bdujwjuz up tipx."
|
||||||
866
locales/ceaser/LC_MESSAGES/tasklist.po
Normal file
866
locales/ceaser/LC_MESSAGES/tasklist.po
Normal file
@@ -0,0 +1,866 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:35
|
||||||
|
msgctxt "argtype:Before|opt:HOUR"
|
||||||
|
msgid "The last hour"
|
||||||
|
msgstr "Uif mbtu ipvs"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:36
|
||||||
|
msgctxt "argtype:Before|opt:HALFDAY"
|
||||||
|
msgid "The last 12 hours"
|
||||||
|
msgstr "Uif mbtu 12 ipvst"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:37
|
||||||
|
msgctxt "argtype:Before|opt:DAY"
|
||||||
|
msgid "The last 24 hours"
|
||||||
|
msgstr "Uif mbtu 24 ipvst"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:38
|
||||||
|
msgctxt "argtype:Before|opt:TODAY"
|
||||||
|
msgid "Today"
|
||||||
|
msgstr "Upebz"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:39
|
||||||
|
msgctxt "argtype:Before|opt:YESTERDAY"
|
||||||
|
msgid "Yesterday"
|
||||||
|
msgstr "Zftufsebz"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:40
|
||||||
|
msgctxt "argtype:Before|opt:Monday"
|
||||||
|
msgid "This Monday"
|
||||||
|
msgstr "Uijt Npoebz"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:41
|
||||||
|
msgctxt "argtype:Before|opt:THISMONTH"
|
||||||
|
msgid "This Month"
|
||||||
|
msgstr "Uijt Npoui"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:205
|
||||||
|
msgctxt "summon_tasklist|error:insufficient_perms|title"
|
||||||
|
msgid "Uh-Oh, I cannot do that here!"
|
||||||
|
msgstr "Vi-Pi, J dboopu ep uibu ifsf!"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:209
|
||||||
|
msgctxt "summon_tasklist|error:insufficient_perms|desc"
|
||||||
|
msgid ""
|
||||||
|
"This channel is configured as a tasklist channel, but I lack the "
|
||||||
|
"`EMBED_LINKS` or `SEND_MESSAGES` permission here! If you believe this is "
|
||||||
|
"unintentional, please contact a server administrator."
|
||||||
|
msgstr ""
|
||||||
|
"Uijt diboofm jt dpogjhvsfe bt b ubtlmjtu diboofm, cvu J mbdl uif "
|
||||||
|
"`FNCFE_MJOLT` ps `TFOE_NFTTBHFT` qfsnjttjpo ifsf! Jg zpv cfmjfwf uijt jt "
|
||||||
|
"vojoufoujpobm, qmfbtf dpoubdu b tfswfs benjojtusbups."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:258
|
||||||
|
msgctxt "cmd:tasklist"
|
||||||
|
msgid "tasklist"
|
||||||
|
msgstr "ubtlmjtu"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:261
|
||||||
|
msgctxt "cmd:tasklist|desc"
|
||||||
|
msgid "Open your tasklist."
|
||||||
|
msgstr "Pqfo zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:270
|
||||||
|
msgctxt "group:tasks"
|
||||||
|
msgid "tasks"
|
||||||
|
msgstr "ubtlt"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:271
|
||||||
|
msgctxt "group:tasks|desc"
|
||||||
|
msgid "Base command group for tasklist commands."
|
||||||
|
msgstr "Cbtf dpnnboe hspvq gps ubtlmjtu dpnnboet."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:293
|
||||||
|
msgctxt "argtype:taskid|error:no_tasks"
|
||||||
|
msgid "Tasklist empty! No matching tasks."
|
||||||
|
msgstr "Ubtlmjtu fnquz! Op nbudijoh ubtlt."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:330
|
||||||
|
msgctxt "argtype:taskid|match:all"
|
||||||
|
msgid "All tasks"
|
||||||
|
msgstr "Bmm ubtlt"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:348
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "argtype:taskid|error:parse_multi"
|
||||||
|
msgid "(Warning: {error})"
|
||||||
|
msgstr "(Xbsojoh: {error})"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:382
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "argtype:taskid|error:no_matching"
|
||||||
|
msgid "No tasks matching '{partial}'!"
|
||||||
|
msgstr "Op ubtlt nbudijoh '{partial}'!"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:402
|
||||||
|
msgctxt "cmd:tasks_new"
|
||||||
|
msgid "new"
|
||||||
|
msgstr "ofx"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:405
|
||||||
|
msgctxt "cmd:tasks_new|desc"
|
||||||
|
msgid "Add a new task to your tasklist."
|
||||||
|
msgstr "Bee b ofx ubtl up zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:409
|
||||||
|
msgctxt "cmd:tasks_new|param:content"
|
||||||
|
msgid "task"
|
||||||
|
msgstr "ubtl"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:410
|
||||||
|
msgctxt "cmd:tasks_new|param:parent"
|
||||||
|
msgid "parent"
|
||||||
|
msgstr "qbsfou"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:413
|
||||||
|
msgctxt "cmd:tasks_new|param:content|desc"
|
||||||
|
msgid "Content of your new task."
|
||||||
|
msgstr "Dpoufou pg zpvs ofx ubtl."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:414
|
||||||
|
msgctxt "cmd:tasks_new|param:parent"
|
||||||
|
msgid "Parent of this task."
|
||||||
|
msgstr "Qbsfou pg uijt ubtl."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:434
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:tasks_new|error:parse_parent"
|
||||||
|
msgid "Could not find parent task number `{input}` in your tasklist."
|
||||||
|
msgstr "Dpvme opu gjoe qbsfou ubtl ovncfs `{input}` jo zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:449
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:tasks_new|resp:success"
|
||||||
|
msgid "{tick} Created task `{label}`."
|
||||||
|
msgstr "{tick} Dsfbufe ubtl `{label}`."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:461
|
||||||
|
msgctxt "cmd:tasks_upload"
|
||||||
|
msgid "upload"
|
||||||
|
msgstr "vqmpbe"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:464
|
||||||
|
msgctxt "cmd:tasks_upload|desc"
|
||||||
|
msgid "Upload a list of tasks to append to or replace your tasklist."
|
||||||
|
msgstr "Vqmpbe b mjtu pg ubtlt up bqqfoe up ps sfqmbdf zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:468
|
||||||
|
msgctxt "cmd:tasks_upload|param:tasklist"
|
||||||
|
msgid "tasklist"
|
||||||
|
msgstr "ubtlmjtu"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:469
|
||||||
|
msgctxt "cmd:tasks_upload|param:append"
|
||||||
|
msgid "append"
|
||||||
|
msgstr "bqqfoe"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:474
|
||||||
|
msgctxt "cmd:tasks_upload|param:tasklist|desc"
|
||||||
|
msgid ""
|
||||||
|
"Text file containing a (standard markdown formatted) checklist of tasks to "
|
||||||
|
"add or append."
|
||||||
|
msgstr ""
|
||||||
|
"Ufyu gjmf dpoubjojoh b (tuboebse nbslepxo gpsnbuufe) difdlmjtu pg ubtlt up "
|
||||||
|
"bee ps bqqfoe."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:478
|
||||||
|
msgctxt "cmd:tasks_upload|param:append|desc"
|
||||||
|
msgid ""
|
||||||
|
"Whether to append the given tasks or replace your entire tasklist. Defaults "
|
||||||
|
"to True."
|
||||||
|
msgstr ""
|
||||||
|
"Xifuifs up bqqfoe uif hjwfo ubtlt ps sfqmbdf zpvs foujsf ubtlmjtu. Efgbvmut "
|
||||||
|
"up Usvf."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:494
|
||||||
|
msgctxt "cmd:tasks_upload|error:not_text"
|
||||||
|
msgid "The attached tasklist must be a text file!"
|
||||||
|
msgstr "Uif buubdife ubtlmjtu nvtu cf b ufyu gjmf!"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:502
|
||||||
|
msgctxt "cmd:tasks_upload|error:too_large"
|
||||||
|
msgid "The attached tasklist was too large!"
|
||||||
|
msgstr "Uif buubdife ubtlmjtu xbt upp mbshf!"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:513
|
||||||
|
msgctxt "cmd:tasks_upload|error:too_many_lines"
|
||||||
|
msgid ""
|
||||||
|
"Too many tasks! Refusing to process a tasklist with more than `1000` lines."
|
||||||
|
msgstr ""
|
||||||
|
"Upp nboz ubtlt! Sfgvtjoh up qspdftt b ubtlmjtu xjui npsf uibo `1000` mjoft."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:519
|
||||||
|
msgctxt "cmd:tasks_upload|error:decoding"
|
||||||
|
msgid ""
|
||||||
|
"Could not decode attached tasklist. Please make sure it is saved with the "
|
||||||
|
"`UTF-8` encoding."
|
||||||
|
msgstr ""
|
||||||
|
"Dpvme opu efdpef buubdife ubtlmjtu. Qmfbtf nblf tvsf ju jt tbwfe xjui uif "
|
||||||
|
"`VUG-8` fodpejoh."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:566
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:tasks_upload|resp:success"
|
||||||
|
msgid "{tick} Updated your tasklist."
|
||||||
|
msgstr "{tick} Vqebufe zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:578
|
||||||
|
msgctxt "cmd:tasks_edit"
|
||||||
|
msgid "edit"
|
||||||
|
msgstr "feju"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:581
|
||||||
|
msgctxt "cmd:tasks_edit|desc"
|
||||||
|
msgid "Edit a task in your tasklist."
|
||||||
|
msgstr "Feju b ubtl jo zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:585
|
||||||
|
msgctxt "cmd:tasks_edit|param:taskstr"
|
||||||
|
msgid "task"
|
||||||
|
msgstr "ubtl"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:586
|
||||||
|
msgctxt "cmd:tasks_edit|param:new_content"
|
||||||
|
msgid "new_task"
|
||||||
|
msgstr "ofx_ubtl"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:587
|
||||||
|
msgctxt "cmd:tasks_edit|param:new_parent"
|
||||||
|
msgid "new_parent"
|
||||||
|
msgstr "ofx_qbsfou"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:590
|
||||||
|
msgctxt "cmd:tasks_edit|param:taskstr|desc"
|
||||||
|
msgid "Which task do you want to update?"
|
||||||
|
msgstr "Xijdi ubtl ep zpv xbou up vqebuf?"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:591
|
||||||
|
msgctxt "cmd:tasks_edit|param:new_content|desc"
|
||||||
|
msgid "What do you want to change the task to?"
|
||||||
|
msgstr "Xibu ep zpv xbou up dibohf uif ubtl up?"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:592
|
||||||
|
msgctxt "cmd:tasks_edit|param:new_parent|desc"
|
||||||
|
msgid "Which task do you want to be the new parent?"
|
||||||
|
msgstr "Xijdi ubtl ep zpv xbou up cf uif ofx qbsfou?"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:611
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:tasks_edit|error:parse_taskstr"
|
||||||
|
msgid "Could not find target task number `{input}` in your tasklist."
|
||||||
|
msgstr "Dpvme opu gjoe ubshfu ubtl ovncfs `{input}` jo zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:627
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:tasks_edit|error:parse_parent"
|
||||||
|
msgid "Could not find new parent task number `{input}` in your tasklist."
|
||||||
|
msgstr "Dpvme opu gjoe ofx qbsfou ubtl ovncfs `{input}` jo zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:646
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:tasks_edit|resp:success|desc"
|
||||||
|
msgid "{tick} Task `{label}` updated."
|
||||||
|
msgstr "{tick} Ubtl `{label}` vqebufe."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:668
|
||||||
|
msgctxt "ui:tasklist_single_editor|title"
|
||||||
|
msgid "Edit Task"
|
||||||
|
msgstr "Feju Ubtl"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:683
|
||||||
|
msgctxt "cmd:tasks_clear"
|
||||||
|
msgid "clear"
|
||||||
|
msgstr "dmfbs"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:684
|
||||||
|
msgctxt "cmd:tasks_clear|desc"
|
||||||
|
msgid "Clear your tasklist."
|
||||||
|
msgstr "Dmfbs zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:694
|
||||||
|
msgctxt "cmd:tasks_clear|resp:success"
|
||||||
|
msgid "Your tasklist has been cleared."
|
||||||
|
msgstr "Zpvs ubtlmjtu ibt cffo dmfbsfe."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:702
|
||||||
|
msgctxt "cmd:tasks_remove"
|
||||||
|
msgid "remove"
|
||||||
|
msgstr "sfnpwf"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:705
|
||||||
|
msgctxt "cmd:tasks_remove|desc"
|
||||||
|
msgid ""
|
||||||
|
"Remove tasks matching all the provided conditions. (E.g. remove tasks "
|
||||||
|
"completed before today)."
|
||||||
|
msgstr ""
|
||||||
|
"Sfnpwf ubtlt nbudijoh bmm uif qspwjefe dpoejujpot. (F.h. sfnpwf ubtlt "
|
||||||
|
"dpnqmfufe cfgpsf upebz)."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:709
|
||||||
|
msgctxt "cmd:tasks_remove|param:taskidstr"
|
||||||
|
msgid "tasks"
|
||||||
|
msgstr "ubtlt"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:710
|
||||||
|
msgctxt "cmd:tasks_remove|param:created_before"
|
||||||
|
msgid "created_before"
|
||||||
|
msgstr "dsfbufe_cfgpsf"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:711
|
||||||
|
msgctxt "cmd:tasks_remove|param:updated_before"
|
||||||
|
msgid "updated_before"
|
||||||
|
msgstr "vqebufe_cfgpsf"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:712
|
||||||
|
msgctxt "cmd:tasks_remove|param:completed"
|
||||||
|
msgid "completed"
|
||||||
|
msgstr "dpnqmfufe"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:713
|
||||||
|
msgctxt "cmd:tasks_remove|param:cascade"
|
||||||
|
msgid "cascade"
|
||||||
|
msgstr "dbtdbef"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:718
|
||||||
|
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-), or `-`"
|
||||||
|
" to remove all."
|
||||||
|
msgstr ""
|
||||||
|
"Mjtu pg ubtl ovncfst ps sbohft up sfnpwf (f.h. 1, 2, 5-7, 8.1-3, 9-), ps `-`"
|
||||||
|
" up sfnpwf bmm."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:722
|
||||||
|
msgctxt "cmd:tasks_remove|param:created_before|desc"
|
||||||
|
msgid "Only delete tasks created before the selected time."
|
||||||
|
msgstr "Pomz efmfuf ubtlt dsfbufe cfgpsf uif tfmfdufe ujnf."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:726
|
||||||
|
msgctxt "cmd:tasks_remove|param:updated_before|desc"
|
||||||
|
msgid ""
|
||||||
|
"Only deleted tasks update (i.e. completed or edited) before the selected "
|
||||||
|
"time."
|
||||||
|
msgstr ""
|
||||||
|
"Pomz efmfufe ubtlt vqebuf (j.f. dpnqmfufe ps fejufe) cfgpsf uif tfmfdufe "
|
||||||
|
"ujnf."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:730
|
||||||
|
msgctxt "cmd:tasks_remove|param:completed"
|
||||||
|
msgid "Only delete tasks which are (not) complete."
|
||||||
|
msgstr "Pomz efmfuf ubtlt xijdi bsf (opu) dpnqmfuf."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:734
|
||||||
|
msgctxt "cmd:tasks_remove|param:cascade"
|
||||||
|
msgid "Whether to recursively remove subtasks of removed tasks."
|
||||||
|
msgstr "Xifuifs up sfdvstjwfmz sfnpwf tvcubtlt pg sfnpwfe ubtlt."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:766 src/modules/tasklist/cog.py:861
|
||||||
|
#: src/modules/tasklist/cog.py:936
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:tasks_remove_cmd|error:no_matching"
|
||||||
|
msgid "No tasks on your tasklist match `{input}`"
|
||||||
|
msgstr "Op ubtlt po zpvs ubtlmjtu nbudi `{input}`"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:790
|
||||||
|
msgctxt "cmd:tasks_remove_cmd|error:no_matching"
|
||||||
|
msgid "No tasks on your tasklist matching all the given conditions!"
|
||||||
|
msgstr "Op ubtlt po zpvs ubtlmjtu nbudijoh bmm uif hjwfo dpoejujpot!"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:803
|
||||||
|
#, 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] "{tick} Efmfufe ubtl `{label}`"
|
||||||
|
msgstr[1] "{tick} Efmfufe `{count}` ubtlt gspn zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:821
|
||||||
|
msgctxt "cmd:tasks_tick"
|
||||||
|
msgid "tick"
|
||||||
|
msgstr "ujdl"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:822
|
||||||
|
msgctxt "cmd:tasks_tick|desc"
|
||||||
|
msgid "Mark the given tasks as completed."
|
||||||
|
msgstr "Nbsl uif hjwfo ubtlt bt dpnqmfufe."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:825
|
||||||
|
msgctxt "cmd:tasks_tick|param:taskidstr"
|
||||||
|
msgid "tasks"
|
||||||
|
msgstr "ubtlt"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:826
|
||||||
|
msgctxt "cmd:tasks_tick|param:cascade"
|
||||||
|
msgid "cascade"
|
||||||
|
msgstr "dbtdbef"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:831
|
||||||
|
msgctxt "cmd:tasks_tick|param:taskidstr|desc"
|
||||||
|
msgid ""
|
||||||
|
"List of task numbers or ranges to tick (e.g. 1, 2, 5-7, 8.1-3, 9-) or '-' to"
|
||||||
|
" tick all."
|
||||||
|
msgstr ""
|
||||||
|
"Mjtu pg ubtl ovncfst ps sbohft up ujdl (f.h. 1, 2, 5-7, 8.1-3, 9-) ps '-' up"
|
||||||
|
" ujdl bmm."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:835
|
||||||
|
msgctxt "cmd:tasks_tick|param:cascade|desc"
|
||||||
|
msgid "Whether to also mark all subtasks as complete."
|
||||||
|
msgstr "Xifuifs up bmtp nbsl bmm tvcubtlt bt dpnqmfuf."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:879
|
||||||
|
#, 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] "{tick} Nbslfe `{label}` bt dpnqmfuf."
|
||||||
|
msgstr[1] "{tick} Nbslfe `{count}` ubtlt bt dpnqmfuf."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:897
|
||||||
|
msgctxt "cmd:tasks_untick"
|
||||||
|
msgid "untick"
|
||||||
|
msgstr "voujdl"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:898
|
||||||
|
msgctxt "cmd:tasks_untick|desc"
|
||||||
|
msgid "Mark the given tasks as incomplete."
|
||||||
|
msgstr "Nbsl uif hjwfo ubtlt bt jodpnqmfuf."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:901
|
||||||
|
msgctxt "cmd:tasks_untick|param:taskidstr"
|
||||||
|
msgid "taskids"
|
||||||
|
msgstr "ubtljet"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:902
|
||||||
|
msgctxt "cmd:tasks_untick|param:cascade"
|
||||||
|
msgid "cascade"
|
||||||
|
msgstr "dbtdbef"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:907
|
||||||
|
msgctxt "cmd:tasks_untick|param:taskidstr|desc"
|
||||||
|
msgid ""
|
||||||
|
"List of task numbers or ranges to untick (e.g. 1, 2, 5-7, 8.1-3, 9-) or '-' "
|
||||||
|
"to untick all."
|
||||||
|
msgstr ""
|
||||||
|
"Mjtu pg ubtl ovncfst ps sbohft up voujdl (f.h. 1, 2, 5-7, 8.1-3, 9-) ps '-' "
|
||||||
|
"up voujdl bmm."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:911
|
||||||
|
msgctxt "cmd:tasks_untick|param:cascade|desc"
|
||||||
|
msgid "Whether to also mark all subtasks as incomplete."
|
||||||
|
msgstr "Xifuifs up bmtp nbsl bmm tvcubtlt bt jodpnqmfuf."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:952
|
||||||
|
#, 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] "{tick} Nbslfe `{label}` bt jodpnqmfuf."
|
||||||
|
msgstr[1] "{tick} Nbslfe `{count}` ubtlt bt jodpnqmfuf."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:976
|
||||||
|
msgctxt "cmd:configure_tasklist"
|
||||||
|
msgid "tasklist"
|
||||||
|
msgstr "ubtlmjtu"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:977
|
||||||
|
msgctxt "cmd:configure_tasklist|desc"
|
||||||
|
msgid "Tasklist configuration panel"
|
||||||
|
msgstr "Ubtlmjtu dpogjhvsbujpo qbofm"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:980
|
||||||
|
msgctxt "cmd:configure_tasklist|param:reward"
|
||||||
|
msgid "reward"
|
||||||
|
msgstr "sfxbse"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:981
|
||||||
|
msgctxt "cmd:configure_tasklist|param:reward_limit"
|
||||||
|
msgid "reward_limit"
|
||||||
|
msgstr "sfxbse_mjnju"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:1017
|
||||||
|
#, 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 ""
|
||||||
|
"Nfncfst xjmm opx cf sfxbsefe {coin}**{amount}** gps fbdi ubtl uifz dpnqmfuf "
|
||||||
|
"vq up b nbyjnvn pg `{limit}` ubtlt qfs 24i."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/tasklist.py:267
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "tasklist|parse:multi-range|error:parents_match"
|
||||||
|
msgid "Parents don't match in range `{range}`"
|
||||||
|
msgstr "Qbsfout epo'u nbudi jo sbohf `{range}`"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/tasklist.py:289
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "tasklist|parse:multi-range|error:parse"
|
||||||
|
msgid "Could not parse `{range}` as a task number or range."
|
||||||
|
msgstr "Dpvme opu qbstf `{range}` bt b ubtl ovncfs ps sbohf."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/tasklist.py:320
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "modal:tasklist_bulk_editor|error:parse_task"
|
||||||
|
msgid ""
|
||||||
|
"Malformed taskline!\n"
|
||||||
|
"`{input}`"
|
||||||
|
msgstr ""
|
||||||
|
"Nbmgpsnfe ubtlmjof!\n"
|
||||||
|
"`{input}`"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/tasklist.py:332
|
||||||
|
msgctxt "modal:tasklist_bulk_editor|error:task_too_long"
|
||||||
|
msgid "Please keep your tasks under 100 characters!"
|
||||||
|
msgstr "Qmfbtf lffq zpvs ubtlt voefs 100 dibsbdufst!"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:39
|
||||||
|
msgctxt "ui:tasklist_caller|button:tasklist|label"
|
||||||
|
msgid "Open Tasklist"
|
||||||
|
msgstr "Pqfo Ubtlmjtu"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:57
|
||||||
|
msgctxt "modal:tasklist_single_editor|field:task|label"
|
||||||
|
msgid "Task content"
|
||||||
|
msgstr "Ubtl dpoufou"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:69
|
||||||
|
msgctxt "modal:tasklist_single_editor|field:parent|label"
|
||||||
|
msgid "Parent Task"
|
||||||
|
msgstr "Qbsfou Ubtl"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:73
|
||||||
|
msgctxt "modal:tasklist_single_editor|field:parent|placeholder"
|
||||||
|
msgid "Enter a task number, e.g. 2.1"
|
||||||
|
msgstr "Foufs b ubtl ovncfs, f.h. 2.1"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:104
|
||||||
|
msgctxt "modal:tasklist_bulk_editor|field:tasklist|label"
|
||||||
|
msgid "Tasklist"
|
||||||
|
msgstr "Ubtlmjtu"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:108
|
||||||
|
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 ""
|
||||||
|
"- [ ] Uijt jt ubtl 1, vogjojtife.\n"
|
||||||
|
"- [y] Uijt jt ubtl 2, gjojtife.\n"
|
||||||
|
" - [ ] Uijt jt tvcubtl 2.1."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:130
|
||||||
|
msgctxt "modal:tasklist_bulk_editor"
|
||||||
|
msgid "Tasklist Editor"
|
||||||
|
msgstr "Ubtlmjtu Fejups"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:188
|
||||||
|
msgctxt "ui:tasklist|menu:main|mode:toggle|placeholder"
|
||||||
|
msgid "Select to Toggle"
|
||||||
|
msgstr "Tfmfdu up Uphhmf"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:192
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:tasklist|menu:sub|mode:toggle|placeholder"
|
||||||
|
msgid "Toggle from {label}.*"
|
||||||
|
msgstr "Uphhmf gspn {label}.*"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:198
|
||||||
|
msgctxt "ui:tasklist|menu:main|mode:edit|placeholder"
|
||||||
|
msgid "Select to Edit"
|
||||||
|
msgstr "Tfmfdu up Feju"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:202
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:tasklist|menu:sub|mode:edit|placeholder"
|
||||||
|
msgid "Edit from {label}.*"
|
||||||
|
msgstr "Feju gspn {label}.*"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:208
|
||||||
|
msgctxt "ui:tasklist|menu:main|mode:delete|placeholder"
|
||||||
|
msgid "Select to Delete"
|
||||||
|
msgstr "Tfmfdu up Efmfuf"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:212
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:tasklist|menu:sub|mode:delete|placeholder"
|
||||||
|
msgid "Delete from {label}.*"
|
||||||
|
msgstr "Efmfuf gspn {label}.*"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:409
|
||||||
|
#, 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 ""
|
||||||
|
"Dpvme opu gjoe uif hjwfo qbsfou ubtl ovncfs `{input}` jo zpvs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:423
|
||||||
|
#, 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 ""
|
||||||
|
"Nvmujqmf ubtlt nbudijoh hjwfo qbsfou ubtl `{input}`. Qmfbtf vtf b ubtl "
|
||||||
|
"ovncfs jotufbe!"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:430
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:tasklist_single_editor|field:parent|error:no_matching"
|
||||||
|
msgid "No tasks matching given parent task `{input}`."
|
||||||
|
msgstr "Op ubtlt nbudijoh hjwfo qbsfou ubtl `{input}`."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:501
|
||||||
|
msgctxt "ui:tasklist|menu:edit|modal:title"
|
||||||
|
msgid "Edit task"
|
||||||
|
msgstr "Feju ubtl"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:596
|
||||||
|
msgctxt "ui:tasklist_single_editor|title"
|
||||||
|
msgid "Add task"
|
||||||
|
msgstr "Bee ubtl"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:629
|
||||||
|
msgctxt "ui:tasklist|button:edit_mode|label"
|
||||||
|
msgid "Edit"
|
||||||
|
msgstr "Feju"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:645
|
||||||
|
msgctxt "ui:tasklist|button:delete_mode|label"
|
||||||
|
msgid "Delete"
|
||||||
|
msgstr "Efmfuf"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:661
|
||||||
|
msgctxt "ui:tasklist|button:toggle_mode|label"
|
||||||
|
msgid "Toggle"
|
||||||
|
msgstr "Uphhmf"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:678
|
||||||
|
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 ""
|
||||||
|
"Zpvs ubtlmjtu jt upp mpoh up cf fejufe jo b Ejtdpse ufyu joqvu! Vtf uif tbwf"
|
||||||
|
" cvuupo boe {cmds[tasks upload]} jotufbe."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:692
|
||||||
|
msgctxt "ui:tasklist|button:edit_bulk|label"
|
||||||
|
msgid "Bulk Edit"
|
||||||
|
msgstr "Cvml Feju"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:705
|
||||||
|
msgctxt "ui:tasklist|button:clear|label"
|
||||||
|
msgid "Clear Tasklist"
|
||||||
|
msgstr "Dmfbs Ubtlmjtu"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:724
|
||||||
|
#, 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 ""
|
||||||
|
"Zpvs ubtlmjtu bt pg {now} jt buubdife. Dmjdl ifsf up kvnq cbdl: {jump}"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:737
|
||||||
|
msgctxt "ui:tasklist|button:save|error:dms"
|
||||||
|
msgid "Could not DM you! Do you have me blocked? Tasklist attached below."
|
||||||
|
msgstr "Dpvme opu EN zpv! Ep zpv ibwf nf cmpdlfe? Ubtlmjtu buubdife cfmpx."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:782
|
||||||
|
msgctxt "ui:tasklist|error:wrong_user"
|
||||||
|
msgid "This is not your tasklist!"
|
||||||
|
msgstr "Uijt jt opu zpvs ubtlmjtu!"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:824
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:tasklist|embed|author"
|
||||||
|
msgid "{name}'s tasklist ({completed}/{total} complete)"
|
||||||
|
msgstr "{name}'t ubtlmjtu ({completed}/{total} dpnqmfuf)"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/ui.py:846
|
||||||
|
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 ""
|
||||||
|
"**Zpv ibwf op ubtlt po zpvs ubtlmjtu!**\n"
|
||||||
|
"Bee b ubtl xjui {cmds[tasks new]}, ps cz qsfttjoh uif {new_button} cvuupo cfmpx."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:33
|
||||||
|
msgctxt "guildset:task_reward"
|
||||||
|
msgid "task_reward"
|
||||||
|
msgstr "ubtl_sfxbse"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:36
|
||||||
|
msgctxt "guildset:task_reward|desc"
|
||||||
|
msgid "Number of LionCoins given for each completed task."
|
||||||
|
msgstr "Ovncfs pg MjpoDpjot hjwfo gps fbdi dpnqmfufe ubtl."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif ovncfs pg dpjot nfncfst xjmm cf sfxbsefe fbdi ujnf uifz dpnqmfuf b ubtl "
|
||||||
|
"po uifjs ubtlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:44
|
||||||
|
msgctxt "guildset:task_reward|accepts"
|
||||||
|
msgid "The number of LionCoins to reward per task."
|
||||||
|
msgstr "Uif ovncfs pg MjpoDpjot up sfxbse qfs ubtl."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfncfst xjmm opx cf sfxbsefe {coin}**{amount}** gps fbdi dpnqmfufe ubtl."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:65
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:task_reward|formatted"
|
||||||
|
msgid "{coin}**{amount}** per task."
|
||||||
|
msgstr "{coin}**{amount}** qfs ubtl."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:73
|
||||||
|
msgctxt "guildset:task_reward_limit"
|
||||||
|
msgid "task_reward_limit"
|
||||||
|
msgstr "ubtl_sfxbse_mjnju"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:76
|
||||||
|
msgctxt "guildset:task_reward_limit|desc"
|
||||||
|
msgid "Maximum number of task rewards given per 24h."
|
||||||
|
msgstr "Nbyjnvn ovncfs pg ubtl sfxbset hjwfo qfs 24i."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nbyjnvn ovncfs pg ujnft jo fbdi 24i qfsjpe uibu nfncfst xjmm cf sfxbsefe gps"
|
||||||
|
" dpnqmfujoh b ubtl."
|
||||||
|
|
||||||
|
#: 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 "Uif nbyjnvn ovncfs pg ubtlt up sfxbse MD gps qfs 24i."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfncfst xjmm opx cf sfxbsefe gps ubtl dpnqmfujpo bu nptu **{amount}** ujnft "
|
||||||
|
"qfs 24i."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:106
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:task_reward_limit|formatted"
|
||||||
|
msgid "`{number}` per 24 hours."
|
||||||
|
msgstr "`{number}` qfs 24 ipvst."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:113
|
||||||
|
msgctxt "guildset:tasklist_channels"
|
||||||
|
msgid "tasklist_channels"
|
||||||
|
msgstr "ubtlmjtu_diboofmt"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:116
|
||||||
|
msgctxt "guildset:tasklist_channels|desc"
|
||||||
|
msgid "Channels in which to publicly display member tasklists."
|
||||||
|
msgstr "Diboofmt jo xijdi up qvcmjdmz ejtqmbz nfncfs ubtlmjtut."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"B nfncfs't ubtlmjtu (gspn {cmds[tasklist]}) jt vtvbmmz pomz wjtjcmf up uif "
|
||||||
|
"nfncfs uifntfmwft. Jg tfu, ubtlmjtut pqfofe jo `ubtlmjtu_diboofmt` xjmm cf "
|
||||||
|
"wjtjcmf up bmm nfncfst, boe uif joufsgbdf xjmm ibwf b nvdi mpohfs fyqjsz "
|
||||||
|
"qfsjpe. Jg b dbufhpsz jt qspwjefe, uijt xjmm bqqmz up bmm diboofmt voefs uif"
|
||||||
|
" dbufhpsz."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:127
|
||||||
|
msgctxt "guildset:tasklist_channels|accepts"
|
||||||
|
msgid "Comma separated list of tasklist channel names or ids."
|
||||||
|
msgstr "Dpnnb tfqbsbufe mjtu pg ubtlmjtu diboofm obnft ps jet."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Ubtlmjtut xjmm opx cf qvcmjdmz ejtqmbzfe jo uif gpmmpxjoh diboofmt: "
|
||||||
|
"{channels}"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:149
|
||||||
|
msgctxt "guildset:tasklist_channels|set_response|unset"
|
||||||
|
msgid "Member tasklists will never be publicly displayed."
|
||||||
|
msgstr "Nfncfs ubtlmjtut xjmm ofwfs cf qvcmjdmz ejtqmbzfe."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:158
|
||||||
|
msgctxt "guildset:tasklist_channels|set_using"
|
||||||
|
msgid "Channel selector below."
|
||||||
|
msgstr "Diboofm tfmfdups cfmpx."
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:289
|
||||||
|
msgctxt "ui:tasklist_config|button:close|label"
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Dmptf"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:290
|
||||||
|
msgctxt "ui:tasklist_config|button:reset|label"
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr "Sftfu"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:293
|
||||||
|
msgctxt "ui:tasklist_config|menu:channels|placeholder"
|
||||||
|
msgid "Set Tasklist Channels"
|
||||||
|
msgstr "Tfu Ubtlmjtu Diboofmt"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:311
|
||||||
|
msgctxt "ui:tasklist_config|embed|title"
|
||||||
|
msgid "Tasklist Configuration Panel"
|
||||||
|
msgstr "Ubtlmjtu Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:320
|
||||||
|
msgctxt "dash:tasklist|name"
|
||||||
|
msgid "Tasklist Configuration ({commands[configure tasklist]})"
|
||||||
|
msgstr "Ubtlmjtu Dpogjhvsbujpo ({commands[configure tasklist]})"
|
||||||
|
|
||||||
|
#: src/modules/tasklist/settings.py:323
|
||||||
|
msgctxt "dash:tasklist|dropdown|placeholder"
|
||||||
|
msgid "Tasklist Options Panel"
|
||||||
|
msgstr "Ubtlmjtu Pqujpot Qbofm"
|
||||||
81
locales/ceaser/LC_MESSAGES/test.po
Normal file
81
locales/ceaser/LC_MESSAGES/test.po
Normal file
@@ -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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:59 src/modules/test/test.py:66
|
||||||
|
msgid "test"
|
||||||
|
msgstr "uftu"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:67
|
||||||
|
msgid "Test"
|
||||||
|
msgstr "Uftu"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:74
|
||||||
|
msgid "editor"
|
||||||
|
msgstr "fejups"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:75
|
||||||
|
msgid "Test message editor"
|
||||||
|
msgstr "Uftu nfttbhf fejups"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:101
|
||||||
|
msgid "test_ephemeral"
|
||||||
|
msgstr "uftu_fqifnfsbm"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:102
|
||||||
|
msgid "Test ephemeral delete and edit"
|
||||||
|
msgstr "Uftu fqifnfsbm efmfuf boe feju"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:114
|
||||||
|
msgid "colours"
|
||||||
|
msgstr "dpmpvst"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:115
|
||||||
|
msgid "Test Ansi colours"
|
||||||
|
msgstr "Uftu Botj dpmpvst"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:135
|
||||||
|
msgid "fail"
|
||||||
|
msgstr "gbjm"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:143
|
||||||
|
msgid "failui"
|
||||||
|
msgstr "gbjmvj"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:150
|
||||||
|
msgid "pager"
|
||||||
|
msgstr "qbhfs"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:178
|
||||||
|
msgid "pager2"
|
||||||
|
msgstr "qbhfs2"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:209
|
||||||
|
msgid "prettyusers"
|
||||||
|
msgstr "qsfuuzvtfst"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:259
|
||||||
|
msgid "dmview"
|
||||||
|
msgstr "enwjfx"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:270
|
||||||
|
msgid "multiview"
|
||||||
|
msgstr "nvmujwjfx"
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:287
|
||||||
|
msgid "stats-card"
|
||||||
|
msgstr "tubut-dbse"
|
||||||
253
locales/ceaser/LC_MESSAGES/text-tracker.po
Normal file
253
locales/ceaser/LC_MESSAGES/text-tracker.po
Normal file
@@ -0,0 +1,253 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/tracking/text/cog.py:254
|
||||||
|
msgctxt "cmd:configure_message_exp"
|
||||||
|
msgid "message_exp"
|
||||||
|
msgstr "nfttbhf_fyq"
|
||||||
|
|
||||||
|
#: src/tracking/text/cog.py:257
|
||||||
|
msgctxt "cmd:configure_message_exp|desc"
|
||||||
|
msgid "Configure Message Tracking & Experience"
|
||||||
|
msgstr "Dpogjhvsf Nfttbhf Usbdljoh & Fyqfsjfodf"
|
||||||
|
|
||||||
|
#: src/tracking/text/cog.py:320
|
||||||
|
msgctxt "cmd:leo_configure_exp_rates"
|
||||||
|
msgid "experience_rates"
|
||||||
|
msgstr "fyqfsjfodf_sbuft"
|
||||||
|
|
||||||
|
#: src/tracking/text/cog.py:323
|
||||||
|
msgctxt "cmd:leo_configure_exp_rates|desc"
|
||||||
|
msgid "Global experience rate configuration"
|
||||||
|
msgstr "Hmpcbm fyqfsjfodf sbuf dpogjhvsbujpo"
|
||||||
|
|
||||||
|
#: src/tracking/text/ui.py:45
|
||||||
|
msgctxt "ui:text_tracker_config|menu:untracked_channels|placeholder"
|
||||||
|
msgid "Select Untracked Channels"
|
||||||
|
msgstr "Tfmfdu Vousbdlfe Diboofmt"
|
||||||
|
|
||||||
|
#: src/tracking/text/ui.py:52
|
||||||
|
msgctxt "ui:text_tracker_config|embed|title"
|
||||||
|
msgid "Message Tracking Configuration Panel"
|
||||||
|
msgstr "Nfttbhf Usbdljoh Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/tracking/text/ui.py:89
|
||||||
|
msgctxt "dash:text_tracking|title"
|
||||||
|
msgid "Message XP configuration ({commands[configure message_exp]})"
|
||||||
|
msgstr "Nfttbhf YQ dpogjhvsbujpo ({commands[configure message_exp]})"
|
||||||
|
|
||||||
|
#: src/tracking/text/ui.py:93
|
||||||
|
msgctxt "dash:text_tracking|dropdown|placeholder"
|
||||||
|
msgid "Message XP Panel"
|
||||||
|
msgstr "Nfttbhf YQ Qbofm"
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:33
|
||||||
|
msgctxt "guildset:xp_per_period"
|
||||||
|
msgid "xp_per_5min"
|
||||||
|
msgstr "yq_qfs_5njo"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Ipx nvdi YQ nfncfst xjmm cf hjwfo fwfsz 5 njovuf qfsjpe uifz bsf bdujwf."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Bnpvou pg nfttbhf YQ up hjwf nfncfst gps fbdi 5 njovuf qfsjpe jo xijdi uifz "
|
||||||
|
"bsf bdujwf (tfoe b nfttbhf). Opuf uibu uijt YQ jt pomz hjwfo *podf* qfs "
|
||||||
|
"qfsjpe."
|
||||||
|
|
||||||
|
#: 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 "Ovncfs pg nfttbhf YQ up sfxbse qfs 5 njovuf bdujwf qfsjpe."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Gps fwfsz **5** njovuft uifz bsf bdujwf (j.f. jo xijdi uifz tfoe b nfttbhf),"
|
||||||
|
" nfncfst xjmm opx cf hjwfo **{amount}** YQ."
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:65
|
||||||
|
msgctxt "guildset:word_xp"
|
||||||
|
msgid "xp_per_100words"
|
||||||
|
msgstr "yq_qfs_100xpset"
|
||||||
|
|
||||||
|
#: 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 "Ipx nvdi YQ nfncfst xjmm cf hjwfo qfs ivoesfe xpset uifz xsjuf."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Bnpvou pg nfttbhf YQ up cf hjwfo (beejujpobmmz up uif YQ qfs qfsjpe) gps "
|
||||||
|
"fbdi ivoesfe xpset. Vtfgvm gps sfxbsejoh dpnnvojdbujpo."
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:77
|
||||||
|
msgctxt "guildset:word_xp|accepts"
|
||||||
|
msgid "Number of XP to reward per hundred words sent."
|
||||||
|
msgstr "Ovncfs pg YQ up sfxbse qfs ivoesfe xpset tfou."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Gps fwfsz **100** xpset uifz tfoe, nfncfst xjmm opx cf sfxbsefe bo "
|
||||||
|
"beejujpobm **{amount}** YQ."
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:95
|
||||||
|
msgctxt "guildset:untracked_text_channels"
|
||||||
|
msgid "untracked_text_channels"
|
||||||
|
msgstr "vousbdlfe_ufyu_diboofmt"
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:98
|
||||||
|
msgctxt "guildset:untracked_text_channels|desc"
|
||||||
|
msgid "Channels in which Message XP will not be given."
|
||||||
|
msgstr "Diboofmt jo xijdi Nfttbhf YQ xjmm opu cf hjwfo."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfttbhft tfou jo uiftf diboofmt xjmm opu dpvou upxbset b nfncfs't nfttbhf "
|
||||||
|
"YQ. Jg b dbufhpsz jt tfmfdufe, uifo bmm diboofmt voefs uif dbufhpsz xjmm "
|
||||||
|
"bmtp cf vousbdlfe."
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:107
|
||||||
|
msgctxt "guildset:untracked_text_channels|accepts"
|
||||||
|
msgid "Comma separated list of untracked text channel names or ids."
|
||||||
|
msgstr "Dpnnb tfqbsbufe mjtu pg vousbdlfe ufyu diboofm obnft ps jet."
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:111
|
||||||
|
msgctxt "guildset:untracked_text_channels|notset"
|
||||||
|
msgid "Not Set (all text channels will be tracked.)"
|
||||||
|
msgstr "Opu Tfu (bmm ufyu diboofmt xjmm cf usbdlfe.)"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfttbhft jo ps voefs uif gpmmpxjoh diboofmt xjmm cf jhopsfe: {channels}"
|
||||||
|
|
||||||
|
#: 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 "Nfttbhf YQ xjmm opx cf usbdlfe jo fwfsz diboofm."
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:142
|
||||||
|
msgctxt "guildset:untracked_text_channels|set_using"
|
||||||
|
msgid "Channel selector below"
|
||||||
|
msgstr "Diboofm tfmfdups cfmpx"
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:173
|
||||||
|
msgctxt "botset:xp_per_period"
|
||||||
|
msgid "xp_per_5min"
|
||||||
|
msgstr "yq_qfs_5njo"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Ipx nvdi hmpcbm YQ nfncfst xjmm cf hjwfo fwfsz 5 njovuf qfsjpe uifz bsf "
|
||||||
|
"bdujwf."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Bnpvou pg hmpcbm nfttbhf YQ up hjwf nfncfst gps fbdi 5 njovuf qfsjpe jo "
|
||||||
|
"xijdi uifz bsf bdujwf (tfoe b nfttbhf). Opuf uibu uijt YQ jt pomz hjwfo "
|
||||||
|
"*podf* qfs qfsjpe."
|
||||||
|
|
||||||
|
#: 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 "Ovncfs pg nfttbhf YQ up sfxbse qfs 5 njovuf bdujwf qfsjpe."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Gps fwfsz **5** njovuft uifz bsf bdujwf (j.f. jo xijdi uifz tfoe b nfttbhf),"
|
||||||
|
" bmm vtfst xjmm opx cf hjwfo **{amount}** hmpcbm YQ."
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:206
|
||||||
|
msgctxt "botset:word_xp"
|
||||||
|
msgid "xp_per_100words"
|
||||||
|
msgstr "yq_qfs_100xpset"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Ipx nvdi hmpcbm YQ nfncfst xjmm cf hjwfo qfs ivoesfe xpset uifz xsjuf."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Bnpvou pg hmpcbm nfttbhf YQ up cf hjwfo (beejujpobmmz up uif YQ qfs qfsjpe) "
|
||||||
|
"gps fbdi ivoesfe xpset. Vtfgvm gps sfxbsejoh dpnnvojdbujpo."
|
||||||
|
|
||||||
|
#: src/tracking/text/settings.py:218
|
||||||
|
msgctxt "botset:word_xp|accepts"
|
||||||
|
msgid "Number of XP to reward per hundred words sent."
|
||||||
|
msgstr "Ovncfs pg YQ up sfxbse qfs ivoesfe xpset tfou."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Gps fwfsz **100** xpset uifz tfoe, vtfst xjmm opx cf sfxbsefe bo beejujpobm "
|
||||||
|
"**{amount}** hmpcbm YQ."
|
||||||
32
locales/ceaser/LC_MESSAGES/timer-gui.po
Normal file
32
locales/ceaser/LC_MESSAGES/timer-gui.po
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\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 "Vtf /opx up tipx xibu zpv bsf xpsljoh po!"
|
||||||
|
|
||||||
|
#: src/gui/cards/timer.py:89
|
||||||
|
msgctxt "skin:timer|stage:focus|field:stage_text"
|
||||||
|
msgid "FOCUS"
|
||||||
|
msgstr "GPDVT"
|
||||||
|
|
||||||
|
#: src/gui/cards/timer.py:103
|
||||||
|
msgctxt "skin:timer|stage:break|field:stage_text"
|
||||||
|
msgid "BREAK"
|
||||||
|
msgstr "CSFBL"
|
||||||
102
locales/ceaser/LC_MESSAGES/user_config.po
Normal file
102
locales/ceaser/LC_MESSAGES/user_config.po
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/modules/user_config/cog.py:38
|
||||||
|
msgctxt "userset:timezone"
|
||||||
|
msgid "timezone"
|
||||||
|
msgstr "ujnfapof"
|
||||||
|
|
||||||
|
#: src/modules/user_config/cog.py:41
|
||||||
|
msgctxt "userset:timezone|desc"
|
||||||
|
msgid "Timezone in which to display statistics."
|
||||||
|
msgstr "Ujnfapof jo xijdi up ejtqmbz tubujtujdt."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Bmm qfstpobm ujnf-sfmbufe gfbuvsft pg TuvezMjpo xjmm vtf uijt ujnfapof gps "
|
||||||
|
"zpv, jodmvejoh qfstpobm tubujtujdt. Opuf uibu mfbefscpbset xjmm tujmm cf "
|
||||||
|
"tipxo jo uif tfswfs't pxo ujnfapof."
|
||||||
|
|
||||||
|
#: 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 "Zpvs qfstpobm ujnfapof ibt cffo tfu up `{timezone}`."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Zpv ibwf votfu zpvs ujnfapof. Tubujtujdt xjmm cf ejtqmbzfe jo uif tfswfs "
|
||||||
|
"ujnfapof."
|
||||||
|
|
||||||
|
#: src/modules/user_config/cog.py:81
|
||||||
|
msgctxt "cmd:userconfig"
|
||||||
|
msgid "my"
|
||||||
|
msgstr "nz"
|
||||||
|
|
||||||
|
#: src/modules/user_config/cog.py:82
|
||||||
|
msgctxt "cmd:userconfig|desc"
|
||||||
|
msgid "User configuration commands."
|
||||||
|
msgstr "Vtfs dpogjhvsbujpo dpnnboet."
|
||||||
|
|
||||||
|
#: src/modules/user_config/cog.py:89
|
||||||
|
msgctxt "cmd:userconfig_timezone"
|
||||||
|
msgid "timezone"
|
||||||
|
msgstr "ujnfapof"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Tfu zpvs qfstpobm ujnfapof, vtfe gps ejtqmbzjoh tubut boe tfuujoh sfnjoefst."
|
||||||
|
|
||||||
|
#: src/modules/user_config/cog.py:96
|
||||||
|
msgctxt "cmd:userconfig_timezone|param:timezone"
|
||||||
|
msgid "timezone"
|
||||||
|
msgstr "ujnfapof"
|
||||||
|
|
||||||
|
#: 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 "Xibu ujnfapof bsf zpv jo? Usz uzqjoh zpvs dpvousz ps dpoujofou."
|
||||||
|
|
||||||
|
#: 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 "Zpvs ujnfapof jt dvssfoumz tfu up {timezone}"
|
||||||
|
|
||||||
|
#: src/modules/user_config/cog.py:121
|
||||||
|
msgctxt "cmd:userconfig_timezone|button:reset|label"
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr "Sftfu"
|
||||||
|
|
||||||
|
#: 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 "Zpvs ujnfapof jt opu tfu. Vtjoh uif tfswfs ujnfapof `{timezone}`."
|
||||||
528
locales/ceaser/LC_MESSAGES/utils.po
Normal file
528
locales/ceaser/LC_MESSAGES/utils.po
Normal file
@@ -0,0 +1,528 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/utils/cog.py:18
|
||||||
|
msgctxt "cmd:page"
|
||||||
|
msgid "page"
|
||||||
|
msgstr "qbhf"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Kvnq up b hjwfo qbhf pg uif pvqvu pg b qsfwjpvt dpnnboe jo uijt diboofm."
|
||||||
|
|
||||||
|
#: src/utils/cog.py:34
|
||||||
|
msgctxt "cmd:page|error:no_pager"
|
||||||
|
msgid "No pager listening in this channel!"
|
||||||
|
msgstr "Op qbhfs mjtufojoh jo uijt diboofm!"
|
||||||
|
|
||||||
|
#: src/utils/cog.py:45
|
||||||
|
msgctxt "cmd:page_next"
|
||||||
|
msgid "next"
|
||||||
|
msgstr "ofyu"
|
||||||
|
|
||||||
|
#: src/utils/cog.py:46
|
||||||
|
msgctxt "cmd:page_next|desc"
|
||||||
|
msgid "Jump to the next page of output."
|
||||||
|
msgstr "Kvnq up uif ofyu qbhf pg pvuqvu."
|
||||||
|
|
||||||
|
#: src/utils/cog.py:52
|
||||||
|
msgctxt "cmd:page_prev"
|
||||||
|
msgid "prev"
|
||||||
|
msgstr "qsfw"
|
||||||
|
|
||||||
|
#: src/utils/cog.py:53
|
||||||
|
msgctxt "cmd:page_prev|desc"
|
||||||
|
msgid "Jump to the previous page of output."
|
||||||
|
msgstr "Kvnq up uif qsfwjpvt qbhf pg pvuqvu."
|
||||||
|
|
||||||
|
#: src/utils/cog.py:59
|
||||||
|
msgctxt "cmd:page_first"
|
||||||
|
msgid "first"
|
||||||
|
msgstr "gjstu"
|
||||||
|
|
||||||
|
#: src/utils/cog.py:60
|
||||||
|
msgctxt "cmd:page_first|desc"
|
||||||
|
msgid "Jump to the first page of output."
|
||||||
|
msgstr "Kvnq up uif gjstu qbhf pg pvuqvu."
|
||||||
|
|
||||||
|
#: src/utils/cog.py:66
|
||||||
|
msgctxt "cmd:page_last"
|
||||||
|
msgid "last"
|
||||||
|
msgstr "mbtu"
|
||||||
|
|
||||||
|
#: src/utils/cog.py:67
|
||||||
|
msgctxt "cmd:page_last|desc"
|
||||||
|
msgid "Jump to the last page of output."
|
||||||
|
msgstr "Kvnq up uif mbtu qbhf pg pvuqvu."
|
||||||
|
|
||||||
|
#: src/utils/cog.py:73
|
||||||
|
msgctxt "cmd:page_select"
|
||||||
|
msgid "select"
|
||||||
|
msgstr "tfmfdu"
|
||||||
|
|
||||||
|
#: src/utils/cog.py:74
|
||||||
|
msgctxt "cmd:page_select|desc"
|
||||||
|
msgid "Select a page of the output to jump to."
|
||||||
|
msgstr "Tfmfdu b qbhf pg uif pvuqvu up kvnq up."
|
||||||
|
|
||||||
|
#: src/utils/cog.py:77
|
||||||
|
msgctxt "cmd:page_select|param:page"
|
||||||
|
msgid "page"
|
||||||
|
msgstr "qbhf"
|
||||||
|
|
||||||
|
#: src/utils/cog.py:80
|
||||||
|
msgctxt "cmd:page_select|param:page|desc"
|
||||||
|
msgid "The page name or number to jump to."
|
||||||
|
msgstr "Uif qbhf obnf ps ovncfs up kvnq up."
|
||||||
|
|
||||||
|
#: src/utils/cog.py:86
|
||||||
|
msgctxt "cmd:page_select|error:no_pager"
|
||||||
|
msgid "No pager listening in this channel!"
|
||||||
|
msgstr "Op qbhfs mjtufojoh jo uijt diboofm!"
|
||||||
|
|
||||||
|
#: src/utils/cog.py:97
|
||||||
|
msgctxt "cmd:page_select|acmpl|error:no_pager"
|
||||||
|
msgid "No active pagers in this channel!"
|
||||||
|
msgstr "Op bdujwf qbhfst jo uijt diboofm!"
|
||||||
|
|
||||||
|
#: src/utils/transformers.py:45
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "utils:parse_dur|error"
|
||||||
|
msgid "Cannot parse `{value}` as a duration."
|
||||||
|
msgstr "Dboopu qbstf `{value}` bt b evsbujpo."
|
||||||
|
|
||||||
|
#: src/utils/transformers.py:71
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "util:Duration|acmpl|error"
|
||||||
|
msgid "Cannot extract duration from \"{partial}\""
|
||||||
|
msgstr "Dboopu fyusbdu evsbujpo gspn \"{partial}\""
|
||||||
|
|
||||||
|
#: src/utils/lib.py:678
|
||||||
|
msgctxt "util:parse_dur|regex:day"
|
||||||
|
msgid "(?P<value>\\d+)\\s*(?:(d)|(day))"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/lib.py:685
|
||||||
|
msgctxt "util:parse_dur|regex:hour"
|
||||||
|
msgid "(?P<value>\\d+)\\s*(?:(h)|(hour))"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/lib.py:692
|
||||||
|
msgctxt "util:parse_dur|regex:minute"
|
||||||
|
msgid "(?P<value>\\d+)\\s*(?:(m)|(min))"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/lib.py:699
|
||||||
|
msgctxt "util:parse_dur|regex:second"
|
||||||
|
msgid "(?P<value>\\d+)\\s*(?:(s)|(sec))"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/utils/ui/config.py:35
|
||||||
|
msgctxt "ui:configui|modal:edit|title"
|
||||||
|
msgid "Setting Editor"
|
||||||
|
msgstr "Tfuujoh Fejups"
|
||||||
|
|
||||||
|
#: src/utils/ui/config.py:75
|
||||||
|
msgctxt "ui:configui|check|not_permitted"
|
||||||
|
msgid "You have insufficient server permissions to use this UI!"
|
||||||
|
msgstr "Zpv ibwf jotvggjdjfou tfswfs qfsnjttjpot up vtf uijt VJ!"
|
||||||
|
|
||||||
|
#: src/utils/ui/config.py:153
|
||||||
|
msgctxt "ui:configui|button:edit|label"
|
||||||
|
msgid "Edit"
|
||||||
|
msgstr "Feju"
|
||||||
|
|
||||||
|
#: src/utils/ui/config.py:192
|
||||||
|
msgctxt "ui:guild_config_base|button:reset|label"
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr "Sftfu"
|
||||||
|
|
||||||
|
#: src/utils/ui/config.py:327
|
||||||
|
msgctxt "ui:dashboard|error:section_too_long"
|
||||||
|
msgid ""
|
||||||
|
"Oops, the settings in this configuration section are too large, and I can "
|
||||||
|
"not display them here! Please view the settings in the linked configuration "
|
||||||
|
"panel instead."
|
||||||
|
msgstr ""
|
||||||
|
"Ppqt, uif tfuujoht jo uijt dpogjhvsbujpo tfdujpo bsf upp mbshf, boe J dbo "
|
||||||
|
"opu ejtqmbz uifn ifsf! Qmfbtf wjfx uif tfuujoht jo uif mjolfe dpogjhvsbujpo "
|
||||||
|
"qbofm jotufbe."
|
||||||
|
|
||||||
|
#. 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 "o, oyu, ofyu, gpsxbse, +"
|
||||||
|
|
||||||
|
#. 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 "q, qsfw, cbdl, -"
|
||||||
|
|
||||||
|
#. 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 "g, gjstu, pof, tubsu"
|
||||||
|
|
||||||
|
#. 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 "m, mbtu, foe"
|
||||||
|
|
||||||
|
#: 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 "Dpvme opu voefstuboe qbhf tqfdjgjdbujpo `{value}`."
|
||||||
|
|
||||||
|
#: src/utils/ui/pagers.py:302
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:page|acmpl|pager:Pager|choice:last"
|
||||||
|
msgid "Last: Page {page}/{total}"
|
||||||
|
msgstr "Mbtu: Qbhf {page}/{total}"
|
||||||
|
|
||||||
|
#: src/utils/ui/pagers.py:307
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:page|acmpl|pager:Pager|choice:current"
|
||||||
|
msgid "Current: Page {page}/{total}"
|
||||||
|
msgstr "Dvssfou: Qbhf {page}/{total}"
|
||||||
|
|
||||||
|
#: src/utils/ui/pagers.py:319
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:page|acmpl|pager:Pager|choice:general"
|
||||||
|
msgid "Page {page}"
|
||||||
|
msgstr "Qbhf {page}"
|
||||||
|
|
||||||
|
#: src/utils/ui/pagers.py:353
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:page|acmpl|pager:Page|choice:select"
|
||||||
|
msgid "Selected: Page {page}/{total}"
|
||||||
|
msgstr "Tfmfdufe: Qbhf {page}/{total}"
|
||||||
|
|
||||||
|
#: src/utils/ui/pagers.py:363
|
||||||
|
msgctxt "cmd:page|acmpl|pager:Page|error:parse"
|
||||||
|
msgid "No matching pages!"
|
||||||
|
msgstr "Op nbudijoh qbhft!"
|
||||||
|
|
||||||
|
#: 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 "Sfoefsjoh gbjmfe! Uif nfttbhf dpoufou boe fncfe dboopu cpui cf fnquz."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Sfoefsjoh gbjmfe! Dpvme opu qbstf uif fncfe.\n"
|
||||||
|
"Fssps: {error}"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Sfoefsjoh gbjmfe! Uif nfttbhf xbt opu npejgjfe.\n"
|
||||||
|
"Fssps: `{text}`"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:123
|
||||||
|
msgctxt "ui:msg_editor|modal:content|field:content|label"
|
||||||
|
msgid "Message Content"
|
||||||
|
msgstr "Nfttbhf Dpoufou"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:132
|
||||||
|
msgctxt "ui:msg_editor|modal:content|title"
|
||||||
|
msgid "Content Editor"
|
||||||
|
msgstr "Dpoufou Fejups"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:150
|
||||||
|
msgctxt "ui:msg_editor|button:edit|label"
|
||||||
|
msgid "Edit Content"
|
||||||
|
msgstr "Feju Dpoufou"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:162
|
||||||
|
msgctxt "ui:msg_editor|button:add_embed|sample_embed|title"
|
||||||
|
msgid "Title Placeholder"
|
||||||
|
msgstr "Ujumf Qmbdfipmefs"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:163
|
||||||
|
msgctxt "ui:msg_editor|button:add_embed|sample_embed|description"
|
||||||
|
msgid "Description Placeholder"
|
||||||
|
msgstr "Eftdsjqujpo Qmbdfipmefs"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:174
|
||||||
|
msgctxt "ui:msg_editor|button:add_embed|label"
|
||||||
|
msgid "Add Embed"
|
||||||
|
msgstr "Bee Fncfe"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:192
|
||||||
|
msgctxt "ui:msg_editor|modal:body|field:content|label"
|
||||||
|
msgid "Message Content"
|
||||||
|
msgstr "Nfttbhf Dpoufou"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:203
|
||||||
|
msgctxt "ui:msg_editor|modal:body|field:desc|label"
|
||||||
|
msgid "Embed Description"
|
||||||
|
msgstr "Fncfe Eftdsjqujpo"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:214
|
||||||
|
msgctxt "ui:msg_editor|modal:body|field:title|label"
|
||||||
|
msgid "Embed Title"
|
||||||
|
msgstr "Fncfe Ujumf"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:225
|
||||||
|
msgctxt "ui:msg_editor|modal:body|field:colour|label"
|
||||||
|
msgid "Embed Colour"
|
||||||
|
msgstr "Fncfe Dpmpvs"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:240
|
||||||
|
msgctxt "ui:msg_editor|modal:body|title"
|
||||||
|
msgid "Message Body Editor"
|
||||||
|
msgstr "Nfttbhf Cpez Fejups"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Jowbmje dpmpvs gpsnbu! Qmfbtf foufs dpmpvst bt ify dpeft, f.h. `#F67F22`"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:285
|
||||||
|
msgctxt "ui:msg_editor|button:body|label"
|
||||||
|
msgid "Body"
|
||||||
|
msgstr "Cpez"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:302
|
||||||
|
msgctxt "ui:msg_editor|modal:author|field:name|label"
|
||||||
|
msgid "Author Name"
|
||||||
|
msgstr "Bvuips Obnf"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:313
|
||||||
|
msgctxt "ui:msg_editor|modal:author|field:link|label"
|
||||||
|
msgid "Author URL"
|
||||||
|
msgstr "Bvuips VSM"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:323
|
||||||
|
msgctxt "ui:msg_editor|modal:author|field:image|label"
|
||||||
|
msgid "Author Image URL"
|
||||||
|
msgstr "Bvuips Jnbhf VSM"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:334
|
||||||
|
msgctxt "ui:msg_editor|modal:author|title"
|
||||||
|
msgid "Embed Author Editor"
|
||||||
|
msgstr "Fncfe Bvuips Fejups"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:360
|
||||||
|
msgctxt "ui:msg_editor|button:author|label"
|
||||||
|
msgid "Author"
|
||||||
|
msgstr "Bvuips"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:377
|
||||||
|
msgctxt "ui:msg_editor|modal:footer|field:text|label"
|
||||||
|
msgid "Footer Text"
|
||||||
|
msgstr "Gppufs Ufyu"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:388
|
||||||
|
msgctxt "ui:msg_editor|modal:footer|field:image|label"
|
||||||
|
msgid "Footer Image URL"
|
||||||
|
msgstr "Gppufs Jnbhf VSM"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:398
|
||||||
|
msgctxt "ui:msg_editor|modal:footer|field:timestamp|label"
|
||||||
|
msgid "Embed Timestamp (in ISO format)"
|
||||||
|
msgstr "Fncfe Ujnftubnq (jo JTP gpsnbu)"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:410
|
||||||
|
msgctxt "ui:msg_editor|modal:footer|title"
|
||||||
|
msgid "Embed Footer Editor"
|
||||||
|
msgstr "Fncfe Gppufs Fejups"
|
||||||
|
|
||||||
|
#: 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 "Jowbmje ujnftubnq! Qmfbtf foufs uif ujnftubnq jo JTP gpsnbu."
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:449
|
||||||
|
msgctxt "ui:msg_editor|button:footer|label"
|
||||||
|
msgid "Footer"
|
||||||
|
msgstr "Gppufs"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:467
|
||||||
|
msgctxt "ui:msg_editor|modal:images|field:thumb|label"
|
||||||
|
msgid "Thumbnail Image URL"
|
||||||
|
msgstr "Uivncobjm Jnbhf VSM"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:477
|
||||||
|
msgctxt "ui:msg_editor|modal:images|field:image|label"
|
||||||
|
msgid "Embed Image URL"
|
||||||
|
msgstr "Fncfe Jnbhf VSM"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:487
|
||||||
|
msgctxt "ui:msg_editor|modal:images|title"
|
||||||
|
msgid "Embed images Editor"
|
||||||
|
msgstr "Fncfe jnbhft Fejups"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:517
|
||||||
|
msgctxt "ui:msg_editor|button:images|label"
|
||||||
|
msgid "Images"
|
||||||
|
msgstr "Jnbhft"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:535
|
||||||
|
msgctxt "ui:msg_editor|modal:add_field|field:position|label"
|
||||||
|
msgid "Field number to insert at"
|
||||||
|
msgstr "Gjfme ovncfs up jotfsu bu"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:545
|
||||||
|
msgctxt "ui:msg_editor|modal:add_field|field:name|label"
|
||||||
|
msgid "Field name"
|
||||||
|
msgstr "Gjfme obnf"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:555
|
||||||
|
msgctxt "ui:msg_editor|modal:add_field|field:value|label"
|
||||||
|
msgid "Field value"
|
||||||
|
msgstr "Gjfme wbmvf"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:565
|
||||||
|
msgctxt "ui:msg_editor|modal:add_field|field:inline|label"
|
||||||
|
msgid "Whether the field is inline"
|
||||||
|
msgstr "Xifuifs uif gjfme jt jomjof"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:569
|
||||||
|
msgctxt "ui:msg_editor|modal:add_field|field:inline|placeholder"
|
||||||
|
msgid "True/False"
|
||||||
|
msgstr "Usvf/Gbmtf"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:582
|
||||||
|
msgctxt "ui:msg_editor|modal:add_field|title"
|
||||||
|
msgid "Add Embed Field"
|
||||||
|
msgstr "Bee Fncfe Gjfme"
|
||||||
|
|
||||||
|
#: 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 "Uif gjfme qptjujpo nvtu cf bo joufhfs!"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:621
|
||||||
|
msgctxt "ui:msg_editor|button:add_field|label"
|
||||||
|
msgid "Add Field"
|
||||||
|
msgstr "Bee Gjfme"
|
||||||
|
|
||||||
|
#: 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 "Gjfme obnf"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:677
|
||||||
|
msgctxt "ui:msg_editor|modal:edit_field|field:value|label"
|
||||||
|
msgid "Field value"
|
||||||
|
msgstr "Gjfme wbmvf"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:688
|
||||||
|
msgctxt "ui:msg_editor|modal:edit_field|field:inline|label"
|
||||||
|
msgid "Whether the field is inline"
|
||||||
|
msgstr "Xifuifs uif gjfme jt jomjof"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:692
|
||||||
|
msgctxt "ui:msg_editor|modal:edit_field|field:inline|placeholder"
|
||||||
|
msgid "True/False"
|
||||||
|
msgstr "Usvf/Gbmtf"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:704
|
||||||
|
msgctxt "ui:msg_editor|modal:edit_field|title"
|
||||||
|
msgid "Edit Embed Field"
|
||||||
|
msgstr "Feju Fncfe Gjfme"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:733
|
||||||
|
msgctxt "ui:msg_editor|menu:edit_field|placeholder"
|
||||||
|
msgid "Edit Embed Field"
|
||||||
|
msgstr "Feju Fncfe Gjfme"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:772
|
||||||
|
msgctxt "ui:msg_deleteor|menu:delete_field|placeholder"
|
||||||
|
msgid "Remove Embed Field"
|
||||||
|
msgstr "Sfnpwf Fncfe Gjfme"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:808
|
||||||
|
msgctxt "ui:msg_editor|button:save|label"
|
||||||
|
msgid "Save"
|
||||||
|
msgstr "Tbwf"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:833
|
||||||
|
msgctxt "ui:msg_editor|button:download|label"
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Epxompbe"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:852
|
||||||
|
msgctxt "ui:msg_editor|button:undo|label"
|
||||||
|
msgid "Undo"
|
||||||
|
msgstr "Voep"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:872
|
||||||
|
msgctxt "ui:msg_editor|button:redo|label"
|
||||||
|
msgid "Redo"
|
||||||
|
msgstr "Sfep"
|
||||||
|
|
||||||
|
#: 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 "Zpv ibwf votbwfe dibohft! Bsf zpv tvsf zpv xbou up rvju?"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:896
|
||||||
|
msgctxt "ui:msg_editor|button:quit|confirm|button:yes"
|
||||||
|
msgid "Yes, Quit Now"
|
||||||
|
msgstr "Zft, Rvju Opx"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:902
|
||||||
|
msgctxt "ui:msg_editor|button:quit|confirm|button:no"
|
||||||
|
msgid "No, Go Back"
|
||||||
|
msgstr "Op, Hp Cbdl"
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:996
|
||||||
|
msgctxt "ui:msg_editor|timeout_warning|title"
|
||||||
|
msgid "Warning!"
|
||||||
|
msgstr "Xbsojoh!"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uijt joufsgbdf xjmm ujnf pvu {timestamp}. Qsftt 'Dpoujovf' cfmpx up lffq "
|
||||||
|
"fejujoh."
|
||||||
|
|
||||||
|
#: src/utils/ui/msgeditor.py:1009
|
||||||
|
msgctxt "ui:msg_editor|timeout_warning|continue"
|
||||||
|
msgid "Continue"
|
||||||
|
msgstr "Dpoujovf"
|
||||||
366
locales/ceaser/LC_MESSAGES/video.po
Normal file
366
locales/ceaser/LC_MESSAGES/video.po
Normal file
@@ -0,0 +1,366 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\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 "Tfmfdu Wjefp Diboofmt"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settingui.py:82
|
||||||
|
msgctxt "ui:video_config|menu:exempt|placeholder"
|
||||||
|
msgid "Select Exempt Roles"
|
||||||
|
msgstr "Tfmfdu Fyfnqu Spmft"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settingui.py:109
|
||||||
|
msgctxt "ui:video_config|menu:video_blacklist|placeholder"
|
||||||
|
msgid "Select Blacklist Role"
|
||||||
|
msgstr "Tfmfdu Cmbdlmjtu Spmf"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settingui.py:117
|
||||||
|
msgctxt "ui:video_config|embed|title"
|
||||||
|
msgid "Video Channel Configuration Panel"
|
||||||
|
msgstr "Wjefp Diboofm Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settingui.py:156
|
||||||
|
msgctxt "dash:video|title"
|
||||||
|
msgid "Video Channel Settings ({commands[configure video_channels]})"
|
||||||
|
msgstr "Wjefp Diboofm Tfuujoht ({commands[configure video_channels]})"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settingui.py:160
|
||||||
|
msgctxt "dash:video|option|name"
|
||||||
|
msgid "Video Channel Panel"
|
||||||
|
msgstr "Wjefp Diboofm Qbofm"
|
||||||
|
|
||||||
|
#: 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 "Sfnpwjoh wjefp cmbdlmjtufe nfncfs gspn b wjefp diboofm."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/cog.py:246
|
||||||
|
msgctxt "video_watchdog|kick_blacklisted_member|notification|title"
|
||||||
|
msgid "You have been disconnected."
|
||||||
|
msgstr "Zpv ibwf cffo ejtdpoofdufe."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Zpv xfsf ejtdpoofdufe gspn uif wjefp diboofm {channel} cfdbvtf zpv bsf "
|
||||||
|
"cmbdlmjtufe gspn wjefp diboofmt jo **{server}**."
|
||||||
|
|
||||||
|
#: 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 "[Dmjdl up kvnq cbdl]({link})"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/cog.py:297
|
||||||
|
msgctxt "video_watchdog|join_task|initial_request:title"
|
||||||
|
msgid "Please enable your video!"
|
||||||
|
msgstr "Qmfbtf fobcmf zpvs wjefp!"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"**Zpv ibwf kpjofe uif wjefp diboofm {channel}!**\n"
|
||||||
|
"Qmfbtf **fobcmf zpvs wjefp** ps **mfbwf uif diboofm** ps zpv xjmm cf ejtdpoofdufe {timestamp} boe qpufoujbmmz **cmbdlmjtufe**."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/cog.py:316
|
||||||
|
msgctxt "video_watchdog|join_task|thanks:title"
|
||||||
|
msgid "Thanks for enabling your video!"
|
||||||
|
msgstr "Uibolt gps fobcmjoh zpvs wjefp!"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/cog.py:323
|
||||||
|
msgctxt "video_watchdog|join_task|bye:title"
|
||||||
|
msgid "Thanks for leaving the channel promptly!"
|
||||||
|
msgstr "Uibolt gps mfbwjoh uif diboofm qspnqumz!"
|
||||||
|
|
||||||
|
#: 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 "Nfncfs ofwfs fobcmfe uifjs wjefp jo wjefp diboofm."
|
||||||
|
|
||||||
|
#: 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 "Gbjmfe up fobcmf uifjs wjefp jo ujnf jo uif wjefp diboofm {channel}"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/cog.py:403
|
||||||
|
msgctxt "video_watchdog|join_task|kick_after_grace|warning|title"
|
||||||
|
msgid "You have received a warning!"
|
||||||
|
msgstr "Zpv ibwf sfdfjwfe b xbsojoh!"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"**Zpv nvtu fobcmf zpvs dbnfsb jo dbnfsb-pomz sppnt.**\n"
|
||||||
|
"Zpv ibwf cffo ejtdpoofdufe gspn uif wjefp {channel} gps opu fobcmjoh zpvs dbnfsb."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/cog.py:422
|
||||||
|
msgctxt "video_watchdog|join_task|kick_after_grace|blacklist|title"
|
||||||
|
msgid "You have been blacklisted!"
|
||||||
|
msgstr "Zpv ibwf cffo cmbdlmjtufe!"
|
||||||
|
|
||||||
|
#: 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 "Zpv ibwf cffo cmbdlmjtufe gspn uif wjefp diboofmt jo uijt tfswfs."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Ejtdpoofdufe gps ejtbcmjoh wjefp gps npsf uibo {number} tfdpoet jo wjefp "
|
||||||
|
"diboofm."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/cog.py:474
|
||||||
|
msgctxt "video_watchdog|disabled_video_kick|notification|title"
|
||||||
|
msgid "You have been disconnected."
|
||||||
|
msgstr "Zpv ibwf cffo ejtdpoofdufe."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Zpv xfsf ejtdpoofdufe gspn uif wjefp diboofm {channel} cfdbvtf zpv ejtbcmfe zpvs wjefp.\n"
|
||||||
|
"Qmfbtf lffq zpvs wjefp po bu bmm ujnft, boe mfbwf uif diboofm jg zpv offe up ejtbcmf ju!"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/cog.py:510
|
||||||
|
msgctxt "cmd:configure_video"
|
||||||
|
msgid "video_channels"
|
||||||
|
msgstr "wjefp_diboofmt"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/cog.py:512
|
||||||
|
msgctxt "cmd:configure_video|desc"
|
||||||
|
msgid "Configure video-only channels and blacklisting."
|
||||||
|
msgstr "Dpogjhvsf wjefp-pomz diboofmt boe cmbdlmjtujoh."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:29
|
||||||
|
msgctxt "guildset:video_channels"
|
||||||
|
msgid "video_channels"
|
||||||
|
msgstr "wjefp_diboofmt"
|
||||||
|
|
||||||
|
#: 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 "Mjtu pg wpjdf diboofmt boe dbufhpsjft jo xijdi up fogpsdf wjefp."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfncfs xjmm cf sfrvjsfe up uvso po uifjs wjefp jo uiftf diboofmt.\n"
|
||||||
|
"Jg uifz ep opu fobcmf uifjs wjefp xjui `15` tfdpoet pg kpjojoh, uifz xjmm cf btlfe up fobcmf ju uispvhi b opujgjdbujpo jo ejsfdu nfttbhft ps uif `bmfsu_diboofm`. Jg uifz tujmm ibwf opu fobcmfe ju bgufs uif `wjefp_hsbdf_qfsjpe` ibt qbttfe, uifz xjmm cf ljdlfe gspn uif diboofm. Gvsuifs, bgufs uif gjstu pggfodf (xijdi jt dpotjefsfe b xbsojoh), uifz xjmm cf hjwfo uif `wjefp_cmbdlmjtu` spmf, jg dpogjhvsfe, xijdi xjmm tupq uifn gspn kpjojoh wjefp diboofmt.\n"
|
||||||
|
"Bt vtvbm, jg b dbufhpsz jt dpogjhvsfe, uijt xjmm bqqmz up bmm wpjdf diboofmt voefs uif dbufhpsz."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:50
|
||||||
|
msgctxt "guildset:video_channels|accepts"
|
||||||
|
msgid "Comma separated channel ids or names."
|
||||||
|
msgstr "Dpnnb tfqbsbufe diboofm jet ps obnft."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfncfst xjmm cf btlfe up uvso po uifjs wjefp jo uif gpmmpxjoh diboofmt: "
|
||||||
|
"{channels}"
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xjmm opu cf btlfe up uvso po uifjs wjefp jo boz diboofmt."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:105
|
||||||
|
msgctxt "guildset:video_blacklist"
|
||||||
|
msgid "video_blacklist"
|
||||||
|
msgstr "wjefp_cmbdlmjtu"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:108
|
||||||
|
msgctxt "guildset:video_blacklist|desc"
|
||||||
|
msgid "Role given when members are blacklisted from video channels."
|
||||||
|
msgstr "Spmf hjwfo xifo nfncfst bsf cmbdlmjtufe gspn wjefp diboofmt."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uijt spmf xjmm cf bvupnbujdbmmz hjwfo bgufs b nfncfs ibt gbjmfe up lffq uifjs wjefp fobcmfe jo b wjefp diboofm (tff bcpwf).\n"
|
||||||
|
"Nfncfst xip ibwf uijt spmf xjmm opu cf bcmf up kpjo dpogjhvsfe wjefp diboofmt. Uif spmf qfsnjttjpot nbz cf gsffmz dpogjhvsfe cz tfswfs benjot up qmbdf gvsuifs sftusjdujpot po uif pggfoefs.\n"
|
||||||
|
"Uif spmf nbz bmtp cf nbovbmmz bttjhofe, up uif tbnf fggfdu.\n"
|
||||||
|
"Jg uijt spmf jt opu tfu, op wjefp cmbdlmjtu xjmm pddvs, boe nfncfst xjmm pomz cf ljdlfe gspn uif diboofm boe xbsofe."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:123
|
||||||
|
msgctxt "guildset:video_blacklist|accepts"
|
||||||
|
msgid "Blacklist role name or id."
|
||||||
|
msgstr "Cmbdlmjtu spmf obnf ps je."
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xip gbjm up lffq uifjs wjefp po xjmm cf hjwfo {role}"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfncfst xjmm op mpohfs cf bvupnbujdbmmz cmbdlmjtufe gspn wjefp diboofmt."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:155
|
||||||
|
msgctxt "guildset:video_blacklist|formatted:unset"
|
||||||
|
msgid "Not Set. (Members will not be automatically blacklisted.)"
|
||||||
|
msgstr "Opu Tfu. (Nfncfst xjmm opu cf bvupnbujdbmmz cmbdlmjtufe.)"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:162
|
||||||
|
msgctxt "guildset:video_durations"
|
||||||
|
msgid "video_blacklist_durations"
|
||||||
|
msgstr "wjefp_cmbdlmjtu_evsbujpot"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:165
|
||||||
|
msgctxt "guildset:video_durations|desc"
|
||||||
|
msgid "Sequence of durations for automatic video blacklists."
|
||||||
|
msgstr "Tfrvfodf pg evsbujpot gps bvupnbujd wjefp cmbdlmjtut."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifo `wjefp_cmbdlmjtu` jt tfu boe nfncfst gbjm up uvso po uifjs wjefp xjuijo uif dpogjhvsfe `wjefp_hsbdf_qfsjpe`, uifz xjmm cf bvupnbujdbmmz cmbdlmjtufe (j.f. hjwfo uif `wjefp_cmbdlmjtu` spmf).\n"
|
||||||
|
"Uijt tfuujoh eftdsjcft *ipx mpoh* uif nfncfs xjmm cf cmbdlmjtufe gps, gps fbdi pggfodf.\n"
|
||||||
|
"F.h. jg uijt jt tfu up `1e, 7e, 30e`, uifo po uif gjstu pggfodf uif nfncfs xjmm cf cmbdlmjtufe gps 1 ebz, po uif tfdpoe gps 7 ebzt, boe po uif uijse gps 30 ebzt. B tvctfrvfou pggfodf xjmm sftvmu jo bo jogjojuf cmbdlmjtu."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:181
|
||||||
|
msgctxt "guildset:video_durations|accepts"
|
||||||
|
msgid "Comma separated list of durations."
|
||||||
|
msgstr "Dpnnb tfqbsbufe mjtu pg evsbujpot."
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xjmm cf bvupnbujdbmmz cmbdlmjtufe gps: {durations}"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:213
|
||||||
|
msgctxt "guildset:video_durations|set_response:unset"
|
||||||
|
msgid "Video blacklists are now always permanent."
|
||||||
|
msgstr "Wjefp cmbdlmjtut bsf opx bmxbzt qfsnbofou."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:221
|
||||||
|
msgctxt "guildset:video_grace_period"
|
||||||
|
msgid "video_grace_period"
|
||||||
|
msgstr "wjefp_hsbdf_qfsjpe"
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Ipx mpoh up xbju (jo tfdpoet) cfgpsf ljdljoh/cmbdlmjtu nfncfst xip epo'u "
|
||||||
|
"fobcmf uifjs wjefp."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Uif mfohui pg ujnf b nfncfs ibt up fobcmf uifjs wjefp bgufs kpjojoh b wjefp "
|
||||||
|
"diboofm. Bgufs uijt ujnf, jg uifz ibwf opu fobcmfe uifjs wjefp, uifz xjmm cf"
|
||||||
|
" ljdlfe gspn uif diboofm boe qpufoujbmmz cmbdlmjtufe gspn wjefp diboofmt."
|
||||||
|
|
||||||
|
#: 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 "Ipx nboz tfdpoet up xbju gps b nfncfs up fobcmf wjefp."
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xjmm opx ibwf **{duration}** up fobcmf uifjs wjefp."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:256
|
||||||
|
msgctxt "guildset:video_exempt"
|
||||||
|
msgid "video_exempt"
|
||||||
|
msgstr "wjefp_fyfnqu"
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:259
|
||||||
|
msgctxt "guildset:video_exempt|desc"
|
||||||
|
msgid "List of roles which are exempt from video channels."
|
||||||
|
msgstr "Mjtu pg spmft xijdi bsf fyfnqu gspn wjefp diboofmt."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfncfst xip ibwf **boz** pg uiftf spmft xjmm opu cf sfrvjsfe up fobcmf uifjs"
|
||||||
|
" wjefp jo uif `wjefp_diboofmt`. Uijt bmtp pwfssjeft uif `wjefp_cmbdlmjtu` "
|
||||||
|
"spmf."
|
||||||
|
|
||||||
|
#: src/modules/video_channels/settings.py:269
|
||||||
|
msgctxt "guildset:video_exempt|accepts"
|
||||||
|
msgid "List of exempt role names or ids."
|
||||||
|
msgstr "Mjtu pg fyfnqu spmf obnft ps jet."
|
||||||
|
|
||||||
|
#: 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 "Uif gpmmpxjoh spmft xjmm opx cf fyfnqu gspn wjefp diboofmt: {roles}"
|
||||||
|
|
||||||
|
#: 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 "Op nfncfst xjmm cf fyfnqu gspn wjefp diboofm sfrvjsfnfout."
|
||||||
419
locales/ceaser/LC_MESSAGES/voice-tracker.po
Normal file
419
locales/ceaser/LC_MESSAGES/voice-tracker.po
Normal file
@@ -0,0 +1,419 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:649
|
||||||
|
msgctxt "cmd:now"
|
||||||
|
msgid "now"
|
||||||
|
msgstr "opx"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:652
|
||||||
|
msgctxt "cmd:now|desc"
|
||||||
|
msgid ""
|
||||||
|
"Describe what you are working on, or see what your friends are working on!"
|
||||||
|
msgstr ""
|
||||||
|
"Eftdsjcf xibu zpv bsf xpsljoh po, ps tff xibu zpvs gsjfoet bsf xpsljoh po!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:656
|
||||||
|
msgctxt "cmd:now|param:tag"
|
||||||
|
msgid "tag"
|
||||||
|
msgstr "ubh"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:657
|
||||||
|
msgctxt "cmd:now|param:user"
|
||||||
|
msgid "user"
|
||||||
|
msgstr "vtfs"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:658
|
||||||
|
msgctxt "cmd:now|param:clear"
|
||||||
|
msgid "clear"
|
||||||
|
msgstr "dmfbs"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:663
|
||||||
|
msgctxt "cmd:now|param:tag|desc"
|
||||||
|
msgid "Describe what you are working on in 10 characters or less!"
|
||||||
|
msgstr "Eftdsjcf xibu zpv bsf xpsljoh po jo 10 dibsbdufst ps mftt!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:667
|
||||||
|
msgctxt "cmd:now|param:user|desc"
|
||||||
|
msgid "Check what a friend is working on."
|
||||||
|
msgstr "Difdl xibu b gsjfoe jt xpsljoh po."
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:671
|
||||||
|
msgctxt "cmd:now|param:clear|desc"
|
||||||
|
msgid "Unset your activity tag (or the target user's tag, for moderators)."
|
||||||
|
msgstr "Votfu zpvs bdujwjuz ubh (ps uif ubshfu vtfs't ubh, gps npefsbupst)."
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:698
|
||||||
|
msgctxt "cmd:now|target:self|error:target_inactive"
|
||||||
|
msgid ""
|
||||||
|
"You have no running session! Join a tracked voice channel to start a "
|
||||||
|
"session."
|
||||||
|
msgstr ""
|
||||||
|
"Zpv ibwf op svoojoh tfttjpo! Kpjo b usbdlfe wpjdf diboofm up tubsu b "
|
||||||
|
"tfttjpo."
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:707
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:now|target:other|error:target_inactive"
|
||||||
|
msgid "{mention} has no running session!"
|
||||||
|
msgstr "{mention} ibt op svoojoh tfttjpo!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:722
|
||||||
|
msgctxt "cmd:now|target:self|mode:clear|success|title"
|
||||||
|
msgid "Session Tag Cleared"
|
||||||
|
msgstr "Tfttjpo Ubh Dmfbsfe"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:726
|
||||||
|
msgctxt "cmd:now|target:self|mode:clear|success|desc"
|
||||||
|
msgid "Successfully unset your session tag."
|
||||||
|
msgstr "Tvddfttgvmmz votfu zpvs tfttjpo ubh."
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:735
|
||||||
|
msgctxt "cmd:now|target:other|mode:clear|error:perms|title"
|
||||||
|
msgid "You can't do that!"
|
||||||
|
msgstr "Zpv dbo'u ep uibu!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:739
|
||||||
|
msgctxt "cmd:now|target:other|mode:clear|error:perms|desc"
|
||||||
|
msgid "You need to be a moderator to set or clear someone else's session tag."
|
||||||
|
msgstr ""
|
||||||
|
"Zpv offe up cf b npefsbups up tfu ps dmfbs tpnfpof fmtf't tfttjpo ubh."
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:749
|
||||||
|
msgctxt "cmd:now|target:other|mode:clear|success|title"
|
||||||
|
msgid "Session Tag Cleared!"
|
||||||
|
msgstr "Tfttjpo Ubh Dmfbsfe!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:753
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:now|target:other|mode:clear|success|desc"
|
||||||
|
msgid "Cleared {target}'s session tag."
|
||||||
|
msgstr "Dmfbsfe {target}'t tfttjpo ubh."
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:765
|
||||||
|
msgctxt "cmd:now|target:self|mode:set|success|title"
|
||||||
|
msgid "Session Tag Set!"
|
||||||
|
msgstr "Tfttjpo Ubh Tfu!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:769
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:now|target:self|mode:set|success|desc"
|
||||||
|
msgid "You are now working on `{new_tag}`. Good luck!"
|
||||||
|
msgstr "Zpv bsf opx xpsljoh po `{new_tag}`. Hppe mvdl!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:778
|
||||||
|
msgctxt "cmd:now|target:other|mode:set|error:perms|title"
|
||||||
|
msgid "You can't do that!"
|
||||||
|
msgstr "Zpv dbo'u ep uibu!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:782
|
||||||
|
msgctxt "cmd:now|target:other|mode:set|error:perms|desc"
|
||||||
|
msgid "You need to be a moderator to set or clear someone else's session tag!"
|
||||||
|
msgstr ""
|
||||||
|
"Zpv offe up cf b npefsbups up tfu ps dmfbs tpnfpof fmtf't tfttjpo ubh!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:792
|
||||||
|
msgctxt "cmd:now|target:other|mode:set|success|title"
|
||||||
|
msgid "Session Tag Set!"
|
||||||
|
msgstr "Tfttjpo Ubh Tfu!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:796
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:now|target:other|mode:set|success|desc"
|
||||||
|
msgid "Set {target}'s session tag to `{new_tag}`."
|
||||||
|
msgstr "Tfu {target}'t tfttjpo ubh up `{new_tag}`."
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:805
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:now|target:self|mode:show_with_tag|desc"
|
||||||
|
msgid "You have been working on **`{tag}`** in {channel} since {time}!"
|
||||||
|
msgstr "Zpv ibwf cffo xpsljoh po **`{tag}`** jo {channel} tjodf {time}!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:810
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:now|target:self|mode:show_without_tag|desc"
|
||||||
|
msgid ""
|
||||||
|
"You have been working in {channel} since {time}!\n"
|
||||||
|
"\n"
|
||||||
|
"Use `/now <tag>` to set what you are working on."
|
||||||
|
msgstr ""
|
||||||
|
"Zpv ibwf cffo xpsljoh jo {channel} tjodf {time}!\n"
|
||||||
|
"\n"
|
||||||
|
"Vtf `/opx <ubh>` up tfu xibu zpv bsf xpsljoh po."
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:817
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:now|target:other|mode:show_with_tag|desc"
|
||||||
|
msgid ""
|
||||||
|
"{target} is current working in {channel}!\n"
|
||||||
|
"They have been working on **{tag}** since {time}."
|
||||||
|
msgstr ""
|
||||||
|
"{target} jt dvssfou xpsljoh jo {channel}!\n"
|
||||||
|
"Uifz ibwf cffo xpsljoh po **{tag}** tjodf {time}."
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:823
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:now|target:other|mode:show_without_tag|desc"
|
||||||
|
msgid "{target} has been working in {channel} since {time}!"
|
||||||
|
msgstr "{target} ibt cffo xpsljoh jo {channel} tjodf {time}!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:846
|
||||||
|
msgctxt "cmd:configure_voice_rates"
|
||||||
|
msgid "voice_rewards"
|
||||||
|
msgstr "wpjdf_sfxbset"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:849
|
||||||
|
msgctxt "cmd:configure_voice_rates|desc"
|
||||||
|
msgid "Configure Voice tracking rewards and experience"
|
||||||
|
msgstr "Dpogjhvsf Wpjdf usbdljoh sfxbset boe fyqfsjfodf"
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:906
|
||||||
|
#, 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 ""
|
||||||
|
"Nfncfst xjmm opx cf sfxbsefe {coin}**{base} (+ {bonus})** qfs ipvs uifz "
|
||||||
|
"tqfoe (mjwf) jo b wpjdf diboofm, vq up b upubm pg **{cap}** ipvst qfs tfswfs"
|
||||||
|
" ebz."
|
||||||
|
|
||||||
|
#: src/tracking/voice/cog.py:917
|
||||||
|
#, 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 ""
|
||||||
|
"Nfncfst xjmm opx cf sfxbsefe {coin}**{base}** qfs ipvs pg tuvez jo uijt "
|
||||||
|
"tfswfs, xjui b cpovt pg {coin}**{bonus}** jg uifz tusfbn pg ejtqmbz wjefp, "
|
||||||
|
"vq up b upubm pg **{cap}** ipvst qfs tfswfs ebz."
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:40
|
||||||
|
msgctxt "guildset:untracked_channels"
|
||||||
|
msgid "untracked_channels"
|
||||||
|
msgstr "vousbdlfe_diboofmt"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:43
|
||||||
|
msgctxt "guildset:untracked_channels|desc"
|
||||||
|
msgid "Channels which will be ignored for statistics tracking."
|
||||||
|
msgstr "Diboofmt xijdi xjmm cf jhopsfe gps tubujtujdt usbdljoh."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Bdujwjuz jo uiftf diboofmt xjmm opu dpvou upxbset b nfncfs't tubujtujdt. Jg "
|
||||||
|
"b dbufhpsz jt tfmfdufe, bmm diboofmt voefs uif dbufhpsz xjmm cf vousbdlfe."
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:52
|
||||||
|
msgctxt "guildset:untracked_channels|accepts"
|
||||||
|
msgid "Comma separated list of untracked channel name/ids."
|
||||||
|
msgstr "Dpnnb tfqbsbufe mjtu pg vousbdlfe diboofm obnf/jet."
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:56
|
||||||
|
msgctxt "guildset:untracked_channels|notset"
|
||||||
|
msgid "Not Set (all voice channels will be tracked.)"
|
||||||
|
msgstr "Opu Tfu (bmm wpjdf diboofmt xjmm cf usbdlfe.)"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:73
|
||||||
|
msgctxt "guildset:untracked_channels|set"
|
||||||
|
msgid "Channel selector below."
|
||||||
|
msgstr "Diboofm tfmfdups cfmpx."
|
||||||
|
|
||||||
|
#: 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 "Bdujwjuz jo uif gpmmpxjoh diboofmt xjmm opx cf jhopsfe: {channels}"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:89
|
||||||
|
msgctxt "guildset:untracked_channels|set_response|unset"
|
||||||
|
msgid "All voice channels will now be tracked."
|
||||||
|
msgstr "Bmm wpjdf diboofmt xjmm opx cf usbdlfe."
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:117
|
||||||
|
msgctxt "guildset:hourly_reward"
|
||||||
|
msgid "hourly_reward"
|
||||||
|
msgstr "ipvsmz_sfxbse"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:120
|
||||||
|
msgctxt "guildset:hourly_reward|mode:voice|desc"
|
||||||
|
msgid "LionCoins given per hour in a voice channel."
|
||||||
|
msgstr "MjpoDpjot hjwfo qfs ipvs jo b wpjdf diboofm."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Ovncfs pg MjpoDpjot up fbdi nfncfs qfs ipvs uibu uifz tubz jo b usbdlfe "
|
||||||
|
"wpjdf diboofm."
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:128
|
||||||
|
msgctxt "guildset:hourly_reward|accepts"
|
||||||
|
msgid "Number of coins to reward per hour in voice."
|
||||||
|
msgstr "Ovncfs pg dpjot up sfxbse qfs ipvs jo wpjdf."
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:144
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "guildset:hourly_reward|formatted"
|
||||||
|
msgid "{coin}**{amount}** per hour."
|
||||||
|
msgstr "{coin}**{amount}** qfs ipvs."
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xjmm cf hjwfo {coin}**{amount}** qfs ipvs jo b wpjdf diboofm!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:171
|
||||||
|
msgctxt "guildset:hourly_reward|mode:study|desc"
|
||||||
|
msgid "LionCoins given per hour of study."
|
||||||
|
msgstr "MjpoDpjot hjwfo qfs ipvs pg tuvez."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Ovncfs pg MjpoDpjot hjwfo qfs ipvs pg tuvez, vq up uif ebjmz ipvs dbq."
|
||||||
|
|
||||||
|
#: 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 "Nfncfst xjmm cf hjwfo {coin}**{amount}** qfs ipvs uibu uifz tuvez!"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:197
|
||||||
|
msgctxt "guildset:hourly_live_bonus"
|
||||||
|
msgid "hourly_live_bonus"
|
||||||
|
msgstr "ipvsmz_mjwf_cpovt"
|
||||||
|
|
||||||
|
#: 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 "Cpovt Mjpodpjot hjwfo qfs ipvs xifo b nfncfs tusfbnt ps wjefp-dibut."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Xifo b nfncfs tusfbnt ps wjefp-dibut jo b diboofm uifz xjmm cf hjwfo uijt "
|
||||||
|
"cpovt *beejujpobmmz* up uif `ipvsmz_sfxbse`."
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:210
|
||||||
|
msgctxt "guildset:hourly_live_bonus|accepts"
|
||||||
|
msgid "Number of bonus coins to reward per hour when live."
|
||||||
|
msgstr "Ovncfs pg cpovt dpjot up sfxbse qfs ipvs xifo mjwf."
|
||||||
|
|
||||||
|
#: 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 "{coin}**{amount}** cpovt qfs ipvs xifo mjwf."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Mjwf nfncfst xjmm opx *beejujpobmmz* cf hjwfo {coin}**{amount}** qfs ipvs."
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:248
|
||||||
|
msgctxt "guildset:daily_voice_cap"
|
||||||
|
msgid "daily_voice_cap"
|
||||||
|
msgstr "ebjmz_wpjdf_dbq"
|
||||||
|
|
||||||
|
#: 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 "Nbyjnvn ovncfs pg ipvst qfs ebz up dpvou gps fbdi nfncfs."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Ujnf tqfoe jo wpjdf diboofmt pwfs uijt bnpvou xjmm opu cf usbdlfe upxbset "
|
||||||
|
"uif nfncfs't tubujtujdt. Usbdljoh xjmm sftvnf bu uif tubsu pg uif ofyu ebz. "
|
||||||
|
"Uif tubsu pg uif ebz jt efufsnjofe cz uif dpogjhvsfe hvjme ujnfapof."
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:261
|
||||||
|
msgctxt "guildset:daily_voice_cap|accepts"
|
||||||
|
msgid "The maximum number of voice hours to track per day."
|
||||||
|
msgstr "Uif nbyjnvn ovncfs pg wpjdf ipvst up usbdl qfs ebz."
|
||||||
|
|
||||||
|
#: 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 ""
|
||||||
|
"Nfncfst xjmm cf usbdlfe gps bu nptu {duration} qfs ebz. (**OPUF:** Uijt xjmm"
|
||||||
|
" opu bggfdu nfncfst dvssfoumz jo wpjdf diboofmt.)"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:335
|
||||||
|
msgctxt "ui:voice_tracker_config|button:close|label"
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Dmptf"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:349
|
||||||
|
msgctxt "ui:voice_tracker_config|button:reset|label"
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr "Sftfu"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:362
|
||||||
|
msgctxt "ui:voice_tracker_config|menu:untracked_channels|placeholder"
|
||||||
|
msgid "Set Untracked Channels"
|
||||||
|
msgstr "Tfu Vousbdlfe Diboofmt"
|
||||||
|
|
||||||
|
#: 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 "Wpjdf Usbdlfs Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: 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 "Tuvez Usbdlfs Dpogjhvsbujpo Qbofm"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:472
|
||||||
|
msgctxt "ui:voice_tracker_config|menu:untracked_channels|placeholder"
|
||||||
|
msgid "Select Untracked Channels"
|
||||||
|
msgstr "Tfmfdu Vousbdlfe Diboofmt"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:528
|
||||||
|
msgctxt "dash:voice_tracker|title"
|
||||||
|
msgid "Voice Tracker Configuration ({commands[configure voice_rewards]})"
|
||||||
|
msgstr "Wpjdf Usbdlfs Dpogjhvsbujpo ({commands[configure voice_rewards]})"
|
||||||
|
|
||||||
|
#: src/tracking/voice/settings.py:532
|
||||||
|
msgctxt "dash:voice_tracking|dropdown|placeholder"
|
||||||
|
msgid "Voice Activity Panel"
|
||||||
|
msgstr "Wpjdf Bdujwjuz Qbofm"
|
||||||
90
locales/ceaser/LC_MESSAGES/wards.po
Normal file
90
locales/ceaser/LC_MESSAGES/wards.po
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/wards.py:79
|
||||||
|
msgctxt "ward:sys_admin|failed"
|
||||||
|
msgid "You must be a bot owner to do this!"
|
||||||
|
msgstr "Zpv nvtu cf b cpu pxofs up ep uijt!"
|
||||||
|
|
||||||
|
#: src/wards.py:95
|
||||||
|
msgctxt "ward:high_management|failed"
|
||||||
|
msgid ""
|
||||||
|
"You must have the `ADMINISTRATOR` permission in this server to do this!"
|
||||||
|
msgstr ""
|
||||||
|
"Zpv nvtu ibwf uif `BENJOJTUSBUPS` qfsnjttjpo jo uijt tfswfs up ep uijt!"
|
||||||
|
|
||||||
|
#: src/wards.py:111
|
||||||
|
msgctxt "ward:low_management|failed"
|
||||||
|
msgid "You must have the `MANAGE_GUILD` permission in this server to do this!"
|
||||||
|
msgstr ""
|
||||||
|
"Zpv nvtu ibwf uif `NBOBHF_HVJME` qfsnjttjpo jo uijt tfswfs up ep uijt!"
|
||||||
|
|
||||||
|
#: src/wards.py:123
|
||||||
|
msgctxt "ward:moderator|failed"
|
||||||
|
msgid ""
|
||||||
|
"You must have the configured moderator role, or `MANAGE_GUILD` permissions "
|
||||||
|
"to do this."
|
||||||
|
msgstr ""
|
||||||
|
"Zpv nvtu ibwf uif dpogjhvsfe npefsbups spmf, ps `NBOBHF_HVJME` qfsnjttjpot "
|
||||||
|
"up ep uijt."
|
||||||
|
|
||||||
|
#: src/wards.py:149
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ward:equippable_role|error:bot_managed"
|
||||||
|
msgid "I cannot manage {role} because it is managed by another bot!"
|
||||||
|
msgstr "J dboopu nbobhf {role} cfdbvtf ju jt nbobhfe cz bopuifs cpu!"
|
||||||
|
|
||||||
|
#: src/wards.py:156
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ward:equippable_role|error:integration"
|
||||||
|
msgid "I cannot manage {role} because it is managed by a server integration."
|
||||||
|
msgstr "J dboopu nbobhf {role} cfdbvtf ju jt nbobhfe cz b tfswfs joufhsbujpo."
|
||||||
|
|
||||||
|
#: src/wards.py:163
|
||||||
|
msgctxt "ward:equippable_role|error:default_role"
|
||||||
|
msgid "I cannot manage the server's default role."
|
||||||
|
msgstr "J dboopu nbobhf uif tfswfs't efgbvmu spmf."
|
||||||
|
|
||||||
|
#: src/wards.py:170
|
||||||
|
msgctxt "ward:equippable_role|error:no_perms"
|
||||||
|
msgid "I need the `MANAGE_ROLES` permission before I can manage roles!"
|
||||||
|
msgstr "J offe uif `NBOBHF_SPMFT` qfsnjttjpo cfgpsf J dbo nbobhf spmft!"
|
||||||
|
|
||||||
|
#: src/wards.py:177
|
||||||
|
#, 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 "J dboopu bttjho ps sfnpwf {role} cfdbvtf ju jt bcpwf nz upq spmf!"
|
||||||
|
|
||||||
|
#: src/wards.py:184
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ward:equippable_role|error:not_assignable"
|
||||||
|
msgid "I don't have sufficient permissions to assign or remove {role}."
|
||||||
|
msgstr "J epo'u ibwf tvggjdjfou qfsnjttjpot up bttjho ps sfnpwf {role}."
|
||||||
|
|
||||||
|
#: src/wards.py:192
|
||||||
|
msgctxt "ward:equippable_role|error:actor_perms"
|
||||||
|
msgid "You need the `MANAGE_ROLES` permission before you can configure roles!"
|
||||||
|
msgstr ""
|
||||||
|
"Zpv offe uif `NBOBHF_SPMFT` qfsnjttjpo cfgpsf zpv dbo dpogjhvsf spmft!"
|
||||||
|
|
||||||
|
#: src/wards.py:199
|
||||||
|
#, 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 "Zpv dboopu dpogjhvsf {role} cfdbvtf ju jt bcpwf zpvs upq spmf!"
|
||||||
96
locales/ceaser/LC_MESSAGES/weekly-gui.po
Normal file
96
locales/ceaser/LC_MESSAGES/weekly-gui.po
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
# 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 <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: you@example.com\n"
|
||||||
|
"POT-Creation-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"PO-Revision-Date: 2007-10-18 14:00+0100\n"
|
||||||
|
"Last-Translator: you <you@example.com>\n"
|
||||||
|
"Language-Team: English <yourteam@example.com>\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 "TUVEZ IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:56
|
||||||
|
msgctxt "skin:weeklystats|mode:voice|title"
|
||||||
|
msgid "VOICE CHANNEL ACTIVITY"
|
||||||
|
msgstr "WPJDF DIBOOFM BDUJWJUZ"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:60
|
||||||
|
msgctxt "skin:weeklystats|mode:text|title"
|
||||||
|
msgid "MESSAGE ACTIVITY"
|
||||||
|
msgstr "NFTTBHF BDUJWJUZ"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:64
|
||||||
|
msgctxt "skin::weeklystats|mode:anki|title"
|
||||||
|
msgid "CARDS REVIEWED"
|
||||||
|
msgstr "DBSET SFWJFXFE"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:137
|
||||||
|
msgctxt "skin:weeklystats|weekdays"
|
||||||
|
msgid "M,T,W,T,F,S,S"
|
||||||
|
msgstr "N,U,X,U,G,T,T"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:207
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:weeklystats|mode:study|summary:this_week"
|
||||||
|
msgid "THIS WEEK: {amount} HOURS"
|
||||||
|
msgstr "UIJT XFFL: {amount} IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:211
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:weeklystats|mode:voice|summary:this_week"
|
||||||
|
msgid "THIS WEEK: {amount} HOURS"
|
||||||
|
msgstr "UIJT XFFL: {amount} IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:215
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:weeklystats|mode:text|summary:this_week"
|
||||||
|
msgid "THIS WEEK: {amount} MESSAGES"
|
||||||
|
msgstr "UIJT XFFL: {amount} NFTTBHFT"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:219
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:weeklystats|mode:text|summary:this_week"
|
||||||
|
msgid "THIS WEEK: {amount} CARDS"
|
||||||
|
msgstr "UIJT XFFL: {amount} DBSET"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:240
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:weeklystats|mode:study|summary:last_week"
|
||||||
|
msgid "LAST WEEK: {amount} HOURS"
|
||||||
|
msgstr "MBTU XFFL: {amount} IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:244
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:weeklystats|mode:voice|summary:last_week"
|
||||||
|
msgid "LAST WEEK: {amount} HOURS"
|
||||||
|
msgstr "MBTU XFFL: {amount} IPVST"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:248
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:weeklystats|mode:text|summary:last_week"
|
||||||
|
msgid "LAST WEEK: {amount} MESSAGES"
|
||||||
|
msgstr "MBTU XFFL: {amount} NFTTBHFT"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:252
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:weeklystats|mode:text|summary:last_week"
|
||||||
|
msgid "LAST WEEK: {amount} CARDS"
|
||||||
|
msgstr "MBTU XFFL: {amount} DBSET"
|
||||||
|
|
||||||
|
#: src/gui/cards/weekly.py:272
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "skin:weeklystats|footer"
|
||||||
|
msgid "Weekly Statistics • As of {day} {month} • {name} {discrim}"
|
||||||
|
msgstr "Xfflmz Tubujtujdt • Bt pg {day} {month} • {name} {discrim}"
|
||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -18,41 +18,41 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:50
|
#: src/modules/pomodoro/timer.py:51
|
||||||
msgctxt "timer|stage:break|name"
|
msgctxt "timer|stage:break|name"
|
||||||
msgid "BREAK"
|
msgid "BREAK"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:51
|
#: src/modules/pomodoro/timer.py:52
|
||||||
msgctxt "timer|stage:focus|name"
|
msgctxt "timer|stage:focus|name"
|
||||||
msgid "FOCUS"
|
msgid "FOCUS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:155
|
#: src/modules/pomodoro/timer.py:158
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "timer|webhook|name"
|
msgctxt "timer|webhook|name"
|
||||||
msgid "{bot_name} Pomodoro"
|
msgid "{bot_name} Pomodoro"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:159
|
#: src/modules/pomodoro/timer.py:162
|
||||||
msgctxt "timer|webhook|audit_reason"
|
msgctxt "timer|webhook|audit_reason"
|
||||||
msgid "Pomodoro Notifications"
|
msgid "Pomodoro Notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:170
|
#: src/modules/pomodoro/timer.py:173
|
||||||
msgctxt "timer|webhook|error:insufficient_permissions"
|
msgctxt "timer|webhook|error:insufficient_permissions"
|
||||||
msgid ""
|
msgid ""
|
||||||
"I require the `MANAGE_WEBHOOKS` permission to send pomodoro notifications "
|
"I require the `MANAGE_WEBHOOKS` permission to send pomodoro notifications "
|
||||||
"here!"
|
"here!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:229
|
#: src/modules/pomodoro/timer.py:232
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "timer|default_base_name"
|
msgctxt "timer|default_base_name"
|
||||||
msgid "Timer {pattern}"
|
msgid "Timer {pattern}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:403
|
#: src/modules/pomodoro/timer.py:406
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "timer|kicked_message"
|
msgctxt "timer|kicked_message"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -64,20 +64,20 @@ msgid_plural ""
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:496
|
#: src/modules/pomodoro/timer.py:499
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "timer|status|stage:focus|statusline"
|
msgctxt "timer|status|stage:focus|statusline"
|
||||||
msgid "{channel} is now in **FOCUS**! Good luck, **BREAK** starts {timestamp}"
|
msgid "{channel} is now in **FOCUS**! Good luck, **BREAK** starts {timestamp}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:501
|
#: src/modules/pomodoro/timer.py:504
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "timer|status|stage:break|statusline"
|
msgctxt "timer|status|stage:break|statusline"
|
||||||
msgid ""
|
msgid ""
|
||||||
"{channel} is now on **BREAK**! Take a rest, **FOCUS** starts {timestamp}"
|
"{channel} is now on **BREAK**! Take a rest, **FOCUS** starts {timestamp}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:533
|
#: src/modules/pomodoro/timer.py:536
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "timer|status|warningline"
|
msgctxt "timer|status|warningline"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -85,13 +85,13 @@ msgid ""
|
|||||||
"next stage."
|
"next stage."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:552
|
#: src/modules/pomodoro/timer.py:555
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "timer|status|stopped:auto"
|
msgctxt "timer|status|stopped:auto"
|
||||||
msgid "Timer stopped! Join {channel} to start the timer."
|
msgid "Timer stopped! Join {channel} to start the timer."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/timer.py:557
|
#: src/modules/pomodoro/timer.py:560
|
||||||
msgctxt "timer|status|stopped:manual"
|
msgctxt "timer|status|stopped:manual"
|
||||||
msgid "Timer stopped! Press `Start` to restart the timer."
|
msgid "Timer stopped! Press `Start` to restart the timer."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -116,254 +116,285 @@ msgctxt "dash:stats|dropdown|placeholder"
|
|||||||
msgid "Pomodoro Timer Panel"
|
msgid "Pomodoro Timer Panel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:83
|
#: src/modules/pomodoro/cog.py:82
|
||||||
msgctxt "cmd_check:ready|failed"
|
msgctxt "cmd_check:ready|failed"
|
||||||
msgid ""
|
msgid ""
|
||||||
"I am currently restarting! The Pomodoro timers will be unavailable until I "
|
"I am currently restarting! The Pomodoro timers will be unavailable until I "
|
||||||
"have restarted. Thank you for your patience!"
|
"have restarted. Thank you for your patience!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:321
|
|
||||||
msgctxt "cmd:pomodoro"
|
|
||||||
msgid "timers"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:322
|
#: src/modules/pomodoro/cog.py:322
|
||||||
msgctxt "cmd:pomodoro|desc"
|
msgctxt "cmd:timer"
|
||||||
msgid "Base group for all pomodoro timer commands."
|
msgid "timer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:330
|
#: src/modules/pomodoro/cog.py:323
|
||||||
msgctxt "cmd:pomodoro_status"
|
msgctxt "cmd:timer|desc"
|
||||||
msgid "show"
|
msgid "Show your current (or selected) pomodoro timer."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:331
|
#: src/modules/pomodoro/cog.py:326
|
||||||
msgctxt "cmd:pomodoro_status|desc"
|
msgctxt "cmd:timer|param:channel"
|
||||||
msgid "Display the status of a single pomodoro timer."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:334
|
|
||||||
msgctxt "cmd:pomodoro_status|param:channel"
|
|
||||||
msgid "timer_channel"
|
msgid "timer_channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:339
|
#: src/modules/pomodoro/cog.py:331
|
||||||
msgctxt "cmd:pomodoro_status|param:channel|desc"
|
msgctxt "cmd:timer|param:channel|desc"
|
||||||
msgid "The channel for which you want to view the timer."
|
msgid "Select a timer to display (by selecting the timer voice channel)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:357
|
#: src/modules/pomodoro/cog.py:353 src/modules/pomodoro/cog.py:423
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:pomodoro_status|error:no_timer"
|
msgctxt "cmd:timer|error:no_timers|desc"
|
||||||
msgid "The channel {channel} does not have a timer set up!"
|
msgid ""
|
||||||
|
"**This server has no timers set up!**\n"
|
||||||
|
"Ask an admin to set up and configure a timer with {create_cmd} first, or "
|
||||||
|
"rent a private room with {room_cmd} and create one yourself!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:367
|
#: src/modules/pomodoro/cog.py:367
|
||||||
msgctxt "cmd:pomodoro_list"
|
|
||||||
msgid "list"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:368
|
|
||||||
msgctxt "cmd:pomodoro_list|desc"
|
|
||||||
msgid "List the available pomodoro timers."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:391
|
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:pomodoro_list|error:no_timers"
|
msgctxt "cmd:timer|error:no_channel|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"No timers have been setup in this server!\n"
|
"**I don't know what timer to show you.**\n"
|
||||||
"You can ask an admin to create one with {command}, or rent a private room "
|
"No channel selected and you are not in a voice channel! Use {timers_cmd} to "
|
||||||
"and create one yourself!"
|
"list the available timers in this server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:404
|
#: src/modules/pomodoro/cog.py:380
|
||||||
msgctxt "cmd:pomodoro_list|error:no_visible_timers"
|
|
||||||
msgid "There are no timers you can join in this server!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:414
|
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:pomodoro_list|embed:timer_list|title"
|
msgctxt "cmd:timer|error:no_timer_in_channel"
|
||||||
msgid "Pomodoro Timers in **{guild}**"
|
msgid ""
|
||||||
|
"The channel {channel} is not a pomodoro timer room!\n"
|
||||||
|
"Use {timers_cmd} to list the available timers in this server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:423
|
#: src/modules/pomodoro/cog.py:396
|
||||||
|
msgctxt "cmd:timers"
|
||||||
|
msgid "timers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:397
|
||||||
|
msgctxt "cmd:timers|desc"
|
||||||
|
msgid "List the available pomodoro timer rooms."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:436
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:pomodoro_list|status:stopped_auto"
|
msgctxt "cmd:timer|error:no_visible_timers|desc"
|
||||||
|
msgid ""
|
||||||
|
"**There are no available pomodoro timers!**\n"
|
||||||
|
"Ask an admin to set up a new timer with {create_cmd}, or rent a private room "
|
||||||
|
"with {room_cmd} and create one yourself!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:449
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timers|embed:timer_list|title"
|
||||||
|
msgid "Pomodoro Timer Rooms in **{guild}**"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:458
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:timers|status:stopped_auto"
|
||||||
msgid ""
|
msgid ""
|
||||||
"`{pattern}` timer is stopped with no members!\n"
|
"`{pattern}` timer is stopped with no members!\n"
|
||||||
"Join {channel} to restart it."
|
"Join {channel} to restart it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:428
|
#: src/modules/pomodoro/cog.py:464
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:pomodoro_list|status:stopped_manual"
|
msgctxt "cmd:timers|status:stopped_manual"
|
||||||
msgid ""
|
msgid ""
|
||||||
"`{pattern}` timer is stopped with `{members}` members!\n"
|
"`{pattern}` timer is stopped with `{members}` members!\n"
|
||||||
"Join {channel} and press `Start` to start it!"
|
"Join {channel} and press `Start` to start it!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:435
|
#: src/modules/pomodoro/cog.py:471
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:pomodoro_list|status:running_focus"
|
msgctxt "cmd:timers|status:running_focus"
|
||||||
msgid ""
|
msgid ""
|
||||||
"`{pattern}` timer is running with `{members}` members!\n"
|
"`{pattern}` timer is running with `{members}` members!\n"
|
||||||
"Currently **focusing**, with break starting {timestamp}"
|
"Currently **focusing**, with break starting {timestamp}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:441
|
#: src/modules/pomodoro/cog.py:477
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:pomodoro_list|status:running_break"
|
msgctxt "cmd:timers|status:running_break"
|
||||||
msgid ""
|
msgid ""
|
||||||
"`{pattern}` timer is running with `{members}` members!\n"
|
"`{pattern}` timer is running with `{members}` members!\n"
|
||||||
"Currently **resting**, with focus starting {timestamp}"
|
"Currently **resting**, with focus starting {timestamp}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:455
|
#: src/modules/pomodoro/cog.py:491
|
||||||
msgctxt "cmd:pomodoro_admin"
|
msgctxt "cmd:pomodoro"
|
||||||
msgid "admin"
|
msgid "pomodoro"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:456
|
#: src/modules/pomodoro/cog.py:492
|
||||||
msgctxt "cmd:pomodoro_admin|desc"
|
msgctxt "cmd:pomodoro|desc"
|
||||||
msgid "Command group for pomodoro admin controls."
|
msgid "Create and configure pomodoro timer rooms."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:462
|
#: src/modules/pomodoro/cog.py:499
|
||||||
msgctxt "cmd:pomodoro_create"
|
msgctxt "cmd:pomodoro_create"
|
||||||
msgid "create"
|
msgid "create"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:465
|
#: src/modules/pomodoro/cog.py:502
|
||||||
msgctxt "cmd:pomodoro_create|desc"
|
msgctxt "cmd:pomodoro_create|desc"
|
||||||
msgid "Create a new Pomodoro timer. Requires admin permissions."
|
msgid "Create a new Pomodoro timer. Requires manage channel permissions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:469
|
#: src/modules/pomodoro/cog.py:506
|
||||||
msgctxt "cmd:pomodoro_create|param:channel"
|
msgctxt "cmd:pomodoro_create|param:channel"
|
||||||
msgid "timer_channel"
|
msgid "timer_channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:475
|
#: src/modules/pomodoro/cog.py:512
|
||||||
msgctxt "cmd:pomodoro_create|param:channel|desc"
|
msgctxt "cmd:pomodoro_create|param:channel|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Voice channel to create the timer in. (Defaults to your current channel, or "
|
"Voice channel to create the timer in. (Defaults to your current channel, or "
|
||||||
"makes a new one.)"
|
"makes a new one.)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:504
|
#: src/modules/pomodoro/cog.py:557
|
||||||
msgctxt "cmd:pomodoro_create|error:insufficient_perms"
|
msgctxt "cmd:pomodoro_create|new_channel|error:your_insufficient_perms|title"
|
||||||
msgid "Only server administrators can create timers!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:531
|
|
||||||
msgctxt "cmd:pomodoro_create|error:channel_create_failed|title"
|
|
||||||
msgid "Could not create pomodoro voice channel!"
|
msgid "Could not create pomodoro voice channel!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:535
|
#: src/modules/pomodoro/cog.py:561
|
||||||
msgctxt "cmd:pomodoro_create|error:channel_create|desc"
|
msgctxt "cmd:pomodoro_create|new_channel|error:your_insufficient_perms"
|
||||||
|
msgid ""
|
||||||
|
"No `timer_channel` was provided, and you lack the 'Manage Channels` "
|
||||||
|
"permission required to create a new timer room!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:572
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|error:my_insufficient_perms|title"
|
||||||
|
msgid "Could not create pomodoro voice channel!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:576
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|error:my_insufficient_perms|desc"
|
||||||
|
msgid ""
|
||||||
|
"No `timer_channel` was provided, and I lack the 'Manage Channels' permission "
|
||||||
|
"required to create a new voice channel."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:587
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|default_name"
|
||||||
|
msgid "Timer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:591
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|audit_reason"
|
||||||
|
msgid "Creating Pomodoro Voice Channel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:600
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|error:channel_create_failed|title"
|
||||||
|
msgid "Could not create pomodoro voice channel!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:604
|
||||||
|
msgctxt "cmd:pomodoro_create|new_channel|error:channel_create_failed|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Failed to create a new pomodoro voice channel due to an unknown Discord "
|
"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 "
|
"communication error. Please try creating the channel manually and pass it to "
|
||||||
"the `timer_channel` argument of this command."
|
"the `timer_channel` argument of this command."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:549
|
#: src/modules/pomodoro/cog.py:621
|
||||||
msgctxt "cmd:pomodoro_create|error:channel_create_permissions|title"
|
|
||||||
msgid "Could not create pomodoro voice channel!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:553
|
|
||||||
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:567
|
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:pomodoro_create|error:timer_exists"
|
msgctxt "cmd:pomodoro_create|add_timer|error:timer_exists"
|
||||||
msgid ""
|
msgid "A timer already exists in {channel}! Reconfigure it with {edit_cmd}."
|
||||||
"A timer already exists in {channel}! Use `/pomodoro admin edit` to modify it."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:606
|
#: src/modules/pomodoro/cog.py:635
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:pomodoro_create|add_timer|error:your_insufficient_perms"
|
||||||
|
msgid ""
|
||||||
|
"You must have the 'Manage Channel' permission in {channel} in order to add a "
|
||||||
|
"timer there!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/cog.py:684
|
||||||
msgctxt "cmd:pomodoro_create|response:success|content"
|
msgctxt "cmd:pomodoro_create|response:success|content"
|
||||||
msgid "Timer created successfully! Use the panel below to reconfigure."
|
msgid "Timer created successfully! Use the panel below to reconfigure."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:612
|
#: src/modules/pomodoro/cog.py:690
|
||||||
msgctxt "cmd:pomodoro_destroy"
|
msgctxt "cmd:pomodoro_destroy"
|
||||||
msgid "destroy"
|
msgid "destroy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:615
|
#: src/modules/pomodoro/cog.py:693
|
||||||
msgctxt "cmd:pomodoro_destroy|desc"
|
msgctxt "cmd:pomodoro_destroy|desc"
|
||||||
msgid ""
|
msgid "Remove a pomodoro timer from a voice channel."
|
||||||
"Delete a pomodoro timer from a voice channel. Requires admin permissions."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:619
|
#: src/modules/pomodoro/cog.py:697
|
||||||
msgctxt "cmd:pomodoro_destroy|param:channel"
|
msgctxt "cmd:pomodoro_destroy|param:channel"
|
||||||
msgid "timer_channel"
|
msgid "timer_channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:622
|
#: src/modules/pomodoro/cog.py:700
|
||||||
msgctxt "cmd:pomodoro_destroy|param:channel"
|
msgctxt "cmd:pomodoro_destroy|param:channel"
|
||||||
msgid "Channel with the timer to delete."
|
msgid "Select a timer voice channel to remove the timer from."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:640
|
#: src/modules/pomodoro/cog.py:718
|
||||||
msgctxt "cmd:pomodoro_destroy|error:no_timer"
|
msgctxt "cmd:pomodoro_destroy|error:no_timer"
|
||||||
msgid "This channel doesn't have an attached pomodoro timer!"
|
msgid "This channel doesn't have an attached pomodoro timer!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:655
|
#: src/modules/pomodoro/cog.py:731
|
||||||
msgctxt "cmd:pomodoro_destroy|error:insufficient_perms|owned"
|
msgctxt "cmd:pomodoro_destroy|error:insufficient_perms|owned"
|
||||||
msgid ""
|
msgid ""
|
||||||
"You need to be an administrator or own this channel to remove this timer!"
|
"You need to be an administrator or own this channel to remove this timer!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:665
|
#: src/modules/pomodoro/cog.py:740
|
||||||
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:pomodoro_destroy|error:insufficient_perms|notowned"
|
msgctxt "cmd:pomodoro_destroy|error:insufficient_perms|notowned"
|
||||||
msgid "You need to be a server administrator to remove this timer!"
|
msgid ""
|
||||||
|
"You need to have the `Manage Channels` permission in {channel} to remove "
|
||||||
|
"this timer!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:677
|
#: src/modules/pomodoro/cog.py:751
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:pomdoro_destroy|response:success|description"
|
msgctxt "cmd:pomdoro_destroy|response:success|description"
|
||||||
msgid "Timer successfully removed from {channel}."
|
msgid "Timer successfully removed from {channel}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:683
|
#: src/modules/pomodoro/cog.py:757
|
||||||
msgctxt "cmd:pomodoro_edit"
|
msgctxt "cmd:pomodoro_edit"
|
||||||
msgid "edit"
|
msgid "edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:686
|
#: src/modules/pomodoro/cog.py:760
|
||||||
msgctxt "cmd:pomodoro_edit|desc"
|
msgctxt "cmd:pomodoro_edit|desc"
|
||||||
msgid "Edit a Timer"
|
msgid "Reconfigure a pomodoro timer."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:690
|
#: src/modules/pomodoro/cog.py:764
|
||||||
msgctxt "cmd:pomodoro_edit|param:channel"
|
msgctxt "cmd:pomodoro_edit|param:channel"
|
||||||
msgid "timer_channel"
|
msgid "timer_channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:696
|
#: src/modules/pomodoro/cog.py:770
|
||||||
msgctxt "cmd:pomodoro_edit|param:channel|desc"
|
msgctxt "cmd:pomodoro_edit|param:channel|desc"
|
||||||
msgid "Channel holding the timer to edit."
|
msgid "Select a timer voice channel to reconfigure."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:737
|
#: src/modules/pomodoro/cog.py:811
|
||||||
msgctxt "cmd:pomodoro_edit|error:no_timer"
|
msgctxt "cmd:pomodoro_edit|error:no_timer"
|
||||||
msgid "This channel doesn't have an attached pomodoro timer to edit!"
|
msgid "This channel doesn't have an attached pomodoro timer to edit!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:750
|
#: src/modules/pomodoro/cog.py:824
|
||||||
msgctxt "cmd:pomodoro_edit|error:insufficient_perms|role:other"
|
msgctxt "cmd:pomodoro_edit|error:insufficient_perms|role:other"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Insufficient permissions to modifiy this timer!\n"
|
"Insufficient permissions to modifiy this timer!\n"
|
||||||
@@ -371,28 +402,28 @@ msgid ""
|
|||||||
"manager role."
|
"manager role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:771
|
#: src/modules/pomodoro/cog.py:845
|
||||||
msgctxt "cmd:pomodoro_edit|error:insufficient_permissions|role_needed:admin"
|
msgctxt "cmd:pomodoro_edit|error:insufficient_permissions|role_needed:admin"
|
||||||
msgid "You need to be a guild admin to modify this option!"
|
msgid "You need to be a guild admin to modify this option!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:776
|
#: src/modules/pomodoro/cog.py:850
|
||||||
msgctxt "cmd:pomodoro_edit|error:insufficient_permissions|role_needed:owner"
|
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!"
|
msgid "You need to be a channel owner or guild admin to modify this option!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:781
|
#: src/modules/pomodoro/cog.py:855
|
||||||
msgctxt "cmd:pomodoro_edit|error:insufficient_permissions|role_needed:manager"
|
msgctxt "cmd:pomodoro_edit|error:insufficient_permissions|role_needed:manager"
|
||||||
msgid ""
|
msgid ""
|
||||||
"You need to be a guild admin or have the manager role to modify this option!"
|
"You need to be a guild admin or have the manager role to modify this option!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:817
|
#: src/modules/pomodoro/cog.py:891
|
||||||
msgctxt "cmd:configure_pomodoro"
|
msgctxt "cmd:configure_pomodoro"
|
||||||
msgid "pomodoro"
|
msgid "pomodoro"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/cog.py:818
|
#: src/modules/pomodoro/cog.py:892
|
||||||
msgctxt "cmd:configure_pomodoro|desc"
|
msgctxt "cmd:configure_pomodoro|desc"
|
||||||
msgid "Configure Pomodoro Timer System"
|
msgid "Configure Pomodoro Timer System"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -427,95 +458,100 @@ msgctxt "formatstring:channel_name|key:pattern"
|
|||||||
msgid "{pattern}"
|
msgid "{pattern}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:32
|
#: src/modules/pomodoro/options.py:33
|
||||||
msgctxt "timerset:voice_channel"
|
msgctxt "timerset:voice_channel"
|
||||||
msgid "channel"
|
msgid "channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:35
|
#: src/modules/pomodoro/options.py:36
|
||||||
msgctxt "timerset:voice_channel|desc"
|
msgctxt "timerset:voice_channel|desc"
|
||||||
msgid "Channel in which to track timer members and send alerts."
|
msgid "Channel in which to track timer members and send alerts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:45
|
#: src/modules/pomodoro/options.py:48
|
||||||
msgctxt "timerset:notification_channel"
|
msgctxt "timerset:notification_channel"
|
||||||
msgid "notification_channel"
|
msgid "notification_channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:48
|
#: src/modules/pomodoro/options.py:51
|
||||||
msgctxt "timerset:notification_channel|desc"
|
msgctxt "timerset:notification_channel|desc"
|
||||||
msgid "Channel to which to send timer status cards and notifications."
|
msgid "Channel to which to send timer status cards and notifications."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:68
|
#: src/modules/pomodoro/options.py:73
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "timerset:notification_channel|format:notset"
|
msgctxt "timerset:notification_channel|format:notset"
|
||||||
msgid "Not Set (Using {channel})"
|
msgid "Not Set (Using {channel})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:78
|
#: src/modules/pomodoro/options.py:83
|
||||||
msgctxt "timerset:inactivity_threshold|inactivity_threshold"
|
msgctxt "timerset:inactivity_threshold|inactivity_threshold"
|
||||||
msgid "inactivity_threshold"
|
msgid "inactivity_threshold"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:81
|
#: src/modules/pomodoro/options.py:86
|
||||||
msgctxt "timerset:inactivity_threshold|desc"
|
msgctxt "timerset:inactivity_threshold|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Number of inactive focus+break stages before a member is removed from the "
|
"Number of inactive focus+break stages before a member is removed from the "
|
||||||
"timer."
|
"timer."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:85
|
#: src/modules/pomodoro/options.py:90
|
||||||
msgctxt "timerset:inactivity_threshold|desc"
|
msgctxt "timerset:inactivity_threshold|desc"
|
||||||
msgid "How many timer cycles before kicking inactive members."
|
msgid "How many timer cycles before kicking inactive members."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:101
|
#: src/modules/pomodoro/options.py:112
|
||||||
|
msgctxt "timerset:inactivity_length|desc"
|
||||||
|
msgid "The inactivity threshold must be a positive whole number!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:120
|
||||||
msgctxt "timerset:manager_role"
|
msgctxt "timerset:manager_role"
|
||||||
msgid "manager_role"
|
msgid "manager_role"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:104
|
#: src/modules/pomodoro/options.py:123
|
||||||
msgctxt "timerset:manager_role|desc"
|
msgctxt "timerset:manager_role|desc"
|
||||||
msgid "Role allowed to start, stop, and edit the focus/break lengths."
|
msgid "Role allowed to start, stop, and edit the focus/break lengths."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:116
|
#: src/modules/pomodoro/options.py:137
|
||||||
msgctxt "timerset:manager_role|format:notset"
|
msgctxt "timerset:manager_role|format:notset"
|
||||||
msgid "Not Set (Only Admins may start/stop or edit pattern)"
|
msgid "Not Set (Only Admins may start/stop or edit pattern)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:126
|
#: src/modules/pomodoro/options.py:147
|
||||||
msgctxt "timerset:voice_alerts"
|
msgctxt "timerset:voice_alerts"
|
||||||
msgid "voice_alerts"
|
msgid "voice_alerts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:129
|
#: src/modules/pomodoro/options.py:150
|
||||||
msgctxt "timerset:voice_alerts|desc"
|
msgctxt "timerset:voice_alerts|desc"
|
||||||
msgid "Whether to join the voice channel and announce focus and break stages."
|
msgid "Whether to join the voice channel and announce focus and break stages."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:140
|
#: src/modules/pomodoro/options.py:162
|
||||||
msgctxt "timerset:base_name"
|
msgctxt "timerset:base_name"
|
||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:143
|
#: src/modules/pomodoro/options.py:165
|
||||||
msgctxt "timerset:base_name|desc"
|
msgctxt "timerset:base_name|desc"
|
||||||
msgid "Timer name, as shown on the timer card."
|
msgid "Timer name, as shown on the timer card."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:147
|
#: src/modules/pomodoro/options.py:169
|
||||||
msgctxt "timerset:base_name|accepts"
|
msgctxt "timerset:base_name|accepts"
|
||||||
msgid "Any short name, shown on the timer card."
|
msgid "Any short name, shown on the timer card."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:161
|
#: src/modules/pomodoro/options.py:184
|
||||||
msgctxt "timerset:channel_name_format"
|
msgctxt "timerset:channel_name_format"
|
||||||
msgid "channel_name"
|
msgid "channel_name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:164
|
#: src/modules/pomodoro/options.py:187
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "timerset:channel_name_format|desc"
|
msgctxt "timerset:channel_name_format|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -523,49 +559,55 @@ msgid ""
|
|||||||
"and {stage} keys."
|
"and {stage} keys."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:168
|
#: src/modules/pomodoro/options.py:191
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "timerset:channel_name|accepts"
|
msgctxt "timerset:channel_name|accepts"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Timer channel name, with keys {remaining}, {name}, {pattern}, and {stage}."
|
"Timer channel name, with keys {remaining}, {name}, {pattern}, and {stage}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:180
|
#: src/modules/pomodoro/options.py:221
|
||||||
|
msgctxt "timerset:channel_name_format|error:too_long"
|
||||||
|
msgid ""
|
||||||
|
"The provided name is too long! Channel names can be at most `100` characters."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/options.py:240
|
||||||
msgctxt "timerset:focus_length"
|
msgctxt "timerset:focus_length"
|
||||||
msgid "focus_length"
|
msgid "focus_length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:183
|
#: src/modules/pomodoro/options.py:243
|
||||||
msgctxt "timerset:focus_length|desc"
|
msgctxt "timerset:focus_length|desc"
|
||||||
msgid "Length of the focus stage of the timer in minutes."
|
msgid "Length of the focus stage of the timer in minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:188
|
#: src/modules/pomodoro/options.py:248
|
||||||
msgctxt "timerset:focus_length|accepts"
|
msgctxt "timerset:focus_length|accepts"
|
||||||
msgid "A positive integer number of minutes."
|
msgid "A positive integer number of minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:212
|
#: src/modules/pomodoro/options.py:273
|
||||||
msgctxt "timerset:focus_length|desc"
|
msgctxt "timerset:focus_length|desc"
|
||||||
msgid "Please enter a positive number of minutes."
|
msgid "Please enter a positive number of minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:220
|
#: src/modules/pomodoro/options.py:281
|
||||||
msgctxt "timerset:break_length"
|
msgctxt "timerset:break_length"
|
||||||
msgid "break_length"
|
msgid "break_length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:223
|
#: src/modules/pomodoro/options.py:284
|
||||||
msgctxt "timerset:break_length|desc"
|
msgctxt "timerset:break_length|desc"
|
||||||
msgid "Length of the break stage of the timer in minutes."
|
msgid "Length of the break stage of the timer in minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:228
|
#: src/modules/pomodoro/options.py:289
|
||||||
msgctxt "timerset:break_length|accepts"
|
msgctxt "timerset:break_length|accepts"
|
||||||
msgid "A positive integer number of minutes."
|
msgid "A positive integer number of minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/options.py:252
|
#: src/modules/pomodoro/options.py:314
|
||||||
msgctxt "timerset:break_length|desc"
|
msgctxt "timerset:break_length|desc"
|
||||||
msgid "Please enter a positive number of minutes."
|
msgid "Please enter a positive number of minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -690,64 +732,69 @@ msgctxt "ui:timer_status|button:stop|label"
|
|||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:51
|
#: src/modules/pomodoro/ui/config.py:45
|
||||||
|
msgctxt "ui:timer_options|error:timer_destroyed"
|
||||||
|
msgid "This timer no longer exists! Closing option menu."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/pomodoro/ui/config.py:68
|
||||||
msgctxt "ui:timer_options|button:edit|label"
|
msgctxt "ui:timer_options|button:edit|label"
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:67
|
#: src/modules/pomodoro/ui/config.py:84
|
||||||
msgctxt "ui:timer_options|button:voice_alerts|label"
|
msgctxt "ui:timer_options|button:voice_alerts|label"
|
||||||
msgid "Voice Alerts"
|
msgid "Voice Alerts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:88
|
#: src/modules/pomodoro/ui/config.py:105
|
||||||
msgctxt "ui:timer_options|button:delete|success|title"
|
msgctxt "ui:timer_options|button:delete|success|title"
|
||||||
msgid "Timer Deleted"
|
msgid "Timer Deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:92
|
#: src/modules/pomodoro/ui/config.py:109
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:timer_options|button:delete|success|description"
|
msgctxt "ui:timer_options|button:delete|success|description"
|
||||||
msgid "The timer in {channel} has been removed."
|
msgid "The timer in {channel} has been removed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:100
|
#: src/modules/pomodoro/ui/config.py:117
|
||||||
msgctxt "ui:timer_options|button:delete|label"
|
msgctxt "ui:timer_options|button:delete|label"
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:119
|
#: src/modules/pomodoro/ui/config.py:136
|
||||||
msgctxt "ui:timer_options|menu:voice_channel|placeholder"
|
msgctxt "ui:timer_options|menu:voice_channel|placeholder"
|
||||||
msgid "Set Voice Channel"
|
msgid "Set Voice Channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:142
|
#: src/modules/pomodoro/ui/config.py:159
|
||||||
msgctxt "ui:timer_options|menu:notification_channel|placeholder"
|
msgctxt "ui:timer_options|menu:notification_channel|placeholder"
|
||||||
msgid "Set Notification Channel"
|
msgid "Set Notification Channel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:157
|
#: src/modules/pomodoro/ui/config.py:174
|
||||||
msgctxt "ui:timer_options|menu:manager_role|placeholder"
|
msgctxt "ui:timer_options|menu:manager_role|placeholder"
|
||||||
msgid "Set Manager Role"
|
msgid "Set Manager Role"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:166
|
#: src/modules/pomodoro/ui/config.py:183
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:timer_options|embed|title"
|
msgctxt "ui:timer_options|embed|title"
|
||||||
msgid "Timer Control Panel for {channel}"
|
msgid "Timer Control Panel for {channel}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:173
|
#: src/modules/pomodoro/ui/config.py:190
|
||||||
msgctxt "ui:timer_options|embed|footer"
|
msgctxt "ui:timer_options|embed|footer"
|
||||||
msgid "Hover over the option names to view descriptions."
|
msgid "Hover over the option names to view descriptions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:185
|
#: src/modules/pomodoro/ui/config.py:202
|
||||||
msgctxt "ui:timer_options|embed|field:pattern|name"
|
msgctxt "ui:timer_options|embed|field:pattern|name"
|
||||||
msgid "Pattern"
|
msgid "Pattern"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:188
|
#: src/modules/pomodoro/ui/config.py:205
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:timer_options|embed|field:pattern|value"
|
msgctxt "ui:timer_options|embed|field:pattern|value"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -755,12 +802,12 @@ msgid ""
|
|||||||
"**`{break_len} minutes`** break"
|
"**`{break_len} minutes`** break"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:199
|
#: src/modules/pomodoro/ui/config.py:216
|
||||||
msgctxt "ui:timer_options|embed|field:channel_name|name"
|
msgctxt "ui:timer_options|embed|field:channel_name|name"
|
||||||
msgid "Channel Name Preview"
|
msgid "Channel Name Preview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:203
|
#: src/modules/pomodoro/ui/config.py:220
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:timer_options|embed|field:channel_name|value"
|
msgctxt "ui:timer_options|embed|field:channel_name|value"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -768,35 +815,35 @@ msgid ""
|
|||||||
"(The actual channel name may not match due to ratelimits.)"
|
"(The actual channel name may not match due to ratelimits.)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:213
|
#: src/modules/pomodoro/ui/config.py:230
|
||||||
msgctxt "ui:timer_options|embed|field:issues|name"
|
msgctxt "ui:timer_options|embed|field:issues|name"
|
||||||
msgid "Issues"
|
msgid "Issues"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:231
|
#: src/modules/pomodoro/ui/config.py:248
|
||||||
msgctxt "ui:timer_options|issue:no_voice_channel"
|
msgctxt "ui:timer_options|issue:no_voice_channel"
|
||||||
msgid "The configured voice channel does not exist! Please update it below."
|
msgid "The configured voice channel does not exist! Please update it below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:242
|
#: src/modules/pomodoro/ui/config.py:259
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:timer_options|issue:cannot_speak"
|
msgctxt "ui:timer_options|issue:cannot_speak"
|
||||||
msgid "Voice alerts are on, but I don't have speaking permissions in {channel}"
|
msgid "Voice alerts are on, but I don't have speaking permissions in {channel}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:249
|
#: src/modules/pomodoro/ui/config.py:266
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:timer_options|issue:cannot_change_name"
|
msgctxt "ui:timer_options|issue:cannot_change_name"
|
||||||
msgid ""
|
msgid ""
|
||||||
"I cannot update the name of {channel}! (Needs `MANAGE_CHANNELS` permission)"
|
"I cannot update the name of {channel}! (Needs `MANAGE_CHANNELS` permission)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:260
|
#: src/modules/pomodoro/ui/config.py:277
|
||||||
msgctxt "ui:timer_options|issue:notif_channel_dne"
|
msgctxt "ui:timer_options|issue:notif_channel_dne"
|
||||||
msgid "Configured notification channel does not exist!"
|
msgid "Configured notification channel does not exist!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:269
|
#: src/modules/pomodoro/ui/config.py:286
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:timer_options|issue:notif_channel_write"
|
msgctxt "ui:timer_options|issue:notif_channel_write"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -804,7 +851,7 @@ msgid ""
|
|||||||
"{channel}"
|
"{channel}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/pomodoro/ui/config.py:277
|
#: src/modules/pomodoro/ui/config.py:294
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:timer_options|issues:cannot_make_webhooks"
|
msgctxt "ui:timer_options|issues:cannot_make_webhooks"
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -21,3 +21,8 @@ msgstr ""
|
|||||||
msgctxt "group:configure"
|
msgctxt "group:configure"
|
||||||
msgid "configure"
|
msgid "configure"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/core/config.py:29
|
||||||
|
msgctxt "group:configure|desc"
|
||||||
|
msgid "View and adjust my configuration options."
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -204,19 +204,19 @@ msgid_plural "Accounts successfully updated."
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:394
|
#: src/modules/economy/cog.py:409
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_balance|embed:role_lb|author"
|
msgctxt "cmd:economy_balance|embed:role_lb|author"
|
||||||
msgid "Balance sheet for {name}"
|
msgid "Balance sheet for {name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:400
|
#: src/modules/economy/cog.py:415
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_balance|embed:role_lb|header"
|
msgctxt "cmd:economy_balance|embed:role_lb|header"
|
||||||
msgid "This server has a total balance of {coin_emoji}**{total}**."
|
msgid "This server has a total balance of {coin_emoji}**{total}**."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:408
|
#: src/modules/economy/cog.py:423
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_balance|embed:role_lb|header"
|
msgctxt "cmd:economy_balance|embed:role_lb|header"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -224,66 +224,66 @@ msgid ""
|
|||||||
"balance of {coin_emoji}**{total}**."
|
"balance of {coin_emoji}**{total}**."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:420
|
#: src/modules/economy/cog.py:435
|
||||||
msgctxt "cmd:economy_balance|embed:role_lb|row_format"
|
msgctxt "cmd:economy_balance|embed:role_lb|row_format"
|
||||||
msgid "`[{pos:>{numwidth}}]` | `{coins:>{coinwidth}} LC` | {mention}"
|
msgid "`[{pos:>{numwidth}}]` | `{coins:>{coinwidth}} LC` | {mention}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:448
|
#: src/modules/economy/cog.py:463
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_balance|embed:role_lb|footer"
|
msgctxt "cmd:economy_balance|embed:role_lb|footer"
|
||||||
msgid "Page {page}/{total}"
|
msgid "Page {page}/{total}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:458
|
#: src/modules/economy/cog.py:473
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_balance|embed:role_lb|header"
|
msgctxt "cmd:economy_balance|embed:role_lb|header"
|
||||||
msgid "This server has a total balance of {coin_emoji}**0**."
|
msgid "This server has a total balance of {coin_emoji}**0**."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:465
|
#: src/modules/economy/cog.py:480
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_balance|embed:role_lb|header"
|
msgctxt "cmd:economy_balance|embed:role_lb|header"
|
||||||
msgid "The role {role_mention} has a total balance of {coin_emoji}**0**."
|
msgid "The role {role_mention} has a total balance of {coin_emoji}**0**."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:485
|
#: src/modules/economy/cog.py:500
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_balance|embed:single|desc"
|
msgctxt "cmd:economy_balance|embed:single|desc"
|
||||||
msgid "{mention} currently owns {coin_emoji} {coins}."
|
msgid "{mention} currently owns {coin_emoji} {coins}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:495
|
#: src/modules/economy/cog.py:510
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_balance|embed:single|author"
|
msgctxt "cmd:economy_balance|embed:single|author"
|
||||||
msgid "Balance statement for {user}"
|
msgid "Balance statement for {user}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:504
|
#: src/modules/economy/cog.py:519
|
||||||
msgctxt "cmd:economy_reset"
|
msgctxt "cmd:economy_reset"
|
||||||
msgid "reset"
|
msgid "reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:507
|
#: src/modules/economy/cog.py:522
|
||||||
msgctxt "cmd:economy_reset|desc"
|
msgctxt "cmd:economy_reset|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Reset the coin balance for a target user or role. (See also \"economy "
|
"Reset the coin balance for a target user or role. (See also \"economy "
|
||||||
"balance\".)"
|
"balance\".)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:511
|
#: src/modules/economy/cog.py:526
|
||||||
msgctxt "cmd:economy_reset|param:target"
|
msgctxt "cmd:economy_reset|param:target"
|
||||||
msgid "target"
|
msgid "target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:516
|
#: src/modules/economy/cog.py:531
|
||||||
msgctxt "cmd:economy_reset|param:target|desc"
|
msgctxt "cmd:economy_reset|param:target|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Target user or role to view or update. Use @everyone to reset the entire "
|
"Target user or role to view or update. Use @everyone to reset the entire "
|
||||||
"guild."
|
"guild."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:543
|
#: src/modules/economy/cog.py:558
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_reset|confirm:reset_guild|desc"
|
msgctxt "cmd:economy_reset|confirm:reset_guild|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -292,17 +292,17 @@ msgid ""
|
|||||||
"*This is not reversible!*"
|
"*This is not reversible!*"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:551
|
#: src/modules/economy/cog.py:566
|
||||||
msgctxt "cmd:economy_reset|confirm:reset_guild|button:confirm"
|
msgctxt "cmd:economy_reset|confirm:reset_guild|button:confirm"
|
||||||
msgid "Yes, reset the economy"
|
msgid "Yes, reset the economy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:555
|
#: src/modules/economy/cog.py:570
|
||||||
msgctxt "cmd:economy_reset|confirm:reset_guild|button:cancel"
|
msgctxt "cmd:economy_reset|confirm:reset_guild|button:cancel"
|
||||||
msgid "Cancel reset"
|
msgid "Cancel reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:571
|
#: src/modules/economy/cog.py:586
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_reset|embed:success_guild|desc"
|
msgctxt "cmd:economy_reset|embed:success_guild|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -310,13 +310,13 @@ msgid ""
|
|||||||
"**{amount}**."
|
"**{amount}**."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:588
|
#: src/modules/economy/cog.py:603
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_reset|error:no_target|desc"
|
msgctxt "cmd:economy_reset|error:no_target|desc"
|
||||||
msgid "The role {mention} has no members to reset!"
|
msgid "The role {mention} has no members to reset!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:598
|
#: src/modules/economy/cog.py:613
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_reset|confirm:reset_role|desc"
|
msgctxt "cmd:economy_reset|confirm:reset_role|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -324,17 +324,17 @@ msgid ""
|
|||||||
"**{count}** members will be affected."
|
"**{count}** members will be affected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:607
|
#: src/modules/economy/cog.py:622
|
||||||
msgctxt "cmd:economy_reset|confirm:reset_role|button:confirm"
|
msgctxt "cmd:economy_reset|confirm:reset_role|button:confirm"
|
||||||
msgid "Yes, complete economy reset"
|
msgid "Yes, complete economy reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:611
|
#: src/modules/economy/cog.py:626
|
||||||
msgctxt "cmd:economy_reset|confirm:reset_role|button:cancel"
|
msgctxt "cmd:economy_reset|confirm:reset_role|button:cancel"
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:628
|
#: src/modules/economy/cog.py:643
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_reset|embed:success_role|desc"
|
msgctxt "cmd:economy_reset|embed:success_role|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -342,58 +342,81 @@ msgid ""
|
|||||||
"**{amount}**."
|
"**{amount}**."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:650
|
#: src/modules/economy/cog.py:665
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:economy_reset|embed:success_user|desc"
|
msgctxt "cmd:economy_reset|embed:success_user|desc"
|
||||||
msgid "{mention}'s balance has been reset to {coin_emoji}**{amount}**."
|
msgid "{mention}'s balance has been reset to {coin_emoji}**{amount}**."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:660
|
#: src/modules/economy/cog.py:675
|
||||||
msgctxt "cmd:send"
|
msgctxt "cmd:send"
|
||||||
msgid "send"
|
msgid "send"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:663
|
#: src/modules/economy/cog.py:678
|
||||||
msgctxt "cmd:send|desc"
|
msgctxt "cmd:send|desc"
|
||||||
msgid "Gift the target user a certain number of LionCoins."
|
msgid "Gift the target user a certain number of LionCoins."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:667
|
#: src/modules/economy/cog.py:682
|
||||||
msgctxt "cmd:send|param:target"
|
msgctxt "cmd:send|param:target"
|
||||||
msgid "target"
|
msgid "target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:668
|
#: src/modules/economy/cog.py:683
|
||||||
msgctxt "cmd:send|param:amount"
|
msgctxt "cmd:send|param:amount"
|
||||||
msgid "amount"
|
msgid "amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:669
|
#: src/modules/economy/cog.py:684
|
||||||
msgctxt "cmd:send|param:note"
|
msgctxt "cmd:send|param:note"
|
||||||
msgid "note"
|
msgid "note"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:672
|
#: src/modules/economy/cog.py:687
|
||||||
msgctxt "cmd:send|param:target|desc"
|
msgctxt "cmd:send|param:target|desc"
|
||||||
msgid "User to send the gift to"
|
msgid "User to send the gift to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:673
|
#: src/modules/economy/cog.py:688
|
||||||
msgctxt "cmd:send|param:amount|desc"
|
msgctxt "cmd:send|param:amount|desc"
|
||||||
msgid "Number of coins to send"
|
msgid "Number of coins to send"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:674
|
#: src/modules/economy/cog.py:689
|
||||||
msgctxt "cmd:send|param:note|desc"
|
msgctxt "cmd:send|param:note|desc"
|
||||||
msgid "Optional note to add to the gift."
|
msgid "Optional note to add to the gift."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:698
|
#: src/modules/economy/cog.py:713
|
||||||
msgctxt "cmd:send|error:not_allowed"
|
msgctxt "cmd:send|error:not_allowed"
|
||||||
msgid "Sorry, this server has disabled LionCoin transfers!"
|
msgid "Sorry, this server has disabled LionCoin transfers!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:723
|
#: src/modules/economy/cog.py:722
|
||||||
|
msgctxt "cmd:send|error:sending-to-self"
|
||||||
|
msgid ""
|
||||||
|
"What is this, tax evasion?\n"
|
||||||
|
"(You can not send coins to yourself.)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:732
|
||||||
|
msgctxt "cmd:send|error:sending-to-leo"
|
||||||
|
msgid ""
|
||||||
|
"I appreciate it, but you need it more than I do!\n"
|
||||||
|
"(You cannot send coins to bots.)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:742
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:send|error:sending-to-bot"
|
||||||
|
msgid ""
|
||||||
|
"{target} appreciates the gesture, but said they don't have any use for "
|
||||||
|
"{coin}.\n"
|
||||||
|
"(You cannot send coins to bots.)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/economy/cog.py:770
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:send|error:insufficient"
|
msgctxt "cmd:send|error:insufficient"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -401,19 +424,19 @@ msgid ""
|
|||||||
"`Current Balance:` {coin_emoji}{balance}"
|
"`Current Balance:` {coin_emoji}{balance}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:744
|
#: src/modules/economy/cog.py:791
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:send|embed:gift|title"
|
msgctxt "cmd:send|embed:gift|title"
|
||||||
msgid "{user} sent you a gift!"
|
msgid "{user} sent you a gift!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:748
|
#: src/modules/economy/cog.py:795
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:send|embed:gift|desc"
|
msgctxt "cmd:send|embed:gift|desc"
|
||||||
msgid "{mention} sent you {coin_emoji}**{amount}**."
|
msgid "{mention} sent you {coin_emoji}**{amount}**."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:773
|
#: src/modules/economy/cog.py:820
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:send|embed:ack|desc"
|
msgctxt "cmd:send|embed:ack|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -421,19 +444,19 @@ msgid ""
|
|||||||
"{mention}!"
|
"{mention}!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:783
|
#: src/modules/economy/cog.py:830
|
||||||
msgctxt "cmd:send|embed:ack|desc|error:unreachable"
|
msgctxt "cmd:send|embed:ack|desc|error:unreachable"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Unfortunately, I was not able to message the recipient. Perhaps they have me "
|
"Unfortunately, I was not able to message the recipient. Perhaps they have me "
|
||||||
"blocked?"
|
"blocked?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:795
|
#: src/modules/economy/cog.py:842
|
||||||
msgctxt "cmd:configure_economy"
|
msgctxt "cmd:configure_economy"
|
||||||
msgid "economy"
|
msgid "economy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/economy/cog.py:798
|
#: src/modules/economy/cog.py:845
|
||||||
msgctxt "cmd:configure_economy|desc"
|
msgctxt "cmd:configure_economy|desc"
|
||||||
msgid "Configure LionCoin Economy"
|
msgid "Configure LionCoin Economy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -30,57 +30,61 @@ msgstr ""
|
|||||||
msgid "Execute arbitrary code with Exec"
|
msgid "Execute arbitrary code with Exec"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:272
|
#: src/modules/sysadmin/exec_cog.py:325
|
||||||
msgctxt "command"
|
msgctxt "command"
|
||||||
msgid "eval"
|
msgid "eval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:273
|
#: src/modules/sysadmin/exec_cog.py:326
|
||||||
msgctxt "command:eval"
|
msgctxt "command:eval"
|
||||||
msgid "Execute arbitrary code with Eval"
|
msgid "Execute arbitrary code with Eval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:276
|
#: src/modules/sysadmin/exec_cog.py:329
|
||||||
msgctxt "command:eval|param:string"
|
msgctxt "command:eval|param:string"
|
||||||
msgid "Code to evaluate."
|
msgid "Code to evaluate."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:283
|
#: src/modules/sysadmin/exec_cog.py:336
|
||||||
msgctxt "command"
|
msgctxt "command"
|
||||||
msgid "asyncall"
|
msgid "asyncall"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:284
|
#: src/modules/sysadmin/exec_cog.py:337
|
||||||
msgctxt "command:asyncall|desc"
|
msgctxt "command:asyncall|desc"
|
||||||
msgid "Execute arbitrary code on all shards."
|
msgid "Execute arbitrary code on all shards."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:287
|
#: src/modules/sysadmin/exec_cog.py:340
|
||||||
msgctxt "command:asyncall|param:string"
|
msgctxt "command:asyncall|param:string"
|
||||||
msgid "Cross-shard code to execute. Cannot reference ctx!"
|
msgid "Cross-shard code to execute. Cannot reference ctx!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:288
|
#: src/modules/sysadmin/exec_cog.py:341
|
||||||
msgctxt "command:asyncall|param:target"
|
msgctxt "command:asyncall|param:target"
|
||||||
msgid "Target shard app name, see autocomplete for options."
|
msgid "Target shard app name, see autocomplete for options."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:343
|
#: src/modules/sysadmin/exec_cog.py:384
|
||||||
msgid "reload"
|
msgid "reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:344
|
#: src/modules/sysadmin/exec_cog.py:385
|
||||||
msgid "Reload a given LionBot extension. Launches an ExecUI."
|
msgid "Reload a given LionBot extension. Launches an ExecUI."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:347
|
#: src/modules/sysadmin/exec_cog.py:388
|
||||||
msgid "Name of the extesion to reload. See autocomplete for options."
|
msgid "Name of the extension to reload. See autocomplete for options."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:379
|
#: src/modules/sysadmin/exec_cog.py:389
|
||||||
|
msgid "Whether to force an extension reload even if it doesn't exist."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/sysadmin/exec_cog.py:425
|
||||||
msgid "shutdown"
|
msgid "shutdown"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/sysadmin/exec_cog.py:380
|
#: src/modules/sysadmin/exec_cog.py:426
|
||||||
msgid "Shutdown (or restart) the client."
|
msgid "Shutdown (or restart) the client."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -17,85 +17,85 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:95
|
#: src/gui/cards/goals.py:97
|
||||||
msgctxt "skin:goals|goal:tasks|name"
|
msgctxt "skin:goals|goal:tasks|name"
|
||||||
msgid "TASKS DONE"
|
msgid "TASKS DONE"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:99
|
#: src/gui/cards/goals.py:101
|
||||||
msgctxt "skin:goals|goal:tasks|goal"
|
msgctxt "skin:goals|goal:tasks|goal"
|
||||||
msgid "GOAL: "
|
msgid "GOAL: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:125
|
#: src/gui/cards/goals.py:127
|
||||||
msgctxt "skin:goals|goal:attendance|name"
|
msgctxt "skin:goals|goal:attendance|name"
|
||||||
msgid ""
|
msgid ""
|
||||||
"ATTENDANCE\n"
|
"ATTENDANCE\n"
|
||||||
"RATE"
|
"RATE"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:139
|
#: src/gui/cards/goals.py:141
|
||||||
msgctxt "skin:goals|mode:study|goal:middle|above"
|
msgctxt "skin:goals|mode:study|goal:middle|above"
|
||||||
msgid "STUDIED"
|
msgid "STUDIED"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:143
|
#: src/gui/cards/goals.py:145
|
||||||
msgctxt "skin:goals|mode:study|goal:middle|below"
|
msgctxt "skin:goals|mode:study|goal:middle|below"
|
||||||
msgid "HOURS"
|
msgid "HOURS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:147
|
#: src/gui/cards/goals.py:149
|
||||||
msgctxt "skin:goals|mode:voice|goal:middle|above"
|
msgctxt "skin:goals|mode:voice|goal:middle|above"
|
||||||
msgid "CHATTED"
|
msgid "CHATTED"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:151
|
#: src/gui/cards/goals.py:153
|
||||||
msgctxt "skin:goals|mode:voice|goal:middle|below"
|
msgctxt "skin:goals|mode:voice|goal:middle|below"
|
||||||
msgid "HOURS"
|
msgid "HOURS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:155
|
#: src/gui/cards/goals.py:157
|
||||||
msgctxt "skin:goals|mode:text|goal:middle|above"
|
msgctxt "skin:goals|mode:text|goal:middle|above"
|
||||||
msgid "SENT"
|
msgid "SENT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:159
|
#: src/gui/cards/goals.py:161
|
||||||
msgctxt "skin:goals|mode:text|goal:middle|below"
|
msgctxt "skin:goals|mode:text|goal:middle|below"
|
||||||
msgid "MESSAGES"
|
msgid "MESSAGES"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:163
|
#: src/gui/cards/goals.py:165
|
||||||
msgctxt "skin:goals|mode:anki|goal:middle|above"
|
msgctxt "skin:goals|mode:anki|goal:middle|above"
|
||||||
msgid "REVIEWED"
|
msgid "REVIEWED"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:167
|
#: src/gui/cards/goals.py:169
|
||||||
msgctxt "skin:goals|mode:anki|goal:middle|below"
|
msgctxt "skin:goals|mode:anki|goal:middle|below"
|
||||||
msgid "CARDS"
|
msgid "CARDS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:228
|
#: src/gui/cards/goals.py:230
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "skin:goals|footer"
|
msgctxt "skin:goals|footer"
|
||||||
msgid "As of {day} {month} • {name}"
|
msgid "As of {day} {month} • {name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:240
|
#: src/gui/cards/goals.py:242
|
||||||
msgctxt "ui:goals|weekly|title"
|
msgctxt "ui:goals|weekly|title"
|
||||||
msgid "WEEKLY STATISTICS"
|
msgid "WEEKLY STATISTICS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:244
|
#: src/gui/cards/goals.py:246
|
||||||
msgctxt "ui:goals|weekly|task_header"
|
msgctxt "ui:goals|weekly|task_header"
|
||||||
msgid "GOALS OF THE WEEK"
|
msgid "GOALS OF THE WEEK"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:254
|
#: src/gui/cards/goals.py:256
|
||||||
msgctxt "ui:goals|monthly|title"
|
msgctxt "ui:goals|monthly|title"
|
||||||
msgid "MONTHLY STATISTICS"
|
msgid "MONTHLY STATISTICS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/gui/cards/goals.py:258
|
#: src/gui/cards/goals.py:260
|
||||||
msgctxt "ui:goals|monthly|task_header"
|
msgctxt "ui:goals|monthly|task_header"
|
||||||
msgid "GOALS OF THE MONTH"
|
msgid "GOALS OF THE MONTH"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -84,8 +84,8 @@ msgid ""
|
|||||||
"\n"
|
"\n"
|
||||||
" Other relevant commands for guild configuration below:\n"
|
" Other relevant commands for guild configuration below:\n"
|
||||||
" `/editshop`: Add/Edit/Remove colour roles from the {coin} shop.\n"
|
" `/editshop`: Add/Edit/Remove colour roles from the {coin} shop.\n"
|
||||||
" `/ranks`: Add/Edit/Remove activity ranks.\n"
|
" `/ranks`: Add/Edit/Refresh/Remove activity ranks.\n"
|
||||||
" `/timer admin`: Add/Edit/Remove Pomodoro timers in voice channels.\n"
|
" `/pomodoro`: Add/Edit/Remove Pomodoro timers in voice channels.\n"
|
||||||
" `/rolemenus`: Allow members to equip roles from customisable messages.\n"
|
" `/rolemenus`: Allow members to equip roles from customisable messages.\n"
|
||||||
" `/economy balance`: Display and modify LionCoin balance for members and "
|
" `/economy balance`: Display and modify LionCoin balance for members and "
|
||||||
"roles.\n"
|
"roles.\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -230,7 +230,7 @@ msgstr ""
|
|||||||
msgctxt "guildset:mod_role|long_desc"
|
msgctxt "guildset:mod_role|long_desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Members with the set role will be able to access my configuration panels, "
|
"Members with the set role will be able to access my configuration panels, "
|
||||||
"and perform some moderation tasks, such us setting up pomodoro timers. "
|
"and perform some moderation tasks, such as setting up pomodoro timers. "
|
||||||
"Moderators cannot reconfigure most bot configuration, or perform operations "
|
"Moderators cannot reconfigure most bot configuration, or perform operations "
|
||||||
"they do not already have permission for in Discord."
|
"they do not already have permission for in Discord."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -17,32 +17,32 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:73
|
#: src/modules/ranks/cog.py:76
|
||||||
msgctxt "cmd:configure_ranks|param:rank_type|choice:voice"
|
msgctxt "cmd:configure_ranks|param:rank_type|choice:voice"
|
||||||
msgid "Voice"
|
msgid "Voice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:74
|
#: src/modules/ranks/cog.py:77
|
||||||
msgctxt "cmd:configure_ranks|param:rank_type|choice:xp"
|
msgctxt "cmd:configure_ranks|param:rank_type|choice:xp"
|
||||||
msgid "XP"
|
msgid "XP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:75
|
#: src/modules/ranks/cog.py:78
|
||||||
msgctxt "cmd:configure_ranks|param:rank_type|choice:message"
|
msgctxt "cmd:configure_ranks|param:rank_type|choice:message"
|
||||||
msgid "Message"
|
msgid "Message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:383
|
#: src/modules/ranks/cog.py:406
|
||||||
msgctxt "event:rank_update|embed:notify"
|
msgctxt "event:rank_update|embed:notify"
|
||||||
msgid "New Activity Rank Attained!"
|
msgid "New Activity Rank Attained!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:494
|
#: src/modules/ranks/cog.py:516
|
||||||
msgctxt "rank_refresh|error:roles_dne|desc"
|
msgctxt "rank_refresh|error:roles_dne|desc"
|
||||||
msgid "Some ranks have invalid or deleted roles! Please remove them first."
|
msgid "Some ranks have invalid or deleted roles! Please remove them first."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:504
|
#: src/modules/ranks/cog.py:526
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "rank_refresh|error:unassignable_roles|desc"
|
msgctxt "rank_refresh|error:unassignable_roles|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -50,36 +50,36 @@ msgid ""
|
|||||||
"{roles}"
|
"{roles}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:574
|
#: src/modules/ranks/cog.py:596
|
||||||
msgctxt "rank_refresh|remove_roles|audit"
|
msgctxt "rank_refresh|remove_roles|audit"
|
||||||
msgid "Removing invalid rank role."
|
msgid "Removing invalid rank role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:588
|
#: src/modules/ranks/cog.py:610
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "rank_refresh|remove_roles|small_error"
|
msgctxt "rank_refresh|remove_roles|small_error"
|
||||||
msgid "*Could not remove ranks from {member}*"
|
msgid "*Could not remove ranks from {member}*"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:595
|
#: src/modules/ranks/cog.py:617
|
||||||
msgctxt "rank_refresh|remove_roles|error:too_many_issues"
|
msgctxt "rank_refresh|remove_roles|error:too_many_issues"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Too many issues occurred while removing ranks! Please check my permissions "
|
"Too many issues occurred while removing ranks! Please check my permissions "
|
||||||
"and try again in a few minutes."
|
"and try again in a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:609
|
#: src/modules/ranks/cog.py:631
|
||||||
msgctxt "rank_refresh|add_roles|audit"
|
msgctxt "rank_refresh|add_roles|audit"
|
||||||
msgid "Adding rank role from refresh"
|
msgid "Adding rank role from refresh"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:623
|
#: src/modules/ranks/cog.py:645
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "rank_refresh|add_roles|small_error"
|
msgctxt "rank_refresh|add_roles|small_error"
|
||||||
msgid "*Could not add {role} to {member}*"
|
msgid "*Could not add {role} to {member}*"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:630
|
#: src/modules/ranks/cog.py:652
|
||||||
msgctxt "rank_refresh|add_roles|error:too_many_issues"
|
msgctxt "rank_refresh|add_roles|error:too_many_issues"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Too many issues occurred while adding ranks! Please check my permissions and "
|
"Too many issues occurred while adding ranks! Please check my permissions and "
|
||||||
@@ -87,22 +87,22 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. ---------- Commands ----------
|
#. ---------- Commands ----------
|
||||||
#: src/modules/ranks/cog.py:655
|
#: src/modules/ranks/cog.py:677
|
||||||
msgctxt "cmd:ranks"
|
msgctxt "cmd:ranks"
|
||||||
msgid "ranks"
|
msgid "ranks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:687
|
#: src/modules/ranks/cog.py:709
|
||||||
msgctxt "cmd:configure_ranks"
|
msgctxt "cmd:configure_ranks"
|
||||||
msgid "ranks"
|
msgid "ranks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:688
|
#: src/modules/ranks/cog.py:710
|
||||||
msgctxt "cmd:configure_ranks|desc"
|
msgctxt "cmd:configure_ranks|desc"
|
||||||
msgid "Configure Activity Ranks"
|
msgid "Configure Activity Ranks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:748
|
#: src/modules/ranks/cog.py:770
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"cmd:configure_ranks|response:updated|setting:notification|withdm_withchannel"
|
"cmd:configure_ranks|response:updated|setting:notification|withdm_withchannel"
|
||||||
@@ -111,20 +111,20 @@ msgid ""
|
|||||||
"otherwise to {channel}"
|
"otherwise to {channel}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:754
|
#: src/modules/ranks/cog.py:776
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"cmd:configure_ranks|response:updated|setting:notification|withdm_nochannel"
|
"cmd:configure_ranks|response:updated|setting:notification|withdm_nochannel"
|
||||||
msgid "Rank update notifications will be sent via **direct message**."
|
msgid "Rank update notifications will be sent via **direct message**."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:760
|
#: src/modules/ranks/cog.py:782
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"cmd:configure_ranks|response:updated|setting:notification|nodm_withchannel"
|
"cmd:configure_ranks|response:updated|setting:notification|nodm_withchannel"
|
||||||
msgid "Rank update notifications will be sent to {channel}."
|
msgid "Rank update notifications will be sent to {channel}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/cog.py:765
|
#: src/modules/ranks/cog.py:787
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"cmd:configure_ranks|response:updated|setting:notification|nodm_nochannel"
|
"cmd:configure_ranks|response:updated|setting:notification|nodm_nochannel"
|
||||||
msgid "Members will not be notified when their activity rank updates."
|
msgid "Members will not be notified when their activity rank updates."
|
||||||
@@ -545,27 +545,27 @@ msgstr ""
|
|||||||
#: src/modules/ranks/ui/refresh.py:202
|
#: src/modules/ranks/ui/refresh.py:202
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:refresh_ranks|embed|field:remove|value"
|
msgctxt "ui:refresh_ranks|embed|field:remove|value"
|
||||||
msgid "0 {progress} {total}"
|
msgid "{progress} {done}/{total} removed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/refresh.py:212
|
#: src/modules/ranks/ui/refresh.py:213
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:refresh_ranks|embed|line:remove"
|
msgctxt "ui:refresh_ranks|embed|line:remove"
|
||||||
msgid "**Removed invalid ranks:** {done}/{target}"
|
msgid "**Removed invalid ranks:** {done}/{target}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/refresh.py:220
|
#: src/modules/ranks/ui/refresh.py:221
|
||||||
msgctxt "ui:refresh_ranks|embed|field:add|name"
|
msgctxt "ui:refresh_ranks|embed|field:add|name"
|
||||||
msgid "Giving members their rank roles"
|
msgid "Giving members their rank roles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/refresh.py:224
|
#: src/modules/ranks/ui/refresh.py:225
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:refresh_ranks|embed|field:add|value"
|
msgctxt "ui:refresh_ranks|embed|field:add|value"
|
||||||
msgid "0 {progress} {total}"
|
msgid "{progress} {done}/{total} given"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/refresh.py:234
|
#: src/modules/ranks/ui/refresh.py:236
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:refresh_ranks|embed|line:add"
|
msgctxt "ui:refresh_ranks|embed|line:add"
|
||||||
msgid "**Updated member ranks:** {done}/{target}"
|
msgid "**Updated member ranks:** {done}/{target}"
|
||||||
@@ -621,27 +621,42 @@ msgctxt "dash:rank|dropdown|placeholder"
|
|||||||
msgid "Activity Rank Panel"
|
msgid "Activity Rank Panel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:92
|
#: src/modules/ranks/ui/overview.py:94
|
||||||
msgctxt "ui:rank_overview|button:auto|label"
|
msgctxt "ui:rank_overview|button:auto|label"
|
||||||
msgid "Auto Create"
|
msgid "Auto Create"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:107
|
#: src/modules/ranks/ui/overview.py:109
|
||||||
msgctxt "ui:rank_overview|button:refresh|label"
|
msgctxt "ui:rank_overview|button:refresh|label"
|
||||||
msgid "Refresh Member Ranks"
|
msgid "Refresh Member Ranks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:123
|
#: src/modules/ranks/ui/overview.py:121
|
||||||
|
msgctxt "ui:rank_overview|button:clear|confirm"
|
||||||
|
msgid "Are you sure you want to **delete all activity ranks** in this server?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:126
|
||||||
|
msgctxt "ui:rank_overview|button:clear|confirm|button:yes"
|
||||||
|
msgid "Yes, clear ranks"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:132
|
||||||
|
msgctxt "ui:rank_overview|button:clear|confirm|button:no"
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:148
|
||||||
msgctxt "ui:rank_overview|button:clear|label"
|
msgctxt "ui:rank_overview|button:clear|label"
|
||||||
msgid "Clear Ranks"
|
msgid "Clear Ranks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:153
|
#: src/modules/ranks/ui/overview.py:178
|
||||||
msgctxt "ui:rank_overview|button:create|label"
|
msgctxt "ui:rank_overview|button:create|label"
|
||||||
msgid "Create Rank"
|
msgid "Create Rank"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:169
|
#: src/modules/ranks/ui/overview.py:194
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:rank_overview|menu:roles|error:above_caller"
|
msgctxt "ui:rank_overview|menu:roles|error:above_caller"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -649,24 +664,24 @@ msgid ""
|
|||||||
"may only manage roles below your top role."
|
"may only manage roles below your top role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:175
|
#: src/modules/ranks/ui/overview.py:200
|
||||||
msgctxt "ui:rank_overview|menu:roles|error:above_caller|title"
|
msgctxt "ui:rank_overview|menu:roles|error:above_caller|title"
|
||||||
msgid "Insufficient permissions!"
|
msgid "Insufficient permissions!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:208
|
#: src/modules/ranks/ui/overview.py:233
|
||||||
msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:is_default"
|
msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:is_default"
|
||||||
msgid "The @everyone role cannot be removed, and cannot be a rank!"
|
msgid "The @everyone role cannot be removed, and cannot be a rank!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:213
|
#: src/modules/ranks/ui/overview.py:238
|
||||||
msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:is_managed"
|
msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:is_managed"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The role is managed by another application or integration, and cannot be a "
|
"The role is managed by another application or integration, and cannot be a "
|
||||||
"rank!"
|
"rank!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:218
|
#: src/modules/ranks/ui/overview.py:243
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"ui:rank_overview|menu:roles|error:not_assignable|suberror:no_permissions"
|
"ui:rank_overview|menu:roles|error:not_assignable|suberror:no_permissions"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -674,34 +689,62 @@ msgid ""
|
|||||||
"manage ranks!"
|
"manage ranks!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:223
|
#: src/modules/ranks/ui/overview.py:248
|
||||||
msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:above_me"
|
msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:above_me"
|
||||||
msgid ""
|
msgid ""
|
||||||
"This role is above my top role in the role hierarchy, so I cannot add or "
|
"This role is above my top role in the role hierarchy, so I cannot add or "
|
||||||
"remove it!"
|
"remove it!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:229
|
#: src/modules/ranks/ui/overview.py:254
|
||||||
msgctxt "ui:rank_overview|menu:roles|error:not_assignable|suberror:other"
|
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!"
|
msgid "I am not able to manage the selected role, so it cannot be a rank!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:235
|
#: src/modules/ranks/ui/overview.py:260
|
||||||
msgctxt "ui:rank_overview|menu:roles|error:not_assignable|title"
|
msgctxt "ui:rank_overview|menu:roles|error:not_assignable|title"
|
||||||
msgid "Could not create rank!"
|
msgid "Could not create rank!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:259
|
#: src/modules/ranks/ui/overview.py:284
|
||||||
msgctxt "ui:rank_overview|menu:roles|placeholder"
|
msgctxt "ui:rank_overview|menu:roles|placeholder"
|
||||||
msgid "Create from role"
|
msgid "Create from role"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:276
|
#: src/modules/ranks/ui/overview.py:301
|
||||||
msgctxt "ui:rank_overview|menu:ranks|placeholder"
|
msgctxt "ui:rank_overview|menu:ranks|placeholder"
|
||||||
msgid "View or edit rank"
|
msgid "View or edit rank"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:362
|
#: src/modules/ranks/ui/overview.py:387
|
||||||
|
msgctxt "ui:rank_overview|embed|field:note|name"
|
||||||
|
msgid "Note"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:393
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:rank_overview|embed|field:note|value:with_season"
|
||||||
|
msgid "Ranks are determined by activity since {timestamp}."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:400
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:rank_overview|embed|field:note|value:without_season"
|
||||||
|
msgid ""
|
||||||
|
"Ranks are determined by *all-time* statistics.\n"
|
||||||
|
"To reward ranks from a later time (e.g. to have monthly/quarterly/yearly "
|
||||||
|
"ranks) set the `season_start` with {stats_cmd}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:407
|
||||||
|
msgctxt "ui:rank_overview|embed|field:note|value|voice_addendum"
|
||||||
|
msgid ""
|
||||||
|
"Also note that ranks will only be updated when a member leaves a tracked "
|
||||||
|
"voice channel! Use the **Refresh Member Ranks** button below to update all "
|
||||||
|
"members manually."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/ranks/ui/overview.py:415
|
||||||
msgctxt "ui:rank_overview|embed:noranks|desc"
|
msgctxt "ui:rank_overview|embed:noranks|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"No activity ranks have been set up!\n"
|
"No activity ranks have been set up!\n"
|
||||||
@@ -709,19 +752,19 @@ msgid ""
|
|||||||
"xp ranks, or select a role or press Create below!"
|
"xp ranks, or select a role or press Create below!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:370
|
#: src/modules/ranks/ui/overview.py:423
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:rank_overview|embed|title|type:voice"
|
msgctxt "ui:rank_overview|embed|title|type:voice"
|
||||||
msgid "Voice Ranks in {guild_name}"
|
msgid "Voice Ranks in {guild_name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:375
|
#: src/modules/ranks/ui/overview.py:428
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:rank_overview|embed|title|type:xp"
|
msgctxt "ui:rank_overview|embed|title|type:xp"
|
||||||
msgid "XP ranks in {guild_name}"
|
msgid "XP ranks in {guild_name}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/ranks/ui/overview.py:380
|
#: src/modules/ranks/ui/overview.py:433
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:rank_overview|embed|title|type:message"
|
msgctxt "ui:rank_overview|embed|title|type:message"
|
||||||
msgid "Message ranks in {guild_name}"
|
msgid "Message ranks in {guild_name}"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -18,27 +18,356 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:93
|
#: src/modules/reminders/cog.py:114
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "create_reminder|error:past"
|
||||||
|
msgid "The provided reminder time {timestamp} is in the past!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:123
|
||||||
|
msgctxt "create_reminder|error:too_fast"
|
||||||
|
msgid "You cannot set a repeating reminder with a period less than 10 minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:133
|
||||||
|
msgctxt "create_reminder|error:too_many"
|
||||||
|
msgid "Sorry, you have reached the maximum of `25` reminders."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:149
|
||||||
|
msgctxt "create_reminder|error:cannot_dm"
|
||||||
|
msgid ""
|
||||||
|
"I cannot direct message you! Do you have me blocked or direct messages "
|
||||||
|
"closed?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:186
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "parse_timestamp|error:parse"
|
||||||
|
msgid ""
|
||||||
|
"Could not parse `{given}` as a valid reminder time. Try entering the time in "
|
||||||
|
"the form `HH:MM` or `YYYY-MM-DD HH:MM`."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:329
|
||||||
|
msgctxt "cmd:reminders"
|
||||||
|
msgid "reminders"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:332
|
||||||
|
msgctxt "cmd:reminders|desc"
|
||||||
|
msgid "View and set your reminders."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:353
|
||||||
|
msgctxt "cmd:remindme"
|
||||||
|
msgid "remindme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:354
|
||||||
|
msgctxt "cmd:remindme|desc"
|
||||||
|
msgid "View and set task reminders."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:361
|
||||||
|
msgctxt "cmd:reminders_cancel"
|
||||||
|
msgid "cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:364
|
||||||
|
msgctxt "cmd:reminders_cancel|desc"
|
||||||
|
msgid ""
|
||||||
|
"Cancel a single reminder. Use /reminders to clear or cancel multiple "
|
||||||
|
"reminders."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:368
|
||||||
|
msgctxt "cmd:reminders_cancel|param:reminder"
|
||||||
|
msgid "reminder"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:373
|
||||||
|
msgctxt "cmd:reminders_cancel|param:reminder|desc"
|
||||||
|
msgid "Start typing, then select a reminder to cancel."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:392
|
||||||
|
msgctxt "cmd:reminders_cancel|error:no_reminders"
|
||||||
|
msgid "There are no reminders to cancel!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:416
|
||||||
|
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:429
|
||||||
|
msgctxt "cmd:reminders_cancel|embed:success|desc"
|
||||||
|
msgid "Reminder successfully cancelled."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:446
|
||||||
|
msgctxt "cmd:reminders_cancel|acmpl:reminder|error:no_reminders"
|
||||||
|
msgid "There are no reminders to cancel!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:476
|
||||||
|
#, 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:484
|
||||||
|
msgctxt "cmd:remindme_at"
|
||||||
|
msgid "at"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:487
|
||||||
|
msgctxt "cmd:remindme_at|desc"
|
||||||
|
msgid "Schedule a reminder for a particular time."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:491
|
||||||
|
msgctxt "cmd:remindme_at|param:time"
|
||||||
|
msgid "time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:492
|
||||||
|
msgctxt "cmd:remindme_at|param:reminder"
|
||||||
|
msgid "reminder"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:493
|
||||||
|
msgctxt "cmd:remindme_at|param:every"
|
||||||
|
msgid "repeat_every"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:498
|
||||||
|
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:502
|
||||||
|
msgctxt "cmd:remindme_at|param:reminder|desc"
|
||||||
|
msgid "What should the reminder be?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:506
|
||||||
|
msgctxt "cmd:remindme_at|param:every|desc"
|
||||||
|
msgid "How often to repeat this reminder."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:533
|
||||||
|
msgctxt "cmd:remindme_at|error|title"
|
||||||
|
msgid "Could not create reminder!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:564
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:remindme_at|acmpl:time|error:parse"
|
||||||
|
msgid ""
|
||||||
|
"Cannot parse \"{partial}\" as a time. Try the format HH:MM or YYYY-MM-DD HH:"
|
||||||
|
"MM"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:571
|
||||||
|
msgctxt "cmd:remindme_in"
|
||||||
|
msgid "in"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:574
|
||||||
|
msgctxt "cmd:remindme_in|desc"
|
||||||
|
msgid "Schedule a reminder for a given amount of time in the future."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:578
|
||||||
|
msgctxt "cmd:remindme_in|param:time"
|
||||||
|
msgid "time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:579
|
||||||
|
msgctxt "cmd:remindme_in|param:reminder"
|
||||||
|
msgid "reminder"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:580
|
||||||
|
msgctxt "cmd:remindme_in|param:every"
|
||||||
|
msgid "repeat_every"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:585
|
||||||
|
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:589
|
||||||
|
msgctxt "cmd:remindme_in|param:reminder|desc"
|
||||||
|
msgid "What should the reminder be?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/cog.py:593
|
||||||
|
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:619
|
||||||
|
msgctxt "cmd:remindme_in|error|title"
|
||||||
|
msgid "Could not create reminder!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:47
|
||||||
|
msgctxt "ui:reminderlist|button:clear|confirm|title"
|
||||||
|
msgid "Are You Sure?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:50
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:reminderlist|button: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/ui.py:57
|
||||||
|
msgctxt "ui:reminderlist|button:clear|confirm|button:yes"
|
||||||
|
msgid "Yes, clear my reminders"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:68
|
||||||
|
msgctxt "ui:reminderlist|button:clear|success|desc"
|
||||||
|
msgid "Your reminders have been cleared!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:77
|
||||||
|
msgctxt "ui:reminderlist|button:clear|confirm|button:cancel"
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:89
|
||||||
|
msgctxt "ui:reminderlist|button:clear|label"
|
||||||
|
msgid "Clear Reminders"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:110
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|field:time|label"
|
||||||
|
msgid "When would you like to be reminded?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:120
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|field:repeat|label"
|
||||||
|
msgid "How often should the reminder repeat?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:124
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|field:repeat|placeholder"
|
||||||
|
msgid "1 day 10 hours 5 minutes (Leave empty for no repeat.)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:133
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|field:content|label"
|
||||||
|
msgid "What should I remind you?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:144
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|title"
|
||||||
|
msgid "Set a Reminder"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:157
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:reminderlist|button:new|modal|parse|error:interval"
|
||||||
|
msgid "Cannot parse '{value}' as a duration."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:180
|
||||||
|
msgctxt "ui:reminderlist|button:new|label"
|
||||||
|
msgid "New Reminder"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:208
|
||||||
|
msgctxt "ui:reminderlist|select:remove|placeholder"
|
||||||
|
msgid "Select to cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:264
|
||||||
|
msgctxt "ui:reminderlist|embed:list|author"
|
||||||
|
msgid "Your reminders"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:270
|
||||||
|
msgctxt "ui:reminderlist|embed:list|footer"
|
||||||
|
msgid "Click a reminder to jump back to the context!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:277
|
||||||
|
msgctxt "ui:reminderlist|embed:no_reminders|title"
|
||||||
|
msgid "You have no reminders set!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:286
|
||||||
|
msgctxt "ui:reminderlist|embed|tips:name"
|
||||||
|
msgid "Reminder Tips"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/ui.py:290
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:reminderlist|embed|tips:value"
|
||||||
|
msgid ""
|
||||||
|
"- Use {at_cmd} to set a reminder at a known time (e.g. `at 10 am`).\n"
|
||||||
|
"- Use {in_cmd} to set a reminder in a certain time (e.g. `in 2 hours`).\n"
|
||||||
|
"- Both commands support repeating reminders using the `every` parameter.\n"
|
||||||
|
"- Remember to tell me your timezone with {timezone_cmd} if you haven't "
|
||||||
|
"already!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:63
|
||||||
|
msgctxt "reminder_set|title"
|
||||||
|
msgid "Reminder Set!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:67
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "reminder_set|desc"
|
||||||
|
msgid ""
|
||||||
|
"At {timestamp} I will remind you about:\n"
|
||||||
|
"> {content}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:79
|
||||||
|
msgctxt "reminder_set|field:repeat|name"
|
||||||
|
msgid "Repeats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:83
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "reminder_set|field:repeat|value"
|
||||||
|
msgid ""
|
||||||
|
"This reminder will repeat every `{interval}` (after the first reminder)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/reminders/data.py:94
|
||||||
msgctxt "reminder|embed"
|
msgctxt "reminder|embed"
|
||||||
msgid "You asked me to remind you!"
|
msgid "You asked me to remind you!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:101
|
#: src/modules/reminders/data.py:102
|
||||||
msgctxt "reminder|embed"
|
msgctxt "reminder|embed"
|
||||||
msgid "Context?"
|
msgid "Context?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:103
|
#: src/modules/reminders/data.py:104
|
||||||
msgctxt "reminder|embed"
|
msgctxt "reminder|embed"
|
||||||
msgid "Click Here"
|
msgid "Click Here"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:110
|
#: src/modules/reminders/data.py:111
|
||||||
msgctxt "reminder|embed"
|
msgctxt "reminder|embed"
|
||||||
msgid "Next reminder"
|
msgid "Next reminder"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:134
|
#: src/modules/reminders/data.py:135
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "reminder|formatted|interval"
|
msgctxt "reminder|formatted|interval"
|
||||||
msgid "Every day"
|
msgid "Every day"
|
||||||
@@ -46,7 +375,7 @@ msgid_plural "Every `{days}` days"
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:143
|
#: src/modules/reminders/data.py:144
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "reminder|formatted|interval"
|
msgctxt "reminder|formatted|interval"
|
||||||
msgid "Every hour"
|
msgid "Every hour"
|
||||||
@@ -54,305 +383,8 @@ msgid_plural "Every `{hours}` hours"
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:152
|
#: src/modules/reminders/data.py:153
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "reminder|formatted|interval"
|
msgctxt "reminder|formatted|interval"
|
||||||
msgid "Every `{duration}`"
|
msgid "Every `{duration}`"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:352
|
|
||||||
msgctxt "cmd:reminders"
|
|
||||||
msgid "reminders"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. No help string
|
|
||||||
#: src/modules/reminders/cog.py:359
|
|
||||||
msgctxt "cmd:reminders_show"
|
|
||||||
msgid "show"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:362
|
|
||||||
msgctxt "cmd:reminders_show|desc"
|
|
||||||
msgid "Display your current reminders."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:378
|
|
||||||
msgctxt "cmd:reminders_show|close_elsewhere"
|
|
||||||
msgid "Closing since the list was opened elsewhere."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:390
|
|
||||||
msgctxt "cmd:reminders_clear"
|
|
||||||
msgid "clear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:393
|
|
||||||
msgctxt "cmd:reminders_clear|desc"
|
|
||||||
msgid "Clear your reminder list."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:411
|
|
||||||
msgctxt "cmd:reminders_clear|error:no_reminders"
|
|
||||||
msgid "You have no reminders to clear!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:420
|
|
||||||
msgctxt "cmd:reminders_clear|confirm|title"
|
|
||||||
msgid "Are You Sure?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:423
|
|
||||||
#, 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:429
|
|
||||||
msgctxt "cmd:reminders_clear|confirm|button:yes"
|
|
||||||
msgid "Yes, clear my reminders"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:438
|
|
||||||
msgctxt "cmd:reminders_clear|success|desc"
|
|
||||||
msgid "Your reminders have been cleared!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:447
|
|
||||||
msgctxt "cmd:reminders_clear|confirm|button:cancel"
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:457
|
|
||||||
msgctxt "cmd:reminders_cancel"
|
|
||||||
msgid "cancel"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:460
|
|
||||||
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:464
|
|
||||||
msgctxt "cmd:reminders_cancel|param:reminder"
|
|
||||||
msgid "reminder"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:469
|
|
||||||
msgctxt "cmd:reminders_cancel|param:reminder|desc"
|
|
||||||
msgid "Start typing, then select a reminder to cancel."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:488
|
|
||||||
msgctxt "cmd:reminders_cancel|error:no_reminders"
|
|
||||||
msgid "There are no reminders to cancel!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:512
|
|
||||||
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:525
|
|
||||||
msgctxt "cmd:reminders_cancel|embed:success|desc"
|
|
||||||
msgid "Reminder successfully cancelled."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:542
|
|
||||||
msgctxt "cmd:reminders_cancel|acmpl:reminder|error:no_reminders"
|
|
||||||
msgid "There are no reminders to cancel!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:572
|
|
||||||
#, 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:580
|
|
||||||
msgctxt "cmd:remindme"
|
|
||||||
msgid "remindme"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:587
|
|
||||||
msgctxt "cmd:remindme_at"
|
|
||||||
msgid "at"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:590
|
|
||||||
msgctxt "cmd:remindme_at|desc"
|
|
||||||
msgid "Schedule a reminder for a particular time."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:594
|
|
||||||
msgctxt "cmd:remindme_at|param:time"
|
|
||||||
msgid "time"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:595
|
|
||||||
msgctxt "cmd:remindme_at|param:reminder"
|
|
||||||
msgid "reminder"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:596
|
|
||||||
msgctxt "cmd:remindme_at|param:every"
|
|
||||||
msgid "repeat_every"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:599
|
|
||||||
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:600
|
|
||||||
msgctxt "cmd:remindme_at|param:reminder|desc"
|
|
||||||
msgid "What should the reminder be?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:601
|
|
||||||
msgctxt "cmd:remindme_at|param:every|desc"
|
|
||||||
msgid "How often to repeat this reminder."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:619
|
|
||||||
msgctxt "cmd_remindme_at|error:too_many|desc"
|
|
||||||
msgid "Sorry, you have reached the maximum of `25` reminders!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:623
|
|
||||||
msgctxt "cmd_remindme_at|error:too_many|title"
|
|
||||||
msgid "Could not create reminder!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:636
|
|
||||||
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:640
|
|
||||||
msgctxt "cmd_remindme_at|error:too_fast|title"
|
|
||||||
msgid "Could not create reminder!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:658
|
|
||||||
#, 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:662
|
|
||||||
msgctxt "cmd:remindme_at|error:parse_time|title"
|
|
||||||
msgid "Could not create reminder!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:673
|
|
||||||
msgctxt "cmd:remindme_at|error:past_time|desc"
|
|
||||||
msgid "Provided time is in the past!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:677
|
|
||||||
msgctxt "cmd:remindme_at|error:past_time|title"
|
|
||||||
msgid "Could not create reminder!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:702
|
|
||||||
#, possible-python-brace-format
|
|
||||||
msgctxt "cmd:remindme_in|success|title"
|
|
||||||
msgid "Reminder Set at {timestamp}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:713
|
|
||||||
msgctxt "cmd:remindme_in"
|
|
||||||
msgid "in"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:716
|
|
||||||
msgctxt "cmd:remindme_in|desc"
|
|
||||||
msgid "Schedule a reminder for a given amount of time in the future."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:720
|
|
||||||
msgctxt "cmd:remindme_in|param:time"
|
|
||||||
msgid "time"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:721
|
|
||||||
msgctxt "cmd:remindme_in|param:reminder"
|
|
||||||
msgid "reminder"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:722
|
|
||||||
msgctxt "cmd:remindme_in|param:every"
|
|
||||||
msgid "repeat_every"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:725
|
|
||||||
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:726
|
|
||||||
msgctxt "cmd:remindme_in|param:reminder|desc"
|
|
||||||
msgid "What should the reminder be?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:727
|
|
||||||
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:745
|
|
||||||
msgctxt "cmd_remindme_in|error:too_many|desc"
|
|
||||||
msgid "Sorry, you have reached the maximum of `25` reminders!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:749
|
|
||||||
msgctxt "cmd_remindme_in|error:too_many|title"
|
|
||||||
msgid "Could not create reminder!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:762
|
|
||||||
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:766
|
|
||||||
msgctxt "cmd_remindme_in|error:too_fast|title"
|
|
||||||
msgid "Could not create reminder!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:792
|
|
||||||
#, possible-python-brace-format
|
|
||||||
msgctxt "cmd:remindme_in|success|title"
|
|
||||||
msgid "Reminder Set {timestamp}"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:853
|
|
||||||
msgctxt "ui:reminderlist|select:remove|placeholder"
|
|
||||||
msgid "Select to cancel."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:929
|
|
||||||
#, possible-python-brace-format
|
|
||||||
msgctxt "ui:reminderlist|embed:list|author"
|
|
||||||
msgid "{name}'s reminders"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:935
|
|
||||||
msgctxt "ui:reminderlist|embed:list|footer"
|
|
||||||
msgid "Click a reminder twice to jump to the context!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/modules/reminders/cog.py:942
|
|
||||||
#, 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 ""
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -92,8 +92,9 @@ msgid "Create Room Timer"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/roomui.py:236
|
#: src/modules/rooms/roomui.py:236
|
||||||
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:room_status|button:timer|timer_created"
|
msgctxt "ui:room_status|button:timer|timer_created"
|
||||||
msgid "Timer created successfully! Use `/pomodoro edit` to configure further."
|
msgid "Timer created successfully! Use {edit_cmd} to configure further."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/roomui.py:254
|
#: src/modules/rooms/roomui.py:254
|
||||||
@@ -177,83 +178,83 @@ msgctxt "ui:room_status|embed|field:members|name"
|
|||||||
msgid "Members ({count}/{cap})"
|
msgid "Members ({count}/{cap})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:306
|
#: src/modules/rooms/cog.py:321
|
||||||
msgctxt "cmd:room"
|
msgctxt "cmd:room"
|
||||||
msgid "room"
|
msgid "room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:307
|
#: src/modules/rooms/cog.py:322
|
||||||
msgctxt "cmd:room|desc"
|
msgctxt "cmd:room|desc"
|
||||||
msgid "Base command group for private room configuration."
|
msgid "Base command group for private room configuration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:314
|
#: src/modules/rooms/cog.py:329
|
||||||
msgctxt "cmd:room_rent"
|
msgctxt "cmd:room_rent"
|
||||||
msgid "rent"
|
msgid "rent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:317
|
#: src/modules/rooms/cog.py:332
|
||||||
msgctxt "cmd:room_rent|desc"
|
msgctxt "cmd:room_rent|desc"
|
||||||
msgid "Rent a private voice channel with LionCoins."
|
msgid "Rent a private voice channel with LionCoins."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:321
|
#: src/modules/rooms/cog.py:336
|
||||||
msgctxt "cmd:room_rent|param:days"
|
msgctxt "cmd:room_rent|param:days"
|
||||||
msgid "days"
|
msgid "days"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:322
|
#: src/modules/rooms/cog.py:337
|
||||||
msgctxt "cmd:room_rent|param:members"
|
msgctxt "cmd:room_rent|param:members"
|
||||||
msgid "members"
|
msgid "members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:323
|
#: src/modules/rooms/cog.py:338
|
||||||
msgctxt "cmd:room_rent|param:name"
|
msgctxt "cmd:room_rent|param:name"
|
||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:328
|
#: src/modules/rooms/cog.py:343
|
||||||
msgctxt "cmd:room_rent|param:days|desc"
|
msgctxt "cmd:room_rent|param:days|desc"
|
||||||
msgid "Number of days to pre-purchase. (Default: 1)"
|
msgid "Number of days to pre-purchase. (Default: 1)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:332
|
#: src/modules/rooms/cog.py:347
|
||||||
msgctxt "cmd:room_rent|param:members|desc"
|
msgctxt "cmd:room_rent|param:members|desc"
|
||||||
msgid "Mention the members you want to add to your private room."
|
msgid "Mention the members you want to add to your private room."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:336
|
#: src/modules/rooms/cog.py:351
|
||||||
msgctxt "cmd:room_rent|param:name|desc"
|
msgctxt "cmd:room_rent|param:name|desc"
|
||||||
msgid "Name of your private voice channel."
|
msgid "Name of your private voice channel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:354
|
#: src/modules/rooms/cog.py:369
|
||||||
msgctxt "cmd:room_rent|error:not_setup"
|
msgctxt "cmd:room_rent|error:not_setup"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The private room system has not been set up! A private room category needs "
|
"The private room system has not been set up! A private room category needs "
|
||||||
"to be set first with `/configure rooms`."
|
"to be set first with `/configure rooms`."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:365
|
#: src/modules/rooms/cog.py:380
|
||||||
msgctxt "cmd:room_rent|error:insufficient_perms"
|
msgctxt "cmd:room_rent|error:insufficient_perms"
|
||||||
msgid ""
|
msgid ""
|
||||||
"I do not have enough permissions to create a new channel under the "
|
"I do not have enough permissions to create a new channel under the "
|
||||||
"configured private room category!"
|
"configured private room category!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:379
|
#: src/modules/rooms/cog.py:394
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_rent|error:room_exists"
|
msgctxt "cmd:room_rent|error:room_exists"
|
||||||
msgid "You already own a private room! Click to visit: {channel}"
|
msgid "You already own a private room! Click to visit: {channel}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:399
|
#: src/modules/rooms/cog.py:414
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_rent|error:member_not_found"
|
msgctxt "cmd:room_rent|error:member_not_found"
|
||||||
msgid "Could not find the requested member {mention} in this server!"
|
msgid "Could not find the requested member {mention} in this server!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:413
|
#: src/modules/rooms/cog.py:428
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_rent|error:too_many_members"
|
msgctxt "cmd:room_rent|error:too_many_members"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -261,7 +262,7 @@ msgid ""
|
|||||||
"but the maximum private room size is `{cap}`!"
|
"but the maximum private room size is `{cap}`!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:427
|
#: src/modules/rooms/cog.py:442
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_rent|confirm:purchase"
|
msgctxt "cmd:room_rent|confirm:purchase"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -273,18 +274,18 @@ msgid_plural ""
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:452
|
#: src/modules/rooms/cog.py:467
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_rent|success"
|
msgctxt "cmd:room_rent|success"
|
||||||
msgid "Successfully created your private room {channel}!"
|
msgid "Successfully created your private room {channel}!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:457
|
#: src/modules/rooms/cog.py:472
|
||||||
msgctxt "cmd:room_rent|success|title"
|
msgctxt "cmd:room_rent|success|title"
|
||||||
msgid "Private Room Created!"
|
msgid "Private Room Created!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:491
|
#: src/modules/rooms/cog.py:506
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_rent|error:insufficient_funds"
|
msgctxt "cmd:room_rent|error:insufficient_funds"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -296,14 +297,14 @@ msgid_plural ""
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:525
|
#: src/modules/rooms/cog.py:540
|
||||||
msgctxt "cmd:room_rent|error:my_permissions"
|
msgctxt "cmd:room_rent|error:my_permissions"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not create your private room! You were not charged.\n"
|
"Could not create your private room! You were not charged.\n"
|
||||||
"I have insufficient permissions to create a private room channel."
|
"I have insufficient permissions to create a private room channel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:537
|
#: src/modules/rooms/cog.py:552
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_rent|error:unknown"
|
msgctxt "cmd:room_rent|error:unknown"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -312,62 +313,62 @@ msgid ""
|
|||||||
"`{error}`"
|
"`{error}`"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:547
|
#: src/modules/rooms/cog.py:562
|
||||||
msgctxt "cmd:room_status"
|
msgctxt "cmd:room_status"
|
||||||
msgid "status"
|
msgid "status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:550
|
#: src/modules/rooms/cog.py:565
|
||||||
msgctxt "cmd:room_status|desc"
|
msgctxt "cmd:room_status|desc"
|
||||||
msgid "Display the status of your current room."
|
msgid "Display the status of your current room."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:567
|
#: src/modules/rooms/cog.py:582
|
||||||
msgctxt "cmd:room_status|error:no_target"
|
msgctxt "cmd:room_status|error:no_target"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not identify target private room! Please re-run the command in the "
|
"Could not identify target private room! Please re-run the command in the "
|
||||||
"private room you wish to view the status of."
|
"private room you wish to view the status of."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:582
|
#: src/modules/rooms/cog.py:597
|
||||||
msgctxt "cmd:room_invite"
|
msgctxt "cmd:room_invite"
|
||||||
msgid "invite"
|
msgid "invite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:585
|
#: src/modules/rooms/cog.py:600
|
||||||
msgctxt "cmd:room_invite|desc"
|
msgctxt "cmd:room_invite|desc"
|
||||||
msgid "Add members to your private room."
|
msgid "Add members to your private room."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:589
|
#: src/modules/rooms/cog.py:604
|
||||||
msgctxt "cmd:room_invite|param:members"
|
msgctxt "cmd:room_invite|param:members"
|
||||||
msgid "members"
|
msgid "members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:594
|
#: src/modules/rooms/cog.py:609
|
||||||
msgctxt "cmd:room_invite|param:members|desc"
|
msgctxt "cmd:room_invite|param:members|desc"
|
||||||
msgid "Mention the members you want to add."
|
msgid "Mention the members you want to add."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:608
|
#: src/modules/rooms/cog.py:623
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_invite|error:no_room"
|
msgctxt "cmd:room_invite|error:no_room"
|
||||||
msgid ""
|
msgid ""
|
||||||
"You do not own a private room! Use `/room rent` to rent one with {coin}!"
|
"You do not own a private room! Use `/room rent` to rent one with {coin}!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:629
|
#: src/modules/rooms/cog.py:644
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_invite|error:member_not_found"
|
msgctxt "cmd:room_invite|error:member_not_found"
|
||||||
msgid "Could not find the invited member {mention} in this server!"
|
msgid "Could not find the invited member {mention} in this server!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:640
|
#: src/modules/rooms/cog.py:655
|
||||||
msgctxt "cmd:room_invite|error:no_new_members"
|
msgctxt "cmd:room_invite|error:no_new_members"
|
||||||
msgid "All members mentioned are already in the room!"
|
msgid "All members mentioned are already in the room!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:654
|
#: src/modules/rooms/cog.py:669
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_invite|error:too_many_members"
|
msgctxt "cmd:room_invite|error:too_many_members"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -375,89 +376,89 @@ msgid ""
|
|||||||
"you already have `{current}`, and the member cap is `{cap}`!"
|
"you already have `{current}`, and the member cap is `{cap}`!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:678
|
#: src/modules/rooms/cog.py:693
|
||||||
msgctxt "cmd:room_invite|success|ack"
|
msgctxt "cmd:room_invite|success|ack"
|
||||||
msgid "Members Invited successfully."
|
msgid "Members Invited successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:686
|
#: src/modules/rooms/cog.py:701
|
||||||
msgctxt "cmd:room_kick"
|
msgctxt "cmd:room_kick"
|
||||||
msgid "kick"
|
msgid "kick"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:689
|
#: src/modules/rooms/cog.py:704
|
||||||
msgctxt "cmd:room_kick|desc"
|
msgctxt "cmd:room_kick|desc"
|
||||||
msgid "Remove a members from your private room."
|
msgid "Remove a members from your private room."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:693
|
#: src/modules/rooms/cog.py:708
|
||||||
msgctxt "cmd:room_kick|param:members"
|
msgctxt "cmd:room_kick|param:members"
|
||||||
msgid "members"
|
msgid "members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:698
|
#: src/modules/rooms/cog.py:713
|
||||||
msgctxt "cmd:room_kick|param:members|desc"
|
msgctxt "cmd:room_kick|param:members|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Mention the members you want to remove. Also accepts space-separated user "
|
"Mention the members you want to remove. Also accepts space-separated user "
|
||||||
"ids."
|
"ids."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:712
|
#: src/modules/rooms/cog.py:727
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_kick|error:no_room"
|
msgctxt "cmd:room_kick|error:no_room"
|
||||||
msgid ""
|
msgid ""
|
||||||
"You do not own a private room! Use `/room rent` to rent one with {coin}!"
|
"You do not own a private room! Use `/room rent` to rent one with {coin}!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:729
|
#: src/modules/rooms/cog.py:744
|
||||||
msgctxt "cmd:room_kick|error:no_matching_members"
|
msgctxt "cmd:room_kick|error:no_matching_members"
|
||||||
msgid "None of the mentioned members are in this room!"
|
msgid "None of the mentioned members are in this room!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:746
|
#: src/modules/rooms/cog.py:761
|
||||||
msgctxt "cmd:room_kick|success|ack"
|
msgctxt "cmd:room_kick|success|ack"
|
||||||
msgid "Members removed."
|
msgid "Members removed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:752
|
#: src/modules/rooms/cog.py:767
|
||||||
msgctxt "cmd:room_transfer"
|
msgctxt "cmd:room_transfer"
|
||||||
msgid "transfer"
|
msgid "transfer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:755
|
#: src/modules/rooms/cog.py:770
|
||||||
msgctxt "cmd:room_transfer|desc"
|
msgctxt "cmd:room_transfer|desc"
|
||||||
msgid "Transfer your private room to another room member. Not reversible!"
|
msgid "Transfer your private room to another room member. Not reversible!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:759
|
#: src/modules/rooms/cog.py:774
|
||||||
msgctxt "cmd:room_transfer|param:new_owner"
|
msgctxt "cmd:room_transfer|param:new_owner"
|
||||||
msgid "new_owner"
|
msgid "new_owner"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:764
|
#: src/modules/rooms/cog.py:779
|
||||||
msgctxt "cmd:room_transfer|param:new_owner"
|
msgctxt "cmd:room_transfer|param:new_owner"
|
||||||
msgid "The room member you would like to transfer your room to."
|
msgid "The room member you would like to transfer your room to."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:778
|
#: src/modules/rooms/cog.py:793
|
||||||
msgctxt "cmd:room_transfer|error:no_room"
|
msgctxt "cmd:room_transfer|error:no_room"
|
||||||
msgid "You do not own a private room to transfer!"
|
msgid "You do not own a private room to transfer!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:790
|
#: src/modules/rooms/cog.py:805
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_transfer|error:target_not_member"
|
msgctxt "cmd:room_transfer|error:target_not_member"
|
||||||
msgid ""
|
msgid ""
|
||||||
"{mention} is not a member of your private room! You must invite them first."
|
"{mention} is not a member of your private room! You must invite them first."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:802
|
#: src/modules/rooms/cog.py:817
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_transfer|error:target_has_room"
|
msgctxt "cmd:room_transfer|error:target_has_room"
|
||||||
msgid "{mention} already owns a room! Members can only own one room at a time."
|
msgid "{mention} already owns a room! Members can only own one room at a time."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:811
|
#: src/modules/rooms/cog.py:826
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_transfer|confirm|question"
|
msgctxt "cmd:room_transfer|confirm|question"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -465,62 +466,62 @@ msgid ""
|
|||||||
"{new_owner}? This action is not reversible!"
|
"{new_owner}? This action is not reversible!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:831
|
#: src/modules/rooms/cog.py:846
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_transfer|success|description"
|
msgctxt "cmd:room_transfer|success|description"
|
||||||
msgid ""
|
msgid ""
|
||||||
"You have successfully transferred ownership of {channel} to {new_owner}."
|
"You have successfully transferred ownership of {channel} to {new_owner}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:837
|
#: src/modules/rooms/cog.py:852
|
||||||
msgctxt "cmd:room_deposit"
|
msgctxt "cmd:room_deposit"
|
||||||
msgid "deposit"
|
msgid "deposit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:840
|
#: src/modules/rooms/cog.py:855
|
||||||
msgctxt "cmd:room_deposit|desc"
|
msgctxt "cmd:room_deposit|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deposit LionCoins in your private room bank to add more days. (Members may "
|
"Deposit LionCoins in your private room bank to add more days. (Members may "
|
||||||
"also deposit!)"
|
"also deposit!)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:844
|
#: src/modules/rooms/cog.py:859
|
||||||
msgctxt "cmd:room_deposit|param:coins"
|
msgctxt "cmd:room_deposit|param:coins"
|
||||||
msgid "coins"
|
msgid "coins"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:849
|
#: src/modules/rooms/cog.py:864
|
||||||
msgctxt "cmd:room_deposit|param:coins|desc"
|
msgctxt "cmd:room_deposit|param:coins|desc"
|
||||||
msgid "Number of coins to deposit."
|
msgid "Number of coins to deposit."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:869
|
#: src/modules/rooms/cog.py:884
|
||||||
msgctxt "cmd:room_deposit|error:no_target"
|
msgctxt "cmd:room_deposit|error:no_target"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not identify target private room! Please re-run the command in the "
|
"Could not identify target private room! Please re-run the command in the "
|
||||||
"private room you wish to contribute to."
|
"private room you wish to contribute to."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:885
|
#: src/modules/rooms/cog.py:900
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_deposit|error:insufficient_funds"
|
msgctxt "cmd:room_deposit|error:insufficient_funds"
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot deposit {coin}**{amount}**! You only have {coin}**{balance}**."
|
"You cannot deposit {coin}**{amount}**! You only have {coin}**{balance}**."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:906
|
#: src/modules/rooms/cog.py:921
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:room_depost|success"
|
msgctxt "cmd:room_depost|success"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Success! You have contributed {coin}**{amount}** to the private room bank."
|
"Success! You have contributed {coin}**{amount}** to the private room bank."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:921
|
#: src/modules/rooms/cog.py:936
|
||||||
msgctxt "cmd:configure_rooms"
|
msgctxt "cmd:configure_rooms"
|
||||||
msgid "rooms"
|
msgid "rooms"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rooms/cog.py:922
|
#: src/modules/rooms/cog.py:937
|
||||||
msgctxt "cmd:configure_rooms|desc"
|
msgctxt "cmd:configure_rooms|desc"
|
||||||
msgid "Configure Rented Private Rooms"
|
msgid "Configure Rented Private Rooms"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -23,84 +23,89 @@ msgid "editshop"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/cog.py:117
|
#: src/modules/shop/cog.py:117
|
||||||
msgctxt "group:shop"
|
msgctxt "cmd:shop"
|
||||||
msgid "shop"
|
msgid "shop"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/cog.py:123
|
#: src/modules/shop/cog.py:118
|
||||||
|
msgctxt "cmd:shop|desc"
|
||||||
|
msgid "Purchase coloures, roles, and other goodies with LionCoins."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/shop/cog.py:124
|
||||||
msgctxt "cmd:shop_open"
|
msgctxt "cmd:shop_open"
|
||||||
msgid "open"
|
msgid "open"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/cog.py:124
|
#: src/modules/shop/cog.py:125
|
||||||
msgctxt "cmd:shop_open|desc"
|
msgctxt "cmd:shop_open|desc"
|
||||||
msgid "Open the server shop."
|
msgid "Open the server shop."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/cog.py:150
|
#: src/modules/shop/cog.py:151
|
||||||
msgctxt "cmd:shop_open|error:no_shops"
|
msgctxt "cmd:shop_open|error:no_shops"
|
||||||
msgid "There is nothing to buy!"
|
msgid "There is nothing to buy!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/cog.py:212
|
#: src/modules/shop/cog.py:213
|
||||||
msgctxt "ui:stores|button:close|label"
|
msgctxt "ui:stores|button:close|label"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/cog.py:219
|
#: src/modules/shop/cog.py:220
|
||||||
msgctxt "ui:stores|button:close|response|title"
|
msgctxt "ui:stores|button:close|response|title"
|
||||||
msgid "Shop Closed"
|
msgid "Shop Closed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:104
|
#: src/modules/shop/shops/colours.py:105
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:colourstore|menu:buycolours|label"
|
msgctxt "ui:colourstore|menu:buycolours|label"
|
||||||
msgid "{name} ({price} LC)"
|
msgid "{name} ({price} LC)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:109
|
#: src/modules/shop/shops/colours.py:110
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:colourstore|menu:buycolours|label"
|
msgctxt "ui:colourstore|menu:buycolours|label"
|
||||||
msgid "{name} (This is your colour!)"
|
msgid "{name} (This is your colour!)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:114
|
#: src/modules/shop/shops/colours.py:115
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:colourstore|menu:buycolours|desc"
|
msgctxt "ui:colourstore|menu:buycolours|desc"
|
||||||
msgid "Colour: {colour}"
|
msgid "Colour: {colour}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:119
|
#: src/modules/shop/shops/colours.py:120
|
||||||
msgctxt "ui:colourstore|menu:buycolours|desc"
|
msgctxt "ui:colourstore|menu:buycolours|desc"
|
||||||
msgid "Colour: Unknown"
|
msgid "Colour: Unknown"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:133
|
#: src/modules/shop/shops/colours.py:134
|
||||||
msgctxt "shop:colours|name"
|
msgctxt "shop:colours|name"
|
||||||
msgid "Colour Shop"
|
msgid "Colour Shop"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:172
|
#: src/modules/shop/shops/colours.py:173
|
||||||
msgctxt "shop:colour|purchase|error:not_purchasable"
|
msgctxt "shop:colour|purchase|error:not_purchasable"
|
||||||
msgid "This item may not be purchased!"
|
msgid "This item may not be purchased!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:185
|
#: src/modules/shop/shops/colours.py:186
|
||||||
msgctxt "shop:colour|purchase|error:no_guild"
|
msgctxt "shop:colour|purchase|error:no_guild"
|
||||||
msgid "Could not retrieve the server from Discord!"
|
msgid "Could not retrieve the server from Discord!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:195
|
#: src/modules/shop/shops/colours.py:196
|
||||||
msgctxt "shop:colour|purchase|error:no_member"
|
msgctxt "shop:colour|purchase|error:no_member"
|
||||||
msgid "Could not retrieve the member from Discord."
|
msgid "Could not retrieve the member from Discord."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:205
|
#: src/modules/shop/shops/colours.py:206
|
||||||
msgctxt "shop:colour|purchase|error:no_role"
|
msgctxt "shop:colour|purchase|error:no_role"
|
||||||
msgid "This colour role could not be found in the server."
|
msgid "This colour role could not be found in the server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:214
|
#: src/modules/shop/shops/colours.py:215
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "shop:colour|purchase|error:low_balance"
|
msgctxt "shop:colour|purchase|error:low_balance"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -108,72 +113,72 @@ msgid ""
|
|||||||
"Your balance is {coin}{balance}"
|
"Your balance is {coin}{balance}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:229
|
#: src/modules/shop/shops/colours.py:230
|
||||||
msgctxt "shop:colour|purchase|error:owned"
|
msgctxt "shop:colour|purchase|error:owned"
|
||||||
msgid "You already own this item!"
|
msgid "You already own this item!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:263
|
#: src/modules/shop/shops/colours.py:264
|
||||||
msgctxt "shop:colour|purchase|error:failed_no_role"
|
msgctxt "shop:colour|purchase|error:failed_no_role"
|
||||||
msgid "This colour role no longer exists!"
|
msgid "This colour role no longer exists!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:270
|
#: src/modules/shop/shops/colours.py:271
|
||||||
msgctxt "shop:colour|purchase|error:failed_permissions"
|
msgctxt "shop:colour|purchase|error:failed_permissions"
|
||||||
msgid "I do not have enough permissions to give you this colour role!"
|
msgid "I do not have enough permissions to give you this colour role!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:277
|
#: src/modules/shop/shops/colours.py:278
|
||||||
msgctxt "shop:colour|purchase|error:failed_unknown"
|
msgctxt "shop:colour|purchase|error:failed_unknown"
|
||||||
msgid "An unknown error occurred while giving you this colour role!"
|
msgid "An unknown error occurred while giving you this colour role!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:346
|
#: src/modules/shop/shops/colours.py:348
|
||||||
msgctxt "grp:editshop_colours"
|
msgctxt "grp:editshop_colours"
|
||||||
msgid "colours"
|
msgid "colours"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:351
|
#: src/modules/shop/shops/colours.py:353
|
||||||
msgctxt "cmd:editshop_colours_create"
|
msgctxt "cmd:editshop_colours_create"
|
||||||
msgid "create"
|
msgid "create"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:354
|
#: src/modules/shop/shops/colours.py:356
|
||||||
msgctxt "cmd:editshop_colours_create|desc"
|
msgctxt "cmd:editshop_colours_create|desc"
|
||||||
msgid "Create a new colour role with the given colour."
|
msgid "Create a new colour role with the given colour."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:358
|
#: src/modules/shop/shops/colours.py:360
|
||||||
msgctxt "cmd:editshop_colours_create|param:colour"
|
msgctxt "cmd:editshop_colours_create|param:colour"
|
||||||
msgid "colour"
|
msgid "colour"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:359
|
#: src/modules/shop/shops/colours.py:361
|
||||||
msgctxt "cmd:editshop_colours_create|param:name"
|
msgctxt "cmd:editshop_colours_create|param:name"
|
||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:360
|
#: src/modules/shop/shops/colours.py:362
|
||||||
msgctxt "cmd:editshop_colours_create|param:price"
|
msgctxt "cmd:editshop_colours_create|param:price"
|
||||||
msgid "price"
|
msgid "price"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:365
|
#: src/modules/shop/shops/colours.py:367
|
||||||
msgctxt "cmd:editshop_colours_create|param:colour|desc"
|
msgctxt "cmd:editshop_colours_create|param:colour|desc"
|
||||||
msgid "What colour should the role be? (As a hex code, e.g. #AB22AB)"
|
msgid "What colour should the role be? (As a hex code, e.g. #AB22AB)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:369
|
#: src/modules/shop/shops/colours.py:371
|
||||||
msgctxt "cmd:editshop_colours_create|param:name|desc"
|
msgctxt "cmd:editshop_colours_create|param:name|desc"
|
||||||
msgid "What should the colour role be called?"
|
msgid "What should the colour role be called?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:373
|
#: src/modules/shop/shops/colours.py:375
|
||||||
msgctxt "cmd:editshop_colours_create|param:price|desc"
|
msgctxt "cmd:editshop_colours_create|param:price|desc"
|
||||||
msgid "How much should the colour role cost?"
|
msgid "How much should the colour role cost?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:395
|
#: src/modules/shop/shops/colours.py:397
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_create|error:parse_colour"
|
msgctxt "cmd:editshop_colours_create|error:parse_colour"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -181,7 +186,7 @@ msgid ""
|
|||||||
"Please enter the colour as a hex string, e.g. `#FA0BC1`"
|
"Please enter the colour as a hex string, e.g. `#FA0BC1`"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:405
|
#: src/modules/shop/shops/colours.py:407
|
||||||
msgctxt "cmd:editshop_colours_create|error:perms"
|
msgctxt "cmd:editshop_colours_create|error:perms"
|
||||||
msgid ""
|
msgid ""
|
||||||
"I do not have permission to create server roles!\n"
|
"I do not have permission to create server roles!\n"
|
||||||
@@ -189,26 +194,26 @@ msgid ""
|
|||||||
"editshop colours add` instead."
|
"editshop colours add` instead."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:421
|
#: src/modules/shop/shops/colours.py:424
|
||||||
msgctxt "cmd:editshop_colours_create|error:max_colours"
|
msgctxt "cmd:editshop_colours_create|error:max_colours"
|
||||||
msgid ""
|
msgid ""
|
||||||
"This server already has the maximum of `25` colour roles!\n"
|
"This server already has the maximum of `25` colour roles!\n"
|
||||||
"Please remove some before adding or creating more."
|
"Please remove some before adding or creating more."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:440
|
#: src/modules/shop/shops/colours.py:443
|
||||||
msgctxt "cmd:editshop_colours_create|error:failed_unknown"
|
msgctxt "cmd:editshop_colours_create|error:failed_unknown"
|
||||||
msgid ""
|
msgid ""
|
||||||
"An unknown Discord error occurred while creating your colour role!\n"
|
"An unknown Discord error occurred while creating your colour role!\n"
|
||||||
"Please try again in a few minutes."
|
"Please try again in a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:490
|
#: src/modules/shop/shops/colours.py:493
|
||||||
msgctxt "cmd:editshop_colours_create|resp:done|title"
|
msgctxt "cmd:editshop_colours_create|resp:done|title"
|
||||||
msgid "Colour Role Created"
|
msgid "Colour Role Created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:494
|
#: src/modules/shop/shops/colours.py:497
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_create|resp:done|desc"
|
msgctxt "cmd:editshop_colours_create|resp:done|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -216,80 +221,80 @@ msgid ""
|
|||||||
"{coin}**{price}**!"
|
"{coin}**{price}**!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:501
|
#: src/modules/shop/shops/colours.py:504
|
||||||
msgctxt "cmd:editshop_colours_create|resp:done|field:position_note|value"
|
msgctxt "cmd:editshop_colours_create|resp:done|field:position_note|value"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The new colour role was added below all other roles. Remember a member's "
|
"The new colour role was added below all other roles. Remember a member's "
|
||||||
"active colour is determined by their highest coloured role!"
|
"active colour is determined by their highest coloured role!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:505
|
#: src/modules/shop/shops/colours.py:508
|
||||||
msgctxt "cmd:editshop_colours_create|resp:done|field:position_note|name"
|
msgctxt "cmd:editshop_colours_create|resp:done|field:position_note|name"
|
||||||
msgid "Note"
|
msgid "Note"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:514
|
#: src/modules/shop/shops/colours.py:517
|
||||||
msgctxt "cmd:editshop_colours_edit"
|
msgctxt "cmd:editshop_colours_edit"
|
||||||
msgid "edit"
|
msgid "edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:517
|
#: src/modules/shop/shops/colours.py:520
|
||||||
msgctxt "cmd:editshop_colours_edit|desc"
|
msgctxt "cmd:editshop_colours_edit|desc"
|
||||||
msgid "Edit the name, colour, or price of a colour role."
|
msgid "Edit the name, colour, or price of a colour role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:521
|
#: src/modules/shop/shops/colours.py:524
|
||||||
msgctxt "cmd:editshop_colours_edit|param:role"
|
msgctxt "cmd:editshop_colours_edit|param:role"
|
||||||
msgid "role"
|
msgid "role"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:522
|
#: src/modules/shop/shops/colours.py:525
|
||||||
msgctxt "cmd:editshop_colours_edit|param:name"
|
msgctxt "cmd:editshop_colours_edit|param:name"
|
||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:523
|
#: src/modules/shop/shops/colours.py:526
|
||||||
msgctxt "cmd:editshop_colours_edit|param:colour"
|
msgctxt "cmd:editshop_colours_edit|param:colour"
|
||||||
msgid "colour"
|
msgid "colour"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:524
|
#: src/modules/shop/shops/colours.py:527
|
||||||
msgctxt "cmd:editshop_colours_edit|param:price"
|
msgctxt "cmd:editshop_colours_edit|param:price"
|
||||||
msgid "price"
|
msgid "price"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:529
|
#: src/modules/shop/shops/colours.py:532
|
||||||
msgctxt "cmd:editshop_colours_edit|param:role|desc"
|
msgctxt "cmd:editshop_colours_edit|param:role|desc"
|
||||||
msgid "Select a colour role to edit."
|
msgid "Select a colour role to edit."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:533
|
#: src/modules/shop/shops/colours.py:536
|
||||||
msgctxt "cmd:editshop_colours_edit|param:name|desc"
|
msgctxt "cmd:editshop_colours_edit|param:name|desc"
|
||||||
msgid "New name to give the colour role."
|
msgid "New name to give the colour role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:537
|
#: src/modules/shop/shops/colours.py:540
|
||||||
msgctxt "cmd:editshop_colours_edit|param:colour|desc"
|
msgctxt "cmd:editshop_colours_edit|param:colour|desc"
|
||||||
msgid "New colour for the colour role (as hex, e.g. #AB12AB)."
|
msgid "New colour for the colour role (as hex, e.g. #AB12AB)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:541
|
#: src/modules/shop/shops/colours.py:544
|
||||||
msgctxt "cmd:editshop_colours_edit|param:price|desc"
|
msgctxt "cmd:editshop_colours_edit|param:price|desc"
|
||||||
msgid "New price for the colour role."
|
msgid "New price for the colour role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:570
|
#: src/modules/shop/shops/colours.py:573
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_edit|error:invalid_role"
|
msgctxt "cmd:editshop_colours_edit|error:invalid_role"
|
||||||
msgid "{mention} is not in the colour role shop!"
|
msgid "{mention} is not in the colour role shop!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:584
|
#: src/modules/shop/shops/colours.py:587
|
||||||
msgctxt "cmd:editshop_colours_edit|error:no_args"
|
msgctxt "cmd:editshop_colours_edit|error:no_args"
|
||||||
msgid "You must give me one of `name`, `colour`, or `price` to update!"
|
msgid "You must give me one of `name`, `colour`, or `price` to update!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:600
|
#: src/modules/shop/shops/colours.py:603
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_edit|error:parse_colour"
|
msgctxt "cmd:editshop_colours_edit|error:parse_colour"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -297,82 +302,82 @@ msgid ""
|
|||||||
"Please enter the colour as a hex string, e.g. `#FA0BC1`"
|
"Please enter the colour as a hex string, e.g. `#FA0BC1`"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:615
|
#: src/modules/shop/shops/colours.py:618
|
||||||
msgctxt "cmd:editshop_colours_edit|error:perms"
|
msgctxt "cmd:editshop_colours_edit|error:perms"
|
||||||
msgid "I do not have sufficient server permissions to edit this role!"
|
msgid "I do not have sufficient server permissions to edit this role!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:631
|
#: src/modules/shop/shops/colours.py:634
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_edit|resp:done|line:price"
|
msgctxt "cmd:editshop_colours_edit|resp:done|line:price"
|
||||||
msgid "{tick} Set price to {coin}**{price}**"
|
msgid "{tick} Set price to {coin}**{price}**"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:648
|
#: src/modules/shop/shops/colours.py:651
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_edit|resp:done|line:role"
|
msgctxt "cmd:editshop_colours_edit|resp:done|line:role"
|
||||||
msgid "{tick} Updated role to {mention}"
|
msgid "{tick} Updated role to {mention}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:658
|
#: src/modules/shop/shops/colours.py:661
|
||||||
msgctxt "cmd:editshop_colours_edit|resp:done|embed:title"
|
msgctxt "cmd:editshop_colours_edit|resp:done|embed:title"
|
||||||
msgid "Colour Role Updated"
|
msgid "Colour Role Updated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:664
|
#: src/modules/shop/shops/colours.py:667
|
||||||
msgctxt "cmd:editshop_colours_auto"
|
msgctxt "cmd:editshop_colours_auto"
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:665
|
#: src/modules/shop/shops/colours.py:668
|
||||||
msgctxt "cmd:editshop_colours_auto|desc"
|
msgctxt "cmd:editshop_colours_auto|desc"
|
||||||
msgid "Automatically create a set of colour roles."
|
msgid "Automatically create a set of colour roles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:674
|
#: src/modules/shop/shops/colours.py:677
|
||||||
msgctxt "cmd:editshop_colours_add"
|
msgctxt "cmd:editshop_colours_add"
|
||||||
msgid "add"
|
msgid "add"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:677
|
#: src/modules/shop/shops/colours.py:680
|
||||||
msgctxt "cmd:editshop_colours_add|desc"
|
msgctxt "cmd:editshop_colours_add|desc"
|
||||||
msgid "Add an existing role to the colour shop."
|
msgid "Add an existing role to the colour shop."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:681
|
#: src/modules/shop/shops/colours.py:684
|
||||||
msgctxt "cmd:editshop_colours_add|param:role"
|
msgctxt "cmd:editshop_colours_add|param:role"
|
||||||
msgid "role"
|
msgid "role"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:682
|
#: src/modules/shop/shops/colours.py:685
|
||||||
msgctxt "cmd:editshop_colours_add|param:price"
|
msgctxt "cmd:editshop_colours_add|param:price"
|
||||||
msgid "price"
|
msgid "price"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:687
|
#: src/modules/shop/shops/colours.py:690
|
||||||
msgctxt "cmd:editshop_colours_add|param:role|desc"
|
msgctxt "cmd:editshop_colours_add|param:role|desc"
|
||||||
msgid "Select a role to add to the colour shop."
|
msgid "Select a role to add to the colour shop."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:691
|
#: src/modules/shop/shops/colours.py:694
|
||||||
msgctxt "cmd:editshop_colours_add|param:price|desc"
|
msgctxt "cmd:editshop_colours_add|param:price|desc"
|
||||||
msgid "How much should this role cost?"
|
msgid "How much should this role cost?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:716
|
#: src/modules/shop/shops/colours.py:719
|
||||||
msgctxt "cmd:editshop_colours_add|error:max_colours"
|
msgctxt "cmd:editshop_colours_add|error:max_colours"
|
||||||
msgid ""
|
msgid ""
|
||||||
"This server already has the maximum of `25` colour roles!\n"
|
"This server already has the maximum of `25` colour roles!\n"
|
||||||
"Please remove some before adding or creating more."
|
"Please remove some before adding or creating more."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:725
|
#: src/modules/shop/shops/colours.py:728
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_add|error:role_exists"
|
msgctxt "cmd:editshop_colours_add|error:role_exists"
|
||||||
msgid "The role {mention} is already registered as a colour role!"
|
msgid "The role {mention} is already registered as a colour role!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:734
|
#: src/modules/shop/shops/colours.py:737
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_add|error:role_perms"
|
msgctxt "cmd:editshop_colours_add|error:role_perms"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -381,7 +386,7 @@ msgid ""
|
|||||||
"role."
|
"role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:745
|
#: src/modules/shop/shops/colours.py:748
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_add|error:caller_perms"
|
msgctxt "cmd:editshop_colours_add|error:caller_perms"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -390,138 +395,138 @@ msgid ""
|
|||||||
"role."
|
"role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:754
|
#: src/modules/shop/shops/colours.py:760
|
||||||
msgctxt "cmd:editshop_colours_add|error:role_has_admin"
|
msgctxt "cmd:editshop_colours_add|error:role_has_admin"
|
||||||
msgid ""
|
msgid ""
|
||||||
"I refuse to add an administrator role to the LionCoin shop. That is a really "
|
"I refuse to add an administrator role to the LionCoin shop. That is a really "
|
||||||
"bad idea."
|
"bad idea."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:775
|
#: src/modules/shop/shops/colours.py:781
|
||||||
msgctxt "cmd:editshop_colours_add|resp:done|embed:title"
|
msgctxt "cmd:editshop_colours_add|resp:done|embed:title"
|
||||||
msgid "Colour Role Created"
|
msgid "Colour Role Created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:778
|
#: src/modules/shop/shops/colours.py:784
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_add|resp:done|embed:desc"
|
msgctxt "cmd:editshop_colours_add|resp:done|embed:desc"
|
||||||
msgid "You have added {mention} to the colour shop for {coin}**{price}**!"
|
msgid "You have added {mention} to the colour shop for {coin}**{price}**!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:786
|
#: src/modules/shop/shops/colours.py:792
|
||||||
msgctxt "cmd:editshop_colours_clear"
|
msgctxt "cmd:editshop_colours_clear"
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:789
|
#: src/modules/shop/shops/colours.py:795
|
||||||
msgctxt "cmd:editshop_colours_clear|desc"
|
msgctxt "cmd:editshop_colours_clear|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove all the colour roles from the shop, and optionally delete the roles."
|
"Remove all the colour roles from the shop, and optionally delete the roles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:793
|
#: src/modules/shop/shops/colours.py:799
|
||||||
msgctxt "cmd:editshop_colours_clear|param:delete"
|
msgctxt "cmd:editshop_colours_clear|param:delete"
|
||||||
msgid "delete_roles"
|
msgid "delete_roles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:798
|
#: src/modules/shop/shops/colours.py:804
|
||||||
msgctxt "cmd:editshop_colours_clear|param:delete|desc"
|
msgctxt "cmd:editshop_colours_clear|param:delete|desc"
|
||||||
msgid "Also delete the associated roles."
|
msgid "Also delete the associated roles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:840
|
#: src/modules/shop/shops/colours.py:846
|
||||||
msgctxt "cmd:editshop_colours_clear|error:no_colours"
|
msgctxt "cmd:editshop_colours_clear|error:no_colours"
|
||||||
msgid "There are no coloured roles to remove!"
|
msgid "There are no coloured roles to remove!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:884
|
#: src/modules/shop/shops/colours.py:890
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_clear|resp:done|line:clear"
|
msgctxt "cmd:editshop_colours_clear|resp:done|line:clear"
|
||||||
msgid "{tick} Colour shop cleared."
|
msgid "{tick} Colour shop cleared."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:895
|
#: src/modules/shop/shops/colours.py:901
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_clear|resp:done|line:refunding"
|
msgctxt "cmd:editshop_colours_clear|resp:done|line:refunding"
|
||||||
msgid "{loading} Refunded **{count}/{total}** members."
|
msgid "{loading} Refunded **{count}/{total}** members."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:901
|
#: src/modules/shop/shops/colours.py:907
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_clear|resp:done|line:refunded"
|
msgctxt "cmd:editshop_colours_clear|resp:done|line:refunded"
|
||||||
msgid "{tick} Refunded **{total}/{total}** members."
|
msgid "{tick} Refunded **{total}/{total}** members."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:914
|
#: src/modules/shop/shops/colours.py:920
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_clear|resp:done|line:deleted_failed"
|
msgctxt "cmd:editshop_colours_clear|resp:done|line:deleted_failed"
|
||||||
msgid ""
|
msgid ""
|
||||||
"{emoji} Deleted **{count}/{total}** colour roles. (**{failed}** failed!)"
|
"{emoji} Deleted **{count}/{total}** colour roles. (**{failed}** failed!)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:919
|
#: src/modules/shop/shops/colours.py:925
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_clear|resp:done|line:deleted"
|
msgctxt "cmd:editshop_colours_clear|resp:done|line:deleted"
|
||||||
msgid "{emoji} Deleted **{count}/{total}** colour roles."
|
msgid "{emoji} Deleted **{count}/{total}** colour roles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:968
|
#: src/modules/shop/shops/colours.py:974
|
||||||
msgctxt "cmd:editshop_colours_remove"
|
msgctxt "cmd:editshop_colours_remove"
|
||||||
msgid "remove"
|
msgid "remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:971
|
#: src/modules/shop/shops/colours.py:977
|
||||||
msgctxt "cmd:editshop_colours_remove|desc"
|
msgctxt "cmd:editshop_colours_remove|desc"
|
||||||
msgid "Remove a specific colour role from the shop."
|
msgid "Remove a specific colour role from the shop."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:975
|
#: src/modules/shop/shops/colours.py:981
|
||||||
msgctxt "cmd:editshop_colours_remove|param:role"
|
msgctxt "cmd:editshop_colours_remove|param:role"
|
||||||
msgid "role"
|
msgid "role"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:976
|
#: src/modules/shop/shops/colours.py:982
|
||||||
msgctxt "cmd:editshop_colours_remove"
|
msgctxt "cmd:editshop_colours_remove"
|
||||||
msgid "delete_role"
|
msgid "delete_role"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:981
|
#: src/modules/shop/shops/colours.py:987
|
||||||
msgctxt "cmd:editshop_colours_remove|param:role|desc"
|
msgctxt "cmd:editshop_colours_remove|param:role|desc"
|
||||||
msgid "Select the colour role to remove."
|
msgid "Select the colour role to remove."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:985
|
#: src/modules/shop/shops/colours.py:991
|
||||||
msgctxt "cmd:editshop_colours_remove|param:delete_role|desc"
|
msgctxt "cmd:editshop_colours_remove|param:delete_role|desc"
|
||||||
msgid "Whether to delete the associated role."
|
msgid "Whether to delete the associated role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1010
|
#: src/modules/shop/shops/colours.py:1016
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_remove|error:not_colour"
|
msgctxt "cmd:editshop_colours_remove|error:not_colour"
|
||||||
msgid "{mention} is not in the colour role shop!"
|
msgid "{mention} is not in the colour role shop!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1028
|
#: src/modules/shop/shops/colours.py:1034
|
||||||
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
||||||
msgid "Successfully deleted the role."
|
msgid "Successfully deleted the role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1033
|
#: src/modules/shop/shops/colours.py:1039
|
||||||
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
||||||
msgid "I do not have sufficient permissions to delete the role."
|
msgid "I do not have sufficient permissions to delete the role."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1038
|
#: src/modules/shop/shops/colours.py:1044
|
||||||
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
||||||
msgid "Failed to delete the role for an unknown reason."
|
msgid "Failed to delete the role for an unknown reason."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1043
|
#: src/modules/shop/shops/colours.py:1049
|
||||||
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
msgctxt "cmd:editshop_colours_remove|resp:done|line:delete"
|
||||||
msgid "Could not find the role in order to delete it."
|
msgid "Could not find the role in order to delete it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1054
|
#: src/modules/shop/shops/colours.py:1060
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:editshop_colours_remove|resp:done|embed:desc"
|
msgctxt "cmd:editshop_colours_remove|resp:done|embed:desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -529,45 +534,64 @@ msgid ""
|
|||||||
"{delete_line}"
|
"{delete_line}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1114
|
#: src/modules/shop/shops/colours.py:1138
|
||||||
msgctxt "ui:colourstore|menu:buycolours|embed:error|title"
|
msgctxt "ui:colourstore|menu:buycolours|embed:error|title"
|
||||||
msgid "Purchase Failed!"
|
msgid "Purchase Failed!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1125
|
#: src/modules/shop/shops/colours.py:1149
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:colourstore|menu:buycolours|resp:done|desc"
|
msgctxt "ui:colourstore|menu:buycolours|resp:done|desc"
|
||||||
msgid "{tick} You have purchased {mention}"
|
msgid "{tick} You have purchased {mention}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1160
|
#: src/modules/shop/shops/colours.py:1184
|
||||||
msgctxt "ui:colourstore|menu:buycolours|placeholder"
|
msgctxt "ui:colourstore|menu:buycolours|placeholder"
|
||||||
msgid "There are no colour roles available to purchase!"
|
msgid "There are no colour roles available to purchase!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1166
|
#: src/modules/shop/shops/colours.py:1190
|
||||||
msgctxt "ui:colourstore|menu:buycolours|placeholder"
|
msgctxt "ui:colourstore|menu:buycolours|placeholder"
|
||||||
msgid "Select a colour role to purchase!"
|
msgid "Select a colour role to purchase!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1195
|
#: src/modules/shop/shops/colours.py:1236
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:colourstore|embed|line:owned_item"
|
msgctxt "ui:colourstore|embed|line:owned_item"
|
||||||
msgid "`[{j:02}]` | `{price} LC` | {mention} (You own this!)"
|
msgid "`[{j:02}]` | `{price} LC` | {mention} (You own this!)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1200
|
#: src/modules/shop/shops/colours.py:1241
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:colourstore|embed|line:item"
|
msgctxt "ui:colourstore|embed|line:item"
|
||||||
msgid "`[{j:02}]` | `{price} LC` | {mention}"
|
msgid "`[{j:02}]` | `{price} LC` | {mention}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1207
|
#: src/modules/shop/shops/colours.py:1248
|
||||||
msgctxt "ui:colourstore|embed|desc"
|
msgctxt "ui:colourstore|embed|desc"
|
||||||
msgid "No colour roles available for purchase!"
|
msgid "No colour roles available for purchase!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/shop/shops/colours.py:1210
|
#: src/modules/shop/shops/colours.py:1251
|
||||||
msgctxt "ui:colourstore|embed|title"
|
msgctxt "ui:colourstore|embed|title"
|
||||||
msgid "Colour Role Shop"
|
msgid "Colour Role Shop"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1257
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:colourstore|embed|footer:paged"
|
||||||
|
msgid "Page {current}/{total}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1264
|
||||||
|
msgctxt "ui:colourstore|embed|field:warning|name"
|
||||||
|
msgid "Note!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/shop/shops/colours.py:1268
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:colourstore|embed|field:warning|value"
|
||||||
|
msgid ""
|
||||||
|
"Purchasing a new colour role will *replace* your currently colour {current} "
|
||||||
|
"without refund!"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -47,36 +47,34 @@ msgctxt "cmd:leaderboard|desc"
|
|||||||
msgid "Server leaderboard."
|
msgid "Server leaderboard."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/cog.py:91
|
#: src/modules/statistics/cog.py:89
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:leaderboard|chunking|desc"
|
||||||
|
msgid "Requesting server member list from Discord, please wait {loading}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/statistics/cog.py:108
|
||||||
msgctxt "cmd:configure_statistics"
|
msgctxt "cmd:configure_statistics"
|
||||||
msgid "statistics"
|
msgid "statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/cog.py:92
|
#: src/modules/statistics/cog.py:109
|
||||||
msgctxt "cmd:configure_statistics|desc"
|
msgctxt "cmd:configure_statistics|desc"
|
||||||
msgid "Statistics configuration panel"
|
msgid "Statistics configuration panel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/cog.py:95
|
#: src/modules/statistics/cog.py:112
|
||||||
msgctxt "cmd:configure_statistics|param:season_start"
|
msgctxt "cmd:configure_statistics|param:season_start"
|
||||||
msgid "season_start"
|
msgid "season_start"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/cog.py:100
|
#: src/modules/statistics/cog.py:117
|
||||||
msgctxt "cmd:configure_statistics|param:season_start|desc"
|
msgctxt "cmd:configure_statistics|param:season_start|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Time from which to start counting activity for rank badges and season "
|
"Time from which to start counting activity for rank badges and season "
|
||||||
"leaderboards. (YYYY-MM-DD)"
|
"leaderboards. (YYYY-MM-DD)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/cog.py:130
|
|
||||||
#, 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
|
#: src/modules/statistics/settings.py:37
|
||||||
msgctxt "settype:stat|output:voice"
|
msgctxt "settype:stat|output:voice"
|
||||||
msgid "`Voice`"
|
msgid "`Voice`"
|
||||||
@@ -159,171 +157,175 @@ msgctxt "guildset:season_start|long_desc"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Activity ranks will be determined based on tracked activity since this time, "
|
"Activity ranks will be determined based on tracked activity since this time, "
|
||||||
"and the leaderboard will display activity since this time by default. Unset "
|
"and the leaderboard will display activity since this time by default. Unset "
|
||||||
"to disable seasons and use all-time statistics instead."
|
"to disable seasons and use all-time statistics instead.\n"
|
||||||
|
"Provided dates and times are assumed to be in the guild `timezone`, so set "
|
||||||
|
"this first!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:101
|
#: src/modules/statistics/settings.py:102
|
||||||
msgctxt "guildset:season_start|accepts"
|
msgctxt "guildset:season_start|accepts"
|
||||||
msgid "The season start time in the form YYYY-MM-DD HH:MM"
|
msgid "The season start time in the form YYYY-MM-DD HH:MM"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:105
|
#: src/modules/statistics/settings.py:106
|
||||||
msgctxt "guildset:season_start|notset"
|
msgctxt "guildset:season_start|notset"
|
||||||
msgid "Not Set (Using all-time statistics)"
|
msgid "Not Set (Using all-time statistics)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:124
|
#: src/modules/statistics/settings.py:125
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "guildset:season_start|parse|error:future_time"
|
msgctxt "guildset:season_start|parse|error:future_time"
|
||||||
msgid "Provided season start time {timestamp} is in the future!"
|
msgid "Provided season start time {timestamp} is in the future!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:136
|
#: src/modules/statistics/settings.py:137
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "guildset:season_start|set_response|set"
|
msgctxt "guildset:season_start|set_response|set"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The leaderboard season and activity ranks will now count from {timestamp}. "
|
"The leaderboard season and activity ranks will now count from {timestamp}. "
|
||||||
"Member ranks will update when they are next active. Use {rank_cmd} to "
|
"Member ranks will update when they are next active.\n"
|
||||||
"refresh immediately."
|
"Use {rank_cmd} and press **Refresh Member Ranks** to refresh all ranks "
|
||||||
|
"immediately."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:145
|
#: src/modules/statistics/settings.py:147
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "guildset:season_start|set_response|unset"
|
msgctxt "guildset:season_start|set_response|unset"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The leaderboard and activity ranks will now count all-time statistics. "
|
"The leaderboard and activity ranks will now count all-time statistics. "
|
||||||
"Member ranks will update when they are next active. Use {rank_cmd} to "
|
"Member ranks will update when they are next active.\n"
|
||||||
"refresh immediately."
|
"Use {rank_cmd} and press **Refresh Member Ranks** to refresh all ranks "
|
||||||
|
"immediately."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:156
|
#: src/modules/statistics/settings.py:159
|
||||||
msgctxt "guildset:unranked_roles"
|
msgctxt "guildset:unranked_roles"
|
||||||
msgid "unranked_roles"
|
msgid "unranked_roles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:159
|
#: src/modules/statistics/settings.py:162
|
||||||
msgctxt "guildset:unranked_roles|desc"
|
msgctxt "guildset:unranked_roles|desc"
|
||||||
msgid "Roles to exclude from the leaderboards."
|
msgid "Roles to exclude from the leaderboards."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:163
|
#: src/modules/statistics/settings.py:166
|
||||||
msgctxt "guildset:unranked_roles|long_desc"
|
msgctxt "guildset:unranked_roles|long_desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"When set, members with *any* of these roles will not appear on the /"
|
"When set, members with *any* of these roles will not appear on the /"
|
||||||
"leaderboard ranking list."
|
"leaderboard ranking list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:167
|
#: src/modules/statistics/settings.py:170
|
||||||
msgctxt "guildset:unranked_roles|accepts"
|
msgctxt "guildset:unranked_roles|accepts"
|
||||||
msgid "Comma separated list of unranked role names or ids."
|
msgid "Comma separated list of unranked role names or ids."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:183
|
#: src/modules/statistics/settings.py:186
|
||||||
msgctxt "guildset:unranked_roles|set_using"
|
msgctxt "guildset:unranked_roles|set_using"
|
||||||
msgid "Role selector below."
|
msgid "Role selector below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:193
|
#: src/modules/statistics/settings.py:196
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "guildset:unranked_roles|set_response|set"
|
msgctxt "guildset:unranked_roles|set_response|set"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Members of the following roles will not appear on the leaderboard: {roles}"
|
"Members of the following roles will not appear on the leaderboard: {roles}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:200
|
#: src/modules/statistics/settings.py:203
|
||||||
msgctxt "guildset:unranked_roles|set_response|unset"
|
msgctxt "guildset:unranked_roles|set_response|unset"
|
||||||
msgid "You have cleared the unranked role list."
|
msgid "You have cleared the unranked role list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:214
|
#: src/modules/statistics/settings.py:217
|
||||||
msgctxt "guildset:visible_stats"
|
msgctxt "guildset:visible_stats"
|
||||||
msgid "visible_stats"
|
msgid "visible_stats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:217
|
#: src/modules/statistics/settings.py:220
|
||||||
msgctxt "guildset:visible_stats|desc"
|
msgctxt "guildset:visible_stats|desc"
|
||||||
msgid "Which statistics will be visible in the statistics commands."
|
msgid "Which statistics will be visible in the statistics commands."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:221
|
#: src/modules/statistics/settings.py:224
|
||||||
msgctxt "guildset:visible_stats|desc"
|
msgctxt "guildset:visible_stats|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose which statistics types to display in the leaderboard and statistics "
|
"Choose which statistics types to display in the leaderboard and statistics "
|
||||||
"commands."
|
"commands."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:225
|
#: src/modules/statistics/settings.py:228
|
||||||
msgctxt "guildset:visible_stats|accepts"
|
msgctxt "guildset:visible_stats|accepts"
|
||||||
msgid "Voice, Text, Anki"
|
msgid "Voice, Text, Anki"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:246
|
#: src/modules/statistics/settings.py:249
|
||||||
msgctxt "guildset:visible_stats|set_using"
|
msgctxt "guildset:visible_stats|set_using"
|
||||||
msgid "Option menu below."
|
msgid "Option menu below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:254
|
#: src/modules/statistics/settings.py:257
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "guildset:visible_stats|set_response"
|
msgctxt "guildset:visible_stats|set_response"
|
||||||
msgid "Members will be able to view the following statistics types: {types}"
|
msgid "Members will be able to view the following statistics types: {types}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:264
|
#: src/modules/statistics/settings.py:267
|
||||||
msgctxt "guildset:default_stat"
|
msgctxt "guildset:default_stat"
|
||||||
msgid "default_stat"
|
msgid "default_stat"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:267
|
#: src/modules/statistics/settings.py:270
|
||||||
msgctxt "guildset:default_stat|desc"
|
msgctxt "guildset:default_stat|desc"
|
||||||
msgid "Statistic type to display by default in setting dialogues."
|
msgid "Statistic type to display by default in setting dialogues."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:271
|
#: src/modules/statistics/settings.py:274
|
||||||
msgctxt "guildset:default_stat|long_desc"
|
msgctxt "guildset:default_stat|long_desc"
|
||||||
msgid "Which statistic type to display by default in setting dialogues."
|
msgid "Which statistic type to display by default in setting dialogues."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:304
|
#: src/modules/statistics/settings.py:307
|
||||||
msgctxt "ui:statistics_config|menu:unranked_roles|placeholder"
|
msgctxt "ui:statistics_config|menu:unranked_roles|placeholder"
|
||||||
msgid "Select Unranked Roles"
|
msgid "Select Unranked Roles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:328
|
#: src/modules/statistics/settings.py:331
|
||||||
msgctxt "ui:statistics_config|menu:visible_stats|item:voice|mode:voice"
|
msgctxt "ui:statistics_config|menu:visible_stats|item:voice|mode:voice"
|
||||||
msgid "Voice Activity"
|
msgid "Voice Activity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:333
|
#: src/modules/statistics/settings.py:336
|
||||||
msgctxt "ui:statistics_config|menu:visible_stats|item:voice|mode:study"
|
msgctxt "ui:statistics_config|menu:visible_stats|item:voice|mode:study"
|
||||||
msgid "Study Statistics"
|
msgid "Study Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:343
|
#: src/modules/statistics/settings.py:346
|
||||||
msgctxt "ui:statistics_config|menu:visible_stats|item:text"
|
msgctxt "ui:statistics_config|menu:visible_stats|item:text"
|
||||||
msgid "Message Activity"
|
msgid "Message Activity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:351
|
#: src/modules/statistics/settings.py:354
|
||||||
msgctxt "ui:statistics_config|menu:visible_stats|item:anki"
|
msgctxt "ui:statistics_config|menu:visible_stats|item:anki"
|
||||||
msgid "Anki Reviews"
|
msgid "Anki Reviews"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:362
|
#: src/modules/statistics/settings.py:365
|
||||||
msgctxt "ui:statistics_config|menu:visible_stats|placeholder"
|
msgctxt "ui:statistics_config|menu:visible_stats|placeholder"
|
||||||
msgid "Select Visible Statistics"
|
msgid "Select Visible Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:383
|
#: src/modules/statistics/settings.py:386
|
||||||
msgctxt "ui:statistics_config|embed|title"
|
msgctxt "ui:statistics_config|embed|title"
|
||||||
msgid "Statistics Configuration Panel"
|
msgid "Statistics Configuration Panel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:405
|
#: src/modules/statistics/settings.py:408
|
||||||
msgctxt "dash:stats|title"
|
msgctxt "dash:stats|title"
|
||||||
msgid "Activity Statistics Configuration ({commands[configure statistics]})"
|
msgid "Activity Statistics Configuration ({commands[configure statistics]})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/settings.py:409
|
#: src/modules/statistics/settings.py:412
|
||||||
msgctxt "dash:stats|dropdown|placeholder"
|
msgctxt "dash:stats|dropdown|placeholder"
|
||||||
msgid "Activity Statistics Panel"
|
msgid "Activity Statistics Panel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -480,68 +482,68 @@ msgctxt "modal:goal_editor|monthly|title"
|
|||||||
msgid "Monthly goal editor"
|
msgid "Monthly goal editor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:499
|
#: src/modules/statistics/ui/weeklymonthly.py:503
|
||||||
msgctxt "ui:weeklymonthly|button:edit_goals|label"
|
msgctxt "ui:weeklymonthly|button:edit_goals|label"
|
||||||
msgid "Edit Goals"
|
msgid "Edit Goals"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:515
|
#: src/modules/statistics/ui/weeklymonthly.py:519
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:weeklymonthly|menu:period|monthly|label"
|
msgctxt "ui:weeklymonthly|menu:period|monthly|label"
|
||||||
msgid "{month} {year}"
|
msgid "{month} {year}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:530
|
#: src/modules/statistics/ui/weeklymonthly.py:534
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:weeklymonthly|menu:period|weekly|label"
|
msgctxt "ui:weeklymonthly|menu:period|weekly|label"
|
||||||
msgid "{year} W{week}"
|
msgid "{year} W{week}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:534
|
#: src/modules/statistics/ui/weeklymonthly.py:538
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:weeklymonthly|menu:period|weekly|desc"
|
msgctxt "ui:weeklymonthly|menu:period|weekly|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"{start_day} {start_month} {start_year} to {end_day} {end_month} {end_year}"
|
"{start_day} {start_month} {start_year} to {end_day} {end_month} {end_year}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:612
|
#: src/modules/statistics/ui/weeklymonthly.py:616
|
||||||
msgctxt "ui:weeklymonthly|button:period|close|label"
|
msgctxt "ui:weeklymonthly|button:period|close|label"
|
||||||
msgid "Close Selector"
|
msgid "Close Selector"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:617
|
#: src/modules/statistics/ui/weeklymonthly.py:621
|
||||||
msgctxt "ui:weeklymonthly|button:period|weekly|label"
|
msgctxt "ui:weeklymonthly|button:period|weekly|label"
|
||||||
msgid "Select Week"
|
msgid "Select Week"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:622
|
#: src/modules/statistics/ui/weeklymonthly.py:626
|
||||||
msgctxt "ui:weeklymonthly|button:period|monthly|label"
|
msgctxt "ui:weeklymonthly|button:period|monthly|label"
|
||||||
msgid "Select Month"
|
msgid "Select Month"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:687
|
#: src/modules/statistics/ui/weeklymonthly.py:691
|
||||||
msgctxt "ui:weeklymonthly|menu:period|weekly|placeholder"
|
msgctxt "ui:weeklymonthly|menu:period|weekly|placeholder"
|
||||||
msgid "Select a week to display"
|
msgid "Select a week to display"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:692
|
#: src/modules/statistics/ui/weeklymonthly.py:696
|
||||||
msgctxt "ui:weeklymonthly|menu:period|monthly|placeholder"
|
msgctxt "ui:weeklymonthly|menu:period|monthly|placeholder"
|
||||||
msgid "Select a month to display"
|
msgid "Select a month to display"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:714
|
#: src/modules/statistics/ui/weeklymonthly.py:718
|
||||||
msgctxt "ui:WeeklyMonthly|button:global|resp:success"
|
msgctxt "ui:WeeklyMonthly|button:global|resp:success"
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will now see combined statistics from all your servers (where "
|
"You will now see combined statistics from all your servers (where "
|
||||||
"applicable)! Press again to revert."
|
"applicable)! Press again to revert."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:727
|
#: src/modules/statistics/ui/weeklymonthly.py:731
|
||||||
msgctxt "ui:WeeklyMonthly|button:global|mode:local"
|
msgctxt "ui:WeeklyMonthly|button:global|mode:local"
|
||||||
msgid "Server Statistics"
|
msgid "Server Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/weeklymonthly.py:732
|
#: src/modules/statistics/ui/weeklymonthly.py:736
|
||||||
msgctxt "ui:WeeklyMonthly|button:global|mode:global"
|
msgctxt "ui:WeeklyMonthly|button:global|mode:global"
|
||||||
msgid "Global Statistics"
|
msgid "Global Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -611,92 +613,101 @@ msgid ""
|
|||||||
"again to revert."
|
"again to revert."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:231
|
#: src/modules/statistics/ui/leaderboard.py:250
|
||||||
msgctxt "ui:leaderboard|menu:stats|placeholder"
|
msgctxt "ui:leaderboard|menu:stats|placeholder"
|
||||||
msgid "Select Activity Type"
|
msgid "Select Activity Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:240
|
#: src/modules/statistics/ui/leaderboard.py:259
|
||||||
msgctxt "ui:leaderboard|menu:stats|item:voice"
|
msgctxt "ui:leaderboard|menu:stats|item:voice"
|
||||||
msgid "Voice Activity"
|
msgid "Voice Activity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:251
|
#: src/modules/statistics/ui/leaderboard.py:270
|
||||||
msgctxt "ui:leaderboard|menu:stats|item:study"
|
msgctxt "ui:leaderboard|menu:stats|item:study"
|
||||||
msgid "Study Statistics"
|
msgid "Study Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:262
|
#: src/modules/statistics/ui/leaderboard.py:281
|
||||||
msgctxt "ui:leaderboard|menu:stats|item:message"
|
msgctxt "ui:leaderboard|menu:stats|item:message"
|
||||||
msgid "Message Activity"
|
msgid "Message Activity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:273
|
#: src/modules/statistics/ui/leaderboard.py:292
|
||||||
msgctxt "ui:leaderboard|menu;stats|item:anki"
|
msgctxt "ui:leaderboard|menu;stats|item:anki"
|
||||||
msgid "Anki Cards Reviewed"
|
msgid "Anki Cards Reviewed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:327
|
#: src/modules/statistics/ui/leaderboard.py:346
|
||||||
msgctxt "ui:leaderboard|button:season|label"
|
msgctxt "ui:leaderboard|button:season|label"
|
||||||
msgid "This Season"
|
msgid "This Season"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:331
|
#: src/modules/statistics/ui/leaderboard.py:350
|
||||||
msgctxt "ui:leaderboard|button:day|label"
|
msgctxt "ui:leaderboard|button:day|label"
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:335
|
#: src/modules/statistics/ui/leaderboard.py:354
|
||||||
msgctxt "ui:leaderboard|button:week|label"
|
msgctxt "ui:leaderboard|button:week|label"
|
||||||
msgid "This Week"
|
msgid "This Week"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:339
|
#: src/modules/statistics/ui/leaderboard.py:358
|
||||||
msgctxt "ui:leaderboard|button:month|label"
|
msgctxt "ui:leaderboard|button:month|label"
|
||||||
msgid "This Month"
|
msgid "This Month"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:343
|
#: src/modules/statistics/ui/leaderboard.py:362
|
||||||
msgctxt "ui:leaderboard|button:alltime|label"
|
msgctxt "ui:leaderboard|button:alltime|label"
|
||||||
msgid "All Time"
|
msgid "All Time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:347
|
#: src/modules/statistics/ui/leaderboard.py:366
|
||||||
msgctxt "ui:leaderboard|button:jump|label"
|
msgctxt "ui:leaderboard|button:jump|label"
|
||||||
msgid "Jump"
|
msgid "Jump"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:362
|
#: src/modules/statistics/ui/leaderboard.py:381
|
||||||
msgctxt "ui:leaderboard|button:jump|input:title"
|
msgctxt "ui:leaderboard|button:jump|input:title"
|
||||||
msgid "Jump to page"
|
msgid "Jump to page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:366
|
#: src/modules/statistics/ui/leaderboard.py:385
|
||||||
msgctxt "ui:leaderboard|button:jump|input:question"
|
msgctxt "ui:leaderboard|button:jump|input:question"
|
||||||
msgid "Page number to jump to"
|
msgid "Page number to jump to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:377
|
#: src/modules/statistics/ui/leaderboard.py:396
|
||||||
msgctxt "ui:leaderboard|button:jump|error:invalid_page"
|
msgctxt "ui:leaderboard|button:jump|error:invalid_page"
|
||||||
msgid "Invalid page number, please try again!"
|
msgid "Invalid page number, please try again!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:428
|
#: src/modules/statistics/ui/leaderboard.py:442
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "ui:leaderboard|since"
|
||||||
|
msgid "Counting statistics since {timestamp}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/statistics/ui/leaderboard.py:453
|
||||||
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:leaderboard|mode:voice|message:empty|desc"
|
msgctxt "ui:leaderboard|mode:voice|message:empty|desc"
|
||||||
msgid "There has been no voice activity in this period!"
|
msgid "There has been no voice activity since {timestamp}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:433
|
#: src/modules/statistics/ui/leaderboard.py:458
|
||||||
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:leaderboard|mode:text|message:empty|desc"
|
msgctxt "ui:leaderboard|mode:text|message:empty|desc"
|
||||||
msgid "There has been no message activity in this period!"
|
msgid "There has been no message activity since {timestamp}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:438
|
#: src/modules/statistics/ui/leaderboard.py:463
|
||||||
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:leaderboard|mode:anki|message:empty|desc"
|
msgctxt "ui:leaderboard|mode:anki|message:empty|desc"
|
||||||
msgid "There have been no Anki cards reviewed in this period!"
|
msgid "There have been no Anki cards reviewed since {timestamp}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/statistics/ui/leaderboard.py:444
|
#: src/modules/statistics/ui/leaderboard.py:472
|
||||||
msgctxt "ui:leaderboard|message:empty|title"
|
msgctxt "ui:leaderboard|message:empty|title"
|
||||||
msgid "Leaderboard Empty!"
|
msgid "Leaderboard Empty!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -53,291 +53,323 @@ msgctxt "argtype:Before|opt:THISMONTH"
|
|||||||
msgid "This Month"
|
msgid "This Month"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:225
|
#: src/modules/tasklist/cog.py:205
|
||||||
|
msgctxt "summon_tasklist|error:insufficient_perms|title"
|
||||||
|
msgid "Uh-Oh, I cannot do that here!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:209
|
||||||
|
msgctxt "summon_tasklist|error:insufficient_perms|desc"
|
||||||
|
msgid ""
|
||||||
|
"This channel is configured as a tasklist channel, but I lack the "
|
||||||
|
"`EMBED_LINKS` or `SEND_MESSAGES` permission here! If you believe this is "
|
||||||
|
"unintentional, please contact a server administrator."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:258
|
||||||
msgctxt "cmd:tasklist"
|
msgctxt "cmd:tasklist"
|
||||||
msgid "tasklist"
|
msgid "tasklist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:228
|
#: src/modules/tasklist/cog.py:261
|
||||||
msgctxt "cmd:tasklist|desc"
|
msgctxt "cmd:tasklist|desc"
|
||||||
msgid "Open your tasklist."
|
msgid "Open your tasklist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:237
|
#: src/modules/tasklist/cog.py:270
|
||||||
msgctxt "group:tasks"
|
msgctxt "group:tasks"
|
||||||
msgid "tasks"
|
msgid "tasks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:238
|
#: src/modules/tasklist/cog.py:271
|
||||||
msgctxt "group:tasks|desc"
|
msgctxt "group:tasks|desc"
|
||||||
msgid "Base command group for tasklist commands."
|
msgid "Base command group for tasklist commands."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:260
|
#: src/modules/tasklist/cog.py:293
|
||||||
msgctxt "argtype:taskid|error:no_tasks"
|
msgctxt "argtype:taskid|error:no_tasks"
|
||||||
msgid "Tasklist empty! No matching tasks."
|
msgid "Tasklist empty! No matching tasks."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:305
|
#: src/modules/tasklist/cog.py:330
|
||||||
|
msgctxt "argtype:taskid|match:all"
|
||||||
|
msgid "All tasks"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:348
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "argtype:taskid|error:parse_multi"
|
msgctxt "argtype:taskid|error:parse_multi"
|
||||||
msgid "(Warning: {error})"
|
msgid "(Warning: {error})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:339
|
#: src/modules/tasklist/cog.py:382
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "argtype:taskid|error:no_matching"
|
msgctxt "argtype:taskid|error:no_matching"
|
||||||
msgid "No tasks matching '{partial}'!"
|
msgid "No tasks matching '{partial}'!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:359
|
#: src/modules/tasklist/cog.py:402
|
||||||
msgctxt "cmd:tasks_new"
|
msgctxt "cmd:tasks_new"
|
||||||
msgid "new"
|
msgid "new"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:362
|
#: src/modules/tasklist/cog.py:405
|
||||||
msgctxt "cmd:tasks_new|desc"
|
msgctxt "cmd:tasks_new|desc"
|
||||||
msgid "Add a new task to your tasklist."
|
msgid "Add a new task to your tasklist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:366
|
#: src/modules/tasklist/cog.py:409
|
||||||
msgctxt "cmd:tasks_new|param:content"
|
msgctxt "cmd:tasks_new|param:content"
|
||||||
msgid "task"
|
msgid "task"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:367
|
#: src/modules/tasklist/cog.py:410
|
||||||
msgctxt "cmd:tasks_new|param:parent"
|
msgctxt "cmd:tasks_new|param:parent"
|
||||||
msgid "parent"
|
msgid "parent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:370
|
#: src/modules/tasklist/cog.py:413
|
||||||
msgctxt "cmd:tasks_new|param:content|desc"
|
msgctxt "cmd:tasks_new|param:content|desc"
|
||||||
msgid "Content of your new task."
|
msgid "Content of your new task."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:371
|
#: src/modules/tasklist/cog.py:414
|
||||||
msgctxt "cmd:tasks_new|param:parent"
|
msgctxt "cmd:tasks_new|param:parent"
|
||||||
msgid "Parent of this task."
|
msgid "Parent of this task."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:391
|
#: src/modules/tasklist/cog.py:434
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:tasks_new|error:parse_parent"
|
msgctxt "cmd:tasks_new|error:parse_parent"
|
||||||
msgid "Could not find parent task number `{input}` in your tasklist."
|
msgid "Could not find parent task number `{input}` in your tasklist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:406
|
#: src/modules/tasklist/cog.py:449
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:tasks_new|resp:success"
|
msgctxt "cmd:tasks_new|resp:success"
|
||||||
msgid "{tick} Created task `{label}`."
|
msgid "{tick} Created task `{label}`."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:418
|
#: src/modules/tasklist/cog.py:461
|
||||||
msgctxt "cmd:tasks_upload"
|
msgctxt "cmd:tasks_upload"
|
||||||
msgid "upload"
|
msgid "upload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:421
|
#: src/modules/tasklist/cog.py:464
|
||||||
msgctxt "cmd:tasks_upload|desc"
|
msgctxt "cmd:tasks_upload|desc"
|
||||||
msgid "Upload a list of tasks to append to or replace your tasklist."
|
msgid "Upload a list of tasks to append to or replace your tasklist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:425
|
#: src/modules/tasklist/cog.py:468
|
||||||
msgctxt "cmd:tasks_upload|param:tasklist"
|
msgctxt "cmd:tasks_upload|param:tasklist"
|
||||||
msgid "tasklist"
|
msgid "tasklist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:426
|
#: src/modules/tasklist/cog.py:469
|
||||||
msgctxt "cmd:tasks_upload|param:append"
|
msgctxt "cmd:tasks_upload|param:append"
|
||||||
msgid "append"
|
msgid "append"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:431
|
#: src/modules/tasklist/cog.py:474
|
||||||
msgctxt "cmd:tasks_upload|param:tasklist|desc"
|
msgctxt "cmd:tasks_upload|param:tasklist|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Text file containing a (standard markdown formatted) checklist of tasks to "
|
"Text file containing a (standard markdown formatted) checklist of tasks to "
|
||||||
"add or append."
|
"add or append."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:435
|
#: src/modules/tasklist/cog.py:478
|
||||||
msgctxt "cmd:tasks_upload|param:append|desc"
|
msgctxt "cmd:tasks_upload|param:append|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to append the given tasks or replace your entire tasklist. Defaults "
|
"Whether to append the given tasks or replace your entire tasklist. Defaults "
|
||||||
"to True."
|
"to True."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:451
|
#: src/modules/tasklist/cog.py:494
|
||||||
msgctxt "cmd:tasks_upload|error:not_text"
|
msgctxt "cmd:tasks_upload|error:not_text"
|
||||||
msgid "The attached tasklist must be a text file!"
|
msgid "The attached tasklist must be a text file!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:459
|
#: src/modules/tasklist/cog.py:502
|
||||||
msgctxt "cmd:tasks_upload|error:too_large"
|
msgctxt "cmd:tasks_upload|error:too_large"
|
||||||
msgid "The attached tasklist was too large!"
|
msgid "The attached tasklist was too large!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:470
|
#: src/modules/tasklist/cog.py:513
|
||||||
msgctxt "cmd:tasks_upload|error:too_many_lines"
|
msgctxt "cmd:tasks_upload|error:too_many_lines"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Too many tasks! Refusing to process a tasklist with more than `1000` lines."
|
"Too many tasks! Refusing to process a tasklist with more than `1000` lines."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:476
|
#: src/modules/tasklist/cog.py:519
|
||||||
msgctxt "cmd:tasks_upload|error:decoding"
|
msgctxt "cmd:tasks_upload|error:decoding"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not decode attached tasklist. Please make sure it is saved with the "
|
"Could not decode attached tasklist. Please make sure it is saved with the "
|
||||||
"`UTF-8` encoding."
|
"`UTF-8` encoding."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:523
|
#: src/modules/tasklist/cog.py:566
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:tasks_upload|resp:success"
|
msgctxt "cmd:tasks_upload|resp:success"
|
||||||
msgid "{tick} Updated your tasklist."
|
msgid "{tick} Updated your tasklist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:535
|
#: src/modules/tasklist/cog.py:578
|
||||||
msgctxt "cmd:tasks_edit"
|
msgctxt "cmd:tasks_edit"
|
||||||
msgid "edit"
|
msgid "edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:538
|
#: src/modules/tasklist/cog.py:581
|
||||||
msgctxt "cmd:tasks_edit|desc"
|
msgctxt "cmd:tasks_edit|desc"
|
||||||
msgid "Edit a task in your tasklist."
|
msgid "Edit a task in your tasklist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:542
|
#: src/modules/tasklist/cog.py:585
|
||||||
msgctxt "cmd:tasks_edit|param:taskstr"
|
msgctxt "cmd:tasks_edit|param:taskstr"
|
||||||
msgid "task"
|
msgid "task"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:543
|
#: src/modules/tasklist/cog.py:586
|
||||||
msgctxt "cmd:tasks_edit|param:new_content"
|
msgctxt "cmd:tasks_edit|param:new_content"
|
||||||
msgid "new_task"
|
msgid "new_task"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:544
|
#: src/modules/tasklist/cog.py:587
|
||||||
msgctxt "cmd:tasks_edit|param:new_parent"
|
msgctxt "cmd:tasks_edit|param:new_parent"
|
||||||
msgid "new_parent"
|
msgid "new_parent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:547
|
#: src/modules/tasklist/cog.py:590
|
||||||
msgctxt "cmd:tasks_edit|param:taskstr|desc"
|
msgctxt "cmd:tasks_edit|param:taskstr|desc"
|
||||||
msgid "Which task do you want to update?"
|
msgid "Which task do you want to update?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:548
|
#: src/modules/tasklist/cog.py:591
|
||||||
msgctxt "cmd:tasks_edit|param:new_content|desc"
|
msgctxt "cmd:tasks_edit|param:new_content|desc"
|
||||||
msgid "What do you want to change the task to?"
|
msgid "What do you want to change the task to?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:549
|
#: src/modules/tasklist/cog.py:592
|
||||||
msgctxt "cmd:tasks_edit|param:new_parent|desc"
|
msgctxt "cmd:tasks_edit|param:new_parent|desc"
|
||||||
msgid "Which task do you want to be the new parent?"
|
msgid "Which task do you want to be the new parent?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:568
|
#: src/modules/tasklist/cog.py:611
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:tasks_edit|error:parse_taskstr"
|
msgctxt "cmd:tasks_edit|error:parse_taskstr"
|
||||||
msgid "Could not find target task number `{input}` in your tasklist."
|
msgid "Could not find target task number `{input}` in your tasklist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:584
|
#: src/modules/tasklist/cog.py:627
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:tasks_edit|error:parse_parent"
|
msgctxt "cmd:tasks_edit|error:parse_parent"
|
||||||
msgid "Could not find new parent task number `{input}` in your tasklist."
|
msgid "Could not find new parent task number `{input}` in your tasklist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:603
|
#: src/modules/tasklist/cog.py:646
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:tasks_edit|resp:success|desc"
|
msgctxt "cmd:tasks_edit|resp:success|desc"
|
||||||
msgid "{tick} Task `{label}` updated."
|
msgid "{tick} Task `{label}` updated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:625
|
#: src/modules/tasklist/cog.py:668
|
||||||
msgctxt "ui:tasklist_single_editor|title"
|
msgctxt "ui:tasklist_single_editor|title"
|
||||||
msgid "Edit Task"
|
msgid "Edit Task"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:640
|
#: src/modules/tasklist/cog.py:683
|
||||||
msgctxt "cmd:tasks_clear"
|
msgctxt "cmd:tasks_clear"
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:641
|
#: src/modules/tasklist/cog.py:684
|
||||||
msgctxt "cmd:tasks_clear|desc"
|
msgctxt "cmd:tasks_clear|desc"
|
||||||
msgid "Clear your tasklist."
|
msgid "Clear your tasklist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:651
|
#: src/modules/tasklist/cog.py:694
|
||||||
msgctxt "cmd:tasks_clear|resp:success"
|
msgctxt "cmd:tasks_clear|resp:success"
|
||||||
msgid "Your tasklist has been cleared."
|
msgid "Your tasklist has been cleared."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:659
|
#: src/modules/tasklist/cog.py:702
|
||||||
msgctxt "cmd:tasks_remove"
|
msgctxt "cmd:tasks_remove"
|
||||||
msgid "remove"
|
msgid "remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:662
|
#: src/modules/tasklist/cog.py:705
|
||||||
msgctxt "cmd:tasks_remove|desc"
|
msgctxt "cmd:tasks_remove|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Remove tasks matching all the provided conditions. (E.g. remove tasks "
|
"Remove tasks matching all the provided conditions. (E.g. remove tasks "
|
||||||
"completed before today)."
|
"completed before today)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:666
|
#: src/modules/tasklist/cog.py:709
|
||||||
msgctxt "cmd:tasks_remove|param:taskidstr"
|
msgctxt "cmd:tasks_remove|param:taskidstr"
|
||||||
msgid "tasks"
|
msgid "tasks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:667
|
#: src/modules/tasklist/cog.py:710
|
||||||
msgctxt "cmd:tasks_remove|param:created_before"
|
msgctxt "cmd:tasks_remove|param:created_before"
|
||||||
msgid "created_before"
|
msgid "created_before"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:668
|
#: src/modules/tasklist/cog.py:711
|
||||||
msgctxt "cmd:tasks_remove|param:updated_before"
|
msgctxt "cmd:tasks_remove|param:updated_before"
|
||||||
msgid "updated_before"
|
msgid "updated_before"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:669
|
#: src/modules/tasklist/cog.py:712
|
||||||
msgctxt "cmd:tasks_remove|param:completed"
|
msgctxt "cmd:tasks_remove|param:completed"
|
||||||
msgid "completed"
|
msgid "completed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:670
|
#: src/modules/tasklist/cog.py:713
|
||||||
msgctxt "cmd:tasks_remove|param:cascade"
|
msgctxt "cmd:tasks_remove|param:cascade"
|
||||||
msgid "cascade"
|
msgid "cascade"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:675
|
#: src/modules/tasklist/cog.py:718
|
||||||
msgctxt "cmd:tasks_remove|param:taskidstr|desc"
|
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-)."
|
msgid ""
|
||||||
|
"List of task numbers or ranges to remove (e.g. 1, 2, 5-7, 8.1-3, 9-), or `-` "
|
||||||
|
"to remove all."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:679
|
#: src/modules/tasklist/cog.py:722
|
||||||
msgctxt "cmd:tasks_remove|param:created_before|desc"
|
msgctxt "cmd:tasks_remove|param:created_before|desc"
|
||||||
msgid "Only delete tasks created before the selected time."
|
msgid "Only delete tasks created before the selected time."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:683
|
#: src/modules/tasklist/cog.py:726
|
||||||
msgctxt "cmd:tasks_remove|param:updated_before|desc"
|
msgctxt "cmd:tasks_remove|param:updated_before|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Only deleted tasks update (i.e. completed or edited) before the selected "
|
"Only deleted tasks update (i.e. completed or edited) before the selected "
|
||||||
"time."
|
"time."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:687
|
#: src/modules/tasklist/cog.py:730
|
||||||
msgctxt "cmd:tasks_remove|param:completed"
|
msgctxt "cmd:tasks_remove|param:completed"
|
||||||
msgid "Only delete tasks which are (not) complete."
|
msgid "Only delete tasks which are (not) complete."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:691
|
#: src/modules/tasklist/cog.py:734
|
||||||
msgctxt "cmd:tasks_remove|param:cascade"
|
msgctxt "cmd:tasks_remove|param:cascade"
|
||||||
msgid "Whether to recursively remove subtasks of removed tasks."
|
msgid "Whether to recursively remove subtasks of removed tasks."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:760
|
#: src/modules/tasklist/cog.py:766 src/modules/tasklist/cog.py:861
|
||||||
|
#: src/modules/tasklist/cog.py:936
|
||||||
|
#, possible-python-brace-format
|
||||||
|
msgctxt "cmd:tasks_remove_cmd|error:no_matching"
|
||||||
|
msgid "No tasks on your tasklist match `{input}`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:790
|
||||||
|
msgctxt "cmd:tasks_remove_cmd|error:no_matching"
|
||||||
|
msgid "No tasks on your tasklist matching all the given conditions!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/tasklist/cog.py:803
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:tasks_remove|resp:success"
|
msgctxt "cmd:tasks_remove|resp:success"
|
||||||
msgid "{tick} Deleted task `{label}`"
|
msgid "{tick} Deleted task `{label}`"
|
||||||
@@ -345,37 +377,39 @@ msgid_plural "{tick} Deleted `{count}` tasks from your tasklist."
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:778
|
#: src/modules/tasklist/cog.py:821
|
||||||
msgctxt "cmd:tasks_tick"
|
msgctxt "cmd:tasks_tick"
|
||||||
msgid "tick"
|
msgid "tick"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:779
|
#: src/modules/tasklist/cog.py:822
|
||||||
msgctxt "cmd:tasks_tick|desc"
|
msgctxt "cmd:tasks_tick|desc"
|
||||||
msgid "Mark the given tasks as completed."
|
msgid "Mark the given tasks as completed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:782
|
#: src/modules/tasklist/cog.py:825
|
||||||
msgctxt "cmd:tasks_tick|param:taskidstr"
|
msgctxt "cmd:tasks_tick|param:taskidstr"
|
||||||
msgid "tasks"
|
msgid "tasks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:783
|
#: src/modules/tasklist/cog.py:826
|
||||||
msgctxt "cmd:tasks_tick|param:cascade"
|
msgctxt "cmd:tasks_tick|param:cascade"
|
||||||
msgid "cascade"
|
msgid "cascade"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:788
|
#: src/modules/tasklist/cog.py:831
|
||||||
msgctxt "cmd:tasks_tick|param:taskidstr|desc"
|
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-)."
|
msgid ""
|
||||||
|
"List of task numbers or ranges to tick (e.g. 1, 2, 5-7, 8.1-3, 9-) or '-' to "
|
||||||
|
"tick all."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:792
|
#: src/modules/tasklist/cog.py:835
|
||||||
msgctxt "cmd:tasks_tick|param:cascade|desc"
|
msgctxt "cmd:tasks_tick|param:cascade|desc"
|
||||||
msgid "Whether to also mark all subtasks as complete."
|
msgid "Whether to also mark all subtasks as complete."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:836
|
#: src/modules/tasklist/cog.py:879
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:tasks_tick|resp:success"
|
msgctxt "cmd:tasks_tick|resp:success"
|
||||||
msgid "{tick} Marked `{label}` as complete."
|
msgid "{tick} Marked `{label}` as complete."
|
||||||
@@ -383,37 +417,39 @@ msgid_plural "{tick} Marked `{count}` tasks as complete."
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:854
|
#: src/modules/tasklist/cog.py:897
|
||||||
msgctxt "cmd:tasks_untick"
|
msgctxt "cmd:tasks_untick"
|
||||||
msgid "untick"
|
msgid "untick"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:855
|
#: src/modules/tasklist/cog.py:898
|
||||||
msgctxt "cmd:tasks_untick|desc"
|
msgctxt "cmd:tasks_untick|desc"
|
||||||
msgid "Mark the given tasks as incomplete."
|
msgid "Mark the given tasks as incomplete."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:858
|
#: src/modules/tasklist/cog.py:901
|
||||||
msgctxt "cmd:tasks_untick|param:taskidstr"
|
msgctxt "cmd:tasks_untick|param:taskidstr"
|
||||||
msgid "taskids"
|
msgid "taskids"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:859
|
#: src/modules/tasklist/cog.py:902
|
||||||
msgctxt "cmd:tasks_untick|param:cascade"
|
msgctxt "cmd:tasks_untick|param:cascade"
|
||||||
msgid "cascade"
|
msgid "cascade"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:864
|
#: src/modules/tasklist/cog.py:907
|
||||||
msgctxt "cmd:tasks_untick|param:taskidstr|desc"
|
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-)."
|
msgid ""
|
||||||
|
"List of task numbers or ranges to untick (e.g. 1, 2, 5-7, 8.1-3, 9-) or '-' "
|
||||||
|
"to untick all."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:868
|
#: src/modules/tasklist/cog.py:911
|
||||||
msgctxt "cmd:tasks_untick|param:cascade|desc"
|
msgctxt "cmd:tasks_untick|param:cascade|desc"
|
||||||
msgid "Whether to also mark all subtasks as incomplete."
|
msgid "Whether to also mark all subtasks as incomplete."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:909
|
#: src/modules/tasklist/cog.py:952
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:tasks_untick|resp:success"
|
msgctxt "cmd:tasks_untick|resp:success"
|
||||||
msgid "{tick} Marked `{label}` as incomplete."
|
msgid "{tick} Marked `{label}` as incomplete."
|
||||||
@@ -421,27 +457,27 @@ msgid_plural "{tick} Marked `{count}` tasks as incomplete."
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:933
|
#: src/modules/tasklist/cog.py:976
|
||||||
msgctxt "cmd:configure_tasklist"
|
msgctxt "cmd:configure_tasklist"
|
||||||
msgid "tasklist"
|
msgid "tasklist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:934
|
#: src/modules/tasklist/cog.py:977
|
||||||
msgctxt "cmd:configure_tasklist|desc"
|
msgctxt "cmd:configure_tasklist|desc"
|
||||||
msgid "Tasklist configuration panel"
|
msgid "Tasklist configuration panel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:937
|
#: src/modules/tasklist/cog.py:980
|
||||||
msgctxt "cmd:configure_tasklist|param:reward"
|
msgctxt "cmd:configure_tasklist|param:reward"
|
||||||
msgid "reward"
|
msgid "reward"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:938
|
#: src/modules/tasklist/cog.py:981
|
||||||
msgctxt "cmd:configure_tasklist|param:reward_limit"
|
msgctxt "cmd:configure_tasklist|param:reward_limit"
|
||||||
msgid "reward_limit"
|
msgid "reward_limit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/cog.py:974
|
#: src/modules/tasklist/cog.py:1017
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:configure_tasklist|resp:success|desc"
|
msgctxt "cmd:configure_tasklist|resp:success|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -449,19 +485,19 @@ msgid ""
|
|||||||
"up to a maximum of `{limit}` tasks per 24h."
|
"up to a maximum of `{limit}` tasks per 24h."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/tasklist.py:264
|
#: src/modules/tasklist/tasklist.py:267
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "tasklist|parse:multi-range|error:parents_match"
|
msgctxt "tasklist|parse:multi-range|error:parents_match"
|
||||||
msgid "Parents don't match in range `{range}`"
|
msgid "Parents don't match in range `{range}`"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/tasklist.py:286
|
#: src/modules/tasklist/tasklist.py:289
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "tasklist|parse:multi-range|error:parse"
|
msgctxt "tasklist|parse:multi-range|error:parse"
|
||||||
msgid "Could not parse `{range}` as a task number or range."
|
msgid "Could not parse `{range}` as a task number or range."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/tasklist.py:317
|
#: src/modules/tasklist/tasklist.py:320
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "modal:tasklist_bulk_editor|error:parse_task"
|
msgctxt "modal:tasklist_bulk_editor|error:parse_task"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -469,7 +505,7 @@ msgid ""
|
|||||||
"`{input}`"
|
"`{input}`"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/tasklist.py:329
|
#: src/modules/tasklist/tasklist.py:332
|
||||||
msgctxt "modal:tasklist_bulk_editor|error:task_too_long"
|
msgctxt "modal:tasklist_bulk_editor|error:task_too_long"
|
||||||
msgid "Please keep your tasks under 100 characters!"
|
msgid "Please keep your tasks under 100 characters!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -545,13 +581,13 @@ msgctxt "ui:tasklist|menu:sub|mode:delete|placeholder"
|
|||||||
msgid "Delete from {label}.*"
|
msgid "Delete from {label}.*"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:408
|
#: src/modules/tasklist/ui.py:409
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:tasklist_single_editor|field:parent|error:parse_id"
|
msgctxt "ui:tasklist_single_editor|field:parent|error:parse_id"
|
||||||
msgid "Could not find the given parent task number `{input}` in your tasklist."
|
msgid "Could not find the given parent task number `{input}` in your tasklist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:422
|
#: src/modules/tasklist/ui.py:423
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:tasklist_single_editor|field:parent|error:multiple_matching"
|
msgctxt "ui:tasklist_single_editor|field:parent|error:multiple_matching"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -559,77 +595,77 @@ msgid ""
|
|||||||
"number instead!"
|
"number instead!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:429
|
#: src/modules/tasklist/ui.py:430
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:tasklist_single_editor|field:parent|error:no_matching"
|
msgctxt "ui:tasklist_single_editor|field:parent|error:no_matching"
|
||||||
msgid "No tasks matching given parent task `{input}`."
|
msgid "No tasks matching given parent task `{input}`."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:500
|
#: src/modules/tasklist/ui.py:501
|
||||||
msgctxt "ui:tasklist|menu:edit|modal:title"
|
msgctxt "ui:tasklist|menu:edit|modal:title"
|
||||||
msgid "Edit task"
|
msgid "Edit task"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:593
|
#: src/modules/tasklist/ui.py:596
|
||||||
msgctxt "ui:tasklist_single_editor|title"
|
msgctxt "ui:tasklist_single_editor|title"
|
||||||
msgid "Add task"
|
msgid "Add task"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:626
|
#: src/modules/tasklist/ui.py:629
|
||||||
msgctxt "ui:tasklist|button:edit_mode|label"
|
msgctxt "ui:tasklist|button:edit_mode|label"
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:642
|
#: src/modules/tasklist/ui.py:645
|
||||||
msgctxt "ui:tasklist|button:delete_mode|label"
|
msgctxt "ui:tasklist|button:delete_mode|label"
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:658
|
#: src/modules/tasklist/ui.py:661
|
||||||
msgctxt "ui:tasklist|button:toggle_mode|label"
|
msgctxt "ui:tasklist|button:toggle_mode|label"
|
||||||
msgid "Toggle"
|
msgid "Toggle"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:675
|
#: src/modules/tasklist/ui.py:678
|
||||||
msgctxt "ui:tasklist|button:edit_bulk|error:too_long"
|
msgctxt "ui:tasklist|button:edit_bulk|error:too_long"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your tasklist is too long to be edited in a Discord text input! Use the save "
|
"Your tasklist is too long to be edited in a Discord text input! Use the save "
|
||||||
"button and {cmds[tasks upload]} instead."
|
"button and {cmds[tasks upload]} instead."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:689
|
#: src/modules/tasklist/ui.py:692
|
||||||
msgctxt "ui:tasklist|button:edit_bulk|label"
|
msgctxt "ui:tasklist|button:edit_bulk|label"
|
||||||
msgid "Bulk Edit"
|
msgid "Bulk Edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:702
|
#: src/modules/tasklist/ui.py:705
|
||||||
msgctxt "ui:tasklist|button:clear|label"
|
msgctxt "ui:tasklist|button:clear|label"
|
||||||
msgid "Clear Tasklist"
|
msgid "Clear Tasklist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:721
|
#: src/modules/tasklist/ui.py:724
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:tasklist|button:save|dm:contents"
|
msgctxt "ui:tasklist|button:save|dm:contents"
|
||||||
msgid "Your tasklist as of {now} is attached. Click here to jump back: {jump}"
|
msgid "Your tasklist as of {now} is attached. Click here to jump back: {jump}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:734
|
#: src/modules/tasklist/ui.py:737
|
||||||
msgctxt "ui:tasklist|button:save|error:dms"
|
msgctxt "ui:tasklist|button:save|error:dms"
|
||||||
msgid "Could not DM you! Do you have me blocked? Tasklist attached below."
|
msgid "Could not DM you! Do you have me blocked? Tasklist attached below."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:779
|
#: src/modules/tasklist/ui.py:782
|
||||||
msgctxt "ui:tasklist|error:wrong_user"
|
msgctxt "ui:tasklist|error:wrong_user"
|
||||||
msgid "This is not your tasklist!"
|
msgid "This is not your tasklist!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:821
|
#: src/modules/tasklist/ui.py:824
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "ui:tasklist|embed|author"
|
msgctxt "ui:tasklist|embed|author"
|
||||||
msgid "{name}'s tasklist ({completed}/{total} complete)"
|
msgid "{name}'s tasklist ({completed}/{total} complete)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/tasklist/ui.py:843
|
#: src/modules/tasklist/ui.py:846
|
||||||
msgctxt "ui:tasklist|embed|description"
|
msgctxt "ui:tasklist|embed|description"
|
||||||
msgid ""
|
msgid ""
|
||||||
"**You have no tasks on your tasklist!**\n"
|
"**You have no tasks on your tasklist!**\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -17,62 +17,66 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: src/modules/test/test.py:47 src/modules/test/test.py:54
|
#: src/modules/test/test.py:59 src/modules/test/test.py:66
|
||||||
msgid "test"
|
msgid "test"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:55
|
#: src/modules/test/test.py:67
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:62
|
#: src/modules/test/test.py:74
|
||||||
msgid "editor"
|
msgid "editor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:63
|
#: src/modules/test/test.py:75
|
||||||
msgid "Test message editor"
|
msgid "Test message editor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:89
|
#: src/modules/test/test.py:101
|
||||||
msgid "test_ephemeral"
|
msgid "test_ephemeral"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:90
|
#: src/modules/test/test.py:102
|
||||||
msgid "Test ephemeral delete and edit"
|
msgid "Test ephemeral delete and edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:102
|
#: src/modules/test/test.py:114
|
||||||
msgid "colours"
|
msgid "colours"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:103
|
#: src/modules/test/test.py:115
|
||||||
msgid "Test Ansi colours"
|
msgid "Test Ansi colours"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:123
|
#: src/modules/test/test.py:135
|
||||||
msgid "fail"
|
msgid "fail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:130
|
#: src/modules/test/test.py:143
|
||||||
|
msgid "failui"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/test/test.py:150
|
||||||
msgid "pager"
|
msgid "pager"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:158
|
#: src/modules/test/test.py:178
|
||||||
msgid "pager2"
|
msgid "pager2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:189
|
#: src/modules/test/test.py:209
|
||||||
msgid "prettyusers"
|
msgid "prettyusers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:239
|
#: src/modules/test/test.py:259
|
||||||
msgid "dmview"
|
msgid "dmview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:250
|
#: src/modules/test/test.py:270
|
||||||
msgid "multiview"
|
msgid "multiview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/test/test.py:267
|
#: src/modules/test/test.py:287
|
||||||
msgid "stats-card"
|
msgid "stats-card"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -17,22 +17,22 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: src/tracking/text/cog.py:249
|
#: src/tracking/text/cog.py:254
|
||||||
msgctxt "cmd:configure_message_exp"
|
msgctxt "cmd:configure_message_exp"
|
||||||
msgid "message_exp"
|
msgid "message_exp"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/text/cog.py:252
|
#: src/tracking/text/cog.py:257
|
||||||
msgctxt "cmd:configure_message_exp|desc"
|
msgctxt "cmd:configure_message_exp|desc"
|
||||||
msgid "Configure Message Tracking & Experience"
|
msgid "Configure Message Tracking & Experience"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/text/cog.py:315
|
#: src/tracking/text/cog.py:320
|
||||||
msgctxt "cmd:leo_configure_exp_rates"
|
msgctxt "cmd:leo_configure_exp_rates"
|
||||||
msgid "experience_rates"
|
msgid "experience_rates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/text/cog.py:318
|
#: src/tracking/text/cog.py:323
|
||||||
msgctxt "cmd:leo_configure_exp_rates|desc"
|
msgctxt "cmd:leo_configure_exp_rates|desc"
|
||||||
msgid "Global experience rate configuration"
|
msgid "Global experience rate configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -103,34 +103,34 @@ msgctxt "cmd:page_select|acmpl|error:no_pager"
|
|||||||
msgid "No active pagers in this channel!"
|
msgid "No active pagers in this channel!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/transformers.py:43
|
#: src/utils/transformers.py:45
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "utils:parse_dur|error"
|
msgctxt "utils:parse_dur|error"
|
||||||
msgid "Cannot parse `{value}` as a duration."
|
msgid "Cannot parse `{value}` as a duration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/transformers.py:68
|
#: src/utils/transformers.py:71
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "util:Duration|acmpl|error"
|
msgctxt "util:Duration|acmpl|error"
|
||||||
msgid "Cannot extract duration from \"{partial}\""
|
msgid "Cannot extract duration from \"{partial}\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/lib.py:670
|
#: src/utils/lib.py:678
|
||||||
msgctxt "util:parse_dur|regex:day"
|
msgctxt "util:parse_dur|regex:day"
|
||||||
msgid "(?P<value>\\d+)\\s*(?:(d)|(day))"
|
msgid "(?P<value>\\d+)\\s*(?:(d)|(day))"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/lib.py:677
|
#: src/utils/lib.py:685
|
||||||
msgctxt "util:parse_dur|regex:hour"
|
msgctxt "util:parse_dur|regex:hour"
|
||||||
msgid "(?P<value>\\d+)\\s*(?:(h)|(hour))"
|
msgid "(?P<value>\\d+)\\s*(?:(h)|(hour))"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/lib.py:684
|
#: src/utils/lib.py:692
|
||||||
msgctxt "util:parse_dur|regex:minute"
|
msgctxt "util:parse_dur|regex:minute"
|
||||||
msgid "(?P<value>\\d+)\\s*(?:(m)|(min))"
|
msgid "(?P<value>\\d+)\\s*(?:(m)|(min))"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/utils/lib.py:691
|
#: src/utils/lib.py:699
|
||||||
msgctxt "util:parse_dur|regex:second"
|
msgctxt "util:parse_dur|regex:second"
|
||||||
msgid "(?P<value>\\d+)\\s*(?:(s)|(sec))"
|
msgid "(?P<value>\\d+)\\s*(?:(s)|(sec))"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -17,129 +17,129 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:640
|
#: src/tracking/voice/cog.py:649
|
||||||
msgctxt "cmd:now"
|
msgctxt "cmd:now"
|
||||||
msgid "now"
|
msgid "now"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:643
|
#: src/tracking/voice/cog.py:652
|
||||||
msgctxt "cmd:now|desc"
|
msgctxt "cmd:now|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Describe what you are working on, or see what your friends are working on!"
|
"Describe what you are working on, or see what your friends are working on!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:647
|
#: src/tracking/voice/cog.py:656
|
||||||
msgctxt "cmd:now|param:tag"
|
msgctxt "cmd:now|param:tag"
|
||||||
msgid "tag"
|
msgid "tag"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:648
|
#: src/tracking/voice/cog.py:657
|
||||||
msgctxt "cmd:now|param:user"
|
msgctxt "cmd:now|param:user"
|
||||||
msgid "user"
|
msgid "user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:649
|
#: src/tracking/voice/cog.py:658
|
||||||
msgctxt "cmd:now|param:clear"
|
msgctxt "cmd:now|param:clear"
|
||||||
msgid "clear"
|
msgid "clear"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:654
|
#: src/tracking/voice/cog.py:663
|
||||||
msgctxt "cmd:now|param:tag|desc"
|
msgctxt "cmd:now|param:tag|desc"
|
||||||
msgid "Describe what you are working on in 10 characters or less!"
|
msgid "Describe what you are working on in 10 characters or less!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:658
|
#: src/tracking/voice/cog.py:667
|
||||||
msgctxt "cmd:now|param:user|desc"
|
msgctxt "cmd:now|param:user|desc"
|
||||||
msgid "Check what a friend is working on."
|
msgid "Check what a friend is working on."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:662
|
#: src/tracking/voice/cog.py:671
|
||||||
msgctxt "cmd:now|param:clear|desc"
|
msgctxt "cmd:now|param:clear|desc"
|
||||||
msgid "Unset your activity tag (or the target user's tag, for moderators)."
|
msgid "Unset your activity tag (or the target user's tag, for moderators)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:689
|
#: src/tracking/voice/cog.py:698
|
||||||
msgctxt "cmd:now|target:self|error:target_inactive"
|
msgctxt "cmd:now|target:self|error:target_inactive"
|
||||||
msgid ""
|
msgid ""
|
||||||
"You have no running session! Join a tracked voice channel to start a session."
|
"You have no running session! Join a tracked voice channel to start a session."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:698
|
#: src/tracking/voice/cog.py:707
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:now|target:other|error:target_inactive"
|
msgctxt "cmd:now|target:other|error:target_inactive"
|
||||||
msgid "{mention} has no running session!"
|
msgid "{mention} has no running session!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:713
|
#: src/tracking/voice/cog.py:722
|
||||||
msgctxt "cmd:now|target:self|mode:clear|success|title"
|
msgctxt "cmd:now|target:self|mode:clear|success|title"
|
||||||
msgid "Session Tag Cleared"
|
msgid "Session Tag Cleared"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:717
|
#: src/tracking/voice/cog.py:726
|
||||||
msgctxt "cmd:now|target:self|mode:clear|success|desc"
|
msgctxt "cmd:now|target:self|mode:clear|success|desc"
|
||||||
msgid "Successfully unset your session tag."
|
msgid "Successfully unset your session tag."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:726
|
#: src/tracking/voice/cog.py:735
|
||||||
msgctxt "cmd:now|target:other|mode:clear|error:perms|title"
|
msgctxt "cmd:now|target:other|mode:clear|error:perms|title"
|
||||||
msgid "You can't do that!"
|
msgid "You can't do that!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:730
|
#: src/tracking/voice/cog.py:739
|
||||||
msgctxt "cmd:now|target:other|mode:clear|error:perms|desc"
|
msgctxt "cmd:now|target:other|mode:clear|error:perms|desc"
|
||||||
msgid "You need to be a moderator to set or clear someone else's session tag."
|
msgid "You need to be a moderator to set or clear someone else's session tag."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:740
|
#: src/tracking/voice/cog.py:749
|
||||||
msgctxt "cmd:now|target:other|mode:clear|success|title"
|
msgctxt "cmd:now|target:other|mode:clear|success|title"
|
||||||
msgid "Session Tag Cleared!"
|
msgid "Session Tag Cleared!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:744
|
#: src/tracking/voice/cog.py:753
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:now|target:other|mode:clear|success|desc"
|
msgctxt "cmd:now|target:other|mode:clear|success|desc"
|
||||||
msgid "Cleared {target}'s session tag."
|
msgid "Cleared {target}'s session tag."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:756
|
#: src/tracking/voice/cog.py:765
|
||||||
msgctxt "cmd:now|target:self|mode:set|success|title"
|
msgctxt "cmd:now|target:self|mode:set|success|title"
|
||||||
msgid "Session Tag Set!"
|
msgid "Session Tag Set!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:760
|
#: src/tracking/voice/cog.py:769
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:now|target:self|mode:set|success|desc"
|
msgctxt "cmd:now|target:self|mode:set|success|desc"
|
||||||
msgid "You are now working on `{new_tag}`. Good luck!"
|
msgid "You are now working on `{new_tag}`. Good luck!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:769
|
#: src/tracking/voice/cog.py:778
|
||||||
msgctxt "cmd:now|target:other|mode:set|error:perms|title"
|
msgctxt "cmd:now|target:other|mode:set|error:perms|title"
|
||||||
msgid "You can't do that!"
|
msgid "You can't do that!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:773
|
#: src/tracking/voice/cog.py:782
|
||||||
msgctxt "cmd:now|target:other|mode:set|error:perms|desc"
|
msgctxt "cmd:now|target:other|mode:set|error:perms|desc"
|
||||||
msgid "You need to be a moderator to set or clear someone else's session tag!"
|
msgid "You need to be a moderator to set or clear someone else's session tag!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:783
|
#: src/tracking/voice/cog.py:792
|
||||||
msgctxt "cmd:now|target:other|mode:set|success|title"
|
msgctxt "cmd:now|target:other|mode:set|success|title"
|
||||||
msgid "Session Tag Set!"
|
msgid "Session Tag Set!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:787
|
#: src/tracking/voice/cog.py:796
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:now|target:other|mode:set|success|desc"
|
msgctxt "cmd:now|target:other|mode:set|success|desc"
|
||||||
msgid "Set {target}'s session tag to `{new_tag}`."
|
msgid "Set {target}'s session tag to `{new_tag}`."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:796
|
#: src/tracking/voice/cog.py:805
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:now|target:self|mode:show_with_tag|desc"
|
msgctxt "cmd:now|target:self|mode:show_with_tag|desc"
|
||||||
msgid "You have been working on **`{tag}`** in {channel} since {time}!"
|
msgid "You have been working on **`{tag}`** in {channel} since {time}!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:801
|
#: src/tracking/voice/cog.py:810
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:now|target:self|mode:show_without_tag|desc"
|
msgctxt "cmd:now|target:self|mode:show_without_tag|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -148,7 +148,7 @@ msgid ""
|
|||||||
"Use `/now <tag>` to set what you are working on."
|
"Use `/now <tag>` to set what you are working on."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:808
|
#: src/tracking/voice/cog.py:817
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:now|target:other|mode:show_with_tag|desc"
|
msgctxt "cmd:now|target:other|mode:show_with_tag|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -156,23 +156,23 @@ msgid ""
|
|||||||
"They have been working on **{tag}** since {time}."
|
"They have been working on **{tag}** since {time}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:814
|
#: src/tracking/voice/cog.py:823
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:now|target:other|mode:show_without_tag|desc"
|
msgctxt "cmd:now|target:other|mode:show_without_tag|desc"
|
||||||
msgid "{target} has been working in {channel} since {time}!"
|
msgid "{target} has been working in {channel} since {time}!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:837
|
#: src/tracking/voice/cog.py:846
|
||||||
msgctxt "cmd:configure_voice_rates"
|
msgctxt "cmd:configure_voice_rates"
|
||||||
msgid "voice_rewards"
|
msgid "voice_rewards"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:840
|
#: src/tracking/voice/cog.py:849
|
||||||
msgctxt "cmd:configure_voice_rates|desc"
|
msgctxt "cmd:configure_voice_rates|desc"
|
||||||
msgid "Configure Voice tracking rewards and experience"
|
msgid "Configure Voice tracking rewards and experience"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:897
|
#: src/tracking/voice/cog.py:906
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:configure_voice_tracking|mode:voice|resp:success|desc"
|
msgctxt "cmd:configure_voice_tracking|mode:voice|resp:success|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -181,7 +181,7 @@ msgid ""
|
|||||||
"day."
|
"day."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/tracking/voice/cog.py:908
|
#: src/tracking/voice/cog.py:917
|
||||||
#, possible-python-brace-format
|
#, possible-python-brace-format
|
||||||
msgctxt "cmd:configure_voice_tracking|mode:study|resp:success|desc"
|
msgctxt "cmd:configure_voice_tracking|mode:study|resp:success|desc"
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-08-28 22:43+0300\n"
|
"POT-Creation-Date: 2023-09-13 08:47+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class ConfigCog(LionCog):
|
|||||||
|
|
||||||
@cmds.hybrid_group(
|
@cmds.hybrid_group(
|
||||||
name=_p('group:configure', "configure"),
|
name=_p('group:configure', "configure"),
|
||||||
|
description=_p('group:configure|desc', "View and adjust my configuration options."),
|
||||||
)
|
)
|
||||||
@appcmds.guild_only
|
@appcmds.guild_only
|
||||||
@appcmds.default_permissions(manage_guild=True)
|
@appcmds.default_permissions(manage_guild=True)
|
||||||
|
|||||||
@@ -179,9 +179,6 @@ class CoreData(Registry, name="core"):
|
|||||||
mod_log_channel = Integer()
|
mod_log_channel = Integer()
|
||||||
alert_channel = Integer()
|
alert_channel = Integer()
|
||||||
|
|
||||||
studyban_role = Integer()
|
|
||||||
max_study_bans = Integer()
|
|
||||||
|
|
||||||
min_workout_length = Integer()
|
min_workout_length = Integer()
|
||||||
workout_reward = Integer()
|
workout_reward = Integer()
|
||||||
|
|
||||||
@@ -209,6 +206,8 @@ class CoreData(Registry, name="core"):
|
|||||||
video_studyban = Bool()
|
video_studyban = Bool()
|
||||||
video_grace_period = Integer()
|
video_grace_period = Integer()
|
||||||
|
|
||||||
|
studyban_role = Integer()
|
||||||
|
|
||||||
greeting_channel = Integer()
|
greeting_channel = Integer()
|
||||||
greeting_message = String()
|
greeting_message = String()
|
||||||
returning_message = String()
|
returning_message = String()
|
||||||
|
|||||||
@@ -85,6 +85,8 @@ class LionMember(Timezoned):
|
|||||||
"""
|
"""
|
||||||
if member.display_name != self.data.display_name:
|
if member.display_name != self.data.display_name:
|
||||||
await self.data.update(display_name=member.display_name)
|
await self.data.update(display_name=member.display_name)
|
||||||
|
else:
|
||||||
|
await self.data.refresh()
|
||||||
|
|
||||||
async def fetch_member(self) -> Optional[discord.Member]:
|
async def fetch_member(self) -> Optional[discord.Member]:
|
||||||
"""
|
"""
|
||||||
|
|||||||
2
src/gui
2
src/gui
Submodule src/gui updated: 3952086fb0...b781f7f9f2
@@ -7,10 +7,11 @@ import discord
|
|||||||
from discord.utils import MISSING
|
from discord.utils import MISSING
|
||||||
from discord.ext.commands import Bot, Cog, HybridCommand, HybridCommandError
|
from discord.ext.commands import Bot, Cog, HybridCommand, HybridCommandError
|
||||||
from discord.ext.commands.errors import CommandInvokeError, CheckFailure
|
from discord.ext.commands.errors import CommandInvokeError, CheckFailure
|
||||||
from discord.app_commands.errors import CommandInvokeError as appCommandInvokeError
|
from discord.app_commands.errors import CommandInvokeError as appCommandInvokeError, TransformerError
|
||||||
from aiohttp import ClientSession
|
from aiohttp import ClientSession
|
||||||
|
|
||||||
from data import Database
|
from data import Database
|
||||||
|
from utils.lib import tabulate
|
||||||
|
|
||||||
from .config import Conf
|
from .config import Conf
|
||||||
from .logger import logging_context, log_context, log_action_stack, log_wrap, set_logging_context
|
from .logger import logging_context, log_context, log_action_stack, log_wrap, set_logging_context
|
||||||
@@ -160,6 +161,17 @@ class LionBot(Bot):
|
|||||||
raise original
|
raise original
|
||||||
except HandledException:
|
except HandledException:
|
||||||
pass
|
pass
|
||||||
|
except TransformerError as e:
|
||||||
|
msg = str(e)
|
||||||
|
if msg:
|
||||||
|
try:
|
||||||
|
await ctx.error_reply(msg)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
logger.debug(
|
||||||
|
f"Caught a transformer error: {repr(e)}",
|
||||||
|
extra={'action': 'BotError', 'with_ctx': True}
|
||||||
|
)
|
||||||
except SafeCancellation:
|
except SafeCancellation:
|
||||||
if original.msg:
|
if original.msg:
|
||||||
try:
|
try:
|
||||||
@@ -183,7 +195,7 @@ class LionBot(Bot):
|
|||||||
extra={'action': 'BotError', 'with_ctx': True}
|
extra={'action': 'BotError', 'with_ctx': True}
|
||||||
)
|
)
|
||||||
except discord.HTTPException:
|
except discord.HTTPException:
|
||||||
logger.warning(
|
logger.error(
|
||||||
f"Caught an unhandled 'HTTPException' while executing: {cmd_str}",
|
f"Caught an unhandled 'HTTPException' while executing: {cmd_str}",
|
||||||
exc_info=True,
|
exc_info=True,
|
||||||
extra={'action': 'BotError', 'with_ctx': True}
|
extra={'action': 'BotError', 'with_ctx': True}
|
||||||
@@ -192,7 +204,7 @@ class LionBot(Bot):
|
|||||||
pass
|
pass
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
pass
|
pass
|
||||||
except Exception:
|
except Exception as e:
|
||||||
logger.exception(
|
logger.exception(
|
||||||
f"Caught an unknown CommandInvokeError while executing: {cmd_str}",
|
f"Caught an unknown CommandInvokeError while executing: {cmd_str}",
|
||||||
extra={'action': 'BotError', 'with_ctx': True}
|
extra={'action': 'BotError', 'with_ctx': True}
|
||||||
@@ -201,10 +213,36 @@ class LionBot(Bot):
|
|||||||
error_embed = discord.Embed(title="Something went wrong!")
|
error_embed = discord.Embed(title="Something went wrong!")
|
||||||
error_embed.description = (
|
error_embed.description = (
|
||||||
"An unexpected error occurred while processing your command!\n"
|
"An unexpected error occurred while processing your command!\n"
|
||||||
"Our development team has been notified, and the issue should be fixed soon.\n"
|
"Our development team has been notified, and the issue will be addressed soon.\n"
|
||||||
"If the error persists, please contact our support team and give them the following number: "
|
"If the error persists, or you have any questions, please contact our [support team]({link}) "
|
||||||
f"`{ctx.interaction.id if ctx.interaction else ctx.message.id}`"
|
"and give them the extra details below."
|
||||||
)
|
).format(link=self.config.bot.support_guild)
|
||||||
|
details = {}
|
||||||
|
details['error'] = f"`{repr(e)}`"
|
||||||
|
if ctx.interaction:
|
||||||
|
details['interactionid'] = f"`{ctx.interaction.id}`"
|
||||||
|
if ctx.command:
|
||||||
|
details['cmd'] = f"`{ctx.command.qualified_name}`"
|
||||||
|
if ctx.author:
|
||||||
|
details['author'] = f"`{ctx.author.id}` -- `{ctx.author}`"
|
||||||
|
if ctx.guild:
|
||||||
|
details['guild'] = f"`{ctx.guild.id}` -- `{ctx.guild.name}`"
|
||||||
|
details['my_guild_perms'] = f"`{ctx.guild.me.guild_permissions.value}`"
|
||||||
|
if ctx.author:
|
||||||
|
ownerstr = ' (owner)' if ctx.author == ctx.guild.owner else ''
|
||||||
|
details['author_guild_perms'] = f"`{ctx.author.guild_permissions.value}{ownerstr}`"
|
||||||
|
if ctx.channel.type is discord.enums.ChannelType.private:
|
||||||
|
details['channel'] = "`Direct Message`"
|
||||||
|
elif ctx.channel:
|
||||||
|
details['channel'] = f"`{ctx.channel.id}` -- `{ctx.channel.name}`"
|
||||||
|
details['my_channel_perms'] = f"`{ctx.channel.permissions_for(ctx.guild.me).value}`"
|
||||||
|
if ctx.author:
|
||||||
|
details['author_channel_perms'] = f"`{ctx.channel.permissions_for(ctx.author).value}`"
|
||||||
|
details['shard'] = f"`{self.shardname}`"
|
||||||
|
details['log_stack'] = f"`{log_action_stack.get()}`"
|
||||||
|
|
||||||
|
table = '\n'.join(tabulate(*details.items()))
|
||||||
|
error_embed.add_field(name='Details', value=table)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await ctx.error_reply(embed=error_embed)
|
await ctx.error_reply(embed=error_embed)
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import discord
|
||||||
from discord import Interaction
|
from discord import Interaction
|
||||||
from discord.app_commands import CommandTree
|
from discord.app_commands import CommandTree
|
||||||
from discord.app_commands.errors import AppCommandError, CommandInvokeError
|
from discord.app_commands.errors import AppCommandError, CommandInvokeError
|
||||||
from discord.enums import InteractionType
|
from discord.enums import InteractionType
|
||||||
from discord.app_commands.namespace import Namespace
|
from discord.app_commands.namespace import Namespace
|
||||||
|
|
||||||
from .logger import logging_context, set_logging_context, log_wrap
|
from utils.lib import tabulate
|
||||||
|
|
||||||
|
from .logger import logging_context, set_logging_context, log_wrap, log_action_stack
|
||||||
from .errors import SafeCancellation
|
from .errors import SafeCancellation
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -17,7 +20,7 @@ class LionTree(CommandTree):
|
|||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self._call_tasks = set()
|
self._call_tasks = set()
|
||||||
|
|
||||||
async def on_error(self, interaction, error) -> None:
|
async def on_error(self, interaction: discord.Interaction, error) -> None:
|
||||||
try:
|
try:
|
||||||
if isinstance(error, CommandInvokeError):
|
if isinstance(error, CommandInvokeError):
|
||||||
raise error.original
|
raise error.original
|
||||||
@@ -28,6 +31,51 @@ class LionTree(CommandTree):
|
|||||||
pass
|
pass
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception(f"Unhandled exception in interaction: {interaction}", extra={'action': 'TreeError'})
|
logger.exception(f"Unhandled exception in interaction: {interaction}", extra={'action': 'TreeError'})
|
||||||
|
if not interaction.is_expired():
|
||||||
|
splat = self.bugsplat(interaction, error)
|
||||||
|
try:
|
||||||
|
if interaction.response.is_done():
|
||||||
|
await interaction.followup.send(embed=splat, ephemeral=True)
|
||||||
|
else:
|
||||||
|
await interaction.response.send_message(embed=splat, ephemeral=True)
|
||||||
|
except discord.HTTPException:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def bugsplat(self, interaction, e):
|
||||||
|
error_embed = discord.Embed(title="Something went wrong!", colour=discord.Colour.red())
|
||||||
|
error_embed.description = (
|
||||||
|
"An unexpected error occurred during this interaction!\n"
|
||||||
|
"Our development team has been notified, and the issue will be addressed soon.\n"
|
||||||
|
"If the error persists, or you have any questions, please contact our [support team]({link}) "
|
||||||
|
"and give them the extra details below."
|
||||||
|
).format(link=interaction.client.config.bot.support_guild)
|
||||||
|
details = {}
|
||||||
|
details['error'] = f"`{repr(e)}`"
|
||||||
|
details['interactionid'] = f"`{interaction.id}`"
|
||||||
|
details['interactiontype'] = f"`{interaction.type}`"
|
||||||
|
if interaction.command:
|
||||||
|
details['cmd'] = f"`{interaction.command.qualified_name}`"
|
||||||
|
if interaction.user:
|
||||||
|
details['user'] = f"`{interaction.user.id}` -- `{interaction.user}`"
|
||||||
|
if interaction.guild:
|
||||||
|
details['guild'] = f"`{interaction.guild.id}` -- `{interaction.guild.name}`"
|
||||||
|
details['my_guild_perms'] = f"`{interaction.guild.me.guild_permissions.value}`"
|
||||||
|
if interaction.user:
|
||||||
|
ownerstr = ' (owner)' if interaction.user == interaction.guild.owner else ''
|
||||||
|
details['user_guild_perms'] = f"`{interaction.user.guild_permissions.value}{ownerstr}`"
|
||||||
|
if interaction.channel.type is discord.enums.ChannelType.private:
|
||||||
|
details['channel'] = "`Direct Message`"
|
||||||
|
elif interaction.channel:
|
||||||
|
details['channel'] = f"`{interaction.channel.id}` -- `{interaction.channel.name}`"
|
||||||
|
details['my_channel_perms'] = f"`{interaction.channel.permissions_for(interaction.guild.me).value}`"
|
||||||
|
if interaction.user:
|
||||||
|
details['user_channel_perms'] = f"`{interaction.channel.permissions_for(interaction.user).value}`"
|
||||||
|
details['shard'] = f"`{interaction.client.shardname}`"
|
||||||
|
details['log_stack'] = f"`{log_action_stack.get()}`"
|
||||||
|
|
||||||
|
table = '\n'.join(tabulate(*details.items()))
|
||||||
|
error_embed.add_field(name='Details', value=table)
|
||||||
|
return error_embed
|
||||||
|
|
||||||
def _from_interaction(self, interaction: Interaction) -> None:
|
def _from_interaction(self, interaction: Interaction) -> None:
|
||||||
@log_wrap(context=f"iid: {interaction.id}", isolate=False)
|
@log_wrap(context=f"iid: {interaction.id}", isolate=False)
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ from .config import conf
|
|||||||
from . import sharding
|
from . import sharding
|
||||||
from .context import context
|
from .context import context
|
||||||
from utils.lib import utc_now
|
from utils.lib import utc_now
|
||||||
|
from utils.ratelimits import Bucket, BucketOverFull, BucketFull
|
||||||
|
|
||||||
|
|
||||||
log_logger = logging.getLogger(__name__)
|
log_logger = logging.getLogger(__name__)
|
||||||
@@ -258,7 +259,7 @@ class LocalQueueHandler(QueueHandler):
|
|||||||
|
|
||||||
|
|
||||||
class WebHookHandler(logging.StreamHandler):
|
class WebHookHandler(logging.StreamHandler):
|
||||||
def __init__(self, webhook_url, prefix="", batch=False, loop=None):
|
def __init__(self, webhook_url, prefix="", batch=True, loop=None):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.webhook_url = webhook_url
|
self.webhook_url = webhook_url
|
||||||
self.prefix = prefix
|
self.prefix = prefix
|
||||||
@@ -270,6 +271,12 @@ class WebHookHandler(logging.StreamHandler):
|
|||||||
self.last_batched = None
|
self.last_batched = None
|
||||||
self.waiting = []
|
self.waiting = []
|
||||||
|
|
||||||
|
self.bucket = Bucket(20, 40)
|
||||||
|
self.ignored = 0
|
||||||
|
|
||||||
|
self.session = None
|
||||||
|
self.webhook = None
|
||||||
|
|
||||||
def get_loop(self):
|
def get_loop(self):
|
||||||
if self.loop is None:
|
if self.loop is None:
|
||||||
self.loop = asyncio.new_event_loop()
|
self.loop = asyncio.new_event_loop()
|
||||||
@@ -281,8 +288,14 @@ class WebHookHandler(logging.StreamHandler):
|
|||||||
self.get_loop().call_soon_threadsafe(self._post, record)
|
self.get_loop().call_soon_threadsafe(self._post, record)
|
||||||
|
|
||||||
def _post(self, record):
|
def _post(self, record):
|
||||||
|
if self.session is None:
|
||||||
|
self.setup()
|
||||||
asyncio.create_task(self.post(record))
|
asyncio.create_task(self.post(record))
|
||||||
|
|
||||||
|
def setup(self):
|
||||||
|
self.session = aiohttp.ClientSession()
|
||||||
|
self.webhook = Webhook.from_url(self.webhook_url, session=self.session)
|
||||||
|
|
||||||
async def post(self, record):
|
async def post(self, record):
|
||||||
log_context.set("Webhook Logger")
|
log_context.set("Webhook Logger")
|
||||||
log_action_stack.set(("Logging",))
|
log_action_stack.set(("Logging",))
|
||||||
@@ -314,7 +327,7 @@ class WebHookHandler(logging.StreamHandler):
|
|||||||
else:
|
else:
|
||||||
await self._send(message, as_file=as_file)
|
await self._send(message, as_file=as_file)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
print(ex)
|
print(f"Unexpected error occurred while logging to webhook: {repr(ex)}", file=sys.stderr)
|
||||||
|
|
||||||
async def _schedule_batched(self):
|
async def _schedule_batched(self):
|
||||||
if self.batch_task is not None and not (self.batch_task.done() or self.batch_task.cancelled()):
|
if self.batch_task is not None and not (self.batch_task.done() or self.batch_task.cancelled()):
|
||||||
@@ -327,7 +340,7 @@ class WebHookHandler(logging.StreamHandler):
|
|||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
return
|
return
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
print(ex)
|
print(f"Unexpected error occurred while scheduling batched webhook log: {repr(ex)}", file=sys.stderr)
|
||||||
|
|
||||||
async def _send_batched_now(self):
|
async def _send_batched_now(self):
|
||||||
if self.batch_task is not None and not self.batch_task.done():
|
if self.batch_task is not None and not self.batch_task.done():
|
||||||
@@ -342,18 +355,36 @@ class WebHookHandler(logging.StreamHandler):
|
|||||||
await self._send(batched)
|
await self._send(batched)
|
||||||
|
|
||||||
async def _send(self, message, as_file=False):
|
async def _send(self, message, as_file=False):
|
||||||
async with aiohttp.ClientSession() as session:
|
try:
|
||||||
webhook = Webhook.from_url(self.webhook_url, session=session)
|
self.bucket.request()
|
||||||
if as_file or len(message) > 1900:
|
except BucketOverFull:
|
||||||
with StringIO(message) as fp:
|
# Silently ignore
|
||||||
fp.seek(0)
|
self.ignored += 1
|
||||||
await webhook.send(
|
return
|
||||||
f"{self.prefix}\n`{message.splitlines()[0]}`",
|
except BucketFull:
|
||||||
file=File(fp, filename="logs.md"),
|
logger.warning(
|
||||||
username=log_app.get()
|
f"Live logging webhook {self.webhook.id} going too fast! "
|
||||||
)
|
"Ignoring records until rate slows down."
|
||||||
else:
|
)
|
||||||
await webhook.send(self.prefix + '\n' + message, username=log_app.get())
|
self.ignored += 1
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
if self.ignored > 0:
|
||||||
|
logger.warning(
|
||||||
|
f"{self.ignored} live logging records on webhook {self.webhook.id} skipped, continuing."
|
||||||
|
)
|
||||||
|
self.ignored = 0
|
||||||
|
|
||||||
|
if as_file or len(message) > 1900:
|
||||||
|
with StringIO(message) as fp:
|
||||||
|
fp.seek(0)
|
||||||
|
await self.webhook.send(
|
||||||
|
f"{self.prefix}\n`{message.splitlines()[0]}`",
|
||||||
|
file=File(fp, filename="logs.md"),
|
||||||
|
username=log_app.get()
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
await self.webhook.send(self.prefix + '\n' + message, username=log_app.get())
|
||||||
|
|
||||||
|
|
||||||
handlers = []
|
handlers = []
|
||||||
@@ -362,8 +393,8 @@ if webhook := conf.logging['general_log']:
|
|||||||
handlers.append(handler)
|
handlers.append(handler)
|
||||||
|
|
||||||
if webhook := conf.logging['error_log']:
|
if webhook := conf.logging['error_log']:
|
||||||
handler = WebHookHandler(webhook, prefix=conf.logging['error_prefix'], batch=False)
|
handler = WebHookHandler(webhook, prefix=conf.logging['error_prefix'], batch=True)
|
||||||
handler.setLevel(logging.ERROR)
|
handler.setLevel(logging.WARNING)
|
||||||
handlers.append(handler)
|
handlers.append(handler)
|
||||||
|
|
||||||
if webhook := conf.logging['critical_log']:
|
if webhook := conf.logging['critical_log']:
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ active = [
|
|||||||
'.ranks',
|
'.ranks',
|
||||||
'.reminders',
|
'.reminders',
|
||||||
'.shop',
|
'.shop',
|
||||||
'.tasklist',
|
|
||||||
'.statistics',
|
'.statistics',
|
||||||
'.pomodoro',
|
'.pomodoro',
|
||||||
'.rooms',
|
'.rooms',
|
||||||
|
'.tasklist',
|
||||||
'.rolemenus',
|
'.rolemenus',
|
||||||
'.member_admin',
|
'.member_admin',
|
||||||
'.moderation',
|
'.moderation',
|
||||||
|
|||||||
@@ -381,13 +381,28 @@ class Economy(LionCog):
|
|||||||
if role:
|
if role:
|
||||||
query = MemModel.table.select_where(
|
query = MemModel.table.select_where(
|
||||||
(MemModel.guildid == role.guild.id) & (MemModel.coins != 0)
|
(MemModel.guildid == role.guild.id) & (MemModel.coins != 0)
|
||||||
)
|
).with_no_adapter()
|
||||||
query.order_by('coins', ORDER.DESC)
|
|
||||||
if not role.is_default():
|
if not role.is_default():
|
||||||
# Everyone role is handled differently for data efficiency
|
# Everyone role is handled differently for data efficiency
|
||||||
ids = [target.id for target in targets]
|
ids = [target.id for target in targets]
|
||||||
query = query.where(userid=ids)
|
query = query.where(userid=ids)
|
||||||
rows = await query
|
|
||||||
|
# First get a summary
|
||||||
|
summary = await query.select(
|
||||||
|
_count='COUNT(*)',
|
||||||
|
_coin_total='SUM(coins)',
|
||||||
|
)
|
||||||
|
record = summary[0]
|
||||||
|
count = record['_count']
|
||||||
|
total = record['_coin_total']
|
||||||
|
if count > 0:
|
||||||
|
# Then get the top 1000 members
|
||||||
|
query._columns = ()
|
||||||
|
query.order_by('coins', ORDER.DESC)
|
||||||
|
query.limit(1000)
|
||||||
|
rows = await query.select('userid', 'coins')
|
||||||
|
else:
|
||||||
|
rows = []
|
||||||
|
|
||||||
name = t(_p(
|
name = t(_p(
|
||||||
'cmd:economy_balance|embed:role_lb|author',
|
'cmd:economy_balance|embed:role_lb|author',
|
||||||
@@ -400,7 +415,7 @@ class Economy(LionCog):
|
|||||||
"This server has a total balance of {coin_emoji}**{total}**."
|
"This server has a total balance of {coin_emoji}**{total}**."
|
||||||
)).format(
|
)).format(
|
||||||
coin_emoji=cemoji,
|
coin_emoji=cemoji,
|
||||||
total=sum(row['coins'] for row in rows)
|
total=total
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
header = t(_p(
|
header = t(_p(
|
||||||
@@ -408,9 +423,9 @@ class Economy(LionCog):
|
|||||||
"{role_mention} has `{count}` members with non-zero balance, "
|
"{role_mention} has `{count}` members with non-zero balance, "
|
||||||
"with a total balance of {coin_emoji}**{total}**."
|
"with a total balance of {coin_emoji}**{total}**."
|
||||||
)).format(
|
)).format(
|
||||||
count=len(targets),
|
count=count,
|
||||||
role_mention=role.mention,
|
role_mention=role.mention,
|
||||||
total=sum(row['coins'] for row in rows),
|
total=total,
|
||||||
coin_emoji=cemoji
|
coin_emoji=cemoji
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -476,7 +491,7 @@ class Economy(LionCog):
|
|||||||
else:
|
else:
|
||||||
# If we have a single target, show their current balance, with a short transaction history.
|
# If we have a single target, show their current balance, with a short transaction history.
|
||||||
user = targets[0]
|
user = targets[0]
|
||||||
row = await self.bot.core.data.Member.fetch(ctx.guild.id, user.id)
|
row = await self.bot.core.data.Member.fetch(ctx.guild.id, user.id, cached=False)
|
||||||
|
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
colour=discord.Colour.orange(),
|
colour=discord.Colour.orange(),
|
||||||
@@ -675,7 +690,7 @@ class Economy(LionCog):
|
|||||||
)
|
)
|
||||||
@appcmds.guild_only()
|
@appcmds.guild_only()
|
||||||
async def send_cmd(self, ctx: LionContext,
|
async def send_cmd(self, ctx: LionContext,
|
||||||
target: discord.User | discord.Member,
|
target: discord.Member,
|
||||||
amount: appcmds.Range[int, 1, MAX_COINS],
|
amount: appcmds.Range[int, 1, MAX_COINS],
|
||||||
note: Optional[str] = None):
|
note: Optional[str] = None):
|
||||||
"""
|
"""
|
||||||
@@ -690,17 +705,49 @@ class Economy(LionCog):
|
|||||||
|
|
||||||
t = self.bot.translator.t
|
t = self.bot.translator.t
|
||||||
|
|
||||||
|
error = None
|
||||||
if not ctx.lguild.config.get('allow_transfers').value:
|
if not ctx.lguild.config.get('allow_transfers').value:
|
||||||
await ctx.interaction.response.send_message(
|
error = error_embed(
|
||||||
embed=error_embed(
|
t(_p(
|
||||||
t(_p(
|
'cmd:send|error:not_allowed',
|
||||||
'cmd:send|error:not_allowed',
|
"Sorry, this server has disabled LionCoin transfers!"
|
||||||
"Sorry, this server has disabled LionCoin transfers!"
|
))
|
||||||
))
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
elif target == ctx.author:
|
||||||
|
# Funny response
|
||||||
|
error = discord.Embed(
|
||||||
|
colour=discord.Colour.brand_red(),
|
||||||
|
description=t(_p( # TRANSLATOR NOTE: Easter egg/Funny error, translate as you wish.
|
||||||
|
'cmd:send|error:sending-to-self',
|
||||||
|
"What is this, tax evasion?\n"
|
||||||
|
"(You can not send coins to yourself.)"
|
||||||
|
))
|
||||||
|
)
|
||||||
|
elif target == ctx.guild.me:
|
||||||
|
# Funny response
|
||||||
|
error = discord.Embed(
|
||||||
|
colour=discord.Colour.orange(),
|
||||||
|
description=t(_p( # TRANSLATOR NOTE: Easter egg/Funny error, translate as you wish.
|
||||||
|
'cmd:send|error:sending-to-leo',
|
||||||
|
"I appreciate it, but you need it more than I do!\n"
|
||||||
|
"(You cannot send coins to bots.)"
|
||||||
|
))
|
||||||
|
)
|
||||||
|
elif target.bot:
|
||||||
|
# Funny response
|
||||||
|
error = discord.Embed(
|
||||||
|
colour=discord.Colour.brand_red(),
|
||||||
|
description=t(_p( # TRANSLATOR NOTE: Easter egg/Funny error, translate as you wish.
|
||||||
|
'cmd:send|error:sending-to-bot',
|
||||||
|
"{target} appreciates the gesture, but said they don't have any use for {coin}.\n"
|
||||||
|
"(You cannot send coins to bots.)"
|
||||||
|
)).format(target=target.mention, coin=self.bot.config.emojis.coin)
|
||||||
|
)
|
||||||
|
if error is not None:
|
||||||
|
await ctx.interaction.response.send_message(embed=error, ephemeral=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Ensure the target member exists
|
||||||
Member = self.bot.core.data.Member
|
Member = self.bot.core.data.Member
|
||||||
target_lion = await self.bot.core.lions.fetch_member(ctx.guild.id, target.id)
|
target_lion = await self.bot.core.lions.fetch_member(ctx.guild.id, target.id)
|
||||||
|
|
||||||
@@ -778,7 +825,7 @@ class Economy(LionCog):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
if failed:
|
if failed:
|
||||||
embed.description = t(_p(
|
embed.description += '\n' + t(_p(
|
||||||
'cmd:send|embed:ack|desc|error:unreachable',
|
'cmd:send|embed:ack|desc|error:unreachable',
|
||||||
"Unfortunately, I was not able to message the recipient. Perhaps they have me blocked?"
|
"Unfortunately, I was not able to message the recipient. Perhaps they have me blocked?"
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ from core.data import CoreData
|
|||||||
from utils.data import TemporaryTable, SAFECOINS
|
from utils.data import TemporaryTable, SAFECOINS
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: Add Rank transaction type and tables.
|
||||||
class TransactionType(Enum):
|
class TransactionType(Enum):
|
||||||
"""
|
"""
|
||||||
Schema
|
Schema
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ cmd_map = {
|
|||||||
"cmd_send": "send",
|
"cmd_send": "send",
|
||||||
"cmd_shop": "shop open",
|
"cmd_shop": "shop open",
|
||||||
"cmd_room": "room rent",
|
"cmd_room": "room rent",
|
||||||
"cmd_reminders": "remindme in",
|
"cmd_reminders": "reminders",
|
||||||
"cmd_tasklist": "tasklist",
|
"cmd_tasklist": "tasklist",
|
||||||
"cmd_timers": "timers list",
|
"cmd_timers": "timers",
|
||||||
"cmd_schedule": "schedule",
|
"cmd_schedule": "schedule",
|
||||||
"cmd_dashboard": "dashboard"
|
"cmd_dashboard": "dashboard"
|
||||||
}
|
}
|
||||||
@@ -79,8 +79,8 @@ admin_extra = _p(
|
|||||||
|
|
||||||
Other relevant commands for guild configuration below:
|
Other relevant commands for guild configuration below:
|
||||||
`/editshop`: Add/Edit/Remove colour roles from the {coin} shop.
|
`/editshop`: Add/Edit/Remove colour roles from the {coin} shop.
|
||||||
`/ranks`: Add/Edit/Remove activity ranks.
|
`/ranks`: Add/Edit/Refresh/Remove activity ranks.
|
||||||
`/timer admin`: Add/Edit/Remove Pomodoro timers in voice channels.
|
`/pomodoro`: Add/Edit/Remove Pomodoro timers in voice channels.
|
||||||
`/rolemenus`: Allow members to equip roles from customisable messages.
|
`/rolemenus`: Allow members to equip roles from customisable messages.
|
||||||
`/economy balance`: Display and modify LionCoin balance for members and roles.
|
`/economy balance`: Display and modify LionCoin balance for members and roles.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ class ModerationSettings(SettingGroup):
|
|||||||
_long_desc = _p(
|
_long_desc = _p(
|
||||||
'guildset:mod_role|long_desc',
|
'guildset:mod_role|long_desc',
|
||||||
"Members with the set role will be able to access my configuration panels, "
|
"Members with the set role will be able to access my configuration panels, "
|
||||||
"and perform some moderation tasks, such us setting up pomodoro timers. "
|
"and perform some moderation tasks, such as setting up pomodoro timers. "
|
||||||
"Moderators cannot reconfigure most bot configuration, "
|
"Moderators cannot reconfigure most bot configuration, "
|
||||||
"or perform operations they do not already have permission for in Discord."
|
"or perform operations they do not already have permission for in Discord."
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ from .settings import TimerSettings
|
|||||||
from .settingui import TimerConfigUI
|
from .settingui import TimerConfigUI
|
||||||
from .timer import Timer
|
from .timer import Timer
|
||||||
from .options import TimerOptions
|
from .options import TimerOptions
|
||||||
from .ui import TimerStatusUI
|
|
||||||
from .ui.config import TimerOptionsUI
|
from .ui.config import TimerOptionsUI
|
||||||
|
|
||||||
_p = babel._p
|
_p = babel._p
|
||||||
@@ -317,29 +316,24 @@ class TimerCog(LionCog):
|
|||||||
await timer.destroy(**kwargs)
|
await timer.destroy(**kwargs)
|
||||||
|
|
||||||
# ----- Timer Commands -----
|
# ----- Timer Commands -----
|
||||||
@cmds.hybrid_group(
|
|
||||||
name=_p('cmd:pomodoro', "timers"),
|
|
||||||
description=_p('cmd:pomodoro|desc', "Base group for all pomodoro timer commands.")
|
|
||||||
)
|
|
||||||
@cmds.guild_only()
|
|
||||||
async def pomodoro_group(self, ctx: LionContext):
|
|
||||||
...
|
|
||||||
|
|
||||||
# -- User Display Commands --
|
# -- User Display Commands --
|
||||||
@pomodoro_group.command(
|
@cmds.hybrid_command(
|
||||||
name=_p('cmd:pomodoro_status', "show"),
|
name=_p('cmd:timer', "timer"),
|
||||||
description=_p('cmd:pomodoro_status|desc', "Display the status of a single pomodoro timer.")
|
description=_p('cmd:timer|desc', "Show your current (or selected) pomodoro timer.")
|
||||||
)
|
)
|
||||||
@appcmds.rename(
|
@appcmds.rename(
|
||||||
channel=_p('cmd:pomodoro_status|param:channel', "timer_channel")
|
channel=_p('cmd:timer|param:channel', "timer_channel")
|
||||||
)
|
)
|
||||||
@appcmds.describe(
|
@appcmds.describe(
|
||||||
channel=_p(
|
channel=_p(
|
||||||
'cmd:pomodoro_status|param:channel|desc',
|
'cmd:timer|param:channel|desc',
|
||||||
"The channel for which you want to view the timer."
|
"Select a timer to display (by selecting the timer voice channel)"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
async def cmd_pomodoro_status(self, ctx: LionContext, channel: discord.VoiceChannel):
|
@cmds.guild_only()
|
||||||
|
async def cmd_timer(self, ctx: LionContext,
|
||||||
|
channel: Optional[discord.VoiceChannel] = None):
|
||||||
t = self.bot.translator.t
|
t = self.bot.translator.t
|
||||||
|
|
||||||
if not ctx.guild:
|
if not ctx.guild:
|
||||||
@@ -347,27 +341,63 @@ class TimerCog(LionCog):
|
|||||||
if not ctx.interaction:
|
if not ctx.interaction:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Check if a timer exists in the given channel
|
timers: list[Timer] = list(self.get_guild_timers(ctx.guild.id).values())
|
||||||
timer = self.get_channel_timer(channel.id)
|
error: Optional[discord.Embed] = None
|
||||||
if timer is None:
|
|
||||||
embed = discord.Embed(
|
if not timers:
|
||||||
|
# Guild has no timers
|
||||||
|
error = discord.Embed(
|
||||||
colour=discord.Colour.brand_red(),
|
colour=discord.Colour.brand_red(),
|
||||||
description=t(_p(
|
description=t(_p(
|
||||||
'cmd:pomodoro_status|error:no_timer',
|
'cmd:timer|error:no_timers|desc',
|
||||||
"The channel {channel} does not have a timer set up!"
|
"**This server has no timers set up!**\n"
|
||||||
)).format(channel=channel.mention)
|
"Ask an admin to set up and configure a timer with {create_cmd} first, "
|
||||||
|
"or rent a private room with {room_cmd} and create one yourself!"
|
||||||
|
)).format(create_cmd=self.bot.core.mention_cmd('pomodoro create'),
|
||||||
|
room_cmd=self.bot.core.mention_cmd('rooms rent'))
|
||||||
)
|
)
|
||||||
await ctx.reply(embed=embed, ephemeral=True)
|
elif channel is None:
|
||||||
else:
|
if ctx.author.voice and ctx.author.voice.channel:
|
||||||
# Display the timer status ephemerally
|
channel = ctx.author.voice.channel
|
||||||
status = await timer.current_status(with_notify=False, with_warnings=False)
|
else:
|
||||||
await ctx.reply(**status.send_args, ephemeral=True)
|
error = discord.Embed(
|
||||||
|
colour=discord.Colour.brand_red(),
|
||||||
|
description=t(_p(
|
||||||
|
'cmd:timer|error:no_channel|desc',
|
||||||
|
"**I don't know what timer to show you.**\n"
|
||||||
|
"No channel selected and you are not in a voice channel! "
|
||||||
|
"Use {timers_cmd} to list the available timers in this server."
|
||||||
|
)).format(timers_cmd=self.bot.core.mention_cmd('timers'))
|
||||||
|
)
|
||||||
|
|
||||||
@pomodoro_group.command(
|
if channel is not None:
|
||||||
name=_p('cmd:pomodoro_list', "list"),
|
timer = self.get_channel_timer(channel.id)
|
||||||
description=_p('cmd:pomodoro_list|desc', "List the available pomodoro timers.")
|
if timer is None:
|
||||||
|
error = discord.Embed(
|
||||||
|
colour=discord.Colour.brand_red(),
|
||||||
|
description=t(_p(
|
||||||
|
'cmd:timer|error:no_timer_in_channel',
|
||||||
|
"The channel {channel} is not a pomodoro timer room!\n"
|
||||||
|
"Use {timers_cmd} to list the available timers in this server."
|
||||||
|
)).format(
|
||||||
|
channel=channel.mention,
|
||||||
|
timers_cmd=self.bot.core.mention_cmd('timers')
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
# Display the timer status ephemerally
|
||||||
|
status = await timer.current_status(with_notify=False, with_warnings=False)
|
||||||
|
await ctx.reply(**status.send_args, ephemeral=True)
|
||||||
|
|
||||||
|
if error is not None:
|
||||||
|
await ctx.reply(embed=error, ephemeral=True)
|
||||||
|
|
||||||
|
@cmds.hybrid_command(
|
||||||
|
name=_p('cmd:timers', "timers"),
|
||||||
|
description=_p('cmd:timers|desc', "List the available pomodoro timer rooms.")
|
||||||
)
|
)
|
||||||
async def cmd_pomodoro_list(self, ctx: LionContext):
|
@cmds.guild_only()
|
||||||
|
async def cmd_timers(self, ctx: LionContext):
|
||||||
t = self.bot.translator.t
|
t = self.bot.translator.t
|
||||||
|
|
||||||
if not ctx.guild:
|
if not ctx.guild:
|
||||||
@@ -376,6 +406,8 @@ class TimerCog(LionCog):
|
|||||||
return
|
return
|
||||||
|
|
||||||
timers = list(self.get_guild_timers(ctx.guild.id).values())
|
timers = list(self.get_guild_timers(ctx.guild.id).values())
|
||||||
|
|
||||||
|
# Extra filter here to exclude owned timers, but include ones the author is a member of
|
||||||
visible_timers = [
|
visible_timers = [
|
||||||
timer for timer in timers
|
timer for timer in timers
|
||||||
if timer.channel and timer.channel.permissions_for(ctx.author).connect
|
if timer.channel and timer.channel.permissions_for(ctx.author).connect
|
||||||
@@ -383,26 +415,29 @@ class TimerCog(LionCog):
|
|||||||
]
|
]
|
||||||
|
|
||||||
if not timers:
|
if not timers:
|
||||||
# No timers in this guild!
|
# No timers in the guild
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
colour=discord.Colour.brand_red(),
|
colour=discord.Colour.brand_red(),
|
||||||
description=t(_p(
|
description=t(_p(
|
||||||
'cmd:pomodoro_list|error:no_timers',
|
'cmd:timer|error:no_timers|desc',
|
||||||
"No timers have been setup in this server!\n"
|
"**This server has no timers set up!**\n"
|
||||||
"You can ask an admin to create one with {command}, "
|
"Ask an admin to set up and configure a timer with {create_cmd} first, "
|
||||||
"or rent a private room and create one yourself!"
|
"or rent a private room with {room_cmd} and create one yourself!"
|
||||||
)).format(command='`/pomodoro admin create`')
|
)).format(create_cmd=self.bot.core.mention_cmd('pomodoro create'),
|
||||||
|
room_cmd=self.bot.core.mention_cmd('rooms rent'))
|
||||||
)
|
)
|
||||||
# TODO: Update command mention when we have command mentions
|
|
||||||
await ctx.reply(embed=embed, ephemeral=True)
|
await ctx.reply(embed=embed, ephemeral=True)
|
||||||
elif not visible_timers:
|
elif not visible_timers:
|
||||||
# Timers exist, but the member can't see any
|
# Timers exist, but the member can't see any
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
colour=discord.Colour.brand_red(),
|
colour=discord.Colour.brand_red(),
|
||||||
description=t(_p(
|
description=t(_p(
|
||||||
'cmd:pomodoro_list|error:no_visible_timers',
|
'cmd:timer|error:no_visible_timers|desc',
|
||||||
"There are no timers you can join in this server!"
|
"**There are no available pomodoro timers!**\n"
|
||||||
))
|
"Ask an admin to set up a new timer with {create_cmd}, "
|
||||||
|
"or rent a private room with {room_cmd} and create one yourself!"
|
||||||
|
)).format(create_cmd=self.bot.core.mention_cmd('pomodoro create'),
|
||||||
|
room_cmd=self.bot.core.mention_cmd('rooms rent'))
|
||||||
)
|
)
|
||||||
await ctx.reply(embed=embed, ephemeral=True)
|
await ctx.reply(embed=embed, ephemeral=True)
|
||||||
else:
|
else:
|
||||||
@@ -410,8 +445,8 @@ class TimerCog(LionCog):
|
|||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
colour=discord.Colour.orange(),
|
colour=discord.Colour.orange(),
|
||||||
title=t(_p(
|
title=t(_p(
|
||||||
'cmd:pomodoro_list|embed:timer_list|title',
|
'cmd:timers|embed:timer_list|title',
|
||||||
"Pomodoro Timers in **{guild}**"
|
"Pomodoro Timer Rooms in **{guild}**"
|
||||||
)).format(guild=ctx.guild.name),
|
)).format(guild=ctx.guild.name),
|
||||||
)
|
)
|
||||||
for timer in visible_timers:
|
for timer in visible_timers:
|
||||||
@@ -419,25 +454,26 @@ class TimerCog(LionCog):
|
|||||||
if stage is None:
|
if stage is None:
|
||||||
if timer.auto_restart:
|
if timer.auto_restart:
|
||||||
lazy_status = _p(
|
lazy_status = _p(
|
||||||
'cmd:pomodoro_list|status:stopped_auto',
|
'cmd:timers|status:stopped_auto',
|
||||||
"`{pattern}` timer is stopped with no members!\nJoin {channel} to restart it."
|
"`{pattern}` timer is stopped with no members!\n"
|
||||||
|
"Join {channel} to restart it."
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
lazy_status = _p(
|
lazy_status = _p(
|
||||||
'cmd:pomodoro_list|status:stopped_manual',
|
'cmd:timers|status:stopped_manual',
|
||||||
"`{pattern}` timer is stopped with `{members}` members!\n"
|
"`{pattern}` timer is stopped with `{members}` members!\n"
|
||||||
"Join {channel} and press `Start` to start it!"
|
"Join {channel} and press `Start` to start it!"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
if stage.focused:
|
if stage.focused:
|
||||||
lazy_status = _p(
|
lazy_status = _p(
|
||||||
'cmd:pomodoro_list|status:running_focus',
|
'cmd:timers|status:running_focus',
|
||||||
"`{pattern}` timer is running with `{members}` members!\n"
|
"`{pattern}` timer is running with `{members}` members!\n"
|
||||||
"Currently **focusing**, with break starting {timestamp}"
|
"Currently **focusing**, with break starting {timestamp}"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
lazy_status = _p(
|
lazy_status = _p(
|
||||||
'cmd:pomodoro_list|status:running_break',
|
'cmd:timers|status:running_break',
|
||||||
"`{pattern}` timer is running with `{members}` members!\n"
|
"`{pattern}` timer is running with `{members}` members!\n"
|
||||||
"Currently **resting**, with focus starting {timestamp}"
|
"Currently **resting**, with focus starting {timestamp}"
|
||||||
)
|
)
|
||||||
@@ -451,18 +487,19 @@ class TimerCog(LionCog):
|
|||||||
await ctx.reply(embed=embed, ephemeral=False)
|
await ctx.reply(embed=embed, ephemeral=False)
|
||||||
|
|
||||||
# -- Admin Commands --
|
# -- Admin Commands --
|
||||||
@pomodoro_group.group(
|
@cmds.hybrid_group(
|
||||||
name=_p('cmd:pomodoro_admin', "admin"),
|
name=_p('cmd:pomodoro', "pomodoro"),
|
||||||
desc=_p('cmd:pomodoro_admin|desc', "Command group for pomodoro admin controls.")
|
description=_p('cmd:pomodoro|desc', "Create and configure pomodoro timer rooms.")
|
||||||
)
|
)
|
||||||
async def pomodoro_admin_group(self, ctx: LionContext):
|
@cmds.guild_only()
|
||||||
|
async def pomodoro_group(self, ctx: LionContext):
|
||||||
...
|
...
|
||||||
|
|
||||||
@pomodoro_admin_group.command(
|
@pomodoro_group.command(
|
||||||
name=_p('cmd:pomodoro_create', "create"),
|
name=_p('cmd:pomodoro_create', "create"),
|
||||||
description=_p(
|
description=_p(
|
||||||
'cmd:pomodoro_create|desc',
|
'cmd:pomodoro_create|desc',
|
||||||
"Create a new Pomodoro timer. Requires admin permissions."
|
"Create a new Pomodoro timer. Requires manage channel permissions."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@appcmds.rename(
|
@appcmds.rename(
|
||||||
@@ -495,17 +532,15 @@ class TimerCog(LionCog):
|
|||||||
if not ctx.interaction:
|
if not ctx.interaction:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Check permissions
|
# Get private room if applicable
|
||||||
if not ctx.author.guild_permissions.administrator:
|
room_cog = self.bot.get_cog('RoomCog')
|
||||||
embed = discord.Embed(
|
if room_cog is None:
|
||||||
colour=discord.Colour.brand_red(),
|
logger.warning("Running pomodoro create without private room cog loaded!")
|
||||||
description=t(_p(
|
private_room = None
|
||||||
'cmd:pomodoro_create|error:insufficient_perms',
|
else:
|
||||||
"Only server administrators can create timers!"
|
rooms = room_cog.get_rooms(ctx.guild.id, ctx.author.id)
|
||||||
))
|
cid = next((cid for cid, room in rooms.items() if room.data.ownerid == ctx.author.id), None)
|
||||||
)
|
private_room = ctx.guild.get_channel(cid) if cid is not None else None
|
||||||
await ctx.reply(embed=embed, ephemeral=True)
|
|
||||||
return
|
|
||||||
|
|
||||||
# If a voice channel was not given, attempt to resolve it or make one
|
# If a voice channel was not given, attempt to resolve it or make one
|
||||||
if channel is None:
|
if channel is None:
|
||||||
@@ -514,112 +549,155 @@ class TimerCog(LionCog):
|
|||||||
channel = ctx.channel
|
channel = ctx.channel
|
||||||
elif ctx.author.voice and ctx.author.voice.channel:
|
elif ctx.author.voice and ctx.author.voice.channel:
|
||||||
channel = ctx.author.voice.channel
|
channel = ctx.author.voice.channel
|
||||||
|
elif not ctx.author.guild_permissions.manage_channels:
|
||||||
|
embed = discord.Embed(
|
||||||
|
colour=discord.Colour.brand_red(),
|
||||||
|
title=t(_p(
|
||||||
|
'cmd:pomodoro_create|new_channel|error:your_insufficient_perms|title',
|
||||||
|
"Could not create pomodoro voice channel!"
|
||||||
|
)),
|
||||||
|
description=t(_p(
|
||||||
|
'cmd:pomodoro_create|new_channel|error:your_insufficient_perms',
|
||||||
|
"No `timer_channel` was provided, and you lack the 'Manage Channels` permission "
|
||||||
|
"required to create a new timer room!"
|
||||||
|
))
|
||||||
|
)
|
||||||
|
await ctx.reply(embed=embed, ephemeral=True)
|
||||||
|
elif not ctx.guild.me.guild_permissions.manage_channels:
|
||||||
|
# Error
|
||||||
|
embed = discord.Embed(
|
||||||
|
colour=discord.Colour.brand_red(),
|
||||||
|
title=t(_p(
|
||||||
|
'cmd:pomodoro_create|new_channel|error:my_insufficient_perms|title',
|
||||||
|
"Could not create pomodoro voice channel!"
|
||||||
|
)),
|
||||||
|
description=t(_p(
|
||||||
|
'cmd:pomodoro_create|new_channel|error:my_insufficient_perms|desc',
|
||||||
|
"No `timer_channel` was provided, and I lack the 'Manage Channels' permission "
|
||||||
|
"required to create a new voice channel."
|
||||||
|
))
|
||||||
|
)
|
||||||
|
await ctx.reply(embed=embed, ephemeral=True)
|
||||||
else:
|
else:
|
||||||
# Attempt to create new channel in current category
|
# Attempt to create new channel in current category
|
||||||
if ctx.guild.me.guild_permissions.manage_channels:
|
try:
|
||||||
try:
|
channel = await ctx.guild.create_voice_channel(
|
||||||
channel = await ctx.guild.create_voice_channel(
|
name=name or t(_p(
|
||||||
name=name or "Timer",
|
'cmd:pomodoro_create|new_channel|default_name',
|
||||||
reason="Creating Pomodoro Voice Channel",
|
"Timer"
|
||||||
category=ctx.channel.category
|
)),
|
||||||
)
|
reason=t(_p(
|
||||||
except discord.HTTPException:
|
'cmd:pomodoro_create|new_channel|audit_reason',
|
||||||
embed = discord.Embed(
|
"Creating Pomodoro Voice Channel"
|
||||||
colour=discord.Colour.brand_red(),
|
)),
|
||||||
title=t(_p(
|
category=ctx.channel.category
|
||||||
'cmd:pomodoro_create|error:channel_create_failed|title',
|
)
|
||||||
"Could not create pomodoro voice channel!"
|
except discord.HTTPException:
|
||||||
)),
|
|
||||||
description=t(_p(
|
|
||||||
'cmd:pomodoro_create|error:channel_create|desc',
|
|
||||||
"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."
|
|
||||||
))
|
|
||||||
)
|
|
||||||
await ctx.reply(embed=embed, ephemeral=True)
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
# Error
|
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
colour=discord.Colour.brand_red(),
|
colour=discord.Colour.brand_red(),
|
||||||
title=t(_p(
|
title=t(_p(
|
||||||
'cmd:pomodoro_create|error:channel_create_permissions|title',
|
'cmd:pomodoro_create|new_channel|error:channel_create_failed|title',
|
||||||
"Could not create pomodoro voice channel!"
|
"Could not create pomodoro voice channel!"
|
||||||
)),
|
)),
|
||||||
description=t(_p(
|
description=t(_p(
|
||||||
'cmd:pomodoro_create|error:channel_create_permissions|desc',
|
'cmd:pomodoro_create|new_channel|error:channel_create_failed|desc',
|
||||||
"No `timer_channel` was provided, and I lack the `MANAGE_CHANNELS` permission "
|
"Failed to create a new pomodoro voice channel due to an unknown "
|
||||||
"needed to create a new voice channel."
|
"Discord communication error. "
|
||||||
|
"Please try creating the channel manually and pass it to the "
|
||||||
|
"`timer_channel` argument of this command."
|
||||||
))
|
))
|
||||||
)
|
)
|
||||||
await ctx.reply(embed=embed, ephemeral=True)
|
await ctx.reply(embed=embed, ephemeral=True)
|
||||||
return
|
|
||||||
|
|
||||||
# At this point, we have a voice channel
|
if not channel:
|
||||||
# Make sure a timer does not already exist in the channel
|
# Already handled the creation error
|
||||||
if (self.get_channel_timer(channel.id)) is not None:
|
pass
|
||||||
|
elif (self.get_channel_timer(channel.id)) is not None:
|
||||||
|
# A timer already exists in the resolved channel
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
colour=discord.Colour.brand_red(),
|
colour=discord.Colour.brand_red(),
|
||||||
description=t(_p(
|
description=t(_p(
|
||||||
'cmd:pomodoro_create|error:timer_exists',
|
'cmd:pomodoro_create|add_timer|error:timer_exists',
|
||||||
"A timer already exists in {channel}! Use `/pomodoro admin edit` to modify it."
|
"A timer already exists in {channel}! "
|
||||||
)).format(channel=channel.mention)
|
"Reconfigure it with {edit_cmd}."
|
||||||
|
)).format(
|
||||||
|
channel=channel.mention,
|
||||||
|
edit_cmd=self.bot.core.mention_cmd('pomodoro edit')
|
||||||
|
)
|
||||||
)
|
)
|
||||||
await ctx.reply(embed=embed, ephemeral=True)
|
await ctx.reply(embed=embed, ephemeral=True)
|
||||||
return
|
elif not channel.permissions_for(ctx.author).manage_channels:
|
||||||
|
# Note that this takes care of private room owners as well
|
||||||
|
embed = discord.Embed(
|
||||||
|
colour=discord.Colour.brand_red(),
|
||||||
|
description=t(_p(
|
||||||
|
'cmd:pomodoro_create|add_timer|error:your_insufficient_perms',
|
||||||
|
"You must have the 'Manage Channel' permission in {channel} "
|
||||||
|
"in order to add a timer there!"
|
||||||
|
))
|
||||||
|
)
|
||||||
|
await ctx.reply(embed=embed, ephemeral=True)
|
||||||
|
else:
|
||||||
|
# Finally, we are sure they can create a timer here
|
||||||
|
# Build the creation arguments from the rest of the provided args
|
||||||
|
provided = {
|
||||||
|
'focus_length': focus_length * 60,
|
||||||
|
'break_length': break_length * 60,
|
||||||
|
'inactivity_threshold': inactivity_threshold,
|
||||||
|
'voice_alerts': voice_alerts,
|
||||||
|
'name': name or channel.name,
|
||||||
|
'channel_name': channel_name or None,
|
||||||
|
}
|
||||||
|
create_args = {'channelid': channel.id, 'guildid': channel.guild.id}
|
||||||
|
|
||||||
# Build the creation arguments from the rest of the provided args
|
owned = (private_room and (channel == private_room))
|
||||||
provided = {
|
if owned:
|
||||||
'focus_length': focus_length * 60,
|
provided['manager_role'] = manager_role or ctx.guild.default_role
|
||||||
'break_length': break_length * 60,
|
create_args['notification_channelid'] = channel.id
|
||||||
'notification_channel': notification_channel,
|
create_args['ownerid'] = ctx.author.id
|
||||||
'inactivity_threshold': inactivity_threshold,
|
else:
|
||||||
'manager_role': manager_role,
|
provided['notification_channel'] = notification_channel
|
||||||
'voice_alerts': voice_alerts,
|
provided['manager_role'] = manager_role
|
||||||
'name': name or channel.name,
|
|
||||||
'channel_name': channel_name or None,
|
|
||||||
}
|
|
||||||
|
|
||||||
create_args = {'channelid': channel.id, 'guildid': channel.guild.id}
|
for param, value in provided.items():
|
||||||
for param, value in provided.items():
|
if value is not None:
|
||||||
if value is not None:
|
setting, _ = _param_options[param]
|
||||||
setting, _ = _param_options[param]
|
create_args[setting._column] = setting._data_from_value(channel.id, value)
|
||||||
create_args[setting._column] = setting._data_from_value(channel.id, value)
|
|
||||||
|
|
||||||
# Permission checks and input checking done
|
# Permission checks and input checking done
|
||||||
await ctx.interaction.response.defer(thinking=True)
|
await ctx.interaction.response.defer(thinking=True)
|
||||||
|
|
||||||
# Create timer
|
# Create timer
|
||||||
timer = await self.create_timer(**create_args)
|
timer = await self.create_timer(**create_args)
|
||||||
|
|
||||||
# Start timer
|
# Start timer
|
||||||
await timer.start()
|
await timer.start()
|
||||||
|
|
||||||
# Ack with a config UI
|
# Ack with a config UI
|
||||||
ui = TimerOptionsUI(self.bot, timer, TimerRole.ADMIN, callerid=ctx.author.id)
|
ui = TimerOptionsUI(
|
||||||
await ui.run(
|
self.bot, timer, TimerRole.ADMIN if not owned else TimerRole.OWNER, callerid=ctx.author.id
|
||||||
ctx.interaction,
|
)
|
||||||
content=t(_p(
|
await ui.run(
|
||||||
'cmd:pomodoro_create|response:success|content',
|
ctx.interaction,
|
||||||
"Timer created successfully! Use the panel below to reconfigure."
|
content=t(_p(
|
||||||
))
|
'cmd:pomodoro_create|response:success|content',
|
||||||
)
|
"Timer created successfully! Use the panel below to reconfigure."
|
||||||
await ui.wait()
|
))
|
||||||
|
)
|
||||||
|
await ui.wait()
|
||||||
|
|
||||||
@pomodoro_admin_group.command(
|
@pomodoro_group.command(
|
||||||
name=_p('cmd:pomodoro_destroy', "destroy"),
|
name=_p('cmd:pomodoro_destroy', "destroy"),
|
||||||
description=_p(
|
description=_p(
|
||||||
'cmd:pomodoro_destroy|desc',
|
'cmd:pomodoro_destroy|desc',
|
||||||
"Delete a pomodoro timer from a voice channel. Requires admin permissions."
|
"Remove a pomodoro timer from a voice channel."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@appcmds.rename(
|
@appcmds.rename(
|
||||||
channel=_p('cmd:pomodoro_destroy|param:channel', "timer_channel"),
|
channel=_p('cmd:pomodoro_destroy|param:channel', "timer_channel"),
|
||||||
)
|
)
|
||||||
@appcmds.describe(
|
@appcmds.describe(
|
||||||
channel=_p('cmd:pomodoro_destroy|param:channel', "Channel with the timer to delete."),
|
channel=_p('cmd:pomodoro_destroy|param:channel', "Select a timer voice channel to remove the timer from."),
|
||||||
)
|
)
|
||||||
async def cmd_pomodoro_delete(self, ctx: LionContext, channel: discord.VoiceChannel):
|
async def cmd_pomodoro_delete(self, ctx: LionContext, channel: discord.VoiceChannel):
|
||||||
t = self.bot.translator.t
|
t = self.bot.translator.t
|
||||||
@@ -644,46 +722,42 @@ class TimerCog(LionCog):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Check the user has sufficient permissions to delete the timer
|
# Check the user has sufficient permissions to delete the timer
|
||||||
# TODO: Should we drop the admin requirement down to manage channel?
|
|
||||||
timer_role = timer.get_member_role(ctx.author)
|
timer_role = timer.get_member_role(ctx.author)
|
||||||
if timer.owned:
|
if timer.owned and timer_role < TimerRole.OWNER:
|
||||||
if timer_role < TimerRole.OWNER:
|
embed = discord.Embed(
|
||||||
embed = discord.Embed(
|
colour=discord.Colour.brand_red(),
|
||||||
colour=discord.Colour.brand_red(),
|
description=t(_p(
|
||||||
description=t(_p(
|
'cmd:pomodoro_destroy|error:insufficient_perms|owned',
|
||||||
'cmd:pomodoro_destroy|error:insufficient_perms|owned',
|
"You need to be an administrator or own this channel to remove this timer!"
|
||||||
"You need to be an administrator or own this channel to remove this timer!"
|
))
|
||||||
))
|
)
|
||||||
)
|
await ctx.interaction.response.send_message(embed=embed, ephemeral=True)
|
||||||
await ctx.interaction.response.send_message(embed=embed, ephemeral=True)
|
elif timer_role is not TimerRole.ADMIN and not channel.permissions_for(ctx.author).manage_channels:
|
||||||
return
|
|
||||||
elif timer_role is not TimerRole.ADMIN:
|
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
colour=discord.Colour.brand_red(),
|
colour=discord.Colour.brand_red(),
|
||||||
description=t(_p(
|
description=t(_p(
|
||||||
'cmd:pomodoro_destroy|error:insufficient_perms|notowned',
|
'cmd:pomodoro_destroy|error:insufficient_perms|notowned',
|
||||||
"You need to be a server administrator to remove this timer!"
|
"You need to have the `Manage Channels` permission in {channel} to remove this timer!"
|
||||||
))
|
)).format(channel=channel.mention)
|
||||||
)
|
)
|
||||||
await ctx.interaction.response.send_message(embed=embed, ephemeral=True)
|
await ctx.interaction.response.send_message(embed=embed, ephemeral=True)
|
||||||
return
|
else:
|
||||||
|
await ctx.interaction.response.defer(thinking=True)
|
||||||
|
await self.destroy_timer(timer, reason="Deleted by command")
|
||||||
|
embed = discord.Embed(
|
||||||
|
colour=discord.Colour.brand_green(),
|
||||||
|
description=t(_p(
|
||||||
|
'cmd:pomdoro_destroy|response:success|description',
|
||||||
|
"Timer successfully removed from {channel}."
|
||||||
|
)).format(channel=channel.mention)
|
||||||
|
)
|
||||||
|
await ctx.interaction.edit_original_response(embed=embed)
|
||||||
|
|
||||||
await ctx.interaction.response.defer(thinking=True)
|
@pomodoro_group.command(
|
||||||
await self.destroy_timer(timer, reason="Deleted by command")
|
|
||||||
embed = discord.Embed(
|
|
||||||
colour=discord.Colour.brand_green(),
|
|
||||||
description=t(_p(
|
|
||||||
'cmd:pomdoro_destroy|response:success|description',
|
|
||||||
"Timer successfully removed from {channel}."
|
|
||||||
)).format(channel=channel.mention)
|
|
||||||
)
|
|
||||||
await ctx.interaction.edit_original_response(embed=embed)
|
|
||||||
|
|
||||||
@pomodoro_admin_group.command(
|
|
||||||
name=_p('cmd:pomodoro_edit', "edit"),
|
name=_p('cmd:pomodoro_edit', "edit"),
|
||||||
description=_p(
|
description=_p(
|
||||||
'cmd:pomodoro_edit|desc',
|
'cmd:pomodoro_edit|desc',
|
||||||
"Edit a Timer"
|
"Reconfigure a pomodoro timer."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@appcmds.rename(
|
@appcmds.rename(
|
||||||
@@ -693,7 +767,7 @@ class TimerCog(LionCog):
|
|||||||
@appcmds.describe(
|
@appcmds.describe(
|
||||||
channel=_p(
|
channel=_p(
|
||||||
'cmd:pomodoro_edit|param:channel|desc',
|
'cmd:pomodoro_edit|param:channel|desc',
|
||||||
"Channel holding the timer to edit."
|
"Select a timer voice channel to reconfigure."
|
||||||
),
|
),
|
||||||
**{param: option._desc for param, (option, _) in _param_options.items()}
|
**{param: option._desc for param, (option, _) in _param_options.items()}
|
||||||
)
|
)
|
||||||
@@ -827,8 +901,6 @@ class TimerCog(LionCog):
|
|||||||
@low_management_ward
|
@low_management_ward
|
||||||
async def configure_pomodoro_command(self, ctx: LionContext,
|
async def configure_pomodoro_command(self, ctx: LionContext,
|
||||||
pomodoro_channel: Optional[discord.VoiceChannel | discord.TextChannel] = None):
|
pomodoro_channel: Optional[discord.VoiceChannel | discord.TextChannel] = None):
|
||||||
t = self.bot.translator.t
|
|
||||||
|
|
||||||
# Type checking guards
|
# Type checking guards
|
||||||
if not ctx.guild:
|
if not ctx.guild:
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import discord
|
|||||||
|
|
||||||
from meta import LionBot
|
from meta import LionBot
|
||||||
from meta.errors import UserInputError
|
from meta.errors import UserInputError
|
||||||
|
from utils.lib import replace_multiple
|
||||||
from babel.translator import ctx_translator
|
from babel.translator import ctx_translator
|
||||||
from settings import ModelData
|
from settings import ModelData
|
||||||
from settings.groups import SettingGroup, ModelConfig, SettingDotDict
|
from settings.groups import SettingGroup, ModelConfig, SettingDotDict
|
||||||
@@ -37,6 +38,8 @@ class TimerOptions(SettingGroup):
|
|||||||
|
|
||||||
_model = TimerData.Timer
|
_model = TimerData.Timer
|
||||||
_column = TimerData.Timer.channelid.name
|
_column = TimerData.Timer.channelid.name
|
||||||
|
_create_row = False
|
||||||
|
_allow_object = False
|
||||||
|
|
||||||
@TimerConfig.register_model_setting
|
@TimerConfig.register_model_setting
|
||||||
class NotificationChannel(ModelData, ChannelSetting):
|
class NotificationChannel(ModelData, ChannelSetting):
|
||||||
@@ -50,6 +53,8 @@ class TimerOptions(SettingGroup):
|
|||||||
|
|
||||||
_model = TimerData.Timer
|
_model = TimerData.Timer
|
||||||
_column = TimerData.Timer.notification_channelid.name
|
_column = TimerData.Timer.notification_channelid.name
|
||||||
|
_create_row = False
|
||||||
|
_allow_object = False
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def _check_value(cls, parent_id: int, value: Optional[discord.abc.GuildChannel], **kwargs):
|
async def _check_value(cls, parent_id: int, value: Optional[discord.abc.GuildChannel], **kwargs):
|
||||||
@@ -86,6 +91,7 @@ class TimerOptions(SettingGroup):
|
|||||||
)
|
)
|
||||||
_model = TimerData.Timer
|
_model = TimerData.Timer
|
||||||
_column = TimerData.Timer.inactivity_threshold.name
|
_column = TimerData.Timer.inactivity_threshold.name
|
||||||
|
_create_row = False
|
||||||
|
|
||||||
_min = 0
|
_min = 0
|
||||||
_max = 64
|
_max = 64
|
||||||
@@ -94,6 +100,19 @@ class TimerOptions(SettingGroup):
|
|||||||
def input_formatted(self):
|
def input_formatted(self):
|
||||||
return str(self._data) if self._data is not None else ''
|
return str(self._data) if self._data is not None else ''
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def _parse_string(cls, parent_id, string, **kwargs):
|
||||||
|
try:
|
||||||
|
return await super()._parse_string(parent_id, string, **kwargs)
|
||||||
|
except UserInputError:
|
||||||
|
t = ctx_translator.get().t
|
||||||
|
raise UserInputError(
|
||||||
|
t(_p(
|
||||||
|
'timerset:inactivity_length|desc',
|
||||||
|
"The inactivity threshold must be a positive whole number!"
|
||||||
|
))
|
||||||
|
)
|
||||||
|
|
||||||
@TimerConfig.register_model_setting
|
@TimerConfig.register_model_setting
|
||||||
class ManagerRole(ModelData, RoleSetting):
|
class ManagerRole(ModelData, RoleSetting):
|
||||||
setting_id = 'manager_role'
|
setting_id = 'manager_role'
|
||||||
@@ -106,6 +125,8 @@ class TimerOptions(SettingGroup):
|
|||||||
|
|
||||||
_model = TimerData.Timer
|
_model = TimerData.Timer
|
||||||
_column = TimerData.Timer.manager_roleid.name
|
_column = TimerData.Timer.manager_roleid.name
|
||||||
|
_create_row = False
|
||||||
|
_allow_object = False
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _format_data(cls, parent_id, data, timer=None, **kwargs):
|
def _format_data(cls, parent_id, data, timer=None, **kwargs):
|
||||||
@@ -132,6 +153,7 @@ class TimerOptions(SettingGroup):
|
|||||||
|
|
||||||
_model = TimerData.Timer
|
_model = TimerData.Timer
|
||||||
_column = TimerData.Timer.voice_alerts.name
|
_column = TimerData.Timer.voice_alerts.name
|
||||||
|
_create_row = False
|
||||||
|
|
||||||
@TimerConfig.register_model_setting
|
@TimerConfig.register_model_setting
|
||||||
class BaseName(ModelData, StringSetting):
|
class BaseName(ModelData, StringSetting):
|
||||||
@@ -153,6 +175,7 @@ class TimerOptions(SettingGroup):
|
|||||||
|
|
||||||
_model = TimerData.Timer
|
_model = TimerData.Timer
|
||||||
_column = TimerData.Timer.pretty_name.name
|
_column = TimerData.Timer.pretty_name.name
|
||||||
|
_create_row = False
|
||||||
|
|
||||||
@TimerConfig.register_model_setting
|
@TimerConfig.register_model_setting
|
||||||
class ChannelFormat(ModelData, StringSetting):
|
class ChannelFormat(ModelData, StringSetting):
|
||||||
@@ -172,6 +195,43 @@ class TimerOptions(SettingGroup):
|
|||||||
|
|
||||||
_model = TimerData.Timer
|
_model = TimerData.Timer
|
||||||
_column = TimerData.Timer.channel_name.name
|
_column = TimerData.Timer.channel_name.name
|
||||||
|
_create_row = False
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def _parse_string(cls, parent_id, string, **kwargs):
|
||||||
|
# Enforce a length limit on a test-rendered string.
|
||||||
|
# TODO: Localised formatkey transformation
|
||||||
|
if string.lower() in ('', 'none', 'default'):
|
||||||
|
# Special cases for unsetting
|
||||||
|
return None
|
||||||
|
|
||||||
|
testmap = {
|
||||||
|
'{remaining}': "10m",
|
||||||
|
'{name}': "Longish name",
|
||||||
|
'{stage}': "FOCUS",
|
||||||
|
'{members}': "25",
|
||||||
|
'{pattern}': "50/10",
|
||||||
|
}
|
||||||
|
testmapped = replace_multiple(string, testmap)
|
||||||
|
if len(testmapped) > 100:
|
||||||
|
t = ctx_translator.get().t
|
||||||
|
raise UserInputError(
|
||||||
|
t(_p(
|
||||||
|
'timerset:channel_name_format|error:too_long',
|
||||||
|
"The provided name is too long! Channel names can be at most `100` characters."
|
||||||
|
))
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return string
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _format_data(cls, parent_id, data, **kwargs):
|
||||||
|
"""
|
||||||
|
Overriding format to truncate displayed string.
|
||||||
|
"""
|
||||||
|
if data is not None and len(data) > 100:
|
||||||
|
data = data[:97] + '...'
|
||||||
|
return super()._format_data(parent_id, data, **kwargs)
|
||||||
|
|
||||||
@TimerConfig.register_model_setting
|
@TimerConfig.register_model_setting
|
||||||
class FocusLength(ModelData, DurationSetting):
|
class FocusLength(ModelData, DurationSetting):
|
||||||
@@ -191,6 +251,7 @@ class TimerOptions(SettingGroup):
|
|||||||
|
|
||||||
_model = TimerData.Timer
|
_model = TimerData.Timer
|
||||||
_column = TimerData.Timer.focus_length.name
|
_column = TimerData.Timer.focus_length.name
|
||||||
|
_create_row = False
|
||||||
|
|
||||||
_default_multiplier = 60
|
_default_multiplier = 60
|
||||||
allow_zero = False
|
allow_zero = False
|
||||||
@@ -231,6 +292,7 @@ class TimerOptions(SettingGroup):
|
|||||||
|
|
||||||
_model = TimerData.Timer
|
_model = TimerData.Timer
|
||||||
_column = TimerData.Timer.break_length.name
|
_column = TimerData.Timer.break_length.name
|
||||||
|
_create_row = False
|
||||||
|
|
||||||
_default_multiplier = 60
|
_default_multiplier = 60
|
||||||
allow_zero = False
|
allow_zero = False
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ class Timer:
|
|||||||
'_voice_update_lock',
|
'_voice_update_lock',
|
||||||
'_run_task',
|
'_run_task',
|
||||||
'_loop_task',
|
'_loop_task',
|
||||||
|
'destroyed',
|
||||||
)
|
)
|
||||||
|
|
||||||
break_name = _p('timer|stage:break|name', "BREAK")
|
break_name = _p('timer|stage:break|name', "BREAK")
|
||||||
@@ -79,6 +80,8 @@ class Timer:
|
|||||||
# Main loop task. Should not be cancelled.
|
# Main loop task. Should not be cancelled.
|
||||||
self._loop_task = None
|
self._loop_task = None
|
||||||
|
|
||||||
|
self.destroyed = False
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return (
|
return (
|
||||||
"<Timer "
|
"<Timer "
|
||||||
@@ -406,7 +409,7 @@ class Timer:
|
|||||||
"Remember to press {tick} to register your presence every stage.",
|
"Remember to press {tick} to register your presence every stage.",
|
||||||
len(needs_kick)
|
len(needs_kick)
|
||||||
), locale=self.locale.value).format(
|
), locale=self.locale.value).format(
|
||||||
channel=self.channel.mention,
|
channel=f"<#{self.data.channelid}>",
|
||||||
mentions=', '.join(member.mention for member in needs_kick),
|
mentions=', '.join(member.mention for member in needs_kick),
|
||||||
tick=self.bot.config.emojis.tick
|
tick=self.bot.config.emojis.tick
|
||||||
)
|
)
|
||||||
@@ -439,7 +442,7 @@ class Timer:
|
|||||||
if not stage:
|
if not stage:
|
||||||
return
|
return
|
||||||
|
|
||||||
if not self.channel.permissions_for(self.guild.me).speak:
|
if not self.channel or not self.channel.permissions_for(self.guild.me).speak:
|
||||||
return
|
return
|
||||||
|
|
||||||
async with self.lguild.voice_lock:
|
async with self.lguild.voice_lock:
|
||||||
@@ -501,7 +504,7 @@ class Timer:
|
|||||||
"{channel} is now on **BREAK**! Take a rest, **FOCUS** starts {timestamp}"
|
"{channel} is now on **BREAK**! Take a rest, **FOCUS** starts {timestamp}"
|
||||||
)
|
)
|
||||||
stageline = t(lazy_stageline).format(
|
stageline = t(lazy_stageline).format(
|
||||||
channel=self.channel.mention,
|
channel=f"<#{self.data.channelid}>",
|
||||||
timestamp=f"<t:{int(stage.end.timestamp())}:R>"
|
timestamp=f"<t:{int(stage.end.timestamp())}:R>"
|
||||||
)
|
)
|
||||||
return stageline
|
return stageline
|
||||||
@@ -550,12 +553,12 @@ class Timer:
|
|||||||
content = t(_p(
|
content = t(_p(
|
||||||
'timer|status|stopped:auto',
|
'timer|status|stopped:auto',
|
||||||
"Timer stopped! Join {channel} to start the timer."
|
"Timer stopped! Join {channel} to start the timer."
|
||||||
)).format(channel=self.channel.mention)
|
)).format(channel=f"<#{self.data.channelid}>")
|
||||||
else:
|
else:
|
||||||
content = t(_p(
|
content = t(_p(
|
||||||
'timer|status|stopped:manual',
|
'timer|status|stopped:manual',
|
||||||
"Timer stopped! Press `Start` to restart the timer."
|
"Timer stopped! Press `Start` to restart the timer."
|
||||||
)).format(channel=self.channel.mention)
|
)).format(channel=f"<#{self.data.channelid}>")
|
||||||
|
|
||||||
card = await get_timer_card(self.bot, self, stage)
|
card = await get_timer_card(self.bot, self, stage)
|
||||||
await card.render()
|
await card.render()
|
||||||
@@ -668,6 +671,7 @@ class Timer:
|
|||||||
if repost:
|
if repost:
|
||||||
await self.send_status(delete_last=False, with_notify=False)
|
await self.send_status(delete_last=False, with_notify=False)
|
||||||
|
|
||||||
|
@log_wrap(action='Update Channel Name')
|
||||||
async def _update_channel_name(self):
|
async def _update_channel_name(self):
|
||||||
"""
|
"""
|
||||||
Submit a task to update the voice channel name.
|
Submit a task to update the voice channel name.
|
||||||
@@ -675,15 +679,19 @@ class Timer:
|
|||||||
Attempts to ensure that only one task is running at a time.
|
Attempts to ensure that only one task is running at a time.
|
||||||
Attempts to wait until the next viable channel update slot (via ratelimit).
|
Attempts to wait until the next viable channel update slot (via ratelimit).
|
||||||
"""
|
"""
|
||||||
if self._voice_update_task and not self._voice_update_task.done():
|
if self._voice_update_lock.locked():
|
||||||
# Voice update request already submitted
|
# Voice update is already running
|
||||||
|
# Note that if channel editing takes a long time,
|
||||||
|
# and the lock is waiting on that,
|
||||||
|
# we may actually miss a channel update in this period.
|
||||||
|
# Erring on the side of less ratelimits.
|
||||||
return
|
return
|
||||||
|
|
||||||
async with self._voice_update_lock:
|
async with self._voice_update_lock:
|
||||||
if self._last_voice_update:
|
if self._last_voice_update:
|
||||||
to_wait = ((self._last_voice_update + timedelta(minutes=5)) - utc_now()).total_seconds()
|
to_wait = ((self._last_voice_update + timedelta(minutes=5)) - utc_now()).total_seconds()
|
||||||
if to_wait > 0:
|
if to_wait > 0:
|
||||||
self._voice_update_task = asyncio.create_task(asyncio.sleep(to_wait))
|
self._voice_update_task = asyncio.create_task(asyncio.sleep(to_wait), name='timer-voice-wait')
|
||||||
try:
|
try:
|
||||||
await self._voice_update_task
|
await self._voice_update_task
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
@@ -698,8 +706,18 @@ class Timer:
|
|||||||
if new_name == self.channel.name:
|
if new_name == self.channel.name:
|
||||||
return
|
return
|
||||||
|
|
||||||
self._last_voice_update = utc_now()
|
try:
|
||||||
await self.channel.edit(name=self.channel_name)
|
logger.debug(f"Requesting channel name update for timer {self}")
|
||||||
|
await self.channel.edit(name=new_name)
|
||||||
|
except discord.HTTPException:
|
||||||
|
logger.warning(
|
||||||
|
f"Voice channel name update failed for timer {self}",
|
||||||
|
exc_info=True
|
||||||
|
)
|
||||||
|
finally:
|
||||||
|
# Whether we fail or not, update ratelimit marker
|
||||||
|
# (Repeatedly sending failing requests is even worse than normal ratelimits.)
|
||||||
|
self._last_voice_update = utc_now()
|
||||||
|
|
||||||
@log_wrap(action="Stop Timer")
|
@log_wrap(action="Stop Timer")
|
||||||
async def stop(self, auto_restart=False):
|
async def stop(self, auto_restart=False):
|
||||||
@@ -728,7 +746,12 @@ class Timer:
|
|||||||
if self._run_task and not self._run_task.done():
|
if self._run_task and not self._run_task.done():
|
||||||
self._run_task.cancel()
|
self._run_task.cancel()
|
||||||
channelid = self.data.channelid
|
channelid = self.data.channelid
|
||||||
|
if self.channel:
|
||||||
|
task = asyncio.create_task(
|
||||||
|
self.channel.edit(name=self.data.pretty_name, reason="Reverting timer channel name")
|
||||||
|
)
|
||||||
await self.data.delete()
|
await self.data.delete()
|
||||||
|
self.destroyed = True
|
||||||
if self.last_status_message:
|
if self.last_status_message:
|
||||||
try:
|
try:
|
||||||
await self.last_status_message.delete()
|
await self.last_status_message.delete()
|
||||||
@@ -787,6 +810,7 @@ class Timer:
|
|||||||
if current.end < utc_now():
|
if current.end < utc_now():
|
||||||
self._state = self.current_stage
|
self._state = self.current_stage
|
||||||
task = asyncio.create_task(self.notify_change_stage(current, self._state))
|
task = asyncio.create_task(self.notify_change_stage(current, self._state))
|
||||||
|
background_tasks.add(task)
|
||||||
task.add_done_callback(background_tasks.discard)
|
task.add_done_callback(background_tasks.discard)
|
||||||
current = self._state
|
current = self._state
|
||||||
elif self.members:
|
elif self.members:
|
||||||
|
|||||||
@@ -37,6 +37,23 @@ class TimerOptionsUI(MessageUI):
|
|||||||
self.timer = timer
|
self.timer = timer
|
||||||
self.role = role
|
self.role = role
|
||||||
|
|
||||||
|
async def interaction_check(self, interaction: discord.Interaction):
|
||||||
|
if self.timer.destroyed:
|
||||||
|
t = self.bot.translator.t
|
||||||
|
error = t(_p(
|
||||||
|
'ui:timer_options|error:timer_destroyed',
|
||||||
|
"This timer no longer exists! Closing option menu."
|
||||||
|
))
|
||||||
|
embed = discord.Embed(
|
||||||
|
colour=discord.Colour.brand_red(),
|
||||||
|
description=error
|
||||||
|
)
|
||||||
|
await interaction.response.send_message(embed=embed, ephemeral=True)
|
||||||
|
await self.quit()
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return await super().interaction_check(interaction)
|
||||||
|
|
||||||
@button(label="EDIT_PLACEHOLDER", style=ButtonStyle.blurple)
|
@button(label="EDIT_PLACEHOLDER", style=ButtonStyle.blurple)
|
||||||
async def edit_button(self, press: discord.Interaction, pressed: Button):
|
async def edit_button(self, press: discord.Interaction, pressed: Button):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
import asyncio
|
import asyncio
|
||||||
import datetime
|
import datetime
|
||||||
|
from weakref import WeakValueDictionary
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands as cmds
|
from discord.ext import commands as cmds
|
||||||
@@ -16,6 +17,8 @@ from utils.ui import ChoicedEnum, Transformed
|
|||||||
from utils.lib import utc_now, replace_multiple
|
from utils.lib import utc_now, replace_multiple
|
||||||
from utils.ratelimits import Bucket, limit_concurrency
|
from utils.ratelimits import Bucket, limit_concurrency
|
||||||
from utils.data import TemporaryTable
|
from utils.data import TemporaryTable
|
||||||
|
from modules.economy.cog import Economy
|
||||||
|
from modules.economy.data import TransactionType
|
||||||
|
|
||||||
|
|
||||||
from . import babel, logger
|
from . import babel, logger
|
||||||
@@ -126,6 +129,9 @@ class RankCog(LionCog):
|
|||||||
# pop the guild whenever the season is updated or the rank type changes.
|
# pop the guild whenever the season is updated or the rank type changes.
|
||||||
self._member_ranks = {}
|
self._member_ranks = {}
|
||||||
|
|
||||||
|
# Weakly referenced Locks for each guild to serialise rank actions
|
||||||
|
self._rank_locks: dict[int, asyncio.Lock] = WeakValueDictionary()
|
||||||
|
|
||||||
async def cog_load(self):
|
async def cog_load(self):
|
||||||
await self.data.init()
|
await self.data.init()
|
||||||
|
|
||||||
@@ -136,6 +142,13 @@ class RankCog(LionCog):
|
|||||||
configcog = self.bot.get_cog('ConfigCog')
|
configcog = self.bot.get_cog('ConfigCog')
|
||||||
self.crossload_group(self.configure_group, configcog.configure_group)
|
self.crossload_group(self.configure_group, configcog.configure_group)
|
||||||
|
|
||||||
|
def ranklock(self, guildid):
|
||||||
|
lock = self._rank_locks.get(guildid, None)
|
||||||
|
if lock is None:
|
||||||
|
lock = self._rank_locks[guildid] = asyncio.Lock()
|
||||||
|
logger.debug(f"Getting rank lock for guild <guildid: {guildid}> (locked: {lock.locked()})")
|
||||||
|
return lock
|
||||||
|
|
||||||
# ---------- Event handlers ----------
|
# ---------- Event handlers ----------
|
||||||
# season_start setting event handler.. clears the guild season rank cache
|
# season_start setting event handler.. clears the guild season rank cache
|
||||||
@LionCog.listener('on_guildset_season_start')
|
@LionCog.listener('on_guildset_season_start')
|
||||||
@@ -255,26 +268,22 @@ class RankCog(LionCog):
|
|||||||
"""
|
"""
|
||||||
Handle batch of completed message sessions.
|
Handle batch of completed message sessions.
|
||||||
"""
|
"""
|
||||||
tasks = []
|
|
||||||
# TODO: Thread safety
|
|
||||||
# TODO: Locking between refresh and individual updates
|
|
||||||
for guildid, userid, messages, guild_xp in session_data:
|
for guildid, userid, messages, guild_xp in session_data:
|
||||||
lguild = await self.bot.core.lions.fetch_guild(guildid)
|
lguild = await self.bot.core.lions.fetch_guild(guildid)
|
||||||
rank_type = lguild.config.get('rank_type').value
|
rank_type = lguild.config.get('rank_type').value
|
||||||
if rank_type in (RankType.MESSAGE, RankType.XP):
|
if rank_type in (RankType.MESSAGE, RankType.XP):
|
||||||
if (_members := self._member_ranks.get(guildid, None)) is not None and userid in _members:
|
async with self.ranklock(guildid):
|
||||||
session_rank = _members[userid]
|
if (_members := self._member_ranks.get(guildid, None)) is not None and userid in _members:
|
||||||
session_rank.stat += messages if (rank_type is RankType.MESSAGE) else guild_xp
|
session_rank = _members[userid]
|
||||||
else:
|
session_rank.stat += messages if (rank_type is RankType.MESSAGE) else guild_xp
|
||||||
session_rank = await self.get_member_rank(guildid, userid)
|
else:
|
||||||
|
session_rank = await self.get_member_rank(guildid, userid)
|
||||||
|
|
||||||
if session_rank.next_rank is not None and session_rank.stat > session_rank.next_rank.required:
|
if session_rank.next_rank is not None and session_rank.stat > session_rank.next_rank.required:
|
||||||
tasks.append(asyncio.create_task(self.update_rank(session_rank)))
|
task = asyncio.create_task(self.update_rank(session_rank), name='update-message-rank')
|
||||||
else:
|
else:
|
||||||
tasks.append(asyncio.create_task(self._role_check(session_rank)))
|
task = asyncio.create_task(self._role_check(session_rank), name='rank-role-check')
|
||||||
|
await task
|
||||||
if tasks:
|
|
||||||
await asyncio.gather(*tasks)
|
|
||||||
|
|
||||||
async def _role_check(self, session_rank: SeasonRank):
|
async def _role_check(self, session_rank: SeasonRank):
|
||||||
guild = self.bot.get_guild(session_rank.guildid)
|
guild = self.bot.get_guild(session_rank.guildid)
|
||||||
@@ -299,6 +308,7 @@ class RankCog(LionCog):
|
|||||||
if new_last_roleid != last_roleid:
|
if new_last_roleid != last_roleid:
|
||||||
await session_rank.rankrow.update(last_roleid=new_last_roleid)
|
await session_rank.rankrow.update(last_roleid=new_last_roleid)
|
||||||
|
|
||||||
|
@log_wrap(action="Update Rank")
|
||||||
async def update_rank(self, session_rank):
|
async def update_rank(self, session_rank):
|
||||||
# Identify target rank
|
# Identify target rank
|
||||||
guildid = session_rank.guildid
|
guildid = session_rank.guildid
|
||||||
@@ -341,6 +351,7 @@ class RankCog(LionCog):
|
|||||||
await member.add_roles(new_role)
|
await member.add_roles(new_role)
|
||||||
last_roleid = new_role.id
|
last_roleid = new_role.id
|
||||||
except discord.HTTPException:
|
except discord.HTTPException:
|
||||||
|
# TODO: Event log either way
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Update MemberRank row
|
# Update MemberRank row
|
||||||
@@ -357,6 +368,18 @@ class RankCog(LionCog):
|
|||||||
session_rank.current_rank = new_rank
|
session_rank.current_rank = new_rank
|
||||||
session_rank.next_rank = next((rank for rank in ranks if rank.required > new_rank.required), None)
|
session_rank.next_rank = next((rank for rank in ranks if rank.required > new_rank.required), None)
|
||||||
|
|
||||||
|
# Provide economy reward if required
|
||||||
|
if new_rank.reward:
|
||||||
|
economy: Economy = self.bot.get_cog('Economy')
|
||||||
|
await economy.data.Transaction.execute_transaction(
|
||||||
|
TransactionType.OTHER,
|
||||||
|
guildid=guildid,
|
||||||
|
actorid=guild.me.id,
|
||||||
|
from_account=None,
|
||||||
|
to_account=userid,
|
||||||
|
amount=new_rank.reward
|
||||||
|
)
|
||||||
|
|
||||||
# Send notification
|
# Send notification
|
||||||
await self._notify_rank_update(guildid, userid, new_rank)
|
await self._notify_rank_update(guildid, userid, new_rank)
|
||||||
|
|
||||||
@@ -427,10 +450,8 @@ class RankCog(LionCog):
|
|||||||
}
|
}
|
||||||
return key_map
|
return key_map
|
||||||
|
|
||||||
|
@log_wrap(action="Voice Rank Hook")
|
||||||
async def on_voice_session_complete(self, *session_data):
|
async def on_voice_session_complete(self, *session_data):
|
||||||
tasks = []
|
|
||||||
# TODO: Thread safety
|
|
||||||
# TODO: Locking between refresh and individual updates
|
|
||||||
for guildid, userid, duration, guild_xp in session_data:
|
for guildid, userid, duration, guild_xp in session_data:
|
||||||
lguild = await self.bot.core.lions.fetch_guild(guildid)
|
lguild = await self.bot.core.lions.fetch_guild(guildid)
|
||||||
unranked_role_setting = await self.bot.get_cog('StatsCog').settings.UnrankedRoles.get(guildid)
|
unranked_role_setting = await self.bot.get_cog('StatsCog').settings.UnrankedRoles.get(guildid)
|
||||||
@@ -441,27 +462,28 @@ class RankCog(LionCog):
|
|||||||
continue
|
continue
|
||||||
rank_type = lguild.config.get('rank_type').value
|
rank_type = lguild.config.get('rank_type').value
|
||||||
if rank_type in (RankType.VOICE,):
|
if rank_type in (RankType.VOICE,):
|
||||||
if (_members := self._member_ranks.get(guildid, None)) is not None and userid in _members:
|
async with self.ranklock(guildid):
|
||||||
session_rank = _members[userid]
|
if (_members := self._member_ranks.get(guildid, None)) is not None and userid in _members:
|
||||||
# TODO: Temporary measure
|
session_rank = _members[userid]
|
||||||
season_start = lguild.config.get('season_start').value or datetime.datetime(1970, 1, 1)
|
# TODO: Temporary measure
|
||||||
stat_data = self.bot.get_cog('StatsCog').data
|
season_start = lguild.config.get('season_start').value or datetime.datetime(1970, 1, 1)
|
||||||
session_rank.stat = (await stat_data.VoiceSessionStats.study_times_since(
|
stat_data = self.bot.get_cog('StatsCog').data
|
||||||
guildid, userid, season_start)
|
session_rank.stat = (await stat_data.VoiceSessionStats.study_times_since(
|
||||||
)[0]
|
guildid, userid, season_start)
|
||||||
# session_rank.stat += duration if (rank_type is RankType.VOICE) else guild_xp
|
)[0]
|
||||||
else:
|
# session_rank.stat += duration if (rank_type is RankType.VOICE) else guild_xp
|
||||||
session_rank = await self.get_member_rank(guildid, userid)
|
else:
|
||||||
|
session_rank = await self.get_member_rank(guildid, userid)
|
||||||
|
|
||||||
if session_rank.next_rank is not None and session_rank.stat > session_rank.next_rank.required:
|
if session_rank.next_rank is not None and session_rank.stat > session_rank.next_rank.required:
|
||||||
tasks.append(asyncio.create_task(self.update_rank(session_rank)))
|
task = asyncio.create_task(self.update_rank(session_rank), name='voice-rank-update')
|
||||||
else:
|
else:
|
||||||
tasks.append(asyncio.create_task(self._role_check(session_rank)))
|
task = asyncio.create_task(self._role_check(session_rank), name='voice-role-check')
|
||||||
if tasks:
|
|
||||||
await asyncio.gather(*tasks)
|
|
||||||
|
|
||||||
async def on_xp_update(self, *xp_data):
|
async def on_xp_update(self, *xp_data):
|
||||||
...
|
# Currently no-op since xp is given purely by message stats
|
||||||
|
# Implement if xp ever becomes a combination of message and voice stats
|
||||||
|
pass
|
||||||
|
|
||||||
@log_wrap(action='interactive rank refresh')
|
@log_wrap(action='interactive rank refresh')
|
||||||
async def interactive_rank_refresh(self, interaction: discord.Interaction, guild: discord.Guild):
|
async def interactive_rank_refresh(self, interaction: discord.Interaction, guild: discord.Guild):
|
||||||
@@ -470,9 +492,9 @@ class RankCog(LionCog):
|
|||||||
"""
|
"""
|
||||||
t = self.bot.translator.t
|
t = self.bot.translator.t
|
||||||
if not interaction.response.is_done():
|
if not interaction.response.is_done():
|
||||||
await interaction.response.defer(thinking=True, ephemeral=False)
|
await interaction.response.defer(thinking=False)
|
||||||
ui = RankRefreshUI(self.bot, guild, callerid=interaction.user.id, timeout=None)
|
ui = RankRefreshUI(self.bot, guild, callerid=interaction.user.id, timeout=None)
|
||||||
await ui.run(interaction)
|
await ui.send(interaction.channel)
|
||||||
|
|
||||||
# Retrieve fresh rank roles
|
# Retrieve fresh rank roles
|
||||||
ranks = await self.get_guild_ranks(guild.id, refresh=True)
|
ranks = await self.get_guild_ranks(guild.id, refresh=True)
|
||||||
@@ -638,18 +660,18 @@ class RankCog(LionCog):
|
|||||||
# Save correct member ranks and given roles to data
|
# Save correct member ranks and given roles to data
|
||||||
# First clear the member rank data entirely
|
# First clear the member rank data entirely
|
||||||
await self.data.MemberRank.table.delete_where(guildid=guild.id)
|
await self.data.MemberRank.table.delete_where(guildid=guild.id)
|
||||||
column = self._get_rankid_column(rank_type)
|
if true_member_ranks:
|
||||||
values = [
|
column = self._get_rankid_column(rank_type)
|
||||||
(guild.id, memberid, rank.rankid, rank.roleid)
|
values = [
|
||||||
for memberid, rank in true_member_ranks.items()
|
(guild.id, memberid, rank.rankid, rank.roleid)
|
||||||
]
|
for memberid, rank in true_member_ranks.items()
|
||||||
await self.data.MemberRank.table.insert_many(
|
]
|
||||||
('guildid', 'userid', column, 'last_roleid'),
|
await self.data.MemberRank.table.insert_many(
|
||||||
*values
|
('guildid', 'userid', column, 'last_roleid'),
|
||||||
)
|
*values
|
||||||
|
)
|
||||||
self.flush_guild_ranks(guild.id)
|
self.flush_guild_ranks(guild.id)
|
||||||
await ui.set_done()
|
await ui.set_done()
|
||||||
await ui.wait()
|
|
||||||
|
|
||||||
# ---------- Commands ----------
|
# ---------- Commands ----------
|
||||||
@cmds.hybrid_command(name=_p('cmd:ranks', "ranks"))
|
@cmds.hybrid_command(name=_p('cmd:ranks', "ranks"))
|
||||||
@@ -671,7 +693,7 @@ class RankCog(LionCog):
|
|||||||
await ui.wait()
|
await ui.wait()
|
||||||
else:
|
else:
|
||||||
await ui.reload()
|
await ui.reload()
|
||||||
msg = await ui.make_message()
|
msg = await ui.make_message(show_note=False)
|
||||||
await ctx.reply(
|
await ctx.reply(
|
||||||
**msg.send_args,
|
**msg.send_args,
|
||||||
ephemeral=True
|
ephemeral=True
|
||||||
@@ -740,7 +762,7 @@ class RankCog(LionCog):
|
|||||||
lines = []
|
lines = []
|
||||||
if rank_type_setting in modified:
|
if rank_type_setting in modified:
|
||||||
lines.append(rank_type_setting.update_message)
|
lines.append(rank_type_setting.update_message)
|
||||||
if dm_ranks or rank_channel:
|
if (dm_ranks is not None) or (rank_channel is not None):
|
||||||
if dm_ranks_setting.value:
|
if dm_ranks_setting.value:
|
||||||
if rank_channel_setting.value:
|
if rank_channel_setting.value:
|
||||||
notif_string = t(_p(
|
notif_string = t(_p(
|
||||||
|
|||||||
@@ -6,10 +6,11 @@ from discord.ui.select import select, Select, SelectOption, RoleSelect
|
|||||||
from discord.ui.button import button, Button, ButtonStyle
|
from discord.ui.button import button, Button, ButtonStyle
|
||||||
|
|
||||||
from meta import conf, LionBot
|
from meta import conf, LionBot
|
||||||
|
from meta.errors import ResponseTimedOut
|
||||||
from core.data import RankType
|
from core.data import RankType
|
||||||
from data import ORDER
|
from data import ORDER
|
||||||
|
|
||||||
from utils.ui import MessageUI
|
from utils.ui import MessageUI, Confirm
|
||||||
from utils.lib import MessageArgs
|
from utils.lib import MessageArgs
|
||||||
from babel.translator import ctx_translator
|
from babel.translator import ctx_translator
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@ class RankOverviewUI(MessageUI):
|
|||||||
self.bot = bot
|
self.bot = bot
|
||||||
self.guild = guild
|
self.guild = guild
|
||||||
self.guildid = guild.id
|
self.guildid = guild.id
|
||||||
|
self.cog = bot.get_cog('RankCog')
|
||||||
|
|
||||||
self.lguild = None
|
self.lguild = None
|
||||||
|
|
||||||
@@ -98,8 +100,8 @@ class RankOverviewUI(MessageUI):
|
|||||||
Refresh the current ranks,
|
Refresh the current ranks,
|
||||||
ensuring that all members have the correct rank.
|
ensuring that all members have the correct rank.
|
||||||
"""
|
"""
|
||||||
cog = self.bot.get_cog('RankCog')
|
async with self.cog.ranklock(self.guild.id):
|
||||||
await cog.interactive_rank_refresh(press, self.guild)
|
await self.cog.interactive_rank_refresh(press, self.guild)
|
||||||
|
|
||||||
async def refresh_button_refresh(self):
|
async def refresh_button_refresh(self):
|
||||||
self.refresh_button.label = self.bot.translator.t(_p(
|
self.refresh_button.label = self.bot.translator.t(_p(
|
||||||
@@ -107,15 +109,38 @@ class RankOverviewUI(MessageUI):
|
|||||||
"Refresh Member Ranks"
|
"Refresh Member Ranks"
|
||||||
))
|
))
|
||||||
|
|
||||||
@button(label="CLEAR_BUTTON_PLACEHOLDER", style=ButtonStyle.blurple)
|
@button(label="CLEAR_BUTTON_PLACEHOLDER", style=ButtonStyle.red)
|
||||||
async def clear_button(self, press: discord.Interaction, pressed: Button):
|
async def clear_button(self, press: discord.Interaction, pressed: Button):
|
||||||
"""
|
"""
|
||||||
Clear the rank list.
|
Clear the rank list.
|
||||||
"""
|
"""
|
||||||
await self.rank_model.table.delete_where(guildid=self.guildid)
|
# Confirm deletion
|
||||||
self.bot.get_cog('RankCog').flush_guild_ranks(self.guild.id)
|
t = self.bot.translator.t
|
||||||
self.ranks = []
|
confirm_msg = t(_p(
|
||||||
await self.redraw()
|
'ui:rank_overview|button:clear|confirm',
|
||||||
|
"Are you sure you want to **delete all activity ranks** in this server?"
|
||||||
|
))
|
||||||
|
confirmui = Confirm(confirm_msg, self._callerid)
|
||||||
|
confirmui.confirm_button.label = t(_p(
|
||||||
|
'ui:rank_overview|button:clear|confirm|button:yes',
|
||||||
|
"Yes, clear ranks"
|
||||||
|
))
|
||||||
|
confirmui.confirm_button.style = ButtonStyle.red
|
||||||
|
confirmui.cancel_button.style = ButtonStyle.green
|
||||||
|
confirmui.cancel_button.label = t(_p(
|
||||||
|
'ui:rank_overview|button:clear|confirm|button:no',
|
||||||
|
"Cancel"
|
||||||
|
))
|
||||||
|
try:
|
||||||
|
result = await confirmui.ask(press, ephemeral=True)
|
||||||
|
except ResponseTimedOut:
|
||||||
|
result = False
|
||||||
|
if result:
|
||||||
|
async with self.cog.ranklock(self.guild.id):
|
||||||
|
await self.rank_model.table.delete_where(guildid=self.guildid)
|
||||||
|
self.cog.flush_guild_ranks(self.guild.id)
|
||||||
|
self.ranks = []
|
||||||
|
await self.redraw()
|
||||||
|
|
||||||
async def clear_button_refresh(self):
|
async def clear_button_refresh(self):
|
||||||
self.clear_button.label = self.bot.translator.t(_p(
|
self.clear_button.label = self.bot.translator.t(_p(
|
||||||
@@ -324,7 +349,7 @@ class RankOverviewUI(MessageUI):
|
|||||||
string = f"{start} msgs"
|
string = f"{start} msgs"
|
||||||
return string
|
return string
|
||||||
|
|
||||||
async def make_message(self) -> MessageArgs:
|
async def make_message(self, show_note=True) -> MessageArgs:
|
||||||
t = self.bot.translator.t
|
t = self.bot.translator.t
|
||||||
|
|
||||||
if self.ranks:
|
if self.ranks:
|
||||||
@@ -355,6 +380,34 @@ class RankOverviewUI(MessageUI):
|
|||||||
] or [[]]
|
] or [[]]
|
||||||
lines = line_blocks[self.pagen]
|
lines = line_blocks[self.pagen]
|
||||||
desc = '\n'.join(reversed(lines))
|
desc = '\n'.join(reversed(lines))
|
||||||
|
|
||||||
|
# Add note about season start
|
||||||
|
note_name = t(_p(
|
||||||
|
'ui:rank_overview|embed|field:note|name',
|
||||||
|
"Note"
|
||||||
|
))
|
||||||
|
season_start = self.lguild.data.season_start
|
||||||
|
if season_start:
|
||||||
|
season_str = t(_p(
|
||||||
|
'ui:rank_overview|embed|field:note|value:with_season',
|
||||||
|
"Ranks are determined by activity since {timestamp}."
|
||||||
|
)).format(
|
||||||
|
timestamp=discord.utils.format_dt(season_start)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
season_str = t(_p(
|
||||||
|
'ui:rank_overview|embed|field:note|value:without_season',
|
||||||
|
"Ranks are determined by *all-time* statistics.\n"
|
||||||
|
"To reward ranks from a later time (e.g. to have monthly/quarterly/yearly ranks) "
|
||||||
|
"set the `season_start` with {stats_cmd}"
|
||||||
|
)).format(stats_cmd=self.bot.core.mention_cmd('configure statistics'))
|
||||||
|
if self.rank_type is RankType.VOICE:
|
||||||
|
addendum = t(_p(
|
||||||
|
'ui:rank_overview|embed|field:note|value|voice_addendum',
|
||||||
|
"Also note that ranks will only be updated when a member leaves a tracked voice channel! "
|
||||||
|
"Use the **Refresh Member Ranks** button below to update all members manually."
|
||||||
|
))
|
||||||
|
season_str = '\n'.join((season_str, addendum))
|
||||||
else:
|
else:
|
||||||
# No ranks, give hints about adding ranks
|
# No ranks, give hints about adding ranks
|
||||||
desc = t(_p(
|
desc = t(_p(
|
||||||
@@ -385,6 +438,13 @@ class RankOverviewUI(MessageUI):
|
|||||||
title=title,
|
title=title,
|
||||||
description=desc
|
description=desc
|
||||||
)
|
)
|
||||||
|
if show_note:
|
||||||
|
embed.add_field(
|
||||||
|
name=note_name,
|
||||||
|
value=season_str,
|
||||||
|
inline=False
|
||||||
|
)
|
||||||
|
|
||||||
return MessageArgs(embed=embed)
|
return MessageArgs(embed=embed)
|
||||||
|
|
||||||
async def refresh_layout(self):
|
async def refresh_layout(self):
|
||||||
|
|||||||
@@ -199,10 +199,11 @@ class RankRefreshUI(MessageUI):
|
|||||||
))
|
))
|
||||||
value = t(_p(
|
value = t(_p(
|
||||||
'ui:refresh_ranks|embed|field:remove|value',
|
'ui:refresh_ranks|embed|field:remove|value',
|
||||||
"0 {progress} {total}"
|
"{progress} {done}/{total} removed"
|
||||||
)).format(
|
)).format(
|
||||||
progress=self.progress_bar(self.removed, 0, self.to_remove),
|
progress=self.progress_bar(self.removed, 0, self.to_remove),
|
||||||
total=self.to_remove,
|
total=self.to_remove,
|
||||||
|
done=self.removed,
|
||||||
)
|
)
|
||||||
embed.add_field(name=name, value=value, inline=False)
|
embed.add_field(name=name, value=value, inline=False)
|
||||||
else:
|
else:
|
||||||
@@ -221,10 +222,11 @@ class RankRefreshUI(MessageUI):
|
|||||||
))
|
))
|
||||||
value = t(_p(
|
value = t(_p(
|
||||||
'ui:refresh_ranks|embed|field:add|value',
|
'ui:refresh_ranks|embed|field:add|value',
|
||||||
"0 {progress} {total}"
|
"{progress} {done}/{total} given"
|
||||||
)).format(
|
)).format(
|
||||||
progress=self.progress_bar(self.added, 0, self.to_add),
|
progress=self.progress_bar(self.added, 0, self.to_add),
|
||||||
total=self.to_add,
|
total=self.to_add,
|
||||||
|
done=self.added,
|
||||||
)
|
)
|
||||||
embed.add_field(name=name, value=value, inline=False)
|
embed.add_field(name=name, value=value, inline=False)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -12,158 +12,36 @@ Max 25 reminders (propagating Discord restriction)
|
|||||||
"""
|
"""
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
from cachetools import TTLCache, LRUCache
|
from cachetools import TTLCache
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands as cmds
|
from discord.ext import commands as cmds
|
||||||
from discord import app_commands as appcmds
|
from discord import app_commands as appcmds
|
||||||
from discord.app_commands import Transform
|
from discord.app_commands import Transform
|
||||||
from discord.ui.select import select, SelectOption
|
|
||||||
from dateutil.parser import parse, ParserError
|
from dateutil.parser import parse, ParserError
|
||||||
|
|
||||||
from data import RowModel, Registry, WeakCache
|
|
||||||
from data.queries import ORDER
|
from data.queries import ORDER
|
||||||
from data.columns import Integer, String, Timestamp, Bool
|
|
||||||
|
|
||||||
from meta import LionBot, LionCog, LionContext
|
from meta import LionBot, LionCog, LionContext
|
||||||
|
from meta.errors import UserInputError
|
||||||
from meta.app import shard_talk, appname_from_shard
|
from meta.app import shard_talk, appname_from_shard
|
||||||
from meta.logger import log_wrap, logging_context, set_logging_context
|
from meta.logger import log_wrap, set_logging_context
|
||||||
|
|
||||||
from babel import ctx_translator, ctx_locale
|
from babel import ctx_translator, ctx_locale
|
||||||
|
|
||||||
from utils.lib import parse_duration, utc_now, strfdur, error_embed
|
from utils.lib import parse_duration, utc_now, strfdur, error_embed, check_dm
|
||||||
from utils.monitor import TaskMonitor
|
from utils.monitor import TaskMonitor
|
||||||
from utils.transformers import DurationTransformer
|
from utils.transformers import DurationTransformer
|
||||||
from utils.ui import LeoUI, AButton, AsComponents
|
from utils.ui import AButton, AsComponents
|
||||||
from utils.ratelimits import Bucket
|
from utils.ratelimits import Bucket
|
||||||
|
|
||||||
from . import babel, logger
|
from . import babel, logger
|
||||||
|
from .data import ReminderData
|
||||||
|
from .ui import ReminderList
|
||||||
|
|
||||||
_, _p, _np = babel._, babel._p, babel._np
|
_, _p, _np = babel._, babel._p, babel._np
|
||||||
|
|
||||||
|
|
||||||
class ReminderData(Registry, name='reminders'):
|
|
||||||
class Reminder(RowModel):
|
|
||||||
"""
|
|
||||||
Model representing a single reminder.
|
|
||||||
Since reminders are likely to change across shards,
|
|
||||||
does not use an explicit reference cache.
|
|
||||||
|
|
||||||
Schema
|
|
||||||
------
|
|
||||||
CREATE TABLE reminders(
|
|
||||||
reminderid SERIAL PRIMARY KEY,
|
|
||||||
userid BIGINT NOT NULL REFERENCES user_config(userid) ON DELETE CASCADE,
|
|
||||||
remind_at TIMESTAMPTZ NOT NULL,
|
|
||||||
content TEXT NOT NULL,
|
|
||||||
message_link TEXT,
|
|
||||||
interval INTEGER,
|
|
||||||
created_at TIMESTAMP DEFAULT (now() at time zone 'utc'),
|
|
||||||
title TEXT,
|
|
||||||
footer TEXT
|
|
||||||
);
|
|
||||||
CREATE INDEX reminder_users ON reminders (userid);
|
|
||||||
"""
|
|
||||||
_tablename_ = 'reminders'
|
|
||||||
|
|
||||||
reminderid = Integer(primary=True)
|
|
||||||
|
|
||||||
userid = Integer() # User which created the reminder
|
|
||||||
remind_at = Timestamp() # Time when the reminder should be executed
|
|
||||||
content = String() # Content the user gave us to remind them
|
|
||||||
message_link = String() # Link to original confirmation message, for context
|
|
||||||
interval = Integer() # Repeat interval, if applicable
|
|
||||||
created_at = Timestamp() # Time when this reminder was originally created
|
|
||||||
title = String() # Title of the final reminder embed, only set in automated reminders
|
|
||||||
footer = String() # Footer of the final reminder embed, only set in automated reminders
|
|
||||||
failed = Bool() # Whether the reminder was already attempted and failed
|
|
||||||
|
|
||||||
@property
|
|
||||||
def timestamp(self) -> int:
|
|
||||||
"""
|
|
||||||
Time when this reminder should be executed (next) as an integer timestamp.
|
|
||||||
"""
|
|
||||||
return int(self.remind_at.timestamp())
|
|
||||||
|
|
||||||
@property
|
|
||||||
def embed(self) -> discord.Embed:
|
|
||||||
t = ctx_translator.get().t
|
|
||||||
|
|
||||||
embed = discord.Embed(
|
|
||||||
title=self.title or t(_p('reminder|embed', "You asked me to remind you!")),
|
|
||||||
colour=discord.Colour.orange(),
|
|
||||||
description=self.content,
|
|
||||||
timestamp=self.remind_at
|
|
||||||
)
|
|
||||||
|
|
||||||
if self.message_link:
|
|
||||||
embed.add_field(
|
|
||||||
name=t(_p('reminder|embed', "Context?")),
|
|
||||||
value="[{click}]({link})".format(
|
|
||||||
click=t(_p('reminder|embed', "Click Here")),
|
|
||||||
link=self.message_link
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if self.interval:
|
|
||||||
embed.add_field(
|
|
||||||
name=t(_p('reminder|embed', "Next reminder")),
|
|
||||||
value=f"<t:{self.timestamp + self.interval}:R>"
|
|
||||||
)
|
|
||||||
|
|
||||||
if self.footer:
|
|
||||||
embed.set_footer(text=self.footer)
|
|
||||||
|
|
||||||
return embed
|
|
||||||
|
|
||||||
@property
|
|
||||||
def formatted(self):
|
|
||||||
"""
|
|
||||||
Single-line string format for the reminder, intended for an embed.
|
|
||||||
"""
|
|
||||||
t = ctx_translator.get().t
|
|
||||||
content = self.content
|
|
||||||
trunc_content = content[:50] + '...' * (len(content) > 50)
|
|
||||||
|
|
||||||
if interval := self.interval:
|
|
||||||
if not interval % (24 * 60 * 60):
|
|
||||||
# Exact day case
|
|
||||||
days = interval // (24 * 60 * 60)
|
|
||||||
repeat = t(_np(
|
|
||||||
'reminder|formatted|interval',
|
|
||||||
"Every day",
|
|
||||||
"Every `{days}` days",
|
|
||||||
days
|
|
||||||
)).format(days=days)
|
|
||||||
elif not interval % (60 * 60):
|
|
||||||
# Exact hour case
|
|
||||||
hours = interval // (60 * 60)
|
|
||||||
repeat = t(_np(
|
|
||||||
'reminder|formatted|interval',
|
|
||||||
"Every hour",
|
|
||||||
"Every `{hours}` hours",
|
|
||||||
hours
|
|
||||||
)).format(hours=hours)
|
|
||||||
else:
|
|
||||||
# Inexact interval, e.g 10m or 1h 10m.
|
|
||||||
# Use short duration format
|
|
||||||
repeat = t(_p(
|
|
||||||
'reminder|formatted|interval',
|
|
||||||
"Every `{duration}`"
|
|
||||||
)).format(duration=strfdur(interval))
|
|
||||||
|
|
||||||
repeat = f"({repeat})"
|
|
||||||
else:
|
|
||||||
repeat = ""
|
|
||||||
|
|
||||||
return "<t:{timestamp}:R>, [{content}]({jump_link}) {repeat}".format(
|
|
||||||
jump_link=self.message_link,
|
|
||||||
content=trunc_content,
|
|
||||||
timestamp=self.timestamp,
|
|
||||||
repeat=repeat
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class ReminderMonitor(TaskMonitor[int]):
|
class ReminderMonitor(TaskMonitor[int]):
|
||||||
...
|
...
|
||||||
|
|
||||||
@@ -191,7 +69,7 @@ class Reminders(LionCog):
|
|||||||
|
|
||||||
# Short term userid -> list[Reminder] cache, mainly for autocomplete
|
# Short term userid -> list[Reminder] cache, mainly for autocomplete
|
||||||
self._user_reminder_cache: TTLCache[int, list[ReminderData.Reminder]] = TTLCache(1000, ttl=60)
|
self._user_reminder_cache: TTLCache[int, list[ReminderData.Reminder]] = TTLCache(1000, ttl=60)
|
||||||
self._active_reminderlists: dict[int, ReminderListUI] = {}
|
self._active_reminderlists: dict[int, ReminderList] = {}
|
||||||
|
|
||||||
async def cog_load(self):
|
async def cog_load(self):
|
||||||
await self.data.init()
|
await self.data.init()
|
||||||
@@ -212,6 +90,105 @@ class Reminders(LionCog):
|
|||||||
# Start firing reminders
|
# Start firing reminders
|
||||||
self.monitor.start()
|
self.monitor.start()
|
||||||
|
|
||||||
|
# ----- Cog API -----
|
||||||
|
|
||||||
|
async def create_reminder(
|
||||||
|
self,
|
||||||
|
userid: int, remind_at: dt.datetime, content: str,
|
||||||
|
message_link: Optional[str] = None,
|
||||||
|
interval: Optional[int] = None,
|
||||||
|
created_at: Optional[dt.datetime] = None,
|
||||||
|
) -> ReminderData.Reminder:
|
||||||
|
"""
|
||||||
|
Create and schedule a new reminder from user-entered data.
|
||||||
|
|
||||||
|
Raises UserInputError if the requested parameters are invalid.
|
||||||
|
"""
|
||||||
|
now = utc_now()
|
||||||
|
|
||||||
|
if remind_at <= now:
|
||||||
|
t = self.bot.translator.t
|
||||||
|
raise UserInputError(
|
||||||
|
t(_p(
|
||||||
|
'create_reminder|error:past',
|
||||||
|
"The provided reminder time {timestamp} is in the past!"
|
||||||
|
)).format(timestamp=discord.utils.format_dt(remind_at))
|
||||||
|
)
|
||||||
|
|
||||||
|
if interval is not None and interval < 600:
|
||||||
|
t = self.bot.translator.t
|
||||||
|
raise UserInputError(
|
||||||
|
t(_p(
|
||||||
|
'create_reminder|error:too_fast',
|
||||||
|
"You cannot set a repeating reminder with a period less than 10 minutes."
|
||||||
|
))
|
||||||
|
)
|
||||||
|
|
||||||
|
existing = await self.data.Reminder.fetch_where(userid=userid)
|
||||||
|
if len(existing) >= 25:
|
||||||
|
t = self.bot.translator.t
|
||||||
|
raise UserInputError(
|
||||||
|
t(_p(
|
||||||
|
'create_reminder|error:too_many',
|
||||||
|
"Sorry, you have reached the maximum of `25` reminders."
|
||||||
|
))
|
||||||
|
)
|
||||||
|
|
||||||
|
user = self.bot.get_user(userid)
|
||||||
|
if not user:
|
||||||
|
user = await self.bot.fetch_user(userid)
|
||||||
|
if not user:
|
||||||
|
raise ValueError(f"Target user {userid} does not exist.")
|
||||||
|
|
||||||
|
can_dm = await check_dm(user)
|
||||||
|
if not can_dm:
|
||||||
|
t = self.bot.translator.t
|
||||||
|
raise UserInputError(
|
||||||
|
t(_p(
|
||||||
|
'create_reminder|error:cannot_dm',
|
||||||
|
"I cannot direct message you! Do you have me blocked or direct messages closed?"
|
||||||
|
))
|
||||||
|
)
|
||||||
|
|
||||||
|
created_at = created_at or now
|
||||||
|
|
||||||
|
# Passes validation, actually create
|
||||||
|
reminder = await self.data.Reminder.create(
|
||||||
|
userid=userid,
|
||||||
|
remind_at=remind_at,
|
||||||
|
content=content,
|
||||||
|
message_link=message_link,
|
||||||
|
interval=interval,
|
||||||
|
created_at=created_at,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Schedule from executor
|
||||||
|
await self.talk_schedule(reminder.reminderid).send(self.executor_name, wait_for_reply=False)
|
||||||
|
|
||||||
|
# Dispatch reminder update
|
||||||
|
await self.dispatch_update_for(userid)
|
||||||
|
|
||||||
|
# Return fresh reminder
|
||||||
|
return reminder
|
||||||
|
|
||||||
|
async def parse_time_static(self, timestr, timezone):
|
||||||
|
timestr = timestr.strip()
|
||||||
|
default = dt.datetime.now(tz=timezone).replace(hour=0, minute=0, second=0, microsecond=0)
|
||||||
|
if not timestr:
|
||||||
|
return default
|
||||||
|
try:
|
||||||
|
ts = parse(timestr, fuzzy=True, default=default)
|
||||||
|
except ParserError:
|
||||||
|
t = self.bot.translator.t
|
||||||
|
raise UserInputError(
|
||||||
|
t(_p(
|
||||||
|
'parse_timestamp|error:parse',
|
||||||
|
"Could not parse `{given}` as a valid reminder time. "
|
||||||
|
"Try entering the time in the form `HH:MM` or `YYYY-MM-DD HH:MM`."
|
||||||
|
)).format(given=timestr)
|
||||||
|
)
|
||||||
|
return ts
|
||||||
|
|
||||||
async def get_reminders_for(self, userid: int):
|
async def get_reminders_for(self, userid: int):
|
||||||
"""
|
"""
|
||||||
Retrieve a list of reminders for the given userid, using the cache.
|
Retrieve a list of reminders for the given userid, using the cache.
|
||||||
@@ -348,116 +325,43 @@ class Reminders(LionCog):
|
|||||||
# Dispatch for analytics
|
# Dispatch for analytics
|
||||||
self.bot.dispatch('reminder_sent', reminder)
|
self.bot.dispatch('reminder_sent', reminder)
|
||||||
|
|
||||||
@cmds.hybrid_group(
|
@cmds.hybrid_command(
|
||||||
name=_p('cmd:reminders', "reminders")
|
name=_p('cmd:reminders', "reminders"),
|
||||||
)
|
|
||||||
async def reminders_group(self, ctx: LionContext):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@reminders_group.command(
|
|
||||||
# No help string
|
|
||||||
name=_p('cmd:reminders_show', "show"),
|
|
||||||
description=_p(
|
description=_p(
|
||||||
'cmd:reminders_show|desc',
|
'cmd:reminders|desc',
|
||||||
"Display your current reminders."
|
"View and set your reminders."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
async def cmd_reminders_show(self, ctx: LionContext):
|
async def cmd_reminders(self, ctx: LionContext):
|
||||||
# No help string
|
|
||||||
"""
|
"""
|
||||||
Display the reminder widget for this user.
|
Display the reminder widget for this user.
|
||||||
"""
|
"""
|
||||||
t = self.bot.translator.t
|
|
||||||
if not ctx.interaction:
|
if not ctx.interaction:
|
||||||
return
|
return
|
||||||
|
|
||||||
if ctx.author.id in self._active_reminderlists:
|
if ctx.author.id in self._active_reminderlists:
|
||||||
await self._active_reminderlists[ctx.author.id].close(
|
await self._active_reminderlists[ctx.author.id].quit()
|
||||||
msg=t(_p(
|
ui = ReminderList(self.bot, ctx.author)
|
||||||
'cmd:reminders_show|close_elsewhere',
|
|
||||||
"Closing since the list was opened elsewhere."
|
|
||||||
))
|
|
||||||
)
|
|
||||||
ui = ReminderListUI(self.bot, ctx.author)
|
|
||||||
try:
|
try:
|
||||||
self._active_reminderlists[ctx.author.id] = ui
|
self._active_reminderlists[ctx.author.id] = ui
|
||||||
await ui.run(ctx.interaction)
|
await ui.run(ctx.interaction, ephemeral=True)
|
||||||
await ui.wait()
|
await ui.wait()
|
||||||
finally:
|
finally:
|
||||||
self._active_reminderlists.pop(ctx.author.id, None)
|
self._active_reminderlists.pop(ctx.author.id, None)
|
||||||
|
|
||||||
@reminders_group.command(
|
@cmds.hybrid_group(
|
||||||
name=_p('cmd:reminders_clear', "clear"),
|
name=_p('cmd:remindme', "remindme"),
|
||||||
description=_p(
|
description=_p('cmd:remindme|desc', "View and set task reminders."),
|
||||||
'cmd:reminders_clear|desc',
|
|
||||||
"Clear your reminder list."
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
async def cmd_reminders_clear(self, ctx: LionContext):
|
async def remindme_group(self, ctx: LionContext):
|
||||||
# No help string
|
# Base command group for scheduling reminders.
|
||||||
"""
|
pass
|
||||||
Confirm and then clear all the reminders for this user.
|
|
||||||
"""
|
|
||||||
if not ctx.interaction:
|
|
||||||
return
|
|
||||||
|
|
||||||
t = self.bot.translator.t
|
@remindme_group.command(
|
||||||
reminders = await self.data.Reminder.fetch_where(userid=ctx.author.id)
|
|
||||||
if not reminders:
|
|
||||||
await ctx.reply(
|
|
||||||
embed=discord.Embed(
|
|
||||||
description=t(_p(
|
|
||||||
'cmd:reminders_clear|error:no_reminders',
|
|
||||||
"You have no reminders to clear!"
|
|
||||||
)),
|
|
||||||
colour=discord.Colour.brand_red()
|
|
||||||
),
|
|
||||||
ephemeral=True
|
|
||||||
)
|
|
||||||
return
|
|
||||||
|
|
||||||
embed = discord.Embed(
|
|
||||||
title=t(_p('cmd:reminders_clear|confirm|title', "Are You Sure?")),
|
|
||||||
description=t(_np(
|
|
||||||
'cmd:reminders_clear|confirm|desc',
|
|
||||||
"Are you sure you want to delete your `{count}` reminder?",
|
|
||||||
"Are you sure you want to clear your `{count}` reminders?",
|
|
||||||
len(reminders)
|
|
||||||
)).format(count=len(reminders))
|
|
||||||
)
|
|
||||||
|
|
||||||
@AButton(label=t(_p('cmd:reminders_clear|confirm|button:yes', "Yes, clear my reminders")))
|
|
||||||
async def confirm(interaction, press):
|
|
||||||
await interaction.response.defer()
|
|
||||||
reminders = await self.data.Reminder.table.delete_where(userid=ctx.author.id)
|
|
||||||
await self.talk_cancel(*(r['reminderid'] for r in reminders)).send(self.executor_name, wait_for_reply=False)
|
|
||||||
await ctx.interaction.edit_original_response(
|
|
||||||
embed=discord.Embed(
|
|
||||||
description=t(_p(
|
|
||||||
'cmd:reminders_clear|success|desc',
|
|
||||||
"Your reminders have been cleared!"
|
|
||||||
)),
|
|
||||||
colour=discord.Colour.brand_green()
|
|
||||||
),
|
|
||||||
view=None
|
|
||||||
)
|
|
||||||
await press.view.close()
|
|
||||||
await self.dispatch_update_for(ctx.author.id)
|
|
||||||
|
|
||||||
@AButton(label=t(_p('cmd:reminders_clear|confirm|button:cancel', "Cancel")))
|
|
||||||
async def deny(interaction, press):
|
|
||||||
await interaction.response.defer()
|
|
||||||
await ctx.interaction.delete_original_response()
|
|
||||||
await press.view.close()
|
|
||||||
|
|
||||||
components = AsComponents(confirm, deny)
|
|
||||||
await ctx.interaction.response.send_message(embed=embed, view=components, ephemeral=True)
|
|
||||||
|
|
||||||
@reminders_group.command(
|
|
||||||
name=_p('cmd:reminders_cancel', "cancel"),
|
name=_p('cmd:reminders_cancel', "cancel"),
|
||||||
description=_p(
|
description=_p(
|
||||||
'cmd:reminders_cancel|desc',
|
'cmd:reminders_cancel|desc',
|
||||||
"Cancel a single reminder. Use the menu in \"reminder show\" to cancel multiple reminders."
|
"Cancel a single reminder. Use /reminders to clear or cancel multiple reminders."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@appcmds.rename(
|
@appcmds.rename(
|
||||||
@@ -576,13 +480,6 @@ class Reminders(LionCog):
|
|||||||
]
|
]
|
||||||
return choices
|
return choices
|
||||||
|
|
||||||
@cmds.hybrid_group(
|
|
||||||
name=_p('cmd:remindme', "remindme")
|
|
||||||
)
|
|
||||||
async def remindme_group(self, ctx: LionContext):
|
|
||||||
# Base command group for scheduling reminders.
|
|
||||||
pass
|
|
||||||
|
|
||||||
@remindme_group.command(
|
@remindme_group.command(
|
||||||
name=_p('cmd:remindme_at', "at"),
|
name=_p('cmd:remindme_at', "at"),
|
||||||
description=_p(
|
description=_p(
|
||||||
@@ -596,118 +493,79 @@ class Reminders(LionCog):
|
|||||||
every=_p('cmd:remindme_at|param:every', "repeat_every"),
|
every=_p('cmd:remindme_at|param:every', "repeat_every"),
|
||||||
)
|
)
|
||||||
@appcmds.describe(
|
@appcmds.describe(
|
||||||
time=_p('cmd:remindme_at|param:time|desc', "When you want to be reminded. (E.g. `4pm` or `16:00`)."),
|
time=_p(
|
||||||
reminder=_p('cmd:remindme_at|param:reminder|desc', "What should the reminder be?"),
|
'cmd:remindme_at|param:time|desc',
|
||||||
every=_p('cmd:remindme_at|param:every|desc', "How often to repeat this reminder.")
|
"When you want to be reminded. (E.g. `4pm` or `16:00`)."
|
||||||
|
),
|
||||||
|
reminder=_p(
|
||||||
|
'cmd:remindme_at|param:reminder|desc',
|
||||||
|
"What should the reminder be?"
|
||||||
|
),
|
||||||
|
every=_p(
|
||||||
|
'cmd:remindme_at|param:every|desc',
|
||||||
|
"How often to repeat this reminder."
|
||||||
|
)
|
||||||
)
|
)
|
||||||
async def cmd_remindme_at(
|
async def cmd_remindme_at(
|
||||||
self,
|
self,
|
||||||
ctx: LionContext,
|
ctx: LionContext,
|
||||||
time: str,
|
time: appcmds.Range[str, 1, 100],
|
||||||
reminder: str,
|
reminder: appcmds.Range[str, 1, 2000],
|
||||||
every: Optional[Transform[int, DurationTransformer(60)]] = None
|
every: Optional[Transform[int, DurationTransformer(60)]] = None
|
||||||
):
|
):
|
||||||
t = self.bot.translator.t
|
t = self.bot.translator.t
|
||||||
reminders = await self.data.Reminder.fetch_where(userid=ctx.author.id)
|
|
||||||
|
|
||||||
# Guard against too many reminders
|
|
||||||
if len(reminders) > 25:
|
|
||||||
await ctx.error_reply(
|
|
||||||
embed=error_embed(
|
|
||||||
t(_p(
|
|
||||||
'cmd_remindme_at|error:too_many|desc',
|
|
||||||
"Sorry, you have reached the maximum of `25` reminders!"
|
|
||||||
)),
|
|
||||||
title=t(_p(
|
|
||||||
'cmd_remindme_at|error:too_many|title',
|
|
||||||
"Could not create reminder!"
|
|
||||||
))
|
|
||||||
),
|
|
||||||
ephemeral=True
|
|
||||||
)
|
|
||||||
return
|
|
||||||
|
|
||||||
# Guard against too frequent reminders
|
|
||||||
if every is not None and every < 600:
|
|
||||||
await ctx.reply(
|
|
||||||
embed=error_embed(
|
|
||||||
t(_p(
|
|
||||||
'cmd_remindme_at|error:too_fast|desc',
|
|
||||||
"You cannot set a repeating reminder with a period less than 10 minutes."
|
|
||||||
)),
|
|
||||||
title=t(_p(
|
|
||||||
'cmd_remindme_at|error:too_fast|title',
|
|
||||||
"Could not create reminder!"
|
|
||||||
))
|
|
||||||
),
|
|
||||||
ephemeral=True
|
|
||||||
)
|
|
||||||
return
|
|
||||||
|
|
||||||
# Parse the provided static time
|
|
||||||
timezone = ctx.lmember.timezone
|
|
||||||
time = time.strip()
|
|
||||||
default = dt.datetime.now(tz=timezone).replace(hour=0, minute=0, second=0, microsecond=0)
|
|
||||||
try:
|
try:
|
||||||
ts = parse(time, fuzzy=True, default=default)
|
timezone = ctx.lmember.timezone
|
||||||
except ParserError:
|
remind_at = await self.parse_time_static(time, timezone)
|
||||||
await ctx.reply(
|
reminder = await self.create_reminder(
|
||||||
embed=error_embed(
|
userid=ctx.author.id,
|
||||||
t(_p(
|
remind_at=remind_at,
|
||||||
'cmd:remindme_at|error:parse_time|desc',
|
content=reminder,
|
||||||
"Could not parse provided time `{given}`. Try entering e.g. `4 pm` or `16:00`."
|
message_link=ctx.message.jump_url,
|
||||||
)).format(given=time),
|
interval=every,
|
||||||
title=t(_p(
|
|
||||||
'cmd:remindme_at|error:parse_time|title',
|
|
||||||
"Could not create reminder!"
|
|
||||||
))
|
|
||||||
),
|
|
||||||
ephemeral=True
|
|
||||||
)
|
)
|
||||||
return
|
embed = reminder.set_response
|
||||||
if ts < utc_now():
|
except UserInputError as e:
|
||||||
await ctx.reply(
|
embed = discord.Embed(
|
||||||
embed=error_embed(
|
title=t(_p(
|
||||||
t(_p(
|
'cmd:remindme_at|error|title',
|
||||||
'cmd:remindme_at|error:past_time|desc',
|
"Could not create reminder!"
|
||||||
"Provided time is in the past!"
|
)),
|
||||||
)),
|
description=e.msg,
|
||||||
title=t(_p(
|
colour=discord.Colour.brand_red()
|
||||||
'cmd:remindme_at|error:past_time|title',
|
|
||||||
"Could not create reminder!"
|
|
||||||
))
|
|
||||||
),
|
|
||||||
ephemeral=True
|
|
||||||
)
|
)
|
||||||
return
|
|
||||||
# Everything seems to be in order
|
|
||||||
# Create the reminder
|
|
||||||
now = utc_now()
|
|
||||||
rem = await self.data.Reminder.create(
|
|
||||||
userid=ctx.author.id,
|
|
||||||
remind_at=ts,
|
|
||||||
content=reminder,
|
|
||||||
message_link=ctx.message.jump_url,
|
|
||||||
interval=every,
|
|
||||||
created_at=now
|
|
||||||
)
|
|
||||||
|
|
||||||
# Reminder created, request scheduling from executor shard
|
|
||||||
await self.talk_schedule(rem.reminderid).send(self.executor_name, wait_for_reply=False)
|
|
||||||
|
|
||||||
# TODO Add repeat to description
|
|
||||||
embed = discord.Embed(
|
|
||||||
title=t(_p(
|
|
||||||
'cmd:remindme_in|success|title',
|
|
||||||
"Reminder Set at {timestamp}"
|
|
||||||
)).format(timestamp=f"<t:{rem.timestamp}>"),
|
|
||||||
description=f"> {rem.content}"
|
|
||||||
)
|
|
||||||
await ctx.reply(
|
await ctx.reply(
|
||||||
embed=embed,
|
embed=embed,
|
||||||
ephemeral=True
|
ephemeral=True
|
||||||
)
|
)
|
||||||
await self.dispatch_update_for(ctx.author.id)
|
|
||||||
|
@cmd_remindme_at.autocomplete('time')
|
||||||
|
async def cmd_remindme_at_acmpl_time(self, interaction: discord.Interaction, partial: str):
|
||||||
|
if interaction.guild:
|
||||||
|
lmember = await self.bot.core.lions.fetch_member(interaction.guild.id, interaction.user.id)
|
||||||
|
timezone = lmember.timezone
|
||||||
|
else:
|
||||||
|
luser = await self.bot.core.lions.fetch_user(interaction.user.id)
|
||||||
|
timezone = luser.timezone
|
||||||
|
|
||||||
|
t = self.bot.translator.t
|
||||||
|
try:
|
||||||
|
timestamp = await self.parse_time_static(partial, timezone)
|
||||||
|
choice = appcmds.Choice(
|
||||||
|
name=timestamp.strftime('%Y-%m-%d %H:%M'),
|
||||||
|
value=partial
|
||||||
|
)
|
||||||
|
except UserInputError:
|
||||||
|
choice = appcmds.Choice(
|
||||||
|
name=t(_p(
|
||||||
|
'cmd:remindme_at|acmpl:time|error:parse',
|
||||||
|
"Cannot parse \"{partial}\" as a time. Try the format HH:MM or YYYY-MM-DD HH:MM"
|
||||||
|
)).format(partial=partial),
|
||||||
|
value=partial
|
||||||
|
)
|
||||||
|
return [choice]
|
||||||
|
|
||||||
@remindme_group.command(
|
@remindme_group.command(
|
||||||
name=_p('cmd:remindme_in', "in"),
|
name=_p('cmd:remindme_in', "in"),
|
||||||
@@ -722,228 +580,49 @@ class Reminders(LionCog):
|
|||||||
every=_p('cmd:remindme_in|param:every', "repeat_every"),
|
every=_p('cmd:remindme_in|param:every', "repeat_every"),
|
||||||
)
|
)
|
||||||
@appcmds.describe(
|
@appcmds.describe(
|
||||||
time=_p('cmd:remindme_in|param:time|desc', "How far into the future to set the reminder (e.g. 1 day 10h 5m)."),
|
time=_p(
|
||||||
reminder=_p('cmd:remindme_in|param:reminder|desc', "What should the reminder be?"),
|
'cmd:remindme_in|param:time|desc',
|
||||||
every=_p('cmd:remindme_in|param:every|desc', "How often to repeat this reminder. (e.g. 1 day, or 2h)")
|
"How far into the future to set the reminder (e.g. 1 day 10h 5m)."
|
||||||
|
),
|
||||||
|
reminder=_p(
|
||||||
|
'cmd:remindme_in|param:reminder|desc',
|
||||||
|
"What should the reminder be?"
|
||||||
|
),
|
||||||
|
every=_p(
|
||||||
|
'cmd:remindme_in|param:every|desc',
|
||||||
|
"How often to repeat this reminder. (e.g. 1 day, or 2h)"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
async def cmd_remindme_in(
|
async def cmd_remindme_in(
|
||||||
self,
|
self,
|
||||||
ctx: LionContext,
|
ctx: LionContext,
|
||||||
time: Transform[int, DurationTransformer(60)],
|
time: Transform[int, DurationTransformer(60)],
|
||||||
reminder: appcmds.Range[str, 1, 1000], # TODO: Maximum length 1000?
|
reminder: appcmds.Range[str, 1, 2000],
|
||||||
every: Optional[Transform[int, DurationTransformer(60)]] = None
|
every: Optional[Transform[int, DurationTransformer(60)]] = None
|
||||||
):
|
):
|
||||||
t = self.bot.translator.t
|
t = self.bot.translator.t
|
||||||
reminders = await self.data.Reminder.fetch_where(userid=ctx.author.id)
|
|
||||||
|
|
||||||
# Guard against too many reminders
|
try:
|
||||||
if len(reminders) > 25:
|
remind_at = utc_now() + dt.timedelta(seconds=time)
|
||||||
await ctx.error_reply(
|
reminder = await self.create_reminder(
|
||||||
embed=error_embed(
|
userid=ctx.author.id,
|
||||||
t(_p(
|
remind_at=remind_at,
|
||||||
'cmd_remindme_in|error:too_many|desc',
|
content=reminder,
|
||||||
"Sorry, you have reached the maximum of `25` reminders!"
|
message_link=ctx.message.jump_url,
|
||||||
)),
|
interval=every,
|
||||||
title=t(_p(
|
|
||||||
'cmd_remindme_in|error:too_many|title',
|
|
||||||
"Could not create reminder!"
|
|
||||||
))
|
|
||||||
),
|
|
||||||
ephemeral=True
|
|
||||||
)
|
)
|
||||||
return
|
embed = reminder.set_response
|
||||||
|
except UserInputError as e:
|
||||||
# Guard against too frequent reminders
|
embed = discord.Embed(
|
||||||
if every is not None and every < 600:
|
title=t(_p(
|
||||||
await ctx.reply(
|
'cmd:remindme_in|error|title',
|
||||||
embed=error_embed(
|
"Could not create reminder!"
|
||||||
t(_p(
|
)),
|
||||||
'cmd_remindme_in|error:too_fast|desc',
|
description=e.msg,
|
||||||
"You cannot set a repeating reminder with a period less than 10 minutes."
|
colour=discord.Colour.brand_red()
|
||||||
)),
|
|
||||||
title=t(_p(
|
|
||||||
'cmd_remindme_in|error:too_fast|title',
|
|
||||||
"Could not create reminder!"
|
|
||||||
))
|
|
||||||
),
|
|
||||||
ephemeral=True
|
|
||||||
)
|
)
|
||||||
return
|
|
||||||
|
|
||||||
# Everything seems to be in order
|
|
||||||
# Create the reminder
|
|
||||||
now = utc_now()
|
|
||||||
rem = await self.data.Reminder.create(
|
|
||||||
userid=ctx.author.id,
|
|
||||||
remind_at=now + dt.timedelta(seconds=time),
|
|
||||||
content=reminder,
|
|
||||||
message_link=ctx.message.jump_url,
|
|
||||||
interval=every,
|
|
||||||
created_at=now
|
|
||||||
)
|
|
||||||
|
|
||||||
# Reminder created, request scheduling from executor shard
|
|
||||||
await self.talk_schedule(rem.reminderid).send(self.executor_name, wait_for_reply=False)
|
|
||||||
|
|
||||||
# TODO Add repeat to description
|
|
||||||
embed = discord.Embed(
|
|
||||||
title=t(_p(
|
|
||||||
'cmd:remindme_in|success|title',
|
|
||||||
"Reminder Set {timestamp}"
|
|
||||||
)).format(timestamp=f"<t:{rem.timestamp}:R>"),
|
|
||||||
description=f"> {rem.content}"
|
|
||||||
)
|
|
||||||
await ctx.reply(
|
await ctx.reply(
|
||||||
embed=embed,
|
embed=embed,
|
||||||
ephemeral=True
|
ephemeral=True
|
||||||
)
|
)
|
||||||
await self.dispatch_update_for(ctx.author.id)
|
|
||||||
|
|
||||||
|
|
||||||
class ReminderListUI(LeoUI):
|
|
||||||
def __init__(self, bot: LionBot, user: discord.User, **kwargs):
|
|
||||||
super().__init__(**kwargs)
|
|
||||||
|
|
||||||
self.bot = bot
|
|
||||||
self.user = user
|
|
||||||
|
|
||||||
cog = bot.get_cog('Reminders')
|
|
||||||
if cog is None:
|
|
||||||
raise ValueError("Cannot create a ReminderUI without the Reminder cog!")
|
|
||||||
self.cog: Reminders = cog
|
|
||||||
self.userid = user.id
|
|
||||||
|
|
||||||
# Original interaction which sent the UI message
|
|
||||||
# Since this is an ephemeral UI, we need this to update and delete
|
|
||||||
self._interaction: Optional[discord.Interaction] = None
|
|
||||||
self._reminders = []
|
|
||||||
|
|
||||||
async def cleanup(self):
|
|
||||||
# Cleanup after an ephemeral UI
|
|
||||||
# Just close if possible
|
|
||||||
if self._interaction and not self._interaction.is_expired():
|
|
||||||
try:
|
|
||||||
await self._interaction.delete_original_response()
|
|
||||||
except discord.HTTPException:
|
|
||||||
pass
|
|
||||||
|
|
||||||
@select()
|
|
||||||
async def select_remove(self, interaction: discord.Interaction, selection):
|
|
||||||
"""
|
|
||||||
Select a number of reminders to delete.
|
|
||||||
"""
|
|
||||||
await interaction.response.defer()
|
|
||||||
# Hopefully this is a list of reminderids
|
|
||||||
values = selection.values
|
|
||||||
# Delete from data
|
|
||||||
await self.cog.data.Reminder.table.delete_where(reminderid=values)
|
|
||||||
# Send cancellation
|
|
||||||
await self.cog.talk_cancel(*values).send(self.cog.executor_name, wait_for_reply=False)
|
|
||||||
self.cog._user_reminder_cache.pop(self.userid, None)
|
|
||||||
await self.refresh()
|
|
||||||
|
|
||||||
async def refresh_select_remove(self):
|
|
||||||
"""
|
|
||||||
Refresh the select remove component from current state.
|
|
||||||
"""
|
|
||||||
t = self.bot.translator.t
|
|
||||||
|
|
||||||
self.select_remove.placeholder = t(_p(
|
|
||||||
'ui:reminderlist|select:remove|placeholder',
|
|
||||||
"Select to cancel."
|
|
||||||
))
|
|
||||||
self.select_remove.options = [
|
|
||||||
SelectOption(
|
|
||||||
label=f"[{i}] {reminder.content[:50] + '...' * (len(reminder.content) > 50)}",
|
|
||||||
value=reminder.reminderid,
|
|
||||||
emoji=self.bot.config.emojis.getemoji('clock')
|
|
||||||
)
|
|
||||||
for i, reminder in enumerate(self._reminders, start=1)
|
|
||||||
]
|
|
||||||
self.select_remove.min_values = 1
|
|
||||||
self.select_remove.max_values = len(self._reminders)
|
|
||||||
|
|
||||||
async def refresh_reminders(self):
|
|
||||||
self._reminders = await self.cog.get_reminders_for(self.userid)
|
|
||||||
|
|
||||||
async def refresh(self):
|
|
||||||
"""
|
|
||||||
Refresh the UI message and components.
|
|
||||||
"""
|
|
||||||
if not self._interaction:
|
|
||||||
raise ValueError("Cannot refresh ephemeral UI without an origin interaction!")
|
|
||||||
|
|
||||||
await self.refresh_reminders()
|
|
||||||
await self.refresh_select_remove()
|
|
||||||
embed = await self.build_embed()
|
|
||||||
|
|
||||||
if self._reminders:
|
|
||||||
self.set_layout((self.select_remove,))
|
|
||||||
else:
|
|
||||||
self.set_layout()
|
|
||||||
|
|
||||||
try:
|
|
||||||
if not self._interaction.response.is_done():
|
|
||||||
# Fresh message
|
|
||||||
await self._interaction.response.send_message(embed=embed, view=self, ephemeral=True)
|
|
||||||
else:
|
|
||||||
# Update existing message
|
|
||||||
await self._interaction.edit_original_response(embed=embed, view=self)
|
|
||||||
except discord.HTTPException:
|
|
||||||
await self.close()
|
|
||||||
|
|
||||||
async def run(self, interaction: discord.Interaction):
|
|
||||||
"""
|
|
||||||
Run the UI responding to the given interaction.
|
|
||||||
"""
|
|
||||||
self._interaction = interaction
|
|
||||||
await self.refresh()
|
|
||||||
|
|
||||||
async def build_embed(self):
|
|
||||||
"""
|
|
||||||
Build the reminder list embed.
|
|
||||||
"""
|
|
||||||
t = self.bot.translator.t
|
|
||||||
reminders = self._reminders
|
|
||||||
|
|
||||||
if reminders:
|
|
||||||
lines = []
|
|
||||||
num_len = len(str(len(reminders)))
|
|
||||||
for i, reminder in enumerate(reminders):
|
|
||||||
lines.append(
|
|
||||||
"`[{:<{}}]` | {}".format(
|
|
||||||
i+1,
|
|
||||||
num_len,
|
|
||||||
reminder.formatted
|
|
||||||
)
|
|
||||||
)
|
|
||||||
description = '\n'.join(lines)
|
|
||||||
|
|
||||||
embed = discord.Embed(
|
|
||||||
description=description,
|
|
||||||
colour=discord.Colour.orange(),
|
|
||||||
timestamp=utc_now()
|
|
||||||
).set_author(
|
|
||||||
name=t(_p(
|
|
||||||
'ui:reminderlist|embed:list|author',
|
|
||||||
"{name}'s reminders"
|
|
||||||
)).format(name=self.user.display_name),
|
|
||||||
icon_url=self.user.avatar
|
|
||||||
).set_footer(
|
|
||||||
text=t(_p(
|
|
||||||
'ui:reminderlist|embed:list|footer',
|
|
||||||
"Click a reminder twice to jump to the context!"
|
|
||||||
))
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
embed = discord.Embed(
|
|
||||||
description=t(_p(
|
|
||||||
'ui:reminderlist|embed:no_reminders|desc',
|
|
||||||
"You have no reminders to display!\n"
|
|
||||||
"Use {remindme} to create a new reminder."
|
|
||||||
)).format(
|
|
||||||
remindme=self.bot.core.cmd_name_cache['remindme'].mention,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
return embed
|
|
||||||
|
|||||||
165
src/modules/reminders/data.py
Normal file
165
src/modules/reminders/data.py
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
import discord
|
||||||
|
|
||||||
|
from data import RowModel, Registry
|
||||||
|
from data.columns import Integer, String, Timestamp, Bool
|
||||||
|
|
||||||
|
from babel import ctx_translator
|
||||||
|
from utils.lib import strfdur
|
||||||
|
from . import babel
|
||||||
|
|
||||||
|
|
||||||
|
_, _p, _np = babel._, babel._p, babel._np
|
||||||
|
|
||||||
|
|
||||||
|
class ReminderData(Registry, name='reminders'):
|
||||||
|
class Reminder(RowModel):
|
||||||
|
"""
|
||||||
|
Model representing a single reminder.
|
||||||
|
Since reminders are likely to change across shards,
|
||||||
|
does not use an explicit reference cache.
|
||||||
|
|
||||||
|
Schema
|
||||||
|
------
|
||||||
|
CREATE TABLE reminders(
|
||||||
|
reminderid SERIAL PRIMARY KEY,
|
||||||
|
userid BIGINT NOT NULL REFERENCES user_config(userid) ON DELETE CASCADE,
|
||||||
|
remind_at TIMESTAMPTZ NOT NULL,
|
||||||
|
content TEXT NOT NULL,
|
||||||
|
message_link TEXT,
|
||||||
|
interval INTEGER,
|
||||||
|
created_at TIMESTAMP DEFAULT (now() at time zone 'utc'),
|
||||||
|
title TEXT,
|
||||||
|
footer TEXT
|
||||||
|
);
|
||||||
|
CREATE INDEX reminder_users ON reminders (userid);
|
||||||
|
"""
|
||||||
|
_tablename_ = 'reminders'
|
||||||
|
|
||||||
|
reminderid = Integer(primary=True)
|
||||||
|
|
||||||
|
userid = Integer() # User which created the reminder
|
||||||
|
remind_at = Timestamp() # Time when the reminder should be executed
|
||||||
|
content = String() # Content the user gave us to remind them
|
||||||
|
message_link = String() # Link to original confirmation message, for context
|
||||||
|
interval = Integer() # Repeat interval, if applicable
|
||||||
|
created_at = Timestamp() # Time when this reminder was originally created
|
||||||
|
title = String() # Title of the final reminder embed, only set in automated reminders
|
||||||
|
footer = String() # Footer of the final reminder embed, only set in automated reminders
|
||||||
|
failed = Bool() # Whether the reminder was already attempted and failed
|
||||||
|
|
||||||
|
@property
|
||||||
|
def timestamp(self) -> int:
|
||||||
|
"""
|
||||||
|
Time when this reminder should be executed (next) as an integer timestamp.
|
||||||
|
"""
|
||||||
|
return int(self.remind_at.timestamp())
|
||||||
|
|
||||||
|
@property
|
||||||
|
def set_response(self) -> discord.Embed:
|
||||||
|
t = ctx_translator.get().t
|
||||||
|
embed = discord.Embed(
|
||||||
|
title=t(_p(
|
||||||
|
'reminder_set|title',
|
||||||
|
"Reminder Set!"
|
||||||
|
)),
|
||||||
|
description=t(_p(
|
||||||
|
'reminder_set|desc',
|
||||||
|
"At {timestamp} I will remind you about:\n"
|
||||||
|
"> {content}"
|
||||||
|
)).format(
|
||||||
|
timestamp=discord.utils.format_dt(self.remind_at),
|
||||||
|
content=self.content,
|
||||||
|
)[:2048],
|
||||||
|
colour=discord.Colour.brand_green(),
|
||||||
|
)
|
||||||
|
if self.interval:
|
||||||
|
embed.add_field(
|
||||||
|
name=t(_p(
|
||||||
|
'reminder_set|field:repeat|name',
|
||||||
|
"Repeats"
|
||||||
|
)),
|
||||||
|
value=t(_p(
|
||||||
|
'reminder_set|field:repeat|value',
|
||||||
|
"This reminder will repeat every `{interval}` (after the first reminder)."
|
||||||
|
)).format(interval=strfdur(self.interval, short=False)),
|
||||||
|
inline=False
|
||||||
|
)
|
||||||
|
return embed
|
||||||
|
|
||||||
|
@property
|
||||||
|
def embed(self) -> discord.Embed:
|
||||||
|
t = ctx_translator.get().t
|
||||||
|
|
||||||
|
embed = discord.Embed(
|
||||||
|
title=self.title or t(_p('reminder|embed', "You asked me to remind you!")),
|
||||||
|
colour=discord.Colour.orange(),
|
||||||
|
description=self.content,
|
||||||
|
timestamp=self.remind_at
|
||||||
|
)
|
||||||
|
|
||||||
|
if self.message_link:
|
||||||
|
embed.add_field(
|
||||||
|
name=t(_p('reminder|embed', "Context?")),
|
||||||
|
value="[{click}]({link})".format(
|
||||||
|
click=t(_p('reminder|embed', "Click Here")),
|
||||||
|
link=self.message_link
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if self.interval:
|
||||||
|
embed.add_field(
|
||||||
|
name=t(_p('reminder|embed', "Next reminder")),
|
||||||
|
value=f"<t:{self.timestamp + self.interval}:R>"
|
||||||
|
)
|
||||||
|
|
||||||
|
if self.footer:
|
||||||
|
embed.set_footer(text=self.footer)
|
||||||
|
|
||||||
|
return embed
|
||||||
|
|
||||||
|
@property
|
||||||
|
def formatted(self):
|
||||||
|
"""
|
||||||
|
Single-line string format for the reminder, intended for an embed.
|
||||||
|
"""
|
||||||
|
t = ctx_translator.get().t
|
||||||
|
content = self.content
|
||||||
|
trunc_content = content[:50] + '...' * (len(content) > 50)
|
||||||
|
|
||||||
|
if interval := self.interval:
|
||||||
|
if not interval % (24 * 60 * 60):
|
||||||
|
# Exact day case
|
||||||
|
days = interval // (24 * 60 * 60)
|
||||||
|
repeat = t(_np(
|
||||||
|
'reminder|formatted|interval',
|
||||||
|
"Every day",
|
||||||
|
"Every `{days}` days",
|
||||||
|
days
|
||||||
|
)).format(days=days)
|
||||||
|
elif not interval % (60 * 60):
|
||||||
|
# Exact hour case
|
||||||
|
hours = interval // (60 * 60)
|
||||||
|
repeat = t(_np(
|
||||||
|
'reminder|formatted|interval',
|
||||||
|
"Every hour",
|
||||||
|
"Every `{hours}` hours",
|
||||||
|
hours
|
||||||
|
)).format(hours=hours)
|
||||||
|
else:
|
||||||
|
# Inexact interval, e.g 10m or 1h 10m.
|
||||||
|
# Use short duration format
|
||||||
|
repeat = t(_p(
|
||||||
|
'reminder|formatted|interval',
|
||||||
|
"Every `{duration}`"
|
||||||
|
)).format(duration=strfdur(interval))
|
||||||
|
|
||||||
|
repeat = f"({repeat})"
|
||||||
|
else:
|
||||||
|
repeat = ""
|
||||||
|
|
||||||
|
return "<t:{timestamp}:R>, [{content}]({jump_link}) {repeat}".format(
|
||||||
|
jump_link=self.message_link,
|
||||||
|
content=trunc_content,
|
||||||
|
timestamp=self.timestamp,
|
||||||
|
repeat=repeat
|
||||||
|
)
|
||||||
304
src/modules/reminders/ui.py
Normal file
304
src/modules/reminders/ui.py
Normal file
@@ -0,0 +1,304 @@
|
|||||||
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
import asyncio
|
||||||
|
import datetime as dt
|
||||||
|
|
||||||
|
import discord
|
||||||
|
from discord.ui.select import select, Select, SelectOption
|
||||||
|
from discord.ui.button import button, Button, ButtonStyle
|
||||||
|
from discord.ui.text_input import TextInput, TextStyle
|
||||||
|
|
||||||
|
from meta import LionBot
|
||||||
|
from meta.errors import UserInputError
|
||||||
|
from utils.lib import utc_now, MessageArgs, parse_duration
|
||||||
|
from utils.ui import MessageUI, AButton, AsComponents, ConfigEditor
|
||||||
|
|
||||||
|
from . import babel, logger
|
||||||
|
|
||||||
|
_, _p, _np = babel._, babel._p, babel._np
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from .cog import Reminders
|
||||||
|
|
||||||
|
|
||||||
|
class ReminderList(MessageUI):
|
||||||
|
def __init__(self, bot: LionBot, user: discord.User, **kwargs):
|
||||||
|
super().__init__(callerid=user.id, **kwargs)
|
||||||
|
|
||||||
|
self.bot = bot
|
||||||
|
self.user = user
|
||||||
|
self.userid = user.id
|
||||||
|
|
||||||
|
self.cog: 'Reminders' = bot.get_cog('Reminders')
|
||||||
|
if self.cog is None:
|
||||||
|
raise ValueError("Cannot initialise ReminderList without loaded Reminder cog.")
|
||||||
|
|
||||||
|
# UI state
|
||||||
|
self._reminders = []
|
||||||
|
|
||||||
|
# ----- UI API -----
|
||||||
|
# ----- UI Components -----
|
||||||
|
# Clear button
|
||||||
|
@button(label="CLEAR_BUTTON_PLACEHOLDER", style=ButtonStyle.red)
|
||||||
|
async def clear_button(self, press: discord.Interaction, pressed: Button):
|
||||||
|
t = self.bot.translator.t
|
||||||
|
|
||||||
|
reminders = self._reminders
|
||||||
|
embed = discord.Embed(
|
||||||
|
title=t(_p('ui:reminderlist|button:clear|confirm|title', "Are You Sure?")),
|
||||||
|
description=t(_np(
|
||||||
|
'ui:reminderlist|button:clear|confirm|desc',
|
||||||
|
"Are you sure you want to delete your `{count}` reminder?",
|
||||||
|
"Are you sure you want to clear your `{count}` reminders?",
|
||||||
|
len(reminders)
|
||||||
|
)).format(count=len(reminders)),
|
||||||
|
colour=discord.Colour.dark_orange()
|
||||||
|
)
|
||||||
|
|
||||||
|
@AButton(label=t(_p('ui:reminderlist|button:clear|confirm|button:yes', "Yes, clear my reminders")))
|
||||||
|
async def confirm(interaction, pressed):
|
||||||
|
await interaction.response.defer()
|
||||||
|
reminders = await self.cog.data.Reminder.table.delete_where(userid=self.userid)
|
||||||
|
await self.cog.talk_cancel(*(r['reminderid'] for r in reminders)).send(
|
||||||
|
self.cog.executor_name, wait_for_reply=False
|
||||||
|
)
|
||||||
|
await press.edit_original_response(
|
||||||
|
embed=discord.Embed(
|
||||||
|
description=t(_p(
|
||||||
|
'ui:reminderlist|button:clear|success|desc',
|
||||||
|
"Your reminders have been cleared!"
|
||||||
|
)),
|
||||||
|
colour=discord.Colour.brand_green()
|
||||||
|
),
|
||||||
|
view=None
|
||||||
|
)
|
||||||
|
await pressed.view.close()
|
||||||
|
await self.cog.dispatch_update_for(self.userid)
|
||||||
|
|
||||||
|
@AButton(label=t(_p('ui:reminderlist|button:clear|confirm|button:cancel', "Cancel")))
|
||||||
|
async def deny(interaction, pressed):
|
||||||
|
await interaction.response.defer()
|
||||||
|
await press.delete_original_response()
|
||||||
|
await pressed.view.close()
|
||||||
|
|
||||||
|
components = AsComponents(confirm, deny)
|
||||||
|
await press.response.send_message(embed=embed, view=components, ephemeral=True)
|
||||||
|
|
||||||
|
async def clear_button_refresh(self):
|
||||||
|
self.clear_button.label = self.bot.translator.t(_p(
|
||||||
|
'ui:reminderlist|button:clear|label',
|
||||||
|
"Clear Reminders"
|
||||||
|
))
|
||||||
|
|
||||||
|
# New reminder button
|
||||||
|
@button(label="NEW_BUTTON_PLACEHOLDER", style=ButtonStyle.green)
|
||||||
|
async def new_button(self, press: discord.Interaction, pressed: Button):
|
||||||
|
"""
|
||||||
|
Pop up a modal for the user to enter new reminder information.
|
||||||
|
"""
|
||||||
|
t = self.bot.translator.t
|
||||||
|
if press.guild:
|
||||||
|
lmember = await self.bot.core.lions.fetch_member(press.guild.id, press.user.id)
|
||||||
|
timezone = lmember.timezone
|
||||||
|
else:
|
||||||
|
luser = await self.bot.core.lions.fetch_user(press.user.id)
|
||||||
|
timezone = luser.timezone
|
||||||
|
default = dt.datetime.now(tz=timezone).replace(hour=0, minute=0, second=0, microsecond=0)
|
||||||
|
|
||||||
|
time_field = TextInput(
|
||||||
|
label=t(_p(
|
||||||
|
'ui:reminderlist|button:new|modal|field:time|label',
|
||||||
|
"When would you like to be reminded?"
|
||||||
|
)),
|
||||||
|
placeholder=default.strftime('%Y-%m-%d %H:%M'),
|
||||||
|
required=True,
|
||||||
|
max_length=100,
|
||||||
|
)
|
||||||
|
|
||||||
|
interval_field = TextInput(
|
||||||
|
label=t(_p(
|
||||||
|
'ui:reminderlist|button:new|modal|field:repeat|label',
|
||||||
|
"How often should the reminder repeat?"
|
||||||
|
)),
|
||||||
|
placeholder=t(_p(
|
||||||
|
'ui:reminderlist|button:new|modal|field:repeat|placeholder',
|
||||||
|
"1 day 10 hours 5 minutes (Leave empty for no repeat.)"
|
||||||
|
)),
|
||||||
|
required=False,
|
||||||
|
max_length=100,
|
||||||
|
)
|
||||||
|
|
||||||
|
content_field = TextInput(
|
||||||
|
label=t(_p(
|
||||||
|
'ui:reminderlist|button:new|modal|field:content|label',
|
||||||
|
"What should I remind you?"
|
||||||
|
)),
|
||||||
|
required=True,
|
||||||
|
style=TextStyle.long,
|
||||||
|
max_length=2000,
|
||||||
|
)
|
||||||
|
|
||||||
|
modal = ConfigEditor(
|
||||||
|
time_field, interval_field, content_field,
|
||||||
|
title=t(_p(
|
||||||
|
'ui:reminderlist|button:new|modal|title',
|
||||||
|
"Set a Reminder"
|
||||||
|
))
|
||||||
|
)
|
||||||
|
|
||||||
|
@modal.submit_callback()
|
||||||
|
async def create_reminder(interaction: discord.Interaction):
|
||||||
|
remind_at = await self.cog.parse_time_static(time_field.value, timezone)
|
||||||
|
if intervalstr := interval_field.value:
|
||||||
|
interval = parse_duration(intervalstr)
|
||||||
|
if interval is None:
|
||||||
|
raise UserInputError(
|
||||||
|
t(_p(
|
||||||
|
'ui:reminderlist|button:new|modal|parse|error:interval',
|
||||||
|
"Cannot parse '{value}' as a duration."
|
||||||
|
)).format(value=intervalstr)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
interval = None
|
||||||
|
|
||||||
|
message = await self._original.original_response()
|
||||||
|
|
||||||
|
reminder = await self.cog.create_reminder(
|
||||||
|
userid=self.userid,
|
||||||
|
remind_at=remind_at,
|
||||||
|
content=content_field.value,
|
||||||
|
message_link=message.jump_url,
|
||||||
|
interval=interval,
|
||||||
|
)
|
||||||
|
embed = reminder.set_response
|
||||||
|
await interaction.response.send_message(embed=embed, ephemeral=True)
|
||||||
|
|
||||||
|
await press.response.send_modal(modal)
|
||||||
|
|
||||||
|
async def new_button_refresh(self):
|
||||||
|
self.new_button.label = self.bot.translator.t(_p(
|
||||||
|
'ui:reminderlist|button:new|label',
|
||||||
|
"New Reminder"
|
||||||
|
))
|
||||||
|
self.new_button.disabled = (len(self._reminders) >= 25)
|
||||||
|
|
||||||
|
# Cancel menu
|
||||||
|
@select(cls=Select, placeholder="CANCEL_REMINDER_PLACEHOLDER", min_values=0, max_values=1)
|
||||||
|
async def cancel_menu(self, selection: discord.Interaction, selected):
|
||||||
|
"""
|
||||||
|
Select a number of reminders to delete.
|
||||||
|
"""
|
||||||
|
await selection.response.defer()
|
||||||
|
if selected.values:
|
||||||
|
# Hopefully this is a list of reminderids
|
||||||
|
values = selected.values
|
||||||
|
|
||||||
|
# Delete from data
|
||||||
|
await self.cog.data.Reminder.table.delete_where(reminderid=values)
|
||||||
|
|
||||||
|
# Send cancellation
|
||||||
|
await self.cog.talk_cancel(*values).send(self.cog.executor_name, wait_for_reply=False)
|
||||||
|
|
||||||
|
self.cog._user_reminder_cache.pop(self.userid, None)
|
||||||
|
await self.refresh()
|
||||||
|
|
||||||
|
async def cancel_menu_refresh(self):
|
||||||
|
t = self.bot.translator.t
|
||||||
|
self.cancel_menu.placeholder = t(_p(
|
||||||
|
'ui:reminderlist|select:remove|placeholder',
|
||||||
|
"Select to cancel"
|
||||||
|
))
|
||||||
|
self.cancel_menu.options = [
|
||||||
|
SelectOption(
|
||||||
|
label=f"[{i}] {reminder.content[:50] + '...' * (len(reminder.content) > 50)}",
|
||||||
|
value=reminder.reminderid,
|
||||||
|
emoji=self.bot.config.emojis.getemoji('clock')
|
||||||
|
)
|
||||||
|
for i, reminder in enumerate(self._reminders, start=1)
|
||||||
|
]
|
||||||
|
self.cancel_menu.min_values = 0
|
||||||
|
self.cancel_menu.max_values = len(self._reminders)
|
||||||
|
|
||||||
|
# ----- UI Flow -----
|
||||||
|
async def refresh_layout(self):
|
||||||
|
to_refresh = (
|
||||||
|
self.cancel_menu_refresh(),
|
||||||
|
self.new_button_refresh(),
|
||||||
|
self.clear_button_refresh(),
|
||||||
|
)
|
||||||
|
await asyncio.gather(*to_refresh)
|
||||||
|
|
||||||
|
if self._reminders:
|
||||||
|
self.set_layout(
|
||||||
|
(self.new_button, self.clear_button,),
|
||||||
|
(self.cancel_menu,),
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.set_layout(
|
||||||
|
(self.new_button,),
|
||||||
|
)
|
||||||
|
|
||||||
|
async def make_message(self) -> MessageArgs:
|
||||||
|
t = self.bot.translator.t
|
||||||
|
reminders = self._reminders
|
||||||
|
|
||||||
|
if reminders:
|
||||||
|
lines = []
|
||||||
|
num_len = len(str(len(reminders)))
|
||||||
|
for i, reminder in enumerate(reminders):
|
||||||
|
lines.append(
|
||||||
|
"`[{:<{}}]` | {}".format(
|
||||||
|
i+1,
|
||||||
|
num_len,
|
||||||
|
reminder.formatted
|
||||||
|
)
|
||||||
|
)
|
||||||
|
description = '\n'.join(lines)
|
||||||
|
|
||||||
|
embed = discord.Embed(
|
||||||
|
description=description,
|
||||||
|
colour=discord.Colour.orange(),
|
||||||
|
timestamp=utc_now()
|
||||||
|
).set_author(
|
||||||
|
name=t(_p(
|
||||||
|
'ui:reminderlist|embed:list|author',
|
||||||
|
"Your reminders"
|
||||||
|
)),
|
||||||
|
icon_url=self.user.avatar or self.user.default_avatar
|
||||||
|
).set_footer(
|
||||||
|
text=t(_p(
|
||||||
|
'ui:reminderlist|embed:list|footer',
|
||||||
|
"Click a reminder to jump back to the context!"
|
||||||
|
))
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
embed = discord.Embed(
|
||||||
|
title=t(_p(
|
||||||
|
'ui:reminderlist|embed:no_reminders|title',
|
||||||
|
"You have no reminders set!"
|
||||||
|
)).format(
|
||||||
|
remindme=self.bot.core.cmd_name_cache['remindme'].mention,
|
||||||
|
),
|
||||||
|
colour=discord.Colour.dark_orange(),
|
||||||
|
)
|
||||||
|
embed.add_field(
|
||||||
|
name=t(_p(
|
||||||
|
'ui:reminderlist|embed|tips:name',
|
||||||
|
"Reminder Tips"
|
||||||
|
)),
|
||||||
|
value=t(_p(
|
||||||
|
'ui:reminderlist|embed|tips:value',
|
||||||
|
"- Use {at_cmd} to set a reminder at a known time (e.g. `at 10 am`).\n"
|
||||||
|
"- Use {in_cmd} to set a reminder in a certain time (e.g. `in 2 hours`).\n"
|
||||||
|
"- Both commands support repeating reminders using the `every` parameter.\n"
|
||||||
|
"- Remember to tell me your timezone with {timezone_cmd} if you haven't already!"
|
||||||
|
)).format(
|
||||||
|
at_cmd=self.bot.core.mention_cmd('remindme at'),
|
||||||
|
in_cmd=self.bot.core.mention_cmd('remindme in'),
|
||||||
|
timezone_cmd=self.bot.core.mention_cmd('my timezone'),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return MessageArgs(embed=embed)
|
||||||
|
|
||||||
|
async def reload(self):
|
||||||
|
self._reminders = await self.cog.get_reminders_for(self.userid)
|
||||||
@@ -287,7 +287,7 @@ class RoleMenuCog(LionCog):
|
|||||||
|
|
||||||
error = None
|
error = None
|
||||||
message = None
|
message = None
|
||||||
splits = msgstr.strip().rsplit('/', maxsplit=2)
|
splits = msgstr.strip().rsplit('/', maxsplit=2)[-2:]
|
||||||
if len(splits) == 2 and splits[0].isdigit() and splits[1].isdigit():
|
if len(splits) == 2 and splits[0].isdigit() and splits[1].isdigit():
|
||||||
chid, mid = map(int, splits)
|
chid, mid = map(int, splits)
|
||||||
channel = guild.get_channel(chid)
|
channel = guild.get_channel(chid)
|
||||||
@@ -678,7 +678,7 @@ class RoleMenuCog(LionCog):
|
|||||||
target_mine = True
|
target_mine = True
|
||||||
else:
|
else:
|
||||||
# Parse provided message link into a Message
|
# Parse provided message link into a Message
|
||||||
target_message: discord.Message = await self._parse_msg(message)
|
target_message: discord.Message = await self._parse_msg(ctx.guild, message)
|
||||||
target_mine = (target_message.author == ctx.guild.me)
|
target_mine = (target_message.author == ctx.guild.me)
|
||||||
|
|
||||||
# Check that this message is not already attached to a role menu
|
# Check that this message is not already attached to a role menu
|
||||||
@@ -747,7 +747,7 @@ class RoleMenuCog(LionCog):
|
|||||||
message_data['content'] = target_message.content
|
message_data['content'] = target_message.content
|
||||||
if target_message.embeds:
|
if target_message.embeds:
|
||||||
message_data['embed'] = target_message.embeds[0].to_dict()
|
message_data['embed'] = target_message.embeds[0].to_dict()
|
||||||
rawmessage = json.dumps(message_data)
|
rawmessagedata = json.dumps(message_data)
|
||||||
else:
|
else:
|
||||||
if rawmessage is not None:
|
if rawmessage is not None:
|
||||||
# Attempt to parse rawmessage
|
# Attempt to parse rawmessage
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ async def threecolumn_template(menu) -> MessageArgs:
|
|||||||
)
|
)
|
||||||
async def shop_template(menu) -> MessageArgs:
|
async def shop_template(menu) -> MessageArgs:
|
||||||
menuroles = menu.roles
|
menuroles = menu.roles
|
||||||
width = max(len(str(menurole.config.price.data)) for menurole in menuroles)
|
width = max(len(str(menurole.config.price.data)) for menurole in menuroles) if menuroles else 0
|
||||||
|
|
||||||
lines = []
|
lines = []
|
||||||
for menurole in menuroles:
|
for menurole in menuroles:
|
||||||
|
|||||||
@@ -57,6 +57,21 @@ class RoomCog(LionCog):
|
|||||||
for task in self._ticker_tasks.values():
|
for task in self._ticker_tasks.values():
|
||||||
task.cancel()
|
task.cancel()
|
||||||
|
|
||||||
|
def get_rooms(self, guildid: int, userid: Optional[int] = None):
|
||||||
|
"""
|
||||||
|
Get the private rooms in the given guild, using cache.
|
||||||
|
|
||||||
|
If `userid` is provided, filters by rooms which the given user is a member or owner of.
|
||||||
|
"""
|
||||||
|
guild_rooms = self._room_cache[guildid]
|
||||||
|
if userid:
|
||||||
|
rooms = {
|
||||||
|
cid: room for cid, room in guild_rooms.items() if userid in room.members or userid == room.data.ownerid
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
rooms = guild_rooms
|
||||||
|
return rooms
|
||||||
|
|
||||||
async def _prepare_rooms(self, room_data: list[RoomData.Room]):
|
async def _prepare_rooms(self, room_data: list[RoomData.Room]):
|
||||||
"""
|
"""
|
||||||
Launch or destroy rooms from the provided room data.
|
Launch or destroy rooms from the provided room data.
|
||||||
|
|||||||
@@ -29,12 +29,9 @@ member_overwrite = discord.PermissionOverwrite(
|
|||||||
)
|
)
|
||||||
owner_overwrite = discord.PermissionOverwrite.from_pair(*member_overwrite.pair())
|
owner_overwrite = discord.PermissionOverwrite.from_pair(*member_overwrite.pair())
|
||||||
owner_overwrite.update(
|
owner_overwrite.update(
|
||||||
manage_channels=True,
|
|
||||||
manage_webhooks=True,
|
manage_webhooks=True,
|
||||||
|
manage_channels=True,
|
||||||
manage_messages=True,
|
manage_messages=True,
|
||||||
create_public_threads=True,
|
|
||||||
create_private_threads=True,
|
|
||||||
manage_threads=True,
|
|
||||||
move_members=True,
|
move_members=True,
|
||||||
)
|
)
|
||||||
bot_overwrite = discord.PermissionOverwrite.from_pair(*owner_overwrite.pair())
|
bot_overwrite = discord.PermissionOverwrite.from_pair(*owner_overwrite.pair())
|
||||||
|
|||||||
@@ -233,8 +233,8 @@ class RoomUI(MessageUI):
|
|||||||
await submit.edit_original_response(
|
await submit.edit_original_response(
|
||||||
content=t(_p(
|
content=t(_p(
|
||||||
'ui:room_status|button:timer|timer_created',
|
'ui:room_status|button:timer|timer_created',
|
||||||
"Timer created successfully! Use `/pomodoro edit` to configure further."
|
"Timer created successfully! Use {edit_cmd} to configure further."
|
||||||
))
|
)).format(edit_cmd=self.bot.core.mention_cmd('pomodoro edit'))
|
||||||
)
|
)
|
||||||
await self.refresh()
|
await self.refresh()
|
||||||
except UserInputError:
|
except UserInputError:
|
||||||
|
|||||||
@@ -114,7 +114,8 @@ class Shopping(LionCog):
|
|||||||
return
|
return
|
||||||
|
|
||||||
@cmds.hybrid_group(
|
@cmds.hybrid_group(
|
||||||
name=_p('group:shop', 'shop')
|
name=_p('cmd:shop', 'shop'),
|
||||||
|
description=_p('cmd:shop|desc', "Purchase coloures, roles, and other goodies with LionCoins.")
|
||||||
)
|
)
|
||||||
async def shop_group(self, ctx: LionContext):
|
async def shop_group(self, ctx: LionContext):
|
||||||
return
|
return
|
||||||
@@ -188,8 +189,8 @@ class StoreManager(ui.LeoUI):
|
|||||||
Ask the current shop widget to redraw.
|
Ask the current shop widget to redraw.
|
||||||
"""
|
"""
|
||||||
self.page_num %= len(self.stores)
|
self.page_num %= len(self.stores)
|
||||||
await self.stores[self.page_num].refresh()
|
store = self.stores[self.page_num]
|
||||||
await self.stores[self.page_num].redraw()
|
await store.refresh()
|
||||||
|
|
||||||
def make_buttons(self):
|
def make_buttons(self):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import discord
|
|||||||
from discord.ui.button import Button
|
from discord.ui.button import Button
|
||||||
|
|
||||||
from meta import LionBot, LionCog
|
from meta import LionBot, LionCog
|
||||||
from utils import ui
|
from utils.ui import MessageUI
|
||||||
from babel.translator import LazyStr
|
from babel.translator import LazyStr
|
||||||
|
|
||||||
from ..data import ShopData
|
from ..data import ShopData
|
||||||
@@ -165,7 +165,7 @@ class Shop:
|
|||||||
return self._store_cls_(self)
|
return self._store_cls_(self)
|
||||||
|
|
||||||
|
|
||||||
class Store(ui.LeoUI):
|
class Store(MessageUI):
|
||||||
"""
|
"""
|
||||||
ABC for the UI used to interact with a given shop.
|
ABC for the UI used to interact with a given shop.
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ class Store(ui.LeoUI):
|
|||||||
(Note that each Shop instance is specific to a single customer.)
|
(Note that each Shop instance is specific to a single customer.)
|
||||||
"""
|
"""
|
||||||
def __init__(self, shop: Shop, interaction: discord.Interaction, **kwargs):
|
def __init__(self, shop: Shop, interaction: discord.Interaction, **kwargs):
|
||||||
super().__init__(**kwargs)
|
super().__init__(callerid=interaction.user.id, **kwargs)
|
||||||
|
|
||||||
# The shop this Store is an interface for
|
# The shop this Store is an interface for
|
||||||
# Client, shop, and customer data is taken from here
|
# Client, shop, and customer data is taken from here
|
||||||
@@ -189,36 +189,10 @@ class Store(ui.LeoUI):
|
|||||||
self.embed: Optional[discord.Embed] = None
|
self.embed: Optional[discord.Embed] = None
|
||||||
|
|
||||||
# Current interaction to use
|
# Current interaction to use
|
||||||
self.interaction: discord.Interaction = interaction
|
self._original = interaction
|
||||||
|
|
||||||
|
# ----- UI API -----
|
||||||
def set_store_row(self, row):
|
def set_store_row(self, row):
|
||||||
self.store_row = row
|
self.store_row = row
|
||||||
for item in row:
|
for item in row:
|
||||||
self.add_item(item)
|
self.add_item(item)
|
||||||
|
|
||||||
async def refresh(self):
|
|
||||||
"""
|
|
||||||
Refresh all UI elements.
|
|
||||||
"""
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
async def redraw(self):
|
|
||||||
"""
|
|
||||||
Redraw the store UI.
|
|
||||||
"""
|
|
||||||
if self.interaction.is_expired():
|
|
||||||
# This is actually possible,
|
|
||||||
# If the user keeps using the UI,
|
|
||||||
# but never closes it until the origin interaction expires
|
|
||||||
raise ValueError("This interaction has expired!")
|
|
||||||
|
|
||||||
if self.embed is None:
|
|
||||||
await self.refresh()
|
|
||||||
|
|
||||||
await self.interaction.edit_original_response(embed=self.embed, view=self)
|
|
||||||
|
|
||||||
async def make_embed(self):
|
|
||||||
"""
|
|
||||||
Embed page for this shop.
|
|
||||||
"""
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|||||||
@@ -8,12 +8,13 @@ from discord import app_commands as appcmds
|
|||||||
from discord.ui.select import select, Select, SelectOption
|
from discord.ui.select import select, Select, SelectOption
|
||||||
from discord.ui.button import button, Button
|
from discord.ui.button import button, Button
|
||||||
|
|
||||||
|
from meta import conf
|
||||||
from meta import LionCog, LionContext, LionBot
|
from meta import LionCog, LionContext, LionBot
|
||||||
from meta.errors import SafeCancellation
|
from meta.errors import SafeCancellation
|
||||||
from meta.logger import log_wrap
|
from meta.logger import log_wrap
|
||||||
from utils import ui
|
from utils.lib import error_embed, MessageArgs
|
||||||
from utils.lib import error_embed
|
|
||||||
from constants import MAX_COINS
|
from constants import MAX_COINS
|
||||||
|
from wards import equippable_role
|
||||||
|
|
||||||
from .. import babel
|
from .. import babel
|
||||||
|
|
||||||
@@ -292,6 +293,7 @@ class ColourShop(Shop):
|
|||||||
)
|
)
|
||||||
except discord.HTTPException:
|
except discord.HTTPException:
|
||||||
# Possibly Forbidden, or the role doesn't actually exist anymore (cache failure)
|
# Possibly Forbidden, or the role doesn't actually exist anymore (cache failure)
|
||||||
|
# TODO: Event log
|
||||||
pass
|
pass
|
||||||
await self.data.MemberInventory.table.delete_where(inventoryid=owned.data.inventoryid)
|
await self.data.MemberInventory.table.delete_where(inventoryid=owned.data.inventoryid)
|
||||||
|
|
||||||
@@ -414,7 +416,8 @@ class ColourShopping(ShopCog):
|
|||||||
item_type=self._shop_cls_._item_type_,
|
item_type=self._shop_cls_._item_type_,
|
||||||
deleted=False
|
deleted=False
|
||||||
)
|
)
|
||||||
if len(current) >= 25:
|
# Disabled because we can support more than 25 colours
|
||||||
|
if False and len(current) >= 25:
|
||||||
raise SafeCancellation(
|
raise SafeCancellation(
|
||||||
t(_p(
|
t(_p(
|
||||||
'cmd:editshop_colours_create|error:max_colours',
|
'cmd:editshop_colours_create|error:max_colours',
|
||||||
@@ -709,7 +712,7 @@ class ColourShopping(ShopCog):
|
|||||||
item_type=self._shop_cls_._item_type_,
|
item_type=self._shop_cls_._item_type_,
|
||||||
deleted=False
|
deleted=False
|
||||||
)
|
)
|
||||||
if len(current) >= 25:
|
if False and len(current) >= 25:
|
||||||
raise SafeCancellation(
|
raise SafeCancellation(
|
||||||
t(_p(
|
t(_p(
|
||||||
'cmd:editshop_colours_add|error:max_colours',
|
'cmd:editshop_colours_add|error:max_colours',
|
||||||
@@ -738,7 +741,7 @@ class ColourShopping(ShopCog):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Check that the author has permission to manage this role
|
# Check that the author has permission to manage this role
|
||||||
if not (ctx.author.guild_permissions.manage_roles and ctx.author.top_role > role):
|
if not (ctx.author.guild_permissions.manage_roles):
|
||||||
raise SafeCancellation(
|
raise SafeCancellation(
|
||||||
t(_p(
|
t(_p(
|
||||||
'cmd:editshop_colours_add|error:caller_perms',
|
'cmd:editshop_colours_add|error:caller_perms',
|
||||||
@@ -747,6 +750,9 @@ class ColourShopping(ShopCog):
|
|||||||
)).format(mention=role.mention)
|
)).format(mention=role.mention)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Final catch-all with more general error messages
|
||||||
|
await equippable_role(self.bot, role, ctx.author)
|
||||||
|
|
||||||
if role.permissions.administrator:
|
if role.permissions.administrator:
|
||||||
raise SafeCancellation(
|
raise SafeCancellation(
|
||||||
t(_p(
|
t(_p(
|
||||||
@@ -1016,7 +1022,7 @@ class ColourShopping(ShopCog):
|
|||||||
item = items[0]
|
item = items[0]
|
||||||
|
|
||||||
# Delete the item, respecting the delete setting.
|
# Delete the item, respecting the delete setting.
|
||||||
await self.data.ShopItem.table.update_where(itemid=item.itemid, deleted=True)
|
await self.data.ShopItem.table.update_where(itemid=item.itemid).set(deleted=True)
|
||||||
|
|
||||||
if delete_role:
|
if delete_role:
|
||||||
role = ctx.guild.get_role(item.roleid)
|
role = ctx.guild.get_role(item.roleid)
|
||||||
@@ -1093,6 +1099,24 @@ class ColourStore(Store):
|
|||||||
"""
|
"""
|
||||||
shop: ColourShop
|
shop: ColourShop
|
||||||
|
|
||||||
|
page_len = 25
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
self.pagen = 0
|
||||||
|
self.blocks = [[]]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def page_count(self):
|
||||||
|
return len(self.blocks)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def this_page(self):
|
||||||
|
self.pagen %= self.page_count
|
||||||
|
return self.blocks[self.pagen]
|
||||||
|
|
||||||
|
# ----- UI Components -----
|
||||||
@select(placeholder="SELECT_PLACEHOLDER")
|
@select(placeholder="SELECT_PLACEHOLDER")
|
||||||
async def select_colour(self, interaction: discord.Interaction, selection: Select):
|
async def select_colour(self, interaction: discord.Interaction, selection: Select):
|
||||||
t = self.shop.bot.translator.t
|
t = self.shop.bot.translator.t
|
||||||
@@ -1143,7 +1167,7 @@ class ColourStore(Store):
|
|||||||
selector = self.select_colour
|
selector = self.select_colour
|
||||||
|
|
||||||
# Get the list of ColourRoleItems that may be purchased
|
# Get the list of ColourRoleItems that may be purchased
|
||||||
purchasable = self.shop.purchasable()
|
purchasable = [item for item in self.shop.purchasable() if item in self.this_page]
|
||||||
owned = self.shop.owned()
|
owned = self.shop.owned()
|
||||||
|
|
||||||
option_map: dict[int, SelectOption] = {}
|
option_map: dict[int, SelectOption] = {}
|
||||||
@@ -1168,37 +1192,54 @@ class ColourStore(Store):
|
|||||||
selector.disabled = False
|
selector.disabled = False
|
||||||
selector.options = list(option_map.values())
|
selector.options = list(option_map.values())
|
||||||
|
|
||||||
async def refresh(self):
|
@button(emoji=conf.emojis.forward)
|
||||||
"""
|
async def next_page_button(self, press: discord.Interaction, pressed: Button):
|
||||||
Refresh the UI elements
|
await press.response.defer()
|
||||||
"""
|
self.pagen += 1
|
||||||
|
await self.refresh()
|
||||||
|
|
||||||
|
@button(emoji=conf.emojis.backward)
|
||||||
|
async def prev_page_button(self, press: discord.Interaction, pressed: Button):
|
||||||
|
await press.response.defer()
|
||||||
|
self.pagen -= 1
|
||||||
|
await self.refresh()
|
||||||
|
|
||||||
|
# ----- UI Flow -----
|
||||||
|
async def reload(self):
|
||||||
|
items = self.shop.items
|
||||||
|
self.blocks = [
|
||||||
|
items[i:i+self.page_len] for i in range(0, len(items), self.page_len)
|
||||||
|
] or [[]]
|
||||||
|
|
||||||
|
async def refresh_layout(self):
|
||||||
await self.select_colour_refresh()
|
await self.select_colour_refresh()
|
||||||
if not self.select_colour.options:
|
if self.page_count > 1:
|
||||||
self._layout = [self.store_row]
|
buttons = (self.prev_page_button, *self.store_row, self.next_page_button)
|
||||||
else:
|
else:
|
||||||
self._layout = [(self.select_colour,), self.store_row]
|
buttons = self.store_row
|
||||||
|
if not self.select_colour.options:
|
||||||
|
self._layout = [buttons]
|
||||||
|
else:
|
||||||
|
self._layout = [(self.select_colour,), buttons]
|
||||||
|
|
||||||
self.embed = self.make_embed()
|
async def make_message(self) -> MessageArgs:
|
||||||
|
|
||||||
def make_embed(self):
|
|
||||||
"""
|
|
||||||
Embed for this shop.
|
|
||||||
"""
|
|
||||||
t = self.shop.bot.translator.t
|
t = self.shop.bot.translator.t
|
||||||
|
owned = self.shop.owned()
|
||||||
if self.shop.items:
|
if self.shop.items:
|
||||||
owned = self.shop.owned()
|
page_items = self.this_page
|
||||||
|
page_start = self.pagen * self.page_len + 1
|
||||||
lines = []
|
lines = []
|
||||||
for i, item in enumerate(self.shop.items):
|
for i, item in enumerate(page_items):
|
||||||
if owned is not None and item.itemid == owned.itemid:
|
if owned is not None and item.itemid == owned.itemid:
|
||||||
line = t(_p(
|
line = t(_p(
|
||||||
'ui:colourstore|embed|line:owned_item',
|
'ui:colourstore|embed|line:owned_item',
|
||||||
"`[{j:02}]` | `{price} LC` | {mention} (You own this!)"
|
"`[{j:02}]` | `{price} LC` | {mention} (You own this!)"
|
||||||
)).format(j=i+1, price=item.price, mention=item.mention)
|
)).format(j=i+page_start, price=item.price, mention=item.mention)
|
||||||
else:
|
else:
|
||||||
line = t(_p(
|
line = t(_p(
|
||||||
'ui:colourstore|embed|line:item',
|
'ui:colourstore|embed|line:item',
|
||||||
"`[{j:02}]` | `{price} LC` | {mention}"
|
"`[{j:02}]` | `{price} LC` | {mention}"
|
||||||
)).format(j=i+1, price=item.price, mention=item.mention)
|
)).format(j=i+page_start, price=item.price, mention=item.mention)
|
||||||
lines.append(line)
|
lines.append(line)
|
||||||
description = '\n'.join(lines)
|
description = '\n'.join(lines)
|
||||||
else:
|
else:
|
||||||
@@ -1210,4 +1251,23 @@ class ColourStore(Store):
|
|||||||
title=t(_p('ui:colourstore|embed|title', "Colour Role Shop")),
|
title=t(_p('ui:colourstore|embed|title', "Colour Role Shop")),
|
||||||
description=description
|
description=description
|
||||||
)
|
)
|
||||||
return embed
|
if self.page_count > 1:
|
||||||
|
footer = t(_p(
|
||||||
|
'ui:colourstore|embed|footer:paged',
|
||||||
|
"Page {current}/{total}"
|
||||||
|
)).format(current=self.pagen + 1, total=self.page_count)
|
||||||
|
embed.set_footer(text=footer)
|
||||||
|
if owned:
|
||||||
|
embed.add_field(
|
||||||
|
name=t(_p(
|
||||||
|
'ui:colourstore|embed|field:warning|name',
|
||||||
|
"Note!"
|
||||||
|
)),
|
||||||
|
value=t(_p(
|
||||||
|
'ui:colourstore|embed|field:warning|value',
|
||||||
|
"Purchasing a new colour role will *replace* your currently colour "
|
||||||
|
"{current} without refund!"
|
||||||
|
)).format(current=owned.mention)
|
||||||
|
)
|
||||||
|
|
||||||
|
return MessageArgs(embed=embed)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user