diff --git a/CHANGELOG.md b/CHANGELOG.md index cece4c4ec5..f368309481 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,25 @@ ChangeLog ========= +12.47.0 (2020/8/19) +------------------ + + +### ✨Improvements +- **チャンネル機能を実装** +- 管理パネルを刷新 +- ワードミュートの設定欄から、ミュートされたノート数を閲覧できるように +- テーマコードをコピーできるように +- オブジェクトストレージ設定に `アップロード時に'public-read'を設定する` を追加 +- サーバーから切断されたときの警告をダイアログで表示するオプションを追加 + +### 🐛Fixes + +- ユーザーのトークンが管理画面で見られるようになっていた不具合を修正 +- GCSに大きいファイルがアップロードできない不具合を修正 +- WebP 画像ファイルのアニメーションが失われる不具合を修正 + + 12.46.0 (2020/8/2) ------------------ diff --git a/README.md b/README.md index 0ed7a36bef..ef193fc4bf 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). mkatze kabo2468y AureoleArk -Nie(sha) osapon 見当かなみ Wataru Manji (manji0) @@ -142,7 +141,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). mkatze kabo2468y AureoleArk -Nie(sha) osapon 見当かなみ Wataru Manji (manji0) @@ -154,8 +152,8 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). Takumi Sugita sikyosyounin YUKIMOCHI +xianon totokoro -sheeta.s YuzuRyo61 mewl hayabusa @@ -163,10 +161,11 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). Takumi Sugita sikyosyounin YUKIMOCHI +xianon totokoro -sheeta.s + @@ -177,8 +176,8 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). - + @@ -189,9 +188,9 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). -
sheeta.s motcha axtuki1 Satsuki Yanaginatalie EBISUME noellabo CG
sheeta.s motcha axtuki1 Satsuki Yanaginatalie EBISUME noellabo CG
+ @@ -200,6 +199,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). + @@ -209,7 +209,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
CG Hekovic uroco @99 Chandler Efertone Takashi Shibuya
CG Hekovic uroco @99 Chandler Takashi Shibuya
-**Last updated:** Tue, 14 Jul 2020 09:00:09 UTC +**Last updated:** Sun, 26 Jul 2020 07:00:10 UTC [backer-url]: #backers diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index a12d42e195..f3273dd7a0 100644 --- a/locales/ar-SA.yml +++ b/locales/ar-SA.yml @@ -256,7 +256,6 @@ unregister: "إلغاء التسجيل" passwordLessLogin: "لِج مِن دون كلمة سرية" resetPassword: "أعد تعيين كلمتك السرية" newPasswordIs: "كلمتك السرية الجديدة هي {password}" -autoReloadWhenDisconnected: "إنعاش تلقائي عندما يُقطَع الإتصال بالخادم" autoNoteWatch: "راقب الملاحظات تلقائيا" share: "شارِك" notFound: "غير موجود" @@ -351,7 +350,11 @@ pluginInstallWarn: "يرجى تنصيب إضافات ذات مصدر موثوق smtpHost: "المضيف" smtpUser: "اسم المستخدم" smtpPass: "الكلمة السرية" +display: "المظهر" +_channel: + featured: "المتداوَلة" _sidebar: + full: "كامل" icon: "الصورة الرمزية" hide: "إخفاء" _theme: diff --git a/locales/de-DE.yml b/locales/de-DE.yml index bd24dee136..99a8cbc71c 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -84,14 +84,14 @@ quote: "Zitieren" pinnedNote: "Angepinnte Notiz" you: "Du" clickToShow: "Klicke, um diesen Inhalt anzusehen" -sensitive: "Dieser Inhalt ist NSFW" +sensitive: "NSFW" add: "Hinzufügen" reaction: "Reaktionen" reactionSettingDescription: "Gib deine Lieblingsreaktionen ein, um sie der Reaktionsauswahl hinzuzufügen." rememberNoteVisibility: "Notizsichtbarkeit merken" attachCancel: "Anhang entfernen" -markAsSensitive: "Als sensitiv markieren" -unmarkAsSensitive: "Markierung als sensitiv zurücknehmen" +markAsSensitive: "Als NSFW markieren" +unmarkAsSensitive: "Markierung als NSFW zurücknehmen" enterFileName: "Dateinamen eingeben" mute: "Stummschalten" unmute: "Stummschaltung aufheben" @@ -165,7 +165,7 @@ clearCachedFilesConfirm: "Sollen alle im Cache gespeicherten Dateien von anderen blockedInstances: "Blockierte Instanzen" blockedInstancesDescription: "Gib den Hostnamen der Instanz an, die blockiert werden soll. Blockierte Instanzen können nicht mehr mit dieser kommunizieren." muteAndBlock: "Stummgeschaltet / Blockiert" -mutedUsers: "Stummgestellte Benutzer" +mutedUsers: "Stummgeschaltete Benutzer" blockedUsers: "Blockierte Benutzer" noUsers: "Keine Benutzer" editProfile: "Profil bearbeiten" @@ -263,7 +263,8 @@ copyUrl: "URL kopieren" rename: "Umbenennen" avatar: "Profilbild" banner: "Banner" -nsfw: "Dieser Inhalt ist NSFW" +nsfw: "NSFW" +whenServerDisconnected: "Bei Verbindungsverlust zum Server" disconnectedFromServer: "Verbindung zum Server wurde getrennt" reload: "Aktualisieren" doNothing: "Ignorieren" @@ -364,7 +365,6 @@ unregister: "Deaktivieren" passwordLessLogin: "Passwortloses Anmelden einrichten" resetPassword: "Passwort zurücksetzen" newPasswordIs: "Das neue Passwort ist \"{password}\"" -autoReloadWhenDisconnected: "Automatisch aktualisieren wenn die Serververbindung getrennt wird" autoNoteWatch: "Notizen automatisch beobachten" autoNoteWatchDescription: "Werde über Notizen, auf die du reagiert oder geantwortet hast, informiert" reduceUiAnimation: "Animationen der Benutzeroberfläche reduzieren" @@ -468,6 +468,7 @@ objectStorageUseSSL: "SSL verwenden" objectStorageUseSSLDesc: "Deaktiviere dies falls du für die API-Verbindungen kein HTTPS verwenden wirst" objectStorageUseProxy: "Über Proxy verbinden" objectStorageUseProxyDesc: "Deaktiviere dies falls du keinen Proxy für den Objektspeicher verwenden wirst" +objectStorageSetPublicRead: "Bei Upload auf \"public-read\" stellen" serverLogs: "Serverprotokolle" deleteAll: "Alle löschen" showFixedPostForm: "Bereich zum Schreiben neuer Notizen am Anfang der Chronik anzeigen" @@ -557,6 +558,28 @@ wordMute: "Wort-Stummschaltung" userSaysSomething: "{name} hat etwas gesagt." makeActive: "Aktivieren" display: "Anzeige" +copy: "Kopieren" +metrics: "Metriken" +overview: "Übersicht" +logs: "Logs" +delayed: "Verzögert" +database: "Datenbank" +channel: "Kanal" +create: "Erstellen" +_serverDisconnectedBehavior: + reload: "Automatisch aktualisieren" + dialog: "Warnungsfenster zeigen" + quiet: "Unaufdringlich warnen" +_channel: + create: "Kanal erstellen" + edit: "Kanal bearbeiten" + setBanner: "Kanalbanner festlegen" + removeBanner: "Kanalbanner entfernen" + featured: "Trends" + owned: "Besitzer" + following: "Folgt" + usersCount: "{n} Teilnehmer" + notesCount: "{n} Notizen" _sidebar: full: "Voll" icon: "Profilbild" @@ -569,6 +592,7 @@ _wordMute: hardDescription: "Verhindern, dass Notizen, die die eingestellten Konditionen erfüllen, der Chronik hinzugefügt werden. Zudem werden diese Notizen auch nicht der Chronik hinzugefügt, falls die Konditionen geändert werden." soft: "Leicht" hard: "Schwer" + mutedNotes: "Stummgeschaltete Notizen" _theme: explore: "Themen erforschen" install: "Thema installieren" @@ -647,6 +671,7 @@ _sfx: chat: "Chat" chatBg: "Nachrichten (Hintergrund)" antenna: "Antennen" + channel: "Kanalbenachrichtigung" _ago: unknown: "Unbekannt" future: "Zukunft" @@ -712,9 +737,9 @@ _permissions: "write:mutes": "Stummschaltungen bearbeiten" "write:notes": "Notizen schreiben oder löschen" "read:notifications": "Benachrichtigungen lesen" - "write:notifications": "Mit Benachrichtigungen arbeiten" + "write:notifications": "Benachrichtigungen bearbeiten" "read:reactions": "Reaktionen lesen" - "write:reactions": "Reaktionen hinzufügen und bearbeiten" + "write:reactions": "Reaktionen hinzufügen und ändern" "write:votes": "In Umfragen abstimmen" "read:pages": "Deine Seiten lesen" "write:pages": "Deine Seiten bearbeiten oder löschen" @@ -722,6 +747,8 @@ _permissions: "write:page-likes": "Liste der Seiten, die mir gefallen, bearbeiten" "read:user-groups": "Benutzergruppen lesen" "write:user-groups": "Benutzergruppen bearbeiten oder löschen" + "read:channels": "Kanäle lesen" + "write:channels": "Kanäle bearbeiten" _auth: shareAccess: "Möchtest du \"{name}\" authorisieren, auf dieses Benuzerkonto zugreifen zu können?" shareAccessAsk: "Bist du dir sicher, dass du diese Anwendung authorisieren möchtest, auf dein Benutzerkonto zugreifen zu können?" @@ -796,6 +823,7 @@ _visibility: _postForm: replyPlaceholder: "Dieser Notiz antworten..." quotePlaceholder: "Diese Notiz zitieren..." + channelPlaceholder: "In einen Kanal senden" _placeholders: a: "Was machst du momentan?" b: "Was ist um dich herum los?" diff --git a/locales/en-US.yml b/locales/en-US.yml index b83c1048c7..77269ff847 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -264,6 +264,7 @@ rename: "Rename" avatar: "Avatar" banner: "Banner" nsfw: "NSFW" +whenServerDisconnected: "When losing connection to the server" disconnectedFromServer: "Connection to the server was interrupted." reload: "Refresh" doNothing: "Ignore" @@ -364,7 +365,6 @@ unregister: "Unregister" passwordLessLogin: "Set up password-less login" resetPassword: "Reset password" newPasswordIs: "The new password is \"{password}\"" -autoReloadWhenDisconnected: "Auto refresh when disconnected from server" autoNoteWatch: "Watch note automatically" autoNoteWatchDescription: "Get notified about the notes which you reactioned or replied." reduceUiAnimation: "Reduce UI animation" @@ -468,6 +468,7 @@ objectStorageUseSSL: "Use SSL" objectStorageUseSSLDesc: "Turn off this if you are not going to use HTTPS for API connection" objectStorageUseProxy: "Connect over Proxy" objectStorageUseProxyDesc: "Turn off this if you are not going to use Proxy for ObjectStorage connection" +objectStorageSetPublicRead: "Set \"public-read\" on upload" serverLogs: "Server logs" deleteAll: "Delete all" showFixedPostForm: "Display the posting form at the top of the timeline" @@ -557,6 +558,28 @@ wordMute: "Word mute" userSaysSomething: "{name} said something" makeActive: "Activate" display: "Display" +copy: "Copy" +metrics: "Metrics" +overview: "Overview" +logs: "Logs" +delayed: "Delayed" +database: "Database" +channel: "Channel" +create: "Create" +_serverDisconnectedBehavior: + reload: "Automatically reload" + dialog: "Show warning dialog" + quiet: "Show unobtrusive warning" +_channel: + create: "Create channel" + edit: "Edit channel" + setBanner: "Set banner" + removeBanner: "Remove banner" + featured: "Trending" + owned: "Owner" + following: "Following" + usersCount: "{n} Participants" + notesCount: "{n} Notes" _sidebar: full: "Full" icon: "Avatar" @@ -569,6 +592,7 @@ _wordMute: hardDescription: "Prevent notes fulfilling the set conditions from being added to the timeline. In addition, these notes will not be added to the timeline even if the conditions are changed." soft: "Soft" hard: "Hard" + mutedNotes: "Muted notes" _theme: explore: "Explore Themes" install: "Install theme" @@ -647,6 +671,7 @@ _sfx: chat: "Messaging" chatBg: "Messaging (Background)" antenna: "Antenna Reception" + channel: "Channel notifications" _ago: unknown: "Unknown" future: "Future" @@ -722,6 +747,8 @@ _permissions: "write:page-likes": "Edit likes on pages" "read:user-groups": "View user groups" "write:user-groups": "Edit or delete user groups" + "read:channels": "Read channels" + "write:channels": "Modify channels" _auth: shareAccess: "Would you like to authorize \"{name}\" to access this account?" shareAccessAsk: "Are you sure you want to authorize this application to access your account?" @@ -796,6 +823,7 @@ _visibility: _postForm: replyPlaceholder: "Reply to this note..." quotePlaceholder: "Quote this note..." + channelPlaceholder: "Post to channel" _placeholders: a: "What are you up to?" b: "What's happening around you?" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 281406a5cc..a42ae9e9a4 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -364,7 +364,6 @@ unregister: "Cancelar registro" passwordLessLogin: "Iniciar sesión sin contraseña" resetPassword: "Resetear contraseña" newPasswordIs: "La nueva contraseña es \"{password}\"" -autoReloadWhenDisconnected: "Recargar automáticamente cuando el servidor está desconectado" autoNoteWatch: "Ver nota automáticamente" autoNoteWatchDescription: "Recibe notificaciones sobre las notas de otros usuarios que a los que respondiste y reaccionaste" reduceUiAnimation: "Reducir la animación de la UI" @@ -468,6 +467,7 @@ objectStorageUseSSL: "Usar SSL" objectStorageUseSSLDesc: "Desactive esto si no va a usar HTTPS para la conexión API" objectStorageUseProxy: "Conectarse a través de Proxy" objectStorageUseProxyDesc: "Desactive esto si no va a usar Proxy para la conexión de Almacenamiento de objetos" +objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir " serverLogs: "Registros del servidor" deleteAll: "Eliminar todos" showFixedPostForm: "Mostrar el formulario de las entradas encima de la línea de tiempo" @@ -556,7 +556,17 @@ testEmail: "Prueba de envío" wordMute: "Silenciar palabras" userSaysSomething: "{name} dijo algo" makeActive: "Activar" +display: "Apariencia" +copy: "Copiar" +metrics: "Métricas" +overview: "Resumen" +logs: "Registros" +delayed: "atrasado" +database: "Base de datos" +_channel: + featured: "Tendencias" _sidebar: + full: "Completo" icon: "Avatar" hide: "Ocultar" _wordMute: @@ -567,6 +577,7 @@ _wordMute: hardDescription: "Evitar que se agreguen a la linea de tiempo las notas que cumplen las condiciones. Las notas no agregadas seguirán quitadas aunque cambien las condiciones." soft: "Suave" hard: "Duro" + mutedNotes: "Notas silenciadas" _theme: explore: "Explorar temas" install: "Instalar tema" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index c26619495c..c3664c39fa 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -364,7 +364,6 @@ unregister: "Se désinscrire" passwordLessLogin: "Connectez-vous sans mot de passe" resetPassword: "Réinitialiser mot de passe" newPasswordIs: "Votre nouveau mot de passe est \"{password}\"" -autoReloadWhenDisconnected: "Rechargement automatique lorsque le serveur se déconnecte" autoNoteWatch: "Surveiller les notes automatiquement" autoNoteWatchDescription: "Soyez informé des notes auxquelles vous avez réagi ou répondu." reduceUiAnimation: "Réduire les animations dans l’interface" @@ -540,10 +539,24 @@ pluginTokenRequestedDescription: "Ce plugin pourra utiliser les autorisations d notificationType: "Type de notifications" edit: "Editer" emailConfig: "Configuration du serveur email" +enableEmail: "Activer la distribution de courriel" +emailConfigInfo: "Utilisé pour confirmer votre adresse de courriel et la réinitialisation de votre mot de passe en cas d’oubli." +email: "Adresse de courrier électronique" +smtpConfig: "Paramètres du serveur SMTP" smtpHost: "Hôte" +smtpPort: "Port" smtpUser: "Nom d’utilisateur·rice" smtpPass: "Mot de passe" +emptyToDisableSmtpAuth: "Laisser le nom d’utilisateur et le mot de passe vides pour désactiver la vérification SMTP" +smtpSecure: "Utiliser SSL/TLS implicitement dans les connexions SMTP" +wordMute: "Filtre de mots" +userSaysSomething: "{name} a dit quelque chose" +makeActive: "Activer" +display: "Affichage" +_channel: + featured: "Tendances" _sidebar: + full: "Complet" icon: "Avatar" hide: "Masquer" _theme: @@ -1161,6 +1174,9 @@ _deck: alwaysShowMainColumn: "Toujours afficher la colonne principale" columnAlign: "Aligner les colonnes" addColumn: "Ajouter une colonne" + swapLeft: "Déplacer à gauche" + swapRight: "Déplacer à droite" + stackLeft: "Empiler à gauche" _columns: widgets: "Widgets" notifications: "Notifications" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 1b32cb772e..709afd3473 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -348,7 +348,6 @@ unregister: "登録やめる" passwordLessLogin: "パスワード無くてもログインできるようにする" resetPassword: "パスワードをリセット" newPasswordIs: "今度のパスワードは「{password}」や" -autoReloadWhenDisconnected: "サーバーが調子悪いときには自動でリロードしたる" notFoundDescription: "指定されたURLに該当するページはあらへんやった。" close: "さいなら" joinedGroups: "参加しとるグループ" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 1974fd49b7..0dcea81574 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -364,7 +364,6 @@ unregister: "등록 해제" passwordLessLogin: "비밀번호 없이 로그인" resetPassword: "비밀번호 재설정" newPasswordIs: "새로운 비밀번호는 \"{password}\" 입니다" -autoReloadWhenDisconnected: "서버와의 연결이 끊기면 자동 새로고침" autoNoteWatch: "노트를 자동으로 지켜보기" autoNoteWatchDescription: "리액션하거나 답글을 남긴 다른 유저의 노트에 대한 알림을 받습니다." reduceUiAnimation: "UI의 애니메이션을 줄이기" @@ -533,16 +532,27 @@ generateAccessToken: "액세스 토큰 생성" permission: "권한" enableAll: "전체 선택" disableAll: "전체 해제" +tokenRequested: "계정 접근 허용" edit: "편집" useStarForReactionFallback: "알 수 없는 리액션 이모지 대신 ★ 사용" +emailConfig: "메일 서버 설정" +emailConfigInfo: "가입 시 메일 주소 확인이나 비밀번호 초기화 시에 사용합니다." email: "메일 주소" smtpConfig: "SMTP 서버 설정" smtpHost: "호스트" +smtpPort: "포트" smtpUser: "유저명" smtpPass: "비밀번호" emptyToDisableSmtpAuth: "SMTP 인증을 사용하지 않으려면 공란으로 비워둡니다." +smtpSecure: "SMTP 연결에 Implicit SSL/TTS 사용" smtpSecureInfo: "STARTTLS 사용 시에는 해제합니다." wordMute: "단어 뮤트" +makeActive: "활성화" +copy: "복사" +logs: "로그" +database: "데이터베이스" +_channel: + featured: "트렌드" _sidebar: icon: "아바타" hide: "숨기기" @@ -569,6 +579,8 @@ _theme: funcKind: "함수 종류" argument: "매개변수" keys: + link: "링크" + hashtag: "해시태그" mention: "멘션" renote: "Renote" divider: "구분선" @@ -1144,7 +1156,11 @@ _notification: renote: "Renote" quote: "인용" reaction: "리액션" + receiveFollowRequest: "팔로우 요청" _deck: + alwaysShowMainColumn: "메인 칼럼 항상 표시" + columnAlign: "칼럼 정렬" + addColumn: "칼럼 추가" swapLeft: "왼쪽으로 이동" swapRight: "오른쪽으로 이동" swapUp: "위로 이동" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 930f4185c7..9054d150c1 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -264,6 +264,7 @@ rename: "重命名" avatar: "头像" banner: "Banner" nsfw: "阅读注意" +whenServerDisconnected: "与服务器连接中断时" disconnectedFromServer: "已从服务器断开连接" reload: "重新加载" doNothing: "什么都不做" @@ -364,7 +365,6 @@ unregister: "删除账户" passwordLessLogin: "无密码登录" resetPassword: "重置密码" newPasswordIs: "新的密码是「{password}」" -autoReloadWhenDisconnected: "断开连接时自动重新加载" autoNoteWatch: "自动关注帖子" autoNoteWatchDescription: "让您能够收到关于「回应」和回复其他用户的帖子的通知。" reduceUiAnimation: "减少UI动画" @@ -468,6 +468,7 @@ objectStorageUseSSL: "使用SSL" objectStorageUseSSLDesc: "如果不使用https进行API连接,请关闭。" objectStorageUseProxy: "使用代理" objectStorageUseProxyDesc: "如果您不使用代理进行API连接,请将其关闭。" +objectStorageSetPublicRead: "上传时设置为public-read" serverLogs: "服务器日志" deleteAll: "删除全部" showFixedPostForm: "在时间线顶部显示帖子表单" @@ -490,8 +491,8 @@ state: "状态" sort: "排序" ascendingOrder: "升序" descendingOrder: "降序" -scratchpad: "暂存器" -scratchpadDescription: "暂存器为AiScript提供了实验环境。您可以编写代码以与Misskey交互,运行它并查看结果。" +scratchpad: "便签本" +scratchpadDescription: "便签本为AiScript提供了实验环境。您可以编写代码以与Misskey交互,运行它并查看结果。" output: "输出" script: "脚本" disablePagesScript: "禁用页面脚本" @@ -557,8 +558,29 @@ wordMute: "文字屏蔽" userSaysSomething: "{name}说了什么" makeActive: "激活" display: "显示" +copy: "复制" +metrics: "指标" +overview: "概述" +logs: "日志" +delayed: "延迟" +database: "数据库" +channel: "频道" +create: "创建" +_serverDisconnectedBehavior: + reload: "自动重载" +_channel: + create: "创建频道" + edit: "编辑频道" + setBanner: "设置横幅" + removeBanner: "删除横幅" + featured: "热点" + owned: "管理中" + following: "正在关注" + usersCount: "有{n}人参与" + notesCount: "有{n}个帖子" _sidebar: - icon: "头像" + full: "全部" + icon: "图标" hide: "隐藏" _wordMute: muteWords: "禁用词" @@ -566,6 +588,9 @@ _wordMute: muteWordsDescription2: "将关键字用斜线括起来表示正则表达式。" softDescription: "隐藏时间轴中指定条件的帖文。" hardDescription: "防止将具有指定条件的帖文添加到时间线。 即使您更改条件,未添加的帖文也会被排除在外。" + soft: "软屏蔽" + hard: "硬屏蔽" + mutedNotes: "被屏蔽的帖文" _theme: explore: "寻找主题" install: "安装主题" @@ -644,6 +669,7 @@ _sfx: chat: "聊天" chatBg: "聊天背景" antenna: "天线接收" + channel: "频道通知" _ago: unknown: "未知" future: "未来" @@ -719,6 +745,8 @@ _permissions: "write:page-likes": "操作喜欢的页面" "read:user-groups": "查看用户组" "write:user-groups": "操作用户组" + "read:channels": "查看频道" + "write:channels": "管理频道" _auth: shareAccess: "您要授权允许“{name}”访问您的帐户吗?" shareAccessAsk: "您确定要授权此应用程序访问您的帐户吗?" @@ -793,6 +821,7 @@ _visibility: _postForm: replyPlaceholder: "回复这个帖子..." quotePlaceholder: "引用这个帖子..." + channelPlaceholder: "发布到频道…" _placeholders: a: "现在如何?" b: "发生了什么?" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 82dd24b7b9..aeff7f20e4 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -47,6 +47,7 @@ receiveFollowRequest: "收到追隨請求" followRequestAccepted: "追隨請求已接受" mention: "提及" mentions: "提及" +directNotes: "私信" importAndExport: "匯入 / 匯出" import: "匯入" export: "匯出" @@ -103,17 +104,22 @@ unblockConfirm: "確定解除封鎖此用戶?" suspendConfirm: "確定凍結此帳號?" unsuspendConfirm: "確定解凍此帳號?" selectList: "選擇清單" +selectAntenna: "選擇天線" +selectWidget: "選擇小工具" customEmojis: "自訂表情符號" emoji: "表情符號" emojiName: "表情符號名稱" emojiUrl: "表情符號URL" addEmoji: "新增表情符號" settingGuide: "推薦設定" +cacheRemoteFiles: "遠程文件緩存" +cacheRemoteFilesDescription: "如果禁用此設定,遠程文件將會被直接連結而非緩存。禁用將節省服務器上的存儲空間,但會因為沒有生成預覽圖而增加流量。" flagAsBot: "此帳戶是Bot" flagAsCat: "此帳戶是Cat" autoAcceptFollowed: "自動許可追隨" addAcount: "新增帳號" loginFailed: "登入失敗" +showOnRemote: "轉到所在實例顯示" general: "一般" wallpaper: "桌布" setWallpaper: "設定桌布" @@ -122,12 +128,16 @@ searchWith: "搜尋: {q}" youHaveNoLists: "沒有任何清單" followConfirm: "你真的要關注{name}嗎?" proxyAccount: "代理帳號" +proxyAccountDescription: "代理帳號是在某些情況下充當其他服務器用戶的帳號。例如,當用戶將一個來自其他服務器的帳號放在列表中時,由於沒有其他用戶關注該帳號,該指令不會傳送到該服務器上,因此會由代理帳戶關注。" host: "主機" selectUser: "選取使用者" recipient: "發送至" annotation: "註解" federation: "聯邦宇宙" instances: "實例" +registeredAt: "初次觀測" +latestRequestSentAt: "上次發送的請求" +latestRequestReceivedAt: "上次收到的請求" latestStatus: "最後狀態" storageUsage: "已使用容量" charts: "圖表" @@ -148,6 +158,7 @@ instanceInfo: "實例資訊" statistics: "統計" clearQueue: "清除佇列" clearQueueConfirmTitle: "確定要清除佇列嗎?" +clearQueueConfirmText: "未發佈的帖子將不會發佈。您通常不需要確認。" clearCachedFiles: "清除快取資料" clearCachedFilesConfirm: "確定要清除緩存資料嗎?" blockedInstances: "已封鎖的實例" @@ -200,6 +211,8 @@ upload: "上傳" fromDrive: "從雲端" fromUrl: "從URL" uploadFromUrl: "從網址上傳" +uploadFromUrlDescription: "您要上傳的文件的URL" +uploadFromUrlRequested: "已請求上傳" uploadFromUrlMayTakeTime: "還需要一些時間才能完成上傳。" explore: "探索" games: "Misskey 遊戲" @@ -210,6 +223,7 @@ nUsersRead: "{n}人已讀" tos: "使用條款" start: "開始" home: "首頁" +remoteUserCaution: "由於是遠程用戶,信息不完整。" activity: "動態" images: "圖片" birthday: "生日" @@ -217,10 +231,13 @@ yearsOld: "{age}歲" registeredDate: "註冊日期" location: "位置" theme: "外觀主題" +themeForLightMode: "在淺色模式下使用的主題" +themeForDarkMode: "在深色模式下使用的主題" light: "淺色" dark: "灰暗" lightThemes: "明亮主題" darkThemes: "灰暗主題" +syncDeviceDarkMode: "將深色模式與設備設置同步" drive: "雲端硬碟" fileName: "檔案名稱" selectFile: "選擇檔案" @@ -238,11 +255,14 @@ emptyFolder: "空的資料夾" unableToDelete: "無法刪除" inputNewFileName: "輸入檔案名稱" inputNewFolderName: "輸入新資料夾的名稱" +circularReferenceFolder: "目標文件夾是您要移動的文件夾的子文件夾。" +hasChildFilesOrFolders: "此文件夾不是空的,無法刪除。" copyUrl: "複製URL" rename: "重新命名" avatar: "頭像" banner: "橫幅" nsfw: "敏感內容" +whenServerDisconnected: "與服務器的連接中斷時" disconnectedFromServer: "與伺服器中斷連線" reload: "重新載入" doNothing: "無視" @@ -269,10 +289,12 @@ connectSerice: "連線" disconnectSerice: "中斷連線" enableLocalTimeline: "開啟本地時間軸" enableGlobalTimeline: "開啟全球時間軸" +disablingTimelinesInfo: "即使您禁用了時間線功能,管理員和協調人仍可以繼續使用,以方便您。" registration: "註冊" enableRegistration: "開啟新用戶註冊" invite: "邀請" proxyRemoteFiles: "代理遠程檔案" +proxyRemoteFilesDescription: "啟用此設置後,由於超出存儲容量而未保存或刪除的遠程文件將被本地代理,並且將生成預覽圖。這不影響服務器的存儲。" driveCapacityPerLocalAccount: "每個本地用戶的雲端容量" driveCapacityPerRemoteAccount: "每個非本地用戶的雲端容量" inMb: "以Mbps為單位" @@ -280,6 +302,7 @@ iconUrl: "圖像URL" bannerUrl: "橫幅圖片URL" basicInfo: "基本資訊" pinnedUsers: "置頂用戶" +pinnedUsersDescription: "在「發現」頁面中使用換行標記想要置頂的用戶。" hcaptcha: "hCaptcha" enableHcaptcha: "啟用 hCaptcha" hcaptchaSiteKey: "網站金鑰" @@ -288,13 +311,21 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "啟用 reCAPTCHA" recaptchaSiteKey: "網站金鑰" recaptchaSecretKey: "金鑰" +avoidMultiCaptchaConfirm: "使用多種驗證方式可能會造成干擾,您要禁用其他驗證方式嗎?您可以按“取消”保留多種驗證方式。" +antennas: "天線" +manageAntennas: "管理天線" name: "名稱" +antennaSource: "接收來源" antennaKeywords: "包含的關鍵字" antennaExcludeKeywords: "排除關鍵字" +antennaKeywordsDescription: "用空格分隔指定AND、用換行符分隔指定OR" notifyAntenna: "通知我有新的貼文" serviceworker: "ServiceWorker" enableServiceworker: "開啟 ServiceWorker" +antennaUsersDescription: "指定用換行符分隔的用戶名" caseSensitive: "區分大小寫" +withReplies: "包含回覆" +connectedTo: "您的帳號已連接到以下社交帳號" notesAndReplies: "貼文與回覆" withFiles: "附件" silence: "禁言" @@ -311,6 +342,9 @@ popularTags: "熱門標籤" userList: "清單" about: "資訊" aboutMisskey: "關於 Misskey" +aboutMisskeyText: "Misskey是由syuilo於2014年開發的開放源代碼軟件。" +misskeyMembers: "現在由以下成員開發及維護:" +misskeySource: "源代碼在這裡公開:" misskeyTranslation: "幫助我們為Misskey的翻譯工作出一分力:" misskeyDonate: "向Misskey捐款以支援我們開發工作:" morePatrons: "感激你們的支持、 幫助。 🥰" @@ -328,7 +362,6 @@ unregister: "刪除賬戶" passwordLessLogin: "設置無密碼登入" resetPassword: "重置密碼" newPasswordIs: "新密碼為「{password}」" -autoReloadWhenDisconnected: "和伺服器斷線時自動重新載入" autoNoteWatch: "自動追隨貼文" autoNoteWatchDescription: "收到反應或回覆過的貼文的通知" reduceUiAnimation: "減少介面的動態視覺" @@ -346,6 +379,7 @@ close: "關閉" group: "群組" groups: "群組" createGroup: "創建群組" +ownedGroups: "擁有的群組" joinedGroups: "群組成員" invites: "邀請" groupName: "群組名稱" @@ -379,10 +413,23 @@ normalPassword: "密碼強度普通" strongPassword: "密碼強度堅強" passwordMatched: "密碼一致" passwordNotMatched: "密碼不一致" +signinWith: "以{x}登錄" signinFailed: "登入失敗。 請檢查用戶名和密碼。" +tapSecurityKey: "點擊安全密鑰" +or: "或者" uiLanguage: "介面語言" +groupInvited: "您有新的群組邀請" +aboutX: "關於{x}" +useOsNativeEmojis: "使用OS原生表情符號" youHaveNoGroups: "找不到群組" +joinOrCreateGroup: "請加入現有群組,或創建新群組。" +noHistory: "沒有歷史紀錄" +disableAnimatedMfm: "禁用MFM動畫" +doing: "正在進行" +category: "類別" tags: "標籤" +docSource: "文件來源" +createAccount: "建立帳戶" fontSize: "字體大小" total: "合計" clinetSettings: "用戶端設定" @@ -404,11 +451,68 @@ scratchpad: "暫存記憶體" output: "輸出" deleteAllFiles: "刪除所有檔案" deleteAllFilesConfirm: "要删除所有檔案吗?" +userSuspended: "該用戶已被凍結" userSilenced: "該用戶已被禁言。" +sidebar: "側邊列" +divider: "分割線" +addItem: "新增項目" +rooms: "房間" +relays: "中繼" +addRelay: "添加中繼" +inboxUrl: "私信URL" +addedRelays: "已添加的中繼" +serviceworkerInfo: "您需要啟用推送通知" deletedNote: "已删除的貼文" +invisibleNote: "隱藏的帖子" +enableInfiniteScroll: "啟用自動滾動頁面模式" +visibility: "公開範圍" +poll: "投票" +useCw: "隱藏內容" +fixedWidgetsPosition: "固定小工具的位置" +enablePlayer: "打開播放器" +disablePlayer: "關閉播放器" +expandTweet: "展開推文" +themeEditor: "主題編輯器" +description: "描述" +author: "作者" +leaveConfirm: "有未保存的更改。要放棄嗎?" +manage: "管理" +plugins: "插件" +pluginInstallWarn: "請不要安裝來源不明的插件。" +deck: "多欄模式" +undeck: "取消多欄模式" +permission: "權限" +enableAll: "啟用全部" +disableAll: "停用全部" +tokenRequested: "允許訪問帳號" +notificationType: "通知形式" +edit: "編輯" +useStarForReactionFallback: "以★代替未知的表情符號" +emailConfig: "電郵服務器設定" +enableEmail: "啟用發送電郵功能" +emailConfigInfo: "用於確認電郵地址及密碼重置" +email: "電郵地址" +smtpConfig: "SMTP服務器設定" smtpHost: "主機" +smtpPort: "端口" smtpUser: "使用名稱" smtpPass: "密碼" +channel: "頻道" +create: "新增" +_serverDisconnectedBehavior: + reload: "自動重載" + dialog: "以對話框警告" + quiet: "適當地警告" +_channel: + create: "建立頻道" + edit: "編輯頻道" + setBanner: "設置封面圖" + removeBanner: "移除封面圖" + featured: "流行" + owned: "管理中" + following: "關注中" + usersCount: "有{n}人參與" + notesCount: "有{n}個帖子" _sidebar: icon: "頭像" _theme: @@ -416,11 +520,13 @@ _theme: keys: mention: "提及" renote: "轉發貼文" + divider: "分割線" _sfx: note: "貼文" noteMy: "我的貼文" notification: "通知" chat: "傳送訊息" + channel: "頻道通知" _ago: unknown: "未知" future: "未來" @@ -471,6 +577,8 @@ _permissions: "read:reactions": "查看反應" "write:reactions": "編輯反應" "write:votes": "投票" + "read:channels": "已查看的頻道" + "write:channels": "操作頻道" _weekday: sunday: "週日" monday: "週一" @@ -497,6 +605,8 @@ _poll: _visibility: home: "首頁" followers: "追隨者" +_postForm: + channelPlaceholder: "發佈到頻道" _profile: name: "名稱" username: "使用名稱" @@ -675,6 +785,7 @@ _notification: youGotPoll: "{name}已投票" youWereFollowed: "您有新的追隨者" yourFollowRequestAccepted: "您的追隨請求已通過" + youWereInvitedToGroup: "您有新的群組邀請" _types: follow: "追隨中" mention: "提及" @@ -685,5 +796,6 @@ _deck: _columns: notifications: "通知" tl: "時間軸" + antenna: "天線" list: "清單" mentions: "提及" diff --git a/migration/1597893996136-ChannelNoteIdDescIndex.ts b/migration/1597893996136-ChannelNoteIdDescIndex.ts new file mode 100644 index 0000000000..6cbd865fc6 --- /dev/null +++ b/migration/1597893996136-ChannelNoteIdDescIndex.ts @@ -0,0 +1,16 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class ChannelNoteIdDescIndex1597893996136 implements MigrationInterface { + name = 'ChannelNoteIdDescIndex1597893996136' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX "IDX_f22169eb10657bded6d875ac8f"`); + await queryRunner.query(`CREATE INDEX "IDX_note_on_channelId_and_id_desc" ON "note" ("channelId", "id" desc)`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX "IDX_note_on_channelId_and_id_desc"`); + await queryRunner.query(`CREATE INDEX "IDX_f22169eb10657bded6d875ac8f" ON "note" ("channelId") `); + } + +} diff --git a/package.json b/package.json index 611bad9f42..6654e199be 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "misskey", "author": "syuilo ", - "version": "12.46.0", + "version": "12.47.0", "codename": "indigo", "repository": { "type": "git", diff --git a/src/server/api/openapi/schemas.ts b/src/server/api/openapi/schemas.ts index 0a49607f05..b96d1f457f 100644 --- a/src/server/api/openapi/schemas.ts +++ b/src/server/api/openapi/schemas.ts @@ -15,6 +15,7 @@ import { packedHashtagSchema } from '../../../models/repositories/hashtag'; import { packedPageSchema } from '../../../models/repositories/page'; import { packedUserGroupSchema } from '../../../models/repositories/user-group'; import { packedNoteFavoriteSchema } from '../../../models/repositories/note-favorite'; +import { packedChannelSchema } from '../../../models/repositories/channel'; export function convertSchemaToOpenApiSchema(schema: Schema) { const res: any = schema; @@ -82,4 +83,5 @@ export const schemas = { Blocking: convertSchemaToOpenApiSchema(packedBlockingSchema), Hashtag: convertSchemaToOpenApiSchema(packedHashtagSchema), Page: convertSchemaToOpenApiSchema(packedPageSchema), + Channel: convertSchemaToOpenApiSchema(packedChannelSchema), }; diff --git a/src/services/drive/add-file.ts b/src/services/drive/add-file.ts index fbd2f76ddc..8d32d06d2e 100644 --- a/src/services/drive/add-file.ts +++ b/src/services/drive/add-file.ts @@ -160,12 +160,30 @@ export async function generateAlts(path: string, type: string, generateWeb: bool } } - const img = sharp(path); - const metadata = await img.metadata(); - const isAnimated = metadata.pages && metadata.pages > 1; + if (!['image/jpeg', 'image/png', 'image/webp'].includes(type)) { + logger.debug(`web image and thumbnail not created (not an required file)`); + return { + webpublic: null, + thumbnail: null + }; + } - // skip animated - if (isAnimated) { + let img: sharp.Sharp | null = null; + + try { + img = sharp(path); + const metadata = await img.metadata(); + const isAnimated = metadata.pages && metadata.pages > 1; + + // skip animated + if (isAnimated) { + return { + webpublic: null, + thumbnail: null + }; + } + } catch (e) { + logger.warn(`sharp failed: ${e}`); return { webpublic: null, thumbnail: null