New Crowdin updates (#7046)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations aiscript.md (German)

* New translations theme.md (German)

* New translations reaction.md (German)

* New translations theme.md (German)

* New translations theme.md (German)

* New translations ja-JP.yml (German)

* New translations theme.md (German)

* New translations timelines.md (German)

* New translations ja-JP.yml (German)

* New translations mute.md (German)

* New translations timelines.md (German)

* New translations mute.md (German)

* New translations reaction.md (German)

* New translations pages.md (German)

* New translations reaction.md (German)

* New translations follow.md (German)

* New translations pages.md (German)

* New translations custom-emoji.md (German)

* New translations follow.md (German)

* New translations custom-emoji.md (English)

* New translations deck.md (German)

* New translations mfm.md (German)

* New translations create-plugin.md (German)

* New translations deck.md (German)

* New translations create-plugin.md (German)

* New translations create-plugin.md (English)

* New translations create-plugin.md (German)

* New translations keyboard-shortcut.md (German)

* New translations keyboard-shortcut.md (German)

* New translations create-plugin.md (German)

* New translations keyboard-shortcut.md (German)

* New translations create-plugin.md (German)

* New translations create-plugin.md (German)

* New translations reversi-bot.md (German)

* New translations create-plugin.md (English)

* New translations reversi-bot.md (English)

* New translations create-plugin.md (German)

* New translations reversi-bot.md (German)

* New translations reversi-bot.md (German)

* New translations stream.md (German)

* New translations reversi-bot.md (English)

* New translations reversi-bot.md (German)

* New translations reversi-bot.md (German)

* New translations reversi-bot.md (German)

* New translations reversi-bot.md (English)

* New translations reversi-bot.md (German)

* New translations reversi-bot.md (English)

* New translations reversi-bot.md (German)

* New translations reversi-bot.md (German)

* New translations reversi-bot.md (German)

* New translations pages.md (Chinese Simplified)

* New translations pages.md (Chinese Simplified)

* New translations pages.md (Chinese Simplified)

* New translations pages.md (Chinese Simplified)

* New translations reaction.md (Chinese Simplified)

* New translations reaction.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations ja-JP.yml (German)

* New translations api.md (German)

* New translations keyboard-shortcut.md (German)

* New translations api.md (German)

* New translations stream.md (German)

* New translations reversi-bot.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations stream.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations stream.md (Chinese Simplified)

* New translations ja-JP.yml (German)

* New translations reversi-bot.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations stream.md (Chinese Simplified)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations stream.md (German)

* New translations ja-JP.yml (German)

* New translations reversi-bot.md (German)

* New translations stream.md (German)

* New translations stream.md (German)

* New translations stream.md (German)

* New translations ja-JP.yml (Chinese Traditional)

* New translations stream.md (German)

* New translations ja-JP.yml (Chinese Traditional)

* New translations stream.md (German)

* New translations ja-JP.yml (Chinese Traditional)

* New translations stream.md (German)

* New translations ja-JP.yml (Chinese Traditional)

* New translations stream.md (English)

* New translations stream.md (German)

* New translations ja-JP.yml (Chinese Traditional)

* New translations stream.md (German)

* New translations stream.md (German)

* New translations stream.md (German)

* New translations stream.md (English)

* New translations stream.md (German)

* New translations api.md (German)

* New translations api.md (English)

* New translations api.md (German)

* New translations api.md (German)

* New translations api.md (English)

* New translations api.md (German)

* New translations api.md (German)

* New translations api.md (German)

* New translations ja-JP.yml (Chinese Traditional)

* New translations create-plugin.md (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations reversi-bot.md (Chinese Simplified)

* New translations reversi-bot.md (Chinese Simplified)

* New translations stream.md (Chinese Simplified)

* New translations stream.md (Chinese Simplified)

* New translations stream.md (Chinese Simplified)

* New translations stream.md (Chinese Simplified)

* New translations stream.md (Chinese Simplified)

* New translations stream.md (Chinese Simplified)

* New translations ja-JP.yml (Kabyle)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Polish)

* New translations custom-emoji.md (Polish)

* New translations mute.md (Polish)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Polish)

* New translations follow.md (Polish)

* New translations ja-JP.yml (Polish)

* New translations create-plugin.md (Polish)

* New translations reaction.md (Polish)

* New translations theme.md (Polish)

* New translations timelines.md (Polish)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Polish)

* New translations aiscript.md (Polish)

* New translations keyboard-shortcut.md (Polish)

* New translations pages.md (Polish)

* New translations reversi-bot.md (Polish)

* New translations stream.md (Polish)

* New translations theme.md (Polish)

* New translations ja-JP.yml (Polish)

* New translations timelines.md (Polish)

* New translations deck.md (Polish)

* New translations ja-JP.yml (Indonesian)

* New translations aiscript.md (Indonesian)

* New translations api.md (Indonesian)

* New translations create-plugin.md (Indonesian)

* New translations custom-emoji.md (Indonesian)

* New translations follow.md (Indonesian)

* New translations keyboard-shortcut.md (Indonesian)

* New translations mute.md (Indonesian)

* New translations pages.md (Indonesian)

* New translations reaction.md (Indonesian)

* New translations reversi-bot.md (Indonesian)

* New translations stream.md (Indonesian)

* New translations theme.md (Indonesian)

* New translations timelines.md (Indonesian)

* New translations deck.md (Indonesian)

* New translations mfm.md (Indonesian)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Indonesian)

