diff --git a/README.md b/README.md index 6c7d481cf..6d4044243 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ - +[![Misskey](/assets/about/banner.svg)](https://join.misskey.page/) -[![Misskey](/assets/title.png)](https://join.misskey.page/) -================================================================ +

Misskey

+ +
[![CircleCI](https://img.shields.io/circleci/project/github/syuilo/misskey.svg?style=for-the-badge&logo=circleci)](https://circleci.com/gh/syuilo/misskey) [![Dependencies](https://img.shields.io/david/syuilo/misskey.svg?style=for-the-badge&logo=npm)](https://david-dm.org/syuilo/misskey) @@ -10,71 +11,52 @@ **A forever evolving, interplanetary microblogging platform.** -

Misskey is a decentralized microblogging platform born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? Find an instance! -

Become a Patron! +
+ +--- + ![](https://ja.mstdn.wiki/images/e/ed/Deck.jpg) :sparkles: Features ---------------------------------------------------------------- + - - -

Posting

-

+

Posting

+

Post your ideas, discussion topics, fun moments, or anything else you want to share! Misskey supports text, emoji, pictures, videos, and polls!

--- - - -

Reactions

-

+

Reactions

+

Reactions are the simplest way to respond to others' posts. Simply pick a reaction emote from the list! Reactions on Misskey are much more expressive than other social media services which only allow “liking”.

--- - - -

Interface

-

+

Interface

+

Customize the UI to your own tastes! No UI will work for everyone, so Misskey is completely customizable. Make Misskey *yours* by editing the style, adjusting timeline layouts, and placing widgets.

--- - - -

Misskey Drive

-

+

Misskey Drive

+

Organize and store your files! Want to post a picture you have already uploaded? Wish you could organize your files into folders? Misskey Drive is a solution!

--- -...and more! Experience Misskey with your own eyes at [misskey.io](https://misskey.io/) or join one of the [other instances](https://joinmisskey.github.io/) that are available. - -To recive updates of this repo, follow [@repo@misskey.io](https://misskey.io/@repo) on fediverse. - -Screen shots ----------------------------------------------------------------- -### Profile page - - -### Explore users - - -:new: What's new ----------------------------------------------------------------- -Please see the [Release notes](./CHANGELOG.md). +...and more! :package: Create your own instance ---------------------------------------------------------------- @@ -108,6 +90,10 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). +--- + +To receive updates of this repo, follow [@repo@misskey.io](https://misskey.io/@repo) on fediverse. + :heart: Backers ---------------------------------------------------------------- diff --git a/assets/about/banner.svg b/assets/about/banner.svg new file mode 100644 index 000000000..586cc034e --- /dev/null +++ b/assets/about/banner.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62d9285a05f04db45533bbad9dca576ce23f934fdc8755c98796700f69c408d3 +size 35817 diff --git a/assets/apple-touch-icon.png b/assets/apple-touch-icon.png index dc8915ab3..5690131fd 100644 --- a/assets/apple-touch-icon.png +++ b/assets/apple-touch-icon.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b5adc56bb321a9425ac990e0283669d031e3e4c3ac6a4d99dd827e038253837 -size 9682 +oid sha256:517f8901f5ae6f145052ab6bf7b87cbfdb5763e882913d0b0c9d9c28f881b499 +size 9828 diff --git a/assets/banner.afdesign b/assets/banner.afdesign new file mode 100644 index 000000000..e3e9e81f4 --- /dev/null +++ b/assets/banner.afdesign @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cd303e731d0b45bf3a79ed6c2647952d738feca261b4217d4d5b37f7692ae38 +size 65435 diff --git a/assets/icons/192.png b/assets/icons/192.png index 63c87a02f..88441037f 100644 --- a/assets/icons/192.png +++ b/assets/icons/192.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1888db2dc773a9d47a6c1a5c48e48cb3da622578ee8b1eaf129c16e8531c5fc -size 7418 +oid sha256:4278be839cc7aab2134939fae25a3ad4c1b77e046ecde9cc06a98c772cb4081a +size 7629 diff --git a/assets/icons/512.png b/assets/icons/512.png index ee7ce4ef6..f6d7a2a6c 100644 --- a/assets/icons/512.png +++ b/assets/icons/512.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9df7029c43c4906fa2d88523cb44da8ee07bf412bde527297b5befe64102337e -size 20175 +oid sha256:511642a19bda7d3c65c326d4e55ac1706c3a087f317fcb6e68c3fffe6e185756 +size 20527 diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index 75fcc1d9a..0c96bcf2c 100644 --- a/locales/ar-SA.yml +++ b/locales/ar-SA.yml @@ -32,6 +32,9 @@ addUser: "اضافة مستخدم" favorite: "إضافة إلى المفضلة" favorites: "المفضلات" unfavorite: "إزالة من المفضلة" +favorited: "تمت الإضافة إلى المفضلة." +alreadyFavorited: "تمت إضافته بالفعل إلى المفضلة." +cantFavorite: "تعذرت الإضافة إلى المفضلة." pin: "دبّسها على الصفحة الشخصية" unpin: "ألغ تثبيتها من ملفك الشخصي" copyContent: "انسخ المحتوى" @@ -398,7 +401,6 @@ useCw: "إخفاء المحتوى" themeEditor: "مصمم القوالب" manage: "إدارة " plugins: "الإضافات" -pluginInstallWarn: "يرجى تنصيب إضافات ذات مصدر موثوق منه فقط." width: "العرض" height: "الإرتفاع" large: "كبير" @@ -423,6 +425,9 @@ metrics: "المقاييس" public: "للعامة" currentVersion: "الإصدار الحالي" latestVersion: "آخر نسخة مستقرة" +usageAmount: "الإستخدام" +capacity: "السعة" +inUse: "مستخدم" _mfm: mention: "أشر الى" quote: "اقتبس" diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 903a70c53..682e03d43 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -548,7 +548,6 @@ author: "Autor" leaveConfirm: "Es gibt unspeicherte Änderungen. Möchtest du diese verwerfen?" manage: "Verwaltung" plugins: "Plugins" -pluginInstallWarn: "Installiere nur vertrauenswürdige Plugins." deck: "Deck" undeck: "Deck verlassen" useBlurEffectForModal: "Weichzeichnungseffekt für Modals verwenden" @@ -692,6 +691,20 @@ deleteConfirm: "Wirklich löschen?" invalidValue: "Ungültiger Wert." registry: "Registry" closeAccount: "Benutzerkonto schließen" +currentVersion: "Momentane Version" +latestVersion: "Neuste Version" +youAreRunningUpToDateClient: "Du verwendest die neuste Version deines Clients." +newVersionOfClientAvailable: "Eine neuere Version deines Clients ist verfügbar." +usageAmount: "Verwendung" +capacity: "Kapazität" +inUse: "Verwendet" +editCode: "Code bearbeiten" +apply: "Anwenden" +receiveAnnouncementFromInstance: "Benachrichtigungen von der Instanz empfangen" +_plugin: + install: "Plugins installieren" + installWarn: "Installiere bitte nur vertrauenswürdige Plugins." + manage: "Plugins verwalten" _registry: scope: "Scope" key: "Schlüssel" @@ -1032,6 +1045,7 @@ _widgets: onlineUsers: "Benutzer Online" jobQueue: "Job-Warteschlange" serverMetric: "Servermetriken" + aiscript: "AiScript-Konsole" _cw: hide: "Ausblenden" show: "Mehr anzeigen" diff --git a/locales/en-US.yml b/locales/en-US.yml index 829afa24b..3f9884dfb 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -548,7 +548,6 @@ author: "Author" leaveConfirm: "There are unsaved changes. Do you want to discard them?" manage: "Management" plugins: "Plugins" -pluginInstallWarn: "Please do not install untrustworthy plugins." deck: "Deck" undeck: "Leave Deck" useBlurEffectForModal: "Use blur effect for modals" @@ -692,6 +691,20 @@ deleteConfirm: "Really delete?" invalidValue: "Invalid value." registry: "Registry" closeAccount: "Close account" +currentVersion: "Current version" +latestVersion: "Newest version" +youAreRunningUpToDateClient: "You are using the newest version of your client." +newVersionOfClientAvailable: "There is a newer version of your client available." +usageAmount: "Usage" +capacity: "Capacity" +inUse: "Used" +editCode: "Edit code" +apply: "Apply" +receiveAnnouncementFromInstance: "Receive notifications from the instance" +_plugin: + install: "Install plugins" + installWarn: "Please do not install untrustworthy plugins." + manage: "Manage plugins" _registry: scope: "Scope" key: "Key" @@ -1032,6 +1045,7 @@ _widgets: onlineUsers: "Online users" jobQueue: "Job Queue" serverMetric: "Server metrics" + aiscript: "AiScript console" _cw: hide: "Hide" show: "Load more" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 6cb3aca6c..05ac4d4a5 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -547,7 +547,6 @@ author: "Autor" leaveConfirm: "Hay modificaciones sin guardar. ¿Desea descartarlas?" manage: "Administrar" plugins: "Plugins" -pluginInstallWarn: "Por favor no instale plugins que no son de confianza" deck: "Deck" undeck: "Quitar deck" useBlurEffectForModal: "Usar efecto borroso en modales" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index c81f8a95a..7f942401a 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -541,7 +541,6 @@ author: "Auteur·rice" leaveConfirm: "Vous avez des modifications non-sauvegardées. Voulez-vous les ignorer ?" manage: "Gestion" plugins: "Extensions" -pluginInstallWarn: "N’installez que des extensions provenant de sources de confiance." deck: "Deck" undeck: "Quitter le deck" useBlurEffectForModal: "Utiliser un effet de flou pour les modals" @@ -623,13 +622,18 @@ notSet: "Non défini" emailVerified: "Votre adresse e-mail a été vérifiée." clips: "Clip" experimentalFeatures: "Fonctionnalités expérimentales" +developer: "Développeur" makeExplorable: "Rendre le compte visible sur la page \"Découvrir\"." makeExplorableDescription: "Si vous désactivez cette option, votre compte n'apparaîtra pas sur la page \"Découvrir\"." showGapBetweenNotesInTimeline: "Afficher un écart entre les notes sur la Timeline" left: "Gauche" +center: "Centrer" +wide: "Large" +narrow: "Condensé" showTitlebar: "Afficher la barre de titre" clearCache: "Vider le cache" onlineUsersCount: "{n} utilisateur(s) en ligne" +nUsers: "{n} utilisateur·rice·s" nNotes: "{n} Notes" sendErrorReports: "Envoyer les rapports d’erreur" sendErrorReportsDescription: "Lorsqu'il est activé, des informations détaillées sur les erreurs sont partagées avec Misskey lorsqu'un problème survient, ce qui contribue à améliorer la qualité de Misskey." @@ -637,12 +641,18 @@ myTheme: "Mes thèmes" backgroundColor: "Arrière-plan" textColor: "Texte" saveAs: "Enregistrer sous ..." +advanced: "Avancé" value: "Valeur" saveConfirm: "Voulez-vous sauvegarder les modifications?" closeAccount: "Fermer le compte" +usageAmount: "Utilisation" +capacity: "Capacité " +inUse: "utilisé" _registry: key: "Clé " keys: "Clé " + domain: "Domaine" + createKey: "Créer une clé" _aboutMisskey: about: "Misskey est un logiciel libre et ouvert, développé par syuilo depuis 2014." contributors: "Principaux contributeurs" @@ -651,15 +661,22 @@ _aboutMisskey: translation: "Traduire Misskey" donate: "Soutenir Misskey" morePatrons: "Nous apprécions vraiment le soutien de nombreuses autres personnes non mentionnées ici. Merci à toutes et à tous ! 🥰" + patrons: "Contributeurs" +_nsfw: + respect: "Cacher les médias sensibles" + ignore: "Afficher les médias sensibles" + force: "Cacher tous les médias" _mfm: mention: "Mentionner" hashtag: "Hashtags" link: "Lien" + bold: "Gras" center: "Centrée" quote: "Citer" quoteDescription: "Affiche le contenu sous forme de citation." emoji: "Émojis personnalisés" search: "Rechercher" + flip: "Inverser" font: "Police de caractères" _reversi: total: "Total" diff --git a/locales/index.js b/locales/index.js index b76fa1dea..727e0e384 100644 --- a/locales/index.js +++ b/locales/index.js @@ -43,7 +43,7 @@ const primaries = { 'zh': 'CN', }; -const locales = languages.reduce((a, c) => (a[c] = yaml.safeLoad(fs.readFileSync(`${__dirname}/${c}.yml`, 'utf-8')) || {}, a), {}); +const locales = languages.reduce((a, c) => (a[c] = yaml.load(fs.readFileSync(`${__dirname}/${c}.yml`, 'utf-8')) || {}, a), {}); module.exports = Object.entries(locales) .reduce((a, [k ,v]) => (a[k] = (() => { diff --git a/locales/it-IT.yml b/locales/it-IT.yml index ed97d539c..502162b5d 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -1 +1,67 @@ --- +_lang_: "Italiano" +search: "Cerca" +notifications: "Notifiche" +username: "Nome utente" +password: "Password" +ok: "OK" +instance: "Istanza" +settings: "Impostazioni" +basicSettings: "Impostazioni generali" +otherSettings: "Altre impostazioni" +profile: "Profilo" +timeline: "Timeline" +login: "Login" +logout: "Logout" +signup: "Iscriviti" +save: "Salva" +users: "Utente" +delete: "Elimina" +reply: "Rispondi" +mention: "Menzioni" +import: "Importa" +note: "Note" +notes: "Notes" +error: "Errore" +somethingHappened: "Qualcosa è andato storto." +retry: "Riprova" +privacy: "Privacy" +quote: "Cita Note" +mute: "Silenzia" +block: "Blocca" +suspend: "Sospendi" +instances: "Istanza" +blocked: "Bloccati" +remove: "Elimina" +saved: "Salvato" +birthday: "Compleanno" +registeredDate: "Iscrizione a.." +location: "Posizione" +smtpUser: "Nome utente" +smtpPass: "Password" +_mfm: + mention: "Menzioni" + quote: "Cita Note" + search: "Cerca" +_theme: + keys: + mention: "Menzioni" +_sfx: + note: "Notes" + notification: "Notifiche" +_widgets: + notifications: "Notifiche" + timeline: "Timeline" +_profile: + username: "Nome utente" +_exportOrImport: + muteList: "Silenzia" + blockingList: "Blocca" +_notification: + _types: + mention: "Menzioni" + quote: "Cita Note" +_deck: + _columns: + notifications: "Notifiche" + tl: "Timeline" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 992f6c842..5a7272b48 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -548,7 +548,6 @@ author: "作者" leaveConfirm: "未保存の変更があります。破棄しますか?" manage: "管理" plugins: "プラグイン" -pluginInstallWarn: "信頼できないプラグインはインストールしないでください。" deck: "デッキ" undeck: "デッキ解除" useBlurEffectForModal: "モーダルにぼかし効果を使用" @@ -699,6 +698,14 @@ newVersionOfClientAvailable: "新しいバージョンのクライアントが usageAmount: "使用量" capacity: "容量" inUse: "使用中" +editCode: "コードを編集" +apply: "適用" +receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る" + +_plugin: + install: "プラグインのインストール" + installWarn: "信頼できないプラグインはインストールしないでください。" + manage: "プラグインの管理" _registry: scope: "スコープ" @@ -1061,6 +1068,7 @@ _widgets: onlineUsers: "オンラインユーザー" jobQueue: "ジョブキュー" serverMetric: "サーバーメトリクス" + aiscript: "AiScriptコンソール" _cw: hide: "隠す" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 40a57fc89..8b20d1255 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -1,15 +1,15 @@ --- _lang_: "日本語 (関西弁)" -introMisskey: "ようこそ!Misskeyってのは、オープンソースの分散型マイクロブログサービスやねん。\n「ノート」を作成し、いま起こっとることを共有したり、あんたんこととか皆に伝えていこう📡\n「リアクション」機能で、皆のノートに素はよ反応を追加することもできるんやで✌\n新しい世界を探検してみらん?🚀" +introMisskey: "ようお越し!Misskeyは、オープンソースの分散型マイクロブログサービスやねん。\n「ノート」を作って、いま起こっとることを共有したり、あんたについて皆に発信しよう📡\n「リアクション」機能で、皆のノートに素早く反応を追加したりもできるで✌\nほな新しい世界を探検しよか🚀" monthAndDay: "{month}月 {day}日" search: "探す" notifications: "通知" username: "ユーザー名" password: "パスワード" fetchingAsApObject: "今ちと連合に照会しとるで" -ok: "おっけー" +ok: "OKや" gotIt: "ほい" -cancel: "やめとくわ" +cancel: "やめとく" enterUsername: "ユーザー名を入れてや" renotedBy: "{user}がRenote" noNotes: "ノートはあらへん" @@ -18,16 +18,16 @@ instance: "インスタンス" settings: "設定" basicSettings: "基本設定" otherSettings: "その他の設定" -openInWindow: "ウィンドウで開いてや" +openInWindow: "ウィンドウで開くで" profile: "プロフィール" timeline: "タイムライン" -noAccountDescription: "自己紹介はあらへん" +noAccountDescription: "自己紹介食ってもた" login: "ログイン" loggingIn: "ログインしよるで" logout: "ログアウト" signup: "新規登録" -uploading: "アップロードしよるで" -save: "とっとく" +uploading: "アップロードしとるで" +save: "保存" users: "ユーザー" addUser: "ユーザーを追加や" favorite: "お気に入り" @@ -42,14 +42,14 @@ copyContent: "内容をコピー" copyLink: "リンクをコピー" delete: "ほかす" deleteAndEdit: "ほかして直す" -deleteAndEditConfirm: "このノートをほかしてもっかい直す?このノートへのリアクション、Renote、返信も全部消えるんやけどそれでもええん?" +deleteAndEditConfirm: "このノートをほかして書き直すんか?このノートへのリアクション、Renote、返信も全部消えてまうで。" addToList: "リストに入れたる" sendMessage: "メッセージを送る" copyUsername: "ユーザー名をコピー" searchUser: "ユーザーを検索" -reply: "返す" -loadMore: "もっとあるやろ!" -showMore: "もっとあるやろ!" +reply: "返事" +loadMore: "まだまだあるで!" +showMore: "まだまだあるで!" youGotNewFollower: "フォローされたで" receiveFollowRequest: "フォローリクエストされたで" followRequestAccepted: "フォローが承認されたで" @@ -80,12 +80,12 @@ retry: "もっぺんやる?" pageLoadError: "ページの読み込みに失敗してしもうたで…" pageLoadErrorDescription: "これは普通、ネットワークかブラウザキャッシュが原因やからね。キャッシュをクリアするか、もうちっとだけ待ってくれへんか?" enterListName: "リスト名を入れてや" -privacy: "プライバシーってなんぞや?" -makeFollowManuallyApprove: "他人からのフォローは自分が決める" +privacy: "プライバシー" +makeFollowManuallyApprove: "ええって言わなフォローできへんようにする" defaultNoteVisibility: "もとからの公開範囲" follow: "フォロー" followRequest: "フォローを頼む" -followRequests: "フォローを頼む" +followRequests: "フォロー申請" unfollow: "フォローやめる" followRequestPending: "フォロー許してくれるん待っとる" enterEmoji: "絵文字を入れてや" @@ -93,18 +93,18 @@ renote: "Renote" unrenote: "Renoteやめる" renoted: "Renoteしたで。" cantRenote: "この投稿はRenoteできへんらしい。" -cantReRenote: "すまん、今このRenoteにRenoteはできへんのや。" +cantReRenote: "Renote自体はRenoteできへんで。" quote: "引用" pinnedNote: "ピン留めされとるノート" you: "あんた" -clickToShow: "押したら見えるようになるで" +clickToShow: "押したら見えるで" sensitive: "ちょっとアカンやつやで" add: "増やす" reaction: "リアクション" reactionSettingDescription: "リアクションピッカーに出しとくリアクションを選んでや。" -reactionSettingDescription2: "ドラッグして並び替え、クリックして削除、+を押すと追加できるで。" +reactionSettingDescription2: "ドラッグで並び替え、クリックで削除、+を押して追加やで。" rememberNoteVisibility: "公開範囲覚えといて" -attachCancel: "やっぱ添付やめてくれん?" +attachCancel: "のっけるのやめる" markAsSensitive: "ちょっとこれはアカン" unmarkAsSensitive: "そこまでアカンことないやろ" enterFileName: "ファイル名を入れてや" @@ -130,12 +130,12 @@ emojiUrl: "絵文字画像URL" addEmoji: "絵文字を追加" settingGuide: "ええ感じの設定" cacheRemoteFiles: "リモートのファイルをキャッシュする" -cacheRemoteFilesDescription: "この設定を切っとくと、リモートファイルをキャッシュせず直リンクするようになってしまうんやで? サーバーのストレージは節約できるんやけど、かわりにサムネイルが作られんくなるから通信量が増えるで?" +cacheRemoteFilesDescription: "この設定を切っとくと、リモートファイルをキャッシュせず直リンクするようになるで。サーバーの容量は節約できるけど、サムネイルが作られんくなるから通信量が増えるで。" flagAsBot: "Botやで" flagAsBotDescription: "もしこのアカウントがプログラムによって運用されるんやったら、このフラグをオンにしてたのむで。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Misskeyのシステム上での扱いがBotに合ったもんになるんやで。" flagAsCat: "Catやで" flagAsCatDescription: "ワレ、猫ちゃんならこのフラグをつけてみ?" -autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストには勝手に許可しとくで。" +autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストを勝手に許可しとく" addAcount: "アカウント追加" loginFailed: "ログインに失敗してしもうた…" showOnRemote: "リモートで見る" @@ -180,7 +180,7 @@ clearQueue: "キューにさいなら" clearQueueConfirmTitle: "キューをクリアしまっか?" clearQueueConfirmText: "未配達の投稿は配送されなくなるで。通常この操作を行う必要はあらへんや。" clearCachedFiles: "キャッシュにさいなら" -clearCachedFilesConfirm: "キャッシュされとるリモートファイルを全部削除しまっか?" +clearCachedFilesConfirm: "キャッシュされとるリモートファイルをみんなほかしてええか?" blockedInstances: "インスタンスブロック" blockedInstancesDescription: "ブロックしたいインスタンスのホストを改行で区切って設定してな。ブロックされてもうたインスタンスとはもう金輪際やり取りできひんくなるで。" muteAndBlock: "ミュートとブロック" @@ -213,18 +213,18 @@ retypedNotMatch: "そやないねん。" currentPassword: "今のパスワード" newPassword: "今度のパスワード" newPasswordRetype: "今度のパスワード(もっぺん入れて)" -attachFile: "ファイルくっつけて" -more: "他ないんか!" +attachFile: "ファイルのっける" +more: "他のやつ!" featured: "ハイライト" usernameOrUserId: "ユーザー名かユーザーID" noSuchUser: "ユーザーが見つからへんで" lookup: "見てきて" -announcements: "これ知っといてな" +announcements: "お知らせ" imageUrl: "画像URL" remove: "ほかす" removed: "削除したで!" -removeAreYouSure: "「{x}」はなおしてしもてええか?" -deleteAreYouSure: "「{x}」はなおしてしもてええか?" +removeAreYouSure: "「{x}」はほかしてええか?" +deleteAreYouSure: "「{x}」はほかしてええか?" resetAreYouSure: "リセットしてええん?" saved: "保存したで!" messaging: "チャット" @@ -245,7 +245,7 @@ agreeTo: "{0}はええで" tos: "利用規約" start: "始める" home: "ホーム" -remoteUserCaution: "リモートユーザーやから、ちゃんとした情報とちゃうで。" +remoteUserCaution: "リモートユーザーやから、足りひん情報あるかもしれへん。" activity: "アクティビティ" images: "画像" birthday: "生まれた日" @@ -259,7 +259,7 @@ light: "ライト" dark: "ダーク" lightThemes: "デイゲーム" darkThemes: "ナイトゲーム" -syncDeviceDarkMode: "試合開始時間はデバイスのダークモードと一緒や" +syncDeviceDarkMode: "デバイスのダークモードと一緒にする" drive: "ドライブ" fileName: "ファイル名" selectFile: "ファイル選んでや" @@ -283,9 +283,9 @@ copyUrl: "URLをコピー" rename: "名前を変えるで" avatar: "アイコン" banner: "バナー" -nsfw: "ちょっとアカンやつやで" -whenServerDisconnected: "サーバーとの接続が失くなってしもうたとき" -disconnectedFromServer: "サーバーが機嫌悪いねん" +nsfw: "閲覧注意" +whenServerDisconnected: "サーバーとの接続が切れたとき" +disconnectedFromServer: "サーバーとの通信が切れたで" reload: "リロード" doNothing: "何もせんとく" reloadConfirm: "リロードしてええか?" @@ -306,7 +306,7 @@ dayX: "{day}日" monthX: "{month}月" yearX: "{year}年" pages: "ページ" -integration: "つないで" +integration: "連携" connectSerice: "つなげる" disconnectSerice: "切ってまう" enableLocalTimeline: "ローカルタイムラインを使えるようにする" @@ -316,7 +316,7 @@ registration: "登録" enableRegistration: "一見さんでも誰でもいらっしゃ~い" invite: "来てや" proxyRemoteFiles: "リモートのファイルをプロキシする" -proxyRemoteFilesDescription: "この設定を入れると、保存しとらんかったり、お腹いっぱいになってしもたせいで保存できんかったリモートファイルをローカルでプロキシして、サムネイル作ってもらうことができるで。サーバーの腹具合には影響せんけどな。" +proxyRemoteFilesDescription: "この設定を有効にしたら、保存してなかったり容量が足らんくて消されたリモートファイルをローカルでプロキシして、サムネイルを作るようになるで。サーバーの容量には関係ないで。" driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量" driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量" inMb: "メガバイト単位" @@ -380,11 +380,11 @@ unregister: "登録やめる" passwordLessLogin: "パスワード無くてもログインできるようにする" resetPassword: "パスワードをリセット" newPasswordIs: "今度のパスワードは「{password}」や" -reduceUiAnimation: "UIの動きやアニメーションを減らしてくれや。" +reduceUiAnimation: "UIの動きやアニメーションを減らす" share: "わけわけ" notFound: "見つからへんね" notFoundDescription: "指定されたURLに該当するページはあらへんやった。" -uploadFolder: "とりあえずここへアップロード" +uploadFolder: "とりあえずアップロードしたやつ置いとく所" cacheClear: "キャッシュをほかす" markAsReadAllNotifications: "通知はもう全て読んだわっ" markAsReadAllUnreadNotes: "投稿は全て読んだわっ" @@ -423,9 +423,9 @@ checking: "確認しとるで" available: "利用できる\n" unavailable: "利用できん" usernameInvalidFormat: "a~z、A~Z、0~9、_が使えるで" -tooShort: "短すぎやろ!" +tooShort: "短すぎやろ!" tooLong: "長すぎやろ!" -weakPassword: "弱いパスワード" +weakPassword: "へぼいパスワード" normalPassword: "普通のパスワード" strongPassword: "ええ感じのパスワード" passwordMatched: "よし!一致や!" @@ -439,6 +439,7 @@ useOsNativeEmojis: "OSネイティブの絵文字を使う" youHaveNoGroups: "グループがあらへんねぇ。" noHistory: "履歴はあらへんねぇ。" signinHistory: "ログイン履歴" +disableAnimatedMfm: "動きがやかましいMFMを止める" doing: "やっとるがな" category: "カテゴリ" tags: "タグ" @@ -452,15 +453,28 @@ openImageInNewTab: "画像を新しいタブで開く" dashboard: "ダッシュボード" local: "ローカル" remote: "リモート" +scratchpadDescription: "スクラッチパッドではAiScriptを色々試すことができるんや。Misskeyに対して色々できるコードを書いて動かしてみたり、結果を見たりできるで。" +leaveConfirm: "未保存の変更があるで!ほかしてええか?" +emailConfigInfo: "メールアドレスの確認とかパスワードリセットの時に使うで" smtpHost: "ホスト" smtpUser: "ユーザー名" smtpPass: "パスワード" -clearCache: "キャッシュにさいなら" +emailVerified: "メールアドレスは確認されたで" +pageLikesCount: "Pageにええやんと思った数" +pageLikedCount: "Pageにええやんと思ってくれた数" +reloadToApplySetting: "設定はページリロード後に反映されるで。今リロードしとくか?" +clearCache: "キャッシュをほかす" +onlineUsersCount: "{n}人が起きとるで" +sendErrorReportsDescription: "オンにしたら、なんか変なことが起きたときにエラーの詳細がMisskeyに共有されて、ソフトウェアの品質向上に役立てられるんや。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれるで。" +youAreRunningUpToDateClient: "今使ってるクライアントが最新やで!" +newVersionOfClientAvailable: "新しいバージョンのクライアントが使えるで。" _mfm: mention: "メンション" quote: "引用" emoji: "カスタム絵文字" search: "探す" +_channel: + notesCount: "{n}こ投稿があるで" _sidebar: icon: "アイコン" _theme: @@ -472,7 +486,7 @@ _sfx: notification: "通知" chat: "チャット" _ago: - unknown: "謎" + unknown: "わからん" future: "未来" justNow: "たった今" secondsAgo: "{n}秒前" @@ -487,8 +501,13 @@ _time: minute: "分" hour: "時間" day: "日" +_tutorial: + step3_1: "プロフィール設定はええ感じにできたか?" _2fa: - alreadyRegistered: "もう設定終わっとるわ" + alreadyRegistered: "もう設定終わっとるわ。" +_permissions: + "read:page-likes": "ページのええやんを見る" + "write:page-likes": "ページのええやんを操作する" _auth: permissionAsk: "このアプリは次の権限を要求しとるで" _antennaSources: @@ -501,7 +520,7 @@ _widgets: federation: "連合" jobQueue: "ジョブキュー" _cw: - show: "もっとあるやろ!" + show: "続き見して!" _poll: noMore: "これ以上追加でけへん" deadlineTime: "時間" @@ -521,11 +540,15 @@ _exportOrImport: _timelines: home: "ホーム" _rooms: + leaveConfirm: "未保存の変更があるけど、移動してええか?" _roomType: default: "デフォルト" _furnitures: monitor: "モニター" _pages: + like: "ええやん" + unlike: "良くないわ" + liked: "ええと思ったページ" blocks: image: "画像" script: @@ -548,6 +571,8 @@ _pages: array: "リスト" _notification: youWereFollowed: "フォローされたで" + youReceivedFollowRequest: "フォロー許可してほしいみたいやな" + yourFollowRequestAccepted: "フォローさせてもろたで" youWereInvitedToGroup: "グループに招待されとるで" _types: follow: "フォロー" @@ -555,6 +580,8 @@ _notification: renote: "Renote" quote: "引用" reaction: "リアクション" + receiveFollowRequest: "フォロー許可してほしいみたいやで" + followRequestAccepted: "フォローが受理されたで" _deck: _columns: notifications: "通知" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 114de2a90..1cbdd7a66 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -547,7 +547,6 @@ author: "작성자" leaveConfirm: "저장하지 않은 변경사항이 있습니다. 취소하시겠습니까?" manage: "관리" plugins: "플러그인" -pluginInstallWarn: "신뢰할 수 없는 플러그인은 설치하지 마십시오." deck: "덱" undeck: "덱 해제" width: "폭" diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 5ca420cff..16efd0386 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -522,7 +522,6 @@ author: "Autor" leaveConfirm: "Są niezapisane zmiany. Czy chcesz je odrzucić?" manage: "Zarządzanie" plugins: "Wtyczki" -pluginInstallWarn: "Nie instaluj niezaufanych wtyczek." deck: "Tablica" useBlurEffectForModal: "Używaj efektu rozmycia w modalach" useFullReactionPicker: "Używaj pełnowymiarowego wybornika reakcji" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 4cd8466c7..0ca8e8d10 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -1,5 +1,6 @@ --- _lang_: "Русский" +headlineMisskey: "Сеть, сплетённая из заметок" introMisskey: "Добро пожаловать! Misskey — это децентрализованный сервис микроблогов с открытым исходным кодом.\nПишите «заметки» — делитесь со всеми происходящим вокруг или рассказывайте о себе 📡\nСтавьте «реакции» — выражайте свои чувства и эмоции от заметок других 👍\nОткройте для себя новый мир 🚀" monthAndDay: "{day}.{month}" search: "Поиск" @@ -449,7 +450,7 @@ doing: "В процессе" category: "Категория" tags: "Метки" docSource: "Источник документа" -createAccount: "Новый аккаунт" +createAccount: "Новая учётная запись" existingAcount: "Уже существующий" regenerate: "Создать повторно" fontSize: "Размер шрифта" @@ -547,7 +548,6 @@ author: "Автор" leaveConfirm: "Вы не сохранили изменения. Хотите выйти и потерять их?" manage: "Управление" plugins: "Расширения" -pluginInstallWarn: "Пожалуста, не устанавливайте расширения, которым не доверяете" deck: "Пульт" undeck: "Покинуть пульт" useBlurEffectForModal: "Размывка под формой поверх всего" @@ -562,7 +562,7 @@ permission: "Разрешения" enableAll: "Включить все" disableAll: "Выключить всё" tokenRequested: "Открыть доступ к учётной записи" -pluginTokenRequestedDescription: "Этот плагин сможет пользоваться разрешениями, установленными здесь." +pluginTokenRequestedDescription: "Это расширение сможет пользоваться разрешениями, установленными здесь." notificationType: "Тип уведомления" edit: "Изменить" useStarForReactionFallback: "Ставить ★ в качестве реакции вместо неизвестного эмодзи" @@ -668,19 +668,49 @@ showGapBetweenNotesInTimeline: "Показывать разделитель ме duplicate: "Дубликат" left: "Влево" center: "По центру" +wide: "Толстый" +narrow: "Тонкий" reloadToApplySetting: "Это настройка вступает в силу при загрузке страницы. Перезагрузить сейчас?" showTitlebar: "Показать заголовок" clearCache: "Очистить кэш" onlineUsersCount: "Пользователей сейчас в сети: {n}" nUsers: "Пользователей: {n}" nNotes: "Заметок: {n}" +sendErrorReports: "Посылать отчёты о сбоях" +sendErrorReportsDescription: "Если включено, когда возникнет какая-нибудь техническая проблема, подробные сведения об этом будут отправлены разработчикам Misskey. Это очень помогает делать программу лучше. В отчёты попадают тип и версия ОС, браузера, журнал действий (что привело к сбою) и тому подобное." +myTheme: "Личная тема" backgroundColor: "Фон" accentColor: "Акцент" textColor: "Текст" +saveAs: "Сохранить под названием…" +advanced: "Для продвинутых" value: "Значения" +updatedAt: "Обновлено" +saveConfirm: "Сохранить изменения?" +deleteConfirm: "Удалить?" +invalidValue: "Недопустимое значение." +registry: "Реестр" +closeAccount: "Закрыть учётную запись" +currentVersion: "Используемая версия" +latestVersion: "Самая свежая версия" +youAreRunningUpToDateClient: "У вас самая свежая версия клиента." +newVersionOfClientAvailable: "Доступна более свежая версия клиента." +usageAmount: "Использовано" +capacity: "Ёмкость" +inUse: "Занято" +editCode: "Редактировать исходный текст" +apply: "Применить" +receiveAnnouncementFromInstance: "Получать оповещения с инстанса" +_plugin: + install: "Установка расширений" + installWarn: "Пожалуйста, не устанавливайте расширения, которым не доверяете." + manage: "Управление расширениями" _registry: + scope: "Область" key: "Ключ" keys: "Ключ" + domain: "Домен" + createKey: "Новый ключ" _aboutMisskey: about: "Misskey — программа с открытым исходным кодом, которую разрабатывает syuilo с 2014 года." contributors: "Основные соавторы" @@ -696,7 +726,7 @@ _nsfw: force: "Скрывать вообще все файлы" _mfm: cheatSheet: "Подсказка по разметке MFM" - intro: "MFM — язык оформления текста, придуманный специально для Misskey, который здесь можно много где использовать. На этой странице собраны и кратко изложены способы его применения." + intro: "MFM — язык оформления текста, который придуман специально для Misskey и готов для применения во многих местах. На этой странице собраны и кратко изложены способы его использовать." dummy: "Misskey расширяет границы Федиверса." mention: "Упоминание" mentionDescription: "При помощи знака «собака» перед именем можно упомянуть какого-нибудь пользователя." @@ -742,7 +772,16 @@ _mfm: twitchDescription: "Заставляет трястись как одержимого" spin: "Вращение" spinDescription: "Так можно крутить содержимое в разных направлениях." + x2: "Крупный шрифт" + x2Description: "Увеличивает содержимое." + x3: "Ещё крупнее" + x3Description: "Сильнее увеличивает содержимое." + x4: "Совсем крупно" + x4Description: "Увеличивает содержимое совсем сильно." + blur: "Размытие" + blurDescription: "Размывает текст до нечитаемости, будто его поместили за матовое стекло. Наведение указателя мыши на размытый текст возвращает чёткость." font: "Шрифт" + fontDescription: "Так можно писать произвольным шрифтом." _reversi: reversi: "Реверси" gameSettings: "Настройки игры" @@ -1005,6 +1044,8 @@ _widgets: button: "Кнопка" onlineUsers: "Пользователи сейчас с сети" jobQueue: "Очередь заданий" + serverMetric: "Показатели сервера" + aiscript: "Консоль AiScript" _cw: hide: "Спрятать" show: "Показать еще" @@ -1496,6 +1537,7 @@ _deck: swapDown: "Переставить ниже" stackLeft: "В столбик влево" popRight: "Из столбика вправо" + profile: "Профиль" _columns: main: "Основная" widgets: "Виджеты" diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml index 1d11bf01d..1b54a2f9c 100644 --- a/locales/uk-UA.yml +++ b/locales/uk-UA.yml @@ -545,7 +545,6 @@ author: "Автор" leaveConfirm: "Зміни не збережені. Ви дійсно хочете скасувати зміни?" manage: "Управління" plugins: "Плагіни" -pluginInstallWarn: "Будь ласка не встановлюйте плагінів яким ви не довіряєте." deck: "Дек" undeck: "Залишити Дек" useBlurEffectForModal: "Ефект розмиття під модальними діалогами" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 0573022dc..8ac29a51f 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -13,7 +13,7 @@ gotIt: "我明白了" cancel: "取消" enterUsername: "输入用户名" renotedBy: "{user} 转发了" -noNotes: "没有帖文" +noNotes: "没有帖子" noNotifications: "无通知" instance: "实例" settings: "设置" @@ -99,14 +99,14 @@ quote: "引用" pinnedNote: "已置顶的帖子" you: "您" clickToShow: "点击以显示" -sensitive: "阅读注意" +sensitive: "敏感内容" add: "添加" reaction: "回应" reactionSettingDescription: "选择您想要置顶的回应。" reactionSettingDescription2: "拖动重新排序,单击删除,点击 + 添加。" rememberNoteVisibility: "记录公开范围" attachCancel: "删除附件" -markAsSensitive: "阅读注意" +markAsSensitive: "标记为敏感内容" unmarkAsSensitive: "取消标记为敏感内容" enterFileName: "请输入文件名" mute: "屏蔽" @@ -193,7 +193,7 @@ noteDeleteConfirm: "要删除该帖子吗?" pinLimitExceeded: "无法置顶更多了" intro: "Misskey的部署结束啦!填写管理员账号吧!" done: "完成" -processing: "处理中" +processing: "正在处理" preview: "预览" default: "默认" noCustomEmojis: "没有自定义表情符号" @@ -284,7 +284,7 @@ copyUrl: "复制链接" rename: "重命名" avatar: "头像" banner: "Banner" -nsfw: "阅读注意" +nsfw: "敏感内容" whenServerDisconnected: "与服务器连接中断时" disconnectedFromServer: "已从服务器断开连接" reload: "重新加载" @@ -472,7 +472,7 @@ hideThisNote: "隐藏这条帖子" showFeaturedNotesInTimeline: "在时间线上显示热门推荐" objectStorage: "对象存储" useObjectStorage: "使用对象存储" -objectStorageBaseUrl: "基本网址" +objectStorageBaseUrl: "Base URL" objectStorageBaseUrlDesc: "URL前缀,用于构造URL到对象(媒体)的引用,如果您使用的是CDN或反向代理,请指定其URL,否则请根据您使用的服务指定可公开访问的地址。例如“https://.s3.amazonaws.com”用于AWS S3,“https://storage.googleapis.com/”用于GCS" objectStorageBucket: "存储桶" objectStorageBucketDesc: "请指定使用的对象存储服务的存储桶名称。" @@ -526,7 +526,7 @@ userSuspended: "该用户已被冻结。" userSilenced: "该用户已被禁言。" sidebar: "侧边栏" divider: "分割线" -addItem: "添加项" +addItem: "添加项目" rooms: "房间" relays: "中继" addRelay: "添加中继" @@ -548,7 +548,6 @@ author: "作者" leaveConfirm: "存在未保存的更改。要放弃更改吗?" manage: "管理" plugins: "插件" -pluginInstallWarn: "请不要安装不明来源的插件" deck: "Deck" undeck: "取消Deck" useBlurEffectForModal: "模态框使用模糊效果" @@ -648,7 +647,7 @@ driveUsage: "磁盘空间用量" noCrawle: "拒绝搜索器的索引" noCrawleDescription: "要求搜索引擎不要收录(索引)您的用户页面,帖子,页面等。" lockedAccountInfo: "即使通过了关注请求,只要您不将帖子可见范围设置成“关注者”,任何人都可以看到您的帖子。" -alwaysMarkSensitive: "浏览默认媒体文件时请谨慎" +alwaysMarkSensitive: "默认将媒体文件标记为敏感内容" loadRawImages: "添加附件图像的缩略图时使用原始图像质量" disableShowingAnimatedImages: "不播放动画" verificationEmailSent: "已发送确认电子邮件。请访问电子邮件中的链接以完成设置。" @@ -692,6 +691,20 @@ deleteConfirm: "确定删除?" invalidValue: "无效值。" registry: "注册表" closeAccount: "关闭账户" +currentVersion: "当前版本" +latestVersion: "最新版本" +youAreRunningUpToDateClient: "您所使用的客户端已经是最新的。" +newVersionOfClientAvailable: "新版本的客户端可用。" +usageAmount: "使用量" +capacity: "容量" +inUse: "已使用" +editCode: "编辑代码" +apply: "应用" +receiveAnnouncementFromInstance: "从实例接收通知" +_plugin: + install: "安装插件" + installWarn: "请不要安装不可信的插件。" + manage: "管理插件..." _registry: scope: "范围" key: "主要" @@ -708,8 +721,8 @@ _aboutMisskey: morePatrons: "还有很多其他的人也在支持我们,非常感谢🥰" patrons: "支持者" _nsfw: - respect: "隐藏NSFW内容" - ignore: "不隐藏NSFW内容" + respect: "隐藏敏感内容" + ignore: "不隐藏敏感内容" force: "总是隐藏内容" _mfm: cheatSheet: "MFM代码速查表" @@ -893,8 +906,8 @@ _theme: cwBg: "CW 按钮背景" cwFg: "CW 按钮文本" cwHoverBg: "CW 按钮背景(悬停)" - toastBg: "吐司提示背景" - toastFg: "吐司提示文本" + toastBg: "吐司通知背景" + toastFg: "吐司通知文本" buttonBg: "按钮背景" buttonHoverBg: "按钮背景(悬停)" inputBorder: "输入框边框" @@ -959,7 +972,7 @@ _2fa: alreadyRegistered: "此设备已被注册" registerDevice: "注册设备" registerKey: "注册密钥" - step1: "首先,在您的设备上安装二步验证应用程序,例如{a}或{b}。" + step1: "首先,在您的设备上安装验证应用,例如{a}或{b}。" step2: "然后,扫描屏幕上显示的二维码。" step3: "输入您的应用提供的动态口令以完成设置。" step4: "从现在开始,任何登录操作都将要求您提供动态口令。" @@ -1032,6 +1045,7 @@ _widgets: onlineUsers: "在线用户" jobQueue: "作业队列" serverMetric: "服务器指标" + aiscript: "AiScript控制台" _cw: hide: "隐藏" show: "查看更多" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 943cb17c5..73a1c5e80 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -1,7 +1,7 @@ --- _lang_: "繁體中文" -headlineMisskey: "箋文連繫網絡" -introMisskey: "歡迎! Misskey是一個開源且去中心化的社群網絡。\n通過「箋文」分享周邊新鮮事,並告訴其他人您的想法!📡\n透過「情感」功能,對大家的箋文表達情感!👍\n一起來探索這個新的世界吧!🚀" +headlineMisskey: "貼文連繫網絡" +introMisskey: "歡迎! Misskey是一個開源且去中心化的社群網絡。\n通過「貼文」分享周邊新鮮事,並告訴其他人您的想法!📡\n透過「情感」功能,對大家的貼文表達情感!👍\n一起來探索這個新的世界吧!🚀" monthAndDay: "{month}月 {day}日" search: "搜尋" notifications: "通知" @@ -13,7 +13,7 @@ gotIt: "知道了" cancel: "取消" enterUsername: "輸入使用者名稱" renotedBy: "{user} 轉發了" -noNotes: "箋文不可用。" +noNotes: "貼文不可用。" noNotifications: "沒有通知" instance: "實例" settings: "設定" @@ -31,19 +31,19 @@ uploading: "上傳中" save: "儲存" users: "使用者" addUser: "新增使用者" -favorite: "收藏" -favorites: "已收藏" -unfavorite: "取消收藏" -favorited: "已添加至收藏夾" -alreadyFavorited: "已經有添加入收藏夾過了" -cantFavorite: "無法添加至收藏夾" +favorite: "我的最愛" +favorites: "我的最愛" +unfavorite: "從我的最愛中移除" +favorited: "已添加至我的最愛" +alreadyFavorited: "我的最愛中已存在。" +cantFavorite: "無法加入至我的最愛。" pin: "置頂" unpin: "取消置頂" copyContent: "複製內容" copyLink: "複製連結" delete: "刪除" deleteAndEdit: "刪除並編輯" -deleteAndEditConfirm: "要刪除並再次編輯嗎?此箋文的所有情感、轉發和回覆也將會消失。" +deleteAndEditConfirm: "要刪除並再次編輯嗎?此貼文的所有情感、轉發和回覆也將會消失。" addToList: "新增至清單" sendMessage: "發送訊息" copyUsername: "複製用戶名" @@ -62,14 +62,14 @@ import: "匯入" export: "匯出" files: "檔案" download: "下載" -driveFileDeleteConfirm: "確定要刪除檔案「{name}」嗎?使用此附件的箋文也會跟著消失。\n" +driveFileDeleteConfirm: "確定要刪除檔案「{name}」嗎?使用此附件的貼文也會跟著消失。\n" unfollowConfirm: "確定要取消追隨{name}嗎?" exportRequested: "已請求匯出。這可能會花一點時間。結束後檔案將會被放到雲端裡。" importRequested: "已請求匯入。這可能會花一點時間" lists: "清單" noLists: "你沒有任何清單" -note: "箋文" -notes: "箋文" +note: "貼文" +notes: "貼文" following: "追隨中" followers: "追隨者" followsYou: "追隨你的人" @@ -90,13 +90,13 @@ followRequests: "追隨請求" unfollow: "取消追隨" followRequestPending: "追隨許可批准中" enterEmoji: "輸入表情符號" -renote: "轉箋" -unrenote: "取消轉箋" +renote: "轉發" +unrenote: "取消轉發" renoted: "轉發成功" -cantRenote: "無法轉發此箋文。" +cantRenote: "無法轉發此貼文。" cantReRenote: "無法轉發之前已經轉發過的內容" quote: "引用" -pinnedNote: "已置頂的箋文" +pinnedNote: "已置頂的貼文" you: "您" clickToShow: "按一下以顯示" sensitive: "敏感內容" @@ -104,7 +104,7 @@ add: "新增" reaction: "情感" reactionSettingDescription: "置頂「反應」表情符號\n" reactionSettingDescription2: "拖動以重新列序,點擊以刪除,按下 + 添加。" -rememberNoteVisibility: "記住箋文可見性" +rememberNoteVisibility: "記住貼文可見性" attachCancel: "移除附件" markAsSensitive: "標記為敏感內容" unmarkAsSensitive: "取消標記為敏感內容" @@ -188,8 +188,8 @@ mutedUsers: "已靜音用戶" blockedUsers: "已封鎖用戶" noUsers: "沒有任何使用者" editProfile: "編輯個人檔案" -noteDeleteConfirm: "確定刪除此箋文嗎?" -pinLimitExceeded: "不能置頂更多箋文了" +noteDeleteConfirm: "確定刪除此貼文嗎?" +pinLimitExceeded: "不能置頂更多貼文了" intro: "Misskey 部署完成!請開設管理員帳號!" done: "完成" processing: "處理中" @@ -327,7 +327,8 @@ pinnedUsers: "置頂用戶" pinnedUsersDescription: "在「發現」頁面中使用換行標記想要置頂的用戶。" pinnedPages: "釘選頁面" pinnedPagesDescription: "輸入要固定至實例首頁的頁面路徑,以換行符分隔。" -pinnedNotes: "已置頂的箋文" +pinnedClipId: "置頂的摘錄ID" +pinnedNotes: "已置頂的貼文" hcaptcha: "hCaptcha" enableHcaptcha: "啟用 hCaptcha" hcaptchaSiteKey: "網站金鑰" @@ -344,15 +345,15 @@ antennaSource: "接收來源" antennaKeywords: "包含關鍵字" antennaExcludeKeywords: "排除關鍵字" antennaKeywordsDescription: "用空格分隔指定AND、用換行符分隔指定OR" -notifyAntenna: "通知有新箋文" -withFileAntenna: "僅帶有附件的箋文" +notifyAntenna: "通知有新貼文" +withFileAntenna: "僅帶有附件的貼文" serviceworker: "ServiceWorker" enableServiceworker: "開啟 ServiceWorker" antennaUsersDescription: "指定用換行符分隔的用戶名" caseSensitive: "區分大小寫" withReplies: "包含回覆" connectedTo: "您的帳號已連接到以下社交帳號" -notesAndReplies: "箋文與回覆" +notesAndReplies: "貼文與回覆" withFiles: "附件" silence: "禁言" silenceConfirm: "確定要禁言此用戶嗎?" @@ -388,7 +389,7 @@ notFoundDescription: "找不到與指定URL回應的頁面" uploadFolder: "預設上傳資料夾" cacheClear: "清除快取" markAsReadAllNotifications: "標記所有通知為已讀" -markAsReadAllUnreadNotes: "標記所有箋文為已讀" +markAsReadAllUnreadNotes: "標記所有貼文為已讀" markAsReadAllTalkMessages: "標記所有訊息為已讀" help: "幫助" inputMessageHere: "在此輸入訊息" @@ -409,9 +410,9 @@ text: "文字" enable: "啟用" next: "下一步" retype: "重新輸入" -noteOf: "{user}的箋文" +noteOf: "{user}的貼文" inviteToGroup: "邀請至群組" -maxNoteTextLength: "箋文的字數限制" +maxNoteTextLength: "貼文的字數限制" quoteAttached: "引用" quoteQuestion: "是否要引用?" noMessagesYet: "沒有訊息" @@ -466,8 +467,10 @@ accountSettings: "帳號設定" promotion: "推廣" promote: "推廣" numberOfDays: "有效天數" -hideThisNote: "隱藏此箋文" +hideThisNote: "隱藏此貼文" showFeaturedNotesInTimeline: "在時間軸上顯示熱門推薦" +objectStorage: "Object Storage (物件儲存)" +useObjectStorage: "使用Object Storage" objectStorageBaseUrl: "Base URL" objectStorageBucket: "儲存空間(Bucket)" objectStoragePrefix: "前綴" @@ -479,8 +482,8 @@ objectStorageUseProxy: "使用網路代理" objectStorageSetPublicRead: "上載時設定為\"public-read\"" serverLogs: "伺服器日誌" deleteAll: "刪除所有記錄" -showFixedPostForm: "於時間軸頁頂顯示「發送箋文」方框" -newNoteRecived: "發現新的箋文" +showFixedPostForm: "於時間軸頁頂顯示「發送貼文」方框" +newNoteRecived: "發現新的貼文" sounds: "音效" listen: "聆聽" none: "無" @@ -522,7 +525,7 @@ addRelay: "添加中繼" inboxUrl: "私信URL" addedRelays: "已添加的中繼" serviceworkerInfo: "您需要啟用推送通知" -deletedNote: "已删除的箋文" +deletedNote: "已删除的貼文" invisibleNote: "隱藏的帖子" enableInfiniteScroll: "啟用自動滾動頁面模式" visibility: "可見性" @@ -537,7 +540,6 @@ author: "作者" leaveConfirm: "有未保存的更改。要放棄嗎?" manage: "管理" plugins: "插件" -pluginInstallWarn: "請不要安裝來源不明的插件。" deck: "多欄模式" undeck: "取消多欄模式" useBlurEffectForModal: "在模態框使用模糊效果" @@ -581,6 +583,7 @@ create: "新增" notificationSetting: "通知設定" notificationSettingDesc: "選擇顯示通知的類型" other: "其他" +regenerateLoginToken: "再生登入權杖" regenerateLoginTokenDescription: "再生用於登入的內部權杖。一般情況下是不需要這樣做的。一旦再生,所有裝置將會被登出。" fileIdOrUrl: "文檔ID或者URL" chatOpenBehavior: "開啟聊天窗口時的行為" @@ -596,20 +599,21 @@ abuseMarkAsResolved: "處理完畢" openInNewTab: "在新分頁中開啟" openInSideView: "在側欄中開啟" editTheseSettingsMayBreakAccount: "修改這些設定可能會毀壞您的帳戶" -instanceTicker: "箋文的實例來源" +instanceTicker: "貼文的實例來源" waitingFor: "等待{x}" random: "隨機" system: "系統" switchUi: "切換界面" desktop: "桌面" -clip: "片段" +clip: "摘錄" createNew: "新建" optional: "可選" +createNewClip: "建立新摘錄" public: "公開" i18nInfo: "Misskey已經被志願者們翻譯成各種語言版本,如果想要幫忙的話,可以進入{link}幫助翻譯。" manageAccessTokens: "管理存取權杖" accountInfo: "帳戶資訊" -notesCount: "箋文數量" +notesCount: "貼文數量" repliesCount: "回覆數量\n" renotesCount: "轉發數量" repliedCount: "回覆數量" @@ -618,27 +622,29 @@ followingCount: "正在跟隨的用戶數量" followersCount: "跟隨者數量" sentReactionsCount: "情感發送次數" receivedReactionsCount: "情感收到次數" +pollVotesCount: "已統計的投票數" +pollVotedCount: "已投票數" yes: "確定" no: "取消" driveFilesCount: "雲端硬碟檔案數量" driveUsage: "雲端硬碟使用量" -noCrawleDescription: "請求網路搜尋引擎不要索引你的個人資料頁、箋文及頁面等。" -lockedAccountInfo: "即使你通過了追隨者請求,除非你將箋文的可見性設定為 「追隨者」,否則任何人都能看見你的箋文。" +noCrawleDescription: "請求網路搜尋引擎不要索引你的個人資料頁、貼文及頁面等。" +lockedAccountInfo: "即使你通過了追隨者請求,除非你將貼文的可見性設定為 「追隨者」,否則任何人都能看見你的貼文。" loadRawImages: "以原始圖像質量顯示附件圖像的縮略圖" disableShowingAnimatedImages: "不播放動態圖像" notSet: "未設定" emailVerified: "已成功驗證您的電郵" -noteFavoritesCount: "收藏箋文的數目" +noteFavoritesCount: "我的最愛貼文的數目" pageLikesCount: "頁面被喜歡次數" pageLikedCount: "頁面被喜歡次數" contact: "聯絡人" useSystemFont: "使用系統默認的字型" -clips: "標籤" +clips: "摘錄" experimentalFeatures: "測試中的功能" developer: "開發者" makeExplorable: "讓自己的帳戶能夠在“探索”版面顯示" makeExplorableDescription: "如果關閉,帳戶將不會被顯示在\"探索\"版面中。" -showGapBetweenNotesInTimeline: "分開顯示時間線上的箋文。" +showGapBetweenNotesInTimeline: "分開顯示時間線上的貼文。" duplicate: "複製" left: "左" center: "向中央" @@ -649,16 +655,31 @@ showTitlebar: "顯示標題列" clearCache: "清除快取資料" onlineUsersCount: "{n}人正在線上" nUsers: "{n}用戶" -nNotes: "{n}箋文" +nNotes: "{n}貼文" +myTheme: "我的佈景主題" backgroundColor: "背景" +accentColor: "重點色彩" textColor: "文本" advanced: "進階" value: "數值 " updatedAt: "最後更新" +saveConfirm: "您要儲存變更嗎?" +deleteConfirm: "你確定要刪除嗎?" +invalidValue: "輸入值無效。" +registry: "登錄表" +closeAccount: "停用帳戶" +currentVersion: "當前版本" +latestVersion: "最新版本" +newVersionOfClientAvailable: "新版本的用戶端可用。" +usageAmount: "使用量" +capacity: "容量" +inUse: "已使用" _registry: scope: "範圍" - key: "主要" - keys: "主要" + key: "機碼" + keys: "機碼" + domain: "域" + createKey: "新增機碼" _aboutMisskey: about: "Misskey是由syuilo於2014年開發的開源軟件。" contributors: "主要貢獻者" @@ -682,6 +703,8 @@ _mfm: bold: "粗體" small: "縮小" center: "置中" + inlineCode: "程式碼(内嵌)" + blockCode: "程式碼(區塊)" inlineMath: "數學公式(內嵌)" inlineMathDescription: "顯示內嵌的KaTex數學公式。" blockMath: "數學公式(方塊)" @@ -692,9 +715,11 @@ _mfm: flipDescription: "將內容上下或左右翻轉。" jelly: "動畫(果凍)" jellyDescription: "顯示果凍一樣的動畫效果。" + jump: "動畫(跳動)" bounce: "動畫(反彈)" shake: "動畫(搖晃)" twitch: "動畫(顫抖)" + twitchDescription: "顯示強烈顫抖的動畫效果。" spin: "動畫(旋轉)" spinDescription: "顯示旋轉的動畫效果。" x2: "大" @@ -759,8 +784,8 @@ _sidebar: hide: "隱藏" _wordMute: muteWords: "加入靜音文字" - softDescription: "隱藏時間軸中指定條件的箋文。" - mutedNotes: "已靜音的箋文" + softDescription: "隱藏時間軸中指定條件的貼文。" + mutedNotes: "已靜音的貼文" _theme: explore: "取得佈景主題" install: "安裝佈景主題" @@ -791,7 +816,7 @@ _theme: hashtag: "#tag" mention: "提及" mentionMe: "提及我" - renote: "轉發箋文" + renote: "轉發貼文" divider: "分割線" scrollbarHandle: "滾動條" scrollbarHandleHover: "滾動條 (漂浮)" @@ -808,13 +833,14 @@ _theme: inputBorder: "輸入框邊框" listItemHoverBg: "列表物品背景 (漂浮)" driveFolderBg: "雲端硬碟文件夾背景" + badge: "獎章" messageBg: "私信背景" accentDarken: "強調色(偏暗)" accentLighten: "強調色(明亮)" fgHighlighted: "高亮顯示文本" _sfx: - note: "箋文" - noteMy: "我的箋文" + note: "貼文" + noteMy: "我的貼文" notification: "通知" chat: "傳送訊息" antenna: "天線接收" @@ -838,22 +864,22 @@ _time: _tutorial: title: "Misskey使用方法" step1_1: "歡迎!" - step1_2: "此為「時間軸」頁面,它會按照時間順序顯示你「追隨」的人發出的「箋文」" - step1_3: "由於你沒有發佈任何箋文,也沒有追隨任何人,所以你的時間軸目前是空的。" + step1_2: "此為「時間軸」頁面,它會按照時間順序顯示你「追隨」的人發出的「貼文」" + step1_3: "由於你沒有發佈任何貼文,也沒有追隨任何人,所以你的時間軸目前是空的。" step2_1: "在發文或追隨其他人之前先讓我們設定一下個人資料吧。" step2_2: "提供一些關於自己的資訊來讓其他人更有追隨你的意願。" step3_1: "個人資料都打理好了嗎?" step3_2: "下一步讓我們來試試看發個文,按一下畫面上的鉛筆圖示來開始" step3_3: "輸入完內容後,按視窗右上角的按鈕來發文" step3_4: "不知道該寫什麼內容嗎?試試看「開始使用Misskey了」如何。" - step4_1: "箋文發出去了嗎?" - step4_2: "如果你的箋文出現在時間軸上,就代表發文成功。" + step4_1: "貼文發出去了嗎?" + step4_2: "如果你的貼文出現在時間軸上,就代表發文成功。" step5_1: "現在試試看追隨其他人來讓你的時間軸變得更生動吧。" - step5_2: "你會在{featured}上看到受歡迎的箋文,你也可以從列表中追隨你喜歡的人,或者在{explore}上找到熱門使用者。" + step5_2: "你會在{featured}上看到受歡迎的貼文,你也可以從列表中追隨你喜歡的人,或者在{explore}上找到熱門使用者。" step5_3: "想要追隨其他人,只要點擊他們的頭像並按「追隨」即可。" step5_4: "如果使用者的名字旁有鎖頭的圖示,代表他們需要手動核准你的追隨請求。" - step6_1: "現在你可以在時間軸上看到其他用戶的箋文。" - step6_2: "你也可以對別人的箋文作出「情感」,作出簡單的回覆。" + step6_1: "現在你可以在時間軸上看到其他用戶的貼文。" + step6_2: "你也可以對別人的貼文作出「情感」,作出簡單的回覆。" step7_1: "以上為Misskey的基本操作說明,教學在此告一段落。辛苦了。" step7_2: "歡迎到{help}來瞭解更多Misskey相關介紹。" step7_3: "那麼,祝您在Misskey玩的開心~ 🚀" @@ -869,14 +895,14 @@ _permissions: "write:blocks": "編輯已封鎖用戶名單" "read:drive": "存取雲端硬碟\n" "write:drive": "編輯雲端硬碟的檔案" - "read:favorites": "瀏覽已收藏" - "write:favorites": "編輯收藏清單" + "read:favorites": "瀏覽我的最愛" + "write:favorites": "編輯我的最愛列表" "write:following": "追隨/解除追隨" "read:messaging": "顯示訊息" "write:messaging": "撰寫或刪除私人訊息" "read:mutes": "顯示已靜音列表" "write:mutes": "編輯已靜音列表" - "write:notes": "撰寫或刪除箋文" + "write:notes": "撰寫或刪除貼文" "read:notifications": "查看通知" "write:notifications": "編輯通知" "read:reactions": "查看情感" @@ -898,11 +924,11 @@ _auth: callback: "回到應用程式" denied: "拒絕訪問" _antennaSources: - all: "全部箋文" - homeTimeline: "來自已追隨使用者的箋文" - users: "來自特定使用者的箋文" - userList: "來自特定清單中的箋文" - userGroup: "來自特定群組的箋文" + all: "全部貼文" + homeTimeline: "來自已追隨使用者的貼文" + users: "來自特定使用者的貼文" + userList: "來自特定清單中的貼文" + userGroup: "來自特定群組的貼文" _weekday: sunday: "週日" monday: "週一" @@ -916,7 +942,7 @@ _widgets: notifications: "通知" timeline: "時間軸" calendar: "行事曆" - trends: "發燒箋文" + trends: "發燒貼文" clock: "時鐘" rss: "RSS閱讀器" activity: "動態" @@ -951,6 +977,7 @@ _poll: closed: "已結束" remainingDays: "{d}天{h}小時後結束" remainingHours: "{h}小時{m}分後結束" + remainingSeconds: "{s}秒後截止" _visibility: public: "公開" home: "首頁" @@ -960,8 +987,8 @@ _visibility: localOnly: "僅限本地" localOnlyDescription: "對遠端使用者隱藏" _postForm: - replyPlaceholder: "回覆此箋文..." - quotePlaceholder: "引用此箋文..." + replyPlaceholder: "回覆此貼文..." + quotePlaceholder: "引用此貼文..." channelPlaceholder: "發佈到頻道" _placeholders: a: "今天過得如何?" @@ -980,7 +1007,7 @@ _profile: metadataLabel: "標籤" metadataContent: "内容" _exportOrImport: - allNotes: "所有箋文" + allNotes: "所有貼文" followingList: "追隨中" muteList: "靜音" blockingList: "封鎖" @@ -989,10 +1016,10 @@ _charts: usersIncDec: "使用者増減" usersTotal: "使用者合共" activeUsers: "活躍使用者" - notesIncDec: "箋文増減" - localNotesIncDec: "本地箋文増減" - remoteNotesIncDec: "遠端箋文數目增减" - notesTotal: "箋文合共" + notesIncDec: "貼文増減" + localNotesIncDec: "本地貼文増減" + remoteNotesIncDec: "遠端貼文數目增减" + notesTotal: "貼文合共" filesIncDec: "檔案増減" filesTotal: "累計檔案" storageUsageIncDec: "儲存空間的増減" @@ -1001,8 +1028,8 @@ _instanceCharts: requests: "請求" users: "使用者増減" usersTotal: "總計使用者" - notes: "箋文増減" - notesTotal: "累計箋文" + notes: "貼文増減" + notesTotal: "累計貼文" ff: "追隨/追隨者的増減" ffTotal: "追隨/追隨者累計" cacheSize: "增加或減少快取用量" @@ -1058,6 +1085,7 @@ _rooms: keyboard: "鍵盤" carpet-stripe: "條紋地毯" mat: "地毯" + color-box: "層架" wall-clock: "壁鐘" photoframe: "相框" cube: "立方體" @@ -1114,8 +1142,8 @@ _pages: inputBlocks: "輸入" specialBlocks: "特殊" blocks: - text: "文本" - textarea: "文字區域" + text: "字串" + textarea: "字串區域" section: "區段" image: "圖片" button: "按鈕" @@ -1126,7 +1154,7 @@ _pages: _post: text: "内容" canvasId: "畫布ID" - textInput: "插入文字" + textInput: "插入字串" _textInput: name: "變數名稱" text: "標題" @@ -1146,9 +1174,9 @@ _pages: id: "畫布ID" width: "寬度" height: "高度" - note: "嵌式箋文" + note: "嵌式貼文" _note: - id: "箋文ID" + id: "貼文ID" detailed: "顯示詳細內容" switch: "開關" _switch: @@ -1193,19 +1221,23 @@ _pages: convert: "轉換" list: "清單" blocks: - text: "文本" - multiLineText: "文本 (多行)" - textList: "文本列表" + text: "字串" + multiLineText: "字串(多行)" + textList: "字串串列" + strLen: "字串長度" _strLen: - arg1: "文本" + arg1: "字串" strPick: "提取字元" _strPick: - arg1: "文本" + arg1: "字串" arg2: "字元位置" + strReplace: "替換字串" _strReplace: - arg1: "文本" + arg1: "字串" + strReverse: "倒轉字串" _strReverse: - arg1: "本文" + arg1: "字串" + join: "合併字串" _join: arg1: "清單" arg2: "分隔字元" @@ -1301,7 +1333,7 @@ _pages: arg1: "種子" arg2: "清單" _DRPWPM: - arg1: "文本列表" + arg1: "字串串列" pick: "從清單中選取" _pick: arg1: "清單" @@ -1310,12 +1342,15 @@ _pages: _listLen: arg1: "清單" number: "數值" + stringToNumber: "將字串轉換至數値" _stringToNumber: - arg1: "文字" + arg1: "字串" + numberToString: "將數値轉換至字串" _numberToString: arg1: "數值" + splitStrByLine: "於換行時分割字串" _splitStrByLine: - arg1: "文本" + arg1: "字串" ref: "變數" aiScriptVar: "AiScript的變數" fn: "函数" @@ -1325,10 +1360,11 @@ _pages: arg1: "重複次數" arg2: "處理" types: - string: "文字" + string: "字串" number: "数值" + boolean: "標記" array: "清單" - stringArray: "文本列表" + stringArray: "字串列表" enviromentVariables: "環境變數" pageVariables: "頁面元素" _relayStatus: @@ -1339,7 +1375,7 @@ _notification: youGotMention: "{name}提及到您" youGotReply: "{name}回覆了您" youGotQuote: "{name}引用了您" - youRenoted: "{name} 轉發了你的箋文" + youRenoted: "{name} 轉發了你的貼文" youGotPoll: "{name}已投票" youGotMessagingMessageFromUser: "{name}發送給您的訊息" youWereFollowed: "您有新的追隨者" @@ -1351,7 +1387,7 @@ _notification: follow: "追隨中" mention: "提及" reply: "回覆" - renote: "轉發箋文" + renote: "轉發貼文" quote: "引用" reaction: "情感" pollVote: "統計已投票數" diff --git a/migration/1611354329133-followersUri.ts b/migration/1611354329133-followersUri.ts new file mode 100644 index 000000000..5114418ae --- /dev/null +++ b/migration/1611354329133-followersUri.ts @@ -0,0 +1,16 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class followersUri1611354329133 implements MigrationInterface { + name = 'followersUri1611354329133' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user" ADD "followersUri" varchar(512) DEFAULT NULL`); + await queryRunner.query(`COMMENT ON COLUMN "user"."followersUri" IS 'The URI of the user Follower Collection. It will be null if the origin of the user is local.'`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`COMMENT ON COLUMN "user"."followersUri" IS 'The URI of the user Follower Collection. It will be null if the origin of the user is local.'`); + await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "followersUri"`); + } + +} diff --git a/migration/1611547387175-objectStorageS3ForcePathStyle.ts b/migration/1611547387175-objectStorageS3ForcePathStyle.ts new file mode 100644 index 000000000..1506a2900 --- /dev/null +++ b/migration/1611547387175-objectStorageS3ForcePathStyle.ts @@ -0,0 +1,14 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class objectStorageS3ForcePathStyle1611547387175 implements MigrationInterface { + name = 'objectStorageS3ForcePathStyle1611547387175' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageS3ForcePathStyle" boolean NOT NULL DEFAULT true`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageS3ForcePathStyle"`); + } + +} diff --git a/migration/1612619156584-announcement-email.ts b/migration/1612619156584-announcement-email.ts new file mode 100644 index 000000000..0371daf8f --- /dev/null +++ b/migration/1612619156584-announcement-email.ts @@ -0,0 +1,14 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class announcementEmail1612619156584 implements MigrationInterface { + name = 'announcementEmail1612619156584' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user_profile" ADD "receiveAnnouncementEmail" boolean NOT NULL DEFAULT true`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "receiveAnnouncementEmail"`); + } + +} diff --git a/package.json b/package.json index efc20ae89..3ec7a6495 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "misskey", "author": "syuilo ", - "version": "12.68.0", + "version": "12.69.0", "codename": "indigo", "repository": { "type": "git", @@ -35,12 +35,12 @@ "lodash": "^4.17.20" }, "dependencies": { - "@babel/plugin-transform-runtime": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.15", "@elastic/elasticsearch": "7.10.0", - "@fortawesome/fontawesome-svg-core": "1.2.32", - "@fortawesome/free-brands-svg-icons": "5.15.1", - "@fortawesome/free-regular-svg-icons": "5.15.1", - "@fortawesome/free-solid-svg-icons": "5.15.1", + "@fortawesome/fontawesome-svg-core": "1.2.34", + "@fortawesome/free-brands-svg-icons": "5.15.2", + "@fortawesome/free-regular-svg-icons": "5.15.2", + "@fortawesome/free-solid-svg-icons": "5.15.2", "@fortawesome/vue-fontawesome": "3.0.0-3", "@koa/cors": "3.1.0", "@koa/multer": "3.0.0", @@ -50,21 +50,21 @@ "@sinonjs/fake-timers": "6.0.1", "@syuilo/aiscript": "0.11.1", "@types/bcryptjs": "2.4.2", - "@types/bull": "3.14.4", + "@types/bull": "3.15.0", "@types/cbor": "5.0.1", "@types/dateformat": "3.0.1", "@types/double-ended-queue": "2.1.1", "@types/escape-regexp": "0.0.0", "@types/glob": "7.1.3", - "@types/gulp": "4.0.6", - "@types/gulp-rename": "0.0.33", + "@types/gulp": "4.0.8", + "@types/gulp-rename": "2.0.0", "@types/gulp-replace": "0.0.31", "@types/is-url": "1.2.28", - "@types/js-yaml": "3.12.5", - "@types/jsdom": "16.2.5", - "@types/jsonld": "1.5.1", + "@types/js-yaml": "4.0.0", + "@types/jsdom": "16.2.6", + "@types/jsonld": "1.5.2", "@types/katex": "0.11.0", - "@types/koa": "2.11.6", + "@types/koa": "2.11.7", "@types/koa-bodyparser": "4.3.0", "@types/koa-cors": "0.0.0", "@types/koa-favicon": "2.0.19", @@ -74,20 +74,20 @@ "@types/koa-views": "2.0.4", "@types/koa__cors": "3.0.2", "@types/koa__multer": "2.0.2", - "@types/koa__router": "8.0.2", - "@types/markdown-it": "10.0.3", - "@types/matter-js": "0.14.8", - "@types/mocha": "7.0.2", - "@types/node": "14.14.13", - "@types/node-fetch": "2.5.7", + "@types/koa__router": "8.0.4", + "@types/markdown-it": "12.0.1", + "@types/matter-js": "0.14.10", + "@types/mocha": "8.2.0", + "@types/node": "14.14.25", + "@types/node-fetch": "2.5.8", "@types/nodemailer": "6.4.0", "@types/nprogress": "0.2.0", "@types/oauth": "0.9.1", - "@types/parse5": "5.0.3", + "@types/parse5": "6.0.0", "@types/parsimmon": "1.10.6", "@types/portscanner": "2.1.0", "@types/pug": "2.0.4", - "@types/qrcode": "1.3.5", + "@types/qrcode": "1.4.0", "@types/random-seed": "0.3.3", "@types/ratelimiter": "3.4.1", "@types/redis": "2.8.28", @@ -95,51 +95,50 @@ "@types/request-stats": "3.0.0", "@types/rimraf": "3.0.0", "@types/seedrandom": "2.4.28", - "@types/sharp": "0.26.1", - "@types/sinonjs__fake-timers": "6.0.1", + "@types/sharp": "0.27.1", + "@types/sinonjs__fake-timers": "6.0.2", "@types/speakeasy": "2.0.5", "@types/throttle-debounce": "2.1.0", "@types/tinycolor2": "1.4.2", "@types/tmp": "0.2.0", "@types/uuid": "8.3.0", "@types/web-push": "3.3.0", - "@types/webpack": "4.41.25", + "@types/webpack": "4.41.26", "@types/webpack-stream": "3.2.11", "@types/websocket": "1.0.1", "@types/ws": "7.4.0", - "@typescript-eslint/parser": "4.10.0", + "@typescript-eslint/parser": "4.14.2", "@vue/compiler-sfc": "3.0.5", "abort-controller": "3.0.0", - "apexcharts": "3.23.1", + "apexcharts": "3.24.0", "autobind-decorator": "2.4.0", "autosize": "4.0.2", "autwh": "0.1.0", - "aws-sdk": "2.809.0", + "aws-sdk": "2.839.0", "bcryptjs": "2.4.3", "blurhash": "1.1.3", "bull": "3.20.0", "cafy": "15.2.1", - "cbor": "5.1.0", + "cbor": "6.0.1", "chalk": "4.1.0", "chart.js": "2.9.4", - "cli-highlight": "2.1.9", + "cli-highlight": "2.1.10", "commander": "4.1.1", "content-disposition": "0.5.3", - "core-js": "3.8.1", + "core-js": "3.8.3", "crc-32": "1.2.0", "css-loader": "5.0.1", "cssnano": "4.1.10", - "dateformat": "4.3.1", - "deep-entries": "3.1.0", + "dateformat": "4.5.1", "diskusage": "1.1.3", "double-ended-queue": "2.1.0-0", "escape-regexp": "0.0.1", - "eslint": "7.17.0", - "eslint-plugin-vue": "7.4.1", + "eslint": "7.19.0", + "eslint-plugin-vue": "7.5.0", "eventemitter3": "4.0.7", - "feed": "4.2.1", + "feed": "4.2.2", "fibers": "5.0.0", - "file-type": "16.1.0", + "file-type": "16.2.0", "fluent-ffmpeg": "2.1.2", "glob": "7.1.6", "got": "11.8.1", @@ -147,24 +146,23 @@ "gulp-cssnano": "2.1.3", "gulp-rename": "2.0.0", "gulp-replace": "1.0.0", - "gulp-sourcemaps": "2.6.5", "gulp-terser": "2.0.1", "gulp-tslint": "8.1.4", "gulp-typescript": "6.0.0-alpha.1", "hard-source-webpack-plugin": "0.13.1", - "hcaptcha": "0.0.2", "html-minifier": "4.0.0", "http-proxy-agent": "4.0.1", "http-signature": "1.3.5", "https-proxy-agent": "5.0.0", + "idb-keyval": "5.0.1", "insert-text-at-cursor": "0.3.0", "is-root": "2.1.0", "is-svg": "4.2.1", - "js-yaml": "3.14.0", + "js-yaml": "4.0.0", "jsdom": "16.4.0", - "json5": "2.1.3", + "json5": "2.2.0", "json5-loader": "4.0.1", - "jsonld": "3.2.0", + "jsonld": "3.3.0", "jsrsasign": "8.0.20", "katex": "0.12.0", "koa": "2.13.1", @@ -178,9 +176,9 @@ "koa-views": "6.3.1", "langmap": "0.0.16", "lookup-dns-cache": "2.1.0", - "markdown-it": "11.0.1", - "markdown-it-anchor": "6.0.1", - "matter-js": "0.14.2", + "markdown-it": "12.0.4", + "markdown-it-anchor": "7.0.1", + "matter-js": "0.16.1", "mocha": "8.2.1", "moji": "0.5.1", "ms": "2.1.3", @@ -196,7 +194,7 @@ "pg": "8.5.1", "portscanner": "2.2.0", "postcss": "8.2.4", - "postcss-loader": "4.1.0", + "postcss-loader": "5.0.0", "prismjs": "1.23.0", "probe-image-size": "6.0.0", "promise-limit": "2.7.0", @@ -208,7 +206,6 @@ "random-seed": "0.3.0", "ratelimiter": "3.4.1", "re2": "1.15.9", - "recaptcha-promise": "1.0.0", "reconnecting-websocket": "4.4.0", "redis": "3.0.2", "redis-lock": "0.1.4", @@ -220,10 +217,10 @@ "rimraf": "3.0.2", "rndstr": "1.0.0", "s-age": "1.1.2", - "sass": "1.32.4", - "sass-loader": "10.1.1", + "sass": "1.32.6", + "sass-loader": "11.0.0", "seedrandom": "3.0.5", - "sharp": "0.27.0", + "sharp": "0.27.1", "speakeasy": "2.0.0", "stringz": "2.1.0", "style-loader": "2.0.0", @@ -236,7 +233,7 @@ "throttle-debounce": "3.0.1", "tinycolor2": "1.4.2", "tmp": "0.2.1", - "ts-loader": "8.0.14", + "ts-loader": "8.0.15", "ts-node": "9.1.1", "tslint": "6.1.3", "tslint-sonarts": "1.9.0", @@ -250,22 +247,22 @@ "vue": "3.0.5", "vue-color": "2.8.1", "vue-json-pretty": "1.7.1", - "vue-loader": "16.0.0", + "vue-loader": "16.1.2", "vue-prism-editor": "2.0.0-alpha.2", - "vue-router": "4.0.1", + "vue-router": "4.0.3", "vue-style-loader": "4.1.2", "vuedraggable": "4.0.1", "web-push": "3.4.4", - "webpack": "5.13.0", - "webpack-cli": "4.3.1", + "webpack": "5.21.1", + "webpack-cli": "4.5.0", "websocket": "1.0.33", - "ws": "7.4.2", + "ws": "7.4.3", "xev": "2.0.1" }, "devDependencies": { "@types/chai": "4.2.14", "@types/fluent-ffmpeg": "2.1.16", - "chai": "4.2.0", + "chai": "4.3.0", "cross-env": "7.0.3" } } diff --git a/src/@types/recaptcha-promise.d.ts b/src/@types/recaptcha-promise.d.ts deleted file mode 100644 index cfbd5eebf..000000000 --- a/src/@types/recaptcha-promise.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -declare module 'recaptcha-promise' { - interface IVerifyOptions { - secret_key?: string; - } - - interface IVerify { - (response: string, remoteAddress?: string): Promise; - init(options: IVerifyOptions): IVerify; - } - - namespace recaptchaPromise {} // Hack - - const verify: IVerify; - - export = verify; -} diff --git a/src/client/components/captcha.vue b/src/client/components/captcha.vue index a6445ecea..710fcd616 100644 --- a/src/client/components/captcha.vue +++ b/src/client/components/captcha.vue @@ -57,7 +57,7 @@ export default defineComponent({ src() { const endpoint = ({ hcaptcha: 'https://hcaptcha.com/1', - grecaptcha: 'https://www.google.com/recaptcha', + grecaptcha: 'https://www.recaptcha.net/recaptcha', } as Record)[this.provider]; return `${typeof endpoint == 'string' ? endpoint : 'about:invalid'}/api.js?render=explicit`; diff --git a/src/client/components/drive.vue b/src/client/components/drive.vue index 1dbb1cbc1..b9d93ee4c 100644 --- a/src/client/components/drive.vue +++ b/src/client/components/drive.vue @@ -21,13 +21,13 @@ >
- +
{{ $ts.loadMore }}
- +
{{ $ts.loadMore }} diff --git a/src/client/components/global/url.vue b/src/client/components/global/url.vue index c7e93094f..2650cd33f 100644 --- a/src/client/components/global/url.vue +++ b/src/client/components/global/url.vue @@ -2,6 +2,7 @@ diff --git a/src/client/components/page/page.section.vue b/src/client/components/page/page.section.vue index 9f05f3a0c..d32f5dc73 100644 --- a/src/client/components/page/page.section.vue +++ b/src/client/components/page/page.section.vue @@ -1,29 +1,30 @@ diff --git a/src/client/components/page/page.text-input.vue b/src/client/components/page/page.text-input.vue index f0fe70e33..e67814af1 100644 --- a/src/client/components/page/page.text-input.vue +++ b/src/client/components/page/page.text-input.vue @@ -1,36 +1,44 @@ diff --git a/src/client/components/page/page.text.vue b/src/client/components/page/page.text.vue index f109c9f04..1896d00f4 100644 --- a/src/client/components/page/page.text.vue +++ b/src/client/components/page/page.text.vue @@ -6,7 +6,9 @@ diff --git a/src/client/components/page/page.textarea.vue b/src/client/components/page/page.textarea.vue index 205448977..97d688368 100644 --- a/src/client/components/page/page.textarea.vue +++ b/src/client/components/page/page.textarea.vue @@ -3,7 +3,9 @@ diff --git a/src/client/directives/anim.ts b/src/client/directives/anim.ts new file mode 100644 index 000000000..1ceef984d --- /dev/null +++ b/src/client/directives/anim.ts @@ -0,0 +1,18 @@ +import { Directive } from 'vue'; + +export default { + beforeMount(src, binding, vn) { + src.style.opacity = '0'; + src.style.transform = 'scale(0.9)'; + // ページネーションと相性が悪いので + //if (typeof binding.value === 'number') src.style.transitionDelay = `${binding.value * 30}ms`; + src.classList.add('_zoom'); + }, + + mounted(src, binding, vn) { + setTimeout(() => { + src.style.opacity = '1'; + src.style.transform = 'none'; + }, 1); + }, +} as Directive; diff --git a/src/client/directives/index.ts b/src/client/directives/index.ts index 474c6b4ee..7b9d31a60 100644 --- a/src/client/directives/index.ts +++ b/src/client/directives/index.ts @@ -6,6 +6,7 @@ import particle from './particle'; import tooltip from './tooltip'; import hotkey from './hotkey'; import appear from './appear'; +import anim from './anim'; export default function(app: App) { app.directive('userPreview', userPreview); @@ -15,4 +16,5 @@ export default function(app: App) { app.directive('tooltip', tooltip); app.directive('hotkey', hotkey); app.directive('appear', appear); + app.directive('anim', anim); } diff --git a/src/client/i18n.ts b/src/client/i18n.ts index aeecb58a3..fbc10a0ba 100644 --- a/src/client/i18n.ts +++ b/src/client/i18n.ts @@ -1,49 +1,6 @@ import { markRaw } from 'vue'; import { locale } from '@/config'; - -export class I18n> { - public locale: T; - - constructor(locale: T) { - this.locale = locale; - - if (_DEV_) { - console.log('i18n', this.locale); - } - - //#region BIND - this.t = this.t.bind(this); - //#endregion - } - - // string にしているのは、ドット区切りでのパス指定を許可するため - // なるべくこのメソッド使うよりもlocale直接参照の方がvueのキャッシュ効いてパフォーマンスが良いかも - public t(key: string, args?: Record): string { - try { - let str = key.split('.').reduce((o, i) => o[i], this.locale) as string; - - if (_DEV_) { - if (!str.includes('{')) { - console.warn(`i18n: '${key}' has no any arg. so ref prop directly instead of call this method.`); - } - } - - if (args) { - for (const [k, v] of Object.entries(args)) { - str = str.replace(`{${k}}`, v); - } - } - return str; - } catch (e) { - if (_DEV_) { - console.warn(`missing localization '${key}'`); - return `⚠'${key}'⚠`; - } - - return key; - } - } -} +import { I18n } from '@/scripts/i18n'; export const i18n = markRaw(new I18n(locale)); diff --git a/src/client/init.ts b/src/client/init.ts index f329d2225..17feca4c8 100644 --- a/src/client/init.ts +++ b/src/client/init.ts @@ -57,6 +57,7 @@ import { fetchInstance, instance } from '@/instance'; import { makeHotkey } from './scripts/hotkey'; import { search } from './scripts/search'; import { getThemes } from './theme-store'; +import { initializeSw } from './scripts/initialize-sw'; console.info(`Misskey v${version}`); @@ -171,7 +172,7 @@ fetchInstance().then(() => { localStorage.setItem('v', instance.version); // Init service worker - //if (this.store.state.instance.meta.swPublickey) this.registerSw(this.store.state.instance.meta.swPublickey); + initializeSw(); }); stream.init($i); diff --git a/src/client/pages/instance/settings.vue b/src/client/pages/instance/settings.vue index 761044b01..cea621ba2 100644 --- a/src/client/pages/instance/settings.vue +++ b/src/client/pages/instance/settings.vue @@ -175,6 +175,7 @@ {{ $ts.objectStorageUseSSL }} {{ $ts.objectStorageUseProxy }} {{ $ts.objectStorageSetPublicRead }} + s3ForcePathStyle