From d29b465be2c1aa6e1083f13b579a59697a93fb30 Mon Sep 17 00:00:00 2001 From: Mark Sapiro Date: Tue, 10 Feb 2015 15:34:07 -0800 Subject: Updates to Russian i18n by Danil Smirnov. Removed some 'prior translator' files from Russian templates directory. --- NEWS | 5 +- messages/ru/LC_MESSAGES/mailman.po | 138 +++++++++++++++++++++++++------------ templates/ru/Makefile | 50 -------------- templates/ru/adminaddrchgack.txt | 5 ++ templates/ru/admindbdetails.html | 3 +- templates/ru/s2s.py | 66 ------------------ templates/ru/status | 44 ------------ 7 files changed, 103 insertions(+), 208 deletions(-) delete mode 100644 templates/ru/Makefile create mode 100644 templates/ru/adminaddrchgack.txt delete mode 100644 templates/ru/s2s.py delete mode 100644 templates/ru/status diff --git a/NEWS b/NEWS index 3b5d8edb..6f16998a 100755 --- a/NEWS +++ b/NEWS @@ -60,7 +60,7 @@ Here is a history of user visible changes to Mailman. archive to emphasize that even if you got to the message from a subject, date or author index, previous and next are still by thread. -2.1.19rc3 (07-Feb-2015) +2.1.19 (xx-xxx-2015) New Features @@ -143,7 +143,8 @@ Here is a history of user visible changes to Mailman. the keys) of dictionary attributes and the elements of list and tuple attributes. - - The Russian message catalog has been updated by Danil Smirnov. + - The Russian message catalog and templates have been further updated by + Danil Smirnov. - The Romanian message catalog has been updated. (LP: #1415489) diff --git a/messages/ru/LC_MESSAGES/mailman.po b/messages/ru/LC_MESSAGES/mailman.po index 0fd25cfb..b12622b2 100755 --- a/messages/ru/LC_MESSAGES/mailman.po +++ b/messages/ru/LC_MESSAGES/mailman.po @@ -9,15 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: mailman v2.1\n" "POT-Creation-Date: Tue Feb 3 20:49:32 2015\n" -"PO-Revision-Date: 2015-02-04 14:16+0300\n" +"PO-Revision-Date: 2015-02-10 14:56+0300\n" "Last-Translator: Danil Smirnov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Virtaal 0.7.1\n" #: Mailman/Archiver/HyperArch.py:123 @@ -42,14 +42,12 @@ msgid " at " msgstr " на " #: Mailman/Archiver/HyperArch.py:512 -#, fuzzy msgid "Previous message (by thread):" -msgstr "Предыдущее сообщение:" +msgstr "Предыдущее сообщение (в дискуссии):" #: Mailman/Archiver/HyperArch.py:534 -#, fuzzy msgid "Next message (by thread):" -msgstr "Следующее сообщение:" +msgstr "Следующее сообщение (в дискуссии):" #: Mailman/Archiver/HyperArch.py:707 Mailman/Archiver/HyperArch.py:743 msgid "thread" @@ -1397,7 +1395,6 @@ msgid "Confirmation string was empty." msgstr "Строка подтверждения отсутствует." #: Mailman/Cgi/confirm.py:98 -#, fuzzy msgid "" "Invalid confirmation string:\n" " %(safecookie)s.\n" @@ -1414,9 +1411,12 @@ msgstr "" "\n" "

Имейте, пожалуйста, в виду, что строка подтверждения может быть " "использована\n" -" только в течении %(days)s дней после запроса на подписку. Если ваш " -"запрос был\n" -" отправлен раньше, пожалуйста, попробуйте повторно запросить подписку.\n" +" только в течении %(days)s дней после запроса на подписку. Она также " +"становится\n" +" недействительной после обработки тем или иным образом. Если Ваша " +"строка\n" +" подтверждения устарела, пожалуйста, попробуйте повторно запросить " +"подписку.\n" " В противном случае попробуйте ввести " "строку подтверждения\n" " еще раз." @@ -2410,27 +2410,26 @@ msgid "No such member: %(safeuser)s." msgstr "Такого пользователя не существует: %(safeuser)s." #: Mailman/Cgi/options.py:180 -#, fuzzy msgid "If you are a list member, a confirmation email has been sent." -msgstr "Сообщение с кодом подтверждения отправлено." +msgstr "" +"Если Вы подписчик списка рассылки, Вам было отправлено сообщение с кодом " +"подтверждения." #: Mailman/Cgi/options.py:181 -#, fuzzy msgid "" "If you are a list member, your unsubscription request has been\n" " forwarded to the list administrator for approval." msgstr "" -"Ваш запрос на удаление подписки был переправлен модератору списка рассылки " -"для обработки." +"Если Вы подписчик списка рассылки, Ваш запрос на удаление подписки\n" +"был отправлен модератору для обработки." #: Mailman/Cgi/options.py:220 -#, fuzzy msgid "" "If you are a list member,\n" " your password has been emailed to you." msgstr "" "Если Вы подписчик списка рассылки,\n" -" Вам было отправлено сообщение с Вашим паролем." +" Вам было отправлено сообщение с Вашим паролем." #: Mailman/Cgi/options.py:263 msgid "Authentication failed." @@ -3112,9 +3111,10 @@ msgid "" " supplied by a mailback confirmation notice.\n" msgstr "" "\n" -" confirm <код-подтверждения>\n" -" Подтвердить действие. Код подтверждения необходим и должен\n" -" быть отправлен вам со специальным извещением.\n" +" confirm <строка-подтверждения>\n" +" Подтвердить действие. Строка подтверждения является обязательным " +"параметром\n" +" и должна была быть отправлена Вам специальным сообщением.\n" #: Mailman/Commands/cmd_confirm.py:41 Mailman/Commands/cmd_lists.py:40 #: Mailman/Commands/cmd_set.py:133 Mailman/Commands/cmd_subscribe.py:69 @@ -3123,17 +3123,17 @@ msgid "Usage:" msgstr "Запуск:" #: Mailman/Commands/cmd_confirm.py:50 -#, fuzzy msgid "" "Invalid confirmation string. Note that confirmation strings expire\n" "approximately %(days)s days after the initial request. They also expire if\n" "the request has already been handled in some way. If your confirmation has\n" "expired, please try to re-submit your original request or message." msgstr "" -"Некорректный код подтверждения. Срок действия кода подтверждения\n" +"Некорректная строка подтверждения. Срок действия строки подтверждения\n" "истекает примерно через %(days)s дн. после отправки запроса на\n" -"подписку. Если срок действия вашего кода истек, попробуйте отправить\n" -"запрос заново." +"подписку. Строка подтверждения также становится недействительной, если\n" +"она уже была обработана тем или иным образом. Если срок действия\n" +"Вашей строки подтверждения истек, попробуйте отправить запрос заново." #: Mailman/Commands/cmd_confirm.py:56 msgid "Your request has been forwarded to the list moderator for approval." @@ -6604,9 +6604,10 @@ msgid "" "List of addresses (or regexps) whose subscriptions do not\n" " require approval." msgstr "" +"Список адресов (или регулярных выражений), подписка которых\n" +"не требует одобрения." #: Mailman/Gui/Privacy.py:120 -#, fuzzy msgid "" "When subscription requires approval, addresses in this list\n" " are allowed to subscribe without administrator approval. Add\n" @@ -6614,17 +6615,18 @@ msgid "" "character\n" " to designate a (case insensitive) regular expression match." msgstr "" -"Перечисленным здесь адресам подписка на данный список рассылки\n" -"запрещена, от модератора предпринимать какие-либо действия не\n" -"потребуется. Адреса должны начинаться с новой строки (по одному\n" -"адресу в строке), если адрес будет начинаться с ^, это будет\n" -"означать начало регулярного выражения." +"Если подписка требует одобрения, то адреса из этого списка\n" +"будут подписаны без одобрения модератора. Указываете по одному\n" +"адресу в каждой строке. Если адрес начинается с символа \"^\", то он будет\n" +"проинтерпретирован как регистронезависимое регулярное выражение." #: Mailman/Gui/Privacy.py:125 msgid "" "You may also use the @listname notation to designate the\n" " members of another list in this installation." msgstr "" +"Вы можете также использовать формат @listname\n" +"чтобы задать подписчиков другого списка рассылки этого сервера." #: Mailman/Gui/Privacy.py:129 msgid "" @@ -7027,6 +7029,11 @@ msgid "" " separate text/plain MIME part preceding the original message\n" " part in the wrapped message." msgstr "" +"Если для параметра dmarc_moderation_action выбрано значение \"Вложить " +"сообщение\",\n" +"и здесь задан какой-либо текст, то он будет добавлен в виде отдельной MIME-" +"секции\n" +"формата text/plain перед началом оригинального сообщения." #: Mailman/Gui/Privacy.py:314 msgid "" @@ -7041,6 +7048,13 @@ msgid "" "if\n" " none of the other parts are applicable." msgstr "" +"Оригинальное сообщение будет вложено в сообщение типа multipart/mixed,\n" +"состоящее из четырех секций: секции text/plain, содержащей msg_header,\n" +"секции text/plain, содержащей dmarc_wrapped_message_text, секции\n" +"message/rfc822, содержащей исходное сообщение и секции text/plain,\n" +"содержащей msg_footer, либо же это будет только секция message/rfc822,\n" +"содержащая исходное сообщение, если ни один из перечисленных параметров\n" +"не задан." #: Mailman/Gui/Privacy.py:323 msgid "" @@ -7048,6 +7062,9 @@ msgid "" " considered equivalent when checking if a post is from a list\n" " member." msgstr "" +"\"Двумерный\" список доменов email-адресов, которые будут считаться\n" +"эквивалентными при проверке того, является ли отправитель сообщения\n" +"подписчиком списка рассылки." #: Mailman/Gui/Privacy.py:327 msgid "" @@ -7077,6 +7094,29 @@ msgid "" " will apply to the post, but other options such as 'ack' or\n" " 'not metoo' will not." msgstr "" +"Если два адреса отправителя с одинаковой частью до \"@\" и разными доменами\n" +"должны считаться эквивалентными при проверке того, является ли отправитель\n" +"сообщения подписчиком списка рассылки, то это можно задать здесь. Формат\n" +"списка представляет собой группы доменов, разделенные точкой с запятой,\n" +"домены внутри которых перечислены через запятую. Пробелы игнорируются.\n" +"

Например:

\n"
+"example.com,mail.example.com;mac.com,me.com,icloud.com\n"
+"
\n" +"

В этом примере, если user@example.com является подписчиком, то сообщения\n" +"с адреса user@mail.example.com будут рассматриваться, как если бы они были\n" +"с адреса user@example.com при проверке того, является ли адрес подписчиком\n" +"или в случае модерации; а также если user@me.com является подписчиком " +"списка\n" +"рассылки, то сообщения с адресов user@mac.com и user@icloud.com будут\n" +"рассматриваться как сообщения с адреса user@me.com.\n" +"

Учтите, что адрес отправителя сначала проверяется на то,\n" +"является ли он подписчиком списка рассылки, и только в случае " +"отрицательного\n" +"результата производятся проверки эквивалентных доменов.\n" +"

Также учтите, что настройка эквивалентных доменов повлияет на модерацию\n" +"сообщений с эквивалентных доменов, но не на другие опции подписки - такие " +"как\n" +"\"Отправлять подтверждения\" или \"Не отправлять копии своих сообщений\"." #: Mailman/Gui/Privacy.py:349 msgid "Non-member filters" @@ -8338,7 +8378,6 @@ msgid "Content filtered message notification" msgstr "Уведомление о фильтрации содержимого сообщения" #: Mailman/Handlers/Moderate.py:170 -#, fuzzy msgid "" "Your message has been rejected, probably because you are not subscribed to " "the\n" @@ -8348,10 +8387,11 @@ msgid "" "the\n" "mailing list owner at %(listowner)s." msgstr "" -"Вам не резрешено отправлять сообщения в этот список рассылки, и ваше " -"сообщение\n" -"было автоматически отклонено. Если вы считаете это ошибкой, обратитесь к\n" -"администратору списка рассылки по адресу %(listowner)s." +"Ваше сообщение было отклонено, вероятно потому что Вы не подписаны на этот " +"список\n" +"рассылки и его правила запрещают отправку подобных сообщений. Если Вы " +"считаете это\n" +"ошибкой, обратитесь к администратору списка рассылки по адресу %(listowner)s." #: Mailman/Handlers/Moderate.py:187 msgid "Auto-discard notification" @@ -8678,9 +8718,8 @@ msgid "%(realname)s unsubscribe notification" msgstr "уведомление об удалении подписки на список %(realname)s" #: Mailman/MailList.py:1226 -#, fuzzy msgid "%(realname)s address change notification" -msgstr "уведомление об удалении подписки на список %(realname)s" +msgstr "уведомление об изменении адреса подписчика %(realname)s" #: Mailman/MailList.py:1291 msgid "subscriptions to %(name)s require administrator approval" @@ -11077,7 +11116,6 @@ msgid "Return the generated output." msgstr "Возвратить сгенерированный вывод." #: bin/newlist:20 -#, fuzzy msgid "" "Create a new, unpopulated mailing list.\n" "\n" @@ -11176,8 +11214,8 @@ msgid "" msgstr "" "Создать новый пустой список рассылки.\n" "\n" -"Запуск:\n" -" %(PROGRAM)s [параметры] [имя_списка [адрес_администратора [пароль]]]\n" +"Запуск: %(PROGRAM)s [параметры] [имя_списка_рассылки [адрес_администратора " +"[пароль]]]\n" "\n" "Параметры:\n" "\n" @@ -11196,9 +11234,19 @@ msgstr "" "\n" " -q/--quiet\n" " Обычно администратор списка рассылки уведомляется о его создании\n" -" по электронной почте (после подтверждения). Этот параметр отменяет " +" по электронной почте (после запроса адреса). Этот параметр отменяет " "запрос\n" -" подтверждения и отправку уведомления.\n" +" адреса и отправку уведомления.\n" +"\n" +" -a/--automate\n" +" Этот параметр отменяет запрос адреса для уведомления администратора\n" +" о создании списка рассылки, но сохраняет отправку уведомления. Это\n" +" позволяет сделать создание списка полностью автоматическим, но с\n" +" отправкой уведомления -- при условии того, что необходимые " +"параметры\n" +" \"имя_списка_рассылки\", \"адрес_администратора\" и \"пароль\" " +"указаны\n" +" в команде вызова сценария.\n" "\n" " -h/--help\n" " Напечатать эту подсказку и завершить работу.\n" @@ -11249,8 +11297,8 @@ msgstr "" "а также\n" "\"emailhost\", если последний не найден в таблице виртуальных хостов. Учтите " "что\n" -"\"--urlhost\" и \"--emailhost\" имеют преимущество перед этой формой " -"записи.\n" +"\"--urlhost\" и \"--emailhost\" имеют преимущество перед этой формой записи." +"\n" "\n" "Если вы задаете имя списка рассылки без указания имени домена, то имя " "почтового\n" diff --git a/templates/ru/Makefile b/templates/ru/Makefile deleted file mode 100644 index 148099df..00000000 --- a/templates/ru/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# FILES=admindbpreamble.html adminsubscribeack.txt adminunsubscribeack.txt admlogin.html approve.txt article.html bounce.txt checkdbs.txt convert.txt cronpass.txt headfoot.html help.txt listinfo.html masthead.txt newlist.txt nopass.txt options.html postack.txt postauth.txt postheld.txt private.html reenable.txt refuse.txt roster.html subauth.txt subscribeack.txt subscribe.html unsub.txt userpass.txt verify.txt -FILES=$(shell cat status | sed -e 's/ .*$$//') -TARGET=/var/home/mailman/templates/ru/ -WEB=/var/www/mailman-ru -WFILES_DIR=/var/www/mailman-ru/files - -TFILES=$(addprefix $(TARGET),$(FILES)) -WFILES=$(addprefix $(WEB),$(FILES)) - -diff_args=-ub - -all: - @echo there is nothing to do - -diff-%: % - @-(cd ../en/ ; cvs -z6 diff $(diff_args) -r$(shell fgrep $< status | awk '{ print $$2; }') $<) - -check: - @(cd ../en/ ; cvs -z6 -q status ) | ./s2s.py - -todo: - @cat status | while read name version status rest; do [ "$$status" == "done" ] || echo $$name; done | sort - -done: - @cat status | while read name version status rest; do [ "$$status" == "done" ] && echo $$name; done | sort - -started: - @cat status | while read name version status rest; do [ "$$status" == "started" ] && echo $$name; done | sort - -status-%: % - @ cat status | grep "^$< " - -$(WEB)/%: % - cp $< $@ - -#update: $(WFILES) -update: update-files update-status - -update-files: - install -d $(WFILES_DIR) - @for file in $(FILES); do if [ ! -e $(WFILES_DIR)/$$file -o $$file -nt $(WFILES_DIR)/$$file ]; then cp -vf $$file $(WFILES_DIR)/$$file; fi; done - -update-status: $(WEB)/status.html - -$(WEB)/status.html: status s2h.py - ./s2h.py > $@ - -install: - sudo -u mailman install -d $(TARGET) - sudo -u mailman install $(FILES) $(TARGET) diff --git a/templates/ru/adminaddrchgack.txt b/templates/ru/adminaddrchgack.txt new file mode 100644 index 00000000..00486a03 --- /dev/null +++ b/templates/ru/adminaddrchgack.txt @@ -0,0 +1,5 @@ +Адрес подписки на %(listname)s +для %(name)s был успешно изменен +с %(oldaddr)s на %(newaddr)s. + + diff --git a/templates/ru/admindbdetails.html b/templates/ru/admindbdetails.html index 55a163c2..5759ea23 100644 --- a/templates/ru/admindbdetails.html +++ b/templates/ru/admindbdetails.html @@ -13,7 +13,8 @@ действие, если вы хотите указанно сообжение переправить или сохранить (см. ниже). -

  • Одобрить — переправить сообщение в список рассылки. +
  • Принять/Одобрить — принять сообщение и переправить его + в список рассылки. Для запросов об изменении подписки, одобрить их.
  • Отказать — отвергнуть сообщение, отправив отправителю уведомление, что его сообщение принято не было. Само сообщение после diff --git a/templates/ru/s2s.py b/templates/ru/s2s.py deleted file mode 100644 index 5f3e08bd..00000000 --- a/templates/ru/s2s.py +++ /dev/null @@ -1,66 +0,0 @@ -#! /usr/bin/python - -# A simple script to check the status of the translation. - -import sys, string -from pprint import pprint - -def chop (line): - if line[-2:] == '\r\n': - line = line[:-2] - - if line[-1:] == '\n': - line = line[:-1] - - return line - -def cmprevision (a, b): - '''revisions are something delimited with dots''' - - return cmp (map (lambda x: x.lower (), a.split ('.')), map (lambda x: x.lower (), b.split ('.'))) - -name = None -revision = None - -files = {} - -for line in sys.stdin.readlines (): - parts = string.split (chop (line)) - - if len (parts) > 0: - if parts[0] == 'File:': - name = parts[1] - elif parts[0] == 'Repository': - files[name] = parts[2] - -# pprint (files) - -action = 0 - -for line in open ('status', 'r').readlines (): - parts = string.split (chop (line)) - - if len (parts) > 0: - if files.has_key (parts[0]): - pass # check the version - - relation = cmprevision (parts[1], files[parts[0]]) - - if relation < 0: - print 'Update: %s (%s -> %s)' % (parts[0], parts[1], files[parts[0]]) - action = 1 - elif relation > 0: - print 'Downgrade?: %s (%s -> %s)' % (parts[0], parts[1], files[parts[0]]) - action = 1 - - del files[parts[0]] # delete the item - else: - print 'Delete:', parts[0] - action = 1 - -for file in files.keys (): - print 'New:', file - action = 1 - -if not action: - print 'You are translating the latest versions' diff --git a/templates/ru/status b/templates/ru/status deleted file mode 100644 index 5a3dd145..00000000 --- a/templates/ru/status +++ /dev/null @@ -1,44 +0,0 @@ -admindbdetails.html 2.1.2.1 done -admindbpreamble.html 2.3 done -adminsubscribeack.txt 2.0 done -adminunsubscribeack.txt 2.0 done -admlogin.html 2.0 done -approve.txt 2.0 done -article.html 2.2 done -bounce.txt 2.1 done -checkdbs.txt 2.0 done -convert.txt 2.0 done -cronpass.txt 2.0 done -headfoot.html 2.1.2.1 done -help.txt 2.2 done -invite.txt 2.0 done -listinfo.html 2.4 done -masthead.txt 2.0 done -newlist.txt 2.1 done -nomoretoday.txt 2.0 done -options.html 2.10.2.3 started -postack.txt 2.1 done -postauth.txt 2.0 done -postheld.txt 2.1 done -private.html 2.1.2.1 done -refuse.txt 2.0 done -roster.html 2.0 done -subauth.txt 2.1 done -subscribeack.txt 2.1 done -subscribe.html 2.1 done -unsub.txt 2.1 done -unsubauth.txt 2.0 done -userpass.txt 2.1 done -verify.txt 2.1.2.1 done -emptyarchive.html 2.0 done -admindbsummary.html 2.0 done -disabled.txt 2.1 done -archidxentry.html 1.1 done -archidxfoot.html 1.1 done -archidxhead.html 1.1 done -archlistend.html 1.1 done -archliststart.html 1.1 done -archtocentry.html 1.1 done -archtoc.html 1.2 done -probe.txt 1.1.2.1 done -archtocnombox.html 1.1.2.1 done -- cgit v1.2.3