Compare commits

..

6 Commits

Author SHA1 Message Date
c3a73a41d1 12.59.0 2020-11-18 13:06:32 +09:00
b72baa3295 New Crowdin updates (#6841)
* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

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

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

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Russian)

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

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

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

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Ukrainian)

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

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

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

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

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (French)
2020-11-18 12:40:40 +09:00
73ce22c8a4 Update dependencies 🚀 2020-11-18 12:19:11 +09:00
c4f7e6659f Improve reaction picker 2020-11-18 12:09:14 +09:00
0739ae006d Improve usability 2020-11-18 11:21:35 +09:00
eaa92e784d Resolve #6840 2020-11-17 22:52:07 +09:00
20 changed files with 384 additions and 71 deletions

View File

@ -380,6 +380,7 @@ smtpHost: "المضيف"
smtpUser: "اسم المستخدم"
smtpPass: "الكلمة السرية"
display: "المظهر"
public: "للعامة"
_mfm:
mention: "أشر الى"
quote: "اقتبس"

View File

@ -95,6 +95,7 @@ sensitive: "NSFW"
add: "Hinzufügen"
reaction: "Reaktionen"
reactionSettingDescription: "Gib deine Lieblingsreaktionen ein, um sie der Reaktionsauswahl hinzuzufügen."
reactionSettingDescription2: "Ziehen zum Reorganisieren, Klicken zum Löschen."
rememberNoteVisibility: "Notizsichtbarkeit merken"
attachCancel: "Anhang entfernen"
markAsSensitive: "Als NSFW markieren"
@ -315,6 +316,8 @@ bannerUrl: "Banner-URL"
basicInfo: "Basisdaten"
pinnedUsers: "Angepinnte Benutzer"
pinnedUsersDescription: "Gib einen Benutzernamen pro Zeile ein. Diese werden im \"Erkunden\" Tab angezeigt."
pinnedPages: "Angepinnte Seiten"
pinnedPagesDescription: "Gib hier die Pfäde zu den Seiten an, die du an die Spitze dieser Instanz anheften möchtest, getrennt durch neue Zeilen."
hcaptcha: "hCaptcha"
enableHcaptcha: "hCaptcha aktivieren"
hcaptchaSiteKey: "Site key"
@ -543,6 +546,8 @@ deck: "Deck"
undeck: "Deck verlassen"
useBlurEffectForModal: "Weichzeichnungseffekt für Modals verwenden"
useFullReactionPicker: "Vollständige Reaktionsauswahl nutzen"
width: "Breite"
height: "Höhe"
generateAccessToken: "Zugriffstoken generieren"
permission: "Berechtigungen"
enableAll: "Alle aktivieren"
@ -605,6 +610,11 @@ random: "Zufällig"
system: "System"
switchUi: "UI wechseln"
desktop: "Desktop"
clip: "Clip"
createNew: "Neu erstellen"
optional: "Optional"
createNewClip: "Neuen Clip erstellen"
public: "Öffentlich"
_mfm:
cheatSheet: "MFM Spickzettel"
intro: "MFM ist eine an vielen Stellen verwendbare und Misskey-exklusive Markup-Sprache. Hier kannst du eine Liste von verfügbarer MFM-Syntax anschauen."
@ -1070,6 +1080,7 @@ _pages:
created: "Seite erfolgreich erstellt"
updated: "Seite erfolgreich aktualisiert"
deleted: "Seite erfolgreich gelöscht"
pageSetting: "Seiteneinstellungen"
nameAlreadyExists: "Die angegebene Seiten-URL existiert bereits"
invalidNameTitle: "Die angegebene Seiten-URL ist ungültig"
invalidNameText: "Überprüfe, ob der Seitentitel nicht leer ist"
@ -1080,6 +1091,7 @@ _pages:
unlike: "\"Gefällt mir\" entfernen"
my: "Meine Seiten"
liked: "Seiten, die mir gefallen"
featured: "Beliebt"
inspector: "Inspektor"
contents: "Inhalt"
content: "Inhalt"
@ -1105,7 +1117,7 @@ _pages:
text: "Text"
textarea: "Textfeld"
section: "Abschnitt"
image: "Bilder"
image: "Bild"
button: "Knopf"
if: "Falls"
_if:
@ -1120,7 +1132,7 @@ _pages:
name: "Variablenname"
text: "Titel"
default: "Standardwert"
textareaInput: "Eingabe des mehrzeiligen Textfelds"
textareaInput: "Mehrzeiliges Texteingabefeld"
_textareaInput:
name: "Variablenname"
text: "Titel"
@ -1135,6 +1147,11 @@ _pages:
id: "Leinwand-ID"
width: "Breite"
height: "Höhe"
note: "Eingebettete Notiz"
_note:
id: "Notiz ID"
idDescription: "Du kannst alternativ auch die Notiz-URL angeben."
detailed: "Detailierte Ansicht"
switch: "Fallunterscheidung"
_switch:
name: "Variablenname"

View File

@ -95,6 +95,7 @@ sensitive: "NSFW"
add: "Add"
reaction: "Reaction"
reactionSettingDescription: "Assign your favorite reactions which want to pin in reaction picker."
reactionSettingDescription2: "Drag to reorganize, click to delete."
rememberNoteVisibility: "Remember note visibility settings"
attachCancel: "Remove attachment"
markAsSensitive: "Mark as NSFW"
@ -315,6 +316,8 @@ bannerUrl: "Banner image URL"
basicInfo: "Basic info"
pinnedUsers: "Pinned user"
pinnedUsersDescription: "List one username per line. Users listed here will be pinned under \"Explore\" tab."
pinnedPages: "Pinned pages"
pinnedPagesDescription: "Enter the paths of the pages you want to pin to the top page of this instance, separated by new lines."
hcaptcha: "hCaptcha"
enableHcaptcha: "Enable hCaptcha"
hcaptchaSiteKey: "Site key"
@ -543,6 +546,8 @@ deck: "Deck"
undeck: "Leave Deck"
useBlurEffectForModal: "Use blur effect for modals"
useFullReactionPicker: "Use full-size reaction picker"
width: "Width"
height: "Height"
generateAccessToken: "Generate access token"
permission: "Permissions"
enableAll: "Enable all"
@ -605,6 +610,11 @@ random: "Random"
system: "System"
switchUi: "Switch UI"
desktop: "Desktop"
clip: "Clip"
createNew: "Create new"
optional: "Optional"
createNewClip: "Create new clip"
public: "Public"
_mfm:
cheatSheet: "MFM Cheatsheet"
intro: "MFM is a Misskey-exclusive markup language that can be used in many places. Here you can view a list of all available MFM syntax."
@ -1070,6 +1080,7 @@ _pages:
created: "Successfully created a page!"
updated: "Successfully updated the page!"
deleted: "The page has been deleted"
pageSetting: "Page settings"
nameAlreadyExists: "The specified page URL already exists"
invalidNameTitle: "The specified page URL is invalid"
invalidNameText: "Check whether that is not a blank"
@ -1080,6 +1091,7 @@ _pages:
unlike: "Undo like"
my: "My pages"
liked: "Liked pages"
featured: "Featured"
inspector: "Inspector"
contents: "Content"
content: "Page block"
@ -1135,6 +1147,11 @@ _pages:
id: "Canvas ID"
width: "Width"
height: "Height"
note: "Embedded note"
_note:
id: "Note ID"
idDescription: "You can also paste the Note's URL to set it instead."
detailed: "Detailed view"
switch: "Switch"
_switch:
name: "Variable name"

View File

@ -542,6 +542,8 @@ deck: "Deck"
undeck: "Quitar deck"
useBlurEffectForModal: "Usar efecto borroso en modales"
useFullReactionPicker: "Reacción"
width: "Ancho"
height: "Altura"
generateAccessToken: "Generar token de acceso"
permission: "Permisos"
enableAll: "Activar todo"
@ -604,6 +606,7 @@ random: "Aleatorio"
system: "Sistema"
switchUi: "Cambiar interfaz de usuario"
desktop: "Escritorio"
public: "Público"
_mfm:
cheatSheet: "Hoja de referencia de MFM"
intro: "MFM es un lenguaje de marcado dedicado que se puede usar en varios lugares dentro de Misskey. Aquí puede ver una lista de sintaxis disponibles en MFM."

View File

@ -538,6 +538,8 @@ pluginInstallWarn: "Ninstallez que des extensions provenant de sources de con
deck: "Deck"
undeck: "Quitter le deck"
useBlurEffectForModal: "Utiliser un effet de flou pour les modals"
width: "Largeur"
height: "Hauteur"
generateAccessToken: "Générer un jeton d'accès"
permission: "Autorisations "
enableAll: "Tout activer"
@ -581,6 +583,7 @@ setMultipleBySeparatingWithSpace: "Vous pouvez définir plus dun, séparés p
fileIdOrUrl: "ID du fichier ou URL"
chatOpenBehavior: "Comportement de la fenêtre de discussion lors de son ouverture"
random: "Aléatoire"
public: "Public"
_mfm:
mention: "Mentionner"
hashtag: "Hashtags"

View File

@ -546,6 +546,11 @@ deck: "デッキ"
undeck: "デッキ解除"
useBlurEffectForModal: "モーダルにぼかし効果を使用"
useFullReactionPicker: "フル機能リアクションピッカーを使用"
width: "幅"
height: "高さ"
large: "大"
medium: "中"
small: "小"
generateAccessToken: "アクセストークンの発行"
permission: "権限"
enableAll: "全て有効にする"

View File