* New translations keyboard-shortcut.md (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations reaction.md (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations mute.md (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations custom-emoji.md (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Indonesian)
This commit is contained in:
syuilo 2021-01-04 17:38:53 +09:00 committed by GitHub
parent 8f2cf066b6
commit a47358f590
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
63 changed files with 2295 additions and 551 deletions

View file

@ -184,7 +184,7 @@ clearCachedFiles: "Cache leeren"
clearCachedFilesConfirm: "Sollen alle im Cache gespeicherten Dateien von anderen Instanzen wirklich gelöscht werden?" clearCachedFilesConfirm: "Sollen alle im Cache gespeicherten Dateien von anderen Instanzen wirklich gelöscht werden?"
blockedInstances: "Blockierte Instanzen" blockedInstances: "Blockierte Instanzen"
blockedInstancesDescription: "Gib den Hostnamen der Instanz an, die blockiert werden soll. Blockierte Instanzen können nicht mehr mit dieser kommunizieren." blockedInstancesDescription: "Gib den Hostnamen der Instanz an, die blockiert werden soll. Blockierte Instanzen können nicht mehr mit dieser kommunizieren."
muteAndBlock: "Stummgeschaltet / Blockiert" muteAndBlock: "Stummschaltungen / Blockierungen"
mutedUsers: "Stummgeschaltete Benutzer" mutedUsers: "Stummgeschaltete Benutzer"
blockedUsers: "Blockierte Benutzer" blockedUsers: "Blockierte Benutzer"
noUsers: "Keine Benutzer" noUsers: "Keine Benutzer"
@ -245,7 +245,7 @@ nUsersRead: "Von {n} gelesen"
agreeTo: "Ich stimme {0} zu" agreeTo: "Ich stimme {0} zu"
tos: "Nutzungsbedingungen" tos: "Nutzungsbedingungen"
start: "Anfangen" start: "Anfangen"
home: "Home" home: "Startseite"
remoteUserCaution: "Diese Informationen sind möglicherweise veraltet, da der Benutzer von einer anderen Instanz stammt." remoteUserCaution: "Diese Informationen sind möglicherweise veraltet, da der Benutzer von einer anderen Instanz stammt."
activity: "Aktivität" activity: "Aktivität"
images: "Bilder" images: "Bilder"
@ -318,7 +318,7 @@ enableRegistration: "Registration neuer Benutzer erlauben"
invite: "Einladen" invite: "Einladen"
proxyRemoteFiles: "Dateien anderer Instanzen durch Proxy leiten" proxyRemoteFiles: "Dateien anderer Instanzen durch Proxy leiten"
proxyRemoteFilesDescription: "Wenn diese Einstellung aktiviert ist, dann werden Dateien von anderen Instanzen, welche entweder nicht lokal gespeichert sind oder durch Überschreiten des Speicherlimits gelöscht wurden, durch einen Proxy geleitet. Hierbei wird auch ein Vorschaubild generiert. \n Dies hat keinen Effekt auf den Speicherplatz des Servers." proxyRemoteFilesDescription: "Wenn diese Einstellung aktiviert ist, dann werden Dateien von anderen Instanzen, welche entweder nicht lokal gespeichert sind oder durch Überschreiten des Speicherlimits gelöscht wurden, durch einen Proxy geleitet. Hierbei wird auch ein Vorschaubild generiert. \n Dies hat keinen Effekt auf den Speicherplatz des Servers."
driveCapacityPerLocalAccount: "Drivekapazität pro lokales Benutzerkonto" driveCapacityPerLocalAccount: "Drive-Kapazität pro lokales Benutzerkonto"
driveCapacityPerRemoteAccount: "Drive-Kapazität pro Benutzer anderer Instanzen" driveCapacityPerRemoteAccount: "Drive-Kapazität pro Benutzer anderer Instanzen"
inMb: "In Megabytes" inMb: "In Megabytes"
iconUrl: "Icon-URL" iconUrl: "Icon-URL"
@ -493,7 +493,7 @@ showFixedPostForm: "Bereich zum Schreiben neuer Notizen am Anfang der Chronik an
newNoteRecived: "Es gibt neue Notizen" newNoteRecived: "Es gibt neue Notizen"
sounds: "Töne" sounds: "Töne"
listen: "Anhören" listen: "Anhören"
none: "Keine" none: "Nichts"
showInPage: "In Seite anzeigen" showInPage: "In Seite anzeigen"
popout: "Pop-Up" popout: "Pop-Up"
volume: "Lautstärke" volume: "Lautstärke"
@ -538,7 +538,7 @@ invisibleNote: "Private Notiz"
enableInfiniteScroll: "Automatisch mehr Notizen laden" enableInfiniteScroll: "Automatisch mehr Notizen laden"
visibility: "Sichtbarkeit" visibility: "Sichtbarkeit"
poll: "Umfrage" poll: "Umfrage"
useCw: "Inhalt verstecken" useCw: "Inhalt verdecken"
enablePlayer: "Video-Player öffnen" enablePlayer: "Video-Player öffnen"
disablePlayer: "Video-Player schließen" disablePlayer: "Video-Player schließen"
expandTweet: "Tweet ausklappen" expandTweet: "Tweet ausklappen"
@ -564,7 +564,7 @@ enableAll: "Alle aktivieren"
disableAll: "Alle deaktivieren" disableAll: "Alle deaktivieren"
tokenRequested: "Benutzerkontozugriff gewähren" tokenRequested: "Benutzerkontozugriff gewähren"
pluginTokenRequestedDescription: "Dieses Plugin wird die hier konfigurierten Berechtigungen verwenden können." pluginTokenRequestedDescription: "Dieses Plugin wird die hier konfigurierten Berechtigungen verwenden können."
notificationType: "Benachrichtigungstyp" notificationType: "Benachrichtigungsart"
edit: "Bearbeiten" edit: "Bearbeiten"
useStarForReactionFallback: "Verwende ★ falls das Reaktions-Emoji unbekannt ist" useStarForReactionFallback: "Verwende ★ falls das Reaktions-Emoji unbekannt ist"
emailConfig: "Email-Server Konfiguration" emailConfig: "Email-Server Konfiguration"
@ -699,7 +699,7 @@ _mfm:
hashtag: "Hashtag" hashtag: "Hashtag"
hashtagDescription: "Mit einer Raute und Text kann ein Hashtag angegeben werden." hashtagDescription: "Mit einer Raute und Text kann ein Hashtag angegeben werden."
url: "URL" url: "URL"
urlDescription: "URLs können angezeigt werden." urlDescription: "Zeigt URLs an."
link: "Link" link: "Link"
linkDescription: "Ein spezifizierter Textabschnitt kann als URL angezeigt werden." linkDescription: "Ein spezifizierter Textabschnitt kann als URL angezeigt werden."
bold: "Fett" bold: "Fett"
@ -746,6 +746,8 @@ _mfm:
x4Description: "Lässt Inhalte noch größer als größer als groß angezeigt werden." x4Description: "Lässt Inhalte noch größer als größer als groß angezeigt werden."
blur: "Weichzeichner" blur: "Weichzeichner"
blurDescription: "Inhalte durch Weihzeichnung verschwimmen lassen. Durch das Bewegen des Mauszeigers auf den Inhalt wird er klar angezeigt." blurDescription: "Inhalte durch Weihzeichnung verschwimmen lassen. Durch das Bewegen des Mauszeigers auf den Inhalt wird er klar angezeigt."
font: "Schriftart"
fontDescription: "Setzt die Schriftart des Inhaltes fest."
_reversi: _reversi:
reversi: "Reversi" reversi: "Reversi"
gameSettings: "Spieleinstellungen" gameSettings: "Spieleinstellungen"
@ -830,7 +832,7 @@ _theme:
refConst: "Konstante referenzieren" refConst: "Konstante referenzieren"
key: "Schlüssel" key: "Schlüssel"
func: "Funktionen" func: "Funktionen"
funcKind: "Funktionstyp" funcKind: "Funktionsart"
argument: "Parameter" argument: "Parameter"
basedProp: "Referenzierte Eigenschaft" basedProp: "Referenzierte Eigenschaft"
alpha: "Transparenz" alpha: "Transparenz"
@ -867,9 +869,9 @@ _theme:
infoFg: "Text von Informationen" infoFg: "Text von Informationen"
infoWarnBg: "Hintergrund von Warnungen" infoWarnBg: "Hintergrund von Warnungen"
infoWarnFg: "Text von Informationen" infoWarnFg: "Text von Informationen"
cwBg: "Hintergrund von versteckten Inhalten" cwBg: "Hintergrund von verdeckten Inhalten"
cwFg: "Text von versteckten Inhalten" cwFg: "Text von verdeckten Inhalten"
cwHoverBg: "Hintergrund von versteckten Inhalten (Mouseover)" cwHoverBg: "Hintergrund von verdeckten Inhalten (Mouseover)"
toastBg: "Hintergrund von Benachrichtigungen" toastBg: "Hintergrund von Benachrichtigungen"
toastFg: "Text von Benachrichtigungen" toastFg: "Text von Benachrichtigungen"
buttonBg: "Hintergrund von Schaltflächen" buttonBg: "Hintergrund von Schaltflächen"
@ -1007,6 +1009,7 @@ _widgets:
slideshow: "Diashow" slideshow: "Diashow"
button: "Knopf" button: "Knopf"
onlineUsers: "Benutzer die Online sind" onlineUsers: "Benutzer die Online sind"
serverMetric: "Servermetriken"
_cw: _cw:
hide: "Ausblenden" hide: "Ausblenden"
show: "Mehr anzeigen" show: "Mehr anzeigen"
@ -1116,7 +1119,7 @@ _rooms:
clearConfirm: "Möchtest du wirklich alle Möbel entfernen?" clearConfirm: "Möchtest du wirklich alle Möbel entfernen?"
leaveConfirm: "Es gibt ungespeicherte Änderungen. Möchtest du wirklich gehen?" leaveConfirm: "Es gibt ungespeicherte Änderungen. Möchtest du wirklich gehen?"
chooseImage: "Bild auswählen" chooseImage: "Bild auswählen"
roomType: "Raumtyp" roomType: "Raumart"
carpetColor: "Teppichfarbe" carpetColor: "Teppichfarbe"
_roomType: _roomType:
default: "Standard" default: "Standard"

View file

@ -79,7 +79,7 @@ error: "Error"
somethingHappened: "An error occurred" somethingHappened: "An error occurred"
retry: "Retry" retry: "Retry"
pageLoadError: "Failed to load page" pageLoadError: "Failed to load page"
pageLoadErrorDescription: "This is normally caused by network errors or the browser's cache. Try clearung the cache and then try again after waiting a little while." pageLoadErrorDescription: "This is normally caused by network errors or the browser's cache. Try clearing the cache and then try again after waiting a little while."
enterListName: "List name" enterListName: "List name"
privacy: "Privacy" privacy: "Privacy"
makeFollowManuallyApprove: "Follow requests require approval" makeFollowManuallyApprove: "Follow requests require approval"
@ -747,6 +747,7 @@ _mfm:
blur: "Blur" blur: "Blur"
blurDescription: "Content can be blurred via this effect. It will be clearly displayed by hovering your cursor above it." blurDescription: "Content can be blurred via this effect. It will be clearly displayed by hovering your cursor above it."
font: "Font" font: "Font"
fontDescription: "Sets the font to display contents in."
_reversi: _reversi:
reversi: "Reversi" reversi: "Reversi"
gameSettings: "Game settings" gameSettings: "Game settings"
@ -1008,6 +1009,7 @@ _widgets:
slideshow: "Slideshow" slideshow: "Slideshow"
button: "Button" button: "Button"
onlineUsers: "Online users" onlineUsers: "Online users"
serverMetric: "Server metrics"
_cw: _cw:
hide: "Hide" hide: "Hide"
show: "Load more" show: "Load more"

View file

@ -665,6 +665,7 @@ _mfm:
search: "Buscar" search: "Buscar"
flip: "Echar de un capirotazo" flip: "Echar de un capirotazo"
flipDescription: "Voltea el contenido hacia arriba / abajo o hacia la izquierda / derecha." flipDescription: "Voltea el contenido hacia arriba / abajo o hacia la izquierda / derecha."
font: "Fuente"
_reversi: _reversi:
reversi: "Reversi" reversi: "Reversi"
gameSettings: "Configuración del juego" gameSettings: "Configuración del juego"

207
locales/id-ID.yml Normal file
View file

@ -0,0 +1,207 @@
---
_lang_: "Bahasa Jepang"
monthAndDay: "{day} {month}"
search: "Pencarian"
notifications: "Notifikasi"
username: "Nama Pengguna"
password: "Kata sandi"
ok: "OK"
gotIt: "Saya mengerti"
cancel: "Batalkan"
enterUsername: "Masukkan nama pengguna"
renotedBy: "direnote oleh {user}"
noNotes: "Tidak ada notes"
noNotifications: "Tidak ada notifikasi"
settings: "Pengaturan"
basicSettings: "Pengaturan umum"
otherSettings: "Pengaturan lainnya"
openInWindow: "Buka di jendela"
profile: "Profil"
timeline: "Linimasa"
noAccountDescription: "Pengguna ini belum menulis bio"
login: "Masuk"
loggingIn: "Sedang masuk"
logout: "Keluar"
signup: "Daftar"
uploading: "Sedang mengunggah"
save: "Simpan"
users: "Pengguna"
addUser: "Tambah pengguna"
favorite: "Favorit"
favorites: "Favorit"
unfavorite: "Hapus favorit"
favorited: "Ditambahkan ke favorit"
alreadyFavorited: "Telah ditambahkan ke favorit"
cantFavorite: "Tidak dapat menambahkan ke favorit"
pin: "Sematkan ke profil"
unpin: "Lepas sematan dari profil"
copyContent: "Salin konten"
copyLink: "Salin tautan"
delete: "Hapus"
deleteAndEdit: "Hapus dan sunting"
addToList: "Tambahkan ke daftar"
sendMessage: "Kirim pesan"
copyUsername: "Salin nama pengguna"
searchUser: "Cari pengguna"
reply: "Balas"
cantReRenote: "Renote tidak dapat direnote"
quote: "Kutip"
pinnedNote: "Note yang disematkan"
you: "Anda"
clickToShow: "Klik untuk melihat"
sensitive: "Konten sensitif"
add: "Tambahkan"
reaction: "Reaksi"
reactionSettingDescription: "Masukkan reaksi favorit yang ingin anda sematkan pada bilah reaksi"
reactionSettingDescription2: "Geser untuk memindah urutkan, klik untuk menghapus, tekan \"+\" untuk menambahkan"
rememberNoteVisibility: "Ingat pengaturan visibilitas note"
attachCancel: "Hapus lampiran"
markAsSensitive: "Tandai sebagai konten sensitif"
unmarkAsSensitive: "Hapus tanda konten sensitif"
enterFileName: "Masukkan nama berkas"
mute: "Bisukan"
unmute: "Hapus bisukan"
block: "Blokir"
unblock: "Buka blokir"
suspend: "Bekukan"
unsuspend: "Buka pembekuan"
blockConfirm: "Apakah anda yakin ingin memblokir akun ini?"
unblockConfirm: "Apakah anda yakin ingin membuka blokir akun ini?"
suspendConfirm: "Apakah anda yakin ingin membekukan akun ini?"
unsuspendConfirm: "Apakah anda yakin ingin membuka pembekuan akun ini?"
selectList: "Pilih daftar"
selectAntenna: "Pilih Antena"
selectWidget: "Pilih gawit"
editWidgets: "Sunting gawit"
editWidgetsExit: "Selesai"
customEmojis: "Emoji kustom"
emoji: "Emoji"
emojiName: "Nama emoji"
emojiUrl: "URL Emoji"
addEmoji: "Tambahkan emoji"
settingGuide: "Pengaturan rekomendasi"
cacheRemoteFiles: "Tembolokkan berkas remote"
flagAsBot: "Atur akun ini sebagai Bot"
flagAsCat: "Atur akun ini sebagai kucing"
autoAcceptFollowed: "Setujui otomatis permintaan mengikuti dari pengguna yang anda ikuti"
addAcount: "Tambahkan akun"
loginFailed: "Gagal untuk masuk"
showOnRemote: "Lihat profil asli"
general: "Umum"
wallpaper: "Wallpaper"
setWallpaper: "Atur wallpaper"
removeWallpaper: "Hapus wallpaper"
intro: "Instalasi Misskey telah selesai! Mohon untuk membuat pengguna admin."
done: "Selesai"
processing: "Memproses"
preview: "Pratinjau"
default: "Bawaan"
noCustomEmojis: "Tidak ada emoji kustom"
federating: "memfederasi"
blocked: "Diblokir"
all: "Semua"
subscribing: "Berlangganan"
publishing: "Sedang menyiarkan langsung"
notResponding: "Tidak ada respon"
instanceFollowing: "Mengikuti instance"
instanceFollowers: "Pengikut instance"
instanceUsers: "Pengguna pada instance ini"
changePassword: "Ubah kata sandi"
security: "Keamanan"
retypedNotMatch: "Input tidak sama"
currentPassword: "Kata sandi saat ini"
newPassword: "Kata sandi baru"
newPasswordRetype: "Ulangi kata sandi baru"
attachFile: "Lampirkan berkas"
more: "Lagi !"
featured: "Sorotan"
usernameOrUserId: "Nama pengguna atau User ID"
noSuchUser: "Pengguna tidak ditemukan"
lookup: "Mencari"
announcements: "Pengumuman"
imageUrl: "URL Gambar"
remove: "Hapus"
removed: "Telah dihapus"
removeAreYouSure: "Apakah anda yakin ingin menghapus \"{x}\"?"
deleteAreYouSure: "Apakah anda yakin ingin menghapus \"{x}\"?"
saved: "Telah disimpan"
messaging: "Pesan"
upload: "Unggah"
fromDrive: "Dari Drive"
fromUrl: "Dari URL"
uploadFromUrl: "Unggah dari URL"
uploadFromUrlDescription: "URL berkas yang ingin anda unggah"
uploadFromUrlRequested: "Pengunggahan telah diminta"
uploadFromUrlMayTakeTime: "Membutuhkan beberapa waktu hingga pengunggahan selesai"
explore: "Jelajahi"
games: "Permainan Misskey"
messageRead: "Telah dibaca"
noMoreHistory: "Tidak ada sejarah lagi"
startMessaging: "Mulai mengirim pesan"
nUsersRead: "Dibaca oleh {n}"
nsfw: "Konten sensitif"
watch: "Tonton"
unwatch: "Batal tonton"
accept: "Terima"
reject: "Tolak"
normal: "Normal"
instanceName: "Nama instance"
instanceDescription: "Tentang instance"
maintainerName: "Pengelola"
maintainerEmail: "Surel pengelola"
tosUrl: "URL Syarat dan Ketentuan"
thisYear: "Tahun ini"
thisMonth: "Bulan ini"
today: "Hari ini"
dayX: "{day}"
monthX: "{month}"
yearX: "{year}"
pages: "Halaman"
integration: "Integrasi"
connectSerice: "Sambungkan"
disconnectSerice: "Putuskan"
enableLocalTimeline: "Nyalakan linimasa lokal"
enableGlobalTimeline: "Nyalakan linimasa global"
registration: "Pendaftaran"
enableRegistration: "Nyalakan pendaftaran pengguna baru"
invite: "Undang"
proxyRemoteFiles: "Proksi berkas remote"
driveCapacityPerLocalAccount: "Kapasitas drive per pengguna lokal"
driveCapacityPerRemoteAccount: "Kapasitas drive per pengguna remote"
inMb: "dalam Megabytes"
iconUrl: "URL Gambar ikon"
bannerUrl: "URL Banner"
basicInfo: "Informasi Umum"
pinnedUsers: "Pengguna yang disematkan"
pinnedPages: "Halaman yang disematkan"
pinnedNotes: "Note yang disematkan"
invites: "Undang"
invitations: "Undang"
smtpUser: "Nama Pengguna"
smtpPass: "Kata sandi"
_mfm:
quote: "Kutip"
emoji: "Emoji kustom"
search: "Pencarian"
_sfx:
notification: "Notifikasi"
chat: "Pesan"
_widgets:
notifications: "Notifikasi"
timeline: "Linimasa"
_profile:
username: "Nama Pengguna"
_exportOrImport:
muteList: "Bisukan"
blockingList: "Blokir"
_rooms:
_roomType:
default: "Bawaan"
_notification:
_types:
quote: "Kutip"
reaction: "Reaksi"
_deck:
_columns:
notifications: "Notifikasi"
tl: "Linimasa"

View file

@ -39,6 +39,7 @@ smtpPass: "Awal uffir"
_mfm: _mfm:
mention: "Bder" mention: "Bder"
search: "Nadi" search: "Nadi"
font: "Tasefsit"
_theme: _theme:
keys: keys:
mention: "Bder" mention: "Bder"

View file

@ -644,6 +644,7 @@ _mfm:
flip: "플립" flip: "플립"
flipDescription: "내용을 상하 또는 좌우로 반전시킵니다." flipDescription: "내용을 상하 또는 좌우로 반전시킵니다."
jump: "애니메이션(점프)" jump: "애니메이션(점프)"
font: "폰트"
_reversi: _reversi:
reversi: "리버시" reversi: "리버시"
gameSettings: "대국 설정" gameSettings: "대국 설정"

View file

@ -1,23 +1,608 @@
--- ---
_lang_: "język polski" _lang_: "język polski"
headlineMisskey: "Sieć połączona wpisami"
monthAndDay: "{month}-{day}"
search: "Szukaj" search: "Szukaj"
notifications: "Powiadomienia" notifications: "Powiadomienia"
username: "Nazwa użytkownika" username: "Nazwa użytkownika"
password: "Hasło" password: "Hasło"
fetchingAsApObject: "Pobieranie z Fediwersum…"
ok: "OK" ok: "OK"
gotIt: "Rozumiem!" gotIt: "Rozumiem!"
cancel: "Anuluj" cancel: "Anuluj"
enterUsername: "Wprowadź nazwę użytkownika" enterUsername: "Wprowadź nazwę użytkownika"
renotedBy: "Udostępniono przez {user}"
noNotes: "Brak wpisów"
noNotifications: "Brak powiadomień"
instance: "Instancja"
settings: "Ustawienia"
basicSettings: "Podstawowe ustawienia"
otherSettings: "Pozostałe ustawienia"
openInWindow: "Otwórz w oknie"
profile: "Profil"
timeline: "Oś czasu"
noAccountDescription: "Ten użytkownik nie napisał jeszcze swojej biografii."
login: "Zaloguj się"
loggingIn: "Logowanie"
logout: "Wyloguj się"
signup: "Zarejestruj się"
uploading: "Wysyłanie"
save: "Zapisz"
users: "Użytkownicy"
addUser: "Dodaj użytkownika"
favorite: "Dodaj do ulubionych"
favorites: "Ulubione"
unfavorite: "Usuń z ulubionych"
favorited: "Dodano do ulubionych."
alreadyFavorited: "Już jest w ulubionych."
cantFavorite: "Nie można dodać do ulubionych."
pin: "Przypnij do profilu"
unpin: "Odepnij z profilu"
copyContent: "Skopiuj zawartość"
copyLink: "Skopiuj odnośnik"
delete: "Usuń"
deleteAndEdit: "Usuń i edytuj"
deleteAndEditConfirm: "Czy na pewno chcesz usunąć ten wpis i zedytować go? Utracisz wszystkie reakcje, udostępnienia i odpowiedzi do tego wpisu."
addToList: "Dodaj do listy"
sendMessage: "Wyślij wiadomość"
copyUsername: "Kopiuj nazwę użytkownika"
searchUser: "Wyszukiwanie użytkowników"
reply: "Odpowiedz"
loadMore: "Załaduj więcej"
showMore: "Załaduj więcej"
youGotNewFollower: "Zaobserwował(a) Cię"
receiveFollowRequest: "Otrzymano prośbę o możliwość obserwacji"
followRequestAccepted: "Zaakceptowano prośbę o możliwość obserwacji"
mention: "Wspomnij"
mentions: "Wspomnienia"
directNotes: "Bezpośrednie wpisy"
importAndExport: "Import i eksport"
import: "Importuj"
export: "Eksportuj"
files: "Pliki"
download: "Pobierz"
lists: "Listy"
noLists: "Nie masz żadnych list"
note: "Wpis"
notes: "Wpisy"
following: "Obserwowani"
followers: "Obserwujący"
followsYou: "Obserwuje Cię"
createList: "Utwórz listę"
manageLists: "Zarządzaj listami"
error: "Błąd"
somethingHappened: "Coś poszło nie tak"
retry: "Spróbuj ponownie"
pageLoadError: "Nie udało się załadować strony"
pageLoadErrorDescription: "Zwykle jest to spowodowane problemem z siecią lub cache przeglądarki. Spróbuj wyczyścić cache i sprawdź jeszcze raz za chwilę."
enterListName: "Nazwa listy"
privacy: "Prywatność"
makeFollowManuallyApprove: "Prośby o możliwość obserwacji wymagają zatwierdzenia"
defaultNoteVisibility: "Domyślna widoczność"
follow: "Obserwowani"
followRequest: "Poproś o możliwość obserwacji"
followRequests: "Prośby o możliwość obserwacji"
unfollow: "Przestań obserwować"
followRequestPending: "Oczekująca prośba o możliwość obserwacji"
enterEmoji: "Wprowadź emoji"
renote: "Udostępnij"
unrenote: "Cofnij udostępnienie"
renoted: "Udostępniono."
cantRenote: "Ten wpis nie może zostać udostępniony."
cantReRenote: "Udostępnienie nie może zostać udostępnione."
quote: "Cytuj"
pinnedNote: "Przypięty wpis"
you: "Ty"
clickToShow: "Kliknij, aby wyświetlić"
sensitive: "NSFW"
add: "Dodaj"
reaction: "Reakcja"
reactionSettingDescription: "Przypisz swoje ulubione reakcje, które chcesz przypiąć w wyborze reakcji."
reactionSettingDescription2: "Przeciągnij aby zmienić kolejność, naciśnij aby usunąć, naciśnij „+” aby dodać"
rememberNoteVisibility: "Zapamiętuj ustawienia widoczności wpisu"
attachCancel: "Usuń załącznik"
markAsSensitive: "Oznacz jako NSFW"
unmarkAsSensitive: "Cofnij NSFW"
enterFileName: "Wprowadź nazwę pliku"
mute: "Wycisz"
unmute: "Cofnij wyciszenie"
block: "Zablokuj"
unblock: "Odblokuj"
suspend: "Zawieś"
unsuspend: "Cofnij zawieszenie"
blockConfirm: "Czy na pewno chcesz zablokować to konto?"
unblockConfirm: "Czy na pewno chcesz odblokować to konto?"
suspendConfirm: "Czy na pewno chcesz zawiesić to konto?"
unsuspendConfirm: "Czy na pewno chcesz cofnąć zawieszenie tego konta?"
selectList: "Wybierz listę"
selectAntenna: "Wybierz Antennę"
selectWidget: "Wybierz widżet"
editWidgets: "Edytuj widżet"
editWidgetsExit: "Gotowe"
customEmojis: "Niestandardowe emoji"
emoji: "Emoji"
emojiName: "Nazwa emoji"
emojiUrl: "Adres URL emoji"
addEmoji: "Dodaj emoji"
settingGuide: "Proponowana konfiguracja"
cacheRemoteFiles: "Przechowuj zdalne pliki w pamięci podręcznej"
flagAsBot: "To konto jest botem"
flagAsCat: "To konto jest kotem"
flagAsCatDescription: "Przełącz tę opcję, aby konto było oznaczone jako kot."
autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od użytkowników, których obserwujesz"
addAcount: "Dodaj konto"
loginFailed: "Nie udało się zalogować"
showOnRemote: "Zobacz na zdalnej instancji"
general: "Ogólne"
wallpaper: "Tapeta"
setWallpaper: "Ustaw tapetę"
removeWallpaper: "Usuń tapetę"
searchWith: "Szukaj: {q}"
youHaveNoLists: "Nie masz żadnej listy"
followConfirm: "Czy na pewno chcesz zaobserwować {name}?"
proxyAccount: "Konto proxy"
host: "Host"
selectUser: "Wybierz użytkownika"
recipient: "Odbiorca"
annotation: "Komentarze"
federation: "Federacja"
instances: "Instancja"
registeredAt: "Zarejestrowano"
latestRequestSentAt: "Ostatnie żądanie wysłano o"
latestRequestReceivedAt: "Ostatnie żądanie otrzymano o"
latestStatus: "Najnowszy status"
storageUsage: "Użycie pamięci"
charts: "Wykresy"
perHour: "co godzinę"
perDay: "co dzień"
stopActivityDelivery: "Przestań przesyłać aktywności"
blockThisInstance: "Zablokuj tę instancję"
operations: "Działania"
software: "Oprogramowanie"
version: "Wersja"
metadata: "Metadane"
withNFiles: "{n} plik(i)"
monitor: "Monitor"
jobQueue: "Kolejka zadań"
cpuAndMemory: "CPU i pamięć"
network: "Sieć"
disk: "Dysk"
instanceInfo: "Informacje o instancji"
statistics: "Statystyki"
clearQueue: "Wyczyść kolejkę"
clearQueueConfirmTitle: "Czy na pewno chcesz wyczyścić kolejkę?"
done: "Gotowe"
processing: "Przetwarzanie"
federating: "Federowanie"
suspended: "Zawieszono"
all: "Wszystkie"
subscribing: "Subskrybowanie"
publishing: "Publikowanie"
notResponding: "Nie odpowiada"
instanceFollowing: "Obserwowani na instancji"
instanceFollowers: "Obserwujący na instancji"
instanceUsers: "Użytkownicy tej instancji"
more: "Więcej!"
usernameOrUserId: "Nazwa lub id użytkownika"
noSuchUser: "Nie znaleziono użytkownika"
announcements: "Ogłoszenia"
imageUrl: "Adres URL obrazka"
remove: "Usuń"
removed: "Pomyślnie usunięto"
removeAreYouSure: "Czy na pewno chcesz usunąć „{x}”?"
deleteAreYouSure: "Czy na pewno chcesz usunąć „{x}”?"
resetAreYouSure: "Czy na pewno chcesz zresetować?"
saved: "Zapisano"
messaging: "Wiadomości"
upload: "Wyślij"
fromDrive: "Z dysku"
fromUrl: "Z adresu URL"
uploadFromUrl: "Wyślij z adresu URL"
uploadFromUrlDescription: "Adres URL pliku, który chcesz wysłać"
uploadFromUrlRequested: "Zażądano wysłania"
explore: "Eksploruj"
games: "Gry Misskey"
messageRead: "Przeczytano"
noMoreHistory: "Nie ma dalszej historii"
startMessaging: "Rozpocznij czat"
nUsersRead: "przeczytano przez {n}"
agreeTo: "Wyrażam zgodę na {0}"
tos: "Regulamin"
start: "Rozpocznij"
home: "Strona główna"
activity: "Aktywność"
images: "Zdjęcia"
birthday: "Data urodzenia"
yearsOld: "{age} lat"
registeredDate: "Zarejestrowano"
location: "Lokalizacja"
theme: "Motywy"
themeForLightMode: "Motyw używany w trybie jasnym"
themeForDarkMode: "Motyw używany w trybie ciemnym"
light: "Jasny"
dark: "Ciemny"
lightThemes: "Jasny motyw"
darkThemes: "Ciemny motyw"
syncDeviceDarkMode: "Synchronizuj ciemny motyw z ustawieniami urządzenia"
drive: "Dysk"
fileName: "Nazwa pliku"
selectFile: "Wybierz plik"
selectFiles: "Wybierz pliki"
selectFolder: "Wybierz folder"
selectFolders: "Wybierz foldery"
renameFile: "Zmień nazwę pliku"
avatar: "Awatar"
banner: "Baner"
nsfw: "NSFW"
accept: "Akceptuj"
reject: "Odrzuć"
normal: "Normalny"
thisYear: "Rok"
thisMonth: "Miesiąc"
today: "Dziś"
pages: "Strony"
integration: "Integracja"
connectSerice: "Połącz"
disconnectSerice: "Rozłącz"
registration: "Zarejestruj się"
invite: "Zaproś"
inMb: "W megabajtach"
iconUrl: "Adres URL ikony"
bannerUrl: "Adres URL banera"
basicInfo: "Podstawowe informacje"
pinnedUsers: "Przypięty użytkownik"
pinnedPages: "Przypięte strony"
pinnedNotes: "Przypięty wpis"
hcaptcha: "hCaptcha"
enableHcaptcha: "Włącz hCaptcha"
hcaptchaSiteKey: "Klucz strony"
hcaptchaSecretKey: "Tajny klucz"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Włącz reCAPTCHA"
recaptchaSiteKey: "Klucz strony"
recaptchaSecretKey: "Tajny klucz"
antennas: "Anteny"
manageAntennas: "Zarządzaj Antenami"
name: "Nazwa"
antennaSource: "Źródło Anteny"
userList: "Listy"
about: "Informacje"
administrator: "Admin"
token: "Token"
share: "Udostępnij"
help: "Pomoc"
close: "Zamknij"
invites: "Zaproś"
transfer: "Transfer"
title: "Tytuł"
text: "Tekst"
retype: "Wprowadź ponownie"
invitations: "Zaproś"
tags: "Tagi"
regenerate: "Wygeneruj ponownie"
local: "Lokalne"
total: "Łącznie"
weekOverWeekChanges: "Cotygodniowo"
dayOverDayChanges: "Codziennie"
numberOfDays: "Liczba dni"
listen: "Słuchaj"
none: "Brak"
volume: "Głośność"
details: "Szczegóły"
state: "Stan"
sort: "Sortuj"
ascendingOrder: "Rosnąco"
descendingOrder: "Malejąco"
output: "Wyjście"
divider: "Rozdzielacz"
rooms: "Pokój"
relays: "Przekaźniki"
description: "Opis"
author: "Autor"
manage: "Zarządzanie"
deck: "Tablica"
height: "Wysokość"
permission: "Uprawnienia"
edit: "Edytuj"
email: "Adres e-mail"
smtpHost: "Host"
smtpPort: "Port"
smtpUser: "Nazwa użytkownika" smtpUser: "Nazwa użytkownika"
smtpPass: "Hasło" smtpPass: "Hasło"
display: "Wyświetlanie"
copy: "Kopiuj"
overview: "Przegląd"
logs: "Dzienniki"
delayed: "Opóźnione"
create: "Utwórz"
other: "Inne"
behavior: "Zachowanie"
abuseReports: "Zgłoszenia"
reportAbuse: "Zgłoś"
send: "Wyślij"
optional: "Nieobowiązkowe"
yes: "Tak"
no: "Nie"
notSet: "Nie ustawiono"
contact: "Kontakt"
duplicate: "Duplikuj"
center: "Wyśsrodkuj"
wide: "Szerokie"
narrow: "Wąskie"
_aboutMisskey:
patrons: "Wspierający"
_mfm: _mfm:
mention: "Wspomnij"
url: "Adres URL"
link: "Odnośnik"
bold: "Pogrubienie"
quote: "Cytuj"
emoji: "Niestandardowe emoji"
search: "Szukaj" search: "Szukaj"
flip: "Odwróć"
font: "Czcionka"
_reversi:
rules: "Zasady"
surrender: "Poddaj się"
total: "Łącznie"
ended: "Zakończono"
playing: "W trakcie gry"
_channel:
featured: "Na czasie"
owned: "Własny"
_sidebar:
full: "Pełne"
icon: "Awatar"
hide: "Ukryj"
_wordMute:
soft: "Łagodny"
hard: "Twardy"
_theme:
base: "Podstawowy"
constant: "Stała"
key: "Klucz"
func: "Funkcje"
argument: "Argument"
darken: "Ściemnij"
lighten: "Rozjaśnij"
keys:
bg: "Tło"
fg: "Tekst"
panel: "Panel"
link: "Odnośnik"
mention: "Wspomnij"
renote: "Udostępnij"
divider: "Rozdzielacz"
badge: "Odznaka"
_sfx: _sfx:
note: "Wpisy"
notification: "Powiadomienia" notification: "Powiadomienia"
chat: "Wiadomości"
_ago:
unknown: "Nieznane"
future: "W przyszłości"
justNow: "Przed chwilą"
yearsAgo: "{n} lat temu"
_permissions:
"write:votes": "Głosowanie w ankiecie"
_weekday:
sunday: "Niedziela"
monday: "Poniedziałek"
tuesday: "Wtorek"
wednesday: "Środa"
thursday: "Czwartek"
friday: "Piątek"
saturday: "Sobota"
_widgets: _widgets:
memo: "Przypięte notatki"
notifications: "Powiadomienia" notifications: "Powiadomienia"
timeline: "Oś czasu"
trends: "Na czasie"
clock: "Zegar"
activity: "Aktywność"
photos: "Zdjęcia"
federation: "Federacja"
button: "Przycisk"
_cw:
hide: "Ukryj"
show: "Załaduj więcej"
_poll:
expiration: "Ankieta kończy się"
infinite: "Nigdy"
deadlineDate: "Data zakończenia"
duration: "Czas trwania"
votesCount: "{} głosów"
vote: "Głosowanie w ankiecie"
voted: "Zagłosowano"
closed: "Zakończono"
_visibility:
home: "Strona główna"
followers: "Obserwujący"
_profile: _profile:
name: "Nazwa"
username: "Nazwa użytkownika" username: "Nazwa użytkownika"
description: "Biografia"
metadataLabel: "Etykieta"
metadataContent: "Treść"
_exportOrImport:
followingList: "Obserwowani"
muteList: "Wycisz"
blockingList: "Zablokuj"
userLists: "Listy"
_timelines:
home: "Strona główna"
local: "Lokalne"
_rooms:
translate: "Przenieś"
rotate: "Obróć"
exit: "Wróć"
remove: "Usuń"
clear: "Usuń wszystkie"
carpetColor: "Kolor dywanu"
_roomType:
washitsu: "W japońskim stylu"
_furnitures:
bed: "Łóżko"
desk: "Biurko"
chair: "Krzesło"
fan: "Chłodzenie"
pencil: "Ołówek"
pudding: "Budyń"
book2: "Książka 2"
piano: "Fortepian"
monitor: "Monitor"
photoframe: "Ramka do zdjęć"
tv: "Telewizor"
sofa: "Kanapa"
bin: "Kosz"
banknote: "Banknot"
_pages:
like: "Lubię"
featured: "Wyróżnione"
variables: "Zmienne"
title: "Tytuł"
font: "Czcionka"
fontSerif: "Szeryfowa"
inputBlocks: "Wejście"
specialBlocks: "Specjalne"
blocks:
text: "Tekst"
image: "Zdjęcia"
button: "Przycisk"
if: "Jeżeli"
_if:
variable: "Zmienna"
_post:
text: "Treść"
_textInput:
name: "Nazwa zmiennej"
text: "Tytuł"
_textareaInput:
name: "Nazwa zmiennej"
text: "Tytuł"
_numberInput:
name: "Nazwa zmiennej"
text: "Tytuł"
_canvas:
height: "Wysokość"
_switch:
name: "Nazwa zmiennej"
text: "Tytuł"
_counter:
name: "Nazwa zmiennej"
text: "Tytuł"
inc: "Zwiększ o"
_button:
text: "Tytuł"
colored: "Kolorowe"
_action:
_dialog:
content: "Treść"
_pushEvent:
no-variable: "Brak"
_callAiScript:
functionName: "Nazwa funkcji"
radioButton: "Wybór"
_radioButton:
name: "Nazwa zmiennej"
title: "Tytuł"
script:
categories:
flow: "Kontrola przepływu"
operation: "Obliczanie"
comparison: "Porównanie"
fn: "Funkcje"
convert: "Transformacja"
list: "Listy"
blocks:
text: "Tekst"
_strLen:
arg1: "Tekst"
_strPick:
arg1: "Tekst"
_strReplace:
arg1: "Tekst"
_strReverse:
arg1: "Tekst"
_join:
arg1: "Listy"
arg2: "Odstęp"
add: "Dodaj"
subtract: "Odejmij"
multiply: "Pomnóż"
divide: "Podziel"
_round:
arg1: "Liczba"
if: "Warunek"
_if:
arg1: "Jeżeli"
arg2: "Jeżeli prawda"
not: "NIE"
_not:
arg1: "NIE"
_random:
arg1: "Prawdopodobieństwo"
rannum: "Losowa liczba"
_rannum:
arg1: "Minimalna wartość"
arg2: "Maksymalna wartość"
_randomPick:
arg1: "Listy"
_dailyRandom:
arg1: "Prawdopodobieństwo"
_dailyRannum:
arg1: "Minimalna wartość"
arg2: "Maksymalna wartość"
_dailyRandomPick:
arg1: "Listy"
_seedRandom:
arg1: "Ziarno"
arg2: "Prawdopodobieństwo"
_seedRannum:
arg1: "Ziarno"
arg2: "Minimalna wartość"
arg3: "Maksymalna wartość"
_seedRandomPick:
arg1: "Ziarno"
arg2: "Listy"
_pick:
arg1: "Listy"
arg2: "Położenie"
_listLen:
arg1: "Listy"
number: "Liczba"
_stringToNumber:
arg1: "Tekst"
_numberToString:
arg1: "Liczba"
_splitStrByLine:
arg1: "Tekst"
ref: "Zmienne"
fn: "Funkcje"
_fn:
arg1: "Wyjście"
_for:
arg1: "Liczba powtórzeń"
arg2: "Działanie"
types:
string: "Tekst"
number: "Liczba"
boolean: "Flaguj"
array: "Listy"
_notification:
youWereFollowed: "Zaobserwował(a) Cię"
_types:
all: "Wszystkie"
follow: "Obserwowani"
mention: "Wspomnij"
renote: "Udostępnij"
quote: "Cytuj"
reaction: "Reakcja"
_deck: _deck:
_columns: _columns:
main: "Główna"
notifications: "Powiadomienia" notifications: "Powiadomienia"
tl: "Oś czasu"
antenna: "Anteny"
list: "Listy"
mentions: "Wspomnienia"

View file

@ -735,6 +735,7 @@ _mfm:
twitchDescription: "Заставляет трястись как одержимого" twitchDescription: "Заставляет трястись как одержимого"
spin: "Вращение" spin: "Вращение"
spinDescription: "Так можно крутить содержимое в разных направлениях." spinDescription: "Так можно крутить содержимое в разных направлениях."
font: "Шрифт"
_reversi: _reversi:
reversi: "Реверси" reversi: "Реверси"
gameSettings: "Настройки игры" gameSettings: "Настройки игры"

View file

@ -747,6 +747,7 @@ _mfm:
blur: "模糊" blur: "模糊"
blurDescription: "产生模糊效果。将鼠标指针放在上面即可将内容显示出来。" blurDescription: "产生模糊效果。将鼠标指针放在上面即可将内容显示出来。"
font: "字体" font: "字体"
fontDescription: "可以设置内容所使用的字体。"
_reversi: _reversi:
reversi: "黑白棋" reversi: "黑白棋"
gameSettings: "对局设置" gameSettings: "对局设置"
@ -1008,6 +1009,7 @@ _widgets:
slideshow: "幻灯片展示" slideshow: "幻灯片展示"
button: "按钮" button: "按钮"
onlineUsers: "在线用户" onlineUsers: "在线用户"
serverMetric: "服务器指标"
_cw: _cw:
hide: "隐藏" hide: "隐藏"
show: "查看更多" show: "查看更多"

View file

@ -6,7 +6,7 @@ search: "搜尋"
notifications: "通知" notifications: "通知"
username: "使用者名稱" username: "使用者名稱"
password: "密碼" password: "密碼"
fetchingAsApObject: "從 Fediverse 查詢中..." fetchingAsApObject: "從聯邦宇宙取得中..."
ok: "OK" ok: "OK"
gotIt: "知道了" gotIt: "知道了"
cancel: "取消" cancel: "取消"
@ -31,7 +31,7 @@ save: "儲存"
users: "使用者" users: "使用者"
addUser: "新增使用者" addUser: "新增使用者"
favorite: "收藏" favorite: "收藏"
favorites: "已加星號" favorites: "已收藏"
unfavorite: "取消收藏" unfavorite: "取消收藏"
favorited: "已添加至收藏夾" favorited: "已添加至收藏夾"
alreadyFavorited: "已經有添加入收藏夾過了" alreadyFavorited: "已經有添加入收藏夾過了"
@ -43,30 +43,30 @@ copyLink: "複製連結"
delete: "刪除" delete: "刪除"
deleteAndEdit: "刪除並編輯" deleteAndEdit: "刪除並編輯"
deleteAndEditConfirm: "要刪除並再次編輯嗎?此箋文的所有情感、轉發和回覆也將會消失。" deleteAndEditConfirm: "要刪除並再次編輯嗎?此箋文的所有情感、轉發和回覆也將會消失。"
addToList: "添加至清單" addToList: "新增至清單"
sendMessage: "發送訊息" sendMessage: "發送訊息"
copyUsername: "複製用戶名" copyUsername: "複製用戶名"
searchUser: "搜尋用戶" searchUser: "搜尋用戶"
reply: "回覆" reply: "回覆"
loadMore: "瀏覽更多" loadMore: "載入更多"
showMore: "瀏覽更多" showMore: "載入更多"
youGotNewFollower: "您有新的追隨者" youGotNewFollower: "您有新的追隨者"
receiveFollowRequest: "收到追隨請求" receiveFollowRequest: "您有新的追隨請求"
followRequestAccepted: "追隨請求已接受" followRequestAccepted: "追隨請求已接受"
mention: "提及" mention: "提及"
mentions: "提及" mentions: "提及"
directNotes: "私信" directNotes: "指定使用者發佈"
importAndExport: "匯入 / 匯出" importAndExport: "匯入匯出"
import: "匯入" import: "匯入"
export: "匯出" export: "匯出"
files: "檔案" files: "檔案"
download: "下載" download: "下載"
driveFileDeleteConfirm: "確定要刪除檔案「{name}」嗎?使用此附件的箋文也會跟著消失。\n" driveFileDeleteConfirm: "確定要刪除檔案「{name}」嗎?使用此附件的箋文也會跟著消失。\n"
unfollowConfirm: "確定要取消對{name}的追隨嗎?" unfollowConfirm: "確定要取消追隨{name}嗎?"
exportRequested: "已請求匯出。這可能會花一點時間。結束後檔案將會被放到雲端裡。" exportRequested: "已請求匯出。這可能會花一點時間。結束後檔案將會被放到雲端裡。"
importRequested: "已請求匯入。這可能會花一點時間" importRequested: "已請求匯入。這可能會花一點時間"
lists: "清單" lists: "清單"
noLists: "沒有清單" noLists: "沒有任何清單"
note: "箋文" note: "箋文"
notes: "箋文" notes: "箋文"
following: "追隨中" following: "追隨中"
@ -113,7 +113,7 @@ unmute: "解除靜音"
block: "封鎖" block: "封鎖"
unblock: "解除封鎖" unblock: "解除封鎖"
suspend: "凍結" suspend: "凍結"
unsuspend: "解" unsuspend: "解除凍結"
blockConfirm: "確定要封鎖此用戶?" blockConfirm: "確定要封鎖此用戶?"
unblockConfirm: "確定解除封鎖此用戶?" unblockConfirm: "確定解除封鎖此用戶?"
suspendConfirm: "確定凍結此帳號?" suspendConfirm: "確定凍結此帳號?"
@ -122,7 +122,7 @@ selectList: "選擇清單"
selectAntenna: "選擇天線" selectAntenna: "選擇天線"
selectWidget: "選擇小工具" selectWidget: "選擇小工具"
editWidgets: "編輯小工具" editWidgets: "編輯小工具"
editWidgetsExit: "停止編輯" editWidgetsExit: "完成"
customEmojis: "自訂表情符號" customEmojis: "自訂表情符號"
emoji: "表情符號" emoji: "表情符號"
emojiName: "表情符號名稱" emojiName: "表情符號名稱"
@ -130,13 +130,13 @@ emojiUrl: "表情符號URL"
addEmoji: "新增表情符號" addEmoji: "新增表情符號"
settingGuide: "推薦設定" settingGuide: "推薦設定"
cacheRemoteFiles: "緩存非遠程檔案" cacheRemoteFiles: "緩存非遠程檔案"
cacheRemoteFilesDescription: "禁用此設定會停止遠端檔案的緩存,從而節省儲存空間但資料會因直接連線從而產生額外連接數據。" cacheRemoteFilesDescription: "禁用此設定會停止遠端檔案的緩存,從而節省儲存空間但資料會因直接連線從而產生額外連接數據。"
flagAsBot: "此使用者是機器人" flagAsBot: "此使用者是機器人"
flagAsBotDescription: "如果本帳戶是由程式控制請啟用此選項。啟用後會作為標示幫助其他開發者防止機器人之間產生無限互動的行為並會調整Misskey內部系統將本帳戶識別為機器人" flagAsBotDescription: "如果本帳戶是由程式控制請啟用此選項。啟用後會作為標示幫助其他開發者防止機器人之間產生無限互動的行為並會調整Misskey內部系統將本帳戶識別為機器人"
flagAsCat: "此使用者是貓" flagAsCat: "此使用者是貓"
flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示" flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示"
autoAcceptFollowed: "自動許可追隨" autoAcceptFollowed: "自動追隨中使用者的追隨請求"
addAcount: "新增帳" addAcount: "新增帳"
loginFailed: "登入失敗" loginFailed: "登入失敗"
showOnRemote: "轉到所在實例顯示" showOnRemote: "轉到所在實例顯示"
general: "一般" general: "一般"
@ -144,15 +144,15 @@ wallpaper: "桌布"
setWallpaper: "設定桌布" setWallpaper: "設定桌布"
removeWallpaper: "移除桌布" removeWallpaper: "移除桌布"
searchWith: "搜尋: {q}" searchWith: "搜尋: {q}"
youHaveNoLists: "沒有任何清單" youHaveNoLists: "沒有任何清單"
followConfirm: "你真的要關注{name}嗎?" followConfirm: "你真的要追隨{name}嗎?"
proxyAccount: "代理帳號" proxyAccount: "代理帳號"
proxyAccountDescription: "代理帳號是在某些情況下充當其他服務器用戶的帳號。例如,當用戶將一個來自其他服務器的帳號放在列表中時,由於沒有其他用戶關注該帳號,該指令不會傳送到該服務器上,因此會由代理帳戶關注。" proxyAccountDescription: "代理帳號是在某些情況下充當其他服務器用戶的帳號。例如,當用戶將一個來自其他服務器的帳號放在列表中時,由於沒有其他用戶關注該帳號,該指令不會傳送到該服務器上,因此會由代理帳戶關注。"
host: "主機" host: "主機"
selectUser: "選取使用者" selectUser: "選取使用者"
recipient: "發送至" recipient: "收件人"
annotation: "註解" annotation: "註解"
federation: "聯邦宇宙" federation: "站台聯邦"
instances: "實例" instances: "實例"
registeredAt: "初次觀測" registeredAt: "初次觀測"
latestRequestSentAt: "上次發送的請求" latestRequestSentAt: "上次發送的請求"
@ -166,7 +166,7 @@ blockThisInstance: "封鎖此實例"
operations: "操作" operations: "操作"
software: "軟體" software: "軟體"
version: "版本" version: "版本"
metadata: "元資Metadata" metadata: "元資"
withNFiles: "{n}個檔案" withNFiles: "{n}個檔案"
monitor: "監視器" monitor: "監視器"
jobQueue: "佇列" jobQueue: "佇列"
@ -182,10 +182,10 @@ clearCachedFiles: "清除快取資料"
clearCachedFilesConfirm: "確定要清除緩存資料嗎?" clearCachedFilesConfirm: "確定要清除緩存資料嗎?"
blockedInstances: "已封鎖的實例" blockedInstances: "已封鎖的實例"
blockedInstancesDescription: "請逐行輸入需要封鎖的實例。已封鎖的實例將無法與本實例進行通訊。" blockedInstancesDescription: "請逐行輸入需要封鎖的實例。已封鎖的實例將無法與本實例進行通訊。"
muteAndBlock: "靜音/封鎖" muteAndBlock: "靜音封鎖"
mutedUsers: "已靜音用戶" mutedUsers: "已靜音用戶"
blockedUsers: "已封鎖用戶" blockedUsers: "已封鎖用戶"
noUsers: "無用戶" noUsers: "沒有任何使用者"
editProfile: "編輯個人檔案" editProfile: "編輯個人檔案"
noteDeleteConfirm: "確定刪除此箋文嗎?" noteDeleteConfirm: "確定刪除此箋文嗎?"
pinLimitExceeded: "不能置頂更多箋文了" pinLimitExceeded: "不能置頂更多箋文了"
@ -201,31 +201,31 @@ blocked: "已封鎖"
suspended: "已凍結" suspended: "已凍結"
all: "全部" all: "全部"
subscribing: "訂閱中" subscribing: "訂閱中"
publishing: "現正直播" publishing: "直播"
notResponding: "沒有回應" notResponding: "沒有回應"
instanceFollowing: "追蹤實例" instanceFollowing: "追蹤實例"
instanceFollowers: "追蹤實例" instanceFollowers: "追蹤實例"
instanceUsers: "用戶" instanceUsers: "用戶"
changePassword: "修改密碼" changePassword: "修改密碼"
security: "安全性" security: "安全性"
retypedNotMatch: "不相符的輸入內容" retypedNotMatch: "兩次輸入不一致。"
currentPassword: "現在的密碼" currentPassword: "目前密碼"
newPassword: "新密碼" newPassword: "新密碼"
newPasswordRetype: "新的密碼(再輸入一次)" newPasswordRetype: "確認密碼"
attachFile: "添加附件" attachFile: "添加附件"
more: "更多!" more: "更多!"
featured: "精選" featured: "精選"
usernameOrUserId: "使用者名稱或使用者 ID" usernameOrUserId: "使用者名稱或用戶ID"
noSuchUser: "使用者不存在" noSuchUser: "使用者不存在"
lookup: "查詢" lookup: "查詢"
announcements: "公告" announcements: "公告"
imageUrl: "圖片URL" imageUrl: "圖片URL"
remove: "刪除" remove: "刪除"
removed: "成功移除" removed: "已刪除"
removeAreYouSure: "確定要刪掉「{x}」嗎?" removeAreYouSure: "確定要刪掉「{x}」嗎?"
deleteAreYouSure: "確定要刪掉「{x}」嗎?" deleteAreYouSure: "確定要刪掉「{x}」嗎?"
resetAreYouSure: "確定要重設嗎?" resetAreYouSure: "確定要重設嗎?"
saved: "已存" saved: "已存"
messaging: "傳送訊息" messaging: "傳送訊息"
upload: "上傳" upload: "上傳"
fromDrive: "從雲端" fromDrive: "從雲端"
@ -270,9 +270,9 @@ folderName: "資料夾名稱"
createFolder: "新增資料夾" createFolder: "新增資料夾"
renameFolder: "重新命名資料夾" renameFolder: "重新命名資料夾"
deleteFolder: "刪除資料夾" deleteFolder: "刪除資料夾"
addFile: "添加檔案" addFile: "添加附件"
emptyDrive: "雲端硬碟為空" emptyDrive: "雲端硬碟為空"
emptyFolder: "空的資料夾" emptyFolder: "資料夾為空"
unableToDelete: "無法刪除" unableToDelete: "無法刪除"
inputNewFileName: "輸入檔案名稱" inputNewFileName: "輸入檔案名稱"
inputNewFolderName: "輸入新資料夾的名稱" inputNewFolderName: "輸入新資料夾的名稱"
@ -280,7 +280,7 @@ circularReferenceFolder: "目標文件夾是您要移動的文件夾的子文件
hasChildFilesOrFolders: "此文件夾不是空的,無法刪除。" hasChildFilesOrFolders: "此文件夾不是空的,無法刪除。"
copyUrl: "複製URL" copyUrl: "複製URL"
rename: "重新命名" rename: "重新命名"
avatar: "頭像" avatar: "大頭貼"
banner: "橫幅" banner: "橫幅"
nsfw: "敏感內容" nsfw: "敏感內容"
whenServerDisconnected: "與服務器的連接中斷時" whenServerDisconnected: "與服務器的連接中斷時"
@ -294,11 +294,11 @@ accept: "接受"
reject: "拒絕" reject: "拒絕"
normal: "正常" normal: "正常"
instanceName: "實例名稱" instanceName: "實例名稱"
instanceDescription: "實例描述" instanceDescription: "實例說明"
maintainerName: "管理員名稱" maintainerName: "管理員名稱"
maintainerEmail: "管理員箱" maintainerEmail: "管理員箱"
tosUrl: "服務條款URL" tosUrl: "服務條款URL"
thisYear: "年" thisYear: "年"
thisMonth: "本月" thisMonth: "本月"
today: "本日" today: "本日"
dayX: "{day}日" dayX: "{day}日"
@ -368,7 +368,7 @@ userList: "清單"
about: "資訊" about: "資訊"
aboutMisskey: "關於 Misskey" aboutMisskey: "關於 Misskey"
administrator: "管理員" administrator: "管理員"
token: "令牌" token: "權杖"
twoStepAuthentication: "雙重身份驗證" twoStepAuthentication: "雙重身份驗證"
moderator: "板主" moderator: "板主"
nUsersMentioned: "提到了{n}" nUsersMentioned: "提到了{n}"
@ -595,6 +595,7 @@ send: "發送"
abuseMarkAsResolved: "處理完畢" abuseMarkAsResolved: "處理完畢"
openInNewTab: "在新分頁中開啟" openInNewTab: "在新分頁中開啟"
openInSideView: "在側欄中開啟" openInSideView: "在側欄中開啟"
editTheseSettingsMayBreakAccount: "修改這些設定可能會毀壞您的帳戶"
instanceTicker: "箋文的實例來源" instanceTicker: "箋文的實例來源"
waitingFor: "等待{x}" waitingFor: "等待{x}"
random: "隨機" random: "隨機"
@ -622,14 +623,20 @@ driveFilesCount: "雲端硬碟檔案數量"
driveUsage: "雲端硬碟使用量" driveUsage: "雲端硬碟使用量"
noCrawleDescription: "請求網路搜尋引擎不要索引你的個人資料頁、箋文及頁面等。" noCrawleDescription: "請求網路搜尋引擎不要索引你的個人資料頁、箋文及頁面等。"
lockedAccountInfo: "即使你通過了追隨者請求,除非你將箋文的可見性設定為 「追隨者」,否則任何人都能看見你的箋文。" lockedAccountInfo: "即使你通過了追隨者請求,除非你將箋文的可見性設定為 「追隨者」,否則任何人都能看見你的箋文。"
loadRawImages: "以原始圖像質量顯示附件圖像的縮略圖"
disableShowingAnimatedImages: "不播放動態圖像"
notSet: "未設定" notSet: "未設定"
emailVerified: "已成功驗證您的電郵"
noteFavoritesCount: "收藏箋文的數目" noteFavoritesCount: "收藏箋文的數目"
pageLikesCount: "頁面被喜歡次數" pageLikesCount: "頁面被喜歡次數"
pageLikedCount: "頁面被喜歡次數" pageLikedCount: "頁面被喜歡次數"
contact: "聯絡人" contact: "聯絡人"
useSystemFont: "使用系統默認的字型"
clips: "標籤" clips: "標籤"
experimentalFeatures: "測試中的功能" experimentalFeatures: "測試中的功能"
developer: "開發者" developer: "開發者"
makeExplorable: "讓自己的帳戶能夠在“探索”版面顯示"
makeExplorableDescription: "如果關閉,帳戶將不會被顯示在\"探索\"版面中。"
showGapBetweenNotesInTimeline: "分開顯示時間線上的箋文。" showGapBetweenNotesInTimeline: "分開顯示時間線上的箋文。"
duplicate: "複製" duplicate: "複製"
left: "左" left: "左"
@ -639,6 +646,8 @@ narrow: "窄"
reloadToApplySetting: "設定將會在頁面重新載入之後生效。要現在就重載頁面嗎?" reloadToApplySetting: "設定將會在頁面重新載入之後生效。要現在就重載頁面嗎?"
showTitlebar: "顯示標題列" showTitlebar: "顯示標題列"
clearCache: "清除快取資料" clearCache: "清除快取資料"
onlineUsersCount: "{n}人正在線上"
nUsers: "{n}用戶"
_aboutMisskey: _aboutMisskey:
about: "Misskey是由syuilo於2014年開發的開源軟件。" about: "Misskey是由syuilo於2014年開發的開源軟件。"
contributors: "主要貢獻者" contributors: "主要貢獻者"
@ -649,8 +658,8 @@ _aboutMisskey:
morePatrons: "感謝你們的支持、 幫助。 🥰" morePatrons: "感謝你們的支持、 幫助。 🥰"
patrons: "贊助者" patrons: "贊助者"
_nsfw: _nsfw:
respect: "隱藏NSFW內容" respect: "隱藏敏感內容"
ignore: "不隱藏NSFW內容" ignore: "不隱藏敏感內容"
force: "隱藏所有內容" force: "隱藏所有內容"
_mfm: _mfm:
cheatSheet: "MFM代碼小抄" cheatSheet: "MFM代碼小抄"
@ -663,11 +672,18 @@ _mfm:
quote: "引用" quote: "引用"
emoji: "自訂表情符號" emoji: "自訂表情符號"
search: "搜尋" search: "搜尋"
flip: "翻轉"
flipDescription: "將內容上下或左右翻轉。"
jelly: "動畫(果凍)"
jellyDescription: "顯示果凍一樣的動畫效果。"
bounce: "動畫(反彈)" bounce: "動畫(反彈)"
shake: "動畫(搖晃)" shake: "動畫(搖晃)"
twitch: "動畫(顫抖)"
spin: "動畫(旋轉)" spin: "動畫(旋轉)"
spinDescription: "顯示旋轉的動畫效果。" spinDescription: "顯示旋轉的動畫效果。"
blur: "模糊"
font: "字型" font: "字型"
fontDescription: "可設置顯示內容所使用的字型"
_reversi: _reversi:
reversi: "黑白棋" reversi: "黑白棋"
gameSettings: "對弈設定" gameSettings: "對弈設定"
@ -676,6 +692,9 @@ _reversi:
blackIs: "{name}在玩黑棋" blackIs: "{name}在玩黑棋"
rules: "規則" rules: "規則"
botSettings: "機器人設定" botSettings: "機器人設定"
thisGameIsStartedSoon: "遊戲即將開始"
waitingForOther: "等待對手準備"
waitingForMe: "等待您的準備"
waitingBoth: "請準備" waitingBoth: "請準備"
ready: "已就緒" ready: "已就緒"
cancelReady: "重新準備" cancelReady: "重新準備"
@ -684,9 +703,14 @@ _reversi:
turnOf: "{name}的回合" turnOf: "{name}的回合"
pastTurnOf: "{name}的回合" pastTurnOf: "{name}的回合"
surrender: "認輸" surrender: "認輸"
drawn: "平局"
won: "{name}獲勝"
black: "黑" black: "黑"
white: "白" white: "白"
total: "合計" total: "合計"
turnCount: "{count}回合"
myGames: "我的對弈"
allGames: "所有對弈"
ended: "已結束" ended: "已結束"
playing: "正在對弈" playing: "正在對弈"
_instanceTicker: _instanceTicker:
@ -719,10 +743,19 @@ _theme:
explore: "取得佈景主題" explore: "取得佈景主題"
install: "安裝佈景主題" install: "安裝佈景主題"
manage: "佈景主題管理員" manage: "佈景主題管理員"
code: "主題代碼"
installed: "{name}已安裝"
installedThemes: "已經安裝的主題"
builtinThemes: "標準主題"
alreadyInstalled: "此主題已經安裝"
invalid: "主題格式錯誤"
make: "製作主題"
base: "基於"
constant: "常數" constant: "常數"
defaultValue: "預設值" defaultValue: "預設值"
color: "顏色" color: "顏色"
func: "函数" func: "函数"
funcKind: "功能類型"
argument: "引數" argument: "引數"
alpha: "透明度" alpha: "透明度"
darken: "暗度" darken: "暗度"
@ -731,21 +764,38 @@ _theme:
bg: "背景" bg: "背景"
fg: "文本" fg: "文本"
shadow: "陰影" shadow: "陰影"
navIndicator: "側邊欄指示符"
link: "鏈接" link: "鏈接"
hashtag: "#tag" hashtag: "#tag"
mention: "提及" mention: "提及"
mentionMe: "提及我" mentionMe: "提及我"
renote: "轉發箋文" renote: "轉發箋文"
divider: "分割線" divider: "分割線"
scrollbarHandle: "滾動條"
scrollbarHandleHover: "滾動條 (漂浮)"
dateLabelFg: "日期標籤文字"
infoBg: "資訊背景" infoBg: "資訊背景"
infoFg: "資訊內容" infoFg: "資訊內容"
infoWarnBg: "警告背景" infoWarnBg: "警告背景"
infoWarnFg: "警告字元" infoWarnFg: "警告字元"
cwBg: "CW 按鈕背景"
cwFg: "CW 按鈕文本"
cwHoverBg: "CW 按鈕背景 (漂浮)"
buttonBg: "按鈕背景"
buttonHoverBg: "按鈕背景 (漂浮)"
inputBorder: "輸入框邊框"
listItemHoverBg: "列表物品背景 (漂浮)"
driveFolderBg: "雲端硬碟文件夾背景"
messageBg: "私信背景"
accentDarken: "強調色(偏暗)"
accentLighten: "強調色(明亮)"
fgHighlighted: "高亮顯示文本"
_sfx: _sfx:
note: "箋文" note: "箋文"
noteMy: "我的箋文" noteMy: "我的箋文"
notification: "通知" notification: "通知"
chat: "傳送訊息" chat: "傳送訊息"
antenna: "天線接收"
channel: "頻道通知" channel: "頻道通知"
_ago: _ago:
unknown: "未知" unknown: "未知"
@ -784,9 +834,15 @@ _tutorial:
step6_2: "你也可以對別人的箋文作出「情感」,作出簡單的回覆。" step6_2: "你也可以對別人的箋文作出「情感」,作出簡單的回覆。"
step7_1: "以上為Misskey的基本操作說明教學在此告一段落。辛苦了。" step7_1: "以上為Misskey的基本操作說明教學在此告一段落。辛苦了。"
step7_2: "歡迎到{help}來瞭解更多Misskey相關介紹。" step7_2: "歡迎到{help}來瞭解更多Misskey相關介紹。"
step7_3: "那麼祝您在Misskey玩的開心~ 🚀"
_2fa: _2fa:
alreadyRegistered: "此設備已經被註冊過了"
registerDevice: "註冊裝置" registerDevice: "註冊裝置"
step1: "首先,在您的設備上安裝二步驗證程式,例如{a}或{b}。"
step2: "然後掃描熒幕上的QR code。"
_permissions: _permissions:
"read:account": "查看帳戶信息"
"write:account": "更改帳戶信息"
"read:blocks": "已封鎖用戶名單" "read:blocks": "已封鎖用戶名單"
"write:blocks": "編輯已封鎖用戶名單" "write:blocks": "編輯已封鎖用戶名單"
"read:drive": "存取雲端硬碟\n" "read:drive": "存取雲端硬碟\n"
@ -814,6 +870,11 @@ _permissions:
"write:channels": "編輯頻道" "write:channels": "編輯頻道"
_auth: _auth:
shareAccess: "要授權「“{name}”」存取您的帳戶嗎?" shareAccess: "要授權「“{name}”」存取您的帳戶嗎?"
shareAccessAsk: "您確定要授權這個應用程式使用您的帳戶嗎?"
permissionAsk: "此應用程式需要以下權限"
pleaseGoBack: "請返回至應用程式"
callback: "回到應用程式"
denied: "拒絕訪問"
_antennaSources: _antennaSources:
all: "全部箋文" all: "全部箋文"
homeTimeline: "來自已追隨使用者的箋文" homeTimeline: "來自已追隨使用者的箋文"
@ -840,7 +901,10 @@ _widgets:
photos: "照片" photos: "照片"
digitalClock: "電子時鐘" digitalClock: "電子時鐘"
federation: "聯邦宇宙" federation: "聯邦宇宙"
postForm: "篆文窗口"
slideshow: "幻燈片"
button: "按鈕" button: "按鈕"
onlineUsers: "在線上的用戶"
_cw: _cw:
hide: "隱藏" hide: "隱藏"
show: "瀏覽更多" show: "瀏覽更多"
@ -848,6 +912,8 @@ _cw:
files: "{count} 個檔案" files: "{count} 個檔案"
_poll: _poll:
noOnlyOneChoice: "至少需要兩個選項。" noOnlyOneChoice: "至少需要兩個選項。"
choiceN: "選擇{n}"
noMore: "沒辦法再添加選項了"
expiration: "期限" expiration: "期限"
infinite: "無期限" infinite: "無期限"
at: "結束時間" at: "結束時間"
@ -861,6 +927,7 @@ _poll:
voted: "已投票" voted: "已投票"
closed: "已結束" closed: "已結束"
remainingDays: "{d}天{h}小時後結束" remainingDays: "{d}天{h}小時後結束"
remainingHours: "{h}小時{m}分後結束"
_visibility: _visibility:
public: "公開" public: "公開"
home: "首頁" home: "首頁"
@ -964,6 +1031,11 @@ _rooms:
monitor: "監視器" monitor: "監視器"
keyboard: "鍵盤" keyboard: "鍵盤"
carpet-stripe: "條紋地毯" carpet-stripe: "條紋地毯"
wall-clock: "壁鐘"
photoframe: "相框"
cube: "立方體"
tv: "電視"
pinguin: "企鵝蠟像"
bin: "垃圾箱" bin: "垃圾箱"
cup-noodle: "杯面" cup-noodle: "杯面"
holo-display: "投影機" holo-display: "投影機"
@ -1102,6 +1174,7 @@ _pages:
arg1: "本文" arg1: "本文"
_join: _join:
arg1: "清單" arg1: "清單"
arg2: "分隔字元"
add: "加" add: "加"
_add: _add:
arg1: "A" arg1: "A"
@ -1118,6 +1191,7 @@ _pages:
_divide: _divide:
arg1: "A" arg1: "A"
arg2: "B" arg2: "B"
mod: "餘數"
_mod: _mod:
arg1: "A" arg1: "A"
arg2: "B" arg2: "B"
@ -1229,9 +1303,14 @@ _relayStatus:
accepted: "已通過核准" accepted: "已通過核准"
rejected: "已拒絕" rejected: "已拒絕"
_notification: _notification:
youGotMention: "{name}提及到您"
youGotReply: "{name}回覆了您"
youGotQuote: "{name}引用了您"
youRenoted: "{name} 轉發了你的箋文" youRenoted: "{name} 轉發了你的箋文"
youGotPoll: "{name}已投票" youGotPoll: "{name}已投票"
youGotMessagingMessageFromUser: "{name}發送給您的訊息"
youWereFollowed: "您有新的追隨者" youWereFollowed: "您有新的追隨者"
youReceivedFollowRequest: "您有新的追隨請求"
yourFollowRequestAccepted: "您的追隨請求已通過" yourFollowRequestAccepted: "您的追隨請求已通過"
youWereInvitedToGroup: "您有新的群組邀請" youWereInvitedToGroup: "您有新的群組邀請"
_types: _types:
@ -1244,10 +1323,12 @@ _notification:
reaction: "情感" reaction: "情感"
receiveFollowRequest: "已收到追隨請求" receiveFollowRequest: "已收到追隨請求"
followRequestAccepted: "追隨請求已接受" followRequestAccepted: "追隨請求已接受"
groupInvited: "加入社群邀請"
app: "應用程式通知" app: "應用程式通知"
_deck: _deck:
alwaysShowMainColumn: "總是顯示主欄" alwaysShowMainColumn: "總是顯示主欄"
columnAlign: "對齊欄位" columnAlign: "對齊欄位"
columnMargin: "列之間的邊距"
addColumn: "新增欄位" addColumn: "新增欄位"
swapLeft: "向左移動" swapLeft: "向左移動"
swapRight: "向右移動" swapRight: "向右移動"
@ -1256,6 +1337,7 @@ _deck:
stackLeft: "向左折疊" stackLeft: "向左折疊"
popRight: "向右彈出" popRight: "向右彈出"
_columns: _columns:
main: "主列"
widgets: "小工具" widgets: "小工具"
notifications: "通知" notifications: "通知"
tl: "時間軸" tl: "時間軸"

View file

@ -1,4 +1,4 @@
# AiScript # AiScript
## Funktionen ## Funktionen
デフォルトで値渡しです。 Verwenden für Parameter standardmäßig Pass-by-Value (Wertparameter).

View file

@ -1,58 +1,58 @@
# Misskey API # Misskey API
MisskeyAPIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発できます。 ストリーミングAPIもあるので、リアルタイム性のあるアプリケーションを作ることも可能です。 Durch die Verwendung des Misskey APIs können Misskey Clients, mit Misskey kompatible Web-Services, Bots (ab sofort "Anwendungen" genannt) und mehr entwickelt werden. Ebenso existiert ein Streaming-API, um Echtzeit-Anwendungen zu erstellen.
APIを使い始めるには、まずアクセストークンを取得する必要があります。 このドキュメントでは、アクセストークンを取得する手順を説明した後、基本的なAPIの使い方を説明します。 Um mit der Verwendung des APIs zu beginnen, wird zuerst ein Zugriffstoken benötigt. Wie ein solcher Token erhalten werden kann, und wie die API dann hiermit verwendet werden kann, wird auf dieser Seite erklärt.
## アクセストークンの取得 ## Einen Zugriffstoken erhalten
基本的に、APIはリクエストにはアクセストークンが必要となります。 APIにリクエストするのが自分自身なのか、不特定の利用者に使ってもらうアプリケーションなのかによって取得手順は異なります。 Generell benötigen alle API-Anfragen einen Zugriffstoken. Die Methode, wie ein solcher Zugriffstoken erlangt werden kann, unterscheidet sich je nach dem, ob Anfragen vom eigenen Benutzerkonto aus gesendet werden oder ob die Anfragen von einem anderen Benutzer aus durch eine Anwendung gesendet werden.
* 前者の場合: [「自分自身のアクセストークンを手動発行する」](#自分自身のアクセストークンを手動発行する)に進む * Im ersten Fall: Fahre mit "Einen Zugriffstoken für das eigene Benutzerkonto generieren" fort.
* 後者の場合: [「アプリケーション利用者にアクセストークンの発行をリクエストする」](#アプリケーション利用者にアクセストークンの発行をリクエストする)に進む * Im zweiten Fall: Fahre mit "Einen Benutzer zur Generierung eines Zugangstokens für eine Anwendung auffordern" fort.
### 自分自身のアクセストークンを手動発行する ### Einen Zugriffstoken für das eigene Benutzerkonto generieren
「設定 > API」で、自分のアクセストークンを発行できます。 In Einstellungen > API kann ein Zugriffstoken für das eigene Benutzerkonto generiert werden.
[「APIの使い方」へ進む](#APIの使い方) [Fahre mit "Verwendung der API" fort.](#APIの使い方)
### アプリケーション利用者にアクセストークンの発行をリクエストする ### Einen Benutzer zur Generierung eines Zugangstokens für eine Anwendung auffordern
アプリケーション利用者のアクセストークンを取得するには、以下の手順で発行をリクエストします。 Um einen in einer Anwendung zu verwendenden Zugriffstoken für ein Benutzerkonto zu erhalten, fordere die Generierung eines solchen durch den unten beschrieben Prozess an.
#### Step 1 #### Schritt 1
UUIDを生成する。以後これをセッションIDと呼びます。 Generiere eine UUID.Diese werden wir ab jetzt die Sitzungs-ID nennen.
> このセッションIDは毎回生成し、使いまわさないようにしてください。 > Die selbe Sitzungs-ID sollte nie mehrfach wieder verwendet werden, generiere anstattdessen für jeden Zugriffstoken eine neue Sitzungs-ID.
#### Step 2 #### Schritt 2
`{_URL_}/miauth/{session}`をユーザーのブラウザで表示させる。`{session}`の部分は、セッションIDに置き換えてください。 Öffne `{_URL_}/miauth/{session}` im Browser des Benutzers.`{session}` soll hierbei durch die vorher generierte Sitzungs-ID ersetzt werden.
> : `{_URL_}/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f` > z.B.: `{_URL_}/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f`
表示する際、URLにクエリパラメータとしていくつかのオプションを設定できます: Bei Aufruf dieser URL können verschiedene Einstellungen via Query-Parameter gesetzt werden:
* `name` ... アプリケーション名 * `name` ... Anwendungsname
* > : `MissDeck` * > z.B.: `MissDeck`
* `icon` ... アプリケーションのアイコン画像URL * `icon` ... URL zum Anwendungs-Icon
* > : `https://missdeck.example.com/icon.png` * > z.B.: `https://missdeck.example.com/icon.png`
* `callback` ... 認証が終わった後にリダイレクトするURL * `callback` ... URL, zu der nach Ende der Authentifizierung weitergeleitet wird
* > : `https://missdeck.example.com/callback` * > z.B.: `https://missdeck.example.com/callback`
* リダイレクト時には、`session`というクエリパラメータでセッションIDが付きます * In dieser Weiterleitung wird die Sessions-ID als `session` Query-Parameter an die URL angefügt
* `permission` ... アプリケーションが要求する権限 * `permission` ... Von der Anwendung geforderte Berechtigungen
* > : `write:notes,write:following,read:drive` * > z.B.: `write:notes,write:following,read:drive`
* 要求する権限を`,`で区切って列挙します * Angeforderte Berechtigungen sind durch `,` von einander getrennt
* どのような権限があるかは[APIリファレンス](/api-doc)で確認できます * Welche Berechtigungen existieren kann in der [API-Referenz](/api-doc) nachgelesen werden
#### Step 3 #### Schritt 3
ユーザーが発行を許可した後、`{_URL_}/api/miauth/{session}/check`にPOSTリクエストすると、レスポンスとしてアクセストークンを含むJSONが返ります。 Sobald der Benutzer der Erstellung des Zugriffstokens zugestimmt hat, kann durch eine POST-Anfrage an `{_URL_}/api/miauth/{session}/check` der Zugriffstoken aus dem JSON-Objekt der Antwort ausgelesen werden.
レスポンスに含まれるプロパティ: In der Antwort enthaltene Attribute:
* `token` ... ユーザーのアクセストークン * `token` ... Zugriffstoken des Nutzers
* `user` ... ユーザーの情報 * `user` ... Benutzerdaten
[「APIの使い方」へ進む](#APIの使い方) [Fahre mit "Verwendung der API" fort.](#APIの使い方)
## APIの使い方 ## Verwendung der API
**APIはすべてPOSTで、リクエスト/レスポンスともにJSON形式です。RESTではありません。** アクセストークンは、`i`というパラメータ名でリクエストに含めます。 **Alle API-Anfragen sind POST-Anfragen, und alle Anfragen bzw. Antworten sind JSON-Objekte.REST wird nicht unterstützt.** Der Zugriffstoken muss unter dem `i`-Parameter beinhaltet werden.
* [APIリファレンス](/api-doc) * [API-Referenz](/api-doc)
* [ストリーミングAPI](./stream) * [Streaming-API](./stream)

View file

@ -1,74 +1,74 @@
# プラグインの作成 # Erstellen von Plugins
Misskey Webクライアントのプラグイン機能を使うと、クライアントを拡張し、様々な機能を追加できます。 ここではプラグインの作成にあたってのメタデータ定義や、AiScript APIリファレンスを掲載します。 Durch die Verwendung der Plugin-Funktionalität des Misskey Web-Clients kann dieser mit verschiedenen Funktionen erweitert werden. Diese Seite beinhaltet Definitionen von Metadaten für die Erstellung von Plugins sowie eine AiScript API-Referenz für Plugins.
## Metadaten ## Metadaten
プラグインは、AiScriptのメタデータ埋め込み機能を使って、デフォルトとしてプラグインのメタデータを定義する必要があります。 メタデータは次のプロパティを含むオブジェクトです。 Plugins müssen benötigte Metadaten im AiScript Metadata-Format angeben. Bei diesen Metadaten handelt es sich um ein Objekt mit folgenden Attributen:
### name ### name
プラグイン名 Name des Plugins
### author ### author
プラグイン作者 Name des Plugin-Erstellers
### version ### version
プラグインバージョン。数値を指定してください。 Version des Plugins.Muss eine Zahl sein.
### description ### description
プラグインの説明 Beschreibung des Plugins
### permissions ### permissions
プラグインが要求する権限。MisskeyAPIにリクエストする際に用いられます。 Die vom Plugin geforderten Berechtigungen.Werden bei Anfragen der Misskey API verwendet.
### config ### config
プラグインの設定情報を表すオブジェクト。 キーに設定名、値に以下のプロパティを含めます。 Ein Objekt, dass die Einstellungen des Plugins enthält. Schlüssel representieren Namen von Einstellungen, und Werte sind einer der unten genannten Attribute.
#### type #### type
設定値の種類を表す文字列。以下から選択します。 string number boolean Der Typ eines Einstellungswertes.Muss aus einem dieser Typen gewählt sein: string number boolean
#### label #### label
ユーザーに表示する設定名 Dem Benutzer angezeigter Einstellungsname
#### description #### description
設定の説明 Beschreibung der Einstellung
#### default #### default
設定のデフォルト値 Standardwert der Einstellung
## APIリファレンス ## API-Referenz
AiScript標準で組み込まれているAPIは掲載しません。 Direkt in den AiScript-Standard eingebaute API wird nicht aufgelistet.
### Mk:dialog(title text type) ### Mk:dialog(title text type)
ダイアログを表示します。typeには以下の値が設定できます。 info success warn error question 省略すると info になります。 Zeigt ein Dialogfenster an.type muss aus einem der folgenden Werte gewählt werden. info success warn error question Falls kein Typ angegeben wird, wird dieser zu info gesetzt.
### Mk:confirm(title text type) ### Mk:confirm(title text type)
確認ダイアログを表示します。typeには以下の値が設定できます。 info success warn error question 省略すると question になります。 ユーザーが"OK"を選択した場合は true を、"キャンセル"を選択した場合は false が返ります。 Zeigt ein Bestätigungsfenster an.type muss aus einem der folgenden Werte gewählt werden. info success warn error question Falls kein Typ angegeben wird, wird dieser zu question gesetzt. Drückt der Benutzer "OK" wird true zurückgegeben, drückt er "Cancel" wird false zurückgegeben.
### Mk:api(endpoint params) ### Mk:api(endpoint params)
Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。 Sendet eine Misskey API-Anfrage.Der erste Parameter gibt den API-Endpunkt an, der zweite die Anfrageparameter als Objekt.
### Mk:save(key value) ### Mk:save(key value)
任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。 Speichert einen beliebigen Wert dauerhaft unter einem beliebigen Namen.Der gespeicherte Wert bleibt auch nach Verlassen des AiScript-Kontexts erhalten und kann mit Mk:load ausgelesen werden.
### Mk:load(key) ### Mk:load(key)
Mk:saveで永続化した指定の名前の値を読み取ります。 Läd den Wert des gegebenen Schlüssels, der zuvor mit Mk:save gespeichert wurde
### Plugin:register_post_form_action(title fn) ### Plugin:register_post_form_action(title fn)
投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。 コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。 Fügt dem Beitragsfenster eine Aktion hinzu.Der erste Parameter gibt den Aktionsnamen an, der zweite Parameter eine Callback-Funktion, die bei Auswahl dieser Aktion ausgeführt wird, an. Die Callback-Funktion erhält als ersten Parameter ein Beitragsfenster-Objekt.
### Plugin:register_note_action(title fn) ### Plugin:register_note_action(title fn)
ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。 コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。 Fügt dem Notiz-Menü ein Listenelement hinzu.Der erste Parameter gibt den Aktionsnamen an, der zweite Parameter eine Callback-Funktion, die bei Auswahl dieses Elements ausgeführt wird, an. Die Callback-Funktion erhält als ersten Parameter ein Notiz-Objekt.
### Plugin:register_user_action(title fn) ### Plugin:register_user_action(title fn)
ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。 コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。 Fügt dem Benutzer-Menü ein Listenelement hinzu.Der erste Parameter gibt den Aktionsnamen an, der zweite Parameter eine Callback-Funktion, die bei Auswahl dieses Elements ausgeführt wird, an. Die Callback-Funktion erhält als ersten Parameter ein Benutzer-Objekt.
### Plugin:register_note_view_interruptor(fn) ### Plugin:register_note_view_interruptor(fn)
UIに表示されるート情報を書き換えます。 コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。 コールバック関数の返り値でノートが書き換えられます。 Verändert die Daten einer im UI angezeigten Notiz. Die Callback-Funktion erhält als ersten Parameter ein Notiz-Objekt. Die angezeigte Notiz wird mit dem Rückgabewert der Callback-Funktion überschrieben.
### Plugin:register_note_post_interruptor(fn) ### Plugin:register_note_post_interruptor(fn)
ノート投稿時にノート情報を書き換えます。 コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。 コールバック関数の返り値でノートが書き換えられます。 Verändert die Daten einer zu erstellenden Notiz. Die Callback-Funktion erhält als ersten Parameter ein Notiz-Objekt. Die zu erstellende Notiz wird mit dem Rückgabewert der Callback-Funktion überschrieben.
### Plugin:open_url(url) ### Plugin:open_url(url)
第一引数に渡されたURLをブラウザの新しいタブで開きます。 Öffnet die als ersten Parameter gegebene URL in einem neuen Browser-Tab.
### Plugin:config ### Plugin:config
プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。 Ein Objekt, dass die Plugin-Einstellungen enthält.Die in den Plugin-Einstellung eingetragenen Werte sind hier unter den Einstellungsnamen gespeichert.

View file

@ -1,2 +1,2 @@
# Benutzerdefinierte Emojis # Benutzerdefinierte Emojis
カスタム絵文字は、インスタンスで用意された画像を絵文字のように使える機能です。 ノート、リアクション、チャット、自己紹介、名前などの場所で使うことができます。 カスタム絵文字をそれらの場所で使うには、絵文字ピッカーボタン(ある場合)を押すか、`:`を入力して絵文字サジェストを表示します。 テキスト内に`:foo:`のような形式の文字列が見つかると、`foo`の部分がカスタム絵文字名と解釈され、表示時には対応したカスタム絵文字に置き換わります。 Benutzerdefinierte Emojis sind instanzenspezifische Bilder, die dort wie Emojis verwendet werden können. Sie können in Notizen, Reaktionen, Chats, Profilbeschreibungen, Benutzernamen und an anderen Orten verwendet werden. Um ein benutzerdefiniertes Emoji an einem solchen Ort zu verwenden, drücke den Knopf, um die Emoji-Auswahl zu öffnen (falls vorhanden), oder gib ein `:` ein, um Emoji-Vorschläge anzeigen zu lassen. Wird eine Zeichenkette des Formats `:foo:` innerhalb eines Textes gefunden, so wird `foo` als Name eines benutzerdefinierten Emojis interpretiert und mit dem dazugehörigen Bild ersetzt.

View file

@ -1,18 +1,18 @@
# Deck # Deck
デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。 Deck ist eines der in Misskey verwendbaren Benutzeroberflächen.Durch die Aneinanderreihung sogenannter "Spalten" wird ein hoher Anpassungsgrad sowie das Anzeigen vieler Informationen auf einmal ermöglicht.
## カラムの追加 ## Spalten hinzufügen
デッキの背景を右クリックし、「カラムを追加」して任意のカラムを追加できます。 Um eine Spalte hinzuzufügen, klicke auf den Hintergrund des Decks und drücke "Spalte hinzufügen".
## カラムの移動 ## Spalten verschieben
カラムは、ドラッグアンドドロップで他のカラムと位置を入れ替えることが出来るほか、カラムメニュー(カラムのヘッダー右クリック)から位置を移動させることもできます。 Spalten können entweder durch Drag-and-Drop oder durch Anpassung der Spaltenoptionen (aufgerufen durch Rechtsklick auf den Spaltenkopf) individueller Spalten verschoben werden.
## カラムの水平分割 ## Horizontale Ausrichtung von Spalten
カラムは左右だけでなく、上下に並べることもできます。 カラムメニューを開き、「左に重ねる」を選択すると、左のカラムの下に現在のカラムが移動します。 上下分割を解除するには、カラムメニューの「右に出す」を選択します。 Spalten können nicht nur horizontal, sondern auch vertikal angeordnet werden. Durch Auswahl von "Auf linke Seite stapeln" im Spaltenmenü einer Spalte wird diese unter die Spalte links von sich selbst verschoben. Um dies aufzuheben, drücke "Nach rechts vom Stapel nehmen" im Spaltenmenü einer vertikal angeordneten Spalte.
## カラムの設定 ## Spalteneinstellungen
カラムメニューの「編集」を選択するとカラムの設定を編集できます。カラムの名前を変えたり、幅を変えたりできます。 Um eine Spalte zu bearbeiten, drücke "Bearbeiten" in dessen Spaltenmenü.Der Name einer Spalte sowie dessen Breite können verändert werden.
## デッキの設定 ## Deck-Einstellungen
デッキに関する設定は、[settings/deck](/settings/deck)で行えます。 Deck-spezifische Einstellungen können in [settings/deck](/settings/deck) gefunden werden.

View file

@ -1,2 +1,2 @@
# Folgt # Folgen
ユーザーをフォローすると、タイムラインにそのユーザーの投稿が表示されるようになります。ただし、他のユーザーに対する返信は含まれません。 ユーザーをフォローするには、ユーザーページの「フォロー」ボタンをクリックします。フォローを解除するには、もう一度クリックします。 Folgst du einem Benutzer, so werden dessen Beiträge auf deiner Chronik angezeigt.Antworten dieses Benutzers auf Beiträge Anderer werden jedoch nicht angezeigt. Um einem Benutzer zu folgen, drücke den "Folgen"-Knopf auf dessen Profil.Um einem Benutzer nicht mehr zu folgen, drücke den selben Knopf erneut.

View file

@ -1,68 +1,68 @@
# キーボードショートカット # Tastenkürzel
## Global ## Global
これらのショートカットは基本的にどこでも使えます。 Hier gelistete Tastenkürzel können generell überall verwendet werden.
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>Kürzel</th><th>Effekt</th><th>Ursprung</th></tr>
</thead> </thead>
<tbody> <tbody>
<tr><td><kbd class="key">P</kbd>, <kbd class="key">N</kbd></td><td>新規投稿</td><td><b>P</b>ost, <b>N</b>ew, <b>N</b>ote</td></tr> <tr><td><kbd class="key">P</kbd>, <kbd class="key">N</kbd></td><td>Neuer Beitrag</td><td><b>P</b>ost, <b>N</b>ew, <b>N</b>ote</td></tr>
<tr><td><kbd class="key">T</kbd></td><td>タイムラインの最も新しい投稿にフォーカス</td><td><b>T</b>imeline, <b>T</b>op</td></tr> <tr><td><kbd class="key">T</kbd></td><td>Neusten Beitrag der Chronik fokussieren</td><td><b>T</b>imeline, <b>T</b>op</td></tr>
<tr><td><kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">N</kbd></kbd></td><td>通知を表示/隠す</td><td><b>N</b>otifications</td></tr> <tr><td><kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">N</kbd></kbd></td><td>Benachrichtigungen anzeigen / ausblenden</td><td><b>N</b>otifications</td></tr>
<tr><td><kbd class="key">S</kbd></td><td>Suchen</td><td><b>S</b>earch</td></tr> <tr><td><kbd class="key">S</kbd></td><td>Suchen</td><td><b>S</b>earch</td></tr>
<tr><td><kbd class="key">H</kbd>, <kbd class="key">?</kbd></td><td>ヘルプを表示</td><td><b>H</b>elp</td></tr> <tr><td><kbd class="key">H</kbd>, <kbd class="key">?</kbd></td><td>Hilfe anzeigen</td><td><b>H</b>elp</td></tr>
</tbody> </tbody>
</table> </table>
## 投稿にフォーカスされた状態 ## Auf Beiträge bezogene Kürzel
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>Kürzel</th><th>Effekt</th><th>Ursprung</th></tr>
</thead> </thead>
<tbody> <tbody>
<tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>上の投稿にフォーカスを移動</td><td>-</td></tr> <tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>Fokus zum oberen Beitrag wechseln</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">J</kbd>, <kbd class="key">Tab</kbd></td><td>下の投稿にフォーカスを移動</td><td>-</td></tr> <tr><td><kbd class="key"></kbd>, <kbd class="key">J</kbd>, <kbd class="key">Tab</kbd></td><td>Fokus zum unteren Beitrag wechseln</td><td>-</td></tr>
<tr><td><kbd class="key">R</kbd></td><td>返信フォームを開く</td><td><b>R</b>eply</td></tr> <tr><td><kbd class="key">R</kbd></td><td>Antwort-Fenster öffnen</td><td><b>R</b>eply</td></tr>
<tr><td><kbd class="key">Q</kbd></td><td>Renoteフォームを開く</td><td><b>Q</b>uote</td></tr> <tr><td><kbd class="key">Q</kbd></td><td>Renote-Fenster öffnen</td><td><b>Q</b>uote</td></tr>
<tr><td><kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">Q</kbd></kbd></td><td>即刻Renoteする(フォームを開かずに)</td><td>-</td></tr> <tr><td><kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">Q</kbd></kbd></td><td>Sofort Renote tätigen (ohne Fenster)</td><td>-</td></tr>
<tr><td><kbd class="key">E</kbd>, <kbd class="key">A</kbd>, <kbd class="key">+</kbd></td><td>リアクションフォームを開く</td><td><b>E</b>mote, re<b>A</b>ction</td></tr> <tr><td><kbd class="key">E</kbd>, <kbd class="key">A</kbd>, <kbd class="key">+</kbd></td><td>Reaktionsfenster öffnen</td><td><b>E</b>mote, re<b>A</b>ction</td></tr>
<tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>数字に対応したリアクションをする(対応については後述)</td><td>-</td></tr> <tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>Mit dem Emoji, dessen Position in der Emoji-Auswahl der gedrückten Zahl entspricht, reagieren (Details folgen)</td><td>-</td></tr>
<tr><td><kbd class="key">F</kbd>, <kbd class="key">B</kbd></td><td>お気に入りに登録</td><td><b>F</b>avorite, <b>B</b>ookmark</td></tr> <tr><td><kbd class="key">F</kbd>, <kbd class="key">B</kbd></td><td>Favoriten hinzufügen</td><td><b>F</b>avorite, <b>B</b>ookmark</td></tr>
<tr><td><kbd class="key">Del</kbd>, <kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">D</kbd></kbd></td><td>投稿を削除</td><td><b>D</b>elete</tr> <tr><td><kbd class="key">Del</kbd>, <kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">D</kbd></kbd></td><td>Beitrag löschen</td><td><b>D</b>elete</tr>
<tr><td><kbd class="key">M</kbd>, <kbd class="key">O</kbd></td><td>投稿に対するメニューを開く</td><td><b>M</b>ore, <b>O</b>ther</td></tr> <tr><td><kbd class="key">M</kbd>, <kbd class="key">O</kbd></td><td>Beitrags-Menü öffnen</td><td><b>M</b>ore, <b>O</b>ther</td></tr>
<tr><td><kbd class="key">S</kbd></td><td>CWで隠された部分を表示 or 隠す</td><td><b>S</b>how, <b>S</b>ee</td></tr> <tr><td><kbd class="key">S</kbd></td><td>Verdeckten Inhalt anzeigen / ausblenden</td><td><b>S</b>how, <b>S</b>ee</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>フォーカスを外す</td><td>-</td></tr> <tr><td><kbd class="key">Esc</kbd></td><td>Fokus lösen</td><td>-</td></tr>
</tbody> </tbody>
</table> </table>
## Renoteフォーム ## Auf das Renote-Fenster bezogene Kürzel
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>Kürzel</th><th>Effekt</th><th>Ursprung</th></tr>
</thead> </thead>
<tbody> <tbody>
<tr><td><kbd class="key">Enter</kbd></td><td>Renoteする</td><td>-</td></tr> <tr><td><kbd class="key">Enter</kbd></td><td>Sendet Renote</td><td>-</td></tr>
<tr><td><kbd class="key">Q</kbd></td><td>フォームを展開する</td><td><b>Q</b>uote</td></tr> <tr><td><kbd class="key">Q</kbd></td><td>Fenster expandieren</td><td><b>Q</b>uote</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>フォームを閉じる</td><td>-</td></tr> <tr><td><kbd class="key">Esc</kbd></td><td>Fenster schließen</td><td>-</td></tr>
</tbody> </tbody>
</table> </table>
## リアクションフォーム ## Auf die Reaktionsauswahl bezogene Kürzel
デフォルトで「👍」にフォーカスが当たっている状態です。 Standardmäßig liegt der Fokus auf der "👍"-Reaktion.
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>Kürzel</th><th>Effekt</th><th>Ursprung</th></tr>
</thead> </thead>
<tbody> <tbody>
<tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd></td><td>上のリアクションにフォーカスを移動</td><td>-</td></tr> <tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd></td><td>Fokus zu oberer Reaktion wechseln</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">J</kbd></td><td>下のリアクションにフォーカスを移動</td><td>-</td></tr> <tr><td><kbd class="key"></kbd>, <kbd class="key">J</kbd></td><td>Fokus zur unteren Reaktion wechseln</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">H</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>左のリアクションにフォーカスを移動</td><td>-</td></tr> <tr><td><kbd class="key"></kbd>, <kbd class="key">H</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>Fokus zur linken Reaktion wechseln</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">L</kbd>, <kbd class="key">Tab</kbd></td><td>右のリアクションにフォーカスを移動</td><td>-</td></tr> <tr><td><kbd class="key"></kbd>, <kbd class="key">L</kbd>, <kbd class="key">Tab</kbd></td><td>Fokus zur rechten Reaktion wechseln</td><td>-</td></tr>
<tr><td><kbd class="key">Enter</kbd>, <kbd class="key">Space</kbd>, <kbd class="key">+</kbd></td><td>リアクション確定</td><td>-</td></tr> <tr><td><kbd class="key">Enter</kbd>, <kbd class="key">Space</kbd>, <kbd class="key">+</kbd></td><td>Reaktion senden</td><td>-</td></tr>
<tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>数字に対応したリアクションで確定</td><td>-</td></tr> <tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>Mit dem Emoji, dessen Position der gedrückten Zahl entspricht, reagieren</td><td>-</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>リアクションするのをやめる</td><td>-</td></tr> <tr><td><kbd class="key">Esc</kbd></td><td>Reagieren abbrechen</td><td>-</td></tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,2 +1,2 @@
# MFM # MFM
MFMは、Misskey Flavored Markdownの略で、Misskeyの様々な場所で使用できる専用のマークアップ言語です。 MFMで使用可能な構文は[MFMチートシート](/mfm-cheat-sheet)で確認できます。 MFM, abgekürzt für Misskey Flavored Markdown, beschreibt eine Misskey-exklusive Markup-Sprache. Eine Liste verwendbarer MFM-Syntax kann auf dem [MFM Spickzettel](/mfm-cheat-sheet) eingesehen werden.

View file

@ -1,13 +1,13 @@
# Stummschalten # Stummschaltung
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります: Sobald du einen Benutzer stummschaltest, werden die folgenden Arten von mit diesem Benutzer verbundenen Beiträge von Misskey nicht mehr angezeigt:
* タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote) * Beiträge dieses Nutzers in Chroniken sowie Suchergebnissen (inklusive Renotes und Antworten auf diese)
* そのユーザーからの通知 * Benachrichtigungen von diesem Benutzer
* メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴 * Chatverläufe mit diesem Benutzer in der Liste aller Chatverläufe
ユーザーをミュートするには、対象のユーザーのユーザーページに表示されている「ミュート」ボタンを押します。 Um einen Benutzer stummzuschalten, navigiere zu dessen Profil und drücke den dort angezeigten "Stummschalten"-Knopf.
ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。 Der stummgeschaltete Benutzer erhält hierüber keine Benachrichtung, und erhält darüber, ob er von einem anderen Benutzer Stummgeschaltet ist, auch keine Informationen.
設定>ミュート から、自分がミュートしているユーザー一覧を確認することができます。 Unter Einstellungen > Stummschaltungen / Blockierungen kann eine Liste aller stummgeschalteter Benutzer eingesehen werden.

View file

@ -1,10 +1,10 @@
# Pages # Seiten
## Variablen ## Variablen
変数を使うことで動的なページを作成できます。テキスト内で <b>{ 変数名 }</b> と書くとそこに変数の値を埋め込めます。例えば <b>Hello { thing } world!</b> というテキストで、変数(thing)の値が <b>ai</b> だった場合、テキストは <b>Hello ai world!</b> になります。 Durch die Verwendung von Variablen ist es möglich, dynamische Seiten zu erstellen.Wird in einem Text <b>{ Variablenname }</b> beinhaltet, wird dies mit dem Wert dieser Variable eingesetzt.Ist Beispielsweise der Wert der Variable thing in diesem Fall <b>ai</b>, dann wird der Text <b>Hallo { thing } Welt!</b> zu <b>Hallo ai Welt!</b> ausgewertet.
変数の評価(値を算出すること)は上から下に行われるので、ある変数の中で自分より下の変数を参照することはできません。例えば上から <b>A、B、C</b> と3つの変数を定義したとき、<b>C</b>の中で<b>A</b><b>B</b>を参照することはできますが、<b>A</b>の中で<b>B</b><b>C</b>を参照することはできません。 Variablen werden von oben nach unten ausgewertet, d.h. Referenzen zu Variablen, die noch nicht definiert sind, sind nicht möglich.Werden Beispielsweise die Variablen <b>A, B, C</b> in der gegebenen Reihenfolge definiert, so kann sich innerhalb von <b>C</b> auf <b>A</b> oder <b>B</b> bezogen werden, aber innerhalb von <b>A</b> nicht auf <b>B</b> oder <b>C</b>.
ユーザーからの入力を受け取るには、ページに「ユーザー入力」ブロックを設置し、「変数名」に入力を格納したい変数名を設定します(変数は自動で作成されます)。その変数を使ってユーザー入力に応じた動作を行えます。 Um (Text-)Eingabe durch Benutzer empfangen zu können, kann der Seite ein "Benutzereingabe"-Feld hinzugefügt werden, welches dann den Wert, den der Benutzer eingibt, in einer Variable mit gewünschtem Namen speichert.Durch die Verwendung dieser Benutzereingabe können dann die weiteren Aktionen der Seite gesteuert werden.
関数を使うと、値の算出処理を再利用可能な形にまとめることができます。関数を作るには、「関数」タイプの変数を作成します。関数にはスロット(引数)を設定することができ、スロットの値は関数内で変数として利用可能です。また、関数を引数に取る関数(高階関数と呼ばれます)も存在します。関数は予め定義しておくほかに、このような高階関数のスロットに即席でセットすることもできます。 Die Verwendung von Funktionen erlaubt die Definition von wiederverwendbaren Werteberechnungen.Um eine Funktion zu erstellen, wähle "Funktion" als Variablentyp.Funktionen können ebenso Slots (Parameter) verwenden, auf dessen Werte dann innerhalb der Funktion zugegriffen werden kann.Zudem ist es möglich, eine Funktion zu erstellen, dessen Parameter eine weitere Funktion ist ("Funktion höherer Ordnung").Neben der vorherigen Definition von Funktionen können in Funktionen höherer Ordnung Funktionen ebenso direkt in der Parametereingabe definiert werden.

View file

@ -1,11 +1,11 @@
# Reaktionen # Reaktionen
他の人のノートに、絵文字を付けて簡単にあなたの反応を伝えられる機能です。 リアクションするには、ノートの + アイコンをクリックしてピッカーを表示し、絵文字を選択します。 リアクションには[カスタム絵文字](./custom-emoji)も使用できます。 Verleih deinen Gedanken über die Beiträge anderer durch Reaktionen einfach Ausdruck. Um auf einen Beitrag zu reagieren, drücke das "+"-Symbol, das mit dem Beitrag angezeigt wird, und wähle ein Emoji. Es ist ebenso möglich, mit [Benutzerdefinierten Emojis](./custom-emoji) zu reagieren.
## リアクションピッカーのカスタマイズ ## Anpassung der Reaktionsauswahl
ピッカーに表示される絵文字を自分好みにカスタマイズすることができます。 設定の「リアクション」で設定します。 Die in der Reaktionsauswahl angezeigten Emojis können angepasst werden. Dies ist in den Einstellungen im Unterpunkt "Reaktionen" möglich.
## リモート投稿へのリアクションについて ## Reaktionen auf Beiträge von anderen Servern
リアクションはMisskeyオリジナルの機能であるため、リモートインスタンスがMisskeyでない限りは、ほとんどの場合「Like」としてアクティビティが送信されます。一般的にはLikeは「お気に入り」として実装されているようです。 また、相手がMisskeyであったとしても、カスタム絵文字リアクションは伝わらず、自動的に「👍」等にフォールバックされます。 Da Reaktionen eine Misskey-spezifische Funktionalität sind, werden diese von nicht-Misskey Instanzen meist als "Like"-Aktivität interpretiert.In den meisten Fällen ist die "Like"-Funktionalität als "Favoriten"-Funktion implementiert. Zudem werden Reaktionen mit benutzerdefinierten Emojis nicht übertragen und anstattdessen automatisch auf eine "👍"-Reaktion zurückfallen, auch wenn der Interaktionspartner ein anderer Misskey-Server ist.
## リモートからのリアクションについて ## Reaktionen von Benutzern anderer Server
リモートから「Like」アクティビティを受信したとき、Misskeyでは「👍」のリアクションとして解釈されます。 Werden von entfernten Servern "Like"-Aktivitäten gesendet, so werden diese von Misskey als "👍"-Reaktion interpretiert.

View file

@ -1,33 +1,33 @@
# MisskeyリバーシBotの開発 # Entwicklung eines Misskey Reversi-Bots
Misskeyのリバーシ機能に対応したBotの開発方法をここに記します。 Auf dieser Seite wird die Entwicklung eines Bots für Misskey Reversi erläutert.
1. `games/reversi`ストリームに以下のパラメータを付けて接続する: 1. Verbinde dich unter Verwendung folgender Parameter mit dem `games/reversi`-Stream:
* `i`: botアカウントのAPIキー * `i`: API-Schlüssel des Bot-Kontos
2. 対局への招待が来たら、ストリームから`invited`イベントが流れてくる 2. Sobald den Bot eine Spieleinladung erreicht, wird das `invited`-Event vom Stream gesendet
* イベントの中身に、`parent`という名前で対局へ誘ってきたユーザーの情報が含まれている * Der Inhalt dieses Events ist ein `parent`-Attribut, was Daten über den Benutzer, der die Einladung verschickt hat, beinhaltet
3. `games/reversi/match`へ、`user_id`として`parent`の`id`が含まれたリクエストを送信する 3. Sende eine Anfrage an `games/reversi/match`, wobei der Wert des `user_id`-Parameters das `id`-Attribut des vorher erhaltenen `parent`-Objekts ist
4. 上手くいくとゲーム情報が返ってくるので、`games/reversi-game`ストリームへ、以下のパラメータを付けて接続する: 4. Gelingt die Anfrage, werden die Spieldaten als Rückgabewert geliefert. Nutze diese dann, um die unten gelisteten Parameter an den `games/reversi-game`-Stream zu senden:
* `i`: botアカウントのAPIキー * `i`: API-Schlüssel des Bot-Kontos
* `game`: `game`の`id` * `game`: `id`-Attribut des `game`-Objekts
5. この間、相手がゲームの設定を変更するとその都度`update-settings`イベントが流れてくるので、必要であれば何かしらの処理を行う 5. Währenddessen kann der Spielgegner die Spieleinstellungen verändern. Jedes mal, wenn eine Einstellung verändert wird, sendet der Stream ein `update-settings`-Event, weswegen möglicherweise Logik, um solche Events verarbeiten zu können, notwendig ist.
6. 設定に満足したら、`{ type: 'accept' }`メッセージをストリームに送信する 6. Sobald du mit den Spieleinstellungen zufrieden bist, sende die Nachricht `{ type: 'accept' }` an den Stream
7. ゲームが開始すると、`started`イベントが流れてくる 7. Sobald das Spiel startet, wird das `started`-Event gesendet
* イベントの中身にはゲーム情報が含まれている * Der Inhalt dieses Events sind die Spieldaten
8. 石を打つには、ストリームに`{ type: 'set', pos: <位置> }`を送信する(位置の計算方法は後述) 8. Um einen Stein zu setzen, sende die folgende Nachricht an den Stream: `{ type: 'set', pos: <Position> }` (Positionsberechnungen werden später erläutert)
9. 相手または自分が石を打つと、ストリームから`set`イベントが流れてくる 9. Setzt der Gegner oder du einen Stein, wird das `set`-Event vom Stream gesendet
* `color`として石の色が含まれている * Die Farbe der Spielfigur ist als `color` enthalten
* `pos`として位置情報が含まれている * Die Position der Spielfigur ist als `pos` enthalten
## 位置の計算法 ## Positionsberechnungen
8x8のマップを考える場合、各マスの位置(インデックスと呼びます)は次のようになっています: Im Falle eines 8x8 Spielbrettes sind die Felder wie folgt aufgestellt (jeweils mit ihrem Index versehen):
``` ```
+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+
| 0| 1| 2| 3| 4| 5| 6| 7| | 0| 1| 2| 3| 4| 5| 6| 7|
@ -38,29 +38,29 @@ Misskeyのリバーシ機能に対応したBotの開発方法をここに記し
... ...
``` ```
### X,Y座標 から インデックス に変換する ### Berechnung von Indizes durch X und Y Koordinaten
``` ```
pos = x + (y * mapWidth) pos = x + (y * mapWidth)
``` ```
`mapWidth`は、ゲーム情報の`map`から、次のようにして計算できます: Bei `mapWidth` handelt es sich um wie folgt aus `map` entnommene Spielbrettdaten:
``` ```
mapWidth = map[0].length mapWidth = map[0].length
``` ```
### インデックス から X,Y座標 に変換する ### Berechnung der X und Y Koordinaten durch Indizes
``` ```
x = pos % mapWidth x = pos % mapWidth
y = Math.floor(pos / mapWidth) y = Math.floor(pos / mapWidth)
``` ```
## マップ情報 ## Spielbrettdaten
マップ情報は、ゲーム情報の`map`に入っています。 文字列の配列になっており、ひとつひとつの文字がマス情報を表しています。 それをもとにマップのデザインを知る事が出来ます: Die Spielbrettdaten sind innerhalb vom in den Spieldaten enthaltenen `map`-Attribut gespeichert. Da das Spielbrett als Array von Zeichenketten representiert wird, steht jedes Symbol für ein Spielfeld. Basierend auf diesen Informationen lässt sich der Spielbrettzustand rekonstruieren.
* `(スペース)` ... マス無し * `(Leer)` ... Kein Spielfeld
* `-` ... マス * `-` ... Spielfeld
* `b` ... 初期配置される黒石 * `b` ... Spielfeld auf dem zuerst platzierter Stein schwarz war
* `w` ... 初期配置される白石 * `w` ... Spielfeld auf dem zuerst platzierter Stein weiß war
例えば、4*4の次のような単純なマップがあるとします: Sei folgendes simple 4*4 Spielbrett als Beispiel gegeben:
```text ```text
+---+---+---+---+ +---+---+---+---+
| | | | | | | | | |
@ -73,23 +73,23 @@ y = Math.floor(pos / mapWidth)
+---+---+---+---+ +---+---+---+---+
``` ```
この場合、マップデータはこのようになります: In diesem Fall sehen die Spielbrettdaten wie folgt aus:
```javascript ```javascript
['----', '-wb-', '-bw-', '----'] ['----', '-wb-', '-bw-', '----']
``` ```
## ユーザーにフォームを提示して対話可能Botを作成する ## Erstellen eines Bots, der mit dem Benutzer durch das Zeigen von Fenstern kommunizieren kann
ユーザーとのコミュニケーションを行うため、ゲームの設定画面でユーザーにフォームを提示することができます。 例えば、Botの強さをユーザーが設定できるようにする、といったシナリオが考えられます。 Das Kommunizieren mit dem Spieler kann durch das Anzeigen von Fenstern während der Vorbereitungsphase des Spiels umgesetz werden. Beispielsweise kann so die Schwierigkeit des Bots durch den Benutzer konfiguriert werden.
フォームを提示するには、`reversi-game`ストリームに次のメッセージを送信します: Um ein Fenster anzuzeigen, sende folgende Nachricht an den `reversi-game`-Stream:
```javascript ```javascript
{ {
type: 'init-form', type: 'init-form',
body: [フォームコントロールの配列] body: [Array an Fenster-Elementen]
} }
``` ```
フォームコントロールの配列については今から説明します。 フォームコントロールは、次のようなオブジェクトです: Details bezüglich des Arrays an Fenster-Elementen werden nun erklärt. Ein Element eines Fensters ist wie das folgende Objekt aufgebaut:
```javascript ```javascript
{ {
id: 'switch1', id: 'switch1',
@ -98,10 +98,10 @@ y = Math.floor(pos / mapWidth)
value: false value: false
} }
``` ```
`id` ... コントロールのID。 `type` ... コントロールの種類。後述します。 `label` ... コントロールと一緒に表記するテキスト。 `value` ... コントロールのデフォルト値。 `id` ... Die ID des Elements. `type` ... Der Typ des Elements.Diese werden später erläutert. `label` ... Text der zusammen mit dem Element angezeigt wird. `value` ... Standardwert des Elements.
### フォームの操作を受け取る ### Verarbeitung von Interaktionen mit Elementen
ユーザーがフォームを操作すると、ストリームから`update-form`イベントが流れてきます。 イベントの中身には、コントロールのIDと、ユーザーが設定した値が含まれています。 例えば、上で示したスイッチをユーザーがオンにしたとすると、次のイベントが流れてきます: Interagiert der Benutzer mit einem der Elemente eines Fensters, so wird ein `update-form`-Element vom Stream gesendet. Die Inhalte dieses Events sind die ID des Elements sowie der Wert des Elements, der vom Benutzer eingestellt wurde. Wird beispielsweise der obige Beispielschalter eingeschaltet, wird das folgende Event gesendet:
```javascript ```javascript
{ {
id: 'switch1', id: 'switch1',
@ -109,52 +109,52 @@ y = Math.floor(pos / mapWidth)
} }
``` ```
### フォームコントロールの種類 ### Arten von Form-Elementen
#### Fallunterscheidung #### Schalter
type: `switch` スイッチを表示します。何かの機能をオン/オフさせたい場合に有用です。 type: `switch` Zeigt einen Schalter an.Eignet sich für Fälle, in denen etwas entweder ein- oder ausgeschaltet werden kann.
##### プロパティ ##### Attribute
`label` ... スイッチに表記するテキスト。 `label` ... Auf dem Schalter anzuzeigender Text.
#### ラジオボタン #### Optionsfeld
type: `radio` ラジオボタンを表示します。選択肢を提示するのに有用です。例えば、Botの強さを設定させるなどです。 type: `radio` Zeigt ein Optionsfeld an.Eignet sich für Fälle, in denen verschiedene Optionen angezeigt werden.z.B. zur Einstellung der Stärke des Bots.
##### プロパティ ##### Attribute
`items` ... ラジオボタンの選択肢。例: `items` ... Die verfügbaren Optionen.z.B.:
```javascript ```javascript
items: [{ items: [{
label: '', label: 'Schwach',
value: 1 value: 1
}, { }, {
label: '', label: 'Mittelmäßíg',
value: 2 value: 2
}, { }, {
label: '', label: 'Stark',
value: 3 value: 3
}] }]
``` ```
#### スライダー #### Schieberegler
type: `slider` スライダーを表示します。 type: `slider` Zeigt einen Schieberegler an.
##### プロパティ ##### Attribute
`min` ... スライダーの下限。 `max` ... スライダーの上限。 `step` ... 入力欄で刻むステップ値。 `min` ... Der minimale Reglerwert. `max` ... Der maximale Reglerwert. `step` ... Der Abstand zwischen zwei Stufen des Reglers.
#### テキストボックス #### Textbox
type: `textbox` テキストボックスを表示します。ユーザーになにか入力させる一般的な用途に利用できます。 type: `textbox` Zeigt eine Textbox an.Für verschiedene Fälle, in denen Texteingabe des Benutzers gefragt sind, verwendbar.
## ユーザーにメッセージを表示する ## Dem Benutzer Nachrichten zeigen
設定画面でユーザーと対話する、フォーム以外のもうひとつの方法がこれです。ユーザーになにかメッセージを表示することができます。 例えば、ユーザーがBotの対応していないモードやマップを選択したとき、警告を表示するなどです。 メッセージを表示するには、次のメッセージをストリームに送信します: Dies ist eine alternative Methode, um mit dem Benutzer zu kommunieren, abgesehen vom Anzeigen eines Fensters während der Vorbereitungsphase des Spiels.Hierdurch kann dem Benutzer eine Nachricht angezeigt werden. Beispielsweise kann eine Warnung angezeigt werden, falls ein Spielmodus oder eine Spielkarte ausgewählt wird, mit der der Bot nicht kompatibel ist. Um eine Nachricht anzuzeigen, muss folgende Nachricht an den Stream gesendet werden:
```javascript ```javascript
{ {
type: 'message', type: 'message',
body: { body: {
text: 'メッセージ内容', text: 'Nachrichteninhalt',
type: 'メッセージの種類' type: 'Nachrichtenart'
} }
} }
``` ```
メッセージの種類: `success`, `info`, `warning`, `error` Nachrichtenarten: `success`, `info`, `warning`, `error`.
## 投了する ## Aufgeben
投了をするには、<a href="./api/endpoints/games/reversi/games/surrender">このエンドポイント</a>にリクエストします。 Um aufzugeben, sende eine Anfrage an <a href="./api/endpoints/games/reversi/games/surrender">diesen Endpunkt</a>.

View file

@ -1,25 +1,25 @@
# ストリーミングAPI # Streaming API
ストリーミングAPIを使うと、リアルタイムで様々な情報(例えばタイムラインに新しい投稿が流れてきた、メッセージが届いた、フォローされた、など)を受け取ったり、様々な操作を行ったりすることができます。 Durch die Verwendung des Streaming-APIs können verschiedene Daten (z.B. darüber, dass neue Beiträge geschrieben wurden, neue Direktnachrichten eingetroffen sind, Benachrichtigungen über einen neuen Follower, usw) in Echtzeit empfangen werden und dann basierend auf diesen verschiedene Aktionen getätigt werden.
## ストリームに接続する ## Eine Verbindung zum Stream aufbauen
ストリーミングAPIを利用するには、まずMisskeyサーバーに**websocket**接続する必要があります。 Um das Streaming-API zu benutzen, muss zuerst eine Verbindung zu Misskey's **websocket** Server aufgebaut werden.
以下のURLに、`i`というパラメータ名で認証情報を含めて、websocket接続してください。例: Baue bitte mit Hilfe der unten stehenden URL eine websocket-Verbindung auf, wobei die Anmeldedaten als `i`-Parameter enthalten sind.z.B.:
``` ```
%WS_URL%/streaming?i=xxxxxxxxxxxxxxx %WS_URL%/streaming?i=xxxxxxxxxxxxxxx
``` ```
認証情報は、自分のAPIキーや、アプリケーションからストリームに接続する際はユーザーのアクセストークンのことを指します。 Anmeldedaten steht hierfür entweder für den eigenen API-Schlüssel oder bei Verbindungen zum Stream für den durch eine Anwendung generierten Zugangstoken eines Benutzers.
<div class="ui info"> <div class="ui info">
<p><i class="fas fa-info-circle"></i> 認証情報の取得については、<a href="./api">こちらのドキュメント</a>をご確認ください。</p> <p><i class="fas fa-info-circle"></i> Siehe <a href="./api">dieses Dokument</a> für Informationen, wie solche Anmeldedaten erhalten werden können.</p>
</div> </div>
--- ---
認証情報は省略することもできますが、その場合非ログインでの利用ということになり、受信できる情報や可能な操作は限られます。例: Ein Verbindungsaufbau ohne Anmeldedaten ist ebenso möglich, jedoch wird in diesem Fall der Zugriff auf manche Daten sowie die Verwendung mancher Funktionen eingeschränkt.z.B.:
``` ```
%WS_URL%/streaming %WS_URL%/streaming
@ -27,15 +27,15 @@
--- ---
ストリームに接続すると、後述するAPI操作や、投稿の購読を行ったりすることができます。 しかしまだこの段階では、例えばタイムラインへの新しい投稿を受信したりすることはできません。 それを行うには、ストリーム上で、後述する**チャンネル**に接続する必要があります。 Eine Verbindung zum Stream kann durch die später erläuterte API oder durch das Abbonieren individueller Beiträge getätigt werden. Jedoch können zu diesem Zeitpunkt noch keine Informationen über Chroniken wie das Eintreffen neuer Beiträge empfangen werden. Um dies zu ermöglichen, müssen Verbindungen zu später erläuterten **Kanälen** aufgebaut werden.
**ストリームでのやり取りはすべてJSONです。** **Alle Nachrichten an den sowie vom Stream sind in JSON-Format.**
## Kanäle ## Kanäle
MisskeyのストリーミングAPIにはチャンネルという概念があります。これは、送受信する情報を分離するための仕組みです。 Misskeyのストリームに接続しただけでは、まだリアルタイムでタイムラインの投稿を受信したりはできません。 ストリーム上でチャンネルに接続することで、様々な情報を受け取ったり情報を送信したりすることができるようになります。 Innerhalb des Misskey Streaming-APIs existiert das Konzept von Kanälen.Diese werden zur Abspaltung der Informationen, die erhalten werden sollen, verwendet. Wird eine Verbindung zum Misskey Stream aufgebaut, so ist es noch nicht möglich, sofort Echtzeit-Aktualisierungen zu empfangen. Durch den Verbindungsaufbau zu Kanälen des Streams wird beidseitige Kommunikation bezüglich Informationen dieses Kanals ermöglicht.
### チャンネルに接続する ### Verbindungen zu Kanälen aufbauen
チャンネルに接続するには、次のようなデータをJSONでストリームに送信します: Um eine Verbindung zu einem Kanal aufzubauen, sende die folgende Nachricht:
```json ```json
{ {
@ -50,19 +50,19 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
} }
``` ```
ここで、 Hier,
* `channel`には接続したいチャンネル名を設定します。チャンネルの種類については後述します。 * steht `channel` für den Namen des Kanals, zu dem eine Verbindung aufgebaut werden soll.Eine Liste der verfügbaren Kanäle wird später angegeben.
* `id`にはそのチャンネルとやり取りするための任意のIDを設定します。ストリームでは様々なメッセージが流れるので、そのメッセージがどのチャンネルからのものなのか識別する必要があるからです。このIDは、UUIDや、乱数のようなもので構いません。 * steht `id` für eine einzigartige ID zur Kommunikation mit diesem Kanal.Da durch den Stream viele verschiedene Nachrichten erhalten werden können, ist eine Zuordnung, zu welchen Kanal eine Nachricht gehört, notwendig.Diese ID kann eine UUID oder etwas wie der Wert eines Zufallszahlengenerators sein.
* `params`はチャンネルに接続する際のパラメータです。チャンネルによって接続時に必要とされるパラメータは異なります。パラメータ不要のチャンネルに接続する際は、このプロパティは省略可能です。 * steht `params` für die Parameter zum Verbindunsgaufbau.Je nach Kanal können die verfügbaren Parameter abweichen.Bei Kanälen, die keine Parameter akzeptieren, kann dieses Attribut ausgelassen werden.
<div class="ui info"> <div class="ui info">
<p><i class="fas fa-info-circle"></i> IDはチャンネルごとではなく「チャンネルの接続ごと」です。なぜなら、同じチャンネルに異なるパラメータで複数接続するケースもあるからです。</p> <p><i class="fas fa-info-circle"></i> Diese IDs sollen für jede Verbindung zu einem Kanal einzigartig sein, nicht nur für jeden Kanal.Der Grund dafür ist, dass mehrere Verbindungen zum selben Kanal mit unterschiedlichen Parametern zur selben Zeit bestehen können.</p>
</div> </div>
### チャンネルからのメッセージを受け取る ### Verarbeitung von eintreffenden Nachrichten der Kanäle
例えばタイムラインのチャンネルなら、新しい投稿があった時にメッセージを発します。そのメッセージを受け取ることで、タイムラインに新しい投稿がされたことをリアルタイムで知ることができます。 Beispielsweise wird bei Erstellung eines neuen Beitrags auf einer Chronik von einem Kanal eine Nachricht ausgelöst.Durch die Verarbeitung solcher Nachrichten ist es möglich, in Echtzeit über die Erstellung eines neuen Beitrags zu erfahren.
チャンネルがメッセージを発すると、次のようなデータがJSONでストリームに流れてきます: Sendet ein Kanal eine Nachricht, so wird vom Stream folgendes JSON-Objekt empfangen:
```json ```json
{ {
type: 'channel', type: 'channel',
@ -76,15 +76,15 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
} }
``` ```
ここで、 Hier,
* `id`には前述したそのチャンネルに接続する際に設定したIDが設定されています。これで、このメッセージがどのチャンネルからのものなのか知ることができます。 * steht `id` für die zum Verbindungsaufbau gewählte ID, die zuvor erläutert wurde.Hierdurch wird eine Zuordnung, welche Nachricht zu welchen Kanal gehört, ermöglicht.
* `type`にはメッセージの種類が設定されます。チャンネルによって、どのような種類のメッセージが流れてくるかは異なります。 * steht `type` für die Art der Nachricht.Je nach Kanal können die Arten der Nachrichten, die von einem Kanal empfangen werden, abweichen.
* `body`にはメッセージの内容が設定されます。チャンネルによって、どのような内容のメッセージが流れてくるかは異なります。 * steht `body` für den Inhalt der Nachricht.Je nach Kanal kann der Inhalt der Nachrichten, die von einem Kanal empfangen werden, abweichen.
### チャンネルに向けてメッセージを送信する ### Nachrichten an Kanäle senden
チャンネルによっては、メッセージを受け取るだけでなく、こちらから何かメッセージを送信し、何らかの操作を行える場合があります。 Je nach Kanal kann es möglich sein, nicht nur Nachrichten vom Kanal zu empfangen, sondern auch Nachrichten an diesen zu senden, die dann unterschiedliche Aktionen auslösen können.
チャンネルにメッセージを送信するには、次のようなデータをJSONでストリームに送信します: Um eine Nachricht an einen Kanal zu senden, sende folgendes JSON-Objekt an den Stream:
```json ```json
{ {
type: 'channel', type: 'channel',
@ -98,13 +98,13 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
} }
``` ```
ここで、 Hier,
* `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。これで、このメッセージがどのチャンネルに向けたものなのか識別させることができます。 * steht `id` für die zum Verbindungsaufbau gewählte ID, die zuvor erläutert wurde.Hierdurch wird festgelegt, an welchen Kanal diese Nachricht gesendet werden soll.
* `type`にはメッセージの種類を設定します。チャンネルによって、どのような種類のメッセージを受け付けるかは異なります。 * steht `type` für die Art der Nachricht.Je nach Kanal können die Arten der Nachrichten, die an einen Kanal gesendet werden können, abweichen.
* `body`にはメッセージの内容を設定します。チャンネルによって、どのような内容のメッセージを受け付けるかは異なります。 * steht `body` für den Inhalt der Nachricht.Je nach Kanal kann der Inhalt der Nachrichten, der an einen Kanal gesendet werden kann, abweichen.
### チャンネルから切断する ### Verbindungen zu Kanälen trennen
チャンネルから切断するには、次のようなデータをJSONでストリームに送信します: Um die Verbindung zu einem Kanal zu trennen, sende die folgende Nachricht:
```json ```json
{ {
@ -115,14 +115,14 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
} }
``` ```
ここで、 Hier,
* `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。 * steht `id` für die zum Verbindungsaufbau gewählte ID.
## ストリームを経由してAPIリクエストする ## API-Anfragen durch den Stream senden
ストリームを経由してAPIリクエストすると、HTTPリクエストを発生させずにAPIを利用できます。そのため、コードを簡潔にできたり、パフォーマンスの向上を見込めるかもしれません。 Durch den Stream ist es auch möglich, API-Anfragen ohne die Verwendung einer HTTP-Anfrage zu senden.So kann möglicherweise Code übersichtlicher und effizienter gehalten werden.
ストリームを経由してAPIリクエストするには、次のようなデータをJSONでストリームに送信します: Um via den Stream eine API-Anfrage zu senden, sende folgendes JSON-Objekt an den Stream:
```json ```json
{ {
type: 'api', type: 'api',
@ -136,18 +136,18 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
} }
``` ```
ここで、 Hier,
* `id`には、APIのレスポンスを識別するための、APIリクエストごとの一意なIDを設定する必要があります。UUIDや、簡単な乱数のようなもので構いません。 * existiert `id` zur Zuordnung von Anfrage und Antwort und muss auf eine einzigartige ID gesetzt werden.Die Verwendung von UUIDs oder auch dem Wert eines simplen Zufallszahlengenerators ist empfohlen.
* `endpoint`には、あなたがリクエストしたいAPIのエンドポイントを指定します。 * gibt `endpoint` den Endpoint an, an den die Anfrage gesendet werden soll.
* `data`には、エンドポイントのパラメータを含めます。 * enthält `data` die Parameter der Anfrage des Endpoints.
<div class="ui info"> <div class="ui info">
<p><i class="fas fa-info-circle"></i> APIのエンドポイントやパラメータについてはAPIリファレンスをご確認ください。</p> <p><i class="fas fa-info-circle"></i> Siehe die API-Referenz bezüglich einer Auflistung verfügbarer API-Endpoints sowie dessen Parameter.</p>
</div> </div>
### レスポンスの受信 ### Verarbeitung von Antworten auf Anfragen
APIへリクエストすると、レスポンスがストリームから次のような形式で流れてきます。 Sobald eine Anfrage an die API gesendet wurde, wird eine Antwort wie die folgende empfangen:
```json ```json
{ {
@ -158,23 +158,23 @@ APIへリクエストすると、レスポンスがストリームから次の
} }
``` ```
ここで、 Hier,
* `xxxxxxxxxxxxxxxx`の部分には、リクエストの際に設定された`id`が含まれています。これにより、どのリクエストに対するレスポンスなのか判別することができます。 * steht an Stelle der `xxxxxxxxxxxxxxxx` die vorher angegebene `id`.Dadurch ist eine Zuordnung von Anfrage zu Antwort möglich.
* `body`には、レスポンスが含まれています。 * ist der Antwortwert der Anfrage in `body` enthalten.
## 投稿のキャプチャ ## Beitragserfassung
Misskeyは投稿のキャプチャと呼ばれる仕組みを提供しています。これは、指定した投稿のイベントをストリームで受け取る機能です。 Misskey stellt eine sogenannte Beitragserfassung zur Verfügung.Hierdurch können dem angegebenen Beitrag zugehörige Events über den Stream empfangen werden.
例えばタイムラインを取得してユーザーに表示したとします。ここで誰かがそのタイムラインに含まれるどれかの投稿に対してリアクションしたとします。 Sei beispielsweise eine Situation, in der einem Benutzer eine Chronik angezeigt wird.Nun wird von jemanden auf einen der Beiträge dieser Chronik reagiert.
しかし、クライアントからするとある投稿にリアクションが付いたことなどは知る由がないため、リアルタイムでリアクションをタイムライン上の投稿に反映して表示するといったことができません。 Da der Client jedoch nicht wissen kann, dass ein spezieller Beitrag eine Reaktion erhalten hat, ist es nicht möglich, diese Reaktion in Echtzeit darzustellen.
この問題を解決するために、Misskeyは投稿のキャプチャ機構を用意しています。投稿をキャプチャすると、その投稿に関するイベントを受け取ることができるため、リアルタイムでリアクションを反映させたりすることが可能になります。 Um dieses Problem zu lösen, wurde die Funktionalität der Beitragserfassung implementiert.Wird ein Beitrag erfasst, so werden verschiedene diesem Beitrag zugeordnete Events in Echtzeit übermittelt, um bei einer Veränderung diese sofort auf der Chronik anzeigen zu können.
### 投稿をキャプチャする ### Einen Beitrag erfassen
投稿をキャプチャするには、ストリームに次のようなメッセージを送信します: Um einen Beitrag zu erfassen, sende folgende Nachricht an den Stream:
```json ```json
{ {
@ -185,12 +185,12 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
} }
``` ```
ここで、 Hier,
* `id`にキャプチャしたい投稿の`id`を設定します。 * `id` enthält die `id` des Beitrags der erfasst werden soll.
このメッセージを送信すると、Misskeyにキャプチャを要請したことになり、以後、その投稿に関するイベントが流れてくるようになります。 Sobald diese Nachricht gesendet wurde wird dieser Beitrag von Misskey erfasst und es können von nun an diesen Beitrag betreffende Events empfangen werden.
例えば投稿にリアクションが付いたとすると、次のようなメッセージが流れてきます: Beispielsweise wird das folgende Event empfangen, sobald einem erfassten Beitrag eine Reaktion hinzugefügt wurde:
```json ```json
{ {
@ -206,20 +206,20 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
} }
``` ```
ここで、 Hier,
* `body`内の`id`に、イベントを発生させた投稿のIDが設定されます。 * das `id`-Attribut in `body` enthält die ID des Beitrags, der das Event ausgelöst hat.
* `body`内の`type`に、イベントの種類が設定されます。 * das `type`-Attribut in `body` die Art des Events.
* `body`内の`body`に、イベントの詳細が設定されます。 * das `body`-Attribut von `body` enthält weitere Informationen über das Event.
#### イベントの種類 #### Arten von Events
##### `reacted` ##### `reacted`
その投稿にリアクションがされた時に発生します。 Wird bei Reaktion auf den Beitrag ausgelöst.
* `reaction`に、リアクションの種類が設定されます。 * `reaction` enthält die Art der Reaktion.
* `userId`に、リアクションを行ったユーザーのIDが設定されます。 * `userId` enthält die ID des Benutzers, der die Reaktion hinzufügte
: z.B.:
```json ```json
{ {
type: 'noteUpdated', type: 'noteUpdated',
@ -235,11 +235,11 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
``` ```
##### `deleted` ##### `deleted`
その投稿が削除された時に発生します。 Wird bei Löschung des Beitrags ausgelöst.
* `deletedAt`に、削除日時が設定されます。 * `deletedAt` enthält Löschdatum und Zeitpunkt.
: z.B.:
```json ```json
{ {
type: 'noteUpdated', type: 'noteUpdated',
@ -254,12 +254,12 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
``` ```
##### `pollVoted` ##### `pollVoted`
その投稿に添付されたアンケートに投票された時に発生します。 Wird bei Abstimmung in einer dem Beitrag angehörigen Umfrage ausgelöst.
* `choice`に、選択肢IDが設定されます。 * `choice` enthält die ID der gewählten Auswahlmöglichkeit.
* `userId`に、投票を行ったユーザーのIDが設定されます。 * `userId` enthält die ID des Benutzers, der auf die Umfrage antwortete
: z.B.:
```json ```json
{ {
type: 'noteUpdated', type: 'noteUpdated',
@ -274,11 +274,11 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
} }
``` ```
### 投稿のキャプチャを解除する ### Beitragserfassung aufheben
その投稿がもう画面に表示されなくなったりして、その投稿に関するイベントをもう受け取る必要がなくなったときは、キャプチャの解除を申請してください。 Sobald ein Beitrag nicht mehr auf der Chronik angezeigt wird und somit diesen Beitrag betreffende Events nicht mehr benötigt werden, bitten wir um die Aufhebung der Erfassung dieses Beitrags.
次のメッセージを送信します: Sende die folgende Nachricht:
```json ```json
{ {
@ -289,66 +289,66 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
} }
``` ```
ここで、 Hier,
* `id`にキャプチャを解除したい投稿の`id`を設定します。 * `id` enthält die `id` des Beitrags, für den Erfassung aufgehoben werden soll.
このメッセージを送信すると、以後、その投稿に関するイベントは流れてこないようになります。 Sobald diese Nachricht versendet wurde, werden mit diesem Beitrag verbundene Events nicht mehr empfangen.
# チャンネル一覧 # List aller Kanäle
## `main` ## `main`
アカウントに関する基本的な情報が流れてきます。このチャンネルにパラメータはありません。 Allgemeine den Benutzer betreffende Informationen werden über diesen Kanal empfangen.Dieser Kanal hat keine Parameter.
### 流れてくるイベント一覧 ### Liste der Events, die augelöst werden können
#### `renote` #### `renote`
自分の投稿がRenoteされた時に発生するイベントです。自分自身の投稿をRenoteしたときは発生しません。 Wird ausgelöst, sobald ein eigener Beitrag ein Renote erhält.Renotes von eigenen Beiträgen lösen dieses Event nicht aus.
#### `mention` #### `mention`
誰かからメンションされたときに発生するイベントです。 Wird ausgelöst, sobald der Benutzer von einem anderen Benutzer erwähnt wird.
#### `readAllNotifications` #### `readAllNotifications`
自分宛ての通知がすべて既読になったことを表すイベントです。このイベントを利用して、「通知があることを示すアイコン」のようなものをオフにしたりする等のケースが想定されます。 Dieses Event gibt an, dass alle Benachrichtungen auf gelesen gesetzt wurden.Es wird erwartet, dass dieses Event für bsp. Fälle eingesetzt wird, in denen der Indikator für ungelesene Benachrichtigungen deaktiviert werden soll.
#### `meUpdated` #### `meUpdated`
自分の情報が更新されたことを表すイベントです。 Wird bei Aktualisierung der eigenen Benutzerdaten augelöst.
#### `follow` #### `follow`
自分が誰かをフォローしたときに発生するイベントです。 Wird augelöst, sobald einem neuen Benutzer gefolgt wird.
#### `unfollow` #### `unfollow`
自分が誰かのフォローを解除したときに発生するイベントです。 Wird augelöst, sobald einem Benutzer nicht mehr gefolgt wird.
#### `followed` #### `followed`
自分が誰かにフォローされたときに発生するイベントです。 Wird augelöst, sobald der Benutzer einen neuen Follower erhält.
## `homeTimeline` ## `homeTimeline`
ホームタイムラインの投稿情報が流れてきます。このチャンネルにパラメータはありません。 Informationen über Beiträge der Startseiten-Chronik werden über diesen Kanal empfangen.Dieser Kanal hat keine Parameter.
### 流れてくるイベント一覧 ### Liste der Events, die augelöst werden können
#### `note` #### `note`
タイムラインに新しい投稿が流れてきたときに発生するイベントです。 Wird augelöst, sobald auf der Chronik ein neuer Beitrag erscheint.
## `localTimeline` ## `localTimeline`
ローカルタイムラインの投稿情報が流れてきます。このチャンネルにパラメータはありません。 Informationen über Beiträge der lokalen Chronik werden über diesen Kanal empfangen.Dieser Kanal hat keine Parameter.
### 流れてくるイベント一覧 ### Liste der Events, die augelöst werden können
#### `note` #### `note`
ローカルタイムラインに新しい投稿が流れてきたときに発生するイベントです。 Wird augelöst, sobald auf der lokalen Chronik ein neuer Beitrag erscheint.
## `hybridTimeline` ## `hybridTimeline`
ソーシャルタイムラインの投稿情報が流れてきます。このチャンネルにパラメータはありません。 Informationen über Beiträge der Sozial-Chronik werden über diesen Kanal empfangen.Dieser Kanal hat keine Parameter.
### 流れてくるイベント一覧 ### Liste der Events, die augelöst werden können
#### `note` #### `note`
ソーシャルタイムラインに新しい投稿が流れてきたときに発生するイベントです。 Wird augelöst, sobald auf der Sozial-Chronik ein neuer Beitrag erscheint.
## `globalTimeline` ## `globalTimeline`
グローバルタイムラインの投稿情報が流れてきます。このチャンネルにパラメータはありません。 Informationen über Beiträge der globalen Chronik werden über diesen Kanal empfangen.Dieser Kanal hat keine Parameter.
### 流れてくるイベント一覧 ### Liste der Events, die augelöst werden können
#### `note` #### `note`
グローバルタイムラインに新しい投稿が流れてきたときに発生するイベントです。 Wird augelöst, sobald auf der globalen Chronik ein neuer Beitrag erscheint.

View file

@ -1,12 +1,12 @@
# Farbthemen # Farbthemen
テーマを設定して、Misskeyクライアントの見た目を変更できます。 Durch die Verwendung von Farbthemen kann das Aussehen des Misskey-Clients verändert werden.
## テーマの設定 ## Themeneinstellungen
設定 > テーマ Einstellungen > Farbthemen
## テーマを作成する ## Erstellung eines Themas
テーマコードはJSON5で記述されたテーマオブジェクトです。 テーマは以下のようなオブジェクトです。 Themencodes werden im Format eines JSON5-Objekts gespeichert. Themen werden wie das folgende Objekt dargestellt:
``` js ``` js
{ {
id: '17587283-dd92-4a2c-a22c-be0637c9e22a', id: '17587283-dd92-4a2c-a22c-be0637c9e22a',
@ -33,36 +33,36 @@
``` ```
* `id` ... テーマの一意なID。UUIDをおすすめします。 * `id` ... Die einzigartige Identifikation des Themas.Verwendung von UUIDs ist empfohlen.
* `name` ... テーマ名 * `name` ... Name des Themas
* `author` ... テーマの作者 * `author` ... Ersteller des Themas
* `desc` ... テーマの説明(オプション) * `desc` ... Beschreibung des Themas (optional)
* `base` ... 明るいテーマか、暗いテーマか * `base` ... Ob dies ein Thema für den Hell- oder Dunkelmodus ist
* `light`にすると明るいテーマになり、`dark`にすると暗いテーマになります。 * Wird `light` angegeben, so wird es als Thema des Hellmodus angezeigt, wird `dark` angegeben, so wird es als Thema des Dunkelmodus angezeigt.
* テーマはここで設定されたベーステーマを継承します。 * Das Thema erbt die Eigenschaften der hier eingestellten Vorlage.
* `props` ... テーマのスタイル定義。これから説明します。 * `props` ... Definitionen der Themenoptionen.Diese werden im folgenden erläutert.
### テーマのスタイル定義 ### Definition von Themenoptionen
`props`下にはテーマのスタイルを定義します。 キーがCSSの変数名になり、バリューで中身を指定します。 なお、この`props`オブジェクトはベーステーマから継承されます。 ベーステーマは、このテーマの`base`が`light`なら[_light.json5](https://github.com/syuilo/misskey/blob/develop/src/client/themes/_light.json5)で、`dark`なら[_dark.json5](https://github.com/syuilo/misskey/blob/develop/src/client/themes/_dark.json5)です。 つまり、このテーマ内の`props`に`panel`というキーが無くても、そこにはベーステーマの`panel`があると見なされます。 Die Optionen des Themas werden in `props` definiert. Die Schlüssel werden zu CSS-Variablen, die Werte geben den Inhalt an. Zusätzlich werden die `props` des gewählten Basisthemas von diesem Thema geerbt. Ist die `base` dieses Themas auf `light` gesetzt, so werden sie aus [_light.json5](https://github.com/syuilo/misskey/blob/develop/src/client/themes/_light.json5) kopiert, ist sie auf `dark` gesetzt, so werden sie aus [_dark.json5](https://github.com/syuilo/misskey/blob/develop/src/client/themes/_dark.json5) kopiert. Beispielsweise wird, falls sich in den `props` dieses Themas keine Definition für den Schlüssel `panel` befindet, so wird der Wert von `panel` aus dem Basisthema verwendet.
#### バリューで使える構文 #### Syntax für Wertangaben
* 16進数で表された色 * Hexadezimalfarben
* : `#00ff00` * z.B.: `#00ff00`
* `rgb(r, g, b)`形式で表された色 * RGB-Farben mit `rgb(r, g, b)`-Syntax
* : `rgb(0, 255, 0)` * z.B.: `rgb(0, 255, 0)`
* `rgb(r, g, b, a)`形式で表された透明度を含む色 * RGBA-Farben mit `rgb(r, g, b, a)`-Syntax
* : `rgba(0, 255, 0, 0.5)` * z.B.: `rgba(0, 255, 0, 0.5)`
* 他のキーの値の参照 * Werte anderer Schlüssel referenzieren
* `@{キー名}`と書くと他のキーの値の参照になります。`{キー名}`は参照したいキーの名前に置き換えます。 * Durch das angeben von `@{Schlüsselname}` wird dies durch eine Referenz auf den Wert des gegebenen Schlüssels ersetzt.Ersetze `{Schlüsselname}` mit dem Namen des Schlüssels, der referenziert werden soll.
* : `@panel` * z.B.: `@panel`
* 定数(後述)の参照 * Konstantenreferenz (später erläutert)
* `${定数名}`と書くと定数の参照になります。`{定数名}`は参照したい定数の名前に置き換えます。 * Durch das angeben von `${Konstantenname}` wird dies durch eine Referenz auf den Wert der angegebenen Konstante ersetzt.Ersetze `{Konstantenname}` durch den Namen der Konstanten, die referenziert werden soll.
* : `$main` * z.B.: `$main`
* 関数(後述) * Funktionen (später erläutert)
* `:{関数名}<{引数}<{色}` * `:{Funktionsname}<{Parameter}<{Farbe}`
#### Konstante #### Konstante
「CSS変数として出力はしたくないが、他のCSS変数の値として使いまわしたい」値があるときは、定数を使うと便利です。 キー名を`$`で始めると、そのキーはCSS変数として出力されません。 In Fällen, in denen ein Wert nicht als CSS-Variable angesehen werden soll, sondern als Wert für eine andere CSS-Variable verwendet werden soll, eignet sich die Verwendung einer Konstante. Wird ein Wert mit einem `$`-Präfix versehen, so wird er nicht als CSS-Variable, sondern als Referenz angesehen.
#### Funktionen #### Funktionen
wip wip

View file

@ -1,15 +1,15 @@
# タイムラインの比較 # Liste der Chroniken
https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing
## Home ## Startseite
自分のフォローしているユーザーの投稿 Alle Beiträge von Benutzern, denen gefolgt wird
## Lokal ## Lokal
全てのローカルユーザーの「ホーム」指定されていない投稿 Alle Beiträge von lokalen Benutzern, die nicht auf "Startseite" gesetzt sind
## Sozial ## Sozial
自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿 Alle Beiträge von Benutzern, denen gefolgt wird sowie alle Beiträge von lokalen Benutzern, die nicht auf "Startseite" gesetzt sind
## Global ## Global
全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿 Alle Beiträge von lokalen Benutzern, die nicht auf "Startseite" gesetzt sind sowie alle nicht auf "Startseite" gesetzen Beiträge von Benutzern entfernter Server, die den verwendeten Server erreichen.

View file

@ -7,22 +7,22 @@ To starting using the API, you first need to get an access token. This page will
## Obtaining an access token ## Obtaining an access token
Fundamentally, all API requests require an access token. The method of acquiring such an access token will vary depending on whether you yourself are sending API requests or requests are being sent through an application used by an end-user. Fundamentally, all API requests require an access token. The method of acquiring such an access token will vary depending on whether you yourself are sending API requests or requests are being sent through an application used by an end-user.
* In case of the former: Move on to [ "Manually issuing your own access token" ](#自分自身のアクセストークンを手動発行する) * In case of the former: Move on to [ "Manually issuing an access token for your own account" ](#自分自身のアクセストークンを手動発行する)
* In case of the latter: Move on to [ "Requesting the application user to generate an access token" ](#アプリケーション利用者にアクセストークンの発行をリクエストする) * In case of the latter: Move on to [ "Requesting the application user to generate an access token" ](#アプリケーション利用者にアクセストークンの発行をリクエストする)
### Manually issuing your own access token ### Manually issuing your own access token
You can create an access token in Settings > API You can create an access token for your own account in Settings > API.
[Proceed to using the API.](#APIの使い方) [Proceed to using the API.](#APIの使い方)
### Requesting the application user to generate an access token ### Requesting the application user to generate an access token
To obtain the access token of the end user for your app, request permissions for it via the below process. To obtain an access token of the end user's account for your app, request permissions for it via the below process.
#### Step 1 #### Step 1
Generate a UUID.We will call it the session ID from here on. Generate a UUID.We will call it the session ID from here on.
> The same session ID should not be used for multiple plugins, so please generate a new UUID for each plugin. > The same session ID should not be used for multiple plugins, so please generate a new UUID for each access token.
#### Step 2 #### Step 2

View file

@ -20,7 +20,7 @@ Plugin description
Permissions required by the plugin.Used when making requests to the Misskey API. Permissions required by the plugin.Used when making requests to the Misskey API.
### config ### config
An object representing the plugin's settings. Set the keys to setting names and the values to one of the below properties. An object representing the plugin's settings. Keys represent setting names and values are any of the below properties.
#### type #### type
A string representing the setting's value type.Selected from one of the below types. string number boolean A string representing the setting's value type.Selected from one of the below types. string number boolean
@ -65,7 +65,7 @@ Add an item to the user menu.Enter an item name as the first parameter, and a ca
Modify the data of notes displayed in the UI. A note object is passed to the callback function as first parameter. The note will be modified based on the note object returned by the callback function. Modify the data of notes displayed in the UI. A note object is passed to the callback function as first parameter. The note will be modified based on the note object returned by the callback function.
### Plugin:register_note_post_interruptor(fn) ### Plugin:register_note_post_interruptor(fn)
Modify the data of notes about to be posted. A note object is passed to the callback function as first parameter. The note will be modified based on the note object returned by the callback function. Modify the data of notes about to be posted. A note object is passed to the callback function as first parameter. The note to be posted will be modified based on the note object returned by the callback function.
### Plugin:open_url(url) ### Plugin:open_url(url)
Opens the URL given as first argument in a new browser tab. Opens the URL given as first argument in a new browser tab.

View file

@ -1,2 +1,2 @@
# Custom Emoji # Custom Emoji
Custom emojis are a function that allows images uploaded to the server to be used like emojis. They can be used in notes, reactions, chat, your profile, your username as well as other places. To use custom emojis in the above mentioned places, press the Emoji picker button (if present) or type a `:` and emoji suggestions will appear. If you see a string in a text that looks like `:foo:`, then the `foo` portion is interpreted as a custom emoji name and will be replaced with said custom emoji picture when displayed. Custom emojis are a function that allows images uploaded to the server to be used like emojis. They can be used in notes, reactions, chat, your profile, your username as well as other places. To use custom emojis in the above mentioned places, press the Emoji picker button (if present) or type a `:` and emoji suggestions will appear. If a string that looks like `:foo:` is found in any text, then the `foo` portion is interpreted as a custom emoji name and will be replaced with said custom emoji picture when displayed.

View file

@ -1,5 +1,5 @@
# Development of Misskey Reversi Bots # Development of Misskey Reversi Bots
This page will explain how to develop an interactive bot for Misskey's Reversi function. This page will explain how to develop a bot for Misskey's Reversi function.
1. Connect to the `games/reversi` stream with the following parameters: 1. Connect to the `games/reversi` stream with the following parameters:
* `i`: API key of the bot account * `i`: API key of the bot account
@ -13,7 +13,7 @@ This page will explain how to develop an interactive bot for Misskey's Reversi f
* `i`: API key of the bot account * `i`: API key of the bot account
* `game`: The `id` of the `game` * `game`: The `id` of the `game`
5. In the meanwhile, the opponent can modify the game's settings. Each time this happens, a `update-settings` event is emitted, so implement logic to handle these events if necessary. 5. In the meanwhile, the opponent can modify the game's settings. Each time this happens, a `update-settings` event is emitted, so implementing logic to handle these events may be necessary.
6. Once satisfied with the settings, send a `{ type: 'accept' }` message to the stream. 6. Once satisfied with the settings, send a `{ type: 'accept' }` message to the stream.
@ -27,7 +27,7 @@ This page will explain how to develop an interactive bot for Misskey's Reversi f
* Contains the position the stone was placed at as `pos` * Contains the position the stone was placed at as `pos`
## Calculating positions ## Calculating positions
In the case of an 8x8 map, the squares on the board are arranged like this (squares are marked with their respective index): In the case of an 8x8 map, the fields of the board are arranged like this (fields are marked with their respective index):
``` ```
+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+
| 0| 1| 2| 3| 4| 5| 6| 7| | 0| 1| 2| 3| 4| 5| 6| 7|
@ -54,9 +54,9 @@ y = Math.floor(pos / mapWidth)
``` ```
## Map information ## Map information
Map data is included within `map` of the game data. As the data is represented as an array of strings, each character represents a piece. Based on this data, you can reconstruct the map state: Map data is included within `map` of the game data. As the data is represented as an array of strings, each character represents a field. Based on this data, you can reconstruct the map state:
* `(Space)` ... No piece * `(Empty)` ... No field
* `-` ... Piece * `-` ... Field
* `b` ... Piece placed first was black * `b` ... Piece placed first was black
* `w` ... Piece placed first was white * `w` ... Piece placed first was white
@ -78,7 +78,7 @@ In this case, the map data look like this:
['----', '-wb-', '-bw-', '----'] ['----', '-wb-', '-bw-', '----']
``` ```
## Creating an interactive bot showing a form to the user ## Creating a bot that can interact with the user through forms
To communicate with the user, you can show them a form in the settings screen. For example, to let the user select the strength of the Bot. To communicate with the user, you can show them a form in the settings screen. For example, to let the user select the strength of the Bot.
To display a form, send the following message to the `reversi-game` stream: To display a form, send the following message to the `reversi-game` stream:

View file

@ -11,7 +11,7 @@ Connect to the websocket located at the below URL, including your credentials wi
%WS_URL%/streaming?i=xxxxxxxxxxxxxxx %WS_URL%/streaming?i=xxxxxxxxxxxxxxx
``` ```
Credentials refer to your own API key or the access token granted to an application by a user. Credentials refer to your own API key or in the case of connecting to the Stream the access token granted to an application by a user.
<div class="ui info"> <div class="ui info">
<p><i class="fas fa-info-circle"></i> To read about acquiring such credentials, please refer to <a href="./api">this document</a>.</p> <p><i class="fas fa-info-circle"></i> To read about acquiring such credentials, please refer to <a href="./api">this document</a>.</p>
@ -166,7 +166,7 @@ Here,
Misskey provides a structure called Post capturing".This structure makes it possible to receive events about a targeted post from the stream. Misskey provides a structure called Post capturing".This structure makes it possible to receive events about a targeted post from the stream.
For example, to fetch and display a timeline to a user.Imagine that someone reacts to a post on this timeline. For example, assume a situation in which a timeline is displayed to a user.Imagine that someone reacts to a post on this timeline.
Since the client does not have any way of knowing that a certain post has received a reaction, it is not possible to reflect the reaction on this post in real-time. Since the client does not have any way of knowing that a certain post has received a reaction, it is not possible to reflect the reaction on this post in real-time.

View file

@ -0,0 +1,4 @@
# AiScript
## 関数
デフォルトで値渡しです。

58
src/docs/id-ID/api.md Normal file
View file

@ -0,0 +1,58 @@
# Misskey API
MisskeyAPIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発できます。 ストリーミングAPIもあるので、リアルタイム性のあるアプリケーションを作ることも可能です。
APIを使い始めるには、まずアクセストークンを取得する必要があります。 このドキュメントでは、アクセストークンを取得する手順を説明した後、基本的なAPIの使い方を説明します。
## アクセストークンの取得
基本的に、APIはリクエストにはアクセストークンが必要となります。 APIにリクエストするのが自分自身なのか、不特定の利用者に使ってもらうアプリケーションなのかによって取得手順は異なります。
* 前者の場合: [「自分自身のアクセストークンを手動発行する」](#自分自身のアクセストークンを手動発行する)に進む
* 後者の場合: [「アプリケーション利用者にアクセストークンの発行をリクエストする」](#アプリケーション利用者にアクセストークンの発行をリクエストする)に進む
### 自分自身のアクセストークンを手動発行する
「設定 > API」で、自分のアクセストークンを発行できます。
[「APIの使い方」へ進む](#APIの使い方)
### アプリケーション利用者にアクセストークンの発行をリクエストする
アプリケーション利用者のアクセストークンを取得するには、以下の手順で発行をリクエストします。
#### Step 1
UUIDを生成する。以後これをセッションIDと呼びます。
> このセッションIDは毎回生成し、使いまわさないようにしてください。
#### Step 2
`{_URL_}/miauth/{session}`をユーザーのブラウザで表示させる。`{session}`の部分は、セッションIDに置き換えてください。
> 例: `{_URL_}/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f`
表示する際、URLにクエリパラメータとしていくつかのオプションを設定できます:
* `name` ... アプリケーション名
* > 例: `MissDeck`
* `icon` ... アプリケーションのアイコン画像URL
* > 例: `https://missdeck.example.com/icon.png`
* `callback` ... 認証が終わった後にリダイレクトするURL
* > 例: `https://missdeck.example.com/callback`
* リダイレクト時には、`session`というクエリパラメータでセッションIDが付きます
* `permission` ... アプリケーションが要求する権限
* > 例: `write:notes,write:following,read:drive`
* 要求する権限を`,`で区切って列挙します
* どのような権限があるかは[APIリファレンス](/api-doc)で確認できます
#### Step 3
ユーザーが発行を許可した後、`{_URL_}/api/miauth/{session}/check`にPOSTリクエストすると、レスポンスとしてアクセストークンを含むJSONが返ります。
レスポンスに含まれるプロパティ:
* `token` ... ユーザーのアクセストークン
* `user` ... ユーザーの情報
[「APIの使い方」へ進む](#APIの使い方)
## APIの使い方
**APIはすべてPOSTで、リクエスト/レスポンスともにJSON形式です。RESTではありません。** アクセストークンは、`i`というパラメータ名でリクエストに含めます。
* [APIリファレンス](/api-doc)
* [ストリーミングAPI](./stream)

View file

@ -0,0 +1,74 @@
# プラグインの作成
Misskey Webクライアントのプラグイン機能を使うと、クライアントを拡張し、様々な機能を追加できます。 ここではプラグインの作成にあたってのメタデータ定義や、AiScript APIリファレンスを掲載します。
## メタデータ
プラグインは、AiScriptのメタデータ埋め込み機能を使って、デフォルトとしてプラグインのメタデータを定義する必要があります。 メタデータは次のプロパティを含むオブジェクトです。
### name
プラグイン名
### author
プラグイン作者
### version
プラグインバージョン。数値を指定してください。
### description
プラグインの説明
### permissions
プラグインが要求する権限。MisskeyAPIにリクエストする際に用いられます。
### config
プラグインの設定情報を表すオブジェクト。 キーに設定名、値に以下のプロパティを含めます。
#### type
設定値の種類を表す文字列。以下から選択します。 string number boolean
#### label
ユーザーに表示する設定名
#### description
設定の説明
#### default
設定のデフォルト値
## APIリファレンス
AiScript標準で組み込まれているAPIは掲載しません。
### Mk:dialog(title text type)
ダイアログを表示します。typeには以下の値が設定できます。 info success warn error question 省略すると info になります。
### Mk:confirm(title text type)
確認ダイアログを表示します。typeには以下の値が設定できます。 info success warn error question 省略すると question になります。 ユーザーが"OK"を選択した場合は true を、"キャンセル"を選択した場合は false が返ります。
### Mk:api(endpoint params)
Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。
### Mk:save(key value)
任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。
### Mk:load(key)
Mk:saveで永続化した指定の名前の値を読み取ります。
### Plugin:register_post_form_action(title fn)
投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。 コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。
### Plugin:register_note_action(title fn)
ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。 コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。
### Plugin:register_user_action(title fn)
ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。 コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。
### Plugin:register_note_view_interruptor(fn)
UIに表示されるート情報を書き換えます。 コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。 コールバック関数の返り値でノートが書き換えられます。
### Plugin:register_note_post_interruptor(fn)
ノート投稿時にノート情報を書き換えます。 コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。 コールバック関数の返り値でノートが書き換えられます。
### Plugin:open_url(url)
第一引数に渡されたURLをブラウザの新しいタブで開きます。
### Plugin:config
プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。

View file

@ -0,0 +1,2 @@
# Emoji kustom
カスタム絵文字は、インスタンスで用意された画像を絵文字のように使える機能です。 ノート、リアクション、チャット、自己紹介、名前などの場所で使うことができます。 カスタム絵文字をそれらの場所で使うには、絵文字ピッカーボタン(ある場合)を押すか、`:`を入力して絵文字サジェストを表示します。 テキスト内に`:foo:`のような形式の文字列が見つかると、`foo`の部分がカスタム絵文字名と解釈され、表示時には対応したカスタム絵文字に置き換わります。

18
src/docs/id-ID/deck.md Normal file
View file

@ -0,0 +1,18 @@
# デッキ
デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。
## カラムの追加
デッキの背景を右クリックし、「カラムを追加」して任意のカラムを追加できます。
## カラムの移動
カラムは、ドラッグアンドドロップで他のカラムと位置を入れ替えることが出来るほか、カラムメニュー(カラムのヘッダー右クリック)から位置を移動させることもできます。
## カラムの水平分割
カラムは左右だけでなく、上下に並べることもできます。 カラムメニューを開き、「左に重ねる」を選択すると、左のカラムの下に現在のカラムが移動します。 上下分割を解除するには、カラムメニューの「右に出す」を選択します。
## カラムの設定
カラムメニューの「編集」を選択するとカラムの設定を編集できます。カラムの名前を変えたり、幅を変えたりできます。
## デッキの設定
デッキに関する設定は、[settings/deck](/settings/deck)で行えます。

2
src/docs/id-ID/follow.md Normal file
View file

@ -0,0 +1,2 @@
# フォロー
ユーザーをフォローすると、タイムラインにそのユーザーの投稿が表示されるようになります。ただし、他のユーザーに対する返信は含まれません。 ユーザーをフォローするには、ユーザーページの「フォロー」ボタンをクリックします。フォローを解除するには、もう一度クリックします。

View file

@ -0,0 +1,68 @@
# キーボードショートカット
## グローバル
これらのショートカットは基本的にどこでも使えます。
<table>
<thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
</thead>
<tbody>
<tr><td><kbd class="key">P</kbd>, <kbd class="key">N</kbd></td><td>新規投稿</td><td><b>P</b>ost, <b>N</b>ew, <b>N</b>ote</td></tr>
<tr><td><kbd class="key">T</kbd></td><td>タイムラインの最も新しい投稿にフォーカス</td><td><b>T</b>imeline, <b>T</b>op</td></tr>
<tr><td><kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">N</kbd></kbd></td><td>通知を表示/隠す</td><td><b>N</b>otifications</td></tr>
<tr><td><kbd class="key">S</kbd></td><td>Pencarian</td><td><b>S</b>earch</td></tr>
<tr><td><kbd class="key">H</kbd>, <kbd class="key">?</kbd></td><td>ヘルプを表示</td><td><b>H</b>elp</td></tr>
</tbody>
</table>
## 投稿にフォーカスされた状態
<table>
<thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
</thead>
<tbody>
<tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>上の投稿にフォーカスを移動</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">J</kbd>, <kbd class="key">Tab</kbd></td><td>下の投稿にフォーカスを移動</td><td>-</td></tr>
<tr><td><kbd class="key">R</kbd></td><td>返信フォームを開く</td><td><b>R</b>eply</td></tr>
<tr><td><kbd class="key">Q</kbd></td><td>Renoteフォームを開く</td><td><b>Q</b>uote</td></tr>
<tr><td><kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">Q</kbd></kbd></td><td>即刻Renoteする(フォームを開かずに)</td><td>-</td></tr>
<tr><td><kbd class="key">E</kbd>, <kbd class="key">A</kbd>, <kbd class="key">+</kbd></td><td>リアクションフォームを開く</td><td><b>E</b>mote, re<b>A</b>ction</td></tr>
<tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>数字に対応したリアクションをする(対応については後述)</td><td>-</td></tr>
<tr><td><kbd class="key">F</kbd>, <kbd class="key">B</kbd></td><td>お気に入りに登録</td><td><b>F</b>avorite, <b>B</b>ookmark</td></tr>
<tr><td><kbd class="key">Del</kbd>, <kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">D</kbd></kbd></td><td>投稿を削除</td><td><b>D</b>elete</tr>
<tr><td><kbd class="key">M</kbd>, <kbd class="key">O</kbd></td><td>投稿に対するメニューを開く</td><td><b>M</b>ore, <b>O</b>ther</td></tr>
<tr><td><kbd class="key">S</kbd></td><td>CWで隠された部分を表示 or 隠す</td><td><b>S</b>how, <b>S</b>ee</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>フォーカスを外す</td><td>-</td></tr>
</tbody>
</table>
## Renoteフォーム
<table>
<thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
</thead>
<tbody>
<tr><td><kbd class="key">Enter</kbd></td><td>Renoteする</td><td>-</td></tr>
<tr><td><kbd class="key">Q</kbd></td><td>フォームを展開する</td><td><b>Q</b>uote</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>フォームを閉じる</td><td>-</td></tr>
</tbody>
</table>
## リアクションフォーム
デフォルトで「👍」にフォーカスが当たっている状態です。
<table>
<thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
</thead>
<tbody>
<tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd></td><td>上のリアクションにフォーカスを移動</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">J</kbd></td><td>下のリアクションにフォーカスを移動</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">H</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>左のリアクションにフォーカスを移動</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">L</kbd>, <kbd class="key">Tab</kbd></td><td>右のリアクションにフォーカスを移動</td><td>-</td></tr>
<tr><td><kbd class="key">Enter</kbd>, <kbd class="key">Space</kbd>, <kbd class="key">+</kbd></td><td>リアクション確定</td><td>-</td></tr>
<tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>数字に対応したリアクションで確定</td><td>-</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>リアクションするのをやめる</td><td>-</td></tr>
</tbody>
</table>

2
src/docs/id-ID/mfm.md Normal file
View file

@ -0,0 +1,2 @@
# MFM
MFMは、Misskey Flavored Markdownの略で、Misskeyの様々な場所で使用できる専用のマークアップ言語です。 MFMで使用可能な構文は[MFMチートシート](/mfm-cheat-sheet)で確認できます。

13
src/docs/id-ID/mute.md Normal file
View file

@ -0,0 +1,13 @@
# Bisukan
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
* タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
* そのユーザーからの通知
* メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
ユーザーをミュートするには、対象のユーザーのユーザーページに表示されている「ミュート」ボタンを押します。
ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。
設定>ミュート から、自分がミュートしているユーザー一覧を確認することができます。

10
src/docs/id-ID/pages.md Normal file
View file

@ -0,0 +1,10 @@
# Pages
## 変数
変数を使うことで動的なページを作成できます。テキスト内で <b>{ 変数名 }</b> と書くとそこに変数の値を埋め込めます。例えば <b>Hello { thing } world!</b> というテキストで、変数(thing)の値が <b>ai</b> だった場合、テキストは <b>Hello ai world!</b> になります。
変数の評価(値を算出すること)は上から下に行われるので、ある変数の中で自分より下の変数を参照することはできません。例えば上から <b>A、B、C</b> と3つの変数を定義したとき、<b>C</b>の中で<b>A</b><b>B</b>を参照することはできますが、<b>A</b>の中で<b>B</b><b>C</b>を参照することはできません。
ユーザーからの入力を受け取るには、ページに「ユーザー入力」ブロックを設置し、「変数名」に入力を格納したい変数名を設定します(変数は自動で作成されます)。その変数を使ってユーザー入力に応じた動作を行えます。
関数を使うと、値の算出処理を再利用可能な形にまとめることができます。関数を作るには、「関数」タイプの変数を作成します。関数にはスロット(引数)を設定することができ、スロットの値は関数内で変数として利用可能です。また、関数を引数に取る関数(高階関数と呼ばれます)も存在します。関数は予め定義しておくほかに、このような高階関数のスロットに即席でセットすることもできます。

View file

@ -0,0 +1,11 @@
# Reaksi
他の人のノートに、絵文字を付けて簡単にあなたの反応を伝えられる機能です。 リアクションするには、ノートの + アイコンをクリックしてピッカーを表示し、絵文字を選択します。 リアクションには[カスタム絵文字](./custom-emoji)も使用できます。
## リアクションピッカーのカスタマイズ
ピッカーに表示される絵文字を自分好みにカスタマイズすることができます。 設定の「リアクション」で設定します。
## リモート投稿へのリアクションについて
リアクションはMisskeyオリジナルの機能であるため、リモートインスタンスがMisskeyでない限りは、ほとんどの場合「Like」としてアクティビティが送信されます。一般的にはLikeは「お気に入り」として実装されているようです。 また、相手がMisskeyであったとしても、カスタム絵文字リアクションは伝わらず、自動的に「👍」等にフォールバックされます。
## リモートからのリアクションについて
リモートから「Like」アクティビティを受信したとき、Misskeyでは「👍」のリアクションとして解釈されます。

View file

@ -0,0 +1,160 @@
# MisskeyリバーシBotの開発
Misskeyのリバーシ機能に対応したBotの開発方法をここに記します。
1. `games/reversi`ストリームに以下のパラメータを付けて接続する:
* `i`: botアカウントのAPIキー
2. 対局への招待が来たら、ストリームから`invited`イベントが流れてくる
* イベントの中身に、`parent`という名前で対局へ誘ってきたユーザーの情報が含まれている
3. `games/reversi/match`へ、`user_id`として`parent`の`id`が含まれたリクエストを送信する
4. 上手くいくとゲーム情報が返ってくるので、`games/reversi-game`ストリームへ、以下のパラメータを付けて接続する:
* `i`: botアカウントのAPIキー
* `game`: `game`の`id`
5. この間、相手がゲームの設定を変更するとその都度`update-settings`イベントが流れてくるので、必要であれば何かしらの処理を行う
6. 設定に満足したら、`{ type: 'accept' }`メッセージをストリームに送信する
7. ゲームが開始すると、`started`イベントが流れてくる
* イベントの中身にはゲーム情報が含まれている
8. 石を打つには、ストリームに`{ type: 'set', pos: <位置> }`を送信する(位置の計算方法は後述)
9. 相手または自分が石を打つと、ストリームから`set`イベントが流れてくる
* `color`として石の色が含まれている
* `pos`として位置情報が含まれている
## 位置の計算法
8x8のマップを考える場合、各マスの位置(インデックスと呼びます)は次のようになっています:
```
+--+--+--+--+--+--+--+--+
| 0| 1| 2| 3| 4| 5| 6| 7|
+--+--+--+--+--+--+--+--+
| 8| 9|10|11|12|13|14|15|
+--+--+--+--+--+--+--+--+
|16|17|18|19|20|21|22|23|
...
```
### X,Y座標 から インデックス に変換する
```
pos = x + (y * mapWidth)
```
`mapWidth`は、ゲーム情報の`map`から、次のようにして計算できます:
```
mapWidth = map[0].length
```
### インデックス から X,Y座標 に変換する
```
x = pos % mapWidth
y = Math.floor(pos / mapWidth)
```
## マップ情報
マップ情報は、ゲーム情報の`map`に入っています。 文字列の配列になっており、ひとつひとつの文字がマス情報を表しています。 それをもとにマップのデザインを知る事が出来ます:
* `(スペース)` ... マス無し
* `-` ... マス
* `b` ... 初期配置される黒石
* `w` ... 初期配置される白石
例えば、4*4の次のような単純なマップがあるとします:
```text
+---+---+---+---+
| | | | |
+---+---+---+---+
| | ○ | ● | |
+---+---+---+---+
| | ● | ○ | |
+---+---+---+---+
| | | | |
+---+---+---+---+
```
この場合、マップデータはこのようになります:
```javascript
['----', '-wb-', '-bw-', '----']
```
## ユーザーにフォームを提示して対話可能Botを作成する
ユーザーとのコミュニケーションを行うため、ゲームの設定画面でユーザーにフォームを提示することができます。 例えば、Botの強さをユーザーが設定できるようにする、といったシナリオが考えられます。
フォームを提示するには、`reversi-game`ストリームに次のメッセージを送信します:
```javascript
{
type: 'init-form',
body: [フォームコントロールの配列]
}
```
フォームコントロールの配列については今から説明します。 フォームコントロールは、次のようなオブジェクトです:
```javascript
{
id: 'switch1',
type: 'switch',
label: 'Enable hoge',
value: false
}
```
`id` ... コントロールのID。 `type` ... コントロールの種類。後述します。 `label` ... コントロールと一緒に表記するテキスト。 `value` ... コントロールのデフォルト値。
### フォームの操作を受け取る
ユーザーがフォームを操作すると、ストリームから`update-form`イベントが流れてきます。 イベントの中身には、コントロールのIDと、ユーザーが設定した値が含まれています。 例えば、上で示したスイッチをユーザーがオンにしたとすると、次のイベントが流れてきます:
```javascript
{
id: 'switch1',
value: true
}
```
### フォームコントロールの種類
#### スイッチ
type: `switch` スイッチを表示します。何かの機能をオン/オフさせたい場合に有用です。
##### プロパティ
`label` ... スイッチに表記するテキスト。
#### ラジオボタン
type: `radio` ラジオボタンを表示します。選択肢を提示するのに有用です。例えば、Botの強さを設定させるなどです。
##### プロパティ
`items` ... ラジオボタンの選択肢。例:
```javascript
items: [{
label: '弱',
value: 1
}, {
label: '中',
value: 2
}, {
label: '強',
value: 3
}]
```
#### スライダー
type: `slider` スライダーを表示します。
##### プロパティ
`min` ... スライダーの下限。 `max` ... スライダーの上限。 `step` ... 入力欄で刻むステップ値。
#### テキストボックス
type: `textbox` テキストボックスを表示します。ユーザーになにか入力させる一般的な用途に利用できます。
## ユーザーにメッセージを表示する
設定画面でユーザーと対話する、フォーム以外のもうひとつの方法がこれです。ユーザーになにかメッセージを表示することができます。 例えば、ユーザーがBotの対応していないモードやマップを選択したとき、警告を表示するなどです。 メッセージを表示するには、次のメッセージをストリームに送信します:
```javascript
{
type: 'message',
body: {
text: 'メッセージ内容',
type: 'メッセージの種類'
}
}
```
メッセージの種類: `success`, `info`, `warning`, `error`
## 投了する
投了をするには、<a href="./api/endpoints/games/reversi/games/surrender">このエンドポイント</a>にリクエストします。

354
src/docs/id-ID/stream.md Normal file
View file

@ -0,0 +1,354 @@
# ストリーミングAPI
ストリーミングAPIを使うと、リアルタイムで様々な情報(例えばタイムラインに新しい投稿が流れてきた、メッセージが届いた、フォローされた、など)を受け取ったり、様々な操作を行ったりすることができます。
## ストリームに接続する
ストリーミングAPIを利用するには、まずMisskeyサーバーに**websocket**接続する必要があります。
以下のURLに、`i`というパラメータ名で認証情報を含めて、websocket接続してください。例:
```
%WS_URL%/streaming?i=xxxxxxxxxxxxxxx
```
認証情報は、自分のAPIキーや、アプリケーションからストリームに接続する際はユーザーのアクセストークンのことを指します。
<div class="ui info">
<p><i class="fas fa-info-circle"></i> 認証情報の取得については、<a href="./api">こちらのドキュメント</a>をご確認ください。</p>
</div>
---
認証情報は省略することもできますが、その場合非ログインでの利用ということになり、受信できる情報や可能な操作は限られます。例:
```
%WS_URL%/streaming
```
---
ストリームに接続すると、後述するAPI操作や、投稿の購読を行ったりすることができます。 しかしまだこの段階では、例えばタイムラインへの新しい投稿を受信したりすることはできません。 それを行うには、ストリーム上で、後述する**チャンネル**に接続する必要があります。
**ストリームでのやり取りはすべてJSONです。**
## チャンネル
MisskeyのストリーミングAPIにはチャンネルという概念があります。これは、送受信する情報を分離するための仕組みです。 Misskeyのストリームに接続しただけでは、まだリアルタイムでタイムラインの投稿を受信したりはできません。 ストリーム上でチャンネルに接続することで、様々な情報を受け取ったり情報を送信したりすることができるようになります。
### チャンネルに接続する
チャンネルに接続するには、次のようなデータをJSONでストリームに送信します:
```json
{
type: 'connect',
body: {
channel: 'xxxxxxxx',
id: 'foobar',
params: {
...
}
}
}
```
ここで、
* `channel`には接続したいチャンネル名を設定します。チャンネルの種類については後述します。
* `id`にはそのチャンネルとやり取りするための任意のIDを設定します。ストリームでは様々なメッセージが流れるので、そのメッセージがどのチャンネルからのものなのか識別する必要があるからです。このIDは、UUIDや、乱数のようなもので構いません。
* `params`はチャンネルに接続する際のパラメータです。チャンネルによって接続時に必要とされるパラメータは異なります。パラメータ不要のチャンネルに接続する際は、このプロパティは省略可能です。
<div class="ui info">
<p><i class="fas fa-info-circle"></i> IDはチャンネルごとではなく「チャンネルの接続ごと」です。なぜなら、同じチャンネルに異なるパラメータで複数接続するケースもあるからです。</p>
</div>
### チャンネルからのメッセージを受け取る
例えばタイムラインのチャンネルなら、新しい投稿があった時にメッセージを発します。そのメッセージを受け取ることで、タイムラインに新しい投稿がされたことをリアルタイムで知ることができます。
チャンネルがメッセージを発すると、次のようなデータがJSONでストリームに流れてきます:
```json
{
type: 'channel',
body: {
id: 'foobar',
type: 'something',
body: {
some: 'thing'
}
}
}
```
ここで、
* `id`には前述したそのチャンネルに接続する際に設定したIDが設定されています。これで、このメッセージがどのチャンネルからのものなのか知ることができます。
* `type`にはメッセージの種類が設定されます。チャンネルによって、どのような種類のメッセージが流れてくるかは異なります。
* `body`にはメッセージの内容が設定されます。チャンネルによって、どのような内容のメッセージが流れてくるかは異なります。
### チャンネルに向けてメッセージを送信する
チャンネルによっては、メッセージを受け取るだけでなく、こちらから何かメッセージを送信し、何らかの操作を行える場合があります。
チャンネルにメッセージを送信するには、次のようなデータをJSONでストリームに送信します:
```json
{
type: 'channel',
body: {
id: 'foobar',
type: 'something',
body: {
some: 'thing'
}
}
}
```
ここで、
* `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。これで、このメッセージがどのチャンネルに向けたものなのか識別させることができます。
* `type`にはメッセージの種類を設定します。チャンネルによって、どのような種類のメッセージを受け付けるかは異なります。
* `body`にはメッセージの内容を設定します。チャンネルによって、どのような内容のメッセージを受け付けるかは異なります。
### チャンネルから切断する
チャンネルから切断するには、次のようなデータをJSONでストリームに送信します:
```json
{
type: 'disconnect',
body: {
id: 'foobar'
}
}
```
ここで、
* `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。
## ストリームを経由してAPIリクエストする
ストリームを経由してAPIリクエストすると、HTTPリクエストを発生させずにAPIを利用できます。そのため、コードを簡潔にできたり、パフォーマンスの向上を見込めるかもしれません。
ストリームを経由してAPIリクエストするには、次のようなデータをJSONでストリームに送信します:
```json
{
type: 'api',
body: {
id: 'xxxxxxxxxxxxxxxx',
endpoint: 'notes/create',
data: {
text: 'yee haw!'
}
}
}
```
ここで、
* `id`には、APIのレスポンスを識別するための、APIリクエストごとの一意なIDを設定する必要があります。UUIDや、簡単な乱数のようなもので構いません。
* `endpoint`には、あなたがリクエストしたいAPIのエンドポイントを指定します。
* `data`には、エンドポイントのパラメータを含めます。
<div class="ui info">
<p><i class="fas fa-info-circle"></i> APIのエンドポイントやパラメータについてはAPIリファレンスをご確認ください。</p>
</div>
### レスポンスの受信
APIへリクエストすると、レスポンスがストリームから次のような形式で流れてきます。
```json
{
type: 'api:xxxxxxxxxxxxxxxx',
body: {
...
}
}
```
ここで、
* `xxxxxxxxxxxxxxxx`の部分には、リクエストの際に設定された`id`が含まれています。これにより、どのリクエストに対するレスポンスなのか判別することができます。
* `body`には、レスポンスが含まれています。
## 投稿のキャプチャ
Misskeyは投稿のキャプチャと呼ばれる仕組みを提供しています。これは、指定した投稿のイベントをストリームで受け取る機能です。
例えばタイムラインを取得してユーザーに表示したとします。ここで誰かがそのタイムラインに含まれるどれかの投稿に対してリアクションしたとします。
しかし、クライアントからするとある投稿にリアクションが付いたことなどは知る由がないため、リアルタイムでリアクションをタイムライン上の投稿に反映して表示するといったことができません。
この問題を解決するために、Misskeyは投稿のキャプチャ機構を用意しています。投稿をキャプチャすると、その投稿に関するイベントを受け取ることができるため、リアルタイムでリアクションを反映させたりすることが可能になります。
### 投稿をキャプチャする
投稿をキャプチャするには、ストリームに次のようなメッセージを送信します:
```json
{
type: 'subNote',
body: {
id: 'xxxxxxxxxxxxxxxx'
}
}
```
ここで、
* `id`にキャプチャしたい投稿の`id`を設定します。
このメッセージを送信すると、Misskeyにキャプチャを要請したことになり、以後、その投稿に関するイベントが流れてくるようになります。
例えば投稿にリアクションが付いたとすると、次のようなメッセージが流れてきます:
```json
{
type: 'noteUpdated',
body: {
id: 'xxxxxxxxxxxxxxxx',
type: 'reacted',
body: {
reaction: 'like',
userId: 'yyyyyyyyyyyyyyyy'
}
}
}
```
ここで、
* `body`内の`id`に、イベントを発生させた投稿のIDが設定されます。
* `body`内の`type`に、イベントの種類が設定されます。
* `body`内の`body`に、イベントの詳細が設定されます。
#### イベントの種類
##### `reacted`
その投稿にリアクションがされた時に発生します。
* `reaction`に、リアクションの種類が設定されます。
* `userId`に、リアクションを行ったユーザーのIDが設定されます。
例:
```json
{
type: 'noteUpdated',
body: {
id: 'xxxxxxxxxxxxxxxx',
type: 'reacted',
body: {
reaction: 'like',
userId: 'yyyyyyyyyyyyyyyy'
}
}
}
```
##### `deleted`
その投稿が削除された時に発生します。
* `deletedAt`に、削除日時が設定されます。
例:
```json
{
type: 'noteUpdated',
body: {
id: 'xxxxxxxxxxxxxxxx',
type: 'deleted',
body: {
deletedAt: '2018-10-22T02:17:09.703Z'
}
}
}
```
##### `pollVoted`
その投稿に添付されたアンケートに投票された時に発生します。
* `choice`に、選択肢IDが設定されます。
* `userId`に、投票を行ったユーザーのIDが設定されます。
例:
```json
{
type: 'noteUpdated',
body: {
id: 'xxxxxxxxxxxxxxxx',
type: 'pollVoted',
body: {
choice: 2,
userId: 'yyyyyyyyyyyyyyyy'
}
}
}
```
### 投稿のキャプチャを解除する
その投稿がもう画面に表示されなくなったりして、その投稿に関するイベントをもう受け取る必要がなくなったときは、キャプチャの解除を申請してください。
次のメッセージを送信します:
```json
{
type: 'unsubNote',
body: {
id: 'xxxxxxxxxxxxxxxx'
}
}
```
ここで、
* `id`にキャプチャを解除したい投稿の`id`を設定します。
このメッセージを送信すると、以後、その投稿に関するイベントは流れてこないようになります。
# チャンネル一覧
## `main`
アカウントに関する基本的な情報が流れてきます。このチャンネルにパラメータはありません。
### 流れてくるイベント一覧
#### `renote`
自分の投稿がRenoteされた時に発生するイベントです。自分自身の投稿をRenoteしたときは発生しません。
#### `mention`
誰かからメンションされたときに発生するイベントです。
#### `readAllNotifications`
自分宛ての通知がすべて既読になったことを表すイベントです。このイベントを利用して、「通知があることを示すアイコン」のようなものをオフにしたりする等のケースが想定されます。
#### `meUpdated`
自分の情報が更新されたことを表すイベントです。
#### `follow`
自分が誰かをフォローしたときに発生するイベントです。
#### `unfollow`
自分が誰かのフォローを解除したときに発生するイベントです。
#### `followed`
自分が誰かにフォローされたときに発生するイベントです。
## `homeTimeline`
ホームタイムラインの投稿情報が流れてきます。このチャンネルにパラメータはありません。
### 流れてくるイベント一覧
#### `note`
タイムラインに新しい投稿が流れてきたときに発生するイベントです。
## `localTimeline`
ローカルタイムラインの投稿情報が流れてきます。このチャンネルにパラメータはありません。
### 流れてくるイベント一覧
#### `note`
ローカルタイムラインに新しい投稿が流れてきたときに発生するイベントです。
## `hybridTimeline`
ソーシャルタイムラインの投稿情報が流れてきます。このチャンネルにパラメータはありません。
### 流れてくるイベント一覧
#### `note`
ソーシャルタイムラインに新しい投稿が流れてきたときに発生するイベントです。
## `globalTimeline`
グローバルタイムラインの投稿情報が流れてきます。このチャンネルにパラメータはありません。
### 流れてくるイベント一覧
#### `note`
グローバルタイムラインに新しい投稿が流れてきたときに発生するイベントです。

68
src/docs/id-ID/theme.md Normal file
View file

@ -0,0 +1,68 @@
# テーマ
テーマを設定して、Misskeyクライアントの見た目を変更できます。
## テーマの設定
設定 > テーマ
## テーマを作成する
テーマコードはJSON5で記述されたテーマオブジェクトです。 テーマは以下のようなオブジェクトです。
``` js
{
id: '17587283-dd92-4a2c-a22c-be0637c9e22a',
name: 'Danboard',
author: 'syuilo',
base: 'light',
props: {
accent: 'rgb(218, 141, 49)',
bg: 'rgb(218, 212, 190)',
fg: 'rgb(115, 108, 92)',
panel: 'rgb(236, 232, 220)',
renote: 'rgb(100, 152, 106)',
link: 'rgb(100, 152, 106)',
mention: '@accent',
hashtag: 'rgb(100, 152, 106)',
header: 'rgba(239, 227, 213, 0.75)',
navBg: 'rgb(216, 206, 182)',
inputBorder: 'rgba(0, 0, 0, 0.1)',
},
}
```
* `id` ... テーマの一意なID。UUIDをおすすめします。
* `name` ... テーマ名
* `author` ... テーマの作者
* `desc` ... テーマの説明(オプション)
* `base` ... 明るいテーマか、暗いテーマか
* `light`にすると明るいテーマになり、`dark`にすると暗いテーマになります。
* テーマはここで設定されたベーステーマを継承します。
* `props` ... テーマのスタイル定義。これから説明します。
### テーマのスタイル定義
`props`下にはテーマのスタイルを定義します。 キーがCSSの変数名になり、バリューで中身を指定します。 なお、この`props`オブジェクトはベーステーマから継承されます。 ベーステーマは、このテーマの`base`が`light`なら[_light.json5](https://github.com/syuilo/misskey/blob/develop/src/client/themes/_light.json5)で、`dark`なら[_dark.json5](https://github.com/syuilo/misskey/blob/develop/src/client/themes/_dark.json5)です。 つまり、このテーマ内の`props`に`panel`というキーが無くても、そこにはベーステーマの`panel`があると見なされます。
#### バリューで使える構文
* 16進数で表された色
* 例: `#00ff00`
* `rgb(r, g, b)`形式で表された色
* 例: `rgb(0, 255, 0)`
* `rgb(r, g, b, a)`形式で表された透明度を含む色
* 例: `rgba(0, 255, 0, 0.5)`
* 他のキーの値の参照
* `@{キー名}`と書くと他のキーの値の参照になります。`{キー名}`は参照したいキーの名前に置き換えます。
* 例: `@panel`
* 定数(後述)の参照
* `${定数名}`と書くと定数の参照になります。`{定数名}`は参照したい定数の名前に置き換えます。
* 例: `$main`
* 関数(後述)
* `:{関数名}<{引数}<{色}`
#### 定数
「CSS変数として出力はしたくないが、他のCSS変数の値として使いまわしたい」値があるときは、定数を使うと便利です。 キー名を`$`で始めると、そのキーはCSS変数として出力されません。
#### 関数
wip

View file

@ -0,0 +1,15 @@
# タイムラインの比較
https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing
## ホーム
自分のフォローしているユーザーの投稿
## ローカル
全てのローカルユーザーの「ホーム」指定されていない投稿
## ソーシャル
自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿
## グローバル
全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿

View file

@ -1,4 +1,4 @@
# AiScript # AiScript
## 関数 ## Funkcje
デフォルトで値渡しです。 デフォルトで値渡しです。

View file

@ -1,7 +1,7 @@
# プラグインの作成 # プラグインの作成
Misskey Webクライアントのプラグイン機能を使うと、クライアントを拡張し、様々な機能を追加できます。 ここではプラグインの作成にあたってのメタデータ定義や、AiScript APIリファレンスを掲載します。 Misskey Webクライアントのプラグイン機能を使うと、クライアントを拡張し、様々な機能を追加できます。 ここではプラグインの作成にあたってのメタデータ定義や、AiScript APIリファレンスを掲載します。
## メタデータ ## Metadane
プラグインは、AiScriptのメタデータ埋め込み機能を使って、デフォルトとしてプラグインのメタデータを定義する必要があります。 メタデータは次のプロパティを含むオブジェクトです。 プラグインは、AiScriptのメタデータ埋め込み機能を使って、デフォルトとしてプラグインのメタデータを定義する必要があります。 メタデータは次のプロパティを含むオブジェクトです。
### name ### name

View file

@ -1,2 +1,2 @@
# カスタム絵文字 # Niestandardowe emoji
カスタム絵文字は、インスタンスで用意された画像を絵文字のように使える機能です。 ノート、リアクション、チャット、自己紹介、名前などの場所で使うことができます。 カスタム絵文字をそれらの場所で使うには、絵文字ピッカーボタン(ある場合)を押すか、`:`を入力して絵文字サジェストを表示します。 テキスト内に`:foo:`のような形式の文字列が見つかると、`foo`の部分がカスタム絵文字名と解釈され、表示時には対応したカスタム絵文字に置き換わります。 カスタム絵文字は、インスタンスで用意された画像を絵文字のように使える機能です。 ノート、リアクション、チャット、自己紹介、名前などの場所で使うことができます。 カスタム絵文字をそれらの場所で使うには、絵文字ピッカーボタン(ある場合)を押すか、`:`を入力して絵文字サジェストを表示します。 テキスト内に`:foo:`のような形式の文字列が見つかると、`foo`の部分がカスタム絵文字名と解釈され、表示時には対応したカスタム絵文字に置き換わります。

View file

@ -1,4 +1,4 @@
# デッキ # Tablica
デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。 デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。

View file

@ -1,2 +1,2 @@
# フォロー # Obserwowani
ユーザーをフォローすると、タイムラインにそのユーザーの投稿が表示されるようになります。ただし、他のユーザーに対する返信は含まれません。 ユーザーをフォローするには、ユーザーページの「フォロー」ボタンをクリックします。フォローを解除するには、もう一度クリックします。 ユーザーをフォローすると、タイムラインにそのユーザーの投稿が表示されるようになります。ただし、他のユーザーに対する返信は含まれません。 ユーザーをフォローするには、ユーザーページの「フォロー」ボタンをクリックします。フォローを解除するには、もう一度クリックします。

View file

@ -4,7 +4,7 @@
これらのショートカットは基本的にどこでも使えます。 これらのショートカットは基本的にどこでも使えます。
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>ショートカット</th><th>Efekt</th><th>Pochodzenie</th></tr>
</thead> </thead>
<tbody> <tbody>
<tr><td><kbd class="key">P</kbd>, <kbd class="key">N</kbd></td><td>新規投稿</td><td><b>P</b>ost, <b>N</b>ew, <b>N</b>ote</td></tr> <tr><td><kbd class="key">P</kbd>, <kbd class="key">N</kbd></td><td>新規投稿</td><td><b>P</b>ost, <b>N</b>ew, <b>N</b>ote</td></tr>
@ -19,7 +19,7 @@
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>ショートカット</th><th>Efekt</th><th>Pochodzenie</th></tr>
</thead> </thead>
<tbody> <tbody>
<tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>上の投稿にフォーカスを移動</td><td>-</td></tr> <tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>上の投稿にフォーカスを移動</td><td>-</td></tr>
@ -41,7 +41,7 @@
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>ショートカット</th><th>Efekt</th><th>Pochodzenie</th></tr>
</thead> </thead>
<tbody> <tbody>
<tr><td><kbd class="key">Enter</kbd></td><td>Renoteする</td><td>-</td></tr> <tr><td><kbd class="key">Enter</kbd></td><td>Renoteする</td><td>-</td></tr>
@ -54,7 +54,7 @@
デフォルトで「👍」にフォーカスが当たっている状態です。 デフォルトで「👍」にフォーカスが当たっている状態です。
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>ショートカット</th><th>Efekt</th><th>Pochodzenie</th></tr>
</thead> </thead>
<tbody> <tbody>
<tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd></td><td>上のリアクションにフォーカスを移動</td><td>-</td></tr> <tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd></td><td>上のリアクションにフォーカスを移動</td><td>-</td></tr>

View file

@ -1,4 +1,4 @@
# ミュート # Wycisz
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります: ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:

View file

@ -1,6 +1,6 @@
# Pages # Pages
## 変数 ## Zmienne
変数を使うことで動的なページを作成できます。テキスト内で <b>{ 変数名 }</b> と書くとそこに変数の値を埋め込めます。例えば <b>Hello { thing } world!</b> というテキストで、変数(thing)の値が <b>ai</b> だった場合、テキストは <b>Hello ai world!</b> になります。 変数を使うことで動的なページを作成できます。テキスト内で <b>{ 変数名 }</b> と書くとそこに変数の値を埋め込めます。例えば <b>Hello { thing } world!</b> というテキストで、変数(thing)の値が <b>ai</b> だった場合、テキストは <b>Hello ai world!</b> になります。
変数の評価(値を算出すること)は上から下に行われるので、ある変数の中で自分より下の変数を参照することはできません。例えば上から <b>A、B、C</b> と3つの変数を定義したとき、<b>C</b>の中で<b>A</b><b>B</b>を参照することはできますが、<b>A</b>の中で<b>B</b><b>C</b>を参照することはできません。 変数の評価(値を算出すること)は上から下に行われるので、ある変数の中で自分より下の変数を参照することはできません。例えば上から <b>A、B、C</b> と3つの変数を定義したとき、<b>C</b>の中で<b>A</b><b>B</b>を参照することはできますが、<b>A</b>の中で<b>B</b><b>C</b>を参照することはできません。

View file

@ -1,4 +1,4 @@
# リアクション # Reakcja
他の人のノートに、絵文字を付けて簡単にあなたの反応を伝えられる機能です。 リアクションするには、ノートの + アイコンをクリックしてピッカーを表示し、絵文字を選択します。 リアクションには[カスタム絵文字](./custom-emoji)も使用できます。 他の人のノートに、絵文字を付けて簡単にあなたの反応を伝えられる機能です。 リアクションするには、ノートの + アイコンをクリックしてピッカーを表示し、絵文字を選択します。 リアクションには[カスタム絵文字](./custom-emoji)も使用できます。
## リアクションピッカーのカスタマイズ ## リアクションピッカーのカスタマイズ

View file

@ -56,7 +56,7 @@ y = Math.floor(pos / mapWidth)
## マップ情報 ## マップ情報
マップ情報は、ゲーム情報の`map`に入っています。 文字列の配列になっており、ひとつひとつの文字がマス情報を表しています。 それをもとにマップのデザインを知る事が出来ます: マップ情報は、ゲーム情報の`map`に入っています。 文字列の配列になっており、ひとつひとつの文字がマス情報を表しています。 それをもとにマップのデザインを知る事が出来ます:
* `(スペース)` ... マス無し * `(スペース)` ... マス無し
* `-` ... マス * `-` ... Pole
* `b` ... 初期配置される黒石 * `b` ... 初期配置される黒石
* `w` ... 初期配置される白石 * `w` ... 初期配置される白石
@ -120,7 +120,7 @@ type: `switch` スイッチを表示します。何かの機能をオン/オフ
type: `radio` ラジオボタンを表示します。選択肢を提示するのに有用です。例えば、Botの強さを設定させるなどです。 type: `radio` ラジオボタンを表示します。選択肢を提示するのに有用です。例えば、Botの強さを設定させるなどです。
##### プロパティ ##### プロパティ
`items` ... ラジオボタンの選択肢。: `items` ... ラジオボタンの選択肢。Przykład:
```javascript ```javascript
items: [{ items: [{
label: '弱', label: '弱',

View file

@ -6,7 +6,7 @@
ストリーミングAPIを利用するには、まずMisskeyサーバーに**websocket**接続する必要があります。 ストリーミングAPIを利用するには、まずMisskeyサーバーに**websocket**接続する必要があります。
以下のURLに、`i`というパラメータ名で認証情報を含めて、websocket接続してください。: 以下のURLに、`i`というパラメータ名で認証情報を含めて、websocket接続してください。Przykład:
``` ```
%WS_URL%/streaming?i=xxxxxxxxxxxxxxx %WS_URL%/streaming?i=xxxxxxxxxxxxxxx
``` ```
@ -19,7 +19,7 @@
--- ---
認証情報は省略することもできますが、その場合非ログインでの利用ということになり、受信できる情報や可能な操作は限られます。: 認証情報は省略することもできますが、その場合非ログインでの利用ということになり、受信できる情報や可能な操作は限られます。Przykład:
``` ```
%WS_URL%/streaming %WS_URL%/streaming
@ -219,7 +219,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
* `reaction`に、リアクションの種類が設定されます。 * `reaction`に、リアクションの種類が設定されます。
* `userId`に、リアクションを行ったユーザーのIDが設定されます。 * `userId`に、リアクションを行ったユーザーのIDが設定されます。
: Przykład:
```json ```json
{ {
type: 'noteUpdated', type: 'noteUpdated',
@ -239,7 +239,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
* `deletedAt`に、削除日時が設定されます。 * `deletedAt`に、削除日時が設定されます。
: Przykład:
```json ```json
{ {
type: 'noteUpdated', type: 'noteUpdated',
@ -259,7 +259,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
* `choice`に、選択肢IDが設定されます。 * `choice`に、選択肢IDが設定されます。
* `userId`に、投票を行ったユーザーのIDが設定されます。 * `userId`に、投票を行ったユーザーのIDが設定されます。
: Przykład:
```json ```json
{ {
type: 'noteUpdated', type: 'noteUpdated',

View file

@ -1,4 +1,4 @@
# テーマ # Motywy
テーマを設定して、Misskeyクライアントの見た目を変更できます。 テーマを設定して、Misskeyクライアントの見た目を変更できます。
@ -61,8 +61,8 @@
* 関数(後述) * 関数(後述)
* `:{関数名}<{引数}<{色}` * `:{関数名}<{引数}<{色}`
#### 定数 #### Stała
「CSS変数として出力はしたくないが、他のCSS変数の値として使いまわしたい」値があるときは、定数を使うと便利です。 キー名を`$`で始めると、そのキーはCSS変数として出力されません。 「CSS変数として出力はしたくないが、他のCSS変数の値として使いまわしたい」値があるときは、定数を使うと便利です。 キー名を`$`で始めると、そのキーはCSS変数として出力されません。
#### 関数 #### Funkcje
wip wip

View file

@ -2,10 +2,10 @@
https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing
## ホーム ## Strona główna
自分のフォローしているユーザーの投稿 自分のフォローしているユーザーの投稿
## ローカル ## Lokalne
全てのローカルユーザーの「ホーム」指定されていない投稿 全てのローカルユーザーの「ホーム」指定されていない投稿
## ソーシャル ## ソーシャル

View file

@ -1,10 +1,10 @@
# 页面 # 页面
## 变量 ## 变量
您可以使用变量创建动态页面。您可以在文本中使用<b>{变量名}</b>的格式来引用变量的值。例えば <b>Hello { thing } world!</b> というテキストで、変数(thing)の値が <b>ai</b> だった場合、テキストは <b>Hello ai world!</b> になります 您可以使用变量创建动态页面。您可以在文本中使用<b>{变量名}</b>的格式来引用变量的值。例如当变量(thing)的值为<b>ai</b>时,字符串<b>Hello { thing } world!</b>的值为<b>Hello ai world!</b>
変数の評価(値を算出すること)は上から下に行われるので、ある変数の中で自分より下の変数を参照することはできません。例えば上から <b>A、B、C</b> と3つの変数を定義したとき、<b>C</b>の中で<b>A</b><b>B</b>を参照することはできますが、<b>A</b>の中で<b>B</b><b>C</b>を参照することはできません 变量的处理(计算变量的值)是从上到下执行的,因此不能引用未声明的变量。例如,如果您依次定义了<b> ABC </b>三个变量,则在<b> C </b>中可以引用<b> A </b><b> B </b>,但<b> A </b>中不能引用<b> B </b><b> C </b>
ユーザーからの入力を受け取るには、ページに「ユーザー入力」ブロックを設置し、「変数名」に入力を格納したい変数名を設定します(変数は自動で作成されます)。その変数を使ってユーザー入力に応じた動作を行えます 为了接收来自用户的输入,页面上设有“用户输入”块,在“变量名称”中设置要在其中保存输入值的变量名(变量会自动创建)。然后您可以通过该变量使用用户输入的值进行其他操作
関数を使うと、値の算出処理を再利用可能な形にまとめることができます。関数を作るには、「関数」タイプの変数を作成します。関数にはスロット(引数)を設定することができ、スロットの値は関数内で変数として利用可能です。また、関数を引数に取る関数(高階関数と呼ばれます)も存在します。関数は予め定義しておくほかに、このような高階関数のスロットに即席でセットすることもできます 函数时一种将可重用的计算过程组合起来的形式。要创建函数,请创建“函数”类型的变量。可以为函数设置插槽(参数),并且插槽值可以作为函数内的变量使用。另外,也可以将函数作为函数的参数(称为高阶函数)。除了预定义函数外,您也可以随时将函数定义在这类高阶功能的插槽中

View file

@ -1,11 +1,11 @@
# 回应 # 回应
他の人のノートに、絵文字を付けて簡単にあなたの反応を伝えられる機能です。 リアクションするには、ノートの + アイコンをクリックしてピッカーを表示し、絵文字を選択します。 リアクションには[カスタム絵文字](./custom-emoji)も使用できます 通过将表情符号加到其他人的帖子上,您可以快速表达您的反应。 要做出回应,请单击帖子上的 + 图标以打开选择器并选择一个表情符号。 您也可以使用[自定义表情符号](./custom-emoji)来进行回应
## リアクションピッカーのカスタマイズ ## 自定义回应选择器
ピッカーに表示される絵文字を自分好みにカスタマイズすることができます。 設定の「リアクション」で設定します 您可以根据自己的喜好自定义选择器中显示的表情符号。 在设置的“回应”中即可进行设置
## リモート投稿へのリアクションについて ## 关于对外部发帖的回应
リアクションはMisskeyオリジナルの機能であるため、リモートインスタンスがMisskeyでない限りは、ほとんどの場合「Like」としてアクティビティが送信されます。一般的にはLikeは「お気に入り」として実装されているようです。 また、相手がMisskeyであったとしても、カスタム絵文字リアクションは伝わらず、自動的に「👍」等にフォールバックされます 回应是Misskey的原生功能因此除非外部实例是Misskey否则该操作很有可能仅以“Like”的形式发送。通常Like表现为“点赞”的功能。 另外即使对方同样是Misskey自定义表情符号的回应也不会被发送而是会自动显示为“👍”等表情符号
## リモートからのリアクションについて ## 关于外部回应
リモートから「Like」アクティビティを受信したとき、Misskeyでは「👍」のリアクションとして解釈されます 当从外部接收到“Like”操作时Misskey会将其解释为“👍”回应

View file

@ -1,33 +1,33 @@
# MisskeyリバーシBotの開発 # Misskey的黑白棋Bot开发
Misskeyのリバーシ機能に対応したBotの開発方法をここに記します 本页会说明如何为Misskey的黑白棋功能开发一个Bot机器人
1. `games/reversi`ストリームに以下のパラメータを付けて接続する: 1. 使用以下参数来连接`games/reversi`流式API
* `i`: botアカウントのAPIキー * `i`: bot账号的API key
2. 対局への招待が来たら、ストリームから`invited`イベントが流れてくる 2. 当出现对局邀请时,流中会触发`invited`事件
* イベントの中身に、`parent`という名前で対局へ誘ってきたユーザーの情報が含まれている * 事件内容中包含邀请您参加游戏的用户信息,名字为`parent`。
3. `games/reversi/match`へ、`user_id`として`parent`の`id`が含まれたリクエストを送信する 3. 向`games/reversi/match`发送请求,其中`user_id`包含`parent`的`id`
4. 上手くいくとゲーム情報が返ってくるので、`games/reversi-game`ストリームへ、以下のパラメータを付けて接続する: 4. 请求成功时将返回游戏信息,然后可以使用以下参数连接到`games/reversi-game`流:
* `i`: botアカウントのAPIキー * `i`: bot账号的API key
* `game`: `game``id` * `game`: `game``id`
5. この間、相手がゲームの設定を変更するとその都度`update-settings`イベントが流れてくるので、必要であれば何かしらの処理を行う 5. 与此同时,每次对手更改游戏设置时,都会触发`update-settings`事件,如果有必要的话,需要对其进行处理。
6. 設定に満足したら、`{ type: 'accept' }`メッセージをストリームに送信する 6. 一旦符合设置,则向流发送`{ type: 'accept' }`消息
7. ゲームが開始すると、`started`イベントが流れてくる 7. 游戏开始时会触发`started`事件
* イベントの中身にはゲーム情報が含まれている * 游戏状态信息会包含在该事件中
8. 石を打つには、ストリームに`{ type: 'set', pos: <位置> }`を送信する(位置の計算方法は後述) 8. 要放置棋子,向流发送`{ type: 'set', pos: <位置> }`(后面会说明位置的计算方法)
9. 相手または自分が石を打つと、ストリームから`set`イベントが流れてくる 9. 当对方或者您放置棋子时,会触发`set`事件
* `color`として石の色が含まれている * `color`中包含该棋子的颜色
* `pos`として位置情報が含まれている * `pos`中包含该棋子的位置
## 位置の計算 ## 位置计算方
8x8のマップを考える場合、各マスの位置(インデックスと呼びます)は次のようになっています: 当棋盘尺寸为8x8时每个方格的位置称为索引如下所示
``` ```
+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+
| 0| 1| 2| 3| 4| 5| 6| 7| | 0| 1| 2| 3| 4| 5| 6| 7|
@ -38,29 +38,29 @@ Misskeyのリバーシ機能に対応したBotの開発方法をここに記し
... ...
``` ```
### X,Y座標 から インデックス に変換する ### 从X,Y坐标转换为索引
``` ```
pos = x + (y * mapWidth) pos = x + (y * mapWidth)
``` ```
`mapWidth`は、ゲーム情報の`map`から、次のようにして計算できます: `mapWidth`可以根据游戏信息中的`map`,通过如下方法计算出来:
``` ```
mapWidth = map[0].length mapWidth = map[0].length
``` ```
### インデックス から X,Y座標 に変換する ### 从索引转换为X,Y坐标
``` ```
x = pos % mapWidth x = pos % mapWidth
y = Math.floor(pos / mapWidth) y = Math.floor(pos / mapWidth)
``` ```
## マップ情報 ## 棋盘信息
マップ情報は、ゲーム情報の`map`に入っています。 文字列の配列になっており、ひとつひとつの文字がマス情報を表しています。 それをもとにマップのデザインを知る事が出来ます: 棋盘信息包含在游戏信息的`map`中。 它是一个字符串数组,每个字符代表一块格子的信息。 您可以根据这些来了解地图如何设计:
* `(スペース)` ... マス無し * `(空)` ... 没有格子
* `-` ... マス * `-` ... 格子
* `b` ... 初期配置される黒石 * `b` ... 黑子先下
* `w` ... 初期配置される白石 * `w` ... 白子先下
例えば、4*4の次のような単純なマップがあるとします: 以下面这个4*4的简单棋盘为例
```text ```text
+---+---+---+---+ +---+---+---+---+
| | | | | | | | | |
@ -73,23 +73,23 @@ y = Math.floor(pos / mapWidth)
+---+---+---+---+ +---+---+---+---+
``` ```
この場合、マップデータはこのようになります: 这种情况下,棋盘数据是这样的:
```javascript ```javascript
['----', '-wb-', '-bw-', '----'] ['----', '-wb-', '-bw-', '----']
``` ```
## ユーザーにフォームを提示して対話可能Botを作成する ## 能和用户互动的交互式Bot机器人的创建
ユーザーとのコミュニケーションを行うため、ゲームの設定画面でユーザーにフォームを提示することができます。 例えば、Botの強さをユーザーが設定できるようにする、といったシナリオが考えられます 要和用户交互,您可以在游戏设置屏幕上向用户显示对话框。 例如可以让用户选择Bot机器人的难度
フォームを提示するには、`reversi-game`ストリームに次のメッセージを送信します: 要显示提示框,需要向`reversi-game`流发送下列消息:
```javascript ```javascript
{ {
type: 'init-form', type: 'init-form',
body: [フォームコントロールの配列] body: [表单控件数组]
} }
``` ```
フォームコントロールの配列については今から説明します。 フォームコントロールは、次のようなオブジェクトです: 下面说明表单控件数组的结构。 表单控件指的是如下面所示的对象:
```javascript ```javascript
{ {
id: 'switch1', id: 'switch1',
@ -98,10 +98,10 @@ y = Math.floor(pos / mapWidth)
value: false value: false
} }
``` ```
`id` ... コントロールのID。 `type` ... コントロールの種類。後述します。 `label` ... コントロールと一緒に表記するテキスト。 `value` ... コントロールのデフォルト値 `id` ... 控件ID。 `type` ... 控件类型。说明详见后文。 `label` ... 控件元素上显示的文字。 `value` ... 控件元素的默认值
### フォームの操作を受け取る ### 控件行为的处理
ユーザーがフォームを操作すると、ストリームから`update-form`イベントが流れてきます。 イベントの中身には、コントロールのIDと、ユーザーが設定した値が含まれています。 例えば、上で示したスイッチをユーザーがオンにしたとすると、次のイベントが流れてきます: 当用户与对话框交互时将会触发流的`update-form`事件。 事件的内容包含控件的ID和用户设置的值。 例如,如果用户将上面显示的开关控件打开,则将触发以下事件:
```javascript ```javascript
{ {
id: 'switch1', id: 'switch1',
@ -109,18 +109,18 @@ y = Math.floor(pos / mapWidth)
} }
``` ```
### フォームコントロールの種類 ### 表单控件的类型
#### 开关 #### 开关
type: `switch` スイッチを表示します。何かの機能をオン/オフさせたい場合に有用です type: `switch` 显示一个开关。当您想要打开/关闭某些功能时非常有用
##### プロパティ ##### 属性
`label` ... スイッチに表記するテキスト `label` ... 开关上显示的文字
#### ラジオボタン #### 单选按钮
type: `radio` ラジオボタンを表示します。選択肢を提示するのに有用です。例えば、Botの強さを設定させるなどです type: `radio` 显示一个单选按钮。用来表示单项选择。例如可以选择Bot机器人的难度
##### プロパティ ##### 属性
`items` ... ラジオボタンの選択肢。例: `items` ... 单元按钮的选择项。例:
```javascript ```javascript
items: [{ items: [{
label: '弱', label: '弱',
@ -129,32 +129,32 @@ items: [{
label: '中', label: '中',
value: 2 value: 2
}, { }, {
label: '', label: '',
value: 3 value: 3
}] }]
``` ```
#### スライダー #### 滑块
type: `slider` スライダーを表示します type: `slider` 显示一个滑块
##### プロパティ ##### 属性
`min` ... スライダーの下限。 `max` ... スライダーの上限。 `step` ... 入力欄で刻むステップ値 `min` ... 滑块最小值。 `max` ... 滑块最大值。 `step` ... 滑块值的步长
#### テキストボックス #### 文本框
type: `textbox` テキストボックスを表示します。ユーザーになにか入力させる一般的な用途に利用できます type: `textbox` 显示一个文本框。可以在各种需要用户输入的地方使用
## ユーザーにメッセージを表示する ## 向用户显示消息
設定画面でユーザーと対話する、フォーム以外のもうひとつの方法がこれです。ユーザーになにかメッセージを表示することができます。 例えば、ユーザーがBotの対応していないモードやマップを選択したとき、警告を表示するなどです。 メッセージを表示するには、次のメッセージをストリームに送信します: 设置屏幕上与用户交互,是除了对话框外的另一种方法。您可以向用户显示一条消息。 例如当用户选择Bot机器人不支持的模式或棋盘时显示警告。 要显示消息,请将以下消息发送到流:
```javascript ```javascript
{ {
type: 'message', type: 'message',
body: { body: {
text: 'メッセージ内容', text: '消息内容',
type: 'メッセージの種類' type: '消息类型'
} }
} }
``` ```
メッセージの種類: `success`, `info`, `warning`, `error` 消息类型:`success`, `info`, `warning`, `error`
## 投了する ## 认输
投了をするには、<a href="./api/endpoints/games/reversi/games/surrender">このエンドポイント</a>にリクエストします 要认输,请发送请求到这个终端

View file

@ -1,25 +1,25 @@
# 流式API # 流式API
ストリーミングAPIを使うと、リアルタイムで様々な情報(例えばタイムラインに新しい投稿が流れてきた、メッセージが届いた、フォローされた、など)を受け取ったり、様々な操作を行ったりすることができます 通过流式API您可以实时接收各种信息例如你的时间线中的新帖文收到的消息关注等并进行各种操作
## ストリームに接続する ## 连接到流
ストリーミングAPIを利用するには、まずMisskeyサーバーに**websocket**接続する必要があります 要使用流式API您需要使用**websocket**连接到Misskey服务器
以下のURLに、`i`というパラメータ名で認証情報を含めて、websocket接続してください。例: 请使用参数`i`连接到以下URL并在websocket连接中包含认证信息。例如
``` ```
%WS_URL%/streaming?i=xxxxxxxxxxxxxxx %WS_URL%/streaming?i=xxxxxxxxxxxxxxx
``` ```
認証情報は、自分のAPIキーや、アプリケーションからストリームに接続する際はユーザーのアクセストークンのことを指します。 认证信息是您的API密钥从应用程序连接到流时需要引用的用户访问令牌
<div class="ui info"> <div class="ui info">
<p><i class="fas fa-info-circle"></i> 認証情報の取得については、<a href="./api">こちらのドキュメント</a>をご確認ください</p> <p><i class="fas fa-info-circle"></i> 关于如何获取认证信息,请参考<a href="./api">此文档</a></p>
</div> </div>
--- ---
認証情報は省略することもできますが、その場合非ログインでの利用ということになり、受信できる情報や可能な操作は限られます。例: 您可以省略身份验证信息。此时无需登录即可使用,但是可以接收的信息和可以执行的操作将受到限制。例:
``` ```
%WS_URL%/streaming %WS_URL%/streaming
@ -27,15 +27,15 @@
--- ---
ストリームに接続すると、後述するAPI操作や、投稿の購読を行ったりすることができます。 しかしまだこの段階では、例えばタイムラインへの新しい投稿を受信したりすることはできません。 それを行うには、ストリーム上で、後述する**チャンネル**に接続する必要があります 通过连接到流您可以执行后文所示的API操作并订阅帖子。 但是此时例如时间线上的新帖子等还无法接收到。 要实现此功能,您需要连接到后文所述的流的**频道**
**ストリームでのやり取りはすべてJSONです。** **所有流交互都是JSON格式。**
## 频道 ## 频道
MisskeyのストリーミングAPIにはチャンネルという概念があります。これは、送受信する情報を分離するための仕組みです。 Misskeyのストリームに接続しただけでは、まだリアルタイムでタイムラインの投稿を受信したりはできません。 ストリーム上でチャンネルに接続することで、様々な情報を受け取ったり情報を送信したりすることができるようになります 频道是Misskey的流API中的概念。这是一种分离发送和接收信息的机制。 您无法仅通过连接到Misskey流来实时接收时间线帖子。 需要通过连接到流中的频道,您才能够接收和发送各种消息
### チャンネルに接続する ### 连接到频道
チャンネルに接続するには、次のようなデータをJSONでストリームに送信します: 要连接到频道请将JSON数据发送到流
```json ```json
{ {
@ -50,19 +50,19 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
} }
``` ```
ここで、 其中:
* `channel`には接続したいチャンネル名を設定します。チャンネルの種類については後述します * `channel`中可以设置您要连接的频道名。频道类型将在后面说明
* `id`にはそのチャンネルとやり取りするための任意のIDを設定します。ストリームでは様々なメッセージが流れるので、そのメッセージがどのチャンネルからのものなのか識別する必要があるからです。このIDは、UUIDや、乱数のようなもので構いません * `id`设置用于与频道通信的ID。因为流中有着各种消息因此需要确定消息来自哪个频道。该ID可以是UUID或随机数
* `params`はチャンネルに接続する際のパラメータです。チャンネルによって接続時に必要とされるパラメータは異なります。パラメータ不要のチャンネルに接続する際は、このプロパティは省略可能です * `params`是连接到频道时传的参数。连接不同的频道时需要不同的参数。连接到无需参数的频道时,该属性为可选
<div class="ui info"> <div class="ui info">
<p><i class="fas fa-info-circle"></i> IDはチャンネルごとではなく「チャンネルの接続ごと」です。なぜなら、同じチャンネルに異なるパラメータで複数接続するケースもあるからです</p> <p><i class="fas fa-info-circle"></i> ID对应的是“频道的连接”,而不是频道。因为在某些情况下会使用不同的参数对同一频道进行多个连接</p>
</div> </div>
### チャンネルからのメッセージを受け取る ### 从频道接收消息
えばタイムラインのチャンネルなら、新しい投稿があった時にメッセージを発します。そのメッセージを受け取ることで、タイムラインに新しい投稿がされたことをリアルタイムで知ることができます 如,当有新帖子时,时间线的频道将发送一条消息。通过接收此消息,您可以实时知道时间线上有新帖子
チャンネルがメッセージを発すると、次のようなデータがJSONでストリームに流れてきます: 当频道发出消息时以下数据将以JSON格式传输到流中
```json ```json
{ {
type: 'channel', type: 'channel',
@ -76,15 +76,15 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
} }
``` ```
ここで、 其中:
* `id`には前述したそのチャンネルに接続する際に設定したIDが設定されています。これで、このメッセージがどのチャンネルからのものなのか知ることができます * `id`为前文所述连接到频道时所设置的ID。因此可以知道此消息来自哪个频道
* `type`にはメッセージの種類が設定されます。チャンネルによって、どのような種類のメッセージが流れてくるかは異なります * `type`为所设的消息类型。不同的频道会有不同类型的消息
* `body`にはメッセージの内容が設定されます。チャンネルによって、どのような内容のメッセージが流れてくるかは異なります * `body`为所设的消息内容。不同的频道中的消息内容也会有不同
### チャンネルに向けてメッセージを送信する ### 向频道发送消息
チャンネルによっては、メッセージを受け取るだけでなく、こちらから何かメッセージを送信し、何らかの操作を行える場合があります 根据频道的不同,您不仅可以接收消息,而且还可以发送消息并执行某些操作
チャンネルにメッセージを送信するには、次のようなデータをJSONでストリームに送信します: 要将消息发送到频道请将JSON格式数据发送到流
```json ```json
{ {
type: 'channel', type: 'channel',
@ -98,13 +98,13 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
} }
``` ```
ここで、 其中:
* `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。これで、このメッセージがどのチャンネルに向けたものなのか識別させることができます * `id`为前文所述连接到频道时想要设置的ID。因此您可以决定此消息发送到哪个频道
* `type`にはメッセージの種類を設定します。チャンネルによって、どのような種類のメッセージを受け付けるかは異なります * `type`为想要设置的消息类型。不同的频道会接受不同类型的消息
* `body`にはメッセージの内容を設定します。チャンネルによって、どのような内容のメッセージを受け付けるかは異なります * `body`为想要设置的消息内容。不同的频道接受的消息内容也会不同
### チャンネルから切断する ### 断开频道连接
チャンネルから切断するには、次のようなデータをJSONでストリームに送信します: 要断开与频道的连接请将JSON格式数据发送到流
```json ```json
{ {
@ -115,8 +115,8 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
} }
``` ```
ここで、 其中:
* `id`には前述したそのチャンネルに接続する際に設定したIDを設定します * `id`为前文所述连接到频道时想要设置的ID
## ストリームを経由してAPIリクエストする ## ストリームを経由してAPIリクエストする
@ -136,7 +136,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
} }
``` ```
ここで、 其中:
* `id`には、APIのレスポンスを識別するための、APIリクエストごとの一意なIDを設定する必要があります。UUIDや、簡単な乱数のようなもので構いません。 * `id`には、APIのレスポンスを識別するための、APIリクエストごとの一意なIDを設定する必要があります。UUIDや、簡単な乱数のようなもので構いません。
* `endpoint`には、あなたがリクエストしたいAPIのエンドポイントを指定します。 * `endpoint`には、あなたがリクエストしたいAPIのエンドポイントを指定します。
* `data`には、エンドポイントのパラメータを含めます。 * `data`には、エンドポイントのパラメータを含めます。
@ -158,7 +158,7 @@ APIへリクエストすると、レスポンスがストリームから次の
} }
``` ```
ここで、 其中:
* `xxxxxxxxxxxxxxxx`の部分には、リクエストの際に設定された`id`が含まれています。これにより、どのリクエストに対するレスポンスなのか判別することができます。 * `xxxxxxxxxxxxxxxx`の部分には、リクエストの際に設定された`id`が含まれています。これにより、どのリクエストに対するレスポンスなのか判別することができます。
* `body`には、レスポンスが含まれています。 * `body`には、レスポンスが含まれています。
@ -185,7 +185,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
} }
``` ```
ここで、 其中:
* `id`にキャプチャしたい投稿の`id`を設定します。 * `id`にキャプチャしたい投稿の`id`を設定します。
このメッセージを送信すると、Misskeyにキャプチャを要請したことになり、以後、その投稿に関するイベントが流れてくるようになります。 このメッセージを送信すると、Misskeyにキャプチャを要請したことになり、以後、その投稿に関するイベントが流れてくるようになります。
@ -206,7 +206,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
} }
``` ```
ここで、 其中:
* `body`内の`id`に、イベントを発生させた投稿のIDが設定されます。 * `body`内の`id`に、イベントを発生させた投稿のIDが設定されます。
* `body`内の`type`に、イベントの種類が設定されます。 * `body`内の`type`に、イベントの種類が設定されます。
* `body`内の`body`に、イベントの詳細が設定されます。 * `body`内の`body`に、イベントの詳細が設定されます。
@ -219,7 +219,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
* `reaction`に、リアクションの種類が設定されます。 * `reaction`に、リアクションの種類が設定されます。
* `userId`に、リアクションを行ったユーザーのIDが設定されます。 * `userId`に、リアクションを行ったユーザーのIDが設定されます。
:
```json ```json
{ {
type: 'noteUpdated', type: 'noteUpdated',
@ -239,7 +239,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
* `deletedAt`に、削除日時が設定されます。 * `deletedAt`に、削除日時が設定されます。
:
```json ```json
{ {
type: 'noteUpdated', type: 'noteUpdated',
@ -259,7 +259,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
* `choice`に、選択肢IDが設定されます。 * `choice`に、選択肢IDが設定されます。
* `userId`に、投票を行ったユーザーのIDが設定されます。 * `userId`に、投票を行ったユーザーのIDが設定されます。
:
```json ```json
{ {
type: 'noteUpdated', type: 'noteUpdated',
@ -289,7 +289,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
} }
``` ```
ここで、 其中:
* `id`にキャプチャを解除したい投稿の`id`を設定します。 * `id`にキャプチャを解除したい投稿の`id`を設定します。
このメッセージを送信すると、以後、その投稿に関するイベントは流れてこないようになります。 このメッセージを送信すると、以後、その投稿に関するイベントは流れてこないようになります。

View file

@ -1,7 +1,7 @@
# プラグインの作成 # プラグインの作成
Misskey Webクライアントのプラグイン機能を使うと、クライアントを拡張し、様々な機能を追加できます。 ここではプラグインの作成にあたってのメタデータ定義や、AiScript APIリファレンスを掲載します。 Misskey Webクライアントのプラグイン機能を使うと、クライアントを拡張し、様々な機能を追加できます。 ここではプラグインの作成にあたってのメタデータ定義や、AiScript APIリファレンスを掲載します。
## 元資Metadata ## 元資
プラグインは、AiScriptのメタデータ埋め込み機能を使って、デフォルトとしてプラグインのメタデータを定義する必要があります。 メタデータは次のプロパティを含むオブジェクトです。 プラグインは、AiScriptのメタデータ埋め込み機能を使って、デフォルトとしてプラグインのメタデータを定義する必要があります。 メタデータは次のプロパティを含むオブジェクトです。
### name ### name