diff --git a/plugins/Aka/locales/ru.po b/plugins/Aka/locales/ru.po new file mode 100644 index 000000000..ee86bc44c --- /dev/null +++ b/plugins/Aka/locales/ru.po @@ -0,0 +1,415 @@ +# Aka plugin for Limnoria +# Copyright (C) 2024 Limnoria +# ssdaniel24 , 2024. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-02-06 00:12+0100\n" +"PO-Revision-Date: 2024-06-12 21:50+0300\n" +"Last-Translator: ssdaniel24 \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 3.4.2\n" + +#: config.py:55 +msgid "" +"The maximum number of words allowed in a\n" +" command name. Setting this to an high value may slow down your bot\n" +" on long commands." +msgstr "" +"Максимальное количество слов, которые могут быть в имени команды.\n" +"Выставление большого значения может замедлить работу вашего бота на длинных " +"командах." + +#: config.py:61 +msgid "" +"Determines whether the Akas will be\n" +" browsable through the HTTP server." +msgstr "Определяет, где псевдонимы могут быть просмотрены через HTTP-сервер." + +#: plugin.py:141 plugin.py:274 plugin.py:732 +msgid "This Aka already exists." +msgstr "Этот псевдоним уже существует." + +#: plugin.py:170 plugin.py:182 plugin.py:196 plugin.py:301 plugin.py:318 +#: plugin.py:335 plugin.py:912 +msgid "This Aka does not exist." +msgstr "Этот псевдоним не существует." + +#: plugin.py:303 +msgid "This Aka is already locked." +msgstr "Этот псевдоним уже заблокирован." + +#: plugin.py:320 +msgid "This Aka is already unlocked." +msgstr "Этот псевдоним уже разблокирован." + +#: plugin.py:465 +msgid "By %s at %s" +msgstr "%s %s" + +#: plugin.py:501 +msgid "" +"\n" +" This plugin allows users to define aliases to commands and " +"combinations\n" +" of commands (via nesting).\n" +"\n" +" Importing from Alias\n" +" ^^^^^^^^^^^^^^^^^^^^\n" +"\n" +" Add an aka, Alias, which eases the transitioning to Aka from Alias.\n" +"\n" +" First we will load Alias and Aka::\n" +"\n" +" @load Alias\n" +" jamessan: The operation succeeded.\n" +" @load Aka\n" +" jamessan: The operation succeeded.\n" +"\n" +" Then we import the Alias database to Aka in case it exists and unload\n" +" Alias::\n" +"\n" +" @importaliasdatabase\n" +" jamessan: The operation succeeded.\n" +" @unload Alias\n" +" jamessan: The operation succeeded.\n" +"\n" +" And now we will finally add the Aka ``alias`` itself::\n" +"\n" +" @aka add \"alias\" \"aka $1 $*\"\n" +" jamessan: The operation succeeded.\n" +"\n" +" Now you can use Aka as you used Alias before.\n" +"\n" +" Trout\n" +" ^^^^^\n" +"\n" +" Add an aka, trout, which expects a word as an argument::\n" +"\n" +" @aka add trout \"reply action slaps $1 with a large " +"trout\"\n" +" jamessan: The operation succeeded.\n" +" @trout me\n" +" * bot slaps me with a large trout\n" +"\n" +" This ``trout`` aka requires the plugin ``Reply`` to be loaded since it\n" +" provides the ``action`` command.\n" +"\n" +" LastFM\n" +" ^^^^^^\n" +"\n" +" Add an aka, ``lastfm``, which expects a last.fm username and replies " +"with\n" +" their most recently played item::\n" +"\n" +" @aka add lastfm \"rss [format concat http://ws.audioscrobbler." +"com/1.0/user/ [format concat [web urlquote $1] /recenttracks.rss]]\"\n" +"\n" +" This ``lastfm`` aka requires the following plugins to be loaded: " +"``RSS``,\n" +" ``Format`` and ``Web``.\n" +"\n" +" ``RSS`` provides ``rss``, ``Format`` provides ``concat`` and ``Web`` " +"provides\n" +" ``urlquote``.\n" +"\n" +" Note that if the nested commands being aliased hadn't been quoted, " +"then\n" +" those commands would have been run immediately, and ``@lastfm`` would " +"always\n" +" reply with the same information, the result of those commands.\n" +" " +msgstr "" +"\n" +"Этот плагин позволяет пользователям создавать собственные псевдонимы к " +"командам и комбинациями команд (вложенные команды).\n" +"\n" +"Импорт из Alias\n" +"^^^^^^^^^^^^^^^\n" +"\n" +"Переходим к использованию плагина Aka от плагина Alias.\n" +"\n" +"Во-первых, загрузим Alias и Aka:\n" +"\n" +" @load Alias\n" +" jamessan: The operation succeeded.\n" +" @load Aka\n" +" jamessan: The operation succeeded.\n" +"\n" +"После этого импортируем базу данных плагина Alias в Aka, если та " +"существует, и отключим плагин Alias::\n" +"\n" +" @importaliasdatabase\n" +" jamessan: The operation succeeded.\n" +" @unload Alias\n" +" jamessan: The operation succeeded.\n" +"\n" +"И наконец добавим псевдоним команды из плагина Alias, чтобы оставить " +"обратную совместимость:\n" +"\n" +" @aka add \"alias\" \"aka $1 $*\"\n" +" jamessan: The operation succeeded.\n" +"\n" +"Теперь вы можете использовать плагин Aka как вы использовали до этого " +"плагин Alias.\n" +"\n" +"Дать леща\n" +"^^^^^^^^^\n" +"\n" +"Добавляем псевдоним (чтобы дать кому-то леща), который принимает одно слово " +"как аргумент::\n" +"\n" +" @aka add trout \"reply action с размаху даёт леща $1\"\n" +" jamessan: The operation succeeded.\n" +" @trout мне\n" +"* bot с размаху даёт леща мне\n" +"\n" +"LastFM\n" +"^^^^^^\n" +"\n" +"Добавляем псевдоним - ``lastfm``, принимает аргументом имя пользователя и " +"отвечает с последней песней, которая у него играла.\n" +"\n" +"@aka add lastfm \"rss [format concat http://ws.audioscrobbler.com/1.0/user/ " +"[format concat [web urlquote $1] /recenttracks.rss]]\"\n" +"\n" +"Этот псевдоним ``lastfm`` требует для работы следующие плагины: ``RSS``, " +"``Format`` и ``Web``.\n" +"\n" +"``RSS`` предоставляет ``rss``, ``Format`` предоставляет ``concat`` и " +"``Web`` предоставляет ``urlquote``.\n" +"\n" +"Обратите внимание, что если бы вложенные команды не были бы обозначены " +"кавычками, то они были бы запущены немедленно, и псевдоним ``@lastfm`` " +"показывал бы всегда одну и ту же информацию - результат выполнения этих " +"команд." + +#: plugin.py:699 +msgid "You've attempted more nesting than is currently allowed on this bot." +msgstr "Вы попробовали больше вложений, чем сейчас это разрешено в боте." + +#: plugin.py:703 +msgid " at least" +msgstr " хотя бы" + +#: plugin.py:712 +msgid "Locked by %s at %s" +msgstr "Заблокировано %s %s" + +#: plugin.py:717 +msgid "" +"\n" +"\n" +"Alias for %q.%s" +msgstr "" +"<глобальный псевдоним, %s %n>\n" +"\n" +"Псевдоним для %q.%s" + +#: plugin.py:718 plugin.py:722 +msgid "argument" +msgstr "аргумент" + +#: plugin.py:721 +msgid "" +"\n" +"\n" +"Alias for %q.%s" +msgstr "" +"<псевдоним %s,%s %n>\n" +"\n" +"Псевдоним для %q.%s" + +#: plugin.py:729 +msgid "You can't overwrite commands in this plugin." +msgstr "Вы не можете перезаписывать команды в этом плагине." + +#: plugin.py:734 +msgid "This Aka has too many spaces in its name." +msgstr "Этот псевдоним содержит слишком много пробелов в имени." + +#: plugin.py:739 +msgid "Can't mix $* and optional args (@1, etc.)" +msgstr "Нельзя перемешивать $* и необязательные аргументы (@1 и др.)" + +#: plugin.py:746 +msgid "This Aka is locked." +msgstr "Этот псевдоним заблокирован." + +#: plugin.py:750 +msgid "" +"[--channel <#channel>] \n" +"\n" +" Defines an alias that executes . The \n" +" should be in the standard \"command argument [nestedcommand " +"argument]\"\n" +" arguments to the alias; they'll be filled with the first, second, " +"etc.\n" +" arguments. $1, $2, etc. can be used for required arguments. @1, " +"@2,\n" +" etc. can be used for optional arguments. $* simply means \"all\n" +" arguments that have not replaced $1, $2, etc.\", ie. it will also\n" +" include optional arguments.\n" +" " +msgstr "" +"[--channel <#канал>] <название> <команда>\n" +"\n" +"Определяет псевдоним c <названием>, который запускает <команду>. <команда> " +"должна быть вида: \"<команда> <аргумент> [<вложенная команда> <аргумент>] " +"<аргументы к псевдониму>\". Аргументы к псевдониму по порядку: $1, $2 и тд. " +"используются для обязательных аргументов; @1, @2 и т.д. используются для " +"необязательных аргументов; $* означает \"все аргументы, которые не были " +"заменены с помощью $1, $2 и т.д.\", это включает в себя и необязательные " +"аргументы тоже." + +#: plugin.py:764 plugin.py:796 plugin.py:827 plugin.py:859 plugin.py:882 +#: plugin.py:905 plugin.py:951 plugin.py:994 +msgid "%r is not a valid channel." +msgstr "%r не является допустимым каналом." + +#: plugin.py:782 +msgid "" +"[--channel <#channel>] \n" +"\n" +" Overwrites an existing alias to execute instead. " +"The\n" +" should be in the standard \"command argument " +"[nestedcommand\n" +" argument]\" arguments to the alias; they'll be filled with the " +"first,\n" +" second, etc. arguments. $1, $2, etc. can be used for required\n" +" arguments. @1, @2, etc. can be used for optional arguments. $* " +"simply\n" +" means \"all arguments that have not replaced $1, $2, etc.\", ie. it " +"will\n" +" also include optional arguments.\n" +" " +msgstr "" +"[--channel <#канал>] <название> <команда>\n" +"\n" +"Перезаписывает существующий псевдоним с <названием>, чтобы он запускал " +"вместо предыдущей данную <команду>. <команда> должна быть вида: \"<команда> " +"<аргумент> [<вложенная команда> <аргумент>] <аргументы к псевдониму>\". " +"Аргументы к псевдониму по порядку: $1, $2 и тд. используются для " +"обязательных аргументов; @1, @2 и т.д. используются для необязательных " +"аргументов; $* означает \"все аргументы, которые не были заменены с помощью " +"$1, $2 и т.д.\", это включает в себя и необязательные аргументы тоже." + +#: plugin.py:819 +msgid "" +"[--channel <#channel>] \n" +"\n" +" Removes the given alias, if unlocked.\n" +" " +msgstr "" +"[--channel <#канал>] <название>\n" +"\n" +"Удаляет данный псевдоним, если тот не заблокирован." + +#: plugin.py:841 +msgid "" +"Check if the user has any of the required capabilities to manage\n" +" the regexp database." +msgstr "" +"Проверяет, есть ли у пользователя необходимые привилегии для управления " +"базой данных регулярных выражений." + +#: plugin.py:851 +msgid "" +"[--channel <#channel>] \n" +"\n" +" Locks an alias so that no one else can change it.\n" +" " +msgstr "" +"[--channel <#канал>] <псевдоним>\n" +"\n" +"Блокирует данный псевдоним, чтобы никто не мог его изменить." + +#: plugin.py:874 +msgid "" +"[--channel <#channel>] \n" +"\n" +" Unlocks an alias so that people can define new aliases over it.\n" +" " +msgstr "" +"[--channel <#канал>] <псевдоним>\n" +"\n" +"Разблокирует данный псевдоним, чтобы люди могли определять новые псевдонимы " +"поверх этого." + +#: plugin.py:897 +msgid "" +"[--channel <#channel>] \n" +"\n" +" This command shows the content of an Aka.\n" +" " +msgstr "" +"[--channel <#канал>] <псевдоним>\n" +"\n" +"Эта команда показывает содержание данного псевдонима." + +#: plugin.py:917 +msgid "" +"takes no arguments\n" +"\n" +" Imports the Alias database into Aka's, and clean the former." +msgstr "" +"не принимает аргументов\n" +"\n" +"Импортирует базу данных Alias в Aka, и очищает первую." + +#: plugin.py:922 +msgid "Alias plugin is not loaded." +msgstr "Плагин Alias не загружен." + +#: plugin.py:933 +msgid "Error occured when importing the %n: %L" +msgstr "Произошла ошибка при импорте %n: %L" + +#: plugin.py:941 +msgid "" +"[--channel <#channel>] [--keys] [--unlocked|--locked]\n" +"\n" +" Lists all Akas defined for . If is not " +"specified,\n" +" lists all global Akas. If --keys is given, lists only the Aka " +"names\n" +" and not their commands." +msgstr "" +"[--channel <#канал>] [--keys] [--unlocked|--locked]\n" +"\n" +"Показывает все псевдонимы, определённые для данного <канала>. Если <канал> " +"не дан в аргументах, то показывает все глобальные псевдонимы. Если дан --" +"keys, то показывает только названия псевдонимов без соответствующих им " +"команд." + +#: plugin.py:960 +msgid "--locked and --unlocked are incompatible options." +msgstr "--locked и --unlocked – несовместимые параметры." + +#: plugin.py:980 +msgid "No Akas found." +msgstr "Не найдено ни одного псевдонима." + +#: plugin.py:985 +msgid "" +"[--channel <#channel>] \n" +"\n" +" Searches Akas defined for . If is not " +"specified,\n" +" searches all global Akas." +msgstr "" +"[--channel <#канал>] <запрос>\n" +"\n" +"Производит поиск среди псевдонимов, определённых в данном <канале>, по " +"данному <запросу>. Если <канал> не дан в аргументах, то поиск производится " +"по всем глобальным псевдонимам." + +#: plugin.py:1004 +msgid "No matching Akas were found." +msgstr "Не найдено ни одного совпадающего псевдонима." diff --git a/plugins/Anonymous/locales/ru.po b/plugins/Anonymous/locales/ru.po new file mode 100644 index 000000000..b55ca654e --- /dev/null +++ b/plugins/Anonymous/locales/ru.po @@ -0,0 +1,249 @@ +# Anonymous plugin for Limnoria +# Copyright (C) 2024 Limnoria +# ssdaniel24 , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-02-06 00:12+0100\n" +"PO-Revision-Date: 2024-06-12 22:04+0300\n" +"Last-Translator: ssdaniel24 \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 3.4.2\n" + +#: config.py:50 +msgid "" +"Determines whether\n" +" the bot should require people trying to use this plugin to be in the\n" +" channel they wish to anonymously send to." +msgstr "" +"Определяет, должен ли бот требовать, чтобы люди, использующие этот плагин, " +"находились в канале, куда они хотят написать анонимно." + +#: config.py:54 +msgid "" +"Determines whether the bot should require\n" +" people trying to use this plugin to be registered." +msgstr "" +"Определяет, должен ли бот требовать регистрации у людей, которые " +"используют этот плагин." + +#: config.py:57 +msgid "" +"Determines what capability (if any) the bot should\n" +" require people trying to use this plugin to have." +msgstr "" +"Определяет какие привилегии (если таковые имеются) должен проверять бот у " +"людей, которые используют этот плагин." + +#: config.py:60 +msgid "" +"Determines whether the bot will allow the\n" +" \"tell\" command to be used. If true, the bot will allow the \"tell\"\n" +" command to send private messages to other users." +msgstr "" +"Определяет разрешение на использование команды \"tell\". Если значение " +"установлено в true, то бот позволит использовать команду \"tell\" для " +"отправки личных сообщений другим пользователям." + +#: plugin.py:45 +msgid "" +"\n" +" This plugin allows users to act through the bot anonymously. The " +"'do'\n" +" command has the bot perform an anonymous action in a given channel, " +"and\n" +" the 'say' command allows other people to speak through the bot. " +"Since\n" +" this can be fairly well abused, you might want to set\n" +" supybot.plugins.Anonymous.requireCapability so only users with that\n" +" capability can use this plugin. For extra security, you can require " +"that\n" +" the user be *in* the channel they are trying to address anonymously " +"with\n" +" supybot.plugins.Anonymous.requirePresenceInChannel, or you can " +"require\n" +" that the user be registered by setting\n" +" supybot.plugins.Anonymous.requireRegistration.\n" +"\n" +" Example: Proving that you are the owner\n" +" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +"\n" +" When you ask for cloak/vhost for your bot, the network operators will\n" +" often ask you to prove that you own the bot. You can do this for " +"example\n" +" with the following method::\n" +"\n" +" @load Anonymous\n" +" @config plugins.anonymous.requirecapability owner\n" +" @config plugins.anonymous.allowprivatetarget True\n" +" @anonymous say Hi, my owner is :)\n" +"\n" +" This\n" +" * Loads the plugin.\n" +" * Makes the plugin require that you are the owner\n" +"\n" +" * If anyone could send private messages as the bot, they could also\n" +" access network services.\n" +"\n" +" * Allows sending private messages\n" +" * Sends message ``Hi, my owner is :)`` to ``operator " +"nick``.\n" +"\n" +" * Note that you won't see the messages that are sent to the bot.\n" +"\n" +" " +msgstr "" +"Этот плагин позволяет пользователям анонимно взаимодействовать через бота. " +"Команда 'do' позволяет выполнить некоторое анонимное действие через бота в " +"данном канале, и команда 'say' позволяет другим пользователям общаться " +"через бота. Этим плагином можно легко злоупотреблять, поэтому возможно вы " +"захотите настройку supybot.plugins.Anonymous.requireCapability, чтобы " +"только пользователи с данной привилегией могли могли использовать этот " +"плагин. Для повышенной безопасности, вы можете требовать, чтобы " +"пользователь был в канале, где они хотят взаимодействовать через бота " +"анонимно, с помощью настроки supybot.plugins.Anonymous." +"requirePresenceInChannel. Или вы можете требовать, чтобы пользователь был " +"зарегистрирован с помощью настройки supybot.plugins.Anonymous." +"requireRegistration.\n" +"\n" +"Пример: доказательство того, что вы являетесь владельцем\n" +"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +"\n" +"Когда вы просите cloak или vhost для своего бота, операторы сети часто " +"могут просить вас доказать, что являетесь владельцем бота. Для примера вы " +"можете сделать это так:\n" +"\n" +"@load Anonymous\n" +"@config plugins.anonymous.requirecapability owner\n" +"@config plugins.anonymous.allowprivatetarget True\n" +"@anonymous say <ник оператора>: Привет, мой хозяин это <ваш ник> :)\n" +"\n" +"Комбинация команд выше\n" +"* Загружает плагин.\n" +"* Выставляет в настройках плагина, чтобы бот требовал привилегии " +"владельца.\n" +"\n" +" * Если кто-нибудь может посылать сообщения от имени бота, то они в том " +"числе могут запрашивать сервисы сети.\n" +"\n" +"* Разрешает отправку личных сообщений.\n" +"* Отправляет сообщение ``Привет, мой хозяин это <ваш ник> :)`` в адрес " +"``<ника оператора>``.\n" +"\n" +" Примечание: вы не сможете получать сообщения, которые отправлены боту." + +#: plugin.py:98 +msgid "You must be in %s to %q in there." +msgstr "Вы должны быть в %s, чтобы %q там." + +#: plugin.py:102 +msgid "I'm lobotomized in %s." +msgstr "Мне сделали лоботомию в %s." + +#: plugin.py:105 +msgid "" +"That channel has set its capabilities so as to disallow the use of this " +"plugin." +msgstr "Этот канал настроен на запрет использования этого плагина." + +#: plugin.py:108 +msgid "" +"This command is disabled (supybot.plugins.Anonymous.allowPrivateTarget is " +"False)." +msgstr "" +"Эта команда отключена (настройка supybot.plugins.Anonymous." +"allowPrivateTarget установлена в False)." + +#: plugin.py:112 +msgid "" +" \n" +"\n" +" Sends to .\n" +" " +msgstr "" +"<канал> <текст>\n" +"\n" +"Отправляет <текст> в <канал>." + +#: plugin.py:124 +msgid "" +" \n" +"\n" +" Sends to . Can only be used if\n" +" supybot.plugins.Anonymous.allowPrivateTarget is True.\n" +" " +msgstr "" +"<ник> <текст>\n" +"\n" +"Отправляет <текст> в адрес <ника>. Команда может быть использована, только " +"если настройка supybot.plugins.Anonymous.allowPrivateTarget установлена в " +"True." + +#: plugin.py:137 +msgid "" +" \n" +"\n" +" Performs in .\n" +" " +msgstr "" +"<канал> <действие>\n" +"\n" +"Выполняет <действие> в <канале>." + +#: plugin.py:148 +msgid "" +" \n" +"\n" +" Sends the to 's last message.\n" +" is typically a smiley or an emoji.\n" +"\n" +" This may not be supported on the current network, as this\n" +" command depends on IRCv3 features.\n" +" This is also not supported if\n" +" supybot.protocols.irc.experimentalExtensions disabled\n" +" (don't enable it unless you know what you are doing).\n" +" " +msgstr "" +"<канал> <реакция> <ник>\n" +"\n" +"Отправляет <реакцию> в ответ на последнее сообщение <ника>. <реакция> это " +"обычно смайлик или эмодзи.\n" +"\n" +"Текущая сеть может не поддерживать эту команду, так как команда зависит от " +"возможностей IRCv3. Она также не поддерживается, если в плагине отключена " +"настройка supybot.protocols.irc.experimentalExtensions (не переключайте, " +"если вы не знаете, что вы делаете)." + +#: plugin.py:162 +msgid "" +"Unable to react, supybot.protocols.irc.experimentalExtensions is disabled." +msgstr "" +"Не удаётся отправить реакцию, настройка supybot.protocols.irc." +"experimentalExtensions отключена." + +#: plugin.py:167 +msgid "Unable to react, the network does not support message-tags." +msgstr "" +"Не удаётся отправить реакцию, данная сеть не поддерживает message-tags." + +#: plugin.py:172 +msgid "" +"Unable to react, the network does not allow draft/reply and/or draft/react." +msgstr "" +"Не удаётся отправить реакцию, данная сеть не позволяет использовать" +"draft/reply или draft/react." + +#: plugin.py:181 +msgid "I couldn't find a message from %s in my history of %s messages." +msgstr "Не могу найти сообщение от %s в моей истории сообщений (%s)." + +#: plugin.py:189 +msgid "Unable to react, %s's last message does not have a message id." +msgstr "" +"Не удаётся отправить реакцию, последнее сообщение %s не имеет id сообщения." diff --git a/plugins/PluginDownloader/locales/ru.po b/plugins/PluginDownloader/locales/ru.po new file mode 100644 index 000000000..53ebbc6f7 --- /dev/null +++ b/plugins/PluginDownloader/locales/ru.po @@ -0,0 +1,205 @@ +# PluginDownloader plugin for Limnoria +# Copyright (C) 2024 Limnoria +# ssdaniel24 , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-02-06 00:12+0100\n" +"PO-Revision-Date: 2024-06-12 22:10+0300\n" +"Last-Translator: ssdaniel24 \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 3.4.2\n" + +#: plugin.py:167 +msgid "" +"Plugin is probably not compatible with your Python version (3.x) and could " +"not be converted because 2to3 is not installed." +msgstr "" +"Плагин возможно несовместим с вашей версией Python (3.x) и не может быть " +"конвертирован, так как 2to3 не установлен." + +#: plugin.py:174 +msgid "" +"Plugin was designed for Python 2, but an attempt to convert it to Python 3 " +"has been made. There is no guarantee it will work, though." +msgstr "" +"Плагин был разработан на Python 2, но была сделана попытка конвертировать " +"его на Python 3, однако не гарантируется, что плагин будет работать." + +#: plugin.py:178 +msgid "Plugin successfully installed." +msgstr "Плагин успешно установлен." + +#: plugin.py:323 +msgid "" +"\n" +" This plugin allows you to install unofficial plugins from\n" +" multiple repositories easily. Use the \"repolist\" command to see list " +"of\n" +" available repositories and \"repolist \" to list plugins,\n" +" which are available in that repository. When you want to install a " +"plugin,\n" +" just run command \"install \".\n" +"\n" +" First start by using the `plugindownloader repolist` command to see the\n" +" available repositories.\n" +"\n" +" To see the plugins inside repository, use command\n" +" `plugindownloader repolist `\n" +"\n" +" When you see anything interesting, you can use\n" +" `plugindownloader info ` to see what the plugin is\n" +" for.\n" +"\n" +" And finally to install the plugin,\n" +" `plugindownloader install `.\n" +"\n" +" Examples\n" +" ^^^^^^^^\n" +"\n" +" ::\n" +"\n" +" < Mikaela> @load PluginDownloader\n" +" < Limnoria> Ok.\n" +" < Mikaela> @plugindownloader repolist\n" +" < Limnoria> Antibody, jlu5, Hoaas, Iota, progval, SpiderDave, " +"boombot, code4lib, code4lib-edsu, code4lib-snapshot, doorbot, frumious, " +"jonimoose, mailed-notifier, mtughan-weather, nanotube-bitcoin, nyuszika7h, " +"nyuszika7h-old, pingdom, quantumlemur, resistivecorpse, scrum, skgsergio, " +"stepnem\n" +" < Mikaela> @plugindownloader repolist progval\n" +" < Limnoria> AttackProtector, AutoTrans, Biography, Brainfuck, " +"ChannelStatus, Cleverbot, Coffee, Coinpan, Debian, ERepublik, Eureka, " +"Fortune, GUI, GitHub, Glob2Chan, GoodFrench, I18nPlaceholder, IMDb, " +"IgnoreNonVoice, Iwant, Kickme, LimnoriaChan, LinkRelay, ListEmpty, Listener, " +"Markovgen, MegaHAL, MilleBornes, NoLatin1, NoisyKarma, OEIS, PPP, PingTime, " +"Pinglist, RateLimit, Rbls, Redmine, Scheme, Seeks, (1 more message)\n" +" < Mikaela> more\n" +" < Limnoria> SilencePlugin, StdoutCapture, Sudo, SupyML, SupySandbox, " +"TWSS, Trigger, Trivia, Twitter, TwitterStream, Untiny, Variables, WebDoc, " +"WebLogs, WebStats, Website, WikiTrans, Wikipedia, WunderWeather\n" +" < Mikaela> @plugindownloader info progval Wikipedia\n" +" < Limnoria> Grabs data from Wikipedia.\n" +" < Mikaela> @plugindownloader install progval Wikipedia\n" +" < Limnoria> Ok.\n" +" < Mikaela> @load Wikipedia\n" +" < Limnoria> Ok.\n" +" " +msgstr "" +"Этот плагин позволяет вам с легкостью устанавливать неофициальные плагины из " +"различных репозиториев. Используйте команду \"repolist\", чтобы увидеть " +"список доступных репозиториев, и команду \"repolist <репозиторий>\", чтобы " +"увидеть список плагинов, доступные в данном репозитории. Когда вы захотите " +"установить плагин, просто запустите команду \"install <репозиторий> " +"<плагин>\".\n" +"\n" +"Для начала используйте команду `plugindownloader repolist`, чтобы увидеть " +"доступные репозитории.\n" +"\n" +"Чтобы увидеть плагины в репозитории, используйте команду `plugindownloader " +"repolist <репозиторий>`\n" +"\n" +"Когда вы найдёте что-нибудь интересное, вы можете использовать команду " +"`plugindownloader info <репозиторий> <плагин>`, чтобы увидеть для чего этот " +"плагин нужен.\n" +"\n" +"И наконец, для установки плагина используйте `plugindownloader install " +"<репозиторий> <плагин>`.\n" +"\n" +"Примеры\n" +"^^^^^^^\n" +"\n" +"< Mikaela> @load PluginDownloader\n" +"< Limnoria> Ok.\n" +"< Mikaela> @plugindownloader repolist\n" +"< Limnoria> Antibody, jlu5, Hoaas, Iota, progval, SpiderDave, boombot, " +"code4lib, code4lib-edsu, code4lib-snapshot, doorbot, frumious, jonimoose, " +"mailed-notifier, mtughan-weather, nanotube-bitcoin, nyuszika7h, nyuszika7h-" +"old, pingdom, quantumlemur, resistivecorpse, scrum, skgsergio, stepnem\n" +"< Mikaela> @plugindownloader repolist progval\n" +"< Limnoria> AttackProtector, AutoTrans, Biography, Brainfuck, ChannelStatus, " +"Cleverbot, Coffee, Coinpan, Debian, ERepublik, Eureka, Fortune, GUI, GitHub, " +"Glob2Chan, GoodFrench, I18nPlaceholder, IMDb, IgnoreNonVoice, Iwant, Kickme, " +"LimnoriaChan, LinkRelay, ListEmpty, Listener, Markovgen, MegaHAL, " +"MilleBornes, NoLatin1, NoisyKarma, OEIS, PPP, PingTime, Pinglist, RateLimit, " +"Rbls, Redmine, Scheme, Seeks, (1 more message)\n" +"< Mikaela> more\n" +"< Limnoria> SilencePlugin, StdoutCapture, Sudo, SupyML, SupySandbox, TWSS, " +"Trigger, Trivia, Twitter, TwitterStream, Untiny, Variables, WebDoc, WebLogs, " +"WebStats, Website, WikiTrans, Wikipedia, WunderWeather\n" +"< Mikaela> @plugindownloader info progval Wikipedia\n" +"< Limnoria> Grabs data from Wikipedia.\n" +"< Mikaela> @plugindownloader install progval Wikipedia\n" +"< Limnoria> Ok.\n" +"< Mikaela> @load Wikipedia\n" +"< Limnoria> Ok." + +#: plugin.py:368 +msgid "" +"[]\n" +"\n" +" Displays the list of plugins in the .\n" +" If is not given, returns a list of available\n" +" repositories." +msgstr "" +"[<репозиторий>]\n" +"\n" +"Показывает список плагинов в данном <репозитории>. Если <репозиторий> не дан " +"аргументом, то показывает список доступных репозиториев." + +#: plugin.py:376 plugin.py:387 +msgid ", " +msgstr "" + +#: plugin.py:378 plugin.py:400 plugin.py:425 +msgid "This repository does not exist or is not known by this bot." +msgstr "Этот репозиторий не существует или неизвестен боту." + +#: plugin.py:385 +msgid "No plugin found in this repository." +msgstr "В этом репозитории не найдено ни одного плагина." + +#: plugin.py:392 +msgid "" +" \n" +"\n" +" Downloads and installs the from the ." +msgstr "" +"<репозиторий> <плагин>\n" +"\n" +"Скачивает и устанавливает данный <плагин> из данного <репозитория>." + +#: plugin.py:396 +msgid "" +"This command is not available, because supybot.commands.allowShell is False." +msgstr "" +"Эта команда недоступна, так как настройка supybot.command.allowShell " +"установлена в False." + +#: plugin.py:405 plugin.py:430 +msgid "This plugin does not exist in this repository." +msgstr "Этого плагина нет в данном репозитории." + +#: plugin.py:420 +msgid "" +" \n" +"\n" +" Displays informations on the in the ." +msgstr "" +"<репозиторий> <плагин>\n" +"\n" +"Показывает информацию о данном <плагине> в этом <репозитории>." + +#: plugin.py:434 +msgid "No README found for this plugin." +msgstr "В этом плагине не найдено файла README." + +#: plugin.py:437 +msgid "This plugin has no description." +msgstr "Этот плагин не предоставляет описание." diff --git a/plugins/Seen/locales/ru.po b/plugins/Seen/locales/ru.po new file mode 100644 index 000000000..82c6b3343 --- /dev/null +++ b/plugins/Seen/locales/ru.po @@ -0,0 +1,201 @@ +# Seen plugin for Limnoria +# Copyright (C) 2024 Limnoria +# ssdaniel24 , 2024. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-02-06 00:12+0100\n" +"PO-Revision-Date: 2024-06-12 15:01+0300\n" +"Last-Translator: ssdaniel24 \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 3.4.2\n" + +#: config.py:50 +msgid "" +"The minimum non-wildcard characters\n" +" required to perform a 'seen' request. Of course, it only applies if " +"there\n" +" is a wildcard in the request." +msgstr "" +"Минимальное количество обыкновенных символов (не символов подстановки!), " +"необходимые для запроса 'seen'. Конечно же эта настройка действует только, " +"когда запрос содержит символы подстановки." + +#: config.py:54 +msgid "" +"Determines whether the last message will\n" +" be displayed with @seen. Useful for keeping messages from a channel\n" +" private." +msgstr "" +"Определяет будет ли последнее сообщение показываться в результатах команды " +"seen. Полезно для сохранения приватности сообщений в канале." + +#: plugin.py:98 +msgid "" +"This plugin allows you to see when and what someone last said and\n" +" what you missed since you left a channel." +msgstr "" +"Этот плагин позволяет вам видеть, когда и что кто-нибудь в последний раз " +"написал, и что вы упустили с тех пор как покинули канал." + +#: plugin.py:190 +msgid "Not enough non-wildcard characters." +msgstr "Недостаточно обыкновенных символов (НЕ символов подстановки)." + +#: plugin.py:198 plugin.py:306 +msgid "%s was last seen in %s %s ago" +msgstr "%s в последний раз видели в %s %s назад." + +#: plugin.py:204 plugin.py:283 plugin.py:310 +msgid "%s: %s" +msgstr "%s: %s" + +#: plugin.py:210 +msgid "%s (%s ago)" +msgstr "%s (%s назад)" + +#: plugin.py:212 +msgid "%s could be %L" +msgstr "%s мог(ла) быть %L" + +#: plugin.py:212 +msgid "or" +msgstr "или" + +#: plugin.py:214 +msgid "I haven't seen anyone matching %s." +msgstr "Я не видел никого, кто бы соответствовал %s." + +#: plugin.py:216 plugin.py:313 +msgid "I have not seen %s." +msgstr "Я не видел %s." + +#: plugin.py:223 +msgid "You must be in %s to use this command." +msgstr "Вы должны быть в %s для использования этой команды." + +#: plugin.py:225 +msgid "%s must be in %s to use this command." +msgstr "%s должен/должна быть в %s для использования этой команды." + +#: plugin.py:231 +msgid "" +"[] \n" +"\n" +" Returns the last time was seen and what was last " +"seen\n" +" saying. is only necessary if the message isn't sent on " +"the\n" +" channel itself. may contain * as a wildcard.\n" +" " +msgstr "" +"[<канал>] <ник>\n" +"\n" +"Возвращает последнее время, когда видели <ник> и его/её последнее " +"сообщение. Передавать <канал> требуется в случае, если команда запущена не " +"на этом канале. Данный <ник> может содержать * как символ подстановки." + +#: plugin.py:238 plugin.py:256 +msgid "You've found me!" +msgstr "О нет! Вы нашли меня." + +#: plugin.py:246 +msgid "" +"[] [--user ] []\n" +"\n" +" Returns the last time was seen and what was last " +"seen\n" +" doing. This includes any form of activity, instead of just " +"PRIVMSGs.\n" +" If isn't specified, returns the last activity seen in\n" +" . If --user is specified, looks up name in the user " +"database\n" +" and returns the last time user was active in . " +"is\n" +" only necessary if the message isn't sent on the channel itself.\n" +" " +msgstr "" +"[<канал>] [--user <имя>] [<ник>]\n" +"\n" +"Возвращает последнее время, когда видели <ник> и его/её последние " +"действия. Это включает в себя любые формы активности, не ограничиваясь " +"только PRIVMSG. Если <ник> не задан, то возвращает последнюю активность в " +"данном <канале>. Если задан --user, то ищет данное <имя> в базе данных и " +"возвращает последнее время, когда этот пользователь был активен в данном " +"<канале>. Передавать <канал> требуется в случае, если команда запущена не " +"на этом канале." + +#: plugin.py:280 +msgid "Someone was last seen in %s %s ago" +msgstr "В последний раз кого-то видели в %s %s назад" + +#: plugin.py:286 +msgid "I have never seen anyone." +msgstr "Я не видел никого." + +#: plugin.py:290 +msgid "" +"[]\n" +"\n" +" Returns the last thing said in . is only " +"necessary\n" +" if the message isn't sent in the channel itself.\n" +" " +msgstr "" +"[<канал>]\n" +"\n" +"Возвращает последнее, что писали в <канале>. Передавать в аргумент <канал> " +"требуется в случае, если команда запущена не на этом канале." + +#: plugin.py:317 +msgid "" +"[] \n" +"\n" +" Returns the last time was seen and what was last " +"seen\n" +" saying. This looks up in the user seen database, which " +"means\n" +" that it could be any nick recognized as user that was " +"seen.\n" +" is only necessary if the message isn't sent in the " +"channel\n" +" itself.\n" +" " +msgstr "" +"[<канал>] <имя>\n" +"\n" +"Возвращает время, когда в последний раз видели <имя> и его/её последнее " +"сообщение. Эта команда ищет <имя> в базе данных пользователей Seen, что " +"значит поиск будет производится среди всех ников, закреплённых за " +"пользователем с данным <именем>. Передавать в аргументы <канал> требуется " +"в случае, если команда запущена не на этом канале." + +#: plugin.py:331 +msgid "" +"[] []\n" +"\n" +" Returns the messages since last left the channel.\n" +" If is not given, it defaults to the nickname of the person\n" +" calling the command.\n" +" " +msgstr "" +"[<канал>] [<ник>]\n" +"\n" +"Возвращает сообщения с тех пор как данный <ник> покинул канал. Если <ник> " +"не передан в аргументы, то используется ник пользователя, запустившего " +"команду." + +#: plugin.py:363 +msgid "I couldn't find in my history of %s messages where %r last left %s" +msgstr "Не могу найти в моей истории сообщений (%s), где %r покинул %s." + +#: plugin.py:372 +msgid "Either %s didn't leave, or no messages were sent while %s was gone." +msgstr "" +"Либо %s не покидал(а) канал, либо ни одного сообщения не было отправлено с " +"тех пор, как %s вышел/вышла." diff --git a/plugins/Todo/locales/ru.po b/plugins/Todo/locales/ru.po new file mode 100644 index 000000000..992757566 --- /dev/null +++ b/plugins/Todo/locales/ru.po @@ -0,0 +1,176 @@ +# Todo plugin for Limnoria +# Copyright (C) 2024 Limnoria +# ssdaniel24 , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2022-02-06 00:12+0100\n" +"PO-Revision-Date: 2024-06-12 15:01+0300\n" +"Last-Translator: ssdaniel24 \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 3.4.2\n" + +#: config.py:51 +msgid "" +"Determines whether users can read the\n" +" todo-list of another user." +msgstr "Определяет, могут ли пользователи читать чужие списки дел." + +#: plugin.py:123 +msgid "" +"This plugin allows you to create your own personal to-do list on\n" +" the bot." +msgstr "" +"Этот плагин позволяет вам создавать ваши собственные списки дел в боте." + +#: plugin.py:139 +msgid "" +"[] []\n" +"\n" +" Retrieves a task for the given task id. If no task id is given, " +"it\n" +" will return a list of task ids that that user has added to their " +"todo\n" +" list.\n" +" " +msgstr "" +"[<имя пользователя>] []\n" +"\n" +"Получает задачу по заданному id. Если id не передан в аргументы, то " +"возвращает список id задач, которые данный пользователь добавил в свой " +"список дел." + +#: plugin.py:150 +msgid "You are not allowed to see other users todo-list." +msgstr "Вам не разрешено видеть чужие списки дел." + +#: plugin.py:157 +msgid "#%i: %s" +msgstr "#%i: %s" + +#: plugin.py:162 +msgid "%s for %s: %L" +msgstr "%s для %s: %L" + +#: plugin.py:166 +msgid "That user has no tasks in their todo list." +msgstr "Этот пользователь не имеет задач в его/её списке дел." + +#: plugin.py:168 +msgid "You have no tasks in your todo list." +msgstr "У вас нет задач в вашем списке дел." + +#: plugin.py:175 +msgid "Active" +msgstr "Активная" + +#: plugin.py:177 +msgid "Inactive" +msgstr "Неактивная" + +#: plugin.py:179 +msgid ", priority: %i" +msgstr ", приоритет: %i" + +#: plugin.py:182 +msgid "%s todo for %s: %s (Added at %s)" +msgstr "%s задача для %s: %s (добавлено %s)" + +#: plugin.py:186 plugin.py:270 plugin.py:284 +msgid "task id" +msgstr "id задачи" + +#: plugin.py:191 +msgid "" +"[--priority=] \n" +"\n" +" Adds as a task in your own personal todo list. The " +"optional\n" +" priority argument allows you to set a task as a high or low " +"priority.\n" +" Any integer is valid.\n" +" " +msgstr "" +"[--priority=<число>] <текст>\n" +"\n" +"Добавляет данный <текст> в ваш список дел. Необязательный аргумент с " +"приоритетом позволяет вам задавать высокий или низкий приоритет задачи. " +"Допустимо любое целое число." + +#: plugin.py:202 +msgid "(Todo #%i added)" +msgstr "(Задача #%i добавлена)" + +#: plugin.py:208 +msgid "" +" [ ...]\n" +"\n" +" Removes from your personal todo list.\n" +" " +msgstr "" +" [ ...]\n" +"\n" +"Удаляет задачу с данным из вашего списка дела." + +#: plugin.py:219 +msgid "" +"Task %i could not be removed either because that id doesn't exist or it has " +"been removed already." +msgstr "" +"Задача %i не может быть удалена, так как либо задачи с таким id не " +"существует, либо она уже удалена." + +#: plugin.py:223 +msgid "" +"No tasks were removed because the following tasks could not be removed: %L." +msgstr "" +"Ни одна задача не была удалена, так как они не могут быть удалены: %L." + +#: plugin.py:233 +msgid "" +"[--{regexp} ] [ ...]\n" +"\n" +" Searches your todos for tasks matching . If --regexp is " +"given,\n" +" its associated value is taken as a regexp and matched against the\n" +" tasks.\n" +" " +msgstr "" +"[-{regexp} <значение>] [<шаблон> <шаблон> ...]\n" +"\n" +"Производит поиск задач по вашим спискам дел, совпадающих с <шаблоном> " +"поиска. Если дан --regexp, то его <значение> принимается как регулярное " +"выражение и сопоставляется с задачами." + +#: plugin.py:256 +msgid "No tasks matched that query." +msgstr "Ни одна задача не совпадает с запросом." + +#: plugin.py:262 +msgid "" +" \n" +"\n" +" Sets the priority of the todo with the given id to the specified " +"value.\n" +" " +msgstr "" +" <приоритет>\n" +"\n" +"Выставляет приоритет задачи с данным в данное значение." + +#: plugin.py:276 +msgid "" +" \n" +"\n" +" Modify the task with the given id using the supplied regexp.\n" +" " +msgstr "" +" \n" +"\n" +"Изменяет задачу с данным id, используя данное регулярное выражение." diff --git a/src/i18n.py b/src/i18n.py index da1bc6167..4557fb758 100644 --- a/src/i18n.py +++ b/src/i18n.py @@ -50,7 +50,7 @@ MSGSTR = 'msgstr "' FUZZY = '#, fuzzy' currentLocale = 'en' -SUPPORTED_LANGUAGES = ['de', 'en', 'es', 'fi', 'fr', 'it'] +SUPPORTED_LANGUAGES = ['de', 'en', 'es', 'fi', 'fr', 'it', 'ru'] class PluginNotFound(Exception): pass