Merge branch 'develop'

This commit is contained in:
syuilo 2021-03-03 01:04:45 +09:00
commit 9a4a534c92
88 changed files with 733 additions and 389 deletions

View file

@ -45,7 +45,7 @@ gulp.task('build:copy:locales', cb => {
});
gulp.task('build:client:script', () => {
return gulp.src(['./src/server/web/boot.js'])
return gulp.src(['./src/server/web/boot.js', './src/server/web/bios.js', './src/server/web/cli.js'])
.pipe(replace('VERSION', JSON.stringify(meta.version)))
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
.pipe(terser({
@ -55,7 +55,7 @@ gulp.task('build:client:script', () => {
});
gulp.task('build:client:style', () => {
return gulp.src(['./src/server/web/style.css'])
return gulp.src(['./src/server/web/style.css', './src/server/web/bios.css', './src/server/web/cli.css'])
.pipe(cssnano())
.pipe(gulp.dest('./built/server/web/'));
});

View file

@ -17,7 +17,7 @@ noNotes: "Aucune note"
noNotifications: "Aucune notification"
instance: "Instance"
settings: "Paramètres"
basicSettings: "Paramètres basiques"
basicSettings: "Paramètres généraux"
otherSettings: "Autres paramètres"
openInWindow: "Ouvrir dans une nouvelle fenêtre"
profile: "Profil"
@ -34,7 +34,7 @@ addUser: "Ajouter un·e utilisateur·rice"
favorite: "Ajouter aux favoris"
favorites: "Favoris"
unfavorite: "Retirer des favoris"
favorited: "Ajouter à mes favoris"
favorited: "Ajouté à mes favoris"
alreadyFavorited: "Déjà ajouté aux favoris."
cantFavorite: "Impossible d'ajouter aux favoris."
pin: "Épingler sur le profil"
@ -62,7 +62,7 @@ import: "Importer"
export: "Exporter"
files: "Fichiers"
download: "Télécharger"
driveFileDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer le fichier \"{name}\" ? Les notes avec ce fichier joint seront aussi supprimées."
driveFileDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer le fichier \"{name}\" ? Les notes liées à ce fichier seront aussi supprimées."
unfollowConfirm: "Désirez-vous vous désabonner de {name} ?"
exportRequested: "Vous avez demandé une exportation. Lopération pourrait prendre un peu de temps. Une terminée, le fichier résultant sera ajouté au Drive."
importRequested: "Vous avez initié un import. Cela pourrait prendre un peu de temps."
@ -88,12 +88,13 @@ follow: "Sabonner"
followRequest: "Demande dabonnement"
followRequests: "Demandes dabonnement"
unfollow: "Se désabonner"
followRequestPending: "En attente dapprobation"
enterEmoji: "ou entrez un émoji"
renote: "Renote"
unrenote: "Annuler Renote"
renoted: "Republier"
followRequestPending: "Demande d'abonnement en attente de confirmation"
enterEmoji: "Insérer un émoji"
renote: "Partager"
unrenote: "Annuler le partage"
renoted: "Republié !"
cantRenote: "Ce message ne peut pas être republié."
cantReRenote: "Impossible de repartager un partage."
quote: "Citer"
pinnedNote: "Note épinglée"
pinned: "Épingler sur le profil"
@ -103,13 +104,14 @@ sensitive: "Contenu sensible"
add: "Ajouter"
reaction: "Réactions"
reactionSettingDescription: "Choisissez vos réactions préférées que vous souhaitez épingler dans le sélecteur de réactions."
reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser « + » pour ajouter."
rememberNoteVisibility: "Se souvenir de la visibilité des notes"
attachCancel: "Supprimer le fichier attaché"
markAsSensitive: "Marquer comme sensible"
unmarkAsSensitive: "Enlever le marquage comme sensible"
unmarkAsSensitive: "Supprimer le marquage comme sensible"
enterFileName: "Entrer le nom du fichier"
mute: "Mettre en sourdine"
unmute: "Enlever la sourdine"
unmute: "Ne plus masquer"
block: "Bloquer"
unblock: "Débloquer"
suspend: "Suspendre"
@ -122,7 +124,7 @@ selectList: "Sélectionner une liste"
selectAntenna: "Sélectionner une antenne"
selectWidget: "Sélectionner un widget"
editWidgets: "Modifier les widgets"
editWidgetsExit: "Fait"
editWidgetsExit: "Valider les modifications"
customEmojis: "Émojis personnalisés"
emoji: "Émoji"
emojiName: "Nom de lémoji"
@ -132,9 +134,9 @@ settingGuide: "Configuration proposée"
cacheRemoteFiles: "Mise en cache des fichiers distants"
cacheRemoteFilesDescription: "Lorsque cette option est désactivée, les fichiers distants sont chargés directement depuis linstance distante. La désactiver diminuera certes lutilisation de lespace de stockage local mais augmentera le trafic réseau puisque les miniatures ne seront plus générées."
flagAsBot: "Ce compte est un robot"
flagAsBotDescription: "Si ce compte est contrôlé par un programme, définissez cette option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster les systèmes internes de Misskey pour traiter ce compte comme un robot."
flagAsBotDescription: "Si ce compte est géré de manière automatisée , définissez cette option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster les systèmes internes de Misskey pour traiter ce compte comme un robot."
flagAsCat: "Ce compte est un chat"
flagAsCatDescription: "Activez cette option pour que ce compte soit marqué comme un chat."
flagAsCatDescription: "Vous pouvez activer l'option \"Je suis un chat \" pour ce compte."
autoAcceptFollowed: "Accepter automatiquement les demandes dabonnement venant dutilisateur·rice·s que vous suivez"
addAcount: "Ajouter un compte"
loginFailed: "Échec de la connexion"
@ -150,7 +152,7 @@ proxyAccount: "Compte proxy"
proxyAccountDescription: "Un compte proxy se comporte, dans certaines conditions, comme un·e abonné·e distant·e pour les utilisateurs d'autres instances. Par exemple, quand un·e utilisateur·rice ajoute un·e utilisateur·rice distant·e à une liste, ses notes ne seront pas visibles sur l'instance si personne ne suit cet·te utilisateur·rice. Le compte proxy va donc suivre cet·te utilisateur·rice pour que ses notes soient acheminées."
host: "Hôte"
selectUser: "Sélectionner un·e utilisateur·rice"
recipient: "Correspondant·e"
recipient: "Destinataire"
annotation: "Commentaires"
federation: "Fédération"
instances: "Instance"
@ -169,7 +171,7 @@ software: "Logiciel"
version: "Version"
metadata: "Métadonnées"
withNFiles: "{n} fichier(s)"
monitor: "Écran de contrôle"
monitor: "Contrôle"
jobQueue: "File dattente"
cpuAndMemory: "Processeur et mémoire"
network: "Réseau"
@ -178,9 +180,9 @@ instanceInfo: "Informations sur linstance"
statistics: "Statistiques"
clearQueue: "Vider la file dattente"
clearQueueConfirmTitle: "Êtes-vous sûr·e de vouloir vider la file dattente ?"
clearQueueConfirmText: "Les notes non distribuées ne seront pas livrées. Normalement, vous n'avez PAS besoin d'effectuer cette opération."
clearQueueConfirmText: "Les notes non distribuées ne seront pas délivrées. Normalement, vous n'avez pas besoin d'effectuer cette opération."
clearCachedFiles: "Vider le cache"
clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider le cache de fichiers distants ?"
clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider tout le cache de fichiers distants ?"
blockedInstances: "Instances bloquées"
blockedInstancesDescription: "Listez les instances que vous désirez bloquer, une par ligne. Ces instances ne seront plus en capacité d'interagir avec votre instance."
muteAndBlock: "Masqué·e·s / Bloqué·e·s"
@ -193,7 +195,7 @@ pinLimitExceeded: "Vous ne pouvez plus épingler dautres notes."
intro: "Linstallation de Misskey est terminée ! Veuillez créer un compte administrateur."
done: "Terminé"
processing: "Traitement en cours"
preview: "Prévisualisation"
preview: "Aperçu"
default: "Par défaut"
noCustomEmojis: "Il n'y a pas démoji"
noJobs: "Il ny a aucune tâche planifiée"
@ -204,7 +206,7 @@ all: "Tous"
subscribing: "Abonné"
publishing: "Publié"
notResponding: "Ne répond pas"
instanceFollowing: "Abonnements une instance"
instanceFollowing: "Suivre une instance"
instanceFollowers: "Abonné·e·s de linstance"
instanceUsers: "Utilisateur·rice·s de cette linstance"
changePassword: "Modifier votre mot de passe"
@ -217,15 +219,15 @@ attachFile: "Joindre un fichier"
more: "Plus !"
featured: "Tendances"
usernameOrUserId: "Nom dutilisateur·rice ou ID utilisateur"
noSuchUser: "Utilisateur·rice non trouvé"
noSuchUser: "Utilisateur·rice non trouvé·e"
lookup: "Recherche"
announcements: "Annonces"
imageUrl: "URL de limage"
remove: "Supprimer"
removed: "Supprimé"
removeAreYouSure: "Supprimer «{x}» ?"
deleteAreYouSure: "Supprimer «{x}» ?"
resetAreYouSure: "Réinitialiser ?"
removeAreYouSure: "Êtes-vous sûr·e de vouloir supprimer「{x}」?"
deleteAreYouSure: "Êtes-vous sûr·e de vouloir supprimer「{x}」?"
resetAreYouSure: "Voulez-vous réinitialiser ?"
saved: "Enregistré"
messaging: "Discuter"
upload: "Téléverser"
@ -257,28 +259,28 @@ themeForLightMode: "Thème à utiliser en Mode Clair"
themeForDarkMode: "Thème à utiliser en Mode Sombre"
light: "Clair"
dark: "Sombre"
lightThemes: "Thème clair"
darkThemes: "Thème sombre"
syncDeviceDarkMode: "Synchronisez le mode sombre avec les paramètres de votre appareil"
lightThemes: "Thèmes clairs"
darkThemes: "Thèmes sombres"
syncDeviceDarkMode: "Utiliser le mode sombre de votre appareil"
drive: "Drive"
fileName: "Nom du fichier"
selectFile: "Choisir le fichier"
selectFiles: "Choisir les fichiers"
selectFolder: "Sélectionnez un dossier"
selectFolders: "Sélectionnez des dossiers"
renameFile: "Renommer le ficher"
renameFile: "Renommer le fichier"
folderName: "Nom du dossier"
createFolder: "Créer un dossier"
renameFolder: "Renommer le dossier"
deleteFolder: "Supprimer le dossier"
addFile: "Ajoutez un fichier"
addFile: "Ajouter un fichier"
emptyDrive: "Le Drive est vide"
emptyFolder: "Le dossier est vide"
unableToDelete: "Ne peut pas être supprimé"
unableToDelete: "Suppression impossible"
inputNewFileName: "Entrez un nouveau nom de fichier"
inputNewFolderName: "Entrez un nouveau nom de dossier"
circularReferenceFolder: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer."
hasChildFilesOrFolders: "Ce dossier n'est pas vide, il ne peut donc pas être supprimé"
hasChildFilesOrFolders: "Impossible de supprimer ce dossier car il n'est pas vide."
copyUrl: "Copier lURL"
rename: "Renommer"
avatar: "Avatar"
@ -288,7 +290,7 @@ whenServerDisconnected: "Lorsque la connexion au serveur est perdue"
disconnectedFromServer: "Déconnecté·e du serveur"
reload: "Rafraîchir"
doNothing: "Ignorer"
reloadConfirm: "Voulez-vous recharger le fil ?"
reloadConfirm: "Voulez-vous recharger?"
watch: "Surveiller"
unwatch: "Ne plus surveiller"
accept: "Autoriser"
@ -325,6 +327,9 @@ bannerUrl: "URL de limage de la bannière"
basicInfo: "Informations basiques"
pinnedUsers: "Utilisateur·rice épinglé·e"
pinnedUsersDescription: "Listez les utilisateur·rice·s que vous souhaitez voir épinglé·e·s sur la page \"Découvrir\", un·e par ligne."
pinnedPages: "Pages épinglées"
pinnedPagesDescription: "Inscrivez le chemin des pages que vous souhaitez épingler en haut de la page de l'instance. Séparez les pages d'un retour à la ligne."
pinnedClipId: "Identifiant du clip épinglé"
pinnedNotes: "Note épinglée"
hcaptcha: "hCaptcha"
enableHcaptcha: "Activer hCaptcha"
@ -354,7 +359,7 @@ notesAndReplies: "Notes et Réponses"
withFiles: "Avec fichiers joints"
silence: "Mettre en sourdine"
silenceConfirm: "Êtes-vous sûr·e de vouloir mettre lutilisateur·rice en sourdine ?"
unsilence: "Annuler la mise en sourdine"
unsilence: "Annuler la sourdine"
unsilenceConfirm: "Êtes-vous sûr·e de vouloir annuler la mise en sourdine de cette utilisateur·rice ?"
popularUsers: "Utilisateur·rice·s populaires"
recentlyUpdatedUsers: "Utilisateur·rice·s actif·ve·s récemment"
@ -433,6 +438,7 @@ signinWith: "Connectez-vous avec {x}"
signinFailed: "Échec dauthentification. Veuillez vérifier que votre nom dutilisateur et mot de passe sont corrects."
tapSecurityKey: "Appuyez sur votre clé de sécurité"
or: "OU"
language: "Langue"
uiLanguage: "Langue daffichage de linterface"
groupInvited: "Invité au groupe"
aboutX: "À propos de {x}"
@ -482,6 +488,7 @@ objectStorageUseSSL: "Utiliser SSL"
objectStorageUseSSLDesc: "Désactivez-le si vous n'utilisez pas HTTPS pour la connexion API"
objectStorageUseProxy: "Se connecter via proxy"
objectStorageUseProxyDesc: "Désactivez-le si vous n'utilisez pas Proxy pour la connexion de stockage d'objets"
objectStorageSetPublicRead: "Régler sur « public » lors de l'envoi"
serverLogs: "Journaux serveur"
deleteAll: "Supprimer tout"
showFixedPostForm: "Afficher le formulaire en haut du fil d'actualité"
@ -489,6 +496,7 @@ newNoteRecived: "Vous avez une nouvelle note"
sounds: "Sons"
listen: "Écouter"
none: "Rien"
showInPage: "Afficher dans la page"
popout: "Fenêtre contextuelle"
volume: "Volume"
masterVolume: "Volume"
@ -517,7 +525,7 @@ deleteAllFilesConfirm: "Êtes vous surs de vouloir supprimer tous les fichiers ?
removeAllFollowing: "Retenir tous les abonnements"
removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Veuillez lancer cette action uniquement si linstance nexiste plus."
userSuspended: "Cette utilisateur·trice a été suspendue."
userSilenced: "Cette utilisateur·trice a été masquer."
userSilenced: "Cette utilisateur·trice a été mis·e en sourdine."
sidebar: "Barre latérale"
divider: "Séparateur"
addItem: "Ajouter élément"
@ -545,6 +553,7 @@ plugins: "Extensions"
deck: "Deck"
undeck: "Quitter le deck"
useBlurEffectForModal: "Utiliser un effet de flou pour les modals"
useFullReactionPicker: "Utiliser l'intégralité du panneau de réactions"
width: "Largeur"
height: "Hauteur"
large: "Grand"
@ -591,36 +600,64 @@ useGlobalSetting: "Utiliser paramètre général"
useGlobalSettingDesc: "S'il est activé, les paramètres de notification de votre compte seront utilisés. S'il est désactivé, des configurations individuelles peuvent être effectuées."
other: "Autre"
regenerateLoginToken: "Régénérer le jeton de connexion"
regenerateLoginTokenDescription: "Générer un nouveau jeton d'authentification. Cette opération ne devrait pas être nécessaire ; lors de la génération d'un nouveau jeton, tous les appareils seront déconnectés. "
setMultipleBySeparatingWithSpace: "Vous pouvez définir plus dun, séparés par des espaces."
fileIdOrUrl: "ID du fichier ou URL"
chatOpenBehavior: "Comportement de la fenêtre de discussion lors de son ouverture"
behavior: "Comportement"
abuseReports: "Signalements"
reportAbuse: "Signalements"
reportAbuseOf: "Signaler {name}"
fillAbuseReportDescription: "Veuillez expliquer les raisons du signalement. S'il s'agit d'une note précise, veuillez en donner le lien."
abuseReported: "Le rapport est envoyé. Merci."
send: "Envoyer"
abuseMarkAsResolved: "Marquer le signalement comme résolu"
openInNewTab: "Ouvrir dans un nouvel onglet"
openInSideView: "Ouvrir en vue latérale"
defaultNavigationBehaviour: "Navigation par défaut"
editTheseSettingsMayBreakAccount: "La modification de ces paramètres peut endommager votre compte."
waitingFor: "En attente de {x}"
random: "Aléatoire"
system: "Système"
switchUi: "Modifier l'interface utilisateur"
desktop: "Bureau"
clip: "Clip"
optional: "Facultatif"
createNewClip: "Créer un nouveau clip"
public: "Public"
i18nInfo: "Misskey est traduit dans différentes langues par des bénévoles. Vous pouvez contribuer à {link}."
manageAccessTokens: "Gérer les jetons d'accès"
accountInfo: " Informations du compte "
notesCount: "Nombre de notes"
repliesCount: "Nombre de réponses envoyées"
renotesCount: "Nombre de notes repartagées"
repliedCount: "Nombre de réponses reçues"
renotedCount: "Nombre de Renotes"
followingCount: "Nombre de comptes suivis"
followersCount: "Nombre d'abonnés"
sentReactionsCount: "Nombre de réactions envoyées"
receivedReactionsCount: "Nombre de réactions reçues"
pollVotesCount: "Nombre de votes envoyés"
pollVotedCount: "Nombre de votes reçus"
yes: "Oui"
no: "Non"
driveFilesCount: "Nombre de fichiers dans le Drive"
driveUsage: "Utilisation du Drive"
noCrawle: "Refuser l'indexation par les robots"
noCrawleDescription: "Demandez aux moteurs de recherche de ne pas indexer votre page de profil, vos notes, vos pages, etc."
lockedAccountInfo: "À moins que vous ne définissiez la visibilité de votre note sur \"Abonné-e-s\", vos notes sont visibles par tous, même si vous exigez que les followers soient approuvés manuellement."
alwaysMarkSensitive: "Marquer les médias comme contenu sensible par défaut"
loadRawImages: "Affichage complet des images jointes au lieu des vignettes"
disableShowingAnimatedImages: "Désactiver l'animation des images"
verificationEmailSent: "Un e-mail de vérification a été envoyé. Veuillez accéder au lien pour compléter la vérification."
notSet: "Non défini"
emailVerified: "Votre adresse e-mail a été vérifiée."
noteFavoritesCount: "Nombre de notes dans les favoris"
pageLikesCount: "Nombre de pages aimées"
pageLikedCount: "Nombre de vos pages aimées"
reversiCount: "Nombre de parties de Reversi"
contact: "Contact"
useSystemFont: "Utiliser la police par défaut du système"
clips: "Clip"
experimentalFeatures: "Fonctionnalités expérimentales"
developer: "Développeur"
@ -631,6 +668,7 @@ left: "Gauche"
center: "Centrer"
wide: "Large"
narrow: "Condensé"
reloadToApplySetting: "Vos paramètres seront appliqués lorsque vous rechargerez la page. Souhaitez-vous recharger ?"
showTitlebar: "Afficher la barre de titre"
clearCache: "Vider le cache"
onlineUsersCount: "{n} utilisateur(s) en ligne"
@ -640,18 +678,43 @@ sendErrorReports: "Envoyer les rapports derreur"
sendErrorReportsDescription: "Lorsqu'il est activé, des informations détaillées sur les erreurs sont partagées avec Misskey lorsqu'un problème survient, ce qui contribue à améliorer la qualité de Misskey."
myTheme: "Mes thèmes"
backgroundColor: "Arrière-plan"
accentColor: "Accentuation"
textColor: "Texte"
saveAs: "Enregistrer sous ..."
advanced: "Avancé"
value: "Valeur"
updatedAt: "Mis à jour le"
saveConfirm: "Voulez-vous sauvegarder les modifications?"
deleteConfirm: "Confirmez-vous la suppression?"
invalidValue: "Cette valeur est invalide."
registry: "Registre"
closeAccount: "Fermer le compte"
currentVersion: "Version actuelle"
latestVersion: "Dernière version "
youAreRunningUpToDateClient: "Votre client est à jour."
newVersionOfClientAvailable: "Une nouvelle version de votre client est disponible."
usageAmount: "Utilisation"
capacity: "Capacité "
inUse: "utilisé"
editCode: "Modifier le code"
apply: "Appliquer"
receiveAnnouncementFromInstance: "Recevoir les messages d'information de l'instance"
emailNotification: "Notifications par mail"
inChannelSearch: "Chercher dans le canal"
useReactionPickerForContextMenu: "Clic-droit pour ouvrir le panneau de réactions"
typingUsers: "{users} est en train d'écrire"
jumpToSpecifiedDate: "Se rendre à la date"
showingPastTimeline: "Un fil ancien est affiché"
clear: "Effacer"
_email:
_follow:
title: "Vous suit"
_receiveFollowRequest:
title: "Vous avez reçu une demande de suivi"
_plugin:
install: "Installation de plugin"
installWarn: "Ninstallez que des extensions provenant de sources de confiance."
manage: "Gestion des plugins"
_registry:
key: "Clé "
keys: "Clé "
@ -667,31 +730,88 @@ _aboutMisskey:
morePatrons: "Nous apprécions vraiment le soutien de nombreuses autres personnes non mentionnées ici. Merci à toutes et à tous ! 🥰"
patrons: "Contributeurs"
_nsfw:
respect: "Cacher les médias sensibles"
respect: "Cacher les médias marqués comme contenu sensible"
ignore: "Afficher les médias sensibles"
force: "Cacher tous les médias"
_mfm:
cheatSheet: "Antisèche MFM"
intro: "MFM est un langage Markdown spécifique utilisable ici et là dans Misskey. Vous pouvez vérifier ici les structures utilisables avec MFM."
dummy: "La Fédiverse s'agrandit avec Misskey"
mention: "Mentionner"
mentionDescription: "Vous pouvez afficher un utilisateur spécifique en indiquant une arobase suivie d'un nom d'utilisateur"
hashtag: "Hashtags"
hashtagDescription: "Vous pouvez afficher un mot-dièse en utilisant un croisillon et du texte"
url: "URL"
urlDescription: "L'adresse web peut être affichée."
link: "Lien"
linkDescription: "Une partie précise d'une phrase peut être liée à l'adresse web."
bold: "Gras"
boldDescription: "Il est possible de mettre le texte en exergue en le mettant en gras."
small: "Diminuer l'emphase"
smallDescription: "Le contenu peut être affiché en petit et fin."
center: "Centrée"
centerDescription: "Le contenu peut être centré"
inlineCode: "Code (inline)"
blockCode: "Bloc de code"
quote: "Citer"
quoteDescription: "Affiche le contenu sous forme de citation."
emoji: "Émojis personnalisés"
search: "Rechercher"
flip: "Inverser"
x2: "Grand"
x2Description: "Afficher le contenu en grand."
x3: "Très grand"
x3Description: "Afficher le contenu en très grand."
x4: "Plus grand"
x4Description: "Afficher le contenu en plus grand."
blur: "Flou"
blurDescription: "Le contenu peut être flouté ; il sera visible en le survolant avec le curseur."
font: "Police de caractères"
fontDescription: "Il est possible de choisir la police."
_reversi:
reversi: "Reversi"
gameSettings: "Réglages de la partie"
chooseBoard: "Choix du plateau"
blackOrWhite: "Pions blancs/Pions noirs"
blackIs: "{name} joue les pions noirs"
rules: "Règles"
botSettings: "Options du bot"
thisGameIsStartedSoon: "La partie commencera dans quelques secondes"
waitingForOther: "En attente que l'adversaire soit prêt"
waitingForMe: "En attente que vous soyez prêt"
waitingBoth: "Préparez-vous"
ready: "Prêt"
cancelReady: "Recommencer la préparation"
opponentTurn: "Tour de ladversaire"
myTurn: "Cest votre tour"
turnOf: "Tour de {name}"
pastTurnOf: "Tour de {name}"
surrender: "Abandonner"
surrendered: "Par abandon"
drawn: "Match nul"
won: "{name} a gagné"
black: "Noirs"
white: "Blancs"
total: "Total"
turnCount: "Tour {count}"
myGames: "Mes parties"
allGames: "Toutes les parties"
ended: "Fin de partie"
playing: "En cours"
isLlotheo: "Celui ou celle qui a le moins de pièces gagne (Llotheo)"
canPutEverywhere: "Les pions peuvent être placés partout "
_instanceTicker:
none: "Cacher "
_serverDisconnectedBehavior:
reload: "Rechargement automatique"
quiet: "Afficher un avertissement discret"
_channel:
create: "Créer un canal"
edit: "Éditer le canal"
setBanner: "Sélectionner la bannière"
removeBanner: "Supprimer la bannière"
featured: "Tendances"
following: "Abonné·e"
usersCount: "{n} Participants"
notesCount: "{n} Notes"
_sidebar:
@ -699,9 +819,9 @@ _sidebar:
icon: "Avatar"
hide: "Masquer"
_wordMute:
muteWords: "Mot à mettre en sourdine"
muteWords: "Mots à filtrer"
muteWordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR."
mutedNotes: "Notes mises en sourdine"
mutedNotes: "Notes filtrées"
_theme:
explore: "Explorer les thèmes"
install: "Installer un thème"
@ -709,6 +829,7 @@ _theme:
code: "Code du thème"
installed: "{name} a été installé"
installedThemes: "Thèmes installés"
builtinThemes: "Thèmes intégrés"
alreadyInstalled: "Ce thème est déjà installé"
invalid: "Le format du thème n'est pas valide"
make: "Créer un thème"
@ -733,16 +854,25 @@ _theme:
header: "Entête"
navBg: "Fond de la barre latérale"
navFg: "Texte de la barre latérale"
navHoverFg: "Texte de la barre latérale (survolé)"
navActive: "Texte de la barre latérale (actif)"
navIndicator: "Indicateur de barre latérale"
link: "Lien"
hashtag: "Hashtags"
mention: "Mentionner"
mentionMe: "Mentions (Moi)"
renote: "Renote"
renote: "Partager"
divider: "Séparateur"
scrollbarHandle: "Poignée de la barre de navigation"
scrollbarHandleHover: "Poignée de la barre de navigation (survolée)"
infoWarnFg: "Texte davertissement"
cwBg: "Arrière-plan du CW"
buttonBg: "Arrière-plan du bouton"
buttonHoverBg: "Arrière-plan du bouton (survolé)"
inputBorder: "Cadre de la zone de texte"
badge: "Badge"
messageBg: "Arrière plan de la discussion"
fgHighlighted: "Texte mis en évidence"
_sfx:
note: "Nouvelle note"
noteMy: "Ma note"
@ -811,8 +941,8 @@ _permissions:
"write:following": "Abonnements/Se désabonner"
"read:messaging": "Cherche à discuter"
"write:messaging": "Contrôler le discuter"
"read:mutes": "Voir les comptes muets"
"write:mutes": "Gérer les comptes muets"
"read:mutes": "Voir les comptes masqués"
"write:mutes": "Gérer les comptes masqués"
"write:notes": "Créer / supprimer des notes"
"read:notifications": "Afficher les notifications"
"write:notifications": "Gérer vos notifications"
@ -861,8 +991,12 @@ _widgets:
digitalClock: "Horloge numérique"
federation: "Fédération"
postForm: "Formulaire à publier"
slideshow: "Diaporama"
button: "Bouton"
onlineUsers: "Utilisateurs en ligne"
jobQueue: "File dattente"
serverMetric: "Statistiques du serveur"
aiscript: "Console AiScript"
_cw:
hide: "Masquer"
show: "Afficher plus …"
@ -917,12 +1051,17 @@ _profile:
username: "Nom dutilisateur·rice"
description: "À propos de moi"
youCanIncludeHashtags: "Vous pouvez également inclure des hashtags."
metadata: "Informations supplémentaires"
metadataEdit: "Éditer les informations supplémentaires"
metadataDescription: "Vous pouvez afficher jusqu'à quatre informations supplémentaires dans votre profil."
metadataLabel: "Étiquette"
metadataContent: "Contenu"
changeAvatar: "Changer l'image de profil"
changeBanner: "Changer de bannière"
_exportOrImport:
allNotes: "Toutes les notes"
followingList: "Abonnements"
muteList: "Mettre en sourdine"
muteList: "Liste des comptes maqués"
blockingList: "Bloquer"
userLists: "Listes"
_charts:
@ -1025,6 +1164,7 @@ _pages:
created: "La page a été créée !"
updated: "La page a été mise à jour !"
deleted: "La page a bien été supprimée"
pageSetting: "Paramètres de la Page"
nameAlreadyExists: "La URL de page spécifiée existe déjà"
invalidNameTitle: "La URL de la page spécifiée nest pas valide"
invalidNameText: "Assurez-vous quil nest pas vide"
@ -1035,6 +1175,7 @@ _pages:
unlike: "Je naime pas"
my: "Mes pages"
liked: "Pages favorites"
featured: "Populaire"
inspector: "Inspecteur"
contents: "Contenu"
content: "Bloc de page"
@ -1090,6 +1231,9 @@ _pages:
id: "Toile ID"
width: "Largeur"
height: "Hauteur"
_note:
id: "Identifiant de la note"
detailed: "Afficher les détails"
switch: "Basculer"
_switch:
name: "Nom de la variable"
@ -1322,19 +1466,28 @@ _notification:
follow: "Abonnements"
mention: "Mentionner"
reply: "Réponses"
renote: "Renote"
renote: "Partager"
quote: "Citer"
reaction: "Réactions"
receiveFollowRequest: "Demande d'abonnement reçue"
followRequestAccepted: "Demande d'abonnement acceptée"
groupInvited: "Invité aux groupes"
app: "Notifications provenant des apps"
_deck:
alwaysShowMainColumn: "Toujours afficher la colonne principale"
columnAlign: "Aligner les colonnes"
columnMargin: "Marge entre les colonnes"
columnHeaderHeight: "Taille de l'en-tête de colonne"
addColumn: "Ajouter une colonne"
swapLeft: "Déplacer à gauche"
swapRight: "Déplacer à droite"
swapUp: "Déplacer vers le haut"
swapDown: "Déplacer vers le bas"
stackLeft: "Empiler à gauche"
popRight: "Vers la droite"
profile: "Profil"
_columns:
main: "Principale"
widgets: "Widgets"
notifications: "Notifications"
tl: "Fil"

View file

@ -1,7 +1,7 @@
{
"name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.72.0",
"version": "12.73.0",
"codename": "indigo",
"repository": {
"type": "git",
@ -120,7 +120,7 @@
"broadcast-channel": "3.4.1",
"bull": "3.20.1",
"cafy": "15.2.1",
"cbor": "7.0.1",
"cbor": "7.0.3",
"chalk": "4.1.0",
"chart.js": "2.9.4",
"cli-highlight": "2.1.10",
@ -250,7 +250,7 @@
"vue-json-pretty": "1.7.1",
"vue-loader": "16.1.2",
"vue-prism-editor": "2.0.0-alpha.2",
"vue-router": "4.0.3",
"vue-router": "4.0.4",
"vue-style-loader": "4.1.2",
"vuedraggable": "4.0.1",
"web-push": "3.4.4",

View file

@ -401,8 +401,7 @@ export default defineComponent({
z-index: 65535;
max-width: 100%;
margin-top: calc(1em + 8px);
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
transition: top 0.1s ease, left 0.1s ease;
> ol {
@ -419,8 +418,7 @@ export default defineComponent({
align-items: center;
padding: 4px 12px;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
font-size: 0.9em;
cursor: default;
@ -429,8 +427,7 @@ export default defineComponent({
}
* {
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
}

View file

@ -66,8 +66,7 @@ export default defineComponent({
<style lang="scss" scoped>
.eftoefju {
display: block;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
width: 100%;
&:hover {

View file

@ -342,8 +342,7 @@ export default defineComponent({
text-align: center;
word-break: break-all;
color: var(--fg);
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .ext {
opacity: 0.5;

View file

@ -62,10 +62,6 @@
<header class="_acrylic">{{ $ts.emoji }}</header>
<XSection v-for="category in categories" :emojis="emojilist.filter(e => e.category === category).map(e => e.char)">{{ category }}</XSection>
</div>
<div>
<header class="_acrylic">{{ $ts.tags }}</header>
<XSection v-for="tag in emojiTags" :emojis="customEmojis.filter(e => e.aliases.includes(tag)).map(e => ':' + e.name + ':')">{{ tag }}</XSection>
</div>
</div>
<div class="tabs">
<button class="_button tab" :class="{ active: tab === 'index' }" @click="tab = 'index'"><Fa :icon="faAsterisk" fixed-width/></button>
@ -86,7 +82,7 @@ import Particle from '@/components/particle.vue';
import * as os from '@/os';
import { isDeviceTouch } from '@/scripts/is-device-touch';
import { isMobile } from '@/scripts/is-mobile';
import { emojiCategories, emojiTags } from '@/instance';
import { emojiCategories } from '@/instance';
import XSection from './emoji-picker.section.vue';
export default defineComponent({
@ -115,7 +111,6 @@ export default defineComponent({
height: this.asReactionPicker ? this.$store.state.reactionPickerHeight : 2,
big: this.asReactionPicker ? isDeviceTouch : false,
customEmojiCategories: emojiCategories,
emojiTags,
customEmojis: this.$instance.emojis,
q: null,
searchResultCustom: [],

View file

@ -261,8 +261,7 @@ export default defineComponent({
display: inline-block;
min-width: 16px;
max-width: 150px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}

View file

@ -8,7 +8,7 @@
<Fa :icon="faExternalLinkAlt" class="icon"/>
</span>
</a>
<MkA class="main _button _formPanel _formClickable" :class="{ active }" :to="to" v-else>
<MkA class="main _button _formPanel _formClickable" :class="{ active }" :to="to" :behavior="behavior" v-else>
<span class="icon"><slot name="icon"></slot></span>
<span class="text"><slot></slot></span>
<span class="right">
@ -38,6 +38,10 @@ export default defineComponent({
type: Boolean,
required: false
},
behavior: {
type: String,
required: false,
},
},
data() {
return {
@ -83,8 +87,7 @@ export default defineComponent({
> .text {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
padding-right: 12px;
}

View file

@ -98,6 +98,11 @@ export default defineComponent({
},
nav() {
if (this.behavior === 'browser') {
location.href = this.to;
return;
}
if (this.to.startsWith('/my/messaging')) {
if (ColdDeviceStorage.get('chatOpenBehavior') === 'window') return this.window();
if (ColdDeviceStorage.get('chatOpenBehavior') === 'popout') return this.popout();

View file

@ -101,8 +101,7 @@ export default defineComponent({
top: 0;
border-radius: 100%;
z-index: 1;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
object-fit: cover;
width: 100%;
height: 100%;

View file

@ -126,8 +126,7 @@ export default defineComponent({
&.nowrap {
white-space: pre;
word-wrap: normal; // https://codeday.me/jp/qa/20190424/690106.html
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
}

View file

@ -692,8 +692,7 @@ export default defineComponent({
> dd {
text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
white-space: nowrap;
}

View file

@ -44,8 +44,7 @@ export default defineComponent({
height: $height;
border-radius: 4px 0 0 4px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
color: #fff;
> .icon {

View file

@ -62,8 +62,7 @@ export default defineComponent({
width: 100%;
border-radius: 4px;
margin-top: 4px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .download,
> .sensitive {
@ -78,8 +77,7 @@ export default defineComponent({
}
> b {
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
}

View file

@ -143,8 +143,7 @@ export default defineComponent({
> a {
display: block;
cursor: zoom-in;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
width: 100%;
height: 100%;
background-position: center;

View file

@ -105,8 +105,7 @@ export default defineComponent({
grid-gap: 4px;
> * {
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
border-radius: 6px;
}

View file

@ -78,8 +78,7 @@ export default defineComponent({
align-items: center;
font-size: 3.5em;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
background-position: center;
background-size: cover;
width: 100%;

View file

@ -886,8 +886,7 @@ export default defineComponent({
.note {
position: relative;
transition: box-shadow 0.1s ease;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
contain: content;
&:focus-visible {
@ -947,8 +946,7 @@ export default defineComponent({
}
> span {
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
flex-shrink: 1;
text-overflow: ellipsis;
white-space: nowrap;

View file

@ -61,8 +61,7 @@ export default defineComponent({
display: block;
margin: 0 .5em 0 0;
padding: 0;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
font-size: 1em;
font-weight: bold;
text-decoration: none;
@ -91,8 +90,7 @@ export default defineComponent({
> .username {
margin: 0 .5em 0 0;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
}

View file

@ -50,8 +50,7 @@ export default defineComponent({
display: flex;
margin: 0;
padding: 0;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
font-size: 0.95em;
> .avatar {

View file

@ -861,8 +861,7 @@ export default defineComponent({
.tkcbzcuz {
position: relative;
transition: box-shadow 0.1s ease;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
contain: content;
//
@ -949,8 +948,7 @@ export default defineComponent({
}
> span {
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
flex-shrink: 1;
text-overflow: ellipsis;
white-space: nowrap;
@ -1022,8 +1020,7 @@ export default defineComponent({
&.collapsed {
position: relative;
max-height: 9em;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .fade {
display: block;

View file

@ -257,8 +257,7 @@ export default defineComponent({
text-overflow: ellipsis;
white-space: nowrap;
min-width: 0;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
}
> .time {
@ -269,8 +268,7 @@ export default defineComponent({
> .text {
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
> [data-icon] {

View file

@ -112,8 +112,7 @@ export default defineComponent({
padding: 4px 8px;
border: solid 1px var(--divider);
border-radius: 4px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
cursor: pointer;
&:hover {

View file

@ -127,8 +127,7 @@ export default defineComponent({
height: 64px;
margin-right: 4px;
border-radius: 4px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
cursor: move;
&:hover > .remove {

View file

@ -390,8 +390,7 @@ export default defineComponent({
font-size: $ui-font-size;
line-height: 3rem;
text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
white-space: nowrap;
width: 100%;
text-align: left;

View file

@ -67,8 +67,7 @@ export default defineComponent({
height: 100%;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
border-radius: 8px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
}
}
</style>

View file

@ -124,8 +124,7 @@ export default defineComponent({
text-decoration: none;
background: var(--buttonBg);
border-radius: 999px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
&:not(:disabled):hover {
background: var(--buttonHoverBg);
@ -213,8 +212,7 @@ export default defineComponent({
width: 100%;
height: 100%;
border-radius: 6px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
::v-deep(div) {
position: absolute;

View file

@ -116,8 +116,7 @@ export default defineComponent({
.ukygtjoj {
position: relative;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
&.naked {
background: transparent !important;

View file

@ -298,8 +298,7 @@ export default defineComponent({
transform: scale(.75);
white-space: nowrap;
width: 133%;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
> .warning {
@ -355,8 +354,7 @@ export default defineComponent({
display: inline-block;
min-width: 16px;
max-width: 150px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}

View file

@ -155,8 +155,7 @@ export default defineComponent({
font-size: 0.9em;
line-height: 20px;
text-align: center;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
&.danger {

View file

@ -89,8 +89,7 @@ export default defineComponent({
<style lang="scss" scoped>
.ebkgoccj {
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
display: flex;
flex-direction: column;
contain: content;
@ -124,8 +123,7 @@ export default defineComponent({
padding-left: 32px;
font-weight: bold;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
pointer-events: none;

View file

@ -89,8 +89,7 @@ export default defineComponent({
pointer-events: none;
font-size: 16px;
color: var(--inputLabel);
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
}
> input {

View file

@ -402,8 +402,7 @@ export default defineComponent({
}
> .body {
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
display: flex;
flex-direction: column;
contain: content;
@ -438,8 +437,7 @@ export default defineComponent({
position: relative;
line-height: var(--height);
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
cursor: move;

View file

@ -244,8 +244,7 @@ export default defineComponent({
font-size: 14px;
box-shadow: 0 0 0 1px var(--divider);
border-radius: 8px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
&:hover {
text-decoration: none;
@ -327,8 +326,7 @@ export default defineComponent({
&.compact {
> article {
> header h1, p, footer {
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}

View file

@ -110,8 +110,7 @@ export default defineComponent({
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
}
}

View file

@ -111,8 +111,7 @@ export default defineComponent({
position: absolute;
z-index: 11000;
width: 300px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
transform-origin: center top;
> .info {

View file

@ -66,8 +66,7 @@ export default defineComponent({
height: 350px;
background: var(--panel);
border-radius: var(--radius);
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
display: flex;
flex-direction: column;
@ -128,8 +127,7 @@ export default defineComponent({
> .body {
padding: 0 8px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .name {
display: block;

View file

@ -141,8 +141,7 @@ export default defineComponent({
> *:nth-child(2) {
flex: 1 1 auto;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
> span:first-child {

View file

@ -67,6 +67,7 @@ console.info(`Misskey v${version}`);
// boot.jsのやつを解除
window.onerror = null;
window.onunhandledrejection = null;
if (_DEV_) {
console.warn('Development mode!!!');

View file

@ -305,7 +305,7 @@ export async function pickEmoji(src?: HTMLElement, opts) {
type AwaitType<T> =
T extends Promise<infer U> ? U :
T extends (...args: Array<any>) => Promise<infer V> ? V :
T extends (...args: any[]) => Promise<infer V> ? V :
T;
let openingEmojiPicker: AwaitType<ReturnType<typeof popup>> | null = null;
let activeTextarea: HTMLTextAreaElement | HTMLInputElement | null = null;

View file

@ -1,5 +1,5 @@
<template>
<div style="overflow: hidden; overflow: clip;">
<div style="overflow: hidden;">
<FormBase class="znqjceqz">
<div id="debug"></div>
<section class="_formItem about">

View file

@ -104,8 +104,7 @@ export default defineComponent({
display: block;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
margin: 0;
}
@ -125,8 +124,7 @@ export default defineComponent({
width: 55%;
line-height: 42px;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
opacity: 0.7;
font-size: 14px;

View file

@ -178,20 +178,17 @@ export default defineComponent({
> .body {
padding: 0 0 0 8px;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .name {
text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
}
> .info {
opacity: 0.5;
text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
}
}
}
@ -222,20 +219,17 @@ export default defineComponent({
> .body {
padding: 0 0 0 8px;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .name {
text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
}
> .info {
opacity: 0.5;
text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
}
}
}

View file

@ -226,14 +226,12 @@ export default defineComponent({
align-items: center;
margin-bottom: 2px;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .name {
margin: 0;
padding: 0;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
font-size: 1em;
font-weight: bold;
@ -264,8 +262,7 @@ export default defineComponent({
display: block;
margin: 0 0 0 0;
padding: 0;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
overflow-wrap: break-word;
font-size: 1.1em;
color: var(--faceText);

View file

@ -154,8 +154,7 @@ export default defineComponent({
display: block;
margin: 0;
padding: 0;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
overflow-wrap: break-word;
font-size: 1em;
color: rgba(#000, 0.5);
@ -165,8 +164,7 @@ export default defineComponent({
display: block;
margin: 0;
padding: 12px 18px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
overflow-wrap: break-word;
word-break: break-word;
font-size: 1em;
@ -184,8 +182,7 @@ export default defineComponent({
display: block;
max-width: 100%;
border-radius: 16px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-decoration: none;
&:hover {

View file

@ -74,8 +74,7 @@ export default defineComponent({
<style lang="scss" scoped>
.cpjygsrt {
position: relative;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
background: var(--panel);
border: solid 2px var(--X12);
border-radius: 6px;

View file

@ -434,8 +434,7 @@ export default defineComponent({
> div {
background: transparent;
border-radius: 6px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
* {
pointer-events: none;

View file

@ -333,8 +333,7 @@ export default defineComponent({
background: transparent;
border: solid 2px var(--divider);
border-radius: 6px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
cursor: pointer;
* {

View file

@ -230,8 +230,7 @@ export default defineComponent({
$size: 12px;
background: rgba(0, 0, 0, 0.1);
border-radius: ($size / 2);
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> div {
height: $size;

View file

@ -23,13 +23,16 @@
<FormLink to="/settings/registry"><template #icon><Fa :icon="faCogs"/></template>{{ $ts.registry }}</FormLink>
<FormLink to="/bios" behavior="browser"><template #icon><Fa :icon="faDoorOpen"/></template>BIOS</FormLink>
<FormLink to="/cli" behavior="browser"><template #icon><Fa :icon="faDoorOpen"/></template>CLI</FormLink>
<FormButton @click="closeAccount" danger>{{ $ts.closeAccount }}</FormButton>
</FormBase>
</template>
<script lang="ts">
import { defineAsyncComponent, defineComponent } from 'vue';
import { faEllipsisH, faCogs } from '@fortawesome/free-solid-svg-icons';
import { faEllipsisH, faCogs, faDoorOpen } from '@fortawesome/free-solid-svg-icons';
import FormSwitch from '@/components/form/switch.vue';
import FormSelect from '@/components/form/select.vue';
import FormLink from '@/components/form/link.vue';
@ -61,7 +64,7 @@ export default defineComponent({
icon: faEllipsisH
},
debug,
faCogs
faCogs, faDoorOpen,
}
},

View file

@ -144,8 +144,7 @@ export default defineComponent({
flex: 1;
min-width: 0;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
margin-right: 12px;
}

View file

@ -184,8 +184,7 @@ export default defineComponent({
position: absolute;
top: 50%;
left: 50%;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
padding: 0 100px;
transform: translate3d(-50%, -50%, 0);

View file

@ -369,8 +369,7 @@ export default defineComponent({
position: relative;
height: 450px;
border-radius: 16px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
background-size: cover;
background-position: center;
@ -473,8 +472,7 @@ export default defineComponent({
> .name {
width: 30%;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: bold;
@ -482,8 +480,7 @@ export default defineComponent({
> .value {
width: 70%;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin: 0;
@ -545,8 +542,7 @@ export default defineComponent({
.ftskorzw.narrow {
max-width: 100vw;
box-sizing: border-box;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .punished {
font-size: 0.8em;
@ -557,14 +553,12 @@ export default defineComponent({
> .main {
position: relative;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .banner-container {
position: relative;
height: 250px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
background-size: cover;
background-position: center;
@ -709,8 +703,7 @@ export default defineComponent({
> .name {
width: 30%;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: bold;
@ -719,8 +712,7 @@ export default defineComponent({
> .value {
width: 70%;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin: 0;

View file

@ -167,8 +167,7 @@ export default defineComponent({
margin: auto;
width: 500px;
height: calc(100% - 128px);
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
-webkit-mask-image: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 128px, rgba(0,0,0,1) calc(100% - 128px), rgba(0,0,0,0) 100%);
mask-image: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 128px, rgba(0,0,0,1) calc(100% - 128px), rgba(0,0,0,0) 100%);

View file

@ -151,8 +151,7 @@ export default defineComponent({
margin: auto;
width: 500px;
height: calc(100% - 128px);
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
-webkit-mask-image: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 128px, rgba(0,0,0,1) calc(100% - 128px), rgba(0,0,0,0) 100%);
mask-image: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 128px, rgba(0,0,0,1) calc(100% - 128px), rgba(0,0,0,0) 100%);
}

View file

@ -71,8 +71,7 @@ export default defineComponent({
.mk-setup {
border-radius: var(--radius);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> h1 {
margin: 0;

View file

@ -241,8 +241,7 @@ hr {
border-radius: var(--radius);
//border: var(--panelBorder);
box-shadow: var(--panelShadow);
overflow: hidden; // overflow: clip; をSafariが対応したら消す
overflow: clip;
overflow: hidden;
}
._card {
@ -458,14 +457,6 @@ hr {
opacity: 0.7;
}
// TODO: refactor: 全てのvueファイル中の text-overflow: ellipsis; している箇所をこのクラスを使って置き換える
._oneline {
white-space: nowrap;
overflow: hidden; // overflow: clip; をSafariが対応したら消す
overflow: clip;
text-overflow: ellipsis;
}
._monospace {
font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace;
}

View file

@ -132,8 +132,7 @@ export default defineComponent({
display: inline-block;
vertical-align: bottom;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
padding: 0 16px;
position: relative;

View file

@ -89,8 +89,7 @@ export default defineComponent({
font-size: 0.8em;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
flex-shrink: 1;
}
.mk-uploader > ol > li > .top > .name > [data-icon] {
@ -120,8 +119,7 @@ export default defineComponent({
background: transparent;
border: none;
border-radius: 4px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
grid-column: 2/3;
grid-row: 2/3;
z-index: 2;

View file

@ -427,8 +427,7 @@ export default defineComponent({
> .text {
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
font-size: 0.9em;
}
@ -483,8 +482,7 @@ export default defineComponent({
padding: 6px 8px;
border-radius: 4px;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
&:hover {
@ -547,8 +545,7 @@ export default defineComponent({
}
> .title {
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
min-width: 0;
@ -559,8 +556,7 @@ export default defineComponent({
font-size: 0.8em;
font-weight: normal;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
}
}

View file

@ -62,8 +62,7 @@ export default defineComponent({
display: block;
margin: 0 .5em 0 0;
padding: 0;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
font-size: 1em;
font-weight: bold;
text-decoration: none;
@ -92,8 +91,7 @@ export default defineComponent({
> .username {
margin: 0 .5em 0 0;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
}

View file

@ -50,8 +50,7 @@ export default defineComponent({
display: flex;
margin: 0;
padding: 0;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
font-size: 0.95em;
> .avatar {

View file

@ -955,8 +955,7 @@ export default defineComponent({
}
> span {
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
flex-shrink: 1;
text-overflow: ellipsis;
white-space: nowrap;
@ -1029,8 +1028,7 @@ export default defineComponent({
&.collapsed {
position: relative;
max-height: 9em;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .fade {
display: block;

View file

@ -268,8 +268,7 @@ export default defineComponent({
--section-padding: 10px;
height: 100%;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
contain: content;
&.draghover {
@ -359,8 +358,7 @@ export default defineComponent({
> .header {
display: inline-block;
align-items: center;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

View file

@ -125,8 +125,7 @@ export default defineComponent({
display: inline-block;
vertical-align: bottom;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
position: relative;
@ -207,8 +206,7 @@ export default defineComponent({
> .title {
flex: 1;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
position: relative;
text-align: center;

View file

@ -171,8 +171,7 @@ export default defineComponent({
> .meter {
width: 100%;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
background: var(--X11);
border-radius: 8px;

View file

@ -89,8 +89,7 @@ export default defineComponent({
$bodyInfoHieght: 16px;
height: (62px + 1px) + (62px + 1px) + (62px + 1px) + (62px + 1px) + 62px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .instances {
.chart-move {
@ -114,8 +113,7 @@ export default defineComponent({
> .body {
flex: 1;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
font-size: 0.9em;
color: var(--fg);
@ -123,8 +121,7 @@ export default defineComponent({
display: block;
width: 100%;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
line-height: $bodyTitleHieght;
}

View file

@ -80,8 +80,7 @@ export default defineComponent({
color: var(--fg);
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
&:nth-child(even) {
background: rgba(#000, 0.05);

View file

@ -68,8 +68,7 @@ export default defineComponent({
<style lang="scss" scoped>
.wbrkwala {
height: (62px + 1px) + (62px + 1px) + (62px + 1px) + (62px + 1px) + 62px;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
> .tags {
.chart-move {
@ -84,8 +83,7 @@ export default defineComponent({
> .tag {
flex: 1;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
font-size: 0.9em;
color: var(--fg);
@ -93,8 +91,7 @@ export default defineComponent({
display: block;
width: 100%;
white-space: nowrap;
overflow: hidden; // overflow: clip; Safari
overflow: clip;
overflow: hidden;
text-overflow: ellipsis;
line-height: 18px;
}

View file

@ -1,4 +1,4 @@
# AiScript
## Fonction
デフォルトで値渡しです。
Réglé sur « passage par copie » par défaut

View file

@ -1,18 +1,18 @@
# Deck
デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。
Le deck est une des interfaces utilisateurs disponibles.Sa particularité est de former une interface riche en contenus et hautement personnalisable grâce à l'affichage de plusieurs colonnes.
## カラムの追加
デッキの背景を右クリックし、「カラムを追加」して任意のカラムを追加できます。
## Ajouter une colonne
Vous pouvez ajouter une colonne en cliquant avec le clic-droit sur « ajouter une colonne » dans l'arrière-plan du deck.
## カラムの移動
カラムは、ドラッグアンドドロップで他のカラムと位置を入れ替えることが出来るほか、カラムメニュー(カラムのヘッダー右クリック)から位置を移動させることもできます。
## Déplacer une colonne
Vous pouvez déplacer une colonne à la place d'une autre en la faisant glisser. Il est en outre possible de réorganiser les colonnes depuis le menu des colonnes — en faisant un clic-droit dans l'en-tête de colonne.
## カラムの水平分割
カラムは左右だけでなく、上下に並べることもできます。 カラムメニューを開き、「左に重ねる」を選択すると、左のカラムの下に現在のカラムが移動します。 上下分割を解除するには、カラムメニューの「右に出す」を選択します。
## Division horizontale des colonnes
Il est possible d'agencer les colonnes horizontalement. Depuis le menu de colonne, cliquez sur « empiler à gauche » pour la déplacer sous la colonne de gauche. Cliquez sur « déplacer à droite » pour annuler.
## カラムの設定
カラムメニューの「編集」を選択するとカラムの設定を編集できます。カラムの名前を変えたり、幅を変えたりできます。
## Configuration de la colonne
Vous pouvez éditer la configuration de la colonne en cliquant sur « édition » dans le menu de colonne. Vous pourrez y changer le nom ou la largeur de la colonne.
## デッキの設定
デッキに関する設定は、[settings/deck](/settings/deck)で行えます。
## Configuration du deck
Vous trouverez les options de configuration du deck à [settings/deck](/settings/deck)

View file

@ -1,2 +1,2 @@
# Abonnements
ユーザーをフォローすると、タイムラインにそのユーザーの投稿が表示されるようになります。ただし、他のユーザーに対する返信は含まれません。 ユーザーをフォローするには、ユーザーページの「フォロー」ボタンをクリックします。フォローを解除するには、もう一度クリックします。
Lorsque vous suivez un utilisateur, les publication de celui-ci apparaissent dans votre fil. Cela n'inclut toutefois pas ses réponses aux autres utilisateurs. Cliquez une nouvelle fois pour vous désabonner.

View file

@ -1,68 +1,68 @@
# キーボードショートカット
# Raccourcis clavier
## Global
これらのショートカットは基本的にどこでも使えます。
## Général
Ces raccourcis sont utilisables dans n'importe quel contexte.
<table>
<thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
<tr><th>Raccourci</th><th>Effet</th><th>Accès universel</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">P</kbd>, <kbd class="key">N</kbd></td><td>Rédiger une nouvelle publication</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>Afficher la dernière publication</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>Afficher/cacher les notifications</td><td><b>N</b>otifications</td></tr>
<tr><td><kbd class="key">S</kbd></td><td>Rechercher</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>Afficher l'aide</td><td><b>H</b>elp</td></tr>
</tbody>
</table>
## 投稿にフォーカスされた状態
## Actions concernant les publications
<table>
<thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
<tr><th>Raccourci</th><th>Effet</th><th>Accès universel</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>
<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>Déplacer le focus sur la publication du dessus</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">J</kbd>, <kbd class="key">Tab</kbd></td><td>Déplacer le focus sur la publication du dessous</td><td>-</td></tr>
<tr><td><kbd class="key">R</kbd></td><td>Ouvrir la fenêtre de réponse</td><td><b>R</b>eply</td></tr>
<tr><td><kbd class="key">Q</kbd></td><td>Ouvrir la fenêtre de 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 rapide (sans ouvrir de fenêtre)</td><td>-</td></tr>
<tr><td><kbd class="key">E</kbd>, <kbd class="key">A</kbd>, <kbd class="key">+</kbd></td><td>Ouvrir la fenêtre de réactions</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>Utiliser la réaction attribuée au chiffre</td><td>-</td></tr>
<tr><td><kbd class="key">F</kbd>, <kbd class="key">B</kbd></td><td>Ajouter à mes favoris</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>Supprimer la publication</td><td><b>D</b>elete</tr>
<tr><td><kbd class="key">M</kbd>, <kbd class="key">O</kbd></td><td>Ouvrir le menu des publications</td><td><b>M</b>ore, <b>O</b>ther</td></tr>
<tr><td><kbd class="key">S</kbd></td><td>Afficher ou cacher le contenu marqué CW</td><td><b>S</b>how, <b>S</b>ee</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>Quitter le focus</td><td>-</td></tr>
</tbody>
</table>
## Renoteフォーム
## Formulaire de Renote
<table>
<thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
<tr><th>Raccourci</th><th>Effet</th><th>Accès universel</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>
<tr><td><kbd class="key">Enter</kbd></td><td>Renoter</td><td>-</td></tr>
<tr><td><kbd class="key">Q</kbd></td><td>Ouvrir la fenêtre</td><td><b>Q</b>uote</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>Fermer la fenêtre</td><td>-</td></tr>
</tbody>
</table>
## リアクションフォーム
デフォルトで「👍」にフォーカスが当たっている状態です。
## Fenêtre de réactions
La réaction sélectionnée par défaut est « 👍 ».
<table>
<thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
<tr><th>Raccourci</th><th>Effet</th><th>Accès universel</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>
<tr><td><kbd class="key"></kbd>, <kbd class="key">K</kbd></td><td>Déplacer le focus vers la réaction du dessus</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">J</kbd></td><td>Déplacer le focus vers la réaction du dessous</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>Déplacer le focus vers la réaction de gauche</td><td>-</td></tr>
<tr><td><kbd class="key"></kbd>, <kbd class="key">L</kbd>, <kbd class="key">Tab</kbd></td><td>Déplacer le focus vers la réaction de droite</td><td>-</td></tr>
<tr><td><kbd class="key">Enter</kbd>, <kbd class="key">Space</kbd>, <kbd class="key">+</kbd></td><td>Sélectionner la réaction</td><td>-</td></tr>
<tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>Utiliser la réaction correspondant au chiffre</td><td>-</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>Annuler la réaction</td><td>-</td></tr>
</tbody>
</table>

View file

@ -1,2 +1,2 @@
# MFM
MFMは、Misskey Flavored Markdownの略で、Misskeyの様々な場所で使用できる専用のマークアップ言語です。 MFMで使用可能な構文は[MFMチートシート](/mfm-cheat-sheet)で確認できます。
MFM abréviation de Misskey Flavored Markdown est un langage Markdown spécifique utilisable ici et là dans Misskey. Vous pouvez vérifier les structures utilisables dans [l'antisèche MFM](/mfm-cheat-sheet).

View file

@ -1,13 +1,13 @@
# Mettre en sourdine
# Ignorer
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
Le contenu afférent à un utilisateur ne vous sera plus présenté dès lors que vous l'ignorez :
* タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
* そのユーザーからの通知
* メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
* les publications de cet utilisateur dans le fil ou les résultats de recherche, de même que ses réponses et Renotes ;
* les notifications touchant à cet utilisateur ;
* l'historique des messages avec cet utilisateur.
ユーザーをミュートするには、対象のユーザーのユーザーページに表示されている「ミュート」ボタンを押します。
Pour ignorer un utilisateur, utilisez le bouton « ignorer » de sa page de profil.
ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。
L'utilisateur que vous ignorez ne sera pas prévenu. De même, vous ne serez pas prévenu lorsque vous serez ignoré par un autre utilisateur.
設定>ミュート から、自分がミュートしているユーザー一覧を確認することができます。
Vous pouvez vérifier la liste des utilisateurs ignorés depuis l'onglet « ignorés » de vos paramètres.

View file

@ -1,8 +1,8 @@
# Réactions
他の人のノートに、絵文字を付けて簡単にあなたの反応を伝えられる機能です。 リアクションするには、ノートの + アイコンをクリックしてピッカーを表示し、絵文字を選択します。 リアクションには[カスタム絵文字](./custom-emoji)も使用できます。
Les réactions vous permettent d'interagir facilement avec les notes des autres utilisateurs en y attribuant des émoticônes. Pour réagir, cliquez sur le « + » de la note afin d'afficher le panneau de sélection puis choisissez une émoticône. Il est également possible d'utiliser des [émoticônes personnalisées](./custom-emoji).
## リアクションピッカーのカスタマイズ
ピッカーに表示される絵文字を自分好みにカスタマイズすることができます。 設定の「リアクション」で設定します。
## Personnalisation du panneau de réactions
Il est possible de choisir les émoticônes affichés dans le panneau de réactions dans l'onglet « réactions » des paramètres.
## リモート投稿へのリアクションについて
リアクションはMisskeyオリジナルの機能であるため、リモートインスタンスがMisskeyでない限りは、ほとんどの場合「Like」としてアクティビティが送信されます。一般的にはLikeは「お気に入り」として実装されているようです。 また、相手がMisskeyであったとしても、カスタム絵文字リアクションは伝わらず、自動的に「👍」等にフォールバックされます。

View file

@ -1,11 +1,11 @@
# Thème
テーマを設定して、Misskeyクライアントの見た目を変更できます。
Vous pouvez modifier l'apparence de votre client Misskey à l'aide de thèmes.
## テーマの設定
設定 > テーマ
## Paramètres de thème
Paramètres > Thèmes
## テーマを作成する
## Créer un thème
テーマコードはJSON5で記述されたテーマオブジェクトです。 テーマは以下のようなオブジェクトです。
``` js
{
@ -33,13 +33,13 @@
```
* `id` ... テーマの一意なID。UUIDをおすすめします。
* `name` ... テーマ名
* `author` ... テーマの作者
* `desc` ... テーマの説明(オプション)
* `base` ... 明るいテーマか、暗いテーマか
* `light`にすると明るいテーマになり、`dark`にすると暗いテーマになります。
* テーマはここで設定されたベーステーマを継承します。
* `id` ... L'identifiant unique du thème. L'utilisation d'un UUID est recommandée ;
* `name` ... Nom du thème ;
* `author` ... Auteur du thème ;
* `desc` ... Description du thème (facultatif) ;
* `base` ... Thème clair ou sombre :
* Sélectionnez `light` pour définir le thème comme thème clair et `dark` pour le définir comme sombre,
* Le thème héritera des valeurs par défaut du thème spécifié ici ;
* `props` ... テーマのスタイル定義。これから説明します。
### テーマのスタイル定義

View file

@ -1,15 +1,15 @@
# タイムラインの比較
# Comparaison des fils
https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing
## Principal
自分のフォローしているユーザーの投稿
Les publications des utilisateurs que vous suivez
## Local
全てのローカルユーザーの「ホーム」指定されていない投稿
Les publications des utilisateurs de votre instance. Les notes publiées avec le statut « principal » n'y sont pas affichées.
## Social
自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿
Regroupe le fil principal et le fil local
## Global
全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿
Toutes les publications reçues par l'instance, qu'elles soient locales ou non. Les notes publiées avec le statut « principal » n'y sont pas affichées.

40
src/server/web/bios.css Normal file
View file

@ -0,0 +1,40 @@
* {
font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace;
}
html {
background: #ffb4e1;
}
main {
background: #dedede;
}
main > .tabs {
padding: 16px;
border-bottom: solid 4px #c3c3c3;
}
#lsEditor > .adder {
margin: 16px;
padding: 16px;
border: solid 2px #c3c3c3;
}
#lsEditor > .adder > textarea {
display: block;
width: 100%;
min-height: 5em;
box-sizing: border-box;
}
#lsEditor > .record {
padding: 16px;
border-bottom: solid 1px #c3c3c3;
}
#lsEditor > .record > header {
font-weight: bold;
}
#lsEditor > .record > textarea {
display: block;
width: 100%;
min-height: 5em;
box-sizing: border-box;
}

87
src/server/web/bios.js Normal file
View file

@ -0,0 +1,87 @@
'use strict';
window.onload = async () => {
const account = JSON.parse(localStorage.getItem('account'));
const i = account.token;
const api = (endpoint, data = {}) => {
const promise = new Promise((resolve, reject) => {
// Append a credential
if (i) data.i = i;
// Send request
fetch(endpoint.indexOf('://') > -1 ? endpoint : `/api/${endpoint}`, {
method: 'POST',
body: JSON.stringify(data),
credentials: 'omit',
cache: 'no-cache'
}).then(async (res) => {
const body = res.status === 204 ? null : await res.json();
if (res.status === 200) {
resolve(body);
} else if (res.status === 204) {
resolve();
} else {
reject(body.error);
}
}).catch(reject);
});
return promise;
};
const content = document.getElementById('content');
document.getElementById('ls').addEventListener('click', () => {
content.innerHTML = '';
const lsEditor = document.createElement('div');
lsEditor.id = 'lsEditor';
const adder = document.createElement('div');
adder.classList.add('adder');
const addKeyInput = document.createElement('input');
const addValueTextarea = document.createElement('textarea');
const addButton = document.createElement('button');
addButton.textContent = 'add';
addButton.addEventListener('click', () => {
localStorage.setItem(addKeyInput.value, addValueTextarea.value);
location.reload();
});
adder.appendChild(addKeyInput);
adder.appendChild(addValueTextarea);
adder.appendChild(addButton);
lsEditor.appendChild(adder);
for (let i = 0; i < localStorage.length; i++) {
const k = localStorage.key(i);
const record = document.createElement('div');
record.classList.add('record');
const header = document.createElement('header');
header.textContent = k;
const textarea = document.createElement('textarea');
textarea.textContent = localStorage.getItem(k);
const saveButton = document.createElement('button');
saveButton.textContent = 'save';
saveButton.addEventListener('click', () => {
localStorage.setItem(k, textarea.value);
location.reload();
});
const removeButton = document.createElement('button');
removeButton.textContent = 'remove';
removeButton.addEventListener('click', () => {
localStorage.removeItem(k);
location.reload();
});
record.appendChild(header);
record.appendChild(textarea);
record.appendChild(saveButton);
record.appendChild(removeButton);
lsEditor.appendChild(record);
}
content.appendChild(lsEditor);
});
};

View file

@ -11,12 +11,15 @@
'use strict';
window.onerror = (e) => {
document.documentElement.innerHTML = '問題が発生しました。';
};
// ブロックの中に入れないと、定義した変数がブラウザのグローバルスコープに登録されてしまい邪魔なので
(async () => {
window.onerror = (e) => {
renderError('SOMETHING_HAPPENED', e.toString());
};
window.onunhandledrejection = (e) => {
renderError('SOMETHING_HAPPENED_IN_PROMISE', e.toString());
};
const v = localStorage.getItem('v') || VERSION;
//#region Detect language & fetch translations
@ -38,9 +41,17 @@ window.onerror = (e) => {
}
const res = await fetch(`/assets/locales/${lang}.${v}.json`);
if (res.status === 200) {
localStorage.setItem('lang', lang);
localStorage.setItem('locale', await res.text());
localStorage.setItem('localeVersion', v);
} else if (localeOutdated) {
// nop
} else {
renderError('LOCALE_FETCH_FAILED');
checkUpdate();
return;
}
}
//#endregion
@ -56,24 +67,8 @@ window.onerror = (e) => {
script.setAttribute('async', 'true');
script.setAttribute('defer', 'true');
script.addEventListener('error', async () => {
document.documentElement.innerHTML = '読み込みに失敗しました。';
// TODO: サーバーが落ちている場合などのエラーハンドリング
const res = await fetch('/api/meta', {
method: 'POST',
cache: 'no-cache'
});
const meta = await res.json();
if (meta.version != v) {
localStorage.setItem('v', meta.version);
alert(
'Misskeyの新しいバージョンがあります。ページを再度読み込みします。' +
'\n\n' +
'New version of Misskey available. The page will be reloaded.');
refresh();
}
renderError('APP_FETCH_FAILED');
checkUpdate();
});
head.appendChild(script);
//#endregion
@ -112,6 +107,44 @@ window.onerror = (e) => {
document.documentElement.style.backgroundImage = `url(${wallpaper})`;
}
// eslint-disable-next-line no-inner-declarations
function renderError(code, details) {
document.documentElement.innerHTML = `
<h1>エラーが発生しました</h1>
<p>問題が解決しない場合は管理者までお問い合わせください以下のオプションを試すこともできます:</p>
<ul>
<li><a href="/cli">簡易クライアント</a></li>
<li><a href="/bios">BIOS</a></li>
<li><a href="/flush">キャッシュをクリア</a></li>
</ul>
<hr>
<code>ERROR CODE: ${code}</code>
<details>
${details}
</details>
`;
}
// eslint-disable-next-line no-inner-declarations
async function checkUpdate() {
// TODO: サーバーが落ちている場合などのエラーハンドリング
const res = await fetch('/api/meta', {
method: 'POST',
cache: 'no-cache'
});
const meta = await res.json();
if (meta.version != v) {
localStorage.setItem('v', meta.version);
alert(
'Misskeyの新しいバージョンがあります。ページを再度読み込みします。' +
'\n\n' +
'New version of Misskey available. The page will be reloaded.');
refresh();
}
}
// eslint-disable-next-line no-inner-declarations
function refresh() {
// Random

19
src/server/web/cli.css Normal file
View file

@ -0,0 +1,19 @@
* {
font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace;
}
html {
background: #ffb4e1;
}
main {
background: #dedede;
}
#tl > div {
padding: 16px;
border-bottom: solid 1px #c3c3c3;
}
#tl > div > header {
font-weight: bold;
}

55
src/server/web/cli.js Normal file
View file

@ -0,0 +1,55 @@
'use strict';
window.onload = async () => {
const account = JSON.parse(localStorage.getItem('account'));
const i = account.token;
const api = (endpoint, data = {}) => {
const promise = new Promise((resolve, reject) => {
// Append a credential
if (i) data.i = i;
// Send request
fetch(endpoint.indexOf('://') > -1 ? endpoint : `/api/${endpoint}`, {
method: 'POST',
body: JSON.stringify(data),
credentials: 'omit',
cache: 'no-cache'
}).then(async (res) => {
const body = res.status === 204 ? null : await res.json();
if (res.status === 200) {
resolve(body);
} else if (res.status === 204) {
resolve();
} else {
reject(body.error);
}
}).catch(reject);
});
return promise;
};
document.getElementById('submit').addEventListener('click', () => {
api('notes/create', {
text: document.getElementById('text').value
}).then(() => {
location.reload();
});
});
api('notes/timeline').then(notes => {
const tl = document.getElementById('tl');
for (const note of notes) {
const el = document.createElement('div');
const name = document.createElement('header');
name.textContent = `${note.user.name} @${note.user.username}`;
const text = document.createElement('div');
text.textContent = `${note.text}`;
el.appendChild(name);
el.appendChild(text);
tl.appendChild(el);
}
});
};

View file

@ -376,6 +376,18 @@ router.get('/info', async ctx => {
});
});
router.get('/bios', async ctx => {
await ctx.render('bios', {
version: config.version,
});
});
router.get('/cli', async ctx => {
await ctx.render('cli', {
version: config.version,
});
});
const override = (source: string, target: string, depth: number = 0) =>
[, ...target.split('/').filter(x => x), ...source.split('/').filter(x => x).splice(depth)].join('/');

View file

@ -0,0 +1,20 @@
doctype html
html
head
meta(charset='utf-8')
meta(name='application-name' content='Misskey')
title Misskey BIOS
style
include ../bios.css
script
include ../bios.js
body
header
h1 Misskey BIOS #{version}
main
div.tabs
button#ls edit local storage
div#content

View file

@ -0,0 +1,21 @@
doctype html
html
head
meta(charset='utf-8')
meta(name='application-name' content='Misskey')
title Misskey Cli
style
include ../cli.css
script
include ../cli.js
body
header
h1 Misskey Cli #{version}
main
div#form
textarea#text
button#submit submit
div#tl

View file

@ -214,6 +214,11 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
"@cto.af/textdecoder@^0.0.0":
version "0.0.0"
resolved "https://registry.yarnpkg.com/@cto.af/textdecoder/-/textdecoder-0.0.0.tgz#e1e8d84c936c30a0f4619971f19ca41941af9fdc"
integrity sha512-sJpx3F5xcVV/9jNYJQtvimo4Vfld/nD3ph+ZWtQzZ03Zo8rJC7QKQTRcIGS13Rcz80DwFNthCWMrd58vpY4ZAQ==
"@discoveryjs/json-ext@^0.5.0":
version "0.5.2"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752"
@ -2390,12 +2395,13 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
cbor@7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/cbor/-/cbor-7.0.1.tgz#b939a0ae1ce9bb76338e1d193ab2ccd9a85d55d0"
integrity sha512-+SVEDS4B2x9aat+if8rtUbm8WdxArH2/tVKiSD8eCxy7hnVNlESd4EQQM16EOFrUCvSHECscsvq61N1FPejZtw==
cbor@7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cbor/-/cbor-7.0.3.tgz#216d292f2aedd1bb61414a8f949b63e4de11b33b"
integrity sha512-Io+lJytjYBJKgJqZQUz2bFaMPj+HtlsnT9kHSUiIJFqzWa05lm5/ycQ+NiZWpks3DR2Fz7j7axiTGeT57w/syg==
dependencies:
nofilter "^2.0.0"
"@cto.af/textdecoder" "^0.0.0"
nofilter "^2.0.3"
center-align@^0.1.1:
version "0.1.3"
@ -7000,10 +7006,12 @@ nodemailer@6.5.0:
resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.5.0.tgz#d12c28d8d48778918e25f1999d97910231b175d9"
integrity sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw==
nofilter@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-2.0.0.tgz#57a2d7c6fcd34dd396f490d6942c4f58640b5823"
integrity sha512-i3ck2PUWBa+trsGGBvwS3msnTowbFei5G++BgpOpT7y7VTrprXphMQP5svTdsMLdttKDZFo+5RqVWRqhmf+BwQ==
nofilter@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-2.0.3.tgz#f5460f3cb33147005883e3f5d4476239501fa187"
integrity sha512-FbuXC+lK+GU2+63D1kC1ETiZo+Z7SIi7B+mxKTCH1byrh6WFvfBCN/wpherFz0a0bjGd7EKTst/cz0yLeNngug==
dependencies:
"@cto.af/textdecoder" "^0.0.0"
noop-logger@^0.1.1:
version "0.1.1"
@ -10982,10 +10990,10 @@ vue-prism-editor@2.0.0-alpha.2:
resolved "https://registry.yarnpkg.com/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz#aa53a88efaaed628027cbb282c2b1d37fc7c5c69"
integrity sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==
vue-router@4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.3.tgz#8b26050c88b2dec7e27a88835f71046b365823ec"
integrity sha512-AD1OjtVPyQHTSpoRsEGfPpxRQwhAhxcacOYO3zJ3KNkYP/r09mileSp6kdMQKhZWP2cFsPR3E2M3PZguSN5/ww==
vue-router@4.0.4:
version "4.0.4"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.4.tgz#ad9b4b7bbdad622407b4ff189b1646f48c1e9053"
integrity sha512-uN6PDEaYdU9aRO7mU+Dkr1uaY49hV3fucEDG/Vre/Qj8ct3RoJS16vcPrvKVzn69zDDjBV5b9Xw7fZA9r6b/Iw==
vue-style-loader@4.1.2:
version "4.1.2"