diff --git a/gulpfile.ts b/gulpfile.ts index bdc20089cdab5efb8eeb1ff473a60df9bac22094..b394e4f44cfce47c0736aa398d4ce247d2627d8e 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -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/')); }); diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index c2b2521523d36cc4c79ed9858af28154aa783329..a3cd8a4fa3b9ce7d82a49b34b01045c873305311 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -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. L’opé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: "S’abonner" followRequest: "Demande d’abonnement" followRequests: "Demandes d’abonnement" unfollow: "Se désabonner" -followRequestPending: "En attente d’approbation" -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 l’instance distante. La désactiver diminuera certes l’utilisation de l’espace 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 d’abonnement venant d’utilisateur·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 d’attente" cpuAndMemory: "Processeur et mémoire" network: "Réseau" @@ -178,9 +180,9 @@ instanceInfo: "Informations sur l’instance" statistics: "Statistiques" clearQueue: "Vider la file d’attente" clearQueueConfirmTitle: "Êtes-vous sûr·e de vouloir vider la file d’attente ?" -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 d’autres notes." intro: "L’installation 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 n’y 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 l’instance" instanceUsers: "Utilisateur·rice·s de cette l’instance" changePassword: "Modifier votre mot de passe" @@ -217,15 +219,15 @@ attachFile: "Joindre un fichier" more: "Plus !" featured: "Tendances" usernameOrUserId: "Nom d’utilisateur·rice ou ID utilisateur" -noSuchUser: "Utilisateur·rice non trouvé" +noSuchUser: "Utilisateur·rice non trouvé·e" lookup: "Recherche" announcements: "Annonces" imageUrl: "URL de l’image" 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 l’URL" 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 l’image 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 l’utilisateur·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 d’authentification. Veuillez vérifier que votre nom d’utilisateur et mot de passe sont corrects." tapSecurityKey: "Appuyez sur votre clé de sécurité" or: "OU" +language: "Langue" uiLanguage: "Langue d’affichage de l’interface" 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 l’instance n’existe 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 d’un, 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 d’erreur" sendErrorReportsDescription: "Lorsqu'il est activé, des informations détaillées sur les erreurs sont partagées avec Misskey lorsqu'un problème survient, ce qui contribue à améliorer la qualité de Misskey." 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: "N’installez 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 l’adversaire" + myTurn: "C’est 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 d’avertissement" 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 d’attente" + serverMetric: "Statistiques du serveur" + aiscript: "Console AiScript" _cw: hide: "Masquer" show: "Afficher plus …" @@ -917,12 +1051,17 @@ _profile: username: "Nom d’utilisateur·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 n’est pas valide" invalidNameText: "Assurez-vous qu’il n’est pas vide" @@ -1035,6 +1175,7 @@ _pages: unlike: "Je n’aime 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" diff --git a/package.json b/package.json index 21a42f98d61e1f0dbb953de313fdfffea68e2868..98d856ccc328892da9372a38ed8fc65977654146 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/client/components/autocomplete.vue b/src/client/components/autocomplete.vue index 1fe74adc66415a1cf0fc61e7d7604aa299d18b45..ae742610f7f004c914ef6e63087ded241a955d7b 100644 --- a/src/client/components/autocomplete.vue +++ b/src/client/components/autocomplete.vue @@ -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; } diff --git a/src/client/components/channel-preview.vue b/src/client/components/channel-preview.vue index 3e24774f521658b5524c3c50d6395a0ac890d986..e222ad7ae7e3ae63d337cd9f49c20e5ede459c96 100644 --- a/src/client/components/channel-preview.vue +++ b/src/client/components/channel-preview.vue @@ -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 { diff --git a/src/client/components/drive.file.vue b/src/client/components/drive.file.vue index 80283f997b0174dd684e1e302c48036c3f0cc20c..d2b8b95f738e601b977c8da34487c6054f5b30d1 100644 --- a/src/client/components/drive.file.vue +++ b/src/client/components/drive.file.vue @@ -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; diff --git a/src/client/components/emoji-picker.vue b/src/client/components/emoji-picker.vue index 7c82211993fb82ed4972a2d02734f4b87c820bbc..f7eaeb2bfe7df621c958ae211429c147b5f36dec 100644 --- a/src/client/components/emoji-picker.vue +++ b/src/client/components/emoji-picker.vue @@ -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: [], diff --git a/src/client/components/form/input.vue b/src/client/components/form/input.vue index f16d8be0260b31fca66e896a1ae37b4ab2e13922..f0aa6b0534c45d13323fee78501f41f48bc0e825 100644 --- a/src/client/components/form/input.vue +++ b/src/client/components/form/input.vue @@ -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; } diff --git a/src/client/components/form/link.vue b/src/client/components/form/link.vue index 6f0ae0e5f7e6d2b834ad75735a0247b07688965a..2efc6b58c9cf81c9861c66b494e1f4cf305f2436 100644 --- a/src/client/components/form/link.vue +++ b/src/client/components/form/link.vue @@ -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; } diff --git a/src/client/components/global/a.vue b/src/client/components/global/a.vue index cf894deaba042645ebaf94d562370471bebaa401..d293cb571f8706b3e53dd41205a889626d57230d 100644 --- a/src/client/components/global/a.vue +++ b/src/client/components/global/a.vue @@ -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(); diff --git a/src/client/components/global/avatar.vue b/src/client/components/global/avatar.vue index 8930bb4a0c0fc55de15af896095d9d9cf911e03b..d2f25fa41e64b2f2cac870e2cee3e5fa9c19b3ac 100644 --- a/src/client/components/global/avatar.vue +++ b/src/client/components/global/avatar.vue @@ -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%; diff --git a/src/client/components/global/misskey-flavored-markdown.vue b/src/client/components/global/misskey-flavored-markdown.vue index 0b34ccbfb4a0079b717ab718ad6ded7b2e16c0c3..a3f443d5d865c9d6ddaf76ed5596b0449b29ecfc 100644 --- a/src/client/components/global/misskey-flavored-markdown.vue +++ b/src/client/components/global/misskey-flavored-markdown.vue @@ -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; } diff --git a/src/client/components/instance-stats.vue b/src/client/components/instance-stats.vue index 80070996fc8308fb958e1b5791d09b609f0a4341..e9b496180a89def187010a981e2adf49be6bf1a4 100644 --- a/src/client/components/instance-stats.vue +++ b/src/client/components/instance-stats.vue @@ -692,8 +692,7 @@ export default defineComponent({ > dd { text-overflow: ellipsis; - overflow: hidden; // overflow: clip; ã‚’SafariãŒå¯¾å¿œã—ãŸã‚‰æ¶ˆã™ - overflow: clip; + overflow: hidden; white-space: nowrap; } diff --git a/src/client/components/instance-ticker.vue b/src/client/components/instance-ticker.vue index fa46f8edc48e4fba770e501386b251ea0a507004..1ce5a1c2c19e2e650c58572223d08739c44c4d06 100644 --- a/src/client/components/instance-ticker.vue +++ b/src/client/components/instance-ticker.vue @@ -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 { diff --git a/src/client/components/media-banner.vue b/src/client/components/media-banner.vue index 4fc6701d3646adab30cf552721353ac08fd9a3a3..a2e1776d09815ea089ae8188db72476ea5fca5bb 100644 --- a/src/client/components/media-banner.vue +++ b/src/client/components/media-banner.vue @@ -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; } diff --git a/src/client/components/media-image.vue b/src/client/components/media-image.vue index 5f55d883889e93ced6ebb4aab3660673656dde51..9f3898ec56815e3cd088bef6c7da4d7ae4c08f57 100644 --- a/src/client/components/media-image.vue +++ b/src/client/components/media-image.vue @@ -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; diff --git a/src/client/components/media-list.vue b/src/client/components/media-list.vue index 61482266ab5ab7f348c0cc49af0e1aeba50afac9..36fbb4bd06078b1c3cdb8119f537a95ad3464776 100644 --- a/src/client/components/media-list.vue +++ b/src/client/components/media-list.vue @@ -105,8 +105,7 @@ export default defineComponent({ grid-gap: 4px; > * { - overflow: hidden; // overflow: clip; ã‚’SafariãŒå¯¾å¿œã—ãŸã‚‰æ¶ˆã™ - overflow: clip; + overflow: hidden; border-radius: 6px; } diff --git a/src/client/components/media-video.vue b/src/client/components/media-video.vue index dbde40f666d42a097a10c160947464ae7c568abb..37889472060de4ea27944438eca06c19931cac5d 100644 --- a/src/client/components/media-video.vue +++ b/src/client/components/media-video.vue @@ -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%; diff --git a/src/client/components/note-detailed.vue b/src/client/components/note-detailed.vue index 7df87c6b01ca77b0ccf40ebb5e3e7d5eac8a065f..b5bc054e5e526f7242a1edad305d3cae798d035e 100644 --- a/src/client/components/note-detailed.vue +++ b/src/client/components/note-detailed.vue @@ -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; diff --git a/src/client/components/note-header.vue b/src/client/components/note-header.vue index aed4225067cc88e48ea99899f87604b2792aca29..1f7a07bac3bc78b94c1cebeba674e8e8ba86fec2 100644 --- a/src/client/components/note-header.vue +++ b/src/client/components/note-header.vue @@ -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; } diff --git a/src/client/components/note-preview.vue b/src/client/components/note-preview.vue index 4715c299b567471ffcdd0010c3784c427f0d4fde..4ea97d17ee05e59573b22d4ab3437697893d7609 100644 --- a/src/client/components/note-preview.vue +++ b/src/client/components/note-preview.vue @@ -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 { diff --git a/src/client/components/note.vue b/src/client/components/note.vue index dab764376207e7f7947d5780308eba87a8fff659..bc2f87fe85889b33ef0ae2f60ee47a34f67a5268 100644 --- a/src/client/components/note.vue +++ b/src/client/components/note.vue @@ -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; diff --git a/src/client/components/notification.vue b/src/client/components/notification.vue index a0cfe4f213d412a75ba3db93d176835b8a4777ba..2fe85008914ffb95f601705b078af903bf59f12f 100644 --- a/src/client/components/notification.vue +++ b/src/client/components/notification.vue @@ -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] { diff --git a/src/client/components/poll.vue b/src/client/components/poll.vue index 01bbefe36db3bf09f8e2b27c1ea4ea1e678b89b5..7f13e135aa758816433577710168a4cc6e7186db 100644 --- a/src/client/components/poll.vue +++ b/src/client/components/poll.vue @@ -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 { diff --git a/src/client/components/post-form-attaches.vue b/src/client/components/post-form-attaches.vue index 3b5cb75c19d22b2678632948e337cbf967697cff..230c944de1699c31cd4bd4ce387784215ee47583 100644 --- a/src/client/components/post-form-attaches.vue +++ b/src/client/components/post-form-attaches.vue @@ -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 { diff --git a/src/client/components/sidebar.vue b/src/client/components/sidebar.vue index 64600432448c46248604717ca491e01d0e6d8ba7..f7c50a2ba57e434a7aa0f819b6786b4afbd36a65 100644 --- a/src/client/components/sidebar.vue +++ b/src/client/components/sidebar.vue @@ -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; diff --git a/src/client/components/toast.vue b/src/client/components/toast.vue index 49c14789b7d6a4a96436124a85e7bd9536376413..fb0de680927abb6ecaa19a04c6636c7c5938bc09 100644 --- a/src/client/components/toast.vue +++ b/src/client/components/toast.vue @@ -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> diff --git a/src/client/components/ui/button.vue b/src/client/components/ui/button.vue index e98c5efcc0ecc8cca5653adcdc96f33dcf3a26fb..3901e8ae44f0fcb3ae5399f18f8c3b7cd6a7dd45 100644 --- a/src/client/components/ui/button.vue +++ b/src/client/components/ui/button.vue @@ -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; diff --git a/src/client/components/ui/container.vue b/src/client/components/ui/container.vue index b9360e92fa5f56e69c8be769d5d9ee7b961f015b..c3353cca898e7171a1aabe9a66320eae52ed0c90 100644 --- a/src/client/components/ui/container.vue +++ b/src/client/components/ui/container.vue @@ -116,8 +116,7 @@ export default defineComponent({ .ukygtjoj { position: relative; - overflow: hidden; // overflow: clip; ã‚’SafariãŒå¯¾å¿œã—ãŸã‚‰æ¶ˆã™ - overflow: clip; + overflow: hidden; &.naked { background: transparent !important; diff --git a/src/client/components/ui/input.vue b/src/client/components/ui/input.vue index cea1ec1b7fffc6d74acdcf4cf883c8b5376c585f..1c5222f8f2aba3c925bfc038e655d61539cb4a20 100644 --- a/src/client/components/ui/input.vue +++ b/src/client/components/ui/input.vue @@ -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; } diff --git a/src/client/components/ui/menu.vue b/src/client/components/ui/menu.vue index c9accf7c31c73465e80ec712c161d8d50b0c7134..c2033402e396be0f81f69c7b4e21894ae3148e32 100644 --- a/src/client/components/ui/menu.vue +++ b/src/client/components/ui/menu.vue @@ -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 { diff --git a/src/client/components/ui/modal-window.vue b/src/client/components/ui/modal-window.vue index 3965b537e5c5264f27fc1f431f738d3c0d2b6c4f..2cdf96137982dd5dcabbb358f9c56c66d86cdcec 100644 --- a/src/client/components/ui/modal-window.vue +++ b/src/client/components/ui/modal-window.vue @@ -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; diff --git a/src/client/components/ui/range.vue b/src/client/components/ui/range.vue index cbdf07d6b60be0b2f68d79b476eeb97705482616..4cfe66a8fceb2138d995c169ad961699b6e23db5 100644 --- a/src/client/components/ui/range.vue +++ b/src/client/components/ui/range.vue @@ -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 { diff --git a/src/client/components/ui/window.vue b/src/client/components/ui/window.vue index 4d3b048c11a0e0ad73d0d2bead7b756847335ca7..501a3bf8ee22edef22f3095b505027088ebfceca 100644 --- a/src/client/components/ui/window.vue +++ b/src/client/components/ui/window.vue @@ -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; diff --git a/src/client/components/url-preview.vue b/src/client/components/url-preview.vue index a7068d16190c6c8d33790e2a6fd1272b0a8e5ebf..7a590687107d66ab67fa37a2e7ec5952461035f1 100644 --- a/src/client/components/url-preview.vue +++ b/src/client/components/url-preview.vue @@ -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; } diff --git a/src/client/components/user-info.vue b/src/client/components/user-info.vue index b744f21929f5cdbe19f77698d62a086a23d3e53e..711e36741138a08784fccb60e8568014c639182c 100644 --- a/src/client/components/user-info.vue +++ b/src/client/components/user-info.vue @@ -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; } } diff --git a/src/client/components/user-preview.vue b/src/client/components/user-preview.vue index 86e53228ce7a484a64311e2d1984f0c18c4fc2b4..c4588e478a7019116da6ad3ffd168b4e35e7584c 100644 --- a/src/client/components/user-preview.vue +++ b/src/client/components/user-preview.vue @@ -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 { diff --git a/src/client/components/users-dialog.vue b/src/client/components/users-dialog.vue index af47391c5d64dfaf121f1cb3b0470b9b33266e74..014748adc6d8fce22affc2bf530c60b8e47789f7 100644 --- a/src/client/components/users-dialog.vue +++ b/src/client/components/users-dialog.vue @@ -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; diff --git a/src/client/components/visibility-picker.vue b/src/client/components/visibility-picker.vue index 66dd9c2aed72db49cdb07ec36c1120e1d4584177..e518f48d0d9153b9b63a36a2d31f11c9aed2e242 100644 --- a/src/client/components/visibility-picker.vue +++ b/src/client/components/visibility-picker.vue @@ -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 { diff --git a/src/client/init.ts b/src/client/init.ts index 6a539a0e1d279a00f39840211b34eb76605999ec..b3c53db7bb17f9419dbf641f5362f1e8db6d2027 100644 --- a/src/client/init.ts +++ b/src/client/init.ts @@ -67,6 +67,7 @@ console.info(`Misskey v${version}`); // boot.jsã®ã‚„ã¤ã‚’解除 window.onerror = null; +window.onunhandledrejection = null; if (_DEV_) { console.warn('Development mode!!!'); diff --git a/src/client/os.ts b/src/client/os.ts index e97c2d7ba0d5b3caf322cf85f92f56c70d57132d..2b72391bf5ade4c61c5d2ecb392c9ca61d7f2767 100644 --- a/src/client/os.ts +++ b/src/client/os.ts @@ -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; diff --git a/src/client/pages/about-misskey.vue b/src/client/pages/about-misskey.vue index fa47a80492b42bee331d64ff8359bbc6c4b95e9d..7022a924b0c0fb2f914647a729fd1ca45c7df4fb 100644 --- a/src/client/pages/about-misskey.vue +++ b/src/client/pages/about-misskey.vue @@ -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"> diff --git a/src/client/pages/follow-requests.vue b/src/client/pages/follow-requests.vue index 18f39642e46b3507338b0196b193304c5813eeff..04d739088f3f853f857597069f7c5f838cb9bf5f 100644 --- a/src/client/pages/follow-requests.vue +++ b/src/client/pages/follow-requests.vue @@ -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; diff --git a/src/client/pages/instance/emojis.vue b/src/client/pages/instance/emojis.vue index 71b6c11b2da3a097d2b5771baca9849d58e7ddc8..6a51813bb268f4e31e6dcaa496a200bb532172dc 100644 --- a/src/client/pages/instance/emojis.vue +++ b/src/client/pages/instance/emojis.vue @@ -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; } } } diff --git a/src/client/pages/messaging/index.vue b/src/client/pages/messaging/index.vue index 8e7fe5134a3a466b5578e61aef60ef4e2ea47c23..aefc31f3bc70a68e8952b7cc5789fa2ad268431b 100644 --- a/src/client/pages/messaging/index.vue +++ b/src/client/pages/messaging/index.vue @@ -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); diff --git a/src/client/pages/messaging/messaging-room.message.vue b/src/client/pages/messaging/messaging-room.message.vue index 3d994c26667c57fcc1dade943d3b84f0c48776e1..d379c0c3c0716e914aa5577e7e9db14651a4554e 100644 --- a/src/client/pages/messaging/messaging-room.message.vue +++ b/src/client/pages/messaging/messaging-room.message.vue @@ -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 { diff --git a/src/client/pages/page-editor/page-editor.container.vue b/src/client/pages/page-editor/page-editor.container.vue index 5e89b8c2bfd6dafa0c1cbafa7639c0140e17ce5e..46e2dca1570fd5ac31f22939284ece8af319cd02 100644 --- a/src/client/pages/page-editor/page-editor.container.vue +++ b/src/client/pages/page-editor/page-editor.container.vue @@ -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; diff --git a/src/client/pages/reversi/game.board.vue b/src/client/pages/reversi/game.board.vue index a3c7900d20449530f096d4b9b75e094f4356ed67..8ce232af07f8e68a23ef97be451b04494ddbddc2 100644 --- a/src/client/pages/reversi/game.board.vue +++ b/src/client/pages/reversi/game.board.vue @@ -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; diff --git a/src/client/pages/reversi/game.setting.vue b/src/client/pages/reversi/game.setting.vue index 3ed4d2c67b7404400191ca324f1717f783eec95a..404e560a06cc33ef03809d91a3fd093015e34e70 100644 --- a/src/client/pages/reversi/game.setting.vue +++ b/src/client/pages/reversi/game.setting.vue @@ -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; * { diff --git a/src/client/pages/settings/drive.vue b/src/client/pages/settings/drive.vue index 869af77f37ea72382c237654d71d460e73abcf1a..8ca8bc9eec96c9da1d56af098fe39a1bd923a3d2 100644 --- a/src/client/pages/settings/drive.vue +++ b/src/client/pages/settings/drive.vue @@ -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; diff --git a/src/client/pages/settings/other.vue b/src/client/pages/settings/other.vue index c0b9625098c7a844bed6b88099c9702cb1d1b26d..a14e101328dbb72ca4a600719b4e52258afc6977 100644 --- a/src/client/pages/settings/other.vue +++ b/src/client/pages/settings/other.vue @@ -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, } }, diff --git a/src/client/pages/settings/security.vue b/src/client/pages/settings/security.vue index 913e0e64bf231ff120d8f95158905045cbcd9023..cdb5705c0b094a904956dc7b4918b3196ccdff7a 100644 --- a/src/client/pages/settings/security.vue +++ b/src/client/pages/settings/security.vue @@ -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; } diff --git a/src/client/pages/settings/theme.vue b/src/client/pages/settings/theme.vue index e230a2276b53edef9b8ef4b0e4f9dd8db2b397cd..ac57c51df4826a8b78430f38f1b6412b66bfc6fd 100644 --- a/src/client/pages/settings/theme.vue +++ b/src/client/pages/settings/theme.vue @@ -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); diff --git a/src/client/pages/user/index.vue b/src/client/pages/user/index.vue index 959170f526539c03feb84934a81b9125027d5e72..5229db9ee3b51d7f7081868a4be4d3de84bd68c9 100644 --- a/src/client/pages/user/index.vue +++ b/src/client/pages/user/index.vue @@ -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; diff --git a/src/client/pages/welcome.entrance.a.vue b/src/client/pages/welcome.entrance.a.vue index 46a52f41897e62a26fca785ee6ffe70bd2a62e11..4d356774eba9cfe4edd19101c4ca3b2014c5824b 100644 --- a/src/client/pages/welcome.entrance.a.vue +++ b/src/client/pages/welcome.entrance.a.vue @@ -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%); diff --git a/src/client/pages/welcome.entrance.b.vue b/src/client/pages/welcome.entrance.b.vue index 0dc91359d03c7ab46224b6258255ec3e1d44e21d..8a6f60e726fbdf9397dc7cd8d3acd676cffb02f9 100644 --- a/src/client/pages/welcome.entrance.b.vue +++ b/src/client/pages/welcome.entrance.b.vue @@ -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%); } diff --git a/src/client/pages/welcome.setup.vue b/src/client/pages/welcome.setup.vue index 9c1315cc40c49316f958ba3a21594cfff342edf4..bc994099ac45cd8348f09aa1f600ef5274d9a507 100644 --- a/src/client/pages/welcome.setup.vue +++ b/src/client/pages/welcome.setup.vue @@ -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; diff --git a/src/client/style.scss b/src/client/style.scss index aa2face04ee8a5adc947d8656b696a85f68bc422..b6a83d967e122a44330d83bea4559637770990fa 100644 --- a/src/client/style.scss +++ b/src/client/style.scss @@ -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; } diff --git a/src/client/ui/_common_/header.vue b/src/client/ui/_common_/header.vue index 3f4796d7a183713cad12044be28702f08c8e3009..f150653a840c7cfea2d10ac964ad46f85004840c 100644 --- a/src/client/ui/_common_/header.vue +++ b/src/client/ui/_common_/header.vue @@ -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; diff --git a/src/client/ui/_common_/upload.vue b/src/client/ui/_common_/upload.vue index 6262d0b72550f1b9e7f757b57f2874e161560105..c1986737d744098b3bb6e0e501328f6c73ba40c0 100644 --- a/src/client/ui/_common_/upload.vue +++ b/src/client/ui/_common_/upload.vue @@ -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; diff --git a/src/client/ui/chat/index.vue b/src/client/ui/chat/index.vue index c106e9a4449a7eca2f30d65a21e94e489082197c..26c81a1aa904842cd938730837b8cfcdd9f1c72a 100644 --- a/src/client/ui/chat/index.vue +++ b/src/client/ui/chat/index.vue @@ -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; } } diff --git a/src/client/ui/chat/note-header.vue b/src/client/ui/chat/note-header.vue index a33e5bafed08f317b2b647a0909284ed60e1bc1b..cda8ae00e2a1126d6bc2f14de3a769e280661073 100644 --- a/src/client/ui/chat/note-header.vue +++ b/src/client/ui/chat/note-header.vue @@ -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; } diff --git a/src/client/ui/chat/note-preview.vue b/src/client/ui/chat/note-preview.vue index 6ec66c921b5513eef70e158899efe65970a9d72d..48614737016c3f55b7459f22977c074ad091a1c3 100644 --- a/src/client/ui/chat/note-preview.vue +++ b/src/client/ui/chat/note-preview.vue @@ -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 { diff --git a/src/client/ui/chat/note.vue b/src/client/ui/chat/note.vue index 75b92a32f26573bdecc2a30cafb3f7f8eacf2c65..bd7bbc5a4f7ae038c6dbc0d3276f92951cd4fcc6 100644 --- a/src/client/ui/chat/note.vue +++ b/src/client/ui/chat/note.vue @@ -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; diff --git a/src/client/ui/deck/column.vue b/src/client/ui/deck/column.vue index 11e9e536dac4b4879c1dae6ee068930cd60aa740..d0a39965b1ac5e457d5a7afacfd2e7643ecc51d6 100644 --- a/src/client/ui/deck/column.vue +++ b/src/client/ui/deck/column.vue @@ -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; } diff --git a/src/client/ui/visitor/header.vue b/src/client/ui/visitor/header.vue index 7a57a70360efdfb1449da0f5b15effee3d992d56..9a7bf96fc003e31bea4bfce4a40981f1844c3833 100644 --- a/src/client/ui/visitor/header.vue +++ b/src/client/ui/visitor/header.vue @@ -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; diff --git a/src/client/widgets/calendar.vue b/src/client/widgets/calendar.vue index 5bc24cb69090dc7d2e92f7fbc72ebf44bb084c91..545072e87be6d00f1af784ada8cec09dca5f1a1a 100644 --- a/src/client/widgets/calendar.vue +++ b/src/client/widgets/calendar.vue @@ -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; diff --git a/src/client/widgets/federation.vue b/src/client/widgets/federation.vue index f05ad65c2fce2017e553dadeb60cef852a62db9f..6e76bc40e910f5c0a874b14e845fe3496297fe57 100644 --- a/src/client/widgets/federation.vue +++ b/src/client/widgets/federation.vue @@ -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; } diff --git a/src/client/widgets/rss.vue b/src/client/widgets/rss.vue index 3ad801efaeccabab734175dfc6dbb860ee00389a..1140a4252f63e18698e5c52b669c1e4c080a07b5 100644 --- a/src/client/widgets/rss.vue +++ b/src/client/widgets/rss.vue @@ -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); diff --git a/src/client/widgets/trends.vue b/src/client/widgets/trends.vue index b5fc6fb6f0fd9db38ae13403918ae3e88c911010..3734573e3cd1c99e038791152f3e5ad16a83d2db 100644 --- a/src/client/widgets/trends.vue +++ b/src/client/widgets/trends.vue @@ -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; } diff --git a/src/docs/fr-FR/aiscript.md b/src/docs/fr-FR/aiscript.md index cd29b4ebad36c288a1378891ec553598271fb5f4..8e3843ce88bea985150e1e0aae90083d6f83744d 100644 --- a/src/docs/fr-FR/aiscript.md +++ b/src/docs/fr-FR/aiscript.md @@ -1,4 +1,4 @@ # AiScript ## Fonction -デフォルトã§å€¤æ¸¡ã—ã§ã™ã€‚ +Réglé sur « passage par copie » par défaut diff --git a/src/docs/fr-FR/deck.md b/src/docs/fr-FR/deck.md index 73e9efdaaff9999957ea0c83ff1caa0ee1d3c68b..310463e00e764dc82ee2a2443f1cf5ab2eaf7b91 100644 --- a/src/docs/fr-FR/deck.md +++ b/src/docs/fr-FR/deck.md @@ -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) diff --git a/src/docs/fr-FR/follow.md b/src/docs/fr-FR/follow.md index 93c8428e2081a7e3bd702afb3a17315271d153e6..0b0766e1be97c79b50575128d43a95cd6ff9ce51 100644 --- a/src/docs/fr-FR/follow.md +++ b/src/docs/fr-FR/follow.md @@ -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. diff --git a/src/docs/fr-FR/keyboard-shortcut.md b/src/docs/fr-FR/keyboard-shortcut.md index 35bebbcde285bb2f90cd50ffc13ceac22839bc2e..1223224f4443cc44f2eb7b2e2874b7c8a7ec7f57 100644 --- a/src/docs/fr-FR/keyboard-shortcut.md +++ b/src/docs/fr-FR/keyboard-shortcut.md @@ -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> diff --git a/src/docs/fr-FR/mfm.md b/src/docs/fr-FR/mfm.md index e237287accce86608652e3383b9c68d2e68f00aa..107911c0ad7185b350e14a4c98bd6226ee7077b2 100644 --- a/src/docs/fr-FR/mfm.md +++ b/src/docs/fr-FR/mfm.md @@ -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). diff --git a/src/docs/fr-FR/mute.md b/src/docs/fr-FR/mute.md index 051dddfa92956ca6353489b754b77968f25fc2a5..1374abb08e534465aa8df83954c2492a3b1e1643 100644 --- a/src/docs/fr-FR/mute.md +++ b/src/docs/fr-FR/mute.md @@ -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. diff --git a/src/docs/fr-FR/reaction.md b/src/docs/fr-FR/reaction.md index d0df0553043b6335a25d1030733e19ebd069dff1..ee984056070ff9fe6b6434584666816c9375ba21 100644 --- a/src/docs/fr-FR/reaction.md +++ b/src/docs/fr-FR/reaction.md @@ -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ã§ã‚ã£ãŸã¨ã—ã¦ã‚‚ã€ã‚«ã‚¹ã‚¿ãƒ 絵文å—リアクションã¯ä¼ã‚らãšã€è‡ªå‹•çš„ã«ã€ŒðŸ‘ã€ç‰ã«ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯ã•ã‚Œã¾ã™ã€‚ diff --git a/src/docs/fr-FR/theme.md b/src/docs/fr-FR/theme.md index 9c706c826e65592016b6aa38ff58b8250d421510..4fd1c211c7aee3d1ea526c792cfbe5223c264e17 100644 --- a/src/docs/fr-FR/theme.md +++ b/src/docs/fr-FR/theme.md @@ -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` ... テーマã®ã‚¹ã‚¿ã‚¤ãƒ«å®šç¾©ã€‚ã“ã‚Œã‹ã‚‰èª¬æ˜Žã—ã¾ã™ã€‚ ### テーマã®ã‚¹ã‚¿ã‚¤ãƒ«å®šç¾© diff --git a/src/docs/fr-FR/timelines.md b/src/docs/fr-FR/timelines.md index c674db82403be8683d0c0048dceec844a69587a7..308dccaaa030175dfa4df6fca1c30b1273d1d9a2 100644 --- a/src/docs/fr-FR/timelines.md +++ b/src/docs/fr-FR/timelines.md @@ -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. diff --git a/src/server/web/bios.css b/src/server/web/bios.css new file mode 100644 index 0000000000000000000000000000000000000000..b0da3ee39b1c1a23ab0244c3ea57e3e8f43b8aa1 --- /dev/null +++ b/src/server/web/bios.css @@ -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; +} diff --git a/src/server/web/bios.js b/src/server/web/bios.js new file mode 100644 index 0000000000000000000000000000000000000000..d06dee801aea3c6ba254da81acde5ac1f1ee05fa --- /dev/null +++ b/src/server/web/bios.js @@ -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); + }); +}; diff --git a/src/server/web/boot.js b/src/server/web/boot.js index 6347c5566ef609d5b883dd215dd51689e9648a4e..1c94e6e4f40d8fa6d243d79d682875f45c56724c 100644 --- a/src/server/web/boot.js +++ b/src/server/web/boot.js @@ -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`); - localStorage.setItem('lang', lang); - localStorage.setItem('locale', await res.text()); - localStorage.setItem('localeVersion', v); + 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 diff --git a/src/server/web/cli.css b/src/server/web/cli.css new file mode 100644 index 0000000000000000000000000000000000000000..07cd27830b692b0824a57c54a0feb33ba91ed097 --- /dev/null +++ b/src/server/web/cli.css @@ -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; +} diff --git a/src/server/web/cli.js b/src/server/web/cli.js new file mode 100644 index 0000000000000000000000000000000000000000..3dff1d4860431a305e7c1857c62e8816a94275d4 --- /dev/null +++ b/src/server/web/cli.js @@ -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); + } + }); +}; diff --git a/src/server/web/index.ts b/src/server/web/index.ts index 8ea7e157519bd8d509d24d7598ef5cf2993cb422..a1d79100a6ddefe4f58ca4de087fbc58b1f35f69 100644 --- a/src/server/web/index.ts +++ b/src/server/web/index.ts @@ -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('/'); diff --git a/src/server/web/views/bios.pug b/src/server/web/views/bios.pug new file mode 100644 index 0000000000000000000000000000000000000000..d81a3ee67fb439792f7de55cf720021450183e5f --- /dev/null +++ b/src/server/web/views/bios.pug @@ -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 diff --git a/src/server/web/views/cli.pug b/src/server/web/views/cli.pug new file mode 100644 index 0000000000000000000000000000000000000000..d2cf7c4335dff40b2ad05a369695bad5ad9b9515 --- /dev/null +++ b/src/server/web/views/cli.pug @@ -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 diff --git a/yarn.lock b/yarn.lock index b8edcb8501b9e3ba7910a9c3b35903aa784fa521..761a8349aab003cca504ac5a8fdd56db41c63cbc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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"