mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-25 10:09:20 +03:00
Merge branch 'the-djmaze:master' into master
This commit is contained in:
commit
ed35c8e91e
7 changed files with 82 additions and 70 deletions
|
|
@ -82,7 +82,7 @@
|
||||||
border-left: 3px solid transparent;
|
border-left: 3px solid transparent;
|
||||||
color: var(--folders-color, #333);
|
color: var(--folders-color, #333);
|
||||||
display: block;
|
display: block;
|
||||||
line-height: 34px;
|
line-height: 2.2em;
|
||||||
padding: 0 2em 0 @folderItemPadding;
|
padding: 0 2em 0 @folderItemPadding;
|
||||||
position: relative;
|
position: relative;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
@ -151,7 +151,7 @@
|
||||||
color: var(--unread-count-color, #fff);
|
color: var(--unread-count-color, #fff);
|
||||||
font-size: 80%;
|
font-size: 80%;
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
margin-top: 7px;
|
margin-top: 0.5em;
|
||||||
min-width: 1.7em;
|
min-width: 1.7em;
|
||||||
padding: 1px 4px;
|
padding: 1px 4px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
|
||||||
|
|
@ -63,8 +63,9 @@ There, click on the link to go to the SnappyMail admin panel.
|
||||||
<lib>uuid</lib>
|
<lib>uuid</lib>
|
||||||
<lib>xxtea</lib>
|
<lib>xxtea</lib>
|
||||||
<lib>zip</lib>
|
<lib>zip</lib>
|
||||||
|
<nextcloud min-version="20" max-version="34" />
|
||||||
-->
|
-->
|
||||||
<nextcloud min-version="20" max-version="32" />
|
<nextcloud min-version="20" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<settings>
|
<settings>
|
||||||
<admin>OCA\SnappyMail\Settings\AdminSettings</admin>
|
<admin>OCA\SnappyMail\Settings\AdminSettings</admin>
|
||||||
|
|
|
||||||
|
|
@ -54,11 +54,22 @@ abstract class DateTimeHelper
|
||||||
\DateTime::createFromFormat('d M Y H:i:s O', $sDateTime, static::GetUtcTimeZoneObject())
|
\DateTime::createFromFormat('d M Y H:i:s O', $sDateTime, static::GetUtcTimeZoneObject())
|
||||||
// Using T (obsolete timezone abbreviation)
|
// Using T (obsolete timezone abbreviation)
|
||||||
?: \DateTime::createFromFormat('d M Y H:i:s T', $sDateTime, static::GetUtcTimeZoneObject());
|
?: \DateTime::createFromFormat('d M Y H:i:s T', $sDateTime, static::GetUtcTimeZoneObject());
|
||||||
// 398045302 is 1982-08-13 00:08:22 the date RFC 822 was created
|
|
||||||
if (!$oDateTime || 398045302 > $oDateTime->getTimestamp()) {
|
try {
|
||||||
|
$timestamp = $oDateTime->getTimestamp();
|
||||||
|
|
||||||
|
// 398045302 is 1982-08-13 00:08:22, the date RFC 822 was created
|
||||||
|
if (398045302 > $timestamp) {
|
||||||
\SnappyMail\Log::notice('', "Failed to parse RFC 2822 date '{$sDateTime}'");
|
\SnappyMail\Log::notice('', "Failed to parse RFC 2822 date '{$sDateTime}'");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $timestamp;
|
||||||
|
} catch (\Throwable $error) {
|
||||||
|
// Catch integer overflow or other fatal errors
|
||||||
|
\SnappyMail\Log::notice('', "Failed to parse RFC 2822 date '{$sDateTime}'. {$error->getMessage()}");
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
return $oDateTime ? $oDateTime->getTimestamp() : 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ abstract class Utils
|
||||||
return 'iso-8859-8';
|
return 'iso-8859-8';
|
||||||
}
|
}
|
||||||
|
|
||||||
return \preg_replace('/^(cp-?|windows?)(12[\d])/', 'windows-$1', $sEncoding);
|
return \preg_replace('/^(cp|windows)-?(12[\d]*)/i', 'windows-$2', $sEncoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function NormalizeCharsetByValue(string $sCharset, string $sValue) : string
|
public static function NormalizeCharsetByValue(string $sCharset, string $sValue) : string
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
"SAVE": "Сохранить",
|
"SAVE": "Сохранить",
|
||||||
"SAVE_CHANGES": "Сохранить изменения?",
|
"SAVE_CHANGES": "Сохранить изменения?",
|
||||||
"SEARCH": "Поиск",
|
"SEARCH": "Поиск",
|
||||||
"SPAM": "В спам",
|
"SPAM": "Спам",
|
||||||
"SUBJECT": "Тема",
|
"SUBJECT": "Тема",
|
||||||
"TEST": "Тест",
|
"TEST": "Тест",
|
||||||
"TO": "Кому",
|
"TO": "Кому",
|
||||||
|
|
@ -60,12 +60,12 @@
|
||||||
"UNSEEN": "Непрочитанные",
|
"UNSEEN": "Непрочитанные",
|
||||||
"DATE": "Дата",
|
"DATE": "Дата",
|
||||||
"DATE_ALL": "За всё время",
|
"DATE_ALL": "За всё время",
|
||||||
"BEFORE_3_DAYS": "Older then 3 days",
|
"BEFORE_3_DAYS": "Старше 3 дней",
|
||||||
"BEFORE_7_DAYS": "Older then 1 week",
|
"BEFORE_7_DAYS": "Старше недели",
|
||||||
"BEFORE_MONTH": "Older then 1 month",
|
"BEFORE_MONTH": "Старше месяца",
|
||||||
"BEFORE_3_MONTHS": "Older then 3 months",
|
"BEFORE_3_MONTHS": "Старше 3 месяцев",
|
||||||
"BEFORE_6_MONTHS": "Older then 6 months",
|
"BEFORE_6_MONTHS": "Старше полугода",
|
||||||
"BEFORE_YEAR": "Older then 1 year",
|
"BEFORE_YEAR": "Старше года",
|
||||||
"SINCE_3_DAYS": "За три дня",
|
"SINCE_3_DAYS": "За три дня",
|
||||||
"SINCE_7_DAYS": "За неделю",
|
"SINCE_7_DAYS": "За неделю",
|
||||||
"SINCE_MONTH": "За месяц",
|
"SINCE_MONTH": "За месяц",
|
||||||
|
|
@ -130,8 +130,8 @@
|
||||||
"QUOTA_SIZE": "Использовано <strong>%SIZE% (%PROC%%)<\/strong> из <strong>%LIMIT%<\/strong>",
|
"QUOTA_SIZE": "Использовано <strong>%SIZE% (%PROC%%)<\/strong> из <strong>%LIMIT%<\/strong>",
|
||||||
"SORT": "Сортировка",
|
"SORT": "Сортировка",
|
||||||
"NO_SORT": "Почтовый сервер не поддерживает сортировку",
|
"NO_SORT": "Почтовый сервер не поддерживает сортировку",
|
||||||
"SORT_ARRIVAL_ASC": "Arrived ascending",
|
"SORT_ARRIVAL_ASC": "Получено (по возрастанию)",
|
||||||
"SORT_ARRIVAL_DESC": "Arrived descending",
|
"SORT_ARRIVAL_DESC": "Получено (по убыванию)",
|
||||||
"SORT_DATE_ASC": "Дата по возрастанию",
|
"SORT_DATE_ASC": "Дата по возрастанию",
|
||||||
"SORT_DATE_DESC": "Дата по убыванию",
|
"SORT_DATE_DESC": "Дата по убыванию",
|
||||||
"SORT_SIZE_ASC": "Размер по возрастанию",
|
"SORT_SIZE_ASC": "Размер по возрастанию",
|
||||||
|
|
@ -160,7 +160,7 @@
|
||||||
"MENU_VIEW_ORIGINAL": "Просмотреть оригинал",
|
"MENU_VIEW_ORIGINAL": "Просмотреть оригинал",
|
||||||
"HTML_VIEW": "Просмотр сообщения в HTML",
|
"HTML_VIEW": "Просмотр сообщения в HTML",
|
||||||
"PLAIN_VIEW": "Просмотр простого текстового сообщения",
|
"PLAIN_VIEW": "Просмотр простого текстового сообщения",
|
||||||
"SWAP_COLORS": "Swap default (background)color",
|
"SWAP_COLORS": "Переключить цвет фона по умолчанию",
|
||||||
"MENU_DOWNLOAD_ORIGINAL": "Скачать как .eml файл",
|
"MENU_DOWNLOAD_ORIGINAL": "Скачать как .eml файл",
|
||||||
"MENU_FILTER_SIMILAR": "Фильтровать похожие",
|
"MENU_FILTER_SIMILAR": "Фильтровать похожие",
|
||||||
"MENU_PRINT": "Распечатать",
|
"MENU_PRINT": "Распечатать",
|
||||||
|
|
@ -176,8 +176,8 @@
|
||||||
"HAS_VIRUS_WARNING": "ВНИМАНИЕ: Обнаружен вирус!",
|
"HAS_VIRUS_WARNING": "ВНИМАНИЕ: Обнаружен вирус!",
|
||||||
"TAGS": "Метки",
|
"TAGS": "Метки",
|
||||||
"NEW_TAG": "Новая метка",
|
"NEW_TAG": "Новая метка",
|
||||||
"ENABLE_TRACKING_LINKS": "Enable tracking links",
|
"ENABLE_TRACKING_LINKS": "Включить отслеживание ссылок",
|
||||||
"TRACKING_ENABLED": "Links are now tracked when clicked!"
|
"TRACKING_ENABLED": "Теперь клики по ссылкам отслеживаются!"
|
||||||
},
|
},
|
||||||
"MESSAGE_TAGS": {
|
"MESSAGE_TAGS": {
|
||||||
"$important": "Важное",
|
"$important": "Важное",
|
||||||
|
|
@ -303,13 +303,13 @@
|
||||||
"VERIFY": "Проверить",
|
"VERIFY": "Проверить",
|
||||||
"GOOD_SIGNATURE": "Подтвержденная сигнатура для %USER%",
|
"GOOD_SIGNATURE": "Подтвержденная сигнатура для %USER%",
|
||||||
"ERROR": "%TYPE% ошибка: %ERROR%",
|
"ERROR": "%TYPE% ошибка: %ERROR%",
|
||||||
"CREATE_SELF_SIGNED": "Create self-signed",
|
"CREATE_SELF_SIGNED": "Создать самоподписанный",
|
||||||
"VALID_UNTIL": "Valid until",
|
"VALID_UNTIL": "Действителен до",
|
||||||
"PRIVATE_KEY": "Private key",
|
"PRIVATE_KEY": "Закрытый ключ (PK)",
|
||||||
"CHANGE_PASS": "Change passphrase",
|
"CHANGE_PASS": "Изменить парольную фразу",
|
||||||
"CURRENT_PASS": "Current passphrase",
|
"CURRENT_PASS": "Текущая парольная фраза",
|
||||||
"NEW_PASS": "New passphrase",
|
"NEW_PASS": "Новая парольная фраза",
|
||||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login passphrase to decrypt data"
|
"ASK_CRYPTKEY_PASS": "Ваша парольная фраза была изменена. Введите вашу старую фразу для расшифровки данных"
|
||||||
},
|
},
|
||||||
"OPENPGP": {
|
"OPENPGP": {
|
||||||
"POPUP_IMPORT_TITLE": "Импорт OpenPGP ключа",
|
"POPUP_IMPORT_TITLE": "Импорт OpenPGP ключа",
|
||||||
|
|
@ -321,20 +321,20 @@
|
||||||
"LABEL_KEY_TYPE": "Тип",
|
"LABEL_KEY_TYPE": "Тип",
|
||||||
"SIGNED_MESSAGE": "OpenPGP подписанное сообщение",
|
"SIGNED_MESSAGE": "OpenPGP подписанное сообщение",
|
||||||
"ENCRYPTED_MESSAGE": "OpenPGP шифрованное сообщение",
|
"ENCRYPTED_MESSAGE": "OpenPGP шифрованное сообщение",
|
||||||
"STORE_IN_GNUPG": "Хранить на сервере в GnuPG",
|
"STORE_IN_GNUPG": "Хранение на сервере в GnuPG",
|
||||||
"STORE_PUBLIC_KEY_IN_GNUPG": "Store public key on server in GnuPG",
|
"STORE_PUBLIC_KEY_IN_GNUPG": "Хранение открытого ключа на сервере в GnuPG",
|
||||||
"STORE_PRIVATE_KEY_IN_GNUPG": "Store private key on server in GnuPG",
|
"STORE_PRIVATE_KEY_IN_GNUPG": "Хранение закрытого ключа на сервере в GnuPG",
|
||||||
"BACKUP_ON_SERVER": "Хранить (с шифрованием) на сервере",
|
"BACKUP_ON_SERVER": "Хранить (с шифрованием) на сервере",
|
||||||
"BACKUP_PUBLIC_KEY_ON_SERVER": "Backup public key on server",
|
"BACKUP_PUBLIC_KEY_ON_SERVER": "Хранить открытый ключ на сервере",
|
||||||
"BACKUP_PRIVATE_KEY_ON_SERVER": "Backup private key on server"
|
"BACKUP_PRIVATE_KEY_ON_SERVER": "Хранить закрытый ключ на сервере"
|
||||||
},
|
},
|
||||||
"SMIME": {
|
"SMIME": {
|
||||||
"POPUP_IMPORT_TITLE": "Import S\/MIME certificate",
|
"POPUP_IMPORT_TITLE": "Импорт сертификата S\/MIME",
|
||||||
"CERTIFICATE": "Certificate",
|
"CERTIFICATE": "Сертификат",
|
||||||
"CERTIFICATES": "S\/MIME Certificates",
|
"CERTIFICATES": "Сертификаты S\/MIME",
|
||||||
"SIGNED_MESSAGE": "S\/MIME подписанное сообщение",
|
"SIGNED_MESSAGE": "S\/MIME подписанное сообщение",
|
||||||
"ENCRYPTED_MESSAGE": "S\/MIME шифрованное сообщение",
|
"ENCRYPTED_MESSAGE": "S\/MIME шифрованное сообщение",
|
||||||
"PRIVATE_KEY_OF": "S\/MIME private key of %EMAIL%"
|
"PRIVATE_KEY_OF": "S\/MIME приватный ключ для %EMAIL%"
|
||||||
},
|
},
|
||||||
"POPUPS_FILTER": {
|
"POPUPS_FILTER": {
|
||||||
"TITLE_CREATE_FILTER": "Создать фильтр",
|
"TITLE_CREATE_FILTER": "Создать фильтр",
|
||||||
|
|
@ -409,31 +409,31 @@
|
||||||
"EDITOR": {
|
"EDITOR": {
|
||||||
"PLAIN": "HTML <-> TEXT",
|
"PLAIN": "HTML <-> TEXT",
|
||||||
"SOURCE": "HTML <-> SOURCE",
|
"SOURCE": "HTML <-> SOURCE",
|
||||||
"FONTFAMILY": "Font family",
|
"FONTFAMILY": "Шрифт",
|
||||||
"FONTSIZE": "Font size",
|
"FONTSIZE": "Размер шрифта",
|
||||||
"DIR": "Text direction",
|
"DIR": "Направление текста",
|
||||||
"DIR_LTR": "Left to right",
|
"DIR_LTR": "Слева направо",
|
||||||
"DIR_RTL": "Right to left",
|
"DIR_RTL": "Справа налево",
|
||||||
"DIR_AUTO": "Automatic",
|
"DIR_AUTO": "Автоматически",
|
||||||
"TEXTCOLOR": "Text color",
|
"TEXTCOLOR": "Цвет текста",
|
||||||
"BACKGROUNDCOLOR": "Background color",
|
"BACKGROUNDCOLOR": "Цвет фона",
|
||||||
"BOLD": "Bold",
|
"BOLD": "Жирный",
|
||||||
"ITALIC": "Italic",
|
"ITALIC": "Курсив",
|
||||||
"UNDERLINE": "Underline",
|
"UNDERLINE": "Подчеркнутый",
|
||||||
"STRIKE": "Strikethrough",
|
"STRIKE": "Зачеркнутый",
|
||||||
"SUB": "Subscript",
|
"SUB": "Подстрочный индекс",
|
||||||
"SUP": "Superscript",
|
"SUP": "Надстрочный индекс",
|
||||||
"OL": "Ordered list",
|
"OL": "Упорядоченный список",
|
||||||
"UL": "Unordered list",
|
"UL": "Неупорядоченный список",
|
||||||
"QUOTE": "Blockquote",
|
"QUOTE": "Блок-цитата",
|
||||||
"INDENTDECREASE": "Decrease indent",
|
"INDENTDECREASE": "Уменьшить отступ",
|
||||||
"INDENTINCREASE": "Increase indent",
|
"INDENTINCREASE": "Увеличить отступ",
|
||||||
"LINK": "Link",
|
"LINK": "Ссылка",
|
||||||
"IMAGEURL": "Image URL",
|
"IMAGEURL": "URL-адрес изображения",
|
||||||
"IMAGEUPLOAD": "Image select",
|
"IMAGEUPLOAD": "Выбрать на устройстве",
|
||||||
"UNDO": "Undo",
|
"UNDO": "Отменить",
|
||||||
"REDO": "Redo",
|
"REDO": "Повторить",
|
||||||
"REMOVESTYLE": "Remove style"
|
"REMOVESTYLE": "Очистить стиль"
|
||||||
},
|
},
|
||||||
"SETTINGS_LABELS": {
|
"SETTINGS_LABELS": {
|
||||||
"GENERAL": "Основные",
|
"GENERAL": "Основные",
|
||||||
|
|
@ -457,7 +457,7 @@
|
||||||
"SETTINGS_SECURITY": {
|
"SETTINGS_SECURITY": {
|
||||||
"LEGEND_SECURITY": "Безопасность",
|
"LEGEND_SECURITY": "Безопасность",
|
||||||
"LABEL_AUTOLOGOUT": "Автоматический выход",
|
"LABEL_AUTOLOGOUT": "Автоматический выход",
|
||||||
"FORGET_KEY_PASS": "Forget private key passphrase",
|
"FORGET_KEY_PASS": "Забыть парольную фразу закрытого ключа",
|
||||||
"NEVER": "Никогда"
|
"NEVER": "Никогда"
|
||||||
},
|
},
|
||||||
"SETTINGS_GENERAL": {
|
"SETTINGS_GENERAL": {
|
||||||
|
|
@ -477,7 +477,7 @@
|
||||||
"HIDE_DELETED_MESSAGES": "Скрыть сообщения, помеченные для удаления",
|
"HIDE_DELETED_MESSAGES": "Скрыть сообщения, помеченные для удаления",
|
||||||
"USE_CHECKBOXES_IN_LIST": "Показывать чекбоксы в списках",
|
"USE_CHECKBOXES_IN_LIST": "Показывать чекбоксы в списках",
|
||||||
"USE_THREADS": "Сворачивать письма в переписках",
|
"USE_THREADS": "Сворачивать письма в переписках",
|
||||||
"THREAD_ALGORITHM": "Threads algorithm",
|
"THREAD_ALGORITHM": "Группировка по беседам",
|
||||||
"REPLY_SAME_FOLDER": "Помещать ответы в ту же папку, где находится оригинал",
|
"REPLY_SAME_FOLDER": "Помещать ответы в ту же папку, где находится оригинал",
|
||||||
"PREFER_HTML": "Предпочитать HTML обычному тексту",
|
"PREFER_HTML": "Предпочитать HTML обычному тексту",
|
||||||
"PREFER_HTML_INFO": "Сообщения иногда приходят в обоих форматах. Этот параметр определяет, хотите ли вы, чтобы отображалась HTML-часть или обычный текст.",
|
"PREFER_HTML_INFO": "Сообщения иногда приходят в обоих форматах. Этот параметр определяет, хотите ли вы, чтобы отображалась HTML-часть или обычный текст.",
|
||||||
|
|
@ -503,9 +503,9 @@
|
||||||
"IMAGES_OPTION_WHITELIST": "Белый список или спрашивать",
|
"IMAGES_OPTION_WHITELIST": "Белый список или спрашивать",
|
||||||
"IMAGES_OPTION_ALWAYS": "Показать всегда",
|
"IMAGES_OPTION_ALWAYS": "Показать всегда",
|
||||||
"IMAGES_WHITELIST": "Форматы из белого списка",
|
"IMAGES_WHITELIST": "Форматы из белого списка",
|
||||||
"MESSAGE_POPUP_WINDOW": "Popup in new window instead of tab",
|
"MESSAGE_POPUP_WINDOW": "Всплывающее окно в новом окне вместо вкладки",
|
||||||
"MAILTO": "Register as 'mailto:' links handler",
|
"MAILTO": "Установить в качестве обработчика ссылок 'mailto:' по умолчанию",
|
||||||
"HTML_TO_MD": "Convert HTML to Markdown instead of plain text"
|
"HTML_TO_MD": "Преобразование HTML в Markdown вместо обычного текста"
|
||||||
},
|
},
|
||||||
"SETTINGS_CONTACTS": {
|
"SETTINGS_CONTACTS": {
|
||||||
"LABEL_CONTACTS_AUTOSAVE": "Автоматически добавлять получателей писем в адресную книгу",
|
"LABEL_CONTACTS_AUTOSAVE": "Автоматически добавлять получателей писем в адресную книгу",
|
||||||
|
|
@ -562,7 +562,7 @@
|
||||||
"SETTINGS_OPENPGP": {
|
"SETTINGS_OPENPGP": {
|
||||||
"BUTTON_IMPORT_KEY": "Импортировать ключ",
|
"BUTTON_IMPORT_KEY": "Импортировать ключ",
|
||||||
"BUTTON_GENERATE_KEY_PAIR": "Новый ключ",
|
"BUTTON_GENERATE_KEY_PAIR": "Новый ключ",
|
||||||
"IMPORT_FROM_SERVER": "Import from server",
|
"IMPORT_FROM_SERVER": "Импортировать с сервера",
|
||||||
"TITLE_PRIVATE": "Приватный",
|
"TITLE_PRIVATE": "Приватный",
|
||||||
"TITLE_PUBLIC": "Публичный",
|
"TITLE_PUBLIC": "Публичный",
|
||||||
"GET_MAILVELOPE": "Получить дополнение для браузера Mailvelope."
|
"GET_MAILVELOPE": "Получить дополнение для браузера Mailvelope."
|
||||||
|
|
@ -614,7 +614,7 @@
|
||||||
"DomainAlreadyExists": "Домен уже существует",
|
"DomainAlreadyExists": "Домен уже существует",
|
||||||
"DomainNotAllowed": "Данный домен не разрешен",
|
"DomainNotAllowed": "Данный домен не разрешен",
|
||||||
"AccountNotAllowed": "Данный аккаунт не разрешен",
|
"AccountNotAllowed": "Данный аккаунт не разрешен",
|
||||||
"CryptKeyError": "Your login passphrase has changed",
|
"CryptKeyError": "Ваша парольная фраза была изменена",
|
||||||
"ContactsSyncError": "Ошибка синхронизации контактов",
|
"ContactsSyncError": "Ошибка синхронизации контактов",
|
||||||
"CantGetMessageList": "Не могу получить список писем",
|
"CantGetMessageList": "Не могу получить список писем",
|
||||||
"CantGetMessage": "Не могу получить письмо",
|
"CantGetMessage": "Не могу получить письмо",
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
"SAVE": "Зберегти",
|
"SAVE": "Зберегти",
|
||||||
"SAVE_CHANGES": "Зберегти зміни?",
|
"SAVE_CHANGES": "Зберегти зміни?",
|
||||||
"SEARCH": "Пошук",
|
"SEARCH": "Пошук",
|
||||||
"SPAM": "В спам",
|
"SPAM": "Спам",
|
||||||
"SUBJECT": "Тема",
|
"SUBJECT": "Тема",
|
||||||
"TEST": "Тест",
|
"TEST": "Тест",
|
||||||
"TO": "Кому",
|
"TO": "Кому",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue