diff --git a/.config/example.yml b/.config/example.yml index 0babd037c5..503471d937 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -62,6 +62,10 @@ db: user: example-misskey-user pass: example-misskey-pass + # Extra Connection options + #extra: + # ssl: true + # ┌─────────────────────┐ #───┘ Redis configuration └───────────────────────────────────── diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000000..c6b2a1611c --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +patreon: syuilo diff --git a/CHANGELOG.md b/CHANGELOG.md index 782482bc89..7eecb7b8ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,27 @@ mongodb: 8. master ブランチに戻す 9. enjoy +11.19.0 (2019/05/25) +-------------------- +### ✨Improvements +* グループのオーナーを変えられるように +* PagesでURLプレビューを表示するように +* サーバーログを削除できるように +* リンク先が同じインスタンスの投稿内のURLをクリックしたときは新しいタブで開かないように +* PostgreSQLの接続オプションを設定ファイルで設定できるように +* いくつかのAPIでのパフォーマンスを向上 +* ユーザビリティの向上 +* デザインの調整 + +### 🐛Fixes +* デッキでユーザーページを遷移したときに前のユーザーのタイムラインが残り続ける問題を修正 +* デッキでフォロー申請が見れない問題を修正 +* グループ情報が更新できない問題を修正 +* Firefoxでトークの下が隠れてしまう問題を修正 +* トーク履歴がないと履歴が読み込み中のままになる問題を修正 +* 通知で長い名前のユーザーがいると横スクロールが発生する問題を修正 +* iOSでの選択ダイアログの動作を修正 + 11.18.1 (2019/05/21) -------------------- ### 🐛Fixes diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b01e5e6dd8..d93fc50ec6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,7 +7,11 @@ Before creating a new issue, please search existing issues to avoid duplication. If you find the existing issue, please add your reaction or comment to the issue. ## Localization (l10n) -Please use [Crowdin](https://crowdin.com/project/misskey) for localization. +Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management. +You can improve our translations with your Crowdin account. +Changes you make in Crowdin will be merged into develop branch. + +If you can't find the language you want to contribute with, please open an issue. ![Crowdin](https://d322cqt584bo4o.cloudfront.net/misskey/localized.svg) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index e9ea042450..1d5a99f169 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -10,26 +10,35 @@ common: about: "Misskey ist eine Quelloffene, dezentralisierte microblogging Software. Es bietet eine erweiterbare Benutzeroberfläche, verschiedenste Möglichkeiten auf Beiträge zu reagieren, kostenlosen Datenspeicher, und andere fortschrittliche Funktionen. Zusätzlich ist Misskey dazu in der Lage, sich mittels des Fediverse mit beliebig vielen anderen ActivityPub-kompatiblen Diensten zu verbinden. Wenn du zum Beispiel einen Betrag mit Misskey abschickst, wird dieser auch für Nutzer von Mastodon oder Pleroma sichtbar sein. So ähnlich wie eine Radioübertragung zwischen Planeten." features: "Funktionen" rich-contents: "Notizen" + rich-contents-desc: "Poste einfach deine Ideen, Interessen und alles, was du teilen möchtest. Gestalte deine Nachrichten, teile deine Lieblingsbilder, sende Dateien und Videos und erstelle Umfragen – das und mehr kann Misskey!" reaction: "Reaktionen" + reaction-desc: "Der einfachste Weg, deine Gefühle mit anderen zu teilen. Mit Misskey kannst du auf verschiedenste Arten auf Beiträge reagieren, statt nur zu „liken“." ui: "Benutzeroberfläche" + ui-desc: "Geschmäcker sind verschieden. Deswegen ist Misskeys Oberfläche hochanpassbar und modular. Mache die Startseite zu deiner Startseite, indem du das Layout deiner Timeline änderst und mit Widgets staffierst." drive: "Drive" + drive-desc: "Du willst ein hochgeladenes Foto nochmal posten? Deine Dateien benennen und in Ordnern sortieren? Misskeys Drive ist der beste Ort dafür. Damit wird das Teilen zum Kinderspiel!" + outro: "Probiere Misskey aus und entdecke Misskeys einzigartige Funktionen. Wenn dir diese Instanz nicht zusagt, nimm einfach eine andere. Dank Misskeys dezentralem System kannst du dich überall mit deinen Freunden verbinden. Also dann, GLHF!" adblock: detected: "Bitte deaktiviere den Werbeblocker." + warning: "Misskey hat keine Werbung. Allerdings können Werbeblocker für unerwartete Probleme und fehlende Funktionen sorgen." application-authorization: "Autorisierte Anwendungen" close: "Schließen" + do-not-copy-paste: "Bitte keinen Code einfügen. Ihr Account könnte gefährdet werden." load-more: "Mehr laden" enter-password: "Bitte Passwort eingeben" 2fa: "Zwei-Faktor-Authentifizierung" customize-home: "Layout Anpassen" - featured-notes: "Hervorgehobene Beiträge" + featured-notes: "Beliebt" dark-mode: "Dunkler Modus" signin: "Einloggen" signup: "Registrieren" signout: "Ausloggen" reload-to-apply-the-setting: "Die Seite muss zum Übernehmen dieser Einstellung aktualisiert werden. Soll die Seite jetzt neu geladen werden?" + fetching-as-ap-object: "Hole Daten…" got-it: "Verstanden!" customization-tips: title: "Anpassung-Tipps" + paragraph: "
Du kannst deine Startseite anpassen, indem du Widgets hinzufügst und verschiebst.
Klicke rechts auf ein Widget, um dessen Aussehen zu verändern.
Um ein Widget zu löschen, klicke und ziehe es auf den Papierkorb am Kopfende der Seite.
Wenn du fertig bist, drücke auf den Beenden-Knopf oben rechts.
" gotit: "Verstanden!" notification: file-uploaded: "Datei hochgeladen!" @@ -56,21 +65,32 @@ common: pages: "Seite" messaging: "Unterhaltungen" home: "Home" - deck: "Stapel" + deck: "Deck" timeline: "Zeitleiste" explore: "Entdecken" following: "Folgt" followers: "Folgende" - favorites: "Diesen Beitrag favorisieren" + favorites: "Favoriten" permissions: "read:account": "Accountinformationen anzeigen." "write:account": "Accountinformationen bearbeiten." "read:blocks": "Blöcke anzeigen" + "write:blocks": "Auf Sperrungen zugreifen" "read:drive": "Dateien anzeigen" "write:drive": "Dateien bearbeiten" "read:favorites": "Favoriten anzeigen" + "write:favorites": "Auf Favoriten zugreifen" + "read:following": "Follower-Daten lesen" + "write:following": "Folgestatus bearbeiten" "read:messaging": "Unterhaltung anzeigen" "write:messaging": "Unterhaltung bearbeiten" + "read:mutes": "Stummschaltungen lesen" + "write:mutes": "Stummschaltungen bearbeiten" + "write:notes": "Beiträge löschen und verfassen" + "read:notifications": "Benachrichtigungen lesen" + "write:notifications": "Benachrichtigungen bearbeiten" + "read:reactions": "Reaktionen sehen" + "write:reactions": "Reaktionen hinzufügen und bearbeiten" "write:votes": "Abstimmen" empty-timeline-info: follow-users-to-make-your-timeline: "Beiträge von Benutzern, denen du folgst, werden in der Zeitleiste angezeigt." @@ -147,22 +167,116 @@ common: show-reversi-board-labels: "Zeige Reihen- und Spaltenbeschreibungen in Reversi an" use-avatar-reversi-stones: "Avatar als Stein in Reversi anzeigen" disable-animated-mfm: "Animierten Text in Beiträgen deaktivieren" + disable-showing-animated-images: "Animierte Grafiken deaktivieren" + suggest-recent-hashtags: "Beim Verfassen von Beiträgen letzte Hashtags anzeigen" + always-show-nsfw: "Sensible Inhalte (NSFW) immer anzeigen" + always-mark-nsfw: "Meine Anhänge immer als NSFW markieren" + show-full-acct: "Servername bei Benutzernamen immer anzeigen" + show-via: "„via“ anzeigen" + reduce-motion: "Animationen der Benutzeroberfläche reduzieren" + this-setting-is-this-device-only: "Nur auf diesem Gerät" + use-os-default-emojis: "Betriebssystem-Emojis nutzen" + line-width: "Linienstärke" + line-width-thin: "Dünn" + line-width-normal: "Normal" + line-width-thick: "Dick" + font-size: "Schriftgröße" + font-size-x-small: "Sehr klein" + font-size-small: "Klein" + font-size-medium: "Normal" + font-size-large: "Groß" + font-size-x-large: "Sehr groß" + deck-column-align: "Spaltenaufteilung der Deck-Ansicht" + deck-column-align-center: "Mitte" + deck-column-align-left: "Links" + deck-column-align-flexible: "Flexibel" + deck-column-width: "Spaltenbreite des Decks" + deck-column-width-narrow: "Sehr eng" + deck-column-width-narrower: "Eng" + deck-column-width-normal: "Normal" + deck-column-width-wider: "Breit" + deck-column-width-wide: "Sehr breit" + use-shadow: "Nutze Schatten" + rounded-corners: "Abgerundete Ecken" + circle-icons: "Kreisförmige Icons" + contrasted-acct: "Nutzernamen kontrastreicher darstellen" + wallpaper: "Hintergrund" + choose-wallpaper: "Hintergrund auswählen" + delete-wallpaper: "Hintergrund entfernen" + post-form-on-timeline: "Beitragsformular über Timeline anzeigen" + show-clock-on-header: "Uhr am oberen rechten Rand anzeigen" + show-reply-target: "Zeige bei einer Antwort die ursprüngliche Nachricht" + timeline: "Timeline" + show-my-renotes: "Zeige eigene Renotes in der Timeline" + show-renoted-my-notes: "Zeige Renotes deiner Posts in der Timeline" + show-local-renotes: "Zeige Renotes lokaler Posts in der Timeline" + remain-deleted-note: "Gelöschte Beiträge weiterhin anzeigen" + sound: "Töne" + enable-sounds: "Töne aktivieren" + enable-sounds-desc: "Spiel einen Ton ab beim Erhalten eines Beitrags bzw. einer Nachricht. Diese Einstellung wird im Browser gespeichert." + volume: "Lautstärke" + test: "Test" + update: "Misskey-Update" + version: "Version:" + latest-version: "Neuste Version:" + update-checking: "Suche nach Updates" + do-update: "Nach Updates suchen" + update-settings: "Erweiterte Einstellungen" + no-updates: "Kein Update verfügbar" + no-updates-desc: "Misskey ist aktuell." + update-available: "Eine neue Version ist verfügbar!" + update-available-desc: "Änderungen werden beim Neuladen der Seite angewendet." + advanced-settings: "Erweiterte Einstellungen" + debug-mode: "Debug-Modus einschalten" + debug-mode-desc: "Diese Einstellung wird im Browser gespeichert." + navbar-position: "Postion der Navigationsleiste" + navbar-position-top: "Oben" + navbar-position-left: "Links" + navbar-position-right: "Rechts" + i-am-under-limited-internet: "Ich möchte Datenvolumen sparen" + post-style: "Beitrags-Anzeigestil" + post-style-standard: "Standard" + post-style-smart: "Smart" + notification-position: "Benachrichtigungen anzeigen" + notification-position-bottom: "Unten" + notification-position-top: "Oben" + disable-via-mobile: "Beitrag nicht als „vom Handy“ markieren" + load-raw-images: "Anhänge in voller Größe laden" + load-remote-media: "Zeige Inhalte von fremden Servern" search: "Suche" delete: "Löschen" loading: "Laden" + ok: "Okay" + cancel: "Abbrechen" update-available-title: "Aktualisierung verfügbar" update-available: "Eine neue Version von Misskey ist verfügbar ({newer}, aktuell ist {current}). Lade die Seite neu um die aktuelle Version zu laden" my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet." + hide-password: "Passwort verbergen" + show-password: "Passwort zeigen" + enter-username: "Kontonamen eingeben" do-not-use-in-production: "Dies ist eine Entwicklungsversion. Nicht in einer Produktivumgebung verwenden." + user-suspended: "Dieser Nutzer wurde gesperrt." + is-remote-user: "Diese Nutzerinformationen können unvollständig sein." + is-remote-post: "Dies ist ein entfernter Post." + view-on-remote: "Vollständige Infos auf Ursprungsserver anzeigen" + renoted-by: "Renote von {user}" + no-notes: "Keine Beiträge" + turn-on-darkmode: "Dunkles Design" + turn-off-darkmode: "Helles Design" error: + title: "Allgemeiner Fehler" retry: "Erneut versuchen" reversi: drawn: "Unentschieden" my-turn: "Du bist am Zug" opponent-turn: "Dein Gegner ist an der Reihe" + turn-of: "{name}s Zug" + past-turn-of: "Zug von {name}" + won: "{name} hat gewonnen" black: "Schwarz" white: "Weiß" total: "Gesamt" + this-turn: "{count}. Zug" widgets: analog-clock: "Analoge Uhr" profile: "Profil" @@ -173,8 +287,10 @@ common: memo: "Notizen" trends: "Trends" photo-stream: "Bilder" + posts-monitor: "Beitrags-Aktivität" slideshow: "Diashow" version: "Version" + broadcast: "Ankündigungen" notifications: "Benachrichtigungen" users: "Empfohlene Benutzer" polls: "Umfrage" @@ -183,7 +299,9 @@ common: nav: "Navigation" tips: "Tipps" hashtags: "Hashtags" + queue: "Warteschlange" dev: "Fehler beim Erstellen der Applikation. Bitte versuche es erneut." + ai-chan-kawaii: "Ai-chan kawaii!" you: "Du" auth/views/form.vue: share-access: "Erlaubst Du {name} auf deinen Account zuzugreifen?" @@ -193,17 +311,37 @@ auth/views/form.vue: auth/views/index.vue: loading: "Lädt" denied: "Autorisierung der Anwendung wurde verweigert." + denied-paragraph: "Diese App kann nicht auf deinen Account zugreifen." already-authorized: "Diese Anwendung ist bereits autorisiert." allowed: "Autorisierung der Anwendung wurde erlaubt." + callback-url: "Zur App zurückkehren" please-go-back: "Bitte gehe zurück zur Anwendung." error: "Sitzung ist nicht vorhanden." sign-in: "Bitte melde dich an." +common/views/pages/explore.vue: + pinned-users: "Vorgeschlagen" + popular-users: "Beliebt" + recently-updated-users: "Kürzlich aktiv" + recently-registered-users: "Neue Benutzer" + popular-tags: "Beliebte Tags" + federated: "Aus dem Fediverse" + explore: "{host} erkunden" + users-info: "Momentan sind {users} Nutzer hier registriert" +common/views/components/url-preview.vue: + enable-player: "Player öffnen" + disable-player: "Player schließen" +common/views/components/user-list.vue: + no-users: "Keine Benutzer" common/views/components/games/reversi/reversi.vue: matching: waiting-for: "Warten auf {}" cancel: "Abbrechen" common/views/components/games/reversi/reversi.game.vue: surrender: "Aufgeben" + surrendered: "durch Aufgabe" + is-llotheo: "Der niedrigere gewinnt (Llotheo)" + looped-map: "Spielbrettenden verbinden" + can-put-everywhere: "Setzen ist überall erlaubt" common/views/components/games/reversi/reversi.index.vue: title: "Misskey Reversi" sub-title: "Spiele Reversi mit deinen Freunden!" @@ -221,7 +359,14 @@ common/views/components/games/reversi/reversi.room.vue: black-or-white: "Schwarz/Weiß" black-is: "Schwarz ist {}" rules: "Regeln" + is-llotheo: "Der niedrigere gewinnt (Llotheo)" + looped-map: "Spielbrettenden verbinden" + can-put-everywhere: "Setzen ist überall erlaubt" + settings-of-the-bot: "Bot-Einstellungen" + this-game-is-started-soon: "Spiel beginnt gleich" waiting-for-other: "Warte auf den Gegner" + waiting-for-me: "Warten, bis du bereit bist" + waiting-for-both: "Vorbereiten…" cancel: "Abbrechen" ready: "Bereit" common/views/components/connect-failed.vue: @@ -252,10 +397,13 @@ common/views/components/media-banner.vue: sensitive: "Dieser Inhalt ist NSFW" click-to-show: "Klicke zum den Inhalt anzusehen" common/views/components/theme.vue: + theme: "Design" light-theme: "Thema" dark-theme: "Thema während des Nachtmodus" light-themes: "Helles Thema" dark-themes: "Dunkles Thema" + install-a-theme: "Design wird installiert" + theme-code: "Design-Quelltext" install: "Anwenden" installed: "\"{}\" wurde installiert" create-a-theme: "Thema erstellen" @@ -266,20 +414,37 @@ common/views/components/theme.vue: base-theme: "Basisthema" base-theme-light: "Hell" base-theme-dark: "Dunkel" + find-more-theme: "Mehr Designs finden" theme-name: "Name des Themas" preview-created-theme: "Vorschau" invalid-theme: "Thema ist ungültig" already-installed: "Thema ist bereits installiert" + saved: "Gespeichert" + manage-themes: "Designs verwalten" + builtin-themes: "Standard-Designs" + my-themes: "Meine Designs" + installed-themes: "Installierte Designs" + select-theme: "Design wählen" + uninstall: "Deinstallieren" + uninstalled: "„{}“ wurde deinstalliert" author: "Autor" desc: "Beschreibung" export: "Exportieren" import: "Importieren" + import-by-code: "oder Quelltext einfügen" + theme-name-required: "Design-Name ist erforderlich" common/views/components/cw-button.vue: + hide: "Ausblenden" + show: "Mehr" + chars: "{count} Zeichen" + files: "{count} Dateien" poll: "Umfrage" common/views/components/messaging.vue: search-user: "Einen Nutzer suchen" you: "Du" no-history: "Keine Chronik" + user: "Benutzer" + group: "Gruppen" common/views/components/messaging-room.vue: no-history: "Keine weitere Chronik vorhanden" new-message: "Neue Nachricht" @@ -301,12 +466,28 @@ common/views/components/nav.vue: develop: "Entwickler" feedback: "Feedback" common/views/components/note-menu.vue: + mention: "Erwähnungen" + detail: "Details" + copy-content: "Inhalt kopieren" + copy-link: "Link kopieren" favorite: "Diesen Beitrag favorisieren" unfavorite: "Aus Favoriten entfernen" + watch: "Beobachten" + unwatch: "Nicht mehr beobachten" pin: "An die Profilseite pinnen" + unpin: "Lösen" delete: "Löschen" delete-confirm: "Diesen Beitrag löschen?" remote: "Auf Quelle anzeigen" +common/views/components/user-menu.vue: + mention: "Erwähnungen" + mute: "Stummschalten" + unmute: "Stummschaltung aufheben" + mute-confirm: "Bist du sicher, dass du diesen Nutzer stummschalten möchtest?" + unmute-confirm: "Stummschaltung für diesen Nutzer aufheben?" + block: "Sperren" + unblock: "Sperrung aufheben" + block-confirm: "Diesen Nutzer wirklich sperren?" common/views/components/poll.vue: vote-to: "Stimme für '{}'" vote-count: "{} Stimmen" @@ -389,6 +570,8 @@ common/views/components/user-group-editor.vue: common/views/components/user-lists.vue: user-lists: "Listen" common/views/components/user-groups.vue: + user-groups: "Gruppen" + owned-groups: "Meine Gruppen" invites: "Einladen" common/views/widgets/broadcast.vue: fetching: "Laden" @@ -399,6 +582,7 @@ common/views/widgets/photo-stream.vue: title: "Fotostream" no-photos: "Keine Fotos" common/views/widgets/posts-monitor.vue: + title: "Beitrags-Aktivität" toggle: "Sicht umschalten" common/views/widgets/server.vue: title: "Serverinformationen" @@ -486,7 +670,7 @@ desktop/views/components/followers.vue: desktop/views/components/following.vue: empty: "Du folgst niemanden" desktop/views/components/home.vue: - done: "Verbunden" + done: "Beenden" add-widget: "Widget hinzufügen:" add: "Hinzufügen" desktop/views/input-dialog.vue: @@ -501,6 +685,7 @@ desktop/views/components/note-detail.vue: desktop/views/components/note.vue: reply: "Antworten" renote: "Anmerken" + detail: "Details" private: "Dieser Beitrag ist privat" deleted: "Dieser Beitrag wurde entfernt" desktop/views/components/notes.vue: @@ -579,6 +764,7 @@ desktop/views/components/timeline.vue: desktop/views/components/ui.header.account.vue: profile: "Dein Profil" lists: "Listen" + groups: "Gruppen" desktop/views/components/ui.header.nav.vue: game: "Spielen" desktop/views/components/ui.header.notifications.vue: @@ -592,11 +778,13 @@ desktop/views/components/users-list.vue: admin/views/dashboard.vue: drive: "Drive" admin/views/abuse.vue: + details: "Details" remove-report: "Löschen" admin/views/instance.vue: recaptcha-preview: "Vorschau" invite: "Einladen" save: "Speichern" + saved: "Gespeichert" admin/views/charts.vue: drive: "Drive" admin/views/drive.vue: @@ -616,6 +804,7 @@ admin/views/announcements.vue: save: "Speichern" remove: "Löschen" add: "Hinzufügen" + saved: "Gespeichert" admin/views/federation.vue: status: "Status" desktop/views/pages/note.vue: @@ -674,6 +863,7 @@ mobile/views/components/ui.nav.vue: notifications: "Benachrichtigungen" search: "Suchen" user-lists: "Listen" + user-groups: "Gruppen" game: "Spielen" about: "Über" mobile/views/pages/drive.vue: diff --git a/locales/en-US.yml b/locales/en-US.yml index 303115d9db..c36550b8c5 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -450,14 +450,22 @@ common/views/components/messaging.vue: you: "You" no-history: "Without history" user: "User" + group: "Group" + start-with-user: "Start chatting with a user" + start-with-group: "Start a group and chat" + select-group: "Select a group" common/views/components/messaging-room.vue: + not-talked-user: "You have not talked to this user yet" + not-talked-group: "There is no conversation in this group" no-history: "There is no further history" new-message: "New message" + only-one-file-attached: "You can only attach one file to a message" common/views/components/messaging-room.form.vue: input-message-here: "Enter message here" send: "Send" attach-from-local: "Attach files from your device" attach-from-drive: "Attach files from your Drive" + only-one-file-attached: "You can only attach one file to a message" common/views/components/messaging-room.message.vue: is-read: "Read" deleted: "This message has been deleted" @@ -542,6 +550,7 @@ common/views/components/poll-editor.vue: day: "S" common/views/components/reaction-picker.vue: choose-reaction: "Send a reaction" + input-reaction-placeholder: "or input Emoji" common/views/components/emoji-picker.vue: custom-emoji: "Custom Emoji" people: "People" @@ -694,14 +703,28 @@ common/views/components/user-list-editor.vue: deleted: "Deleted successfully" add-user: "Add a user" common/views/components/user-group-editor.vue: + users: "Members" + rename: "Rename group" + delete: "Delete group" + transfer: "transfer group" + transfer-are-you-sure: "Are you sure you want to add @$2 to the group $1?" + remove-user: "Remove a user from this group" deleted: "Deleted" invite: "Invite" + invited: "The invitation was successfully sent" common/views/components/user-lists.vue: user-lists: "Lists" create-list: "Create a list" list-name: "List name" common/views/components/user-groups.vue: + user-groups: "Group" + create-group: "Create a group" + group-name: "Group name" + owned-groups: "My groups" + joined-groups: "Membership in groups" invites: "Invite" + accept-invite: "Join" + reject-invite: "Decline" common/views/widgets/broadcast.vue: fetching: "Checking" no-broadcasts: "No announcements" @@ -765,6 +788,8 @@ common/views/pages/follow.vue: follow-request: "Follow request" common/views/pages/follow-requests.vue: received-follow-requests: "Follow requests" + accept: "Accept" + reject: "Reject" desktop: banner-crop-title: "Crop the part that appears as a banner" banner: "Banner" @@ -781,7 +806,7 @@ desktop/views/components/activity.chart.vue: total: "Black ... Total" notes: "Blue ... Notes" replies: "Red ... Replies" - renotes: "Green ... Repost" + renotes: "Green ... Renotes" desktop/views/components/activity.vue: title: "Activity" toggle: "Toggle views" @@ -878,7 +903,7 @@ desktop/views/components/note-detail.vue: private: "Post is private" deleted: "Post has been removed" location: "Location" - renote: "Repost" + renote: "Renote" add-reaction: "Add a reaction" undo-reaction: "Reverse reaction" desktop/views/components/note.vue: @@ -902,10 +927,10 @@ desktop/views/components/post-form.vue: quote-placeholder: "Quote this Post..." submit: "Post" reply: "Reply" - renote: "Repost" + renote: "Renote" posted: "Posted!" replied: "Replied!" - reposted: "Reposted!" + reposted: "Renoted!" note-failed: "Failed to post" reply-failed: "Failed to reply" renote-failed: "Failed to Renote" @@ -933,13 +958,13 @@ desktop/views/components/progress-dialog.vue: desktop/views/components/renote-form.vue: quote: "Quote..." cancel: "Cancel" - renote: "Repost" + renote: "Renote" renote-home: "Renote (Home)" reposting: "Renoting..." - success: "Reposted!" - failure: "Failed to Repost" + success: "Renoted!" + failure: "Failed to Renote" desktop/views/components/renote-form-window.vue: - title: "Do you want to Renote it?" + title: "Do you want to renote it?" desktop/views/pages/user-following-or-followers.vue: following: "{user}'s following" followers: "{user}'s follower" @@ -1036,6 +1061,7 @@ desktop/views/components/ui.header.vue: desktop/views/components/ui.header.account.vue: profile: "Your profile" lists: "Lists" + groups: "Group" follow-requests: "Follow requests" admin: "Admin" desktop/views/components/ui.header.nav.vue: @@ -1109,6 +1135,10 @@ admin/views/instance.vue: drive-config: "Drive settings" object-storage-base-url: "URL" object-storage-endpoint: "Endpoint" + object-storage-port: "Port" + object-storage-access-key: "Access Key" + object-storage-secret-key: "Secret Key" + object-storage-use-ssl: "Use SSL" cache-remote-files: "Cache remote files" cache-remote-files-desc: "Without this parameter, all remote files are linked to their host server directly. This will be an effective solution to save your server storage, however make remote files invisible to users who set direct-link disabled, since no thumbnail will be generated, increase traffic. It is recommended that this parameter set enabled." local-drive-capacity-mb: "Volume of Drive per user" @@ -1117,6 +1147,7 @@ admin/views/instance.vue: recaptcha-config: "the reCAPTCHA settings" recaptcha-info: "reCAPTCHA token is required. Please get it on https://www.google.com/recaptcha/intro/" enable-recaptcha: "enable reCAPTCHA" + recaptcha-secret-key: "Secret Key" recaptcha-preview: "Preview" twitter-integration-config: "Settings of connecting to Twitter" twitter-integration-info: "The callback URL is set on {url}." @@ -1234,6 +1265,8 @@ admin/views/users.vue: unsilence-confirm: "Are you certain that you want to stop silencing this user?" update-remote-user: "Update information about remote user" remote-user-updated: "The information regarding the remote user has been updated." + delete-all-files: "Delete all files" + delete-all-files-confirm: "Are you sure that you want to delete all files?" users: title: "Users" sort: @@ -1309,6 +1342,7 @@ admin/views/federation.vue: latest-request-received-at: "Last request received at" remove-all-following: "Withold all followers" remove-all-following-info: "Unfollow all accounts from {host}. Please run this if the instance no longer exists." + delete-all-files: "Remove all files" block: "Block" marked-as-closed: "Marked as closed" lookup: "Look up" @@ -1512,6 +1546,7 @@ mobile/views/components/ui.nav.vue: follow-requests: "Follow requests" search: "Search" user-lists: "Lists" + user-groups: "Group" widgets: "Widgets" game: "Games" admin: "Admin" @@ -1654,6 +1689,9 @@ pages: view-source: "View Source" view-page: "View page" like: "Like" + unlike: "Unlike" + liked-pages: "Favorite pages" + my-pages: "My pages" inspector: "Inspector" content: "Page block" variables: "Variables" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 81b370495d..934f8ba4c5 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -78,6 +78,7 @@ common: "write:drive": "Écrire sur le Drive" "read:favorites": "Afficher les favoris" "write:favorites": "Écrire des favoris" + "read:messaging": "Lire les conversations" "write:messaging": "Utiliser la messagerie" "write:notes": "Créer ou supprimer des publications" "read:notifications": "Afficher les notifications" @@ -438,14 +439,21 @@ common/views/components/messaging.vue: you: "Vous" no-history: "Pas d'historique" user: "Utilisateur·rice·s" + group: "Groupe" + start-with-user: "Initier une discussion avec un·e utilisateur·rice" + select-group: "Sélectionner un groupe" common/views/components/messaging-room.vue: + not-talked-user: "Vous n'avez pas encore discuté avec cet·te utilisateur·rice" + not-talked-group: "Il n y a aucune conversation dans ce groupe" no-history: "Aucun historique" new-message: "Nouveau message" + only-one-file-attached: "Vous ne pouvez joindre qu'un seul fichier au message" common/views/components/messaging-room.form.vue: input-message-here: "Tapez ici votre message" send: "Envoyer" attach-from-local: "Joindre un fichier depuis votre ordinateur" attach-from-drive: "Joindre un fichier depuis votre Drive" + only-one-file-attached: "Vous ne pouvez joindre qu'un seul fichier au message" common/views/components/messaging-room.message.vue: is-read: "Lu" deleted: "Ce message a été supprimé" @@ -679,13 +687,19 @@ common/views/components/user-group-editor.vue: delete: "Supprimer le groupe" deleted: "Supprimé" invite: "Inviter" + invited: "Invitation envoyée avec succès" common/views/components/user-lists.vue: user-lists: "Listes" create-list: "Créer une liste" list-name: "Nom de la liste" common/views/components/user-groups.vue: + user-groups: "Groupe" create-group: "Créer un groupe" + group-name: "Nom du groupe" + owned-groups: "Mes groupes" + joined-groups: "Membre dans les groupes" invites: "Inviter" + accept-invite: "Participer" reject-invite: "Refuser" common/views/widgets/broadcast.vue: fetching: "Récupération" @@ -1051,7 +1065,7 @@ admin/views/index.vue: instance: "Instance" emoji: "Émoji" moderators: "Modérateurs" - users: "Utilisateurs" + users: "Utilisateur·rice·s" federation: "Fédération" announcements: "Annonces" abuse: "Abus" @@ -1095,8 +1109,11 @@ admin/views/instance.vue: drive-config: "Paramètres du lecteur" object-storage-base-url: "URL" object-storage-endpoint: "Point de terminaison" + object-storage-port: "Port" object-storage-access-key: "Clé d'accès" object-storage-secret-key: "Clé secrète" + object-storage-use-ssl: "Utiliser SSL" + object-storage-s3-info-here: "ici" cache-remote-files: "Mettre en cache des fichiers distants" local-drive-capacity-mb: "Volume du lecteur par utilisateur" remote-drive-capacity-mb: "Volume du lecteur par utilisateur distant" @@ -1106,6 +1123,7 @@ admin/views/instance.vue: enable-recaptcha: "Activation de reCAPTCHA" recaptcha-secret-key: "Clé secrète" recaptcha-preview: "Prévisualisation" + hidden-tags: "Tags cachés" twitter-integration-config: "Paramètres de connexion à Twitter" twitter-integration-info: "L'URL de callback est {url}." enable-twitter-integration: "Activer la connexion à Twitter" @@ -1218,7 +1236,7 @@ admin/views/users.vue: update-remote-user: "Mettre à jour les informations de l’utilisateur·rice distant·e" remote-user-updated: "Les informations de l’utilisateur·rice distant·e ont étés mis à jour" users: - title: "Utilisateurs" + title: "Utilisateur·rice·s" sort: title: "Trier par" createdAtAsc: "Date d’inscription (Ascendant)" @@ -1433,7 +1451,7 @@ mobile/views/components/media-video.vue: sensitive: "Le contenu est NSFW" click-to-show: "Cliquer pour afficher" common/views/components/follow-button.vue: - following: "Abonné" + following: "Abonné·e" follow: " Suivre" request-pending: "Demande en attente" follow-processing: "En cours d’abonnement" @@ -1483,6 +1501,7 @@ mobile/views/components/ui.nav.vue: follow-requests: "Demandes d’abonnement" search: "Rechercher" user-lists: "Listes" + user-groups: "Groupe" widgets: "Modules" game: "Jeux" admin: "Admin" @@ -1498,9 +1517,9 @@ mobile/views/pages/drive.vue: mobile/views/pages/signup.vue: lets-start: "Votre compte est prêt ! 📦" mobile/views/pages/followers.vue: - followers-of: "Abonnés de {name}" + followers-of: "Abonné·e·s de {name}" mobile/views/pages/following.vue: - following-of: "Abonnés de {name}" + following-of: "Abonné·e·s de {name}" mobile/views/pages/home.vue: home: "Accueil" local: "Local" @@ -1752,16 +1771,32 @@ pages: _gtEq: arg1: "A" arg2: "B" + _if: + arg1: "Si" + arg2: "donc" + arg3: "sinon" + not: "négation" + _not: + arg1: "négation" random: "Aléatoire" _randomPick: arg1: "Listes" + _dailyRandom: + arg1: "Probabilité" + _dailyRannum: + arg1: "Minimum" + arg2: "Maximum" _dailyRandomPick: arg1: "Listes" + _seedRandom: + arg2: "Probabilité" _seedRannum: arg2: "Min" arg3: "Max" _seedRandomPick: arg2: "Listes" + _DRPWPM: + arg1: "Liste de texte" pick: "Sélectionner dans la liste" _pick: arg1: "Listes" @@ -1781,9 +1816,12 @@ pages: slots: "Emplacement" arg1: "Sortie" for: "Répéter" + thereIsEmptySlot: "Slot {slot} est vide !" types: string: "Texte" number: "Numérique" array: "Listes" stringArray: "Liste de texte" + emptySlot: "Slot vide" enviromentVariables: "Variables d'environnement" + pageVariables: "Élément de page" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 9047378849..9153655f31 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -591,6 +591,7 @@ common/views/components/poll-editor.vue: common/views/components/reaction-picker.vue: choose-reaction: "リアクションを選択" + input-reaction-placeholder: "または絵文字を入力" common/views/components/emoji-picker.vue: custom-emoji: "カスタム絵文字" @@ -762,6 +763,9 @@ common/views/components/user-group-editor.vue: users: "メンバー" rename: "グループ名を変更" delete: "グループを削除" + transfer: "グループを譲渡" + transfer-are-you-sure: "グループ「$1」を「@$2」さんに譲渡しますか?" + transferred: "グループを譲渡しました" remove-user: "このグループから削除" delete-are-you-sure: "グループ「$1」を削除しますか?" deleted: "削除しました" @@ -1278,6 +1282,7 @@ admin/views/instance.vue: mb: "メガバイト単位" recaptcha-config: "reCAPTCHAの設定" recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。" + recaptcha-info2: "v3は非対応です。v2を使用してください。" enable-recaptcha: "reCAPTCHAを有効にする" recaptcha-site-key: "サイトキー" recaptcha-secret-key: "シークレットキー" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 562a3d19e5..47e16d5d45 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -20,7 +20,7 @@ common: outro: "이외에도 Misskey에만 있는 기능이 아직도 더 있으니 부디 여러분 자신의 눈으로 확인해보시기 바랍니다. Misskey는 분산형 SNS라서 이 인스턴스가 마음에 들지 않으신다면 다른 인스턴스를 시도해보실 수도 있습니다. 그럼, GLHF!" adblock: detected: "광고 차단기를 해제하십시오" - warning: "Misskey는 광고를 게재하지 않습니다. 그러나 광고 차단 기능을 사용할 경우 일부 기능을 사용할 수 없게 될 가능성이나 결함이 발생하는 경우가 있습니다." + warning: "Misskey는 광고를 게재하지 않습니다. 하지만 광고 차단 기능을 사용할 경우 일부 기능을 사용할 수 없거나 문제가 발생할 수 있습니다." application-authorization: "앱 연계" close: "닫기" do-not-copy-paste: "여기에 코드를 입력하거나 붙여넣지 마십시오. 계정이 무단으로 사용될 수 있습니다." @@ -42,7 +42,7 @@ common: gotit: "Got it!" notification: file-uploaded: "파일이 업로드되었습니다" - message-from: "{}님으로부터 메시지:" + message-from: "{}님의 메시지:" reversi-invited: "게임 초대가 있습니다" reversi-invited-by: "{}님으로부터" notified-by: "{}님으로부터" @@ -51,7 +51,7 @@ common: time: unknown: "알 수 없는 시간" future: "미래" - just_now: "방금" + just_now: "방금 전" seconds_ago: "{}초 전" minutes_ago: "{}분 전" hours_ago: "{}시간 전" @@ -67,19 +67,19 @@ common: home: "홈" deck: "덱" timeline: "타임라인" - explore: "발견" + explore: "발견하기" following: "팔로우 중" followers: "팔로워" favorites: "즐겨찾기" permissions: - "read:account": "계정 정보 보기" - "write:account": "계정 정보 변경" - "read:blocks": "차단 보기" - "write:blocks": "차단 수정" - "read:drive": "드라이브 보기" - "write:drive": "드라이브 수정" - "read:favorites": "즐겨찾기 보기" - "write:favorites": "즐겨찾기 수정" + "read:account": "계정의 정보를 볼 수 있습니다." + "write:account": "계정의 정보를 변경할 수 있습니다." + "read:blocks": "차단 목록을 볼 수 있습니다." + "write:blocks": "차단 목록을 조작할 수 있습니다." + "read:drive": "드라이브의 파일들을 볼 수 있습니다." + "write:drive": "드라이브의 파일들을 조작할 수 있습니다." + "read:favorites": "즐겨찾기 목록을 볼 수 있습니다." + "write:favorites": "즐겨찾기 목록을 조작할 수 있습니다." "read:following": "팔로우 정보 보기" "write:following": "팔로잉, 팔로우 수정" "read:messaging": "대화 보기" @@ -550,6 +550,7 @@ common/views/components/poll-editor.vue: day: "일" common/views/components/reaction-picker.vue: choose-reaction: "리액션 선택" + input-reaction-placeholder: "또는 이모지 입력" common/views/components/emoji-picker.vue: custom-emoji: "커스텀 이모지" people: "사람들" @@ -705,6 +706,9 @@ common/views/components/user-group-editor.vue: users: "멤버" rename: "그룹명을 변경" delete: "그룹을 삭제" + transfer: "그룹을 양도" + transfer-are-you-sure: "그룹 「$1」을 「@$2」 님에게 양도하시겠습니까?" + transferred: "그룹을 양도하였습니다" remove-user: "이 그룹에서 삭제" delete-are-you-sure: "그룹 「$1」을 삭제하시겠습니까?" deleted: "삭제하였습니다" @@ -1152,6 +1156,7 @@ admin/views/instance.vue: mb: "메가바이트 단위" recaptcha-config: "reCAPCHA 설정" recaptcha-info: "reCAPCHA를 사용하도록 설정하는 경우 reCAPCHA 토큰을 확보해야 합니다. https://www.google.com/recaptcha/intro/ 에 접속하여 토큰을 가져와주십시오." + recaptcha-info2: "v3는지원하지 않습니다. v2를 사용하여 주십시오." enable-recaptcha: "reCAPCHA 활성화" recaptcha-site-key: "사이트 키" recaptcha-secret-key: "시크릿 키" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 8752bf3347..ec62f21b23 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -453,6 +453,7 @@ common/views/components/messaging.vue: group: "群组" start-with-user: "开始用户聊天" start-with-group: "开始群组聊天" + select-group: "请选择群组" common/views/components/messaging-room.vue: not-talked-user: "没有用户的会话记录" not-talked-group: "没有群组的会话记录" @@ -704,10 +705,14 @@ common/views/components/user-group-editor.vue: users: "成员" rename: "更改群组名" delete: "删除群组" + transfer: "群组转让" + transfer-are-you-sure: "将群组「$1」转让给「@$2」吗?" + transferred: "群组已转让" remove-user: "从本群组中删除" delete-are-you-sure: "确定要删除「$1」组?" deleted: "已删除" invite: "邀请" + invited: "邀请已发送" common/views/components/user-lists.vue: user-lists: "列表" create-list: "创建列表" @@ -716,7 +721,10 @@ common/views/components/user-groups.vue: user-groups: "群组" create-group: "创建群组" group-name: "群组名" + owned-groups: "我的群组" + joined-groups: "加入群组" invites: "邀请" + accept-invite: "加入" reject-invite: "拒绝" common/views/widgets/broadcast.vue: fetching: "确认中" @@ -1147,6 +1155,7 @@ admin/views/instance.vue: mb: "以兆字节(Mbps)为单位" recaptcha-config: "reCAPTCHA设置" recaptcha-info: "reCAPTCHA token是必要的. 请从 https://www.google.com/recaptcha/intro/ 获取。\n请注意, 该功能在中国大陆不可用。" + recaptcha-info2: "不支持v3。请使用v2。" enable-recaptcha: "启用 reCAPTCHA\n(请注意, 此功能在中国大陆不可用. 如果启用, 可能导致无法正常使用登录或注册等功能)" recaptcha-site-key: "网站密钥" recaptcha-secret-key: "密钥" diff --git a/migration/1556746559567-UserProfile.ts b/migration/1556746559567-UserProfile.ts index 719f8e1ae0..2dc7349cc1 100644 --- a/migration/1556746559567-UserProfile.ts +++ b/migration/1556746559567-UserProfile.ts @@ -3,21 +3,14 @@ import {MigrationInterface, QueryRunner} from "typeorm"; export class UserProfile1556746559567 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise