Merge branch 'develop'

This commit is contained in:
syuilo 2020-03-22 18:56:47 +09:00
commit 9d2049f31e
26 changed files with 317 additions and 211 deletions

View file

@ -1,7 +1,20 @@
ChangeLog
=========
12.22.0 (2020/02/23)
12.23.0 (2020/03/22)
-------------------
### ✨Improvements
* 削除して編集できるように
* 基底テーマ分離
* 端末がダークモードか否かでテーマを切り替えられるように
### 🐛Fixes
* ユーザー名のサジェストをアクティブであるユーザー順に表示するのがうまくいっていないのを修正
* 招待コードが発行できない問題を修正
* CIが通らない問題を修正
12.22.0 (2020/03/21)
-------------------
### ✨Improvements

View file

@ -83,7 +83,6 @@ add: "Hinzufügen"
reaction: "Reaktionen"
reactionSettingDescription: "Weisen Sie Ihre lieblings reaktionen zu, die Sie in den Reaktionenswähler stecken möchten."
rememberNoteVisibility: "Notizsichtbarkeit merken"
renameFile: "Datei umbenennen"
attachCancel: "Anhängen abbrechen"
markAsSensitive: "Als sensitiv markieren"
unmarkAsSensitive: "Markierung als sensitiv zurücknehmen"
@ -182,7 +181,6 @@ fromUrl: "Von einer URL"
explore: "Erkunden"
games: "Misskey Spiele"
messageRead: "Gelesen"
recentUsedEmojis: "Kürzlich genutzte Emojis"
noMoreHistory: "Kein weiterer Verlauf vorhanden"
nUsersRead: "Von {n} gelesen"
agreeTo: "Ich stimme {0} zu"
@ -201,8 +199,9 @@ darkThemes: "Dunkle Farbthemen"
drive: "Drive"
selectFile: "Datei auswählen"
selectFiles: "Dateien auswählen"
renameFolder: "Ordner umbenennen"
renameFile: "Datei umbenennen"
createFolder: "Ordner erstellen"
renameFolder: "Ordner umbenennen"
deleteFolder: "Ordner löschen"
addFile: "Datei hinzufügen"
emptyDrive: "Drive ist leer"
@ -290,7 +289,6 @@ noteOf: "Notiz von {user}"
inviteToGroup: "Zu Gruppe einladen"
maxNoteTextLength: "Maximale Länge von Notizen"
useOsNativeEmojis: "Eingebaute Emojis des Betriebssystems benutzen"
noGroups: "Keine Gruppen vorhanden"
joinOrCreateGroup: "Lass dich zu einer Gruppe einladen oder erstelle deine eigene."
noHistory: "Kein Verlauf"
disableAnimatedMfm: "MFM, die Animationen enthalten, deaktivieren"
@ -459,24 +457,16 @@ _timelines:
global: "Global"
_pages:
content: "Inhalt"
more-details: "Mehr Informationen"
title: "Titel"
url: "Seiten-URL"
summary: "Zusammenfassung"
alignCenter: "Mittig ausrichten"
hide-title-when-pinned: "Seitentitel wenn angepinnt ausblenden"
font: "Schriftart"
fontSerif: "Serif"
fontSansSerif: "Sans Serif"
chooseBlock: "Block hinzufügen"
selectType: "Wähle einen Typ"
enterVariableName: "Gib einen Namen für deine Variable ein"
the-variable-name-is-already-used: "Der Variablenname wird bereits verwendet"
content-blocks: "Inhalt"
input-blocks: "Eingabe"
special-blocks: "Speziell"
post-from-post-form: "Diesen Inhalt senden"
posted-from-post-form: "Erfolgreich gesendet!"
blocks:
text: "Text"
textarea: "Textfeld"

View file

@ -35,6 +35,8 @@ unpin: "Unpin from profile"
copyContent: "Copy contents"
copyLink: "Copy link"
delete: "Delete"
deleteAndEdit: "Delete and Edit"
deleteAndEditConfirm: "Are you sure you want to delete this note and edit it? You will lose all reactions, renotes and replies to it."
addToList: "Add to list"
sendMessage: "Send a message"
copyUsername: "Copy username"
@ -86,7 +88,6 @@ add: "Add"
reaction: "Reaction"
reactionSettingDescription: "Assign your favorite reactions which want to pin in reaction picker."
rememberNoteVisibility: "Remember note visibility settings"
renameFile: "Rename file"
attachCancel: "Remove attachment"
markAsSensitive: "Mark as NSFW"
unmarkAsSensitive: "Undo NSFW"
@ -116,6 +117,7 @@ loginFailed: "Failed to sign in"
showOnRemote: "View on remote instance"
general: "General"
wallpaper: "Wallpaper"
setWallpaper: "Set wallpaper"
removeWallpaper: "Remove wallpaper"
searchWith: "Search: {q}"
youHaveNoLists: "You don't have any lists"
@ -204,10 +206,13 @@ messaging: "Messaging"
upload: "Upload"
fromDrive: "From Drive"
fromUrl: "From URL"
uploadFromUrl: "Upload from a URL"
uploadFromUrlDescription: "URL of the file you want to upload"
uploadFromUrlRequested: "Upload requested"
uploadFromUrlMayTakeTime: "It may take some time until the upload is complete."
explore: "Explore"
games: "Misskey Games"
messageRead: "Read"
recentUsedEmojis: "Recently used emojis"
noMoreHistory: "There is no further history"
startMessaging: "Start messaging"
nUsersRead: "read by {n}"
@ -223,17 +228,30 @@ yearsOld: "{age} years old"
registeredDate: "Joined on"
location: "Location"
theme: "Theme"
themeForLightMode: "Theme to use in Light Mode"
themeForDarkMode: "Theme to use in Dark Mode"
light: "Light"
dark: "Dark"
lightThemes: "Light theme"
darkThemes: "Dark theme"
syncDeviceDarkMode: "Sync Dark Mode with your device settings"
drive: "Drive"
fileName: "Filename"
selectFile: "Select a file"
selectFiles: "Select files"
renameFolder: "Rename this folder"
renameFile: "Rename file"
folderName: "Folder name"
createFolder: "Create a folder"
renameFolder: "Rename this folder"
deleteFolder: "Delete this folder"
addFile: "Add a file"
emptyDrive: "The drive is empty"
emptyFolder: "This folder is empty"
unableToDelete: "Unable to delete"
inputNewFileName: "Enter a new filename"
inputNewFolderName: "Enter a new folder name"
circularReferenceFolder: "The destination folder is a subfolder of the folder you wish to move."
hasChildFilesOrFolders: "Since this folder is not empty, it can not be deleted."
copyUrl: "Copy URL"
rename: "Rename"
avatar: "Avatar"
@ -387,13 +405,14 @@ strongPassword: "Strong password"
passwordMatched: "Matched"
passwordNotMatched: "Doesn't match"
signinWith: "Sign in with {x}"
signinFailed: "Unable to sign in. The username or password you entered is incorrect."
tapSecurityKey: "Tap your security key"
or: "Or"
uiLanguage: "UI display language"
groupInvited: "Invited to group"
aboutX: "About {x}"
useOsNativeEmojis: "Use the OS native Emojis"
noGroups: "No groups"
youHaveNoGroups: "You have no groups"
joinOrCreateGroup: "Get invited to join the groups or you can create your own group."
noHistory: "No history items"
disableAnimatedMfm: "Disable MFM which has animations"
@ -445,6 +464,8 @@ none: "None"
volume: "Volume"
details: "Details"
chooseEmoji: "Choose an emoji"
unableToProcess: "The operation could not be completed."
recentUsed: "Recently used"
_sfx:
note: "New note"
noteMy: "My note"
@ -651,45 +672,39 @@ _pages:
newPage: "Create a page"
editPage: "Edit this page"
readPage: "Source view activated"
page-created: "Successfully created a page!"
page-updated: "Successfully updated the page!"
name-already-exists: "Specified page URL already exists."
title-invalid-name: "The specified page URL is invalid."
text-invalid-name: "Please double-check if it is not empty."
created: "Successfully created a page!"
updated: "Successfully updated the page!"
deleted: "The page has been deleted"
nameAlreadyExists: "The specified page URL already exists"
invalidNameTitle: "The specified page URL is invalid"
invalidNameText: "Check whether that is not a blank"
editThisPage: "Edit this page"
viewSource: "View source"
viewPage: "View your pages"
like: "Like"
unlike: "Undo like"
liked-pages: "Liked pages"
my-pages: "My pages"
my: "My pages"
liked: "Liked pages"
inspector: "Inspector"
content: "Page block"
variables: "Variables"
variables-info: "You can make your page more interactive by using variables. If you write down <b>{ variable name }</b> in the text, you can embed the value of the variable. For example, source text <b>Hello { thing } world!</b> with <b> ai </b> as the value of variable 'thing' will result in the text being <b>Hello ai world!</b>."
variables-info2: "Because the evaluation of variables are performed from top to bottom, the variable cannot refer to another variables which appear on later lines. For example, when defining three variables <b>A</b>, <b>B</b> and <b>C</b>, variable <b>C</b> <i>can</i> refer to variables <b>A</b> and <b>B</b> in its expression. However, variable <b>A</b> <i>cannot</i> refer to variables <b>B</b> or <b>C</b> in its expression."
variables-info3: "To get an input from user, insert \"user input\" block with your desired variable name (that variable will be declared automatically). You could then use that variable to perform actions on your page."
variables-info4: "Functions make it easier to perform repetitive tasks. To create a function, declare a variable of \"Function\" type. A function can have a slot (argument/parameter) which can be used inside the function as a variable. Thanks to AiScript specification, you can also use function itself as a parameter for other functions. (Search \"callback functions\" on google for more details)."
more-details: "More information"
title: "Title"
url: "Page URL"
summary: "Page summary"
alignCenter: "Center elements"
hide-title-when-pinned: "Hide page title when pinned"
hideTitleWhenPinned: "Hide page title when pinned to profile"
font: "Font"
fontSerif: "Serif"
fontSansSerif: "Sans serif"
set-eye-catching-image: "Set thumbnail image"
remove-eye-catching-image: "Remove thumbnail image"
eyeCatchingImageSet: "Set the eye-catching image"
eyeCatchingImageRemove: "Delete the eye-catching image"
chooseBlock: "Add a block"
selectType: "Select a type"
enterVariableName: "Please enter a name for your variable"
the-variable-name-is-already-used: "This name is already being used by other variable"
content-blocks: "Content"
input-blocks: "Input"
special-blocks: "Special"
post-from-post-form: "Post this content"
posted-from-post-form: "Successfully posted!"
variableNameIsAlreadyUsed: "This name is already being used by other variable"
contentBlocks: "Content"
inputBlocks: "Input"
specialBlocks: "Special"
blocks:
text: "Text"
textarea: "Text area"

View file

@ -35,6 +35,8 @@ unpin: "Desfijar"
copyContent: "Copiar contenido"
copyLink: "Copiar enlace"
delete: "Borrar"
deleteAndEdit: "Borrar y editar"
deleteAndEditConfirm: "¿Quieres borrar y editar este nota? Las reacciones, renotes, respuestas y todo desaparecerán."
addToList: "Agregar a lista"
sendMessage: "Énviar mensaje"
copyUsername: "Copiar nombre de usuario"
@ -86,7 +88,6 @@ add: "Añadir"
reaction: "Reacción"
reactionSettingDescription: "Asigne sus reacción favoritas que desean anclar en el selector de reacciones."
rememberNoteVisibility: "Recordar visibilidad"
renameFile: "Renombrar archivo"
attachCancel: "Quitar adjunto"
markAsSensitive: "Marcar como sensible"
unmarkAsSensitive: "Desmarcar como sensible"
@ -116,6 +117,7 @@ loginFailed: "Error al iniciar sesión."
showOnRemote: "Ver en una instancia remota"
general: "General"
wallpaper: "Fondo de pantalla"
setWallpaper: "Establecer fondo de pantalla"
removeWallpaper: "Quitar fondo de pantalla"
searchWith: "Buscar: {q}"
youHaveNoLists: "No tienes listas"
@ -204,10 +206,13 @@ messaging: "Chat"
upload: "Subir"
fromDrive: "Desde el drive"
fromUrl: "Desde la URL"
uploadFromUrl: "Subir desde una URL"
uploadFromUrlDescription: "URL del fichero que quieres subir"
uploadFromUrlRequested: "Subida solicitada"
uploadFromUrlMayTakeTime: "Subir el fichero puede tardar un tiempo."
explore: "Explorar"
games: "Misskey Games"
messageRead: "Ya leído"
recentUsedEmojis: "Emojis usados recientemente"
noMoreHistory: "El historial se ha acabado"
startMessaging: "Iniciar chat"
nUsersRead: "Leído por {n} personas"
@ -223,17 +228,30 @@ yearsOld: "{age} años"
registeredDate: "Fecha de registro"
location: "Lugar"
theme: "Tema"
themeForLightMode: "Tema para usar en Modo Linterna"
themeForDarkMode: "Tema para usar en Modo Oscuro"
light: "Linterna"
dark: "Oscuro"
lightThemes: "Tema claro"
darkThemes: "Tema oscuro"
syncDeviceDarkMode: "Sincronice el Modo Oscuro con la configuración de su dispositivo"
drive: "Drive"
fileName: "Nombre de archivo"
selectFile: "Elegir archivo"
selectFiles: "Elegir archivos"
renameFolder: "Renombrar carpeta"
renameFile: "Renombrar archivo"
folderName: "Nombre de la carpeta"
createFolder: "Crear carpeta"
renameFolder: "Renombrar carpeta"
deleteFolder: "Borrar carpeta"
addFile: "Añadir archivo"
emptyDrive: "El drive está vacío"
emptyFolder: "La carpeta está vacía"
unableToDelete: "No se puede borrar"
inputNewFileName: "Ingrese un nuevo nombre de archivo"
inputNewFolderName: "Ingrese un nuevo nombre de la carpeta"
circularReferenceFolder: "La carpeta de destino es una sub-carpeta de la carpeta que quieres mover."
hasChildFilesOrFolders: "No se puede borrar esta carpeta. No está vacía."
copyUrl: "Copiar URL"
rename: "Renombrar"
avatar: "Avatar"
@ -387,13 +405,14 @@ strongPassword: "Muy buena contraseña"
passwordMatched: "Correcto"
passwordNotMatched: "Las contraseñas no son las mismas"
signinWith: "Inicie sesión con {x}"
signinFailed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
tapSecurityKey: "Toque la clave de seguridad"
or: "O"
uiLanguage: "Idioma de visualización de la interfaz"
groupInvited: "Invitado al grupo"
aboutX: "Acerca de {x}"
useOsNativeEmojis: "Usa los emojis nativos de la plataforma"
noGroups: "Sin grupos"
youHaveNoGroups: "Sin grupos"
joinOrCreateGroup: "Obtenga una invitación para unirse al grupos o puede crear su propio grupo."
noHistory: "No hay datos en el historial"
disableAnimatedMfm: "Deshabilitar MFM que tiene animaciones"
@ -445,6 +464,8 @@ none: "Ninguna"
volume: "Volumen"
details: "Detalles"
chooseEmoji: "Elije un emoji"
unableToProcess: "La operación no se puede llevar a cabo"
recentUsed: "Usado recientemente"
_sfx:
note: "Notas"
noteMy: "Nota (a mí mismo)"
@ -651,45 +672,39 @@ _pages:
newPage: "Crear página"
editPage: "Editar página"
readPage: "Viendo la fuente"
page-created: "La página fue creada"
page-updated: "La página fue actualizada"
name-already-exists: "La URL de la página seleccionada ya existe"
title-invalid-name: "URL inválida"
text-invalid-name: "Verifique que no tenga espacios en blanco"
created: "La página fue creada"
updated: "La página fue actualizada"
deleted: "La página borrada"
nameAlreadyExists: "La URL de la página especificada ya existe"
invalidNameTitle: "URL inválida"
invalidNameText: "Verifique que no tenga espacios en blanco"
editThisPage: "Editar esta página"
viewSource: "Ver la fuente"
viewPage: "Ver página"
like: "Me gusta"
unlike: "Quitar me gusta"
liked-pages: "Páginas que me gustan"
my-pages: "Mis páginas"
my: "Mis páginas"
liked: "Páginas que me gustan"
inspector: "Inspector"
content: "Bloque de página"
variables: "Variables"
variables-info: "Puedes crear una página dinámica usando variables. Al escribir el <b>{ nombre de la variable }</b> dentro del texto, se puede embeber el valor de la variable allí. Por ejemplo, si en el texto <b>¡Hola { thing } mundo!</b> el valor de la variable (thing) es <b>ai</b>, el texto se vuelve <b>¡Hola ai mundo!</b>"
variables-info2: "La evaluación de las variables (el cálculo de los valores) se hace de arriba a abajo, por eso una variable no puede referenciar a otra que esté debajo. Por ejemplo, cuando se definen las variables <b>A、B、C</b>, <b>C</b> puede referenciar a <b>A</b> o <b>B</b>, pero <b>A</b> no puede referenciar a <b>B</b> ni a <b>C</b>."
variables-info3: "Para recibir la entrada del usuario, agregue un bloque \"entrada de usuario\" en la página, y configure el nombre de las variables que desea almacenar en el campo \"nombre de variables\" (Las variables se crearán automáticamente). Se ejecutaran acciones en base a la entrada del usuario de esas variables."
variables-info4: "Al usar funciones, se pueden agrupar el cálculo de valores de forma reutilizable. Para crear una función, se crea una variable de tipo \"función\". A la función de le puede configurar un slot (argumento), y el valor del slot está disponible como variable dentro de la función. También existen funciones que usan funciones como argumentos bajo el estandar AiScript (llamadas funciones de orden superior). Además de las funciones definidas previamente, se pueden definir funciones al momento en los slots de las funciones de orden superior."
more-details: "Más detalles"
title: "Título"
url: "URL de la página"
summary: "Resumen de la página"
alignCenter: "Centrar"
hide-title-when-pinned: "Ocultar el título de la página al fijarse"
hideTitleWhenPinned: "Ocultar el título de la página al fijarse"
font: "Fuente"
fontSerif: "Serif"
fontSansSerif: "Sans Serif"
set-eye-catching-image: "Elegir imagen llamativa"
remove-eye-catching-image: "Borrar imagen llamativa"
eyeCatchingImageSet: "Elegir imagen llamativa"
eyeCatchingImageRemove: "Borrar imagen llamativa"
chooseBlock: "Agregar bloque"
selectType: "Elegir tipo"
enterVariableName: "Ingrese el nombre de la variable"
the-variable-name-is-already-used: "El nombre de la variable ya está en uso"
content-blocks: "Contenido"
input-blocks: "Entrada"
special-blocks: "Especial"
post-from-post-form: "Postear este contenido"
posted-from-post-form: "Posteado"
variableNameIsAlreadyUsed: "El nombre de la variable ya está en uso"
contentBlocks: "Contenido"
inputBlocks: "Entrada"
specialBlocks: "Especial"
blocks:
text: "Texto"
textarea: "Área de texto"

View file

@ -35,6 +35,8 @@ unpin: "Désépingler"
copyContent: "Copier le contenu"
copyLink: "Copier le lien"
delete: "Supprimer"
deleteAndEdit: "Supprimer et réécrire"
deleteAndEditConfirm: "Êtes-vous sûr de vouloir effacer cette note et la modifier ? Vous perdrez toutes les réactions, renotes et réponses."
addToList: "Ajouter à une liste"
sendMessage: "Envoyer un message"
copyUsername: "Copier le nom d'utilisateur"
@ -86,7 +88,6 @@ add: "Ajouter"
reaction: "Réactions"
reactionSettingDescription: "Attribuez vos réactions préférées qui souhaitent épingler le sélecteur de réaction."
rememberNoteVisibility: "Se souvenir de la visibilité des notes"
renameFile: "Renommer le ficher"
attachCancel: "Enlever le fichier attaché"
markAsSensitive: "Marquer comme sensible"
unmarkAsSensitive: "Enlever le marquage comme sensible"
@ -116,6 +117,7 @@ loginFailed: "Échec de la connexion"
showOnRemote: "Voir sur l'instance distante"
general: "Général"
wallpaper: "Arrière plan"
setWallpaper: "Définir le fond d'écran"
removeWallpaper: "Supprimer l'arrière plan"
searchWith: "Recherche : {q}"
youHaveNoLists: "Vous n'avez aucune liste"
@ -204,10 +206,13 @@ messaging: "Discuter"
upload: "Téléchargez"
fromDrive: "Depuis le Drive"
fromUrl: "De l'URL"
uploadFromUrl: "Téléverser via une URL"
uploadFromUrlDescription: "URL du fichier que vous souhaitez téléverser"
uploadFromUrlRequested: "Téléversement demandé"
uploadFromUrlMayTakeTime: "Le téléversement de votre fichier peut prendre un certain temps."
explore: "Découvrir"
games: "Jeux de Misskey"
messageRead: "Lus"
recentUsedEmojis: "Emoji récemment utilisé"
noMoreHistory: "Plus d'histoire passée"
startMessaging: "Commencer à écrire un discutez"
nUsersRead: "{n} personnes ont lu"
@ -223,17 +228,30 @@ yearsOld: "{age} ans"
registeredDate: "Date de création"
location: "Localisation"
theme: "Thème"
themeForLightMode: "Thème à utiliser en Mode Lumière"
themeForDarkMode: "Thème à utiliser en Mode Sombre"
light: "Lumière"
dark: "Sombre"
lightThemes: "Thème lumineux"
darkThemes: "Thème sombre"
syncDeviceDarkMode: "Synchronisez le mode sombre avec les paramètres de votre appareil"
drive: "Drive"
fileName: "Nom du fichier"
selectFile: "Choisir le fichier"
selectFiles: "Choisir le fichiers"
renameFolder: "Renommer le dossier"
renameFile: "Renommer le ficher"
folderName: "Nom du dossier"
createFolder: "Créer un dossier"
renameFolder: "Renommer le dossier"
deleteFolder: "Supprimer le dossier"
addFile: "Ajoutez un fichier"
emptyDrive: "Le Drive est vide"
emptyFolder: "Le dossier est vide"
unableToDelete: "Ne peut pas être supprimé"
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 pas être supprimé"
copyUrl: "Copier lURL"
rename: "Renommer"
avatar: "Avatar"
@ -387,13 +405,14 @@ strongPassword: "Fort mot de passe"
passwordMatched: "Correcte"
passwordNotMatched: "Ne correspond pas"
signinWith: "Connectez-vous avec {x}"
signinFailed: "Échec dauthentification. Veuillez vérifier que votre nom dutilisateur et mot de passe sont corrects."
tapSecurityKey: "Touchez la clé de sécurité"
or: "OU"
uiLanguage: "Langue d'affichage de l'interface"
groupInvited: "Invité au groupe"
aboutX: "À propos de {x}"
useOsNativeEmojis: "Utilisez les emojis natifs de la plateforme"
noGroups: "Pas de groupes"
youHaveNoGroups: "Vous n'avez aucune groupe"
joinOrCreateGroup: "Soyez invité à rejoindre les groupes ou vous pouvez créer votre propre groupe."
noHistory: "Pas d'historique"
disableAnimatedMfm: "Désactiver MFM qui a des animations"
@ -445,6 +464,8 @@ none: "Rien"
volume: "Volume"
details: "Détails"
chooseEmoji: "Choisissez des emojis"
unableToProcess: "L'opération n'a pas pu être complétée"
recentUsed: "Récemment utilisé"
_sfx:
note: "Nouvelle note"
noteMy: "Ma note"
@ -651,45 +672,39 @@ _pages:
newPage: "Créer une page"
editPage: "Modifier une page"
readPage: "Voir la source"
page-created: "Page a été créée !"
page-updated: "A mis à jour la page"
name-already-exists: "Une page portant le même nom existe déjà"
title-invalid-name: "LURL de la page spécifiée nest pas valide"
text-invalid-name: "Assurez-vous qu'il n'est pas vide"
created: "La page a été créée !"
updated: "La page a été mise à jour !"
deleted: "La page a bien été supprimée"
nameAlreadyExists: "La URL de page spécifiée existe déjà"
invalidNameTitle: "La URL de la page spécifiée nest pas valide"
invalidNameText: "Assurez-vous qu'il n'est pas vide"
editThisPage: "Éditer cette page"
viewSource: "Afficher la source"
viewPage: "Afficher la page"
like: "Favori"
unlike: "Je nfavoris pas"
liked-pages: "Pages favoris"
my-pages: "Mes pages"
my: "Mes pages"
liked: "Pages favoris"
inspector: "Inspecteur"
content: "Bloc de page"
variables: "Variables"
variables-info: "Vous pouvez créer une page dynamique à l'aide de variables. En tapant le <b>{nom de variable}</b> dans le texte, vous pouvez y incorporer la valeur de la variable. Par exemple, si dans le texte <b>Bonjour {chose} monde!</b> la valeur de la variable (chose) est <b>ai</b>, le texte devient est <b>Bonjour ai monde!</b>."
variables-info2: "L'évaluation des variables (le calcul des valeurs) se fait de haut en bas, donc l'variable ne peut pas se référer à une autre qui est en dessous. Par exemple, lorsque les variables <b>A、B、C</b> sont définies, <b>C</b> peut faire référence à <b>A</b> ou <b>B</b>, mais <b>A</b> ne peut pas faire référence à <b>B</b> ou <b>C</b>."
variables-info3: "Pour recevoir une entrée utilisateur, ajoutez un bloc \"Entrée\" sur la page et définissez le nom des variables que vous souhaitez stocker dans le champ \"Nom de la variable\" (les variables seront créées automatiquement). Les actions seront exécutées en fonction de l'entrée utilisateur de ces variables."
variables-info4: "Les fonctions vous permettent d'organiser le processus de calcul des valeurs sous une forme réutilisable. Pour créer une fonction, créez une variable de type \"fonction\". Une fonction peut avoir un slot (argument) et sa valeur peut être utilisée comme variable dans la fonction. Il existe également une fonction qui prend une fonction comme argument dans la norme AiScript (appelée fonction d'ordre supérieur). En plus des fonctions prédéfinies, elles peuvent être définies instantanément dans ces emplacements de fonction d'ordre supérieur."
more-details: "Description"
title: "Titre"
url: "URL de page"
summary: "Résumé de page"
alignCenter: "Centrée"
hide-title-when-pinned: "Masquer le titre de la page lorsque celle-ci est épinglée au profil"
hideTitleWhenPinned: "Masquer le titre de la page lorsque celle-ci est épinglée au profil"
font: "Police de caractères"
fontSerif: "Serif"
fontSansSerif: "Sans Serif"
set-eye-catching-image: "Définir une image attirante"
remove-eye-catching-image: "Supprimer une image attirante"
eyeCatchingImageSet: "Définir une image attirante"
eyeCatchingImageRemove: "Supprimer une image attirante"
chooseBlock: "Ajouter un bloc"
selectType: "Choisir un type"
enterVariableName: "Veuillez entrer un nom de variable"
the-variable-name-is-already-used: "Cette variable est déjà utilisée"
content-blocks: "Contenu"
input-blocks: "Entrée"
special-blocks: "Spécial"
post-from-post-form: "Publier ce contenu"
posted-from-post-form: "Publié !"
variableNameIsAlreadyUsed: "Cette variable est déjà utilisée"
contentBlocks: "Contenu"
inputBlocks: "Entrée"
specialBlocks: "Spécial"
blocks:
text: "Texte"
textarea: "Zone de texte"

View file

@ -62,7 +62,6 @@ clickToShow: "押してみ、見せたるわ"
sensitive: "見たらあかんで"
add: "増やす"
reaction: "リアクション"
renameFile: "ファイル名をいらう"
attachCancel: "くっつけるのやめよか"
markAsSensitive: "ちょっと見せられへんわ"
unmarkAsSensitive: "別にええんじゃね?"
@ -102,6 +101,7 @@ all: "みな"
retypedNotMatch: "そやないねん。"
remove: "ほかす"
noMoreHistory: "これより過去の履歴はあらへんで"
renameFile: "ファイル名をいらう"
nsfw: "見たらあかんで"
userList: "リスト"
about: "情報"

View file

@ -35,6 +35,8 @@ unpin: "프로필에서 고정 해제"
copyContent: "내용 복사"
copyLink: "링크 복사"
delete: "삭제"
deleteAndEdit: "삭제 후 편집"
deleteAndEditConfirm: "이 노트를 삭제한 뒤 다시 편집하시겠습니까? 이 노트에 대한 리액션, 리노트, 답글 또한 모두 삭제됩니다."
addToList: "리스트에 추가"
sendMessage: "메시지 보내기"
copyUsername: "유저명 복사"
@ -86,7 +88,6 @@ add: "추가"
reaction: "리액션"
reactionSettingDescription: "리액션 선택 상자에 표시할 리액션을 설정합니다."
rememberNoteVisibility: "공개 범위를 기억하기"
renameFile: "파일 이름 변경"
attachCancel: "첨부 취소"
markAsSensitive: "열람주의로 설정"
unmarkAsSensitive: "열람주의 해제"
@ -116,6 +117,7 @@ loginFailed: "로그인에 실패했습니다"
showOnRemote: "리모트에서 보기"
general: "일반"
wallpaper: "배경"
setWallpaper: "배경화면 설정"
removeWallpaper: "배경 제거"
searchWith: "검색: {q}"
youHaveNoLists: "리스트가 없습니다"
@ -204,10 +206,13 @@ messaging: "대화"
upload: "업로드"
fromDrive: "드라이브에서"
fromUrl: "URL로부터"
uploadFromUrl: "URL 업로드"
uploadFromUrlDescription: "업로드하려는 파일의 URL"
uploadFromUrlRequested: "업로드를 요청했습니다"
uploadFromUrlMayTakeTime: "업로드가 완료될 때까지 시간이 소요될 수 있습니다."
explore: "발견하기"
games: "Misskey Games"
messageRead: "읽음"
recentUsedEmojis: "최근에 사용한 이모지"
noMoreHistory: "이것보다 과거의 기록이 없습니다"
startMessaging: "대화 시작하기"
nUsersRead: "{n}명이 읽음"
@ -223,17 +228,30 @@ yearsOld: "{age}세"
registeredDate: "등록일"
location: "장소"
theme: "테마"
themeForLightMode: "라이트 모드에서 사용할 테마"
themeForDarkMode: "다크 모드에서 사용할 테마"
light: "라이트"
dark: "다크"
lightThemes: "밝은 테마"
darkThemes: "어두운 테마"
syncDeviceDarkMode: "디바이스의 다크 모드 설정과 동기화"
drive: "드라이브"
fileName: "파일명"
selectFile: "파일 선택"
selectFiles: "파일 선택"
renameFolder: "폴더 이름 바꾸기"
renameFile: "파일 이름 변경"
folderName: "폴더명"
createFolder: "폴더 만들기"
renameFolder: "폴더 이름 바꾸기"
deleteFolder: "폴더 삭제"
addFile: "파일 추가"
emptyDrive: "드라이브가 비어 있습니다"
emptyFolder: "폴더가 비어 있습니다"
unableToDelete: "삭제할 수 없습니다"
inputNewFileName: "바꿀 파일명을 입력해 주세요"
inputNewFolderName: "바꿀 폴더명을 입력해 주세요"
circularReferenceFolder: "지정한 폴더가 이동할 폴더의 하위 폴더입니다."
hasChildFilesOrFolders: "이 폴더는 비어있지 않기 때문에 삭제할 수 없습니다."
copyUrl: "URL 복사"
rename: "이름 변경"
avatar: "아바타"
@ -387,13 +405,14 @@ strongPassword: "강한 비밀번호"
passwordMatched: "일치합니다"
passwordNotMatched: "일치하지 않습니다"
signinWith: "{x}로 로그인"
signinFailed: "로그인할 수 없습니다. 사용자명과 비밀번호를 확인하여 주십시오."
tapSecurityKey: "보안 키를 터치"
or: "혹은"
uiLanguage: "UI 표시 언어"
groupInvited: "그룹에 초대되었습니다"
aboutX: "{x}에 대하여"
useOsNativeEmojis: "OS 기본 이모지를 사용"
noGroups: "그룹이 없습니다"
youHaveNoGroups: "그룹이 없습니다"
joinOrCreateGroup: "다른 그룹의 초대를 받거나, 직접 새 그룹을 만들어 보세요."
noHistory: "기록이 없습니다"
disableAnimatedMfm: "움직임이 있는 MFM을 비활성화"
@ -445,6 +464,8 @@ none: "없음"
volume: "음량"
details: "자세히"
chooseEmoji: "이모지 선택"
unableToProcess: "작업을 완료할 수 없습니다"
recentUsed: "최근 사용"
_sfx:
note: "새 노트"
noteMy: "내 노트"
@ -651,45 +672,39 @@ _pages:
newPage: "페이지 만들기"
editPage: "페이지 수정"
readPage: "소스 표시 중"
page-created: "페이지를 만들었습니다"
page-updated: "페이지를 수정했습니다"
name-already-exists: "지정한 페이지 URL이 이미 존재합니다"
title-invalid-name: "유효하지 않은 페이지 URL입니다"
text-invalid-name: "비어있지 않은지 확인해주세요"
created: "페이지를 만들었습니다"
updated: "페이지를 수정했습니다"
deleted: "페이지가 삭제되었습니다"
nameAlreadyExists: "지정한 페이지 URL이 이미 존재합니다"
invalidNameTitle: "유효하지 않은 페이지 URL입니다"
invalidNameText: "비어있지 않은지 확인해주세요"
editThisPage: "이 페이지를 편집"
viewSource: "소스 보기"
viewPage: "페이지 보기"
like: "좋아요"
unlike: "좋아요 해제"
liked-pages: "좋아요한 페이지"
my-pages: "내 페이지"
my: "내 페이지"
liked: "좋아요한 페이지"
inspector: "인스펙터"
content: "페이지 블록"
variables: "변수"
variables-info: "변수를 사용하면 동적인 페이지를 만들 수 있습니다. 텍스트에 <b>{ 변수명 }</b>을 적으면 그 위치에 변수의 값을 집어넣습니다. 예를 들어, <b>Hello { thing } world!</b> 라는 텍스트가 있을 때, 변수(thing)의 값이 <b>ai</b>인 경우 텍스트는 <b>Hello ai world!</b>가 됩니다."
variables-info2: "변수의 평가(값을 계산해내는 것)는 위에서부터 아래로 진행되므로 어떤 변수의 내부에서 자신보다 아래에 있는 변수를 참조할 수는 없습니다. 예를 들자면 위에서부터 <b>A, B, C</b>의 3개의 변수가 정의되어 있을 때, <b>C</b>의 내부에 <b>A</b>나 <b>B</b>를 참조할 수는 있지만, <b>A</b>의 내부에서 <b>B</b>나 <b>C</b>를 참조할 수는 없습니다."
variables-info3: "사용자로부터 입력을 받으려면, 페이지에 \"사용자 입력\" 블록을 삽입하고 \"변수명\" 에 입력받은 값을 저장하고 싶은 변수명을 설정합니다 (변수는 자동으로 생성됩니다). 그 변수를 사용하여 사용자 입력에 따라 동작할 수 있습니다."
variables-info4: "함수를 사용하면 반복되는 작업을 손쉽게 처리할 수 있습니다. 함수를 만드시려면 \"함수\" 타입의 변수를 만듭니다. 함수에서 슬롯(인수)를 받도록 설정하면, 함수를 사용할 때 슬롯에 입력된 값을 함수 안에서 변수로써 이용할 수 있게 됩니다. 또한, AiScript 표준에는 함수를 인수로 받는 함수(고차함수)도 존재합니다. 함수를 미리 정의하는 것 외에, 이와 같은 고차함수를 즉석으로 설정할 수 있습니다."
more-details: "자세한 설명"
title: "제목"
url: "페이지 URL"
summary: "페이지 요약"
alignCenter: "가운데 정렬"
hide-title-when-pinned: "프로필에 고정할 때 타이틀을 표시하지 않음"
hideTitleWhenPinned: "프로필에 고정해놓은 경우 타이틀을 표시하지 않음"
font: "폰트"
fontSerif: "명조체"
fontSansSerif: "고딕체"
set-eye-catching-image: "아이캐치 이미지를 설정"
remove-eye-catching-image: "아이캐치 이미지 삭제"
eyeCatchingImageSet: "아이캐치 이미지를 설정"
eyeCatchingImageRemove: "아이캐치 이미지 삭제"
chooseBlock: "블록 추가"
selectType: "종류 선택"
enterVariableName: "변수명을 지정해주세요"
the-variable-name-is-already-used: "해당 변수명은 이미 사용중입니다"
content-blocks: "컨텐츠"
input-blocks: "입력"
special-blocks: "특수"
post-from-post-form: "이 내용을 올리기"
posted-from-post-form: "게시하였습니다"
variableNameIsAlreadyUsed: "해당 변수명은 이미 사용중입니다"
contentBlocks: "콘텐츠"
inputBlocks: "입력"
specialBlocks: "특수"
blocks:
text: "텍스트"
textarea: "텍스트 영역"

View file

@ -35,6 +35,8 @@ unpin: "取消置顶"
copyContent: "复制内容"
copyLink: "复制链接"
delete: "删除"
deleteAndEdit: "删除和编辑"
deleteAndEditConfirm: "要删除此帖并再次编辑吗?对此帖的所有回应,转推和回复也将被删除。"
addToList: "添加至列表"
sendMessage: "发送"
copyUsername: "复制用户名"
@ -86,7 +88,6 @@ add: "添加"
reaction: "反应"
reactionSettingDescription: "选择您想要固定在反应选择器中的反应。"
rememberNoteVisibility: "记录公开范围"
renameFile: "重命名文件"
attachCancel: "删除附件"
markAsSensitive: "阅读注意"
unmarkAsSensitive: "取消标记为敏感内容"
@ -116,6 +117,7 @@ loginFailed: "登录失败"
showOnRemote: "转到所在实例显示"
general: "常规设置"
wallpaper: "壁纸"
setWallpaper: "设置壁纸"
removeWallpaper: "移除壁纸"
searchWith: "搜索:{q}"
youHaveNoLists: "列表为空"
@ -204,10 +206,13 @@ messaging: "聊天"
upload: "上传"
fromDrive: "从网盘中"
fromUrl: "从 URL"
uploadFromUrl: "从网址上传"
uploadFromUrlDescription: "要上传的文件的URL"
uploadFromUrlRequested: "请求上传"
uploadFromUrlMayTakeTime: "上传完成可能需要一些时间。"
explore: "发现"
games: "Misskey游戏"
messageRead: "已读"
recentUsedEmojis: "最近使用的Emoji表情"
noMoreHistory: "没有更多的历史记录"
startMessaging: "开始聊天"
nUsersRead: "{n}人已读"
@ -223,17 +228,30 @@ yearsOld: "{age}岁"
registeredDate: "注册于"
location: "位置"
theme: "主题"
themeForLightMode: "在轻便模式下使用的主题"
themeForDarkMode: "在黑暗模式下使用的主题"
light: "轻便"
dark: "黑暗"
lightThemes: "亮色主题"
darkThemes: "暗色主题"
syncDeviceDarkMode: "将黑暗模式与设备设置同步"
drive: "网盘"
fileName: "文件名称"
selectFile: "选择文件"
selectFiles: "选择文件"
renameFolder: "重命名文件夹"
renameFile: "重命名文件"
folderName: "文件夹名称"
createFolder: "创建文件夹"
renameFolder: "重命名文件夹"
deleteFolder: "删除文件夹"
addFile: "添加文件"
emptyDrive: "驱动器为空"
emptyFolder: "空文件夹"
unableToDelete: "无法删除"
inputNewFileName: "请输入新文件名"
inputNewFolderName: "请输入新文件名"
circularReferenceFolder: "目标文件夹是您要移动的文件夹的子文件夹。"
hasChildFilesOrFolders: "此文件夹不为空,无法删除。"
copyUrl: "复制链接"
rename: "重命名"
avatar: "头像"
@ -387,13 +405,14 @@ strongPassword: "密码强度:强"
passwordMatched: "密码一致"
passwordNotMatched: "密码不一致"
signinWith: "以{x}登录"
signinFailed: "无法登录。请检查您的用户名和密码。"
tapSecurityKey: "点击安全密钥"
or: "或者"
uiLanguage: "显示语言"
groupInvited: "群组招待"
aboutX: "关于 {x}"
useOsNativeEmojis: "使用OS原生Emoji"
noGroups: "没有组"
youHaveNoGroups: "没有组"
joinOrCreateGroup: "加入或者创建群组"
noHistory: "没有历史记录"
disableAnimatedMfm: "禁用MFM动画"
@ -445,6 +464,8 @@ none: "空"
volume: "音量"
details: "详情"
chooseEmoji: "选择表情符号"
unableToProcess: "操作无法完成"
recentUsed: "最近使用"
_sfx:
note: "帖子"
noteMy: "我的笔记"
@ -651,45 +672,39 @@ _pages:
newPage: "创建页面"
editPage: "编辑页面"
readPage: "查看源"
page-created: "页面已创建"
page-updated: "页面已更新"
name-already-exists: "该页面URL已存在"
title-invalid-name: "无效的页面URL"
text-invalid-name: "请确认该项不为空"
created: "页面已创建"
updated: "页面已更新"
deleted: "该页面已被删除"
nameAlreadyExists: "该页面URL已存在"
invalidNameTitle: "无效的页面URL"
invalidNameText: "请确认该项不为空"
editThisPage: "编辑此页面"
viewSource: "查看源代码"
viewPage: "查看页面"
like: "赞"
unlike: "取消赞"
liked-pages: "喜欢的页面"
my-pages: "我的页面"
my: "我的页面"
liked: "喜欢的页面"
inspector: "检查器"
content: "页面内容"
variables: "变量"
variables-info: "您可以使用变量创建动态页面。在文本中通过<b>{变量名}</b>的写法来嵌入变量值。例如在文本<b>Hello { thing } world!</b>中,如果变量(thing)的值为<b>ai</b>,那么该文本会成为<b>Hello ai world!</b>。"
variables-info2: "因为变量的计算(计算变量值)是从上到下执行的,所以不能在变量中引用下面的变量。例如从上到下依次定义了<b>ABC</b>3个变量那么<b>C</b>中可以引用<b>A</b>或<b>B</b>,但是<b>A</b>无法引用<b>B</b>或<b>C</b>。"
variables-info3: "为了接收来自用户的输入,页面上设有“用户输入”块,在“变量名称”中设置要在其中保存输入值的变量名(变量会自动创建)。您可以使用该变量执行操作以响应用户输入。"
variables-info4: "通过使用函数,您可以将数值计算过程组合成可重用的形式。要创建函数,需要创建一个“函数”类型的变量。你可以将函数设定为槽函数(参数)的格式槽函数的值可作为函数中的变量使用。另外AiScript标准中还有一些函数会将函数作为参数(称为高阶函数)。\n除了已经预先定义的函数外您也可以将它们设置为这些高阶函数的槽函数。"
more-details: "详细说明"
title: "标题"
url: "页面URL"
summary: "页面摘要"
alignCenter: "居中"
hide-title-when-pinned: "置顶时隐藏标题"
hideTitleWhenPinned: "置顶时隐藏标题"
font: "字体"
fontSerif: "衬线字体"
fontSansSerif: "无衬线字体"
set-eye-catching-image: "设置封面图片"
remove-eye-catching-image: "删除封面图片"
eyeCatchingImageSet: "设置封面图片"
eyeCatchingImageRemove: "删除封面图片"
chooseBlock: "添加块"
selectType: "选择类型"
enterVariableName: "请输入变量名"
the-variable-name-is-already-used: "变量名已使用"
content-blocks: "内容"
input-blocks: "输入"
special-blocks: "特殊"
post-from-post-form: "发布此内容"
posted-from-post-form: "已发布"
variableNameIsAlreadyUsed: "变量名已使用"
contentBlocks: "内容"
inputBlocks: "输入"
specialBlocks: "特殊"
blocks:
text: "文本"
textarea: "文本区域"

View file

@ -82,7 +82,6 @@ sensitive: "敏感內容"
add: "新增"
reaction: "反應"
rememberNoteVisibility: "記住筆記隱私設定"
renameFile: "重新命名檔案"
attachCancel: "移除附件"
markAsSensitive: "標記為敏感內容"
unmarkAsSensitive: "取消標記為敏感內容"
@ -175,7 +174,6 @@ fromUrl: "從URL"
explore: "探索"
games: "Misskey 遊戲"
messageRead: "已讀"
recentUsedEmojis: "最近使用的表情符號"
noMoreHistory: "沒有更多歷史紀錄"
startMessaging: "開始傳送訊息"
nUsersRead: "{n}人已讀"
@ -193,8 +191,9 @@ darkThemes: "灰暗主題"
drive: "雲端硬碟"
selectFile: "選擇檔案"
selectFiles: "選擇檔案"
renameFolder: "重新命名資料夾"
renameFile: "重新命名檔案"
createFolder: "新增資料夾"
renameFolder: "重新命名資料夾"
deleteFolder: "刪除資料夾"
addFile: "添加檔案"
emptyDrive: "雲端硬碟為空"

View file

@ -1,7 +1,7 @@
{
"name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.23.0",
"version": "12.24.0",
"codename": "indigo",
"repository": {
"type": "git",

View file

@ -43,7 +43,6 @@
<button class="item _button account" @click="openAccountMenu" v-if="$store.getters.isSignedIn">
<mk-avatar :user="$store.state.i" class="avatar"/><mk-acct class="text" :user="$store.state.i"/>
</button>
<div class="divider"></div>
<button class="item _button index active" @click="top()" v-if="$route.name === 'index'">
<fa :icon="faHome" fixed-width/><span class="text">{{ $store.getters.isSignedIn ? $t('timeline') : $t('home') }}</span>
</button>
@ -164,7 +163,6 @@ import { v4 as uuid } from 'uuid';
import i18n from './i18n';
import { host, instanceName } from './config';
import { search } from './scripts/search';
import { isDeviceDarkmode } from './scripts/is-device-darkmode';
import MkToast from './components/toast.vue';
const DESKTOP_THRESHOLD = 1100;
@ -225,10 +223,6 @@ export default Vue.extend({
},
created() {
if (this.$store.state.device.syncDeviceDarkMode) {
this.$store.commit('device/set', { key: 'darkMode', value: isDeviceDarkmode() });
}
if (this.$store.getters.isSignedIn) {
this.connection = this.$root.stream.useSharedConnection('main');
this.connection.on('notification', this.onNotification);
@ -622,12 +616,12 @@ export default Vue.extend({
.mk-app {
$header-height: 60px;
$nav-width: 250px;
$nav-icon-only-width: 74px;
$nav-icon-only-width: 80px;
$main-width: 650px;
$ui-font-size: 1em;
$nav-icon-only-threshold: 1300px;
$nav-hide-threshold: 700px;
$side-hide-threshold: 1100px;
$nav-hide-threshold: 650px;
$side-hide-threshold: 1070px;
min-height: 100vh;
box-sizing: border-box;
@ -822,8 +816,6 @@ export default Vue.extend({
z-index: 1001;
width: $nav-width;
height: 100vh;
padding: 16px 0;
padding-bottom: calc(3.7rem + 24px);
box-sizing: border-box;
overflow: auto;
background: var(--navBg);
@ -836,13 +828,21 @@ export default Vue.extend({
@media (max-width: $nav-icon-only-threshold) and (min-width: $nav-hide-threshold + 1px) {
width: $nav-icon-only-width;
padding: 8px 0;
padding-bottom: calc(3.7rem + 24px);
> .divider {
margin: 8px auto;
width: calc(100% - 32px);
}
> .item {
&:first-child {
margin-bottom: 8px;
}
&:last-child {
margin-top: 8px;
}
}
}
> .item {
@ -892,15 +892,25 @@ export default Vue.extend({
color: var(--navActive);
}
&:last-child {
position: fixed;
bottom: 0;
width: inherit;
&:first-child {
position: sticky;
z-index: 1;
top: 0;
padding-top: 8px;
padding-bottom: 8px;
margin-bottom: 16px;
background: var(--navBg);
border-bottom: solid 1px var(--divider);
}
&:last-child {
position: sticky;
bottom: 0;
padding-top: 8px;
padding-bottom: 8px;
margin-top: 16px;
background: var(--navBg);
border-top: solid 1px var(--divider);
border-right: solid 1px var(--divider);
}
@media (max-width: $nav-icon-only-threshold) and (min-width: $nav-hide-threshold + 1px) {

BIN
src/client/assets/unread.svg (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -38,13 +38,6 @@ import Vue from 'vue';
import * as tinycolor from 'tinycolor2';
export default Vue.extend({
props: {
smooth: {
type: Boolean,
default: false
}
},
data() {
return {
now: new Date(),
@ -83,9 +76,6 @@ export default Vue.extend({
return tinycolor(this.computedStyle.getPropertyValue('--accent')).toHexString();
},
ms(): number {
return this.now.getMilliseconds() * (this.smooth ? 1 : 0);
},
s(): number {
return this.now.getSeconds();
},
@ -97,13 +87,13 @@ export default Vue.extend({
},
hAngle(): number {
return Math.PI * (this.h % 12 + (this.m + (this.s + this.ms / 1000) / 60) / 60) / 6;
return Math.PI * (this.h % 12 + (this.m + this.s / 60) / 60) / 6;
},
mAngle(): number {
return Math.PI * (this.m + (this.s + this.ms / 1000) / 60) / 30;
return Math.PI * (this.m + this.s / 60) / 30;
},
sAngle(): number {
return Math.PI * (this.s + this.ms / 1000) / 30;
return Math.PI * this.s / 30;
},
graduations(): any {
@ -121,7 +111,7 @@ export default Vue.extend({
const update = () => {
if (this.enabled) {
this.tick();
requestAnimationFrame(update);
setTimeout(update, 1000);
}
};
update();

View file

@ -13,7 +13,7 @@
import Vue from 'vue';
import { faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons';
import { url as local } from '../config';
import XUrlPreview from './url-preview-popup.vue';
import MkUrlPreview from './url-preview-popup.vue';
export default Vue.extend({
props: {
@ -44,7 +44,7 @@ export default Vue.extend({
if (!document.body.contains(this.$el)) return;
if (this.preview) return;
this.preview = new XUrlPreview({
this.preview = new MkUrlPreview({
parent: this,
propsData: {
url: this.url,

View file

@ -49,7 +49,7 @@
<x-media-list :media-list="appearNote.files"/>
</div>
<x-poll v-if="appearNote.poll" :note="appearNote" ref="pollViewer"/>
<x-url-preview v-for="url in urls" :url="url" :key="url" :compact="true" class="url-preview"/>
<mk-url-preview v-for="url in urls" :url="url" :key="url" :compact="true" class="url-preview"/>
<div class="renote" v-if="appearNote.renote"><x-note-preview :note="appearNote.renote"/></div>
</div>
</div>
@ -97,7 +97,7 @@ import XReactionsViewer from './reactions-viewer.vue';
import XMediaList from './media-list.vue';
import XCwButton from './cw-button.vue';
import XPoll from './poll.vue';
import XUrlPreview from './url-preview.vue';
import MkUrlPreview from './url-preview.vue';
import MkReactionPicker from './reaction-picker.vue';
import pleaseLogin from '../scripts/please-login';
import { focusPrev, focusNext } from '../scripts/focus';
@ -115,7 +115,7 @@ export default Vue.extend({
XMediaList,
XCwButton,
XPoll,
XUrlPreview,
MkUrlPreview,
},
props: {

View file

@ -1,19 +1,19 @@
<template>
<div class="fgmtyycl _panel" :style="{ top: top + 'px', left: left + 'px' }">
<x-url-preview :url="url"/>
<mk-url-preview :url="url"/>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../i18n';
import XUrlPreview from './url-preview.vue';
import MkUrlPreview from './url-preview.vue';
export default Vue.extend({
i18n,
components: {
XUrlPreview
MkUrlPreview
},
props: {

View file

@ -23,7 +23,7 @@ import Vue from 'vue';
import { faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons';
import { toUnicode as decodePunycode } from 'punycode';
import { url as local } from '../config';
import XUrlPreview from './url-preview-popup.vue';
import MkUrlPreview from './url-preview-popup.vue';
export default Vue.extend({
props: {
@ -70,7 +70,7 @@ export default Vue.extend({
if (!document.body.contains(this.$el)) return;
if (this.preview) return;
this.preview = new XUrlPreview({
this.preview = new MkUrlPreview({
parent: this,
propsData: {
url: this.url,

View file

@ -144,6 +144,12 @@ os.init(async () => {
}
}, false)
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', mql => {
if (os.store.state.device.syncDeviceDarkMode) {
os.store.commit('device/set', { key: 'darkMode', value: mql.matches });
}
});
if ('Notification' in window && os.store.getters.isSignedIn) {
// 許可を得ていなかったらリクエスト
if (Notification.permission === 'default') {

View file

@ -42,10 +42,10 @@
<script lang="ts">
import Vue from 'vue';
import { faUser, faUsers, faComments, faPlus } from '@fortawesome/free-solid-svg-icons';
import i18n from '../i18n';
import getAcct from '../../misc/acct/render';
import MkButton from '../components/ui/button.vue';
import MkUserSelect from '../components/user-select.vue';
import i18n from '../../i18n';
import getAcct from '../../../misc/acct/render';
import MkButton from '../../components/ui/button.vue';
import MkUserSelect from '../../components/user-select.vue';
export default Vue.extend({
i18n,

View file

@ -27,14 +27,14 @@ import Vue from 'vue';
import { faPaperPlane, faPhotoVideo, faLaughSquint } from '@fortawesome/free-solid-svg-icons';
import insertTextAtCursor from 'insert-text-at-cursor';
import * as autosize from 'autosize';
import i18n from '../i18n';
import { formatTimeString } from '../../misc/format-time-string';
import { selectFile } from '../scripts/select-file';
import i18n from '../../i18n';
import { formatTimeString } from '../../../misc/format-time-string';
import { selectFile } from '../../scripts/select-file';
export default Vue.extend({
i18n,
components: {
XUploader: () => import('../components/uploader.vue').then(m => m.default),
XUploader: () => import('../../components/uploader.vue').then(m => m.default),
},
props: {
user: {
@ -221,7 +221,7 @@ export default Vue.extend({
},
async insertEmoji(ev) {
const vm = this.$root.new(await import('../components/emoji-picker.vue').then(m => m.default), {
const vm = this.$root.new(await import('../../components/emoji-picker.vue').then(m => m.default), {
source: ev.currentTarget || ev.target
}).$once('chosen', emoji => {
insertTextAtCursor(this.$refs.text, emoji);

View file

@ -21,7 +21,7 @@
</div>
</div>
<div></div>
<mk-url-preview v-for="url in urls" :url="url" :key="url"/>
<mk-url-preview v-for="url in urls" :url="url" :key="url" style="margin: 8px 0;"/>
<footer>
<template v-if="isGroup">
<span class="read" v-if="message.reads.length > 0">{{ $t('messageRead') }} {{ message.reads.length }}</span>
@ -38,12 +38,16 @@
<script lang="ts">
import Vue from 'vue';
import i18n from '../i18n';
import { parse } from '../../mfm/parse';
import { unique } from '../../prelude/array';
import i18n from '../../i18n';
import { parse } from '../../../mfm/parse';
import { unique } from '../../../prelude/array';
import MkUrlPreview from '../../components/url-preview.vue';
export default Vue.extend({
i18n,
components: {
MkUrlPreview
},
props: {
message: {
required: true
@ -223,10 +227,6 @@ export default Vue.extend({
}
}
> .mk-url-preview {
margin: 8px 0;
}
> footer {
display: block;
margin: 2px 0 0 0;

View file

@ -37,12 +37,12 @@
<script lang="ts">
import Vue from 'vue';
import { faArrowCircleDown, faFlag, faUsers, faInfoCircle } from '@fortawesome/free-solid-svg-icons';
import i18n from '../i18n';
import XList from '../components/date-separated-list.vue';
import i18n from '../../i18n';
import XList from '../../components/date-separated-list.vue';
import XMessage from './messaging-room.message.vue';
import XForm from './messaging-room.form.vue';
import { url } from '../config';
import parseAcct from '../../misc/acct/parse';
import { url } from '../../config';
import parseAcct from '../../../misc/acct/parse';
export default Vue.extend({
i18n,

View file

@ -3,6 +3,8 @@
<portal to="icon"><fa :icon="faCog"/></portal>
<portal to="title">{{ $t('clinetSettings') }}</portal>
<router-link v-if="$store.getters.isSignedIn" class="_panel _buttonPrimary" to="/my/settings" style="margin-bottom: var(--margin);">{{ $t('accountSettings') }}</router-link>
<x-theme/>
<section class="_card">

View file

@ -31,9 +31,9 @@ export const router = new VueRouter({
{ path: '/my/favorites', component: page('favorites') },
{ path: '/my/messages', component: page('messages') },
{ path: '/my/mentions', component: page('mentions') },
{ path: '/my/messaging', name: 'messaging', component: page('messaging') },
{ path: '/my/messaging/:user', component: page('messaging-room') },
{ path: '/my/messaging/group/:group', component: page('messaging-room') },
{ path: '/my/messaging', name: 'messaging', component: page('messaging/index') },
{ path: '/my/messaging/:user', component: page('messaging/messaging-room') },
{ path: '/my/messaging/group/:group', component: page('messaging/messaging-room') },
{ path: '/my/drive', name: 'drive', component: page('drive') },
{ path: '/my/drive/folder/:folder', component: page('drive') },
{ path: '/my/pages', name: 'pages', component: page('pages') },

View file

@ -1,3 +1,3 @@
export function isDeviceDarkmode() {
return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
return window.matchMedia('(prefers-color-scheme: dark)').matches;
}

View file

@ -292,7 +292,7 @@ main ._panel {
box-shadow: 0 1px 0 0 var(--divider), 0 -1px 0 0 var(--divider);
}
._panel._button {
.__panelButton {
display: flex;
width: 100%;
min-height: 48px;
@ -300,6 +300,24 @@ main ._panel {
justify-content: center;
}
._panel._button {
@extend .__panelButton;
}
._panel._buttonPrimary {
@extend .__panelButton;
color: var(--accent);
background: var(--panel);
&:not(:disabled):hover {
background: var(--panel);
}
&:not(:disabled):active {
background: var(--panel);
}
}
._card {
@extend ._panel;