no message

This commit is contained in:
kuaifan 2024-11-19 11:20:30 +08:00
parent 82a340d576
commit 89a50fd389
30 changed files with 370 additions and 70 deletions

View File

@ -209,7 +209,7 @@ class Handler extends ExceptionHandler
}
if ($handle > 0) {
$image->saveTo($savePath);
Image::compressImage($savePath, null, 80);
Image::compressImage($savePath, 80);
return response()->file($savePath, [
'Pragma' => 'public',
'Cache-Control' => 'max-age=1814400',

View File

@ -66,6 +66,7 @@ class IndexController extends InvokeController
$script = asset_main($array['resources/assets/js/app.js']['file']);
}
return response()->view('main', [
'system_alias' => Base::settingFind('system', 'system_alias', 'WebPage'),
'version' => Base::getVersion(),
'style' => $style,
'script' => $script,
@ -374,6 +375,7 @@ class IndexController extends InvokeController
}
//
return view('desktop', [
'system_alias' => Base::settingFind('system', 'system_alias', 'WebPage'),
'version' => $match[1],
'files' => $files,
'is_draft' => $isDraft,
@ -434,6 +436,7 @@ class IndexController extends InvokeController
// 文件超过 10m 不支持在线预览,提示下载
if (filesize($file) > 10 * 1024 * 1024) {
return view('download', [
'system_alias' => Base::settingFind('system', 'system_alias', 'WebPage'),
'name' => $name,
'size' => Base::readableBytes(filesize($file)),
'url' => Base::fillUrl($path),

View File

@ -32,6 +32,23 @@ use App\Module\Base;
*/
class Setting extends AbstractModel
{
/**
* 格式化设置参数
* @param $value
* @return array|mixed
*/
public function getSettingAttribute($value)
{
if (is_array($value)) {
return $value;
}
$value = Base::json2array($value);
if ($this->name === 'system') {
$value['system_alias'] = $value['system_alias'] ?: env('APP_NAME');
}
return $value;
}
/**
* 验证邮箱地址(过滤忽略地址)
* @param $array

View File

@ -4,6 +4,7 @@ namespace App\Models;
use App\Exceptions\ApiException;
use App\Module\Base;
use App\Module\Doo;
use App\Module\Timer;
use Carbon\Carbon;
use Guanguans\Notify\Factory;
@ -65,29 +66,41 @@ class UserEmailVerification extends AbstractModel
]);
$row->save();
$setting = Base::setting('emailSetting');
$alias = Base::settingFind('system', 'system_alias', 'Task');
try {
if (!Base::isEmail($email)) {
throw new \Exception("User email '{$email}' address error");
}
switch ($type) {
case 2:
$subject = env('APP_NAME') . "修改邮箱验证";
$content = "<p>{$user->nickname} 您好,您正在修改 " . env('APP_NAME') . " 的邮箱验证码如下。请在30分钟内输入验证码</p><p style='color: #0000DD;'><u>$code</u></p><p>如果不是本人操作,您的帐号可能存在风险,请及时修改密码!</p>";
$subject = Doo::translate($alias . "修改邮箱验证");
$content = sprintf("<p>%s</p><p style='color: #0000DD;'><u>%s</u></p><p>%s</p>",
Doo::translate($user->nickname . " 您好,您正在修改 " . $alias . " 的邮箱验证码如下。请在30分钟内输入验证码"),
$code,
Doo::translate("如果不是本人操作,您的帐号可能存在风险,请及时修改密码!")
);
break;
case 3:
$subject = env('APP_NAME') . "注销帐号验证";
$content = "<p>{$user->nickname} 您好,您正在注销 " . env('APP_NAME') . " 的帐号验证码如下。请在30分钟内输入验证码</p><p style='color: #0000DD;'><u>$code</u></p><p>如果不是本人操作,您的帐号可能存在风险,请及时修改密码!</p>";
$subject = Doo::translate($alias . "注销帐号验证");
$content = sprintf("<p>%s</p><p style='color: #0000DD;'><u>%s</u></p><p>%s</p>",
Doo::translate($user->nickname . " 您好,您正在注销 " . $alias . " 的帐号验证码如下。请在30分钟内输入验证码"),
$code,
Doo::translate("如果不是本人操作,您的帐号可能存在风险,请及时修改密码!")
);
break;
default:
$url = Base::fillUrl('single/valid/email') . '?code=' . $row->code;
$subject = env('APP_NAME') . "绑定邮箱验证";
$content = "<p>{$user->nickname} 您好,您正在绑定 " . env('APP_NAME') . " 的邮箱请于30分钟之内点击以下链接完成验证 :</p><p style='display: flex; justify-content: center;'><a href='{$url}' target='_blank'>{$url}</a></p>";
$subject = Doo::translate($alias . "绑定邮箱验证");
$content = sprintf("<p>%s</p><p style='display: flex; justify-content: center;'>%s</p>",
Doo::translate($user->nickname . " 您好,您正在绑定 " . $alias . " 的邮箱请于30分钟之内点击以下链接完成验证:"),
"<a href='{$url}' target='_blank'>{$url}</a>"
);
break;
}
Factory::mailer()
->setDsn("smtp://{$setting['account']}:{$setting['password']}@{$setting['smtp_server']}:{$setting['port']}?verify_peer=0")
->setMessage(EmailMessage::create()
->from(env('APP_NAME', 'Task') . " <{$setting['account']}>")
->from($alias . " <{$setting['account']}>")
->to($email)
->subject($subject)
->html($content))

View File

@ -1921,7 +1921,7 @@ class Base
// 压缩图片
$quality = intval($param['quality']);
if ($quality > 0) {
Image::compressImage($array['file'], null, $quality);
Image::compressImage($array['file'], $quality);
$array['size'] = Base::twoFloat(filesize($array['file']) / 1024, true);
}
//生成缩略图
@ -2132,7 +2132,7 @@ class Base
$array['width'] = $paramet[0];
$array['height'] = $paramet[1];
$array['thumb'] = $array['path'] . '_thumb.jpg';
Image::compressImage($thumbFile, null, 80);
Image::compressImage($thumbFile, 80);
}
}
if ($isImage) {
@ -2166,7 +2166,7 @@ class Base
// 压缩图片
$quality = intval($param['quality']);
if ($quality > 0) {
Image::compressImage($array['file'], null, $quality);
Image::compressImage($array['file'], $quality);
$array['size'] = Base::twoFloat(filesize($array['file']) / 1024, true);
}
// 生成缩略图
@ -2806,7 +2806,7 @@ class Base
public static function saveContentImage($path, $content, int $quality = 0) {
if (file_put_contents($path, $content)) {
if ($quality > 0) {
Image::compressImage($path, null, $quality);
Image::compressImage($path, $quality);
}
return true;
}

View File

@ -238,7 +238,7 @@ class Image
$image->thumb($width, $height, $mode);
$image->saveTo($savePath);
if ($quality > 0) {
Image::compressImage($savePath, null, $quality);
Image::compressImage($savePath, $quality);
}
if ($savePath != $imagePath && filesize($savePath) >= filesize($imagePath)) {
unlink($savePath);
@ -252,17 +252,23 @@ class Image
/**
* 压缩图片(如果压缩后的图片比原图还大那就直接使用原图)
* @param string $imagePath 图片路径
* @param string|null $savePath 保存路径(默认覆盖原图)
* @param int $quality 压缩质量0-100
* @param float $minSize 最小尺寸小于这个尺寸不压缩单位KB
* @param array|string $path 图片路径如果是数组第1个元素为原图路径第2个元素为保存路径
* @param int $quality 压缩质量0-100
* @param float $minSize 最小尺寸小于这个尺寸不压缩单位KB
* @return bool
*/
public static function compressImage(string $imagePath, string $savePath = null, int $quality = 100, float $minSize = 5): bool
public static function compressImage(array|string $path, int $quality = 100, float $minSize = 5): bool
{
if (Base::settingFind("system", "image_compress") === 'close') {
return false;
}
if (is_array($path)) {
$imagePath = $path[0];
$savePath = $path[1] ?? $imagePath;
} else {
$imagePath = $path;
$savePath = $path;
}
if (!file_exists($imagePath)) {
return false;
}
@ -271,9 +277,6 @@ class Image
if ($minSize > 0 && $imageSize < $minSize * 1024) {
return false;
}
if (empty($savePath)) {
$savePath = $imagePath;
}
$tmpPath = $imagePath . '.compress.tmp';
if (self::compressAuto($imagePath, $tmpPath, $quality)) {
if (filesize($tmpPath) >= $imageSize) {

View File

@ -224,7 +224,7 @@ class EmailNoticeTask extends AbstractTask
$content .= view('email.unread', [
'type' => 'content',
'dialogUrl' => config("app.url") . "/manage/messenger?dialog_id={$dialogId}",
'dialogName' => $dialogName,
'dialogName' => trim($dialogName),
'title' => Doo::translate(sprintf('%d条未读信息', count($items))),
'button' => Doo::translate('回复消息'),
'unread' => count($items),
@ -247,7 +247,7 @@ class EmailNoticeTask extends AbstractTask
{
if ($dialogType === "user" && $message->userInfo) {
return $message->userInfo->profession
? sprintf('%s (%s)', $message->userInfo->nickname, $message->userInfo->profession)
? sprintf('%s (%s) ', $message->userInfo->nickname, $message->userInfo->profession)
: $message->userInfo->nickname;
}
return $message->webSocketDialog?->getGroupName();
@ -268,7 +268,7 @@ class EmailNoticeTask extends AbstractTask
$this->emailSetting['port']
))
->setMessage(EmailMessage::create()
->from(sprintf('%s <%s>', env('APP_NAME', 'Task'), $this->emailSetting['account']))
->from(sprintf('%s <%s>', Base::settingFind('system', 'system_alias', 'Task'), $this->emailSetting['account']))
->to($to)
->subject($emailData['subject'])
->html($emailData['content']))

View File

@ -746,3 +746,22 @@ webhook地址最长仅支持255个字符。
图片总像素(*)超过限制(*)
预计内存使用(*)超过限制(*)
验证过程发生错误:(*)
收件人地址错误或已被忽略
收到此电子邮件意味着您的邮箱配置正确。
(*)修改邮箱验证
(*)注销帐号验证
(*)绑定邮箱验证
(*)您好,您正在修改(*)的邮箱验证码如下。请在30分钟内输入验证码
如果不是本人操作,您的帐号可能存在风险,请及时修改密码!
(*)您好,您正在注销(*)的帐号验证码如下。请在30分钟内输入验证码
(*)您好,您正在绑定(*)的邮箱请于30分钟之内点击以下链接完成验证:
(*),您好。
您有(*)条未读群聊消息,请及时处理。
您有(*)条未读单聊消息,请及时处理。
来自(*)个群聊未读消息提醒
来自(*)个单聊未读消息提醒
来自(*)未读消息提醒
(*)条未读信息
回复消息

View File

@ -44,8 +44,6 @@
只能设置单个状态为验收/测试
以下是你当前的任务统计数据
可通过此链接直接加入项目。
填写-1则不通知误差±10分钟
自动签到延迟时长为±1分钟。
项目不存在或不在成员列表内
简单大于或等于6个字符。
仅限项目或任务负责人上传
@ -1798,3 +1796,10 @@ WiFi签到延迟时长为±1分钟。
团队成员「(*)」更新了内容,
更新时间:(*)。
点击【确定】加载最新内容。
通知时间
选择时间范围
添加时间范围
仅在指定时间范围内发送邮件通知。
未读消息超过指定时间后发送邮件通知,设为-1则不通知。
最多添加5个时间范围

View File

@ -1655,30 +1655,6 @@
"id": "Anda dapat langsung bergabung dengan proyek melalui tautan ini.",
"ru": "Вы можете напрямую присоединиться к проекту по этой ссылке."
},
{
"key": "填写-1则不通知误差±10分钟",
"zh": "",
"zh-CHT": "填寫-1則不通知誤差±10分鐘",
"en": "Fill in -1 for no notification, error margin ±10 minutes",
"ko": "-1을 입력하면 알림이 없으며, 오차 범위는 ±10분입니다",
"ja": "-1を入力すると通知されません。誤差は±10分です",
"de": "Geben Sie -1 ein für keine Benachrichtigung, Fehlertoleranz ±10 Minuten",
"fr": "Remplissez -1 pour aucune notification, marge d'erreur ±10 minutes",
"id": "Isi -1 untuk tidak ada pemberitahuan, margin kesalahan ±10 menit",
"ru": "Заполните -1 для отсутствия уведомления, погрешность ±10 минут"
},
{
"key": "自动签到延迟时长为±1分钟。",
"zh": "",
"zh-CHT": "自動簽到延遲時長為±1分鐘。",
"en": "Automatic check-in delay is ±1 minute.",
"ko": "자동 체크인 지연 시간은 ±1분입니다.",
"ja": "自動チェックインの遅延時間は±1分です。",
"de": "Die automatische Check-in-Verzögerung beträgt ±1 Minute.",
"fr": "Le délai d'enregistrement automatique est de ±1 minute.",
"id": "Penundaan check-in otomatis adalah ±1 menit.",
"ru": "Задержка автоматической регистрации составляет ±1 минуту."
},
{
"key": "简单大于或等于6个字符。",
"zh": "",
@ -26458,5 +26434,269 @@
"fr": "Erreur de validation survenue : (%T1)",
"id": "Terjadi kesalahan validasi: (%T1)",
"ru": "Произошла ошибка проверки: (%T1)"
},
{
"key": "通知时间",
"zh": "",
"zh-CHT": "通知時間",
"en": "Notification time",
"ko": "알림 시간",
"ja": "通知時間",
"de": "Benachrichtigungszeit",
"fr": "Heure de notification",
"id": "Waktu notifikasi",
"ru": "Время уведомления"
},
{
"key": "选择时间范围",
"zh": "",
"zh-CHT": "選擇時間範圍",
"en": "Select time range",
"ko": "시간 범위 선택",
"ja": "時間範囲を選択",
"de": "Zeitraum auswählen",
"fr": "Sélectionner la plage horaire",
"id": "Pilih rentang waktu",
"ru": "Выбрать временной диапазон"
},
{
"key": "添加时间范围",
"zh": "",
"zh-CHT": "添加時間範圍",
"en": "Add time range",
"ko": "시간 범위 추가",
"ja": "時間範囲を追加",
"de": "Zeitraum hinzufügen",
"fr": "Ajouter une plage horaire",
"id": "Tambah rentang waktu",
"ru": "Добавить временной диапазон"
},
{
"key": "仅在指定时间范围内发送邮件通知。",
"zh": "",
"zh-CHT": "僅在指定時間範圍內發送郵件通知。",
"en": "Send email notifications only within the specified time range.",
"ko": "지정된 시간 범위 내에서만 이메일 알림을 보냅니다.",
"ja": "指定した時間範囲内でのみメール通知を送信します。",
"de": "Senden Sie E-Mail-Benachrichtigungen nur innerhalb des angegebenen Zeitraums.",
"fr": "Envoyer des notifications par e-mail uniquement dans la plage horaire spécifiée.",
"id": "Kirim notifikasi email hanya dalam rentang waktu yang ditentukan.",
"ru": "Отправлять уведомления по электронной почте только в указанном временном диапазоне."
},
{
"key": "未读消息超过指定时间后发送邮件通知,设为-1则不通知。",
"zh": "",
"zh-CHT": "未讀消息超過指定時間後發送郵件通知,設為-1則不通知。",
"en": "Send email notifications if unread messages exceed the specified time; set to -1 to disable notification.",
"ko": "읽지 않은 메시지가 지정된 시간을 초과하면 이메일 알림을 보냅니다. 알림을 비활성화하려면 -1로 설정하십시오.",
"ja": "未読メッセージが指定時間を超えた場合にメール通知を送信します。通知を無効にするには-1に設定してください。",
"de": "Senden Sie E-Mail-Benachrichtigungen, wenn ungelesene Nachrichten die angegebene Zeit überschreiten; um die Benachrichtigung zu deaktivieren, setzen Sie auf -1.",
"fr": "Envoyer des notifications par e-mail si les messages non lus dépassent le délai spécifié ; mettez à -1 pour désactiver la notification.",
"id": "Kirim notifikasi email jika pesan yang belum dibaca melebihi waktu yang ditentukan; atur ke -1 untuk menonaktifkan pemberitahuan.",
"ru": "Отправляйте уведомления по электронной почте, если непрочитанные сообщения превышают указанное время; установите значение -1, чтобы отключить уведомления."
},
{
"key": "最多添加5个时间范围",
"zh": "",
"zh-CHT": "最多添加5個時間範圍",
"en": "Up to 5 time ranges can be added",
"ko": "최대 5개의 시간 범위를 추가할 수 있습니다.",
"ja": "最大で5つの時間範囲を追加できます。",
"de": "Es können bis zu 5 Zeiträume hinzugefügt werden.",
"fr": "Jusqu'à 5 plages horaires peuvent être ajoutées",
"id": "Dapat menambahkan hingga 5 rentang waktu",
"ru": "Можно добавить до 5 временных диапазонов"
},
{
"key": "收件人地址错误或已被忽略",
"zh": "",
"zh-CHT": "收件人地址錯誤或已被忽略",
"en": "Recipient address is incorrect or has been ignored",
"ko": "수신자 주소가 잘못되었거나 무시되었습니다.",
"ja": "受信者のアドレスが間違っているか無視されています。",
"de": "Empfängeradresse ist falsch oder wurde ignoriert",
"fr": "L'adresse du destinataire est incorrecte ou a été ignorée",
"id": "Alamat penerima salah atau telah diabaikan",
"ru": "Адрес получателя указан неверно или проигнорирован"
},
{
"key": "收到此电子邮件意味着您的邮箱配置正确。",
"zh": "",
"zh-CHT": "收到此電子郵件意味著您的郵箱配置正確。",
"en": "Receiving this email means your email configuration is correct.",
"ko": "이 이메일을 받으면 이메일 구성이 올바르다는 의미입니다.",
"ja": "このメールを受信した場合、あなたのメールの設定が正しいことを意味します。",
"de": "Der Erhalt dieser E-Mail bedeutet, dass Ihre E-Mail-Konfiguration korrekt ist.",
"fr": "Recevoir cet e-mail signifie que la configuration de votre e-mail est correcte.",
"id": "Menerima email ini berarti konfigurasi email Anda sudah benar.",
"ru": "Получение этого письма означает, что ваша электронная почта настроена правильно."
},
{
"key": "(%T1)修改邮箱验证",
"zh": "",
"zh-CHT": "(%T1)修改郵箱驗證",
"en": "(%T1) modify email verification",
"ko": "(%T1) 이메일 인증 수정",
"ja": "(%T1)メール確認を修正",
"de": "(%T1) E-Mail-Verifizierung ändern",
"fr": "(%T1) modifier la vérification de l'e-mail",
"id": "(%T1) mengubah verifikasi email",
"ru": "(%T1) изменить проверку электронной почты"
},
{
"key": "(%T1)注销帐号验证",
"zh": "",
"zh-CHT": "(%T1)註銷帳號驗證",
"en": "(%T1) cancel account verification",
"ko": "(%T1) 계정 인증 취소",
"ja": "(%T1)アカウント確認をキャンセル",
"de": "(%T1) Kontoverifizierung stornieren",
"fr": "(%T1) annuler la vérification du compte",
"id": "(%T1) membatalkan verifikasi akun",
"ru": "(%T1) отменить проверку учетной записи"
},
{
"key": "(%T1)绑定邮箱验证",
"zh": "",
"zh-CHT": "(%T1)綁定郵箱驗證",
"en": "(%T1) email binding verification",
"ko": "(%T1) 이메일 연동 인증",
"ja": "(%T1)メールアドレスの紐付け認証",
"de": "E-Mail-Verifizierung für (%T1) erforderlich",
"fr": "Vérification de liaison d'email pour (%T1)",
"id": "Verifikasi pengikatan email (%T1)",
"ru": "Подтверждение привязки электронной почты (%T1)"
},
{
"key": "(%T1)您好,您正在修改(%T2)的邮箱验证码如下。请在30分钟内输入验证码",
"zh": "",
"zh-CHT": "(%T1)您好,您正在修改(%T2)的郵箱驗證碼如下。請在30分鐘內輸入驗證碼",
"en": "Hello (%T1), you are changing the email for (%T2), here is the verification code. Please enter it within 30 minutes.",
"ko": "(%T1)님, 귀하는 (%T2)의 이메일을 변경 중입니다. 인증 코드는 다음과 같습니다. 30분 내에 입력해 주세요.",
"ja": "(%T1)様、(%T2)のメールアドレスを変更中です。認証コードは以下です。30分以内に入力してください。",
"de": "Hallo (%T1), Sie ändern gerade die E-Mail-Adresse für (%T2). Hier ist der Verifizierungscode. Bitte innerhalb von 30 Minuten eingeben.",
"fr": "Bonjour (%T1), vous modifiez l'adresse e-mail de (%T2), voici le code de vérification. Veuillez l'entrer dans les 30 minutes.",
"id": "Halo (%T1), Anda sedang mengubah email untuk (%T2), berikut adalah kode verifikasinya. Silakan masukkan dalam 30 menit.",
"ru": "Здравствуйте, (%T1), вы изменяете электронную почту для (%T2). Вот код подтверждения. Пожалуйста, введите его в течение 30 минут."
},
{
"key": "如果不是本人操作,您的帐号可能存在风险,请及时修改密码!",
"zh": "",
"zh-CHT": "如果不是本人操作,您的帳號可能存在風險,請及時修改密碼!",
"en": "If this wasn't done by you, your account may be at risk. Please change your password promptly!",
"ko": "본인이 아닌 경우 계정이 위험에 처해 있을 수 있습니다. 비밀번호를 즉시 변경하세요!",
"ja": "ご本人ではない場合、アカウントが危険にさらされている可能性があります。すぐにパスワードを変更してください!",
"de": "Wenn dies nicht von Ihnen veranlasst wurde, könnte Ihr Konto gefährdet sein. Bitte ändern Sie Ihr Passwort umgehend!",
"fr": "Si ce n'est pas vous, votre compte pourrait être à risque. Veuillez changer votre mot de passe rapidement !",
"id": "Jika ini bukan Anda, akun Anda mungkin berisiko. Harap segera ganti kata sandi Anda!",
"ru": "Если это сделали не вы, ваша учетная запись может быть под угрозой. Пожалуйста, незамедлительно измените пароль!"
},
{
"key": "(%T1)您好,您正在注销(%T2)的帐号验证码如下。请在30分钟内输入验证码",
"zh": "",
"zh-CHT": "(%T1)您好,您正在註銷(%T2)的帳號驗證碼如下。請在30分鐘內輸入驗證碼",
"en": "Hello (%T1), you are deactivating the account (%T2), here is the verification code. Please enter it within 30 minutes.",
"ko": "(%T1)님, (%T2) 계정을 해지 중입니다. 인증 코드는 다음과 같습니다. 30분 내에 입력해 주세요.",
"ja": "(%T1)様、(%T2)のアカウントを解約中です。認証コードは以下です。30分以内に入力してください。",
"de": "Hallo (%T1), Sie deaktivieren gerade das Konto (%T2). Hier ist der Verifizierungscode. Bitte innerhalb von 30 Minuten eingeben.",
"fr": "Bonjour (%T1), vous désactivez le compte (%T2), voici le code de vérification. Veuillez l'entrer dans les 30 minutes.",
"id": "Halo (%T1), Anda sedang menonaktifkan akun (%T2), berikut adalah kode verifikasinya. Silakan masukkan dalam 30 menit.",
"ru": "Здравствуйте, (%T1), вы деактивируете учетную запись (%T2). Вот код подтверждения. Пожалуйста, введите его в течение 30 минут."
},
{
"key": "(%T1)您好,您正在绑定(%T2)的邮箱请于30分钟之内点击以下链接完成验证:",
"zh": "",
"zh-CHT": "(%T1)您好,您正在綁定(%T2)的郵箱請於30分鐘之內點擊以下連結完成驗證:",
"en": "Hello (%T1), you are binding the email (%T2). Please click the link below to complete verification within 30 minutes:",
"ko": "(%T1)님, (%T2) 이메일을 연동 중입니다. 아래 링크를 클릭하여 30분 이내에 확인을 완료하세요:",
"ja": "(%T1)様、(%T2)のメールアドレスを紐付け中です。以下のリンクをクリックして30分以内に確認を完了してください。",
"de": "Hallo (%T1), Sie binden die E-Mail (%T2) an. Bitte klicken Sie auf den untenstehenden Link, um die Verifizierung innerhalb von 30 Minuten abzuschließen:",
"fr": "Bonjour (%T1), vous liez l'email (%T2). Veuillez cliquer sur le lien ci-dessous pour terminer la vérification dans les 30 minutes :",
"id": "Halo (%T1), Anda sedang mengikat email (%T2). Silakan klik tautan di bawah untuk menyelesaikan verifikasi dalam 30 menit:",
"ru": "Здравствуйте, (%T1), вы привязываете электронную почту (%T2). Пожалуйста, нажмите на ссылку ниже для завершения проверки в течение 30 минут:"
},
{
"key": "(%T1),您好。",
"zh": "",
"zh-CHT": "(%T1),您好。",
"en": "Hello, (%T1).",
"ko": "(%T1)님, 안녕하세요.",
"ja": "こんにちは、(%T1)様。",
"de": "Hallo, (%T1).",
"fr": "Bonjour, (%T1).",
"id": "Halo, (%T1).",
"ru": "Здравствуйте, (%T1)."
},
{
"key": "您有(%T1)条未读群聊消息,请及时处理。",
"zh": "",
"zh-CHT": "您有(%T1)條未讀群聊訊息,請及時處理。",
"en": "You have (%T1) unread group chat messages, please address them promptly.",
"ko": "읽지 않은 그룹 채팅 메시지 (%T1)개가 있습니다. 신속히 처리해 주세요.",
"ja": "未読のグループチャットメッセージが(%T1)件あります。迅速に対応してください。",
"de": "Sie haben (%T1) ungelesene Gruppennachrichten, bitte bearbeiten Sie diese umgehend.",
"fr": "Vous avez (%T1) messages de chat de groupe non lus, veuillez les traiter rapidement.",
"id": "Anda memiliki (%T1) pesan obrolan grup yang belum dibaca, harap tangani segera.",
"ru": "У вас (%T1) непрочитанных сообщений в групповых чатах, пожалуйста, обработайте их незамедлительно."
},
{
"key": "您有(%T1)条未读单聊消息,请及时处理。",
"zh": "",
"zh-CHT": "您有(%T1)條未讀單聊訊息,請及時處理。",
"en": "You have (%T1) unread individual chat messages, please address them promptly.",
"ko": "읽지 않은 개인 채팅 메시지 (%T1)개가 있습니다. 신속히 처리해 주세요.",
"ja": "未読の個別チャットメッセージが(%T1)件あります。迅速に対応してください。",
"de": "Sie haben (%T1) ungelesene Einzelchatnachrichten, bitte bearbeiten Sie diese umgehend.",
"fr": "Vous avez (%T1) messages de chat individuel non lus, veuillez les traiter rapidement.",
"id": "Anda memiliki (%T1) pesan obrolan individu yang belum dibaca, harap tangani segera.",
"ru": "У вас (%T1) непрочитанных сообщений в личных чатах, пожалуйста, обработайте их незамедлительно."
},
{
"key": "来自(%T1)个群聊未读消息提醒",
"zh": "",
"zh-CHT": "來自(%T1)個群聊未讀消息提醒",
"en": "Unread message reminder from (%T1) group chats",
"ko": "(%T1)개 그룹 채팅에서의 읽지 않은 메시지 알림",
"ja": "(%T1)件のグループチャットからの未読メッセージのお知らせ",
"de": "Erinnerung an ungelesene Nachrichten aus (%T1) Gruppenchats",
"fr": "Rappel de message non lu de (%T1) discussions de groupe",
"id": "Pengingat pesan belum dibaca dari (%T1) obrolan grup",
"ru": "Напоминание о непрочитанных сообщениях из (%T1) групповых чатов"
},
{
"key": "来自(%T1)个单聊未读消息提醒",
"zh": "",
"zh-CHT": "來自(%T1)個單聊未讀消息提醒",
"en": "Unread message reminder from (%T1) individual chats",
"ko": "(%T1)개 개인 채팅에서의 읽지 않은 메시지 알림",
"ja": "(%T1)件の個別チャットからの未読メッセージのお知らせ",
"de": "Erinnerung an ungelesene Nachrichten aus (%T1) Einzelchats",
"fr": "Rappel de message non lu de (%T1) discussions individuelles",
"id": "Pengingat pesan belum dibaca dari (%T1) obrolan individu",
"ru": "Напоминание о непрочитанных сообщениях из (%T1) личных чатов"
},
{
"key": "来自(%T1)未读消息提醒",
"zh": "",
"zh-CHT": "",
"en": "Unread message reminder from (%T1)",
"ko": "(%T1)에서 읽지 않은 메시지 알림",
"ja": "(%T1)からの未読メッセージ通知",
"de": "Erinnerung an ungelesene Nachrichten von (%T1)",
"fr": "Rappel de messages non lus de (%T1)",
"id": "Pengingat pesan belum dibaca dari (%T1)",
"ru": "Напоминание о непрочитанных сообщениях от (%T1)"
},
{
"key": "(%T1)条未读信息",
"zh": "",
"zh-CHT": "",
"en": "(%T1) unread messages",
"ko": "(%T1)개의 읽지 않은 메시지",
"ja": "(%T1)件の未読メッセージ",
"de": "(%T1) ungelesene Nachrichten",
"fr": "(%T1) messages non lus",
"id": "(%T1) pesan belum dibaca",
"ru": "(%T1) непрочитанных сообщений"
}
]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""]
["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long