@ -524,6 +524,8 @@ plugins: "플러그인"
pluginInstallWarn: "신뢰할 수 없는 플러그인은 설치하지 마십시오."
deck: "덱"
undeck: "덱 해제"
width: "폭"
height: "높이"
generateAccessToken: "액세스 토큰 생성"
permission: "권한"
enableAll: "전체 선택"
@ -549,6 +551,7 @@ logs: "로그"
database: "데이터베이스"
channel: "채널"
random: "랜덤"
public: "공개"
_mfm:
mention: "멘션"
hashtag: "해시태그"

View File

@ -95,6 +95,7 @@ sensitive: "Содержимое не для всех"
add: "Добавить"
reaction: "Реакции"
reactionSettingDescription: "Подберите, что будет у вас в палитре реакций"
reactionSettingDescription2: "Меняйте порядок перетаскиванием. Удаляйте нажатием."
rememberNoteVisibility: "Запоминать видимость заметок"
attachCancel: "Удалить вложение"
markAsSensitive: "Отметить как «не для всех»"
@ -315,6 +316,8 @@ bannerUrl: "Ссылка на изображение в шапке"
basicInfo: "Общая информация"
pinnedUsers: "Прикреплённый пользователь"
pinnedUsersDescription: "Перечислите по одному имени пользователя в строке. Пользователи, перечисленные здесь, будут привязаны к закладке \"Изучение\"."
pinnedPages: "Закрепленные страницы"
pinnedPagesDescription: "Если хотите закрепить страницы на главной сайта, сюда можно добавить пути к ним, каждый в отдельной строке."
hcaptcha: "hCaptcha"
enableHcaptcha: "Включить hCaptcha"
hcaptchaSiteKey: "Ключ сайта"
@ -543,6 +546,8 @@ deck: "Пульт"
undeck: "Покинуть пульт"
useBlurEffectForModal: "Размывка под формой поверх всего"
useFullReactionPicker: "Полнофункциональный выбор реакций"
width: "Ширина"
height: "Высота"
generateAccessToken: "Создать токен доступа"
permission: "Разрешения"
enableAll: "Включить все"
@ -605,6 +610,11 @@ random: "Случайные"
system: "Система"
switchUi: "Выбор вида"
desktop: "Стол"
clip: "Памятки"
createNew: "Новый документ"
optional: "Необязательно"
createNewClip: "Новая памятка"
public: "Общедоступно"
_mfm:
cheatSheet: "Подсказка по разметке MFM"
intro: "MFM — язык оформления текста, придуманный специально для Misskey, который здесь можно много где использовать. На этой странице собраны и кратко изложены способы его применения."
@ -815,10 +825,10 @@ _time:
_tutorial:
title: "Как пользоваться Misskey"
step1_1: "Добро пожаловать!"
step1_2: "Эта страница называется «лента». Здесь будут появляться ваши «заметки» и тех, на кого вы «подписаны», и располагаться в порядке времени их появления."
step1_2: "Эта страница называется «лента». Здесь будут появляться «заметки»: ваши личные и тех, на кого вы «подписаны». Они будут располагаться в порядке времени их появления."
step1_3: "Правда, ваша лента пока пуста. Она начнёт заполняться, когда вы будете писать свои заметки и подписываться на других."
step2_1: "Давайте, сначала заполним профиль, прежде чем начать писать заметки и подписываться на других."
step2_2: "То, что вы расскажете в профиле, поможет многим лучше вас узнать, а значит, им будет легче присоединиться к вам — подписаться и читать заметки."
step2_1: "Давайте, заполним профиль, прежде чем начать писать заметки и подписываться на других."
step2_2: "То, что вы расскажете в профиле, поможет лучше вас узнать, а значит, многим будет легче присоединиться — вы скорее получите новых подписчиков и читателей."
step3_1: "Успешно заполнили профиль?"
step3_2: "Что ж, теперь самое время опубликуовать заметку. Если нажать вверху страницы на изображение карандаша, появится форма для текста."
step3_3: "Напишите в неё, что хотите, и нажмите на кнопку в правом верхнем углу."
@ -826,11 +836,11 @@ _tutorial:
step4_1: "С написанием первой заметки покончено?"
step4_2: "Отлично, теперь она должна появиться в вашей ленте."
step5_1: "А теперь самое время немного оживить ленту, подписавшись на других."
step5_2: "На странице «{featured}» собраны популярные сегодня заметки, читая которые, вы можете найти кого-то вам интересного, а на «{explore}» можно посмотреть, кто популярен у остальных."
step5_2: "На странице «{featured}» собраны популярные сегодня заметки, читая которые, вы можете найти кого-то вам интересного, а на странице «{explore}» можно посмотреть, кто популярен у остальных."
step5_3: "Чтобы подписаться на кого-нибудь, щёлкните по его аватару и в открывшемся профиле нажмите кнопку «Подписаться»."
step5_4: "Некоторые пользователи (около их имени «висит замок») вручную подтверждают чужие подписки. Так что иногда подписка начинает работать не сразу.\n"
step6_1: "Если теперь в ленте видны и чужие заметки, значит у вас получилось."
step6_2: "Можете ставить «реакции» чужим заметкам, чтобы непринуждённо выразить свои чувства к ним."
step6_2: "Здесь можно непринуждённо выразить свои чувства к чьей-то заметке, отметив «реакцию» под ней."
step6_3: "Отмечайте реакции, нажмая на символ «+» под заметкой и выбирая значок по душе."
step7_1: "На этом вводный урок по использованию Misskey закончен. Спасибо, что прошли его до конца!"
step7_2: "Хотите изучить Misskey глубже — добро пожаловать в раздел «{help}»."
@ -1070,6 +1080,7 @@ _pages:
created: "Страница успешно создана."
updated: "Страница успешно обновлена."
deleted: "Страница успешно удалена."
pageSetting: "Настройки страницы"
nameAlreadyExists: "Указанный адрес страницы уже существует."
invalidNameTitle: "Указанный адрес страницы недопустим."
invalidNameText: "Проверьте, что не оставили поле пустым."
@ -1080,6 +1091,7 @@ _pages:
unlike: "Отменить «нравится»"
my: "Свои страницы"
liked: "Понравившиеся страницы"
featured: "Популярные"
inspector: "Инспектор"
contents: "Содержательные"
content: "Содержимое"
@ -1135,6 +1147,11 @@ _pages:
id: "Метка холста"
width: "Ширина"
height: "Высота"
note: "Встроенная заметка"
_note:
id: "Идентификатор заметки"
idDescription: "Можно также вставить ссылку на заметку."
detailed: "Подробный вид"
switch: "Выключатель"
_switch:
name: "Имя переменной"

View File

@ -141,7 +141,7 @@ latestRequestReceivedAt: "Останній запит прийнято"
latestStatus: "Останній статус"
storageUsage: "Використання простіру"
charts: "Графіки"
perHour: "Щогодини"
perHour: "Щогодинно"
perDay: "Щоденно"
stopActivityDelivery: "Припинити розсилання активності"
blockThisInstance: "Заблокувати цей інстанс"
@ -261,7 +261,7 @@ monthX: "{month}"
yearX: "{year}"
pages: "Сторінки"
integration: "Інтеграція"
connectSerice: "Під’єднатися"
connectSerice: "Під’єднати"
disconnectSerice: "Відключитися"
enableLocalTimeline: "Увімкнути локальну стрічку"
enableGlobalTimeline: "Увімкнути глобальну стрічку"
@ -371,8 +371,10 @@ fontSize: "Розмір шрифту"
noFollowRequests: "Немає запитів на підписку"
dashboard: "Панель приладів"
local: "Локальні"
remote: "Віддалений"
remote: "Віддалені"
total: "Всього"
weekOverWeekChanges: "За тиждень"
dayOverDayChanges: "За добу"
appearance: "Вигляд"
clientSettings: "Налаштування клієнта"
accountSettings: "Налаштування акаунта"
@ -380,6 +382,7 @@ promotion: "Просування"
promote: "Просунути"
numberOfDays: "Кількість днів"
hideThisNote: "Сховати цей допис"
showFeaturedNotesInTimeline: "Показувати рекомендовані дописи у стрічці"
objectStorageBaseUrl: "Base URL"
objectStorageBucket: "Bucket"
objectStoragePrefix: "Prefix"
@ -389,25 +392,66 @@ objectStorageUseSSL: "Використовувати SSL"
objectStorageUseProxy: "Використовувати Proxy"
deleteAll: "Видалити все"
newNoteRecived: "Є нові дописи"
sounds: "Звук"
sounds: "Звуки"
listen: "Слухати"
none: "Відсутній"
showInPage: "Показати на сторінці"
popout: "Розгорнути"
volume: "Гучність"
install: "Інсталювати"
details: "Детальніше"
chooseEmoji: "Виберіть емодзі"
recentUsed: "Нещодавні"
install: "Встановити"
uninstall: "Видалити"
installedApps: "Встановлені аплікації"
nothing: "Тут нічого немає"
installedDate: "Дата встановлення"
lastUsedDate: "Дата використання"
state: "Стан"
sort: "Сортування"
ascendingOrder: "За зростанням"
descendingOrder: "За спаданням"
scratchpad: "Чернетка"
output: "Вихід"
script: "Скрипт"
deleteAllFiles: "Видалити всі файли"
deleteAllFilesConfirm: "Ви дійсно хочете видалити всі файли?"
removeAllFollowing: "Скасувати всі підписки"
sidebar: "Бокова панель"
addItem: "Додати елемент"
rooms: "Кімнати"
relays: "Ретранслятори"
addRelay: "Додати ретранслятор"
addedRelays: "Додані ретранслятори"
deletedNote: "Допис видалено"
visibility: "Видимість"
poll: "Опитування"
expandTweet: "Розгорнути твіт"
themeEditor: "Редактор тем"
description: "Опис"
author: "Автор"
manage: "Управління"
plugins: "Плагіни"
generateAccessToken: "Згенерувати токен доступу"
permission: "Права"
enableAll: "Ввімкути все"
disableAll: "Вимкнути все"
tokenRequested: "Надати доступ до акаунту"
notificationType: "Тип сповіщення"
edit: "Редагувати"
useStarForReactionFallback: "Використовувати ★ як запасний варіант, якщо емодзі реакції невідомий"
emailConfig: "Налаштування email сервера"
email: "E-mail адреса"
smtpHost: "Хост"
smtpPort: "Порт"
smtpUser: "Ім'я користувача"
smtpPass: "Пароль"
testEmail: "Тестовий email"
wordMute: "Ігнор слів"
copy: "Скопіювати"
metrics: "Показники"
database: "База даних"
channel: "Канал"
regenerateLoginToken: "Оновити Login Token"
_mfm:
cheatSheet: " Довідка MFM"
@ -476,11 +520,17 @@ _pages:
arg1: "Списки"
_listLen:
arg1: "Списки"
_fn:
arg1: "Вихід"
types:
array: "Списки"
_relayStatus:
requesting: "Очікує затвердження"
accepted: "Затверджено"
rejected: "Відхилено"
_notification:
youRenoted: "{name} поширив(ла) ваш допис"
youWereFollowed: "У вас новий підписник"
youWereFollowed: "Новий підписник"
_types:
follow: "Підписки"
mention: "Згадка"

View File

@ -95,6 +95,7 @@ sensitive: "阅读注意"
add: "添加"
reaction: "回应"
reactionSettingDescription: "选择您想要置顶的回应。"
reactionSettingDescription2: "通过拖动来重新排列。单击即可删除。"
rememberNoteVisibility: "记录公开范围"
attachCancel: "删除附件"
markAsSensitive: "阅读注意"
@ -315,6 +316,8 @@ bannerUrl: "Banner URL"
basicInfo: "基本信息"
pinnedUsers: "置顶用户"
pinnedUsersDescription: "在「发现」页面中使用换行标记想要置顶的用户。"
pinnedPages: "固定页面"
pinnedPagesDescription: "输入您要固定到实例首页的页面路径,以换行符分隔。"
hcaptcha: "hCaptcha"
enableHcaptcha: "启用 hCaptcha"
hcaptchaSiteKey: "网站密钥"
@ -543,6 +546,8 @@ deck: "Deck"
undeck: "取消Deck"
useBlurEffectForModal: "模态框使用模糊效果"
useFullReactionPicker: "使用全功能的回应工具栏"
width: "宽度"
height: "高度"
generateAccessToken: "生成访问令牌"
permission: "权限"
enableAll: "启用全部"
@ -605,6 +610,11 @@ random: "随机"
system: "系统"
switchUi: "切换界面"
desktop: "桌面"
clip: "片段"
createNew: "新建"
optional: "可选"
createNewClip: "新建片段"
public: "公开"
_mfm:
cheatSheet: "MFM代码速查表"
intro: "MFM是一种在Misskey中的各个位置使用的专用标记语言。在这里您可以看到MFM中可用的语法列表。"
@ -1070,6 +1080,7 @@ _pages:
created: "页面已创建"
updated: "页面已更新"
deleted: "该页面已被删除"
pageSetting: "页面设置"
nameAlreadyExists: "该页面URL已存在"
invalidNameTitle: "无效的页面URL"
invalidNameText: "请确认该项不为空"
@ -1080,6 +1091,7 @@ _pages:
unlike: "取消赞"
my: "我的页面"
liked: "喜欢的页面"
featured: "热门"
inspector: "检查器"
contents: "内容"
content: "页面内容"
@ -1135,6 +1147,11 @@ _pages:
id: "画布ID"
width: "宽度"
height: "高度"
note: "嵌入的帖子"
_note:
id: "帖子ID"
idDescription: "您也可以通过粘贴帖子的URL来进行设置。"
detailed: "显示详细信息"
switch: "开关"
_switch:
name: "变量名"

View File

@ -519,6 +519,8 @@ plugins: "插件"
pluginInstallWarn: "請不要安裝來源不明的插件。"
deck: "多欄模式"
undeck: "取消多欄模式"
width: "寬度"
height: "高度"
permission: "權限"
enableAll: "啟用全部"
disableAll: "停用全部"
@ -558,6 +560,7 @@ send: "發送"
openInNewTab: "在新分頁中開啟"
random: "隨機"
system: "系統"
public: "公開"
_mfm:
mention: "提及"
hashtag: "#tag"

View File

@ -1,7 +1,7 @@
{
"name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.58.0",
"version": "12.59.0",
"codename": "indigo",
"repository": {
"type": "git",
@ -242,7 +242,7 @@
"vue": "3.0.2",
"vue-color": "2.7.1",
"vue-draggable-next": "1.0.8",
"vue-i18n": "9.0.0-beta.6",
"vue-i18n": "9.0.0-beta.7",
"vue-json-pretty": "1.7.1",
"vue-loader": "16.0.0-beta.8",
"vue-prism-editor": "1.2.2",
@ -252,7 +252,7 @@
"vuex": "4.0.0-rc.1",
"vuex-persistedstate": "3.1.0",
"web-push": "3.4.4",
"webpack": "5.4.0",
"webpack": "5.5.0",
"webpack-cli": "4.2.0",
"websocket": "1.0.32",
"ws": "7.3.1",

View File

@ -1,6 +1,6 @@
<template>
<MkModal ref="modal" :src="src" @click="$refs.modal.close()" @closed="$emit('closed')">
<div class="omfetrab _popup" :class="{ compact }">
<div class="omfetrab _popup" :class="['w' + width, 'h' + height, { big }]">
<input ref="search" class="search" :class="{ filled: q != null && q != '' }" v-model.trim="q" :placeholder="$t('search')" @paste.stop="paste" @keyup.enter="done()">
<div class="emojis">
<section class="result">
@ -99,6 +99,7 @@ import { faHeart, faFlag, faLaugh } from '@fortawesome/free-regular-svg-icons';
import MkModal from '@/components/ui/modal.vue';
import Particle from '@/components/particle.vue';
import * as os from '@/os';
import { isDeviceTouch } from '../scripts/is-device-touch';
export default defineComponent({
components: {
@ -113,7 +114,7 @@ export default defineComponent({
required: false,
default: true
},
compact: {
asReactionPicker: {
required: false
},
},
@ -125,6 +126,9 @@ export default defineComponent({
emojilist: markRaw(emojilist),
getStaticImageUrl,
pinned: this.$store.state.settings.reactions,
width: this.asReactionPicker ? this.$store.state.device.reactionPickerWidth : 3,
height: this.asReactionPicker ? this.$store.state.device.reactionPickerHeight : 2,
big: this.asReactionPicker ? isDeviceTouch : false,
customEmojiCategories: this.$store.getters['instance/emojiCategories'],
customEmojis: this.$store.state.instance.meta.emojis,
visibleCategories: {},
@ -315,8 +319,7 @@ export default defineComponent({
},
mounted() {
const isIos = navigator.userAgent.includes('WebKit') && !navigator.userAgent.includes('Chrome');
if (!isIos) {
if (!os.isMobile) {
this.$refs.search.focus({
preventScroll: true
});
@ -386,18 +389,39 @@ export default defineComponent({
<style lang="scss" scoped>
.omfetrab {
$eachSize: 40px;
$pad: 8px;
--eachSize: 40px;
display: flex;
flex-direction: column;
width: ($eachSize * 7) + ($pad * 2);
contain: content;
--height: 300px;
&.compact {
width: ($eachSize * 5) + ($pad * 2);
--height: 210px;
&.big {
--eachSize: 44px;
}
&.w1 {
width: calc((var(--eachSize) * 5) + (#{$pad} * 2));
}
&.w2 {
width: calc((var(--eachSize) * 6) + (#{$pad} * 2));
}
&.w3 {
width: calc((var(--eachSize) * 7) + (#{$pad} * 2));
}
&.h1 {
--height: calc((var(--eachSize) * 4) + (#{$pad} * 2));
}
&.h2 {
--height: calc((var(--eachSize) * 6) + (#{$pad} * 2));
}
&.h3 {
--height: calc((var(--eachSize) * 8) + (#{$pad} * 2));
}
> .search {
@ -461,8 +485,8 @@ export default defineComponent({
> button {
position: relative;
padding: 0;
width: $eachSize;
height: $eachSize;
width: var(--eachSize);
height: var(--eachSize);
border-radius: 4px;
&:focus {

View File

@ -0,0 +1,152 @@
<template>
<MkModal ref="modal" @click="$refs.modal.close()" @closed="$emit('closed')">
<div class="szkkfdyq _popup">
<div class="main">
<template v-for="item in items">
<button v-if="item.action" class="_button" @click="$event => { item.action($event); close(); }">
<Fa :icon="item.icon" class="icon"/>
<div class="text">{{ item.text }}</div>
<i v-if="item.indicate"><Fa :icon="faCircle"/></i>
</button>
<MkA v-else :to="item.to" @click.passive="close()">
<Fa :icon="item.icon" class="icon"/>
<div class="text">{{ item.text }}</div>
<i v-if="item.indicate"><Fa :icon="faCircle"/></i>
</MkA>
</template>
</div>
<div class="sub">
<MkA to="/docs" @click.passive="close()">
<Fa :icon="faQuestionCircle" class="icon"/>
<div class="text">{{ $t('help') }}</div>
</MkA>
<MkA to="/about" @click.passive="close()">
<Fa :icon="faInfoCircle" class="icon"/>
<div class="text">{{ $t('aboutX', { x: instanceName }) }}</div>
</MkA>
<MkA to="/about-misskey" @click.passive="close()">
<Fa :icon="faInfoCircle" class="icon"/>
<div class="text">{{ $t('aboutMisskey') }}</div>
</MkA>
</div>
</div>
</MkModal>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { faQuestionCircle, faInfoCircle, faCircle } from '@fortawesome/free-solid-svg-icons';
import MkModal from '@/components/ui/modal.vue';
import { sidebarDef } from '@/sidebar';
import { instanceName } from '@/config';
export default defineComponent({
components: {
MkModal,
},
emits: ['closed'],
data() {
return {
menuDef: sidebarDef,
items: [],
instanceName,
faQuestionCircle, faInfoCircle, faCircle,
};
},
computed: {
menu(): string[] {
return this.$store.state.deviceUser.menu;
},
},
created() {
this.items = Object.keys(this.menuDef).filter(k => !this.menu.includes(k)).map(k => this.menuDef[k]).filter(def => def.show == null ? true : def.show).map(def => ({
type: def.to ? 'link' : 'button',
text: this.$t(def.title),
icon: def.icon,
to: def.to,
action: def.action,
indicate: def.indicated,
}));
},
methods: {
close() {
this.$refs.modal.close();
}
}
});
</script>
<style lang="scss" scoped>
.szkkfdyq {
width: 100%;
max-height: 100%;
max-width: 800px;
padding: 32px;
box-sizing: border-box;
overflow: auto;
text-align: center;
border-radius: 16px;
@media (max-width: 500px) {
padding: 16px;
}
> .main, > .sub {
> * {
position: relative;
display: inline-flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 128px;
height: 128px;
border-radius: var(--radius);
@media (max-width: 500px) {
width: 100px;
height: 100px;
}
&:hover {
background: rgba(0, 0, 0, 0.05);
text-decoration: none;
}
> .icon {
font-size: 26px;
}
> .text {
margin-top: 8px;
font-size: 0.9em;
line-height: 1.5em;
}
> i {
position: absolute;
top: 32px;
left: 32px;
color: var(--indicator);
font-size: 8px;
animation: blink 1s infinite;
@media (max-width: 500px) {
top: 16px;
left: 16px;
}
}
}
}
> .sub {
margin-top: 8px;
padding-top: 8px;
border-top: solid 1px var(--divider);
}
}
</style>

View File

@ -500,7 +500,7 @@ export default defineComponent({
this.blur();
os.popup(import('@/components/emoji-picker.vue'), {
src: this.$refs.reactButton,
compact: !this.$store.state.device.useFullReactionPicker
asReactionPicker: true
}, {
done: reaction => {
if (reaction) {

View File

@ -45,7 +45,7 @@
import { defineComponent } from 'vue';
import { faGripVertical, faChevronLeft, faHashtag, faBroadcastTower, faFireAlt, faEllipsisH, faPencilAlt, faBars, faTimes, faSearch, faUserCog, faCog, faUser, faHome, faStar, faCircle, faAt, faListUl, faPlus, faUserClock, faUsers, faTachometerAlt, faExchangeAlt, faGlobe, faChartBar, faCloud, faServer, faInfoCircle, faQuestionCircle, faProjectDiagram, faStream, faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
import { faBell, faEnvelope, faLaugh, faComments } from '@fortawesome/free-regular-svg-icons';
import { host, instanceName } from '@/config';
import { host } from '@/config';
import { search } from '@/scripts/search';
import * as os from '@/os';
import { sidebarDef } from '@/sidebar';
@ -223,30 +223,8 @@ export default defineComponent({
},
more(ev) {
const items = Object.keys(this.menuDef).filter(k => !this.menu.includes(k)).map(k => this.menuDef[k]).filter(def => def.show == null ? true : def.show).map(def => ({
type: def.to ? 'link' : 'button',
text: this.$t(def.title),
icon: def.icon,
to: def.to,
action: def.action,
indicate: def.indicated,
}));
os.modalMenu([...items, null, {
type: 'link',
text: this.$t('help'),
to: '/docs',
icon: faQuestionCircle,
}, {
type: 'link',
text: this.$t('aboutX', { x: instanceName }),
to: '/about',
icon: faInfoCircle,
}, {
type: 'link',
text: this.$t('aboutMisskey'),
to: '/about-misskey',
icon: faInfoCircle,
}], ev.currentTarget || ev.target);
os.popup(import('./launch-pad.vue'), {}, {
}, 'closed');
},
addAcount() {

View File

@ -43,7 +43,7 @@ export default defineComponent({
});
</script>
<style lang="scss" scoped>
<style lang="scss">
.novjtcto {
margin: 32px 0;

View File

@ -13,7 +13,18 @@
</template>
</XDraggable>
<div class="_caption" style="padding: 8px;">{{ $t('reactionSettingDescription2') }} <button class="_textButton" @click="chooseEmoji">{{ $t('chooseEmoji') }}</button></div>
<MkSwitch v-model:value="useFullReactionPicker">{{ $t('useFullReactionPicker') }}</MkSwitch>
<MkRadios v-model="reactionPickerWidth">
<template #desc>{{ $t('width') }}</template>
<option :value="1">{{ $t('small') }}</option>
<option :value="2">{{ $t('medium') }}</option>
<option :value="3">{{ $t('large') }}</option>
</MkRadios>
<MkRadios v-model="reactionPickerHeight">
<template #desc>{{ $t('height') }}</template>
<option :value="1">{{ $t('small') }}</option>
<option :value="2">{{ $t('medium') }}</option>
<option :value="3">{{ $t('large') }}</option>
</MkRadios>
</div>
<div class="_footer">
<MkButton inline @click="preview"><Fa :icon="faEye"/> {{ $t('preview') }}</MkButton>
@ -31,6 +42,7 @@ import { VueDraggableNext } from 'vue-draggable-next';
import MkInput from '@/components/ui/input.vue';
import MkButton from '@/components/ui/button.vue';
import MkSwitch from '@/components/ui/switch.vue';
import MkRadios from '@/components/ui/radios.vue';
import { emojiRegexWithCustom } from '../../../misc/emoji-regex';
import { defaultSettings } from '@/store';
import * as os from '@/os';
@ -40,6 +52,7 @@ export default defineComponent({
MkInput,
MkButton,
MkSwitch,
MkRadios,
XDraggable: VueDraggableNext,
},
@ -61,6 +74,14 @@ export default defineComponent({
get() { return this.$store.state.device.useFullReactionPicker; },
set(value) { this.$store.commit('device/set', { key: 'useFullReactionPicker', value: value }); }
},
reactionPickerWidth: {
get() { return this.$store.state.device.reactionPickerWidth; },
set(value) { this.$store.commit('device/set', { key: 'reactionPickerWidth', value: value }); }
},
reactionPickerHeight: {
get() { return this.$store.state.device.reactionPickerHeight; },
set(value) { this.$store.commit('device/set', { key: 'reactionPickerHeight', value: value }); }
},
},
watch: {
@ -92,7 +113,7 @@ export default defineComponent({
preview(ev) {
os.popup(import('@/components/emoji-picker.vue'), {
compact: !this.$store.state.device.useFullReactionPicker,
asReactionPicker: true,
src: ev.currentTarget || ev.target,
}, {}, 'closed');
},

View File

@ -78,6 +78,8 @@ export const defaultDeviceSettings = {
enableInfiniteScroll: true,
useBlurEffectForModal: true,
useFullReactionPicker: false,
reactionPickerWidth: 1,
reactionPickerHeight: 1,
sidebarDisplay: 'full', // full, icon, hide
instanceTicker: 'remote', // none, remote, always
roomGraphicsQuality: 'medium',

View File

@ -9076,16 +9076,16 @@ source-map-url@^0.4.0:
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
source-map@^0.5.6, source-map@~0.5.1:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
source-map@^0.7.3, source-map@~0.7.2:
version "0.7.3"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
@ -10390,12 +10390,12 @@ vue-eslint-parser@^7.1.1:
esquery "^1.0.1"
lodash "^4.17.15"
vue-i18n@9.0.0-beta.6:
version "9.0.0-beta.6"
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.0.0-beta.6.tgz#ea89cee5ade18f2a2d0f2ead0ac4a6bedccade6e"
integrity sha512-6WWNumUYOnoFi50szUxhxNjTntWlL3SSb6DCoDQW3aKIGK6xTKj9bLI1gnSPfFn54dTYlJtzxEHuY8C/kvm7kg==
vue-i18n@9.0.0-beta.7:
version "9.0.0-beta.7"
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.0.0-beta.7.tgz#f6fad5b4be218018aab4797f80dd2a95ee5236f9"
integrity sha512-hFl0XnV91P/4UyWvHYvdYxuk3GRnKIW9zXAm6hrUU4mOIwpqchi7jVQva2TJLr52Mpsu4zYXmzL1h5pgrKmCfQ==
dependencies:
source-map "^0.6.1"
source-map "0.6.1"
vue-json-pretty@1.7.1:
version "1.7.1"
@ -10545,10 +10545,10 @@ webpack-sources@^2.1.1:
source-list-map "^2.0.1"
source-map "^0.6.1"
webpack@5.4.0:
version "5.4.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.4.0.tgz#4fdc6ec8a0ff9160701fb8f2eb8d06b33ecbae0f"
integrity sha512-udpYTyqz8toTTdaOsL2QKPLeZLt2IEm9qY7yTXuFEQhKu5bk0yQD9BtAdVQksmz4jFbbWOiWmm3NHarO0zr/ng==
webpack@5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.5.0.tgz#250b3fdc1d876c7e58269d1406e7f9790af04f06"
integrity sha512-gyr7VE8zXJP81ZvS8+5dDphS2kaE0r8bpVWX6SxkBlzlX3hYfBS96kaltuf2cYK/BKJlUw5Aex/fKC34HUn+hA==
dependencies:
"@types/eslint-scope" "^3.7.0"
"@types/estree" "^0.0.45"