Revert "refactor(client): Use v-t for i18n"

This reverts commit 9c30b23358.
This commit is contained in:
syuilo 2020-07-25 01:56:52 +09:00
parent da874f3383
commit 166bc19131
108 changed files with 459 additions and 459 deletions

View file

@ -1,16 +1,16 @@
<template>
<div class="znqjceqz">
<portal to="title" v-t="'aboutMisskey'"></portal>
<portal to="title">{{ $t('aboutMisskey') }}</portal>
<section class="_card">
<div class="_title" v-t="'aboutMisskey'"></div>
<div class="_title">{{ $t('aboutMisskey') }}</div>
<div class="_content" style="text-align: center;">
<img src="/assets/icons/512.png" alt="" style="display: block; width: 100px; margin: 0 auto; border-radius: 16px;"/>
<div style="margin-top: 0.75em;">Misskey</div>
<div style="opacity: 0.5;">v{{ version }}</div>
</div>
<div class="_content">
<div style="margin-bottom: 1em;" v-t="'aboutMisskeyText'"></div>
<div style="margin-bottom: 1em;">{{ $t('aboutMisskeyText') }}</div>
<div>🛠 {{ $t('misskeyMembers') }}</div>
<ul class="members">
<li><mk-link url="https://github.com/syuilo" class="at">@syuilo</mk-link></li>
@ -53,7 +53,7 @@
<li>nenohi</li>
<li>Eduardo Quiros</li>
</ul>
<span v-t="'morePatrons'"></span>
<span>{{ $t('morePatrons') }}</span>
</div>
</section>
</div>

View file

@ -1,7 +1,7 @@
<template>
<div class="mmnnbwxb">
<portal to="icon"><fa :icon="faInfoCircle"/></portal>
<portal to="title" v-t="'about'"></portal>
<portal to="title">{{ $t('about') }}</portal>
<section class="_card info" v-if="meta">
<div class="_title"><fa :icon="faInfoCircle"/> {{ $t('instanceInfo') }}</div>
@ -9,7 +9,7 @@
<div v-html="meta.description"></div>
</div>
<div class="_content table">
<div><b v-t="'administrator'"></b><span>{{ meta.maintainerName }}</span></div>
<div><b>{{ $t('administrator') }}</b><span>{{ meta.maintainerName }}</span></div>
<div><b></b><span>{{ meta.maintainerEmail }}</span></div>
</div>
<div class="_content table">

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faBroadcastTower"/></portal>
<portal to="title" v-t="'announcements'"></portal>
<portal to="title">{{ $t('announcements') }}</portal>
<mk-pagination :pagination="pagination" #default="{items}" class="ruryvtyk" ref="list">
<section class="_card announcement" v-for="(announcement, i) in items" :key="announcement.id">

View file

@ -1,13 +1,13 @@
<template>
<div>
<portal to="icon"><fa :icon="faPlug"/></portal>
<portal to="title" v-t="'installedApps'"></portal>
<portal to="title">{{ $t('installedApps') }}</portal>
<mk-pagination :pagination="pagination" class="bfomjevm" ref="list">
<template #empty>
<div class="_fullinfo">
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
<div v-t="'nothing'"></div>
<div>{{ $t('nothing') }}</div>
</div>
</template>
<template #default="{items}">
@ -28,7 +28,7 @@
<button class="_button" @click="revoke(token)"><fa :icon="faTrashAlt"/></button>
</div>
<details>
<summary v-t="'details'"></summary>
<summary>{{ $t('details') }}</summary>
<ul>
<li v-for="p in token.permission" :key="p">{{ $t(`_permissions.${p}`) }}</li>
</ul>

View file

@ -17,10 +17,10 @@
<div class="accepted _panel" v-if="state == 'accepted'">
<h1>{{ session.app.isAuthorized ? this.$t('already-authorized') : this.$t('allowed') }}</h1>
<p v-if="session.app.callbackUrl">{{ $t('_auth.callback') }}<mk-ellipsis/></p>
<p v-if="!session.app.callbackUrl" v-t="'_auth.pleaseGoBack'"></p>
<p v-if="!session.app.callbackUrl">{{ $t('_auth.pleaseGoBack') }}</p>
</div>
<div class="error _panel" v-if="state == 'fetch-session-error'">
<p v-t="'error'"></p>
<p>{{ $t('error') }}</p>
</div>
</div>
<div class="signin" v-else>

View file

@ -8,7 +8,7 @@
<div v-html="body" class="qyqbqfal"></div>
</div>
<div class="_footer">
<mk-link :url="`https://github.com/syuilo/misskey/blob/master/src/docs/${doc}.ja-JP.md`" class="at" v-t="'docSource'"></mk-link>
<mk-link :url="`https://github.com/syuilo/misskey/blob/master/src/docs/${doc}.ja-JP.md`" class="at">{{ $t('docSource') }}</mk-link>
</div>
</main>
</div>

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faQuestionCircle"/></portal>
<portal to="title" v-t="'help'"></portal>
<portal to="title">{{ $t('help') }}</portal>
<main class="_card">
<div class="_content">
<ul>

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faHashtag"/></portal>
<portal to="title" v-t="'explore'"></portal>
<portal to="title">{{ $t('explore') }}</portal>
<div class="localfedi7 _panel" v-if="meta && stats && tag == null" :style="{ backgroundImage: meta.bannerUrl ? `url(${meta.bannerUrl})` : null }">
<header><span>{{ $t('explore', { host: meta.name || 'Misskey' }) }}</span></header>
@ -24,7 +24,7 @@
</template>
<div class="localfedi7 _panel" v-if="tag == null" :style="{ backgroundImage: `url(/assets/fedi.jpg)`, marginTop: 'var(--margin)' }">
<header><span v-t="'exploreFediverse'"></span></header>
<header><span>{{ $t('exploreFediverse') }}</span></header>
</div>
<mk-container :body-togglable="true" :expanded="false" ref="tags">

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faStar"/></portal>
<portal to="title" v-t="'favorites'"></portal>
<portal to="title">{{ $t('favorites') }}</portal>
<x-notes :pagination="pagination" :detail="true" :extract="items => items.map(item => item.note)" @before="before()" @after="after()"/>
</div>
</template>

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faFireAlt"/></portal>
<portal to="title" v-t="'featured'"></portal>
<portal to="title">{{ $t('featured') }}</portal>
<x-notes ref="notes" :pagination="pagination" @before="before" @after="after"/>
</div>
</template>

View file

@ -1,13 +1,13 @@
<template>
<div>
<portal to="icon"><fa :icon="faUserClock"/></portal>
<portal to="title" v-t="'followRequests'"></portal>
<portal to="title">{{ $t('followRequests') }}</portal>
<mk-pagination :pagination="pagination" class="mk-follow-requests" ref="list">
<template #empty>
<div class="_fullinfo">
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
<div v-t="'noFollowRequests'"></div>
<div>{{ $t('noFollowRequests') }}</div>
</div>
</template>
<template #default="{items}">

View file

@ -2,45 +2,45 @@
<div class="_card tbkwesmv">
<div class="_title"><fa :icon="faInfoCircle"/> {{ $t('_tutorial.title') }}</div>
<div class="_content" v-if="tutorial === 0">
<div v-t="'_tutorial.step1_1'"></div>
<div v-t="'_tutorial.step1_2'"></div>
<div v-t="'_tutorial.step1_3'"></div>
<div>{{ $t('_tutorial.step1_1') }}</div>
<div>{{ $t('_tutorial.step1_2') }}</div>
<div>{{ $t('_tutorial.step1_3') }}</div>
</div>
<div class="_content" v-else-if="tutorial === 1">
<div v-t="'_tutorial.step2_1'"></div>
<div v-t="'_tutorial.step2_2'"></div>
<router-link class="_link" to="/my/settings" v-t="'editProfile'"></router-link>
<div>{{ $t('_tutorial.step2_1') }}</div>
<div>{{ $t('_tutorial.step2_2') }}</div>
<router-link class="_link" to="/my/settings">{{ $t('editProfile') }}</router-link>
</div>
<div class="_content" v-else-if="tutorial === 2">
<div v-t="'_tutorial.step3_1'"></div>
<div v-t="'_tutorial.step3_2'"></div>
<div v-t="'_tutorial.step3_3'"></div>
<small v-t="'_tutorial.step3_4'"></small>
<div>{{ $t('_tutorial.step3_1') }}</div>
<div>{{ $t('_tutorial.step3_2') }}</div>
<div>{{ $t('_tutorial.step3_3') }}</div>
<small>{{ $t('_tutorial.step3_4') }}</small>
</div>
<div class="_content" v-else-if="tutorial === 3">
<div v-t="'_tutorial.step4_1'"></div>
<div v-t="'_tutorial.step4_2'"></div>
<div>{{ $t('_tutorial.step4_1') }}</div>
<div>{{ $t('_tutorial.step4_2') }}</div>
</div>
<div class="_content" v-else-if="tutorial === 4">
<div v-t="'_tutorial.step5_1'"></div>
<div>{{ $t('_tutorial.step5_1') }}</div>
<i18n path="_tutorial.step5_2" tag="div">
<router-link class="_link" place="featured" to="/featured" v-t="'featured'"></router-link>
<router-link class="_link" place="explore" to="/explore" v-t="'explore'"></router-link>
<router-link class="_link" place="featured" to="/featured">{{ $t('featured') }}</router-link>
<router-link class="_link" place="explore" to="/explore">{{ $t('explore') }}</router-link>
</i18n>
<div v-t="'_tutorial.step5_3'"></div>
<small v-t="'_tutorial.step5_4'"></small>
<div>{{ $t('_tutorial.step5_3') }}</div>
<small>{{ $t('_tutorial.step5_4') }}</small>
</div>
<div class="_content" v-else-if="tutorial === 5">
<div v-t="'_tutorial.step6_1'"></div>
<div v-t="'_tutorial.step6_2'"></div>
<div v-t="'_tutorial.step6_3'"></div>
<div>{{ $t('_tutorial.step6_1') }}</div>
<div>{{ $t('_tutorial.step6_2') }}</div>
<div>{{ $t('_tutorial.step6_3') }}</div>
</div>
<div class="_content" v-else-if="tutorial === 6">
<div v-t="'_tutorial.step7_1'"></div>
<div>{{ $t('_tutorial.step7_1') }}</div>
<i18n path="_tutorial.step7_2" tag="div">
<router-link class="_link" place="help" to="/docs" v-t="'help'"></router-link>
<router-link class="_link" place="help" to="/docs">{{ $t('help') }}</router-link>
</i18n>
<div v-t="'_tutorial.step7_3'"></div>
<div>{{ $t('_tutorial.step7_3') }}</div>
</div>
<div class="_footer navigation">

View file

@ -14,7 +14,7 @@
</button>
</portal>
<div class="new" v-if="queue > 0" :style="{ width: width + 'px' }"><button class="_buttonPrimary" @click="top()" v-t="'newNoteRecived'"></button></div>
<div class="new" v-if="queue > 0" :style="{ width: width + 'px' }"><button class="_buttonPrimary" @click="top()">{{ $t('newNoteRecived') }}</button></div>
<x-tutorial class="tutorial" v-if="$store.state.settings.tutorial != -1"/>

View file

@ -6,7 +6,7 @@
<h1 class="name" v-html="meta.name || host"></h1>
<div class="desc" v-html="meta.description || $t('introMisskey')"></div>
<mk-button @click="signup()" style="display: inline-block; margin-right: 16px;" primary>{{ $t('signup') }}</mk-button>
<mk-button @click="signin()" style="display: inline-block;" v-t="'login'"></mk-button>
<mk-button @click="signin()" style="display: inline-block;">{{ $t('login') }}</mk-button>
</div>
</div>
<x-notes :pagination="featuredPagination"/>

View file

@ -2,14 +2,14 @@
<form class="mk-setup" @submit.prevent="submit()">
<h1>Welcome to Misskey!</h1>
<div>
<p v-t="'intro'"></p>
<p>{{ $t('intro') }}</p>
<mk-input v-model="username" pattern="^[a-zA-Z0-9_]{1,20}$" spellcheck="false" required>
<span v-t="'username'"></span>
<span>{{ $t('username') }}</span>
<template #prefix>@</template>
<template #suffix>@{{ host }}</template>
</mk-input>
<mk-input v-model="password" type="password">
<span v-t="'password'"></span>
<span>{{ $t('password') }}</span>
<template #prefix><fa :icon="faLock"/></template>
</mk-input>
<footer>

View file

@ -1,18 +1,18 @@
<template>
<div class="ztgjmzrw">
<portal to="icon"><fa :icon="faBroadcastTower"/></portal>
<portal to="title" v-t="'announcements'"></portal>
<portal to="title">{{ $t('announcements') }}</portal>
<mk-button @click="add()" primary style="margin: 0 auto 16px auto;"><fa :icon="faPlus"/> {{ $t('add') }}</mk-button>
<section class="_card announcements">
<div class="_content announcement" v-for="announcement in announcements">
<mk-input v-model="announcement.title">
<span v-t="'title'"></span>
<span>{{ $t('title') }}</span>
</mk-input>
<mk-textarea v-model="announcement.text">
<span v-t="'text'"></span>
<span>{{ $t('text') }}</span>
</mk-textarea>
<mk-input v-model="announcement.imageUrl">
<span v-t="'imageUrl'"></span>
<span>{{ $t('imageUrl') }}</span>
</mk-input>
<p v-if="announcement.reads">{{ $t('nUsersRead', { n: announcement.reads }) }}</p>
<div class="buttons">

View file

@ -1,13 +1,13 @@
<template>
<div class="mk-instance-emojis">
<portal to="icon"><fa :icon="faLaugh"/></portal>
<portal to="title" v-t="'customEmojis'"></portal>
<portal to="title">{{ $t('customEmojis') }}</portal>
<section class="_card local">
<div class="_title"><fa :icon="faLaugh"/> {{ $t('customEmojis') }}</div>
<div class="_content">
<mk-pagination :pagination="pagination" class="emojis" ref="emojis">
<template #empty><span v-t="'noCustomEmojis'"></span></template>
<template #empty><span>{{ $t('noCustomEmojis') }}</span></template>
<template #default="{items}">
<div class="emoji" v-for="(emoji, i) in items" :key="emoji.id" @click="selected = emoji" :class="{ selected: selected && (selected.id === emoji.id) }">
<img :src="emoji.url" class="img" :alt="emoji.name"/>
@ -23,9 +23,9 @@
</mk-pagination>
</div>
<div class="_content" v-if="selected">
<mk-input v-model="name"><span v-t="'name'"></span></mk-input>
<mk-input v-model="category" :datalist="categories"><span v-t="'category'"></span></mk-input>
<mk-input v-model="aliases"><span v-t="'tags'"></span></mk-input>
<mk-input v-model="name"><span>{{ $t('name') }}</span></mk-input>
<mk-input v-model="category" :datalist="categories"><span>{{ $t('category') }}</span></mk-input>
<mk-input v-model="aliases"><span>{{ $t('tags') }}</span></mk-input>
<mk-button inline primary @click="update"><fa :icon="faSave"/> {{ $t('save') }}</mk-button>
<mk-button inline :disabled="selected == null" @click="del()"><fa :icon="faTrashAlt"/> {{ $t('delete') }}</mk-button>
</div>
@ -36,9 +36,9 @@
<section class="_card remote">
<div class="_title"><fa :icon="faLaugh"/> {{ $t('customEmojisOfRemote') }}</div>
<div class="_content">
<mk-input v-model="host" :debounce="true"><span v-t="'host'"></span></mk-input>
<mk-input v-model="host" :debounce="true"><span>{{ $t('host') }}</span></mk-input>
<mk-pagination :pagination="remotePagination" class="emojis" ref="remoteEmojis">
<template #empty><span v-t="'noCustomEmojis'"></span></template>
<template #empty><span>{{ $t('noCustomEmojis') }}</span></template>
<template #default="{items}">
<div class="emoji" v-for="(emoji, i) in items" :key="emoji.id" @click="selectedRemote = emoji" :class="{ selected: selectedRemote && (selectedRemote.id === emoji.id) }">
<img :src="emoji.url" class="img" :alt="emoji.name"/>

View file

@ -5,11 +5,11 @@
<div class="table info">
<div class="row">
<div class="cell">
<div class="label" v-t="'software'"></div>
<div class="label">{{ $t('software') }}</div>
<div class="data">{{ instance.softwareName || '?' }}</div>
</div>
<div class="cell">
<div class="label" v-t="'version'"></div>
<div class="label">{{ $t('version') }}</div>
<div class="data">{{ instance.softwareVersion || '?' }}</div>
</div>
</div>
@ -70,24 +70,24 @@
</div>
<div class="chart">
<div class="header">
<span class="label" v-t="'charts'"></span>
<span class="label">{{ $t('charts') }}</span>
<div class="selects">
<mk-select v-model="chartSrc" style="margin: 0; flex: 1;">
<option value="requests" v-t="'_instanceCharts.requests'"></option>
<option value="users" v-t="'_instanceCharts.users'"></option>
<option value="users-total" v-t="'_instanceCharts.usersTotal'"></option>
<option value="notes" v-t="'_instanceCharts.notes'"></option>
<option value="notes-total" v-t="'_instanceCharts.notesTotal'"></option>
<option value="ff" v-t="'_instanceCharts.ff'"></option>
<option value="ff-total" v-t="'_instanceCharts.ffTotal'"></option>
<option value="drive-usage" v-t="'_instanceCharts.cacheSize'"></option>
<option value="drive-usage-total" v-t="'_instanceCharts.cacheSizeTotal'"></option>
<option value="drive-files" v-t="'_instanceCharts.files'"></option>
<option value="drive-files-total" v-t="'_instanceCharts.filesTotal'"></option>
<option value="requests">{{ $t('_instanceCharts.requests') }}</option>
<option value="users">{{ $t('_instanceCharts.users') }}</option>
<option value="users-total">{{ $t('_instanceCharts.usersTotal') }}</option>
<option value="notes">{{ $t('_instanceCharts.notes') }}</option>
<option value="notes-total">{{ $t('_instanceCharts.notesTotal') }}</option>
<option value="ff">{{ $t('_instanceCharts.ff') }}</option>
<option value="ff-total">{{ $t('_instanceCharts.ffTotal') }}</option>
<option value="drive-usage">{{ $t('_instanceCharts.cacheSize') }}</option>
<option value="drive-usage-total">{{ $t('_instanceCharts.cacheSizeTotal') }}</option>
<option value="drive-files">{{ $t('_instanceCharts.files') }}</option>
<option value="drive-files-total">{{ $t('_instanceCharts.filesTotal') }}</option>
</mk-select>
<mk-select v-model="chartSpan" style="margin: 0;">
<option value="hour" v-t="'perHour'"></option>
<option value="day" v-t="'perDay'"></option>
<option value="hour">{{ $t('perHour') }}</option>
<option value="day">{{ $t('perDay') }}</option>
</mk-select>
</div>
</div>
@ -96,21 +96,21 @@
</div>
</div>
<div class="operations">
<span class="label" v-t="'operations'"></span>
<mk-switch v-model="isSuspended" class="switch" v-t="'stopActivityDelivery'"></mk-switch>
<mk-switch :value="isBlocked" class="switch" @change="changeBlock" v-t="'blockThisInstance'"></mk-switch>
<span class="label">{{ $t('operations') }}</span>
<mk-switch v-model="isSuspended" class="switch">{{ $t('stopActivityDelivery') }}</mk-switch>
<mk-switch :value="isBlocked" class="switch" @change="changeBlock">{{ $t('blockThisInstance') }}</mk-switch>
<details>
<summary v-t="'deleteAllFiles'"></summary>
<summary>{{ $t('deleteAllFiles') }}</summary>
<mk-button @click="deleteAllFiles()" style="margin: 0.5em 0 0.5em 0;"><fa :icon="faTrashAlt"/> {{ $t('deleteAllFiles') }}</mk-button>
</details>
<details>
<summary v-t="'removeAllFollowing'"></summary>
<summary>{{ $t('removeAllFollowing') }}</summary>
<mk-button @click="removeAllFollowing()" style="margin: 0.5em 0 0.5em 0;"><fa :icon="faMinusCircle"/> {{ $t('removeAllFollowing') }}</mk-button>
<mk-info warn>{{ $t('removeAllFollowingDescription', { host: instance.host }) }}</mk-info>
</details>
</div>
<details class="metadata">
<summary class="label" v-t="'metadata'"></summary>
<summary class="label">{{ $t('metadata') }}</summary>
<pre><code>{{ JSON.stringify(instance, null, 2) }}</code></pre>
</details>
</div>

View file

@ -1,21 +1,21 @@
<template>
<div class="mk-federation">
<portal to="icon"><fa :icon="faGlobe"/></portal>
<portal to="title" v-t="'federation'"></portal>
<portal to="title">{{ $t('federation') }}</portal>
<section class="_card instances">
<div class="_content">
<mk-input v-model="host" :debounce="true"><span v-t="'host'"></span></mk-input>
<mk-input v-model="host" :debounce="true"><span>{{ $t('host') }}</span></mk-input>
<div class="inputs" style="display: flex;">
<mk-select v-model="state" style="margin: 0; flex: 1;">
<template #label>{{ $t('state') }}</template>
<option value="all" v-t="'all'"></option>
<option value="federating" v-t="'federating'"></option>
<option value="subscribing" v-t="'subscribing'"></option>
<option value="publishing" v-t="'publishing'"></option>
<option value="suspended" v-t="'suspended'"></option>
<option value="blocked" v-t="'blocked'"></option>
<option value="notResponding" v-t="'notResponding'"></option>
<option value="all">{{ $t('all') }}</option>
<option value="federating">{{ $t('federating') }}</option>
<option value="subscribing">{{ $t('subscribing') }}</option>
<option value="publishing">{{ $t('publishing') }}</option>
<option value="suspended">{{ $t('suspended') }}</option>
<option value="blocked">{{ $t('blocked') }}</option>
<option value="notResponding">{{ $t('notResponding') }}</option>
</mk-select>
<mk-select v-model="sort" style="margin: 0; flex: 1;">
<template #label>{{ $t('sort') }}</template>

View file

@ -1,7 +1,7 @@
<template>
<div v-if="meta" class="xhexznfu">
<portal to="icon"><fa :icon="faServer"/></portal>
<portal to="title" v-t="'instance'"></portal>
<portal to="title">{{ $t('instance') }}</portal>
<mk-instance-stats style="margin-bottom: var(--margin);"/>
@ -10,16 +10,16 @@
<div class="_content">
<div class="_inputs">
<mk-input v-model="logDomain" :debounce="true">
<span v-t="'domain'"></span>
<span>{{ $t('domain') }}</span>
</mk-input>
<mk-select v-model="logLevel">
<template #label>{{ $t('level') }}</template>
<option value="all" v-t="'levels.all'"></option>
<option value="info" v-t="'levels.info'"></option>
<option value="success" v-t="'levels.success'"></option>
<option value="warning" v-t="'levels.warning'"></option>
<option value="error" v-t="'levels.error'"></option>
<option value="debug" v-t="'levels.debug'"></option>
<option value="all">{{ $t('levels.all') }}</option>
<option value="info">{{ $t('levels.info') }}</option>
<option value="success">{{ $t('levels.success') }}</option>
<option value="warning">{{ $t('levels.warning') }}</option>
<option value="error">{{ $t('levels.error') }}</option>
<option value="debug">{{ $t('levels.debug') }}</option>
</mk-select>
</div>

View file

@ -17,7 +17,7 @@
<span style="margin-left: 8px; opacity: 0.7;">({{ job[1] | number }} jobs)</span>
</div>
</div>
<span v-else style="opacity: 0.5;" v-t="'noJobs'"></span>
<span v-else style="opacity: 0.5;">{{ $t('noJobs') }}</span>
</div>
</section>
</template>

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faExchangeAlt"/></portal>
<portal to="title" v-t="'jobQueue'"></portal>
<portal to="title">{{ $t('jobQueue') }}</portal>
<x-queue :connection="connection" domain="inbox">
<template #title><fa :icon="faExchangeAlt"/> In</template>

View file

@ -1,13 +1,13 @@
<template>
<div class="relaycxt">
<portal to="icon"><fa :icon="faProjectDiagram"/></portal>
<portal to="title" v-t="'relays'"></portal>
<portal to="title">{{ $t('relays') }}</portal>
<section class="_card add">
<div class="_title"><fa :icon="faPlus"/> {{ $t('addRelay') }}</div>
<div class="_content">
<mk-input v-model="inbox">
<span v-t="'inboxUrl'"></span>
<span>{{ $t('inboxUrl') }}</span>
</mk-input>
<mk-button @click="add(inbox)" primary><fa :icon="faPlus"/> {{ $t('add') }}</mk-button>
</div>

View file

@ -1,17 +1,17 @@
<template>
<div v-if="meta">
<portal to="icon"><fa :icon="faCog"/></portal>
<portal to="title" v-t="'settings'"></portal>
<portal to="title">{{ $t('settings') }}</portal>
<section class="_card info">
<div class="_title"><fa :icon="faInfoCircle"/> {{ $t('basicInfo') }}</div>
<div class="_content">
<mk-input v-model="name" v-t="'instanceName'"></mk-input>
<mk-textarea v-model="description" v-t="'instanceDescription'"></mk-textarea>
<mk-input v-model="name">{{ $t('instanceName') }}</mk-input>
<mk-textarea v-model="description">{{ $t('instanceDescription') }}</mk-textarea>
<mk-input v-model="iconUrl"><template #icon><fa :icon="faLink"/></template>{{ $t('iconUrl') }}</mk-input>
<mk-input v-model="bannerUrl"><template #icon><fa :icon="faLink"/></template>{{ $t('bannerUrl') }}</mk-input>
<mk-input v-model="tosUrl"><template #icon><fa :icon="faLink"/></template>{{ $t('tosUrl') }}</mk-input>
<mk-input v-model="maintainerName" v-t="'maintainerName'"></mk-input>
<mk-input v-model="maintainerName">{{ $t('maintainerName') }}</mk-input>
<mk-input v-model="maintainerEmail" type="email"><template #icon><fa :icon="faEnvelope"/></template>{{ $t('maintainerEmail') }}</mk-input>
</div>
<div class="_footer">
@ -24,8 +24,8 @@
<mk-input v-model="maxNoteTextLength" type="number" :save="() => save()" style="margin:0;"><template #icon><fa :icon="faPencilAlt"/></template>{{ $t('maxNoteTextLength') }}</mk-input>
</div>
<div class="_content">
<mk-switch v-model="enableLocalTimeline" @change="save()" v-t="'enableLocalTimeline'"></mk-switch>
<mk-switch v-model="enableGlobalTimeline" @change="save()" v-t="'enableGlobalTimeline'"></mk-switch>
<mk-switch v-model="enableLocalTimeline" @change="save()">{{ $t('enableLocalTimeline') }}</mk-switch>
<mk-switch v-model="enableGlobalTimeline" @change="save()">{{ $t('enableGlobalTimeline') }}</mk-switch>
<mk-info>{{ $t('disablingTimelinesInfo') }}</mk-info>
</div>
</section>
@ -33,22 +33,22 @@
<section class="_card info">
<div class="_title"><fa :icon="faUser"/> {{ $t('registration') }}</div>
<div class="_content">
<mk-switch v-model="enableRegistration" @change="save()" v-t="'enableRegistration'"></mk-switch>
<mk-button v-if="!enableRegistration" @click="invite" v-t="'invite'"></mk-button>
<mk-switch v-model="enableRegistration" @change="save()">{{ $t('enableRegistration') }}</mk-switch>
<mk-button v-if="!enableRegistration" @click="invite">{{ $t('invite') }}</mk-button>
</div>
</section>
<section class="_card">
<div class="_title"><fa :icon="faShieldAlt"/> {{ $t('hcaptcha') }}</div>
<div class="_content">
<mk-switch v-model="enableHcaptcha" ref="enableHcaptcha" v-t="'enableHcaptcha'"></mk-switch>
<mk-switch v-model="enableHcaptcha" ref="enableHcaptcha">{{ $t('enableHcaptcha') }}</mk-switch>
<template v-if="enableHcaptcha">
<mk-input v-model="hcaptchaSiteKey" :disabled="!enableHcaptcha"><template #icon><fa :icon="faKey"/></template>{{ $t('hcaptchaSiteKey') }}</mk-input>
<mk-input v-model="hcaptchaSecretKey" :disabled="!enableHcaptcha"><template #icon><fa :icon="faKey"/></template>{{ $t('hcaptchaSecretKey') }}</mk-input>
</template>
</div>
<div class="_content" v-if="enableHcaptcha">
<header v-t="'preview'"></header>
<header>{{ $t('preview') }}</header>
<captcha v-if="enableHcaptcha" provider="hcaptcha" :sitekey="hcaptchaSiteKey || '10000000-ffff-ffff-ffff-000000000001'"/>
</div>
<div class="_footer">
@ -59,14 +59,14 @@
<section class="_card">
<div class="_title"><fa :icon="faShieldAlt"/> {{ $t('recaptcha') }}</div>
<div class="_content">
<mk-switch v-model="enableRecaptcha" ref="enableRecaptcha" v-t="'enableRecaptcha'"></mk-switch>
<mk-switch v-model="enableRecaptcha" ref="enableRecaptcha">{{ $t('enableRecaptcha') }}</mk-switch>
<template v-if="enableRecaptcha">
<mk-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><template #icon><fa :icon="faKey"/></template>{{ $t('recaptchaSiteKey') }}</mk-input>
<mk-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><template #icon><fa :icon="faKey"/></template>{{ $t('recaptchaSecretKey') }}</mk-input>
</template>
</div>
<div class="_content" v-if="enableRecaptcha && recaptchaSiteKey">
<header v-t="'preview'"></header>
<header>{{ $t('preview') }}</header>
<captcha v-if="enableRecaptcha" provider="grecaptcha" :sitekey="recaptchaSiteKey"/>
</div>
<div class="_footer">
@ -94,7 +94,7 @@
<div class="_title"><fa :icon="faThumbtack"/> {{ $t('pinnedUsers') }}</div>
<div class="_content">
<mk-textarea v-model="pinnedUsers">
<template #desc>{{ $t('pinnedUsersDescription') }} <button class="_textButton" @click="addPinUser" v-t="'addUser'"></button></template>
<template #desc>{{ $t('pinnedUsersDescription') }} <button class="_textButton" @click="addPinUser">{{ $t('addUser') }}</button></template>
</mk-textarea>
</div>
<div class="_footer">
@ -118,7 +118,7 @@
<section class="_card">
<div class="_title"><fa :icon="faCloud"/> {{ $t('objectStorage') }}</div>
<div class="_content">
<mk-switch v-model="useObjectStorage" v-t="'useObjectStorage'"></mk-switch>
<mk-switch v-model="useObjectStorage">{{ $t('useObjectStorage') }}</mk-switch>
<template v-if="useObjectStorage">
<mk-input v-model="objectStorageBaseUrl" :disabled="!useObjectStorage">{{ $t('objectStorageBaseUrl') }}<template #desc>{{ $t('objectStorageBaseUrlDesc') }}</template></mk-input>
<div class="_inputs">
@ -146,7 +146,7 @@
<div class="_title"><fa :icon="faGhost"/> {{ $t('proxyAccount') }}</div>
<div class="_content">
<mk-input :value="proxyAccount ? proxyAccount.username : null" style="margin: 0;" disabled><template #prefix>@</template>{{ $t('proxyAccount') }}<template #desc>{{ $t('proxyAccountDescription') }}</template></mk-input>
<mk-button primary @click="chooseProxyAccount" v-t="'chooseProxyAccount'"></mk-button>
<mk-button primary @click="chooseProxyAccount">{{ $t('chooseProxyAccount') }}</mk-button>
</div>
</section>
@ -166,7 +166,7 @@
<div class="_title"><fa :icon="faShareAlt"/> {{ $t('integration') }}</div>
<div class="_content">
<header><fa :icon="faTwitter"/> Twitter</header>
<mk-switch v-model="enableTwitterIntegration" v-t="'enable'"></mk-switch>
<mk-switch v-model="enableTwitterIntegration">{{ $t('enable') }}</mk-switch>
<template v-if="enableTwitterIntegration">
<mk-info>Callback URL: {{ `${url}/api/tw/cb` }}</mk-info>
<mk-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><template #icon><fa :icon="faKey"/></template>Consumer Key</mk-input>
@ -175,7 +175,7 @@
</div>
<div class="_content">
<header><fa :icon="faGithub"/> GitHub</header>
<mk-switch v-model="enableGithubIntegration" v-t="'enable'"></mk-switch>
<mk-switch v-model="enableGithubIntegration">{{ $t('enable') }}</mk-switch>
<template v-if="enableGithubIntegration">
<mk-info>Callback URL: {{ `${url}/api/gh/cb` }}</mk-info>
<mk-input v-model="githubClientId" :disabled="!enableGithubIntegration"><template #icon><fa :icon="faKey"/></template>Client ID</mk-input>
@ -184,7 +184,7 @@
</div>
<div class="_content">
<header><fa :icon="faDiscord"/> Discord</header>
<mk-switch v-model="enableDiscordIntegration" v-t="'enable'"></mk-switch>
<mk-switch v-model="enableDiscordIntegration">{{ $t('enable') }}</mk-switch>
<template v-if="enableDiscordIntegration">
<mk-info>Callback URL: {{ `${url}/api/dc/cb` }}</mk-info>
<mk-input v-model="discordClientId" :disabled="!enableDiscordIntegration"><template #icon><fa :icon="faKey"/></template>Client ID</mk-input>

View file

@ -15,9 +15,9 @@
</div>
<div class="_content actions">
<div style="flex: 1; padding-left: 1em;">
<mk-switch v-if="user.host == null && $store.state.i.isAdmin && (this.moderator || !user.isAdmin)" @change="toggleModerator()" v-model="moderator" v-t="'moderator'"></mk-switch>
<mk-switch @change="toggleSilence()" v-model="silenced" v-t="'silence'"></mk-switch>
<mk-switch @change="toggleSuspend()" v-model="suspended" v-t="'suspend'"></mk-switch>
<mk-switch v-if="user.host == null && $store.state.i.isAdmin && (this.moderator || !user.isAdmin)" @change="toggleModerator()" v-model="moderator">{{ $t('moderator') }}</mk-switch>
<mk-switch @change="toggleSilence()" v-model="silenced">{{ $t('silence') }}</mk-switch>
<mk-switch @change="toggleSuspend()" v-model="suspended">{{ $t('suspend') }}</mk-switch>
</div>
<div style="flex: 1; padding-left: 1em;">
<mk-button @click="openProfile"><fa :icon="faExternalLinkSquareAlt"/> {{ $t('profile')}}</mk-button>

View file

@ -1,13 +1,13 @@
<template>
<div class="mk-instance-users">
<portal to="icon"><fa :icon="faUsers"/></portal>
<portal to="title" v-t="'users'"></portal>
<portal to="title">{{ $t('users') }}</portal>
<section class="_card lookup">
<div class="_title"><fa :icon="faSearch"/> {{ $t('lookup') }}</div>
<div class="_content">
<mk-input class="target" v-model="target" type="text" @enter="showUser()">
<span v-t="'usernameOrUserId'"></span>
<span>{{ $t('usernameOrUserId') }}</span>
</mk-input>
<mk-button @click="showUser()" primary><fa :icon="faSearch"/> {{ $t('lookup') }}</mk-button>
</div>
@ -29,26 +29,26 @@
</mk-select>
<mk-select v-model="state" style="margin: 0; flex: 1;">
<template #label>{{ $t('state') }}</template>
<option value="all" v-t="'all'"></option>
<option value="available" v-t="'normal'"></option>
<option value="admin" v-t="'administrator'"></option>
<option value="moderator" v-t="'moderator'"></option>
<option value="silenced" v-t="'silence'"></option>
<option value="suspended" v-t="'suspend'"></option>
<option value="all">{{ $t('all') }}</option>
<option value="available">{{ $t('normal') }}</option>
<option value="admin">{{ $t('administrator') }}</option>
<option value="moderator">{{ $t('moderator') }}</option>
<option value="silenced">{{ $t('silence') }}</option>
<option value="suspended">{{ $t('suspend') }}</option>
</mk-select>
<mk-select v-model="origin" style="margin: 0; flex: 1;">
<template #label>{{ $t('instance') }}</template>
<option value="combined" v-t="'all'"></option>
<option value="local" v-t="'local'"></option>
<option value="remote" v-t="'remote'"></option>
<option value="combined">{{ $t('all') }}</option>
<option value="local">{{ $t('local') }}</option>
<option value="remote">{{ $t('remote') }}</option>
</mk-select>
</div>
<div class="inputs" style="display: flex; padding-top: 1.2em;">
<mk-input v-model="searchUsername" style="margin: 0; flex: 1;" type="text" spellcheck="false" @input="$refs.users.reload()">
<span v-t="'username'"></span>
<span>{{ $t('username') }}</span>
</mk-input>
<mk-input v-model="searchHost" style="margin: 0; flex: 1;" type="text" spellcheck="false" @input="$refs.users.reload()" :disabled="pagination.params().origin === 'local'">
<span v-t="'host'"></span>
<span>{{ $t('host') }}</span>
</mk-input>
</div>
</div>

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faAt"/></portal>
<portal to="title" v-t="'mentions'"></portal>
<portal to="title">{{ $t('mentions') }}</portal>
<x-notes :pagination="pagination" @before="before()" @after="after()"/>
</div>
</template>

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faEnvelope"/></portal>
<portal to="title" v-t="'directNotes'"></portal>
<portal to="title">{{ $t('directNotes') }}</portal>
<x-notes :pagination="pagination" @before="before()" @after="after()"/>
</div>
</template>

View file

@ -1,7 +1,7 @@
<template>
<div class="mk-messaging" v-size="[{ max: 400 }]">
<portal to="icon"><fa :icon="faComments"/></portal>
<portal to="title" v-t="'messaging'"></portal>
<portal to="title">{{ $t('messaging') }}</portal>
<mk-button @click="start" primary class="start"><fa :icon="faPlus"/> {{ $t('startMessaging') }}</mk-button>
@ -33,7 +33,7 @@
</div>
<div class="_fullinfo" v-if="!fetching && messages.length == 0">
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
<div v-t="'noHistory'"></div>
<div>{{ $t('noHistory') }}</div>
</div>
<mk-loading v-if="fetching"/>
</div>

View file

@ -16,7 +16,7 @@
</div>
</div>
<div class="content" v-else>
<p class="is-deleted" v-t="'deleted'"></p>
<p class="is-deleted">{{ $t('deleted') }}</p>
</div>
</div>
<div></div>
@ -26,7 +26,7 @@
<span class="read" v-if="message.reads.length > 0">{{ $t('messageRead') }} {{ message.reads.length }}</span>
</template>
<template v-else>
<span class="read" v-if="isMe && message.isRead" v-t="'messageRead'"></span>
<span class="read" v-if="isMe && message.isRead">{{ $t('messageRead') }}</span>
</template>
<mk-time :time="message.createdAt"/>
<template v-if="message.is_edited"><fa icon="pencil-alt"/></template>

View file

@ -7,7 +7,7 @@
</div>
<div class="denied _card" v-if="state == 'denied'">
<div class="_content">
<p v-t="'_auth.denied'"></p>
<p>{{ $t('_auth.denied') }}</p>
</div>
</div>
<div class="accepted _card" v-else-if="state == 'accepted'">
@ -20,7 +20,7 @@
<div class="_title" v-if="name">{{ $t('_auth.shareAccess', { name: name }) }}</div>
<div class="_title" v-else>{{ $t('_auth.shareAccessAsk') }}</div>
<div class="_content">
<p v-t="'_auth.permissionAsk'"></p>
<p>{{ $t('_auth.permissionAsk') }}</p>
<ul>
<template v-for="p in permission">
<li :key="p">{{ $t(`_permissions.${p}`) }}</li>

View file

@ -3,15 +3,15 @@
<div class="_title" v-if="antenna.name">{{ antenna.name }}</div>
<div class="_content body">
<mk-input v-model="name">
<span v-t="'name'"></span>
<span>{{ $t('name') }}</span>
</mk-input>
<mk-select v-model="src">
<template #label>{{ $t('antennaSource') }}</template>
<option value="all" v-t="'_antennaSources.all'"></option>
<option value="home" v-t="'_antennaSources.homeTimeline'"></option>
<option value="users" v-t="'_antennaSources.users'"></option>
<option value="list" v-t="'_antennaSources.userList'"></option>
<option value="group" v-t="'_antennaSources.userGroup'"></option>
<option value="all">{{ $t('_antennaSources.all') }}</option>
<option value="home">{{ $t('_antennaSources.homeTimeline') }}</option>
<option value="users">{{ $t('_antennaSources.users') }}</option>
<option value="list">{{ $t('_antennaSources.userList') }}</option>
<option value="group">{{ $t('_antennaSources.userGroup') }}</option>
</mk-select>
<mk-select v-model="userListId" v-if="src === 'list'">
<template #label>{{ $t('userList') }}</template>
@ -22,21 +22,21 @@
<option v-for="group in userGroups" :value="group.id" :key="group.id">{{ group.name }}</option>
</mk-select>
<mk-textarea v-model="users" v-else-if="src === 'users'">
<span v-t="'users'"></span>
<template #desc>{{ $t('antennaUsersDescription') }} <button class="_textButton" @click="addUser" v-t="'addUser'"></button></template>
<span>{{ $t('users') }}</span>
<template #desc>{{ $t('antennaUsersDescription') }} <button class="_textButton" @click="addUser">{{ $t('addUser') }}</button></template>
</mk-textarea>
<mk-switch v-model="withReplies" v-t="'withReplies'"></mk-switch>
<mk-switch v-model="withReplies">{{ $t('withReplies') }}</mk-switch>
<mk-textarea v-model="keywords">
<span v-t="'antennaKeywords'"></span>
<span>{{ $t('antennaKeywords') }}</span>
<template #desc>{{ $t('antennaKeywordsDescription') }}</template>
</mk-textarea>
<mk-textarea v-model="excludeKeywords">
<span v-t="'antennaExcludeKeywords'"></span>
<span>{{ $t('antennaExcludeKeywords') }}</span>
<template #desc>{{ $t('antennaKeywordsDescription') }}</template>
</mk-textarea>
<mk-switch v-model="caseSensitive" v-t="'caseSensitive'"></mk-switch>
<mk-switch v-model="withFile" v-t="'withFileAntenna'"></mk-switch>
<mk-switch v-model="notify" v-t="'notifyAntenna'"></mk-switch>
<mk-switch v-model="caseSensitive">{{ $t('caseSensitive') }}</mk-switch>
<mk-switch v-model="withFile">{{ $t('withFileAntenna') }}</mk-switch>
<mk-switch v-model="notify">{{ $t('notifyAntenna') }}</mk-switch>
</div>
<div class="_footer">
<mk-button inline @click="saveAntenna()" primary><fa :icon="faSave"/> {{ $t('save') }}</mk-button>

View file

@ -1,7 +1,7 @@
<template>
<div class="ieepwinx">
<portal to="icon"><fa :icon="faSatellite"/></portal>
<portal to="title" v-t="'manageAntennas'"></portal>
<portal to="title">{{ $t('manageAntennas') }}</portal>
<mk-button @click="create" primary class="add"><fa :icon="faPlus"/> {{ $t('add') }}</mk-button>

View file

@ -6,16 +6,16 @@
<transition name="zoom" mode="out-in">
<div v-if="group" class="_card">
<div class="_content">
<mk-button inline @click="renameGroup()" v-t="'rename'"></mk-button>
<mk-button inline @click="transfer()" v-t="'transfer'"></mk-button>
<mk-button inline @click="deleteGroup()" v-t="'delete'"></mk-button>
<mk-button inline @click="renameGroup()">{{ $t('rename') }}</mk-button>
<mk-button inline @click="transfer()">{{ $t('transfer') }}</mk-button>
<mk-button inline @click="deleteGroup()">{{ $t('delete') }}</mk-button>
</div>
</div>
</transition>
<transition name="zoom" mode="out-in">
<div v-if="group" class="_card members">
<div class="_title" v-t="'members'"></div>
<div class="_title">{{ $t('members') }}</div>
<div class="_content">
<div class="users">
<div class="user" v-for="user in users" :key="user.id">
@ -31,7 +31,7 @@
</div>
</div>
<div class="_footer">
<mk-button inline @click="invite()" v-t="'invite'"></mk-button>
<mk-button inline @click="invite()">{{ $t('invite') }}</mk-button>
</div>
</div>
</transition>

View file

@ -1,7 +1,7 @@
<template>
<div class="">
<portal to="icon"><fa :icon="faUsers"/></portal>
<portal to="title" v-t="'groups'"></portal>
<portal to="title">{{ $t('groups') }}</portal>
<mk-button @click="create" primary style="margin: 0 auto var(--margin) auto;"><fa :icon="faPlus"/> {{ $t('createGroup') }}</mk-button>

View file

@ -1,7 +1,7 @@
<template>
<div class="qkcjvfiv">
<portal to="icon"><fa :icon="faListUl"/></portal>
<portal to="title" v-t="'manageLists'"></portal>
<portal to="title">{{ $t('manageLists') }}</portal>
<mk-button @click="create" primary class="add"><fa :icon="faPlus"/> {{ $t('createList') }}</mk-button>

View file

@ -6,15 +6,15 @@
<transition name="zoom" mode="out-in">
<div v-if="list" class="_card">
<div class="_content">
<mk-button inline @click="renameList()" v-t="'rename'"></mk-button>
<mk-button inline @click="deleteList()" v-t="'delete'"></mk-button>
<mk-button inline @click="renameList()">{{ $t('rename') }}</mk-button>
<mk-button inline @click="deleteList()">{{ $t('delete') }}</mk-button>
</div>
</div>
</transition>
<transition name="zoom" mode="out-in">
<div v-if="list" class="_card members">
<div class="_title" v-t="'members'"></div>
<div class="_title">{{ $t('members') }}</div>
<div class="_content">
<div class="users">
<div class="user" v-for="user in users" :key="user.id">
@ -30,7 +30,7 @@
</div>
</div>
<div class="_footer">
<mk-button inline @click="addUser()" v-t="'addUser'"></mk-button>
<mk-button inline @click="addUser()">{{ $t('addUser') }}</mk-button>
</div>
</div>
</transition>

View file

@ -2,28 +2,28 @@
<section class="_card">
<div class="_title"><fa :icon="faLock"/> {{ $t('twoStepAuthentication') }}</div>
<div class="_content">
<p v-if="!data && !$store.state.i.twoFactorEnabled"><mk-button @click="register" v-t="'_2fa.registerDevice'"></mk-button></p>
<p v-if="!data && !$store.state.i.twoFactorEnabled"><mk-button @click="register">{{ $t('_2fa.registerDevice') }}</mk-button></p>
<template v-if="$store.state.i.twoFactorEnabled">
<p v-t="'_2fa.alreadyRegistered'"></p>
<mk-button @click="unregister" v-t="'unregister'"></mk-button>
<p>{{ $t('_2fa.alreadyRegistered') }}</p>
<mk-button @click="unregister">{{ $t('unregister') }}</mk-button>
<template v-if="supportsCredentials">
<hr class="totp-method-sep">
<h2 class="heading" v-t="'securityKey'"></h2>
<p v-t="'_2fa.securityKeyInfo'"></p>
<h2 class="heading">{{ $t('securityKey') }}</h2>
<p>{{ $t('_2fa.securityKeyInfo') }}</p>
<div class="key-list">
<div class="key" v-for="key in $store.state.i.securityKeysList">
<h3>{{ key.name }}</h3>
<div class="last-used">{{ $t('lastUsed') }}<mk-time :time="key.lastUsed"/></div>
<mk-button @click="unregisterKey(key)" v-t="'unregister'"></mk-button>
<mk-button @click="unregisterKey(key)">{{ $t('unregister') }}</mk-button>
</div>
</div>
<mk-switch v-model="usePasswordLessLogin" @change="updatePasswordLessLogin" v-if="$store.state.i.securityKeysList.length > 0" v-t="'passwordLessLogin'"></mk-switch>
<mk-switch v-model="usePasswordLessLogin" @change="updatePasswordLessLogin" v-if="$store.state.i.securityKeysList.length > 0">{{ $t('passwordLessLogin') }}</mk-switch>
<mk-info warn v-if="registration && registration.error">{{ $t('error') }} {{ registration.error }}</mk-info>
<mk-button v-if="!registration || registration.error" @click="addSecurityKey" v-t="'_2fa.registerKey'"></mk-button>
<mk-button v-if="!registration || registration.error" @click="addSecurityKey">{{ $t('_2fa.registerKey') }}</mk-button>
<ol v-if="registration && !registration.error">
<li v-if="registration.stage >= 0">
@ -33,9 +33,9 @@
<li v-if="registration.stage >= 1">
<mk-form :disabled="registration.stage != 1 || registration.saving">
<mk-input v-model="keyName" :max="30">
<span v-t="'securityKeyName'"></span>
<span>{{ $t('securityKeyName') }}</span>
</mk-input>
<mk-button @click="registerKey" :disabled="keyName.length == 0" v-t="'registerSecurityKey'"></mk-button>
<mk-button @click="registerKey" :disabled="keyName.length == 0">{{ $t('registerSecurityKey') }}</mk-button>
<fa icon="spinner" pulse fixed-width v-if="registration.saving && registration.stage == 1" />
</mk-form>
</li>
@ -52,8 +52,8 @@
</li>
<li>{{ $t('_2fa.step2') }}<br><img :src="data.qr"></li>
<li>{{ $t('_2fa.step3') }}<br>
<mk-input v-model="token" type="text" pattern="^[0-9]{6}$" autocomplete="off" spellcheck="false" v-t="'token'"></mk-input>
<mk-button primary @click="submit" v-t="'done'"></mk-button>
<mk-input v-model="token" type="text" pattern="^[0-9]{6}$" autocomplete="off" spellcheck="false">{{ $t('token') }}</mk-input>
<mk-button primary @click="submit">{{ $t('done') }}</mk-button>
</li>
</ol>
<mk-info>{{ $t('_2fa.step4') }}</mk-info>

View file

@ -2,7 +2,7 @@
<section class="_card">
<div class="_title"><fa :icon="faKey"/> API</div>
<div class="_content">
<mk-button @click="generateToken" v-t="'generateAccessToken'"></mk-button>
<mk-button @click="generateToken">{{ $t('generateAccessToken') }}</mk-button>
<mk-button @click="regenerateToken"><fa :icon="faSyncAlt"/> {{ $t('regenerate') }}</mk-button>
</div>
</section>

View file

@ -3,11 +3,11 @@
<div class="_title"><fa :icon="faBoxes"/> {{ $t('importAndExport') }}</div>
<div class="_content">
<mk-select v-model="exportTarget">
<option value="notes" v-t="'_exportOrImport.allNotes'"></option>
<option value="following" v-t="'_exportOrImport.followingList'"></option>
<option value="user-lists" v-t="'_exportOrImport.userLists'"></option>
<option value="mute" v-t="'_exportOrImport.muteList'"></option>
<option value="blocking" v-t="'_exportOrImport.blockingList'"></option>
<option value="notes">{{ $t('_exportOrImport.allNotes') }}</option>
<option value="following">{{ $t('_exportOrImport.followingList') }}</option>
<option value="user-lists">{{ $t('_exportOrImport.userLists') }}</option>
<option value="mute">{{ $t('_exportOrImport.muteList') }}</option>
<option value="blocking">{{ $t('_exportOrImport.blockingList') }}</option>
</mk-select>
<mk-button inline @click="doExport()"><fa :icon="faDownload"/> {{ $t('export') }}</mk-button>
<mk-button inline @click="doImport()" :disabled="!['following', 'user-lists'].includes(exportTarget)"><fa :icon="faUpload"/> {{ $t('import') }}</mk-button>

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faCog"/></portal>
<portal to="title" v-t="'accountSettings'"></portal>
<portal to="title">{{ $t('accountSettings') }}</portal>
<x-profile-setting/>
<x-privacy-setting/>
@ -18,9 +18,9 @@
</mk-switch>
</div>
<div class="_content">
<mk-button @click="readAllNotifications" v-t="'markAsReadAllNotifications'"></mk-button>
<mk-button @click="readAllUnreadNotes" v-t="'markAsReadAllUnreadNotes'"></mk-button>
<mk-button @click="readAllMessagingMessages" v-t="'markAsReadAllTalkMessages'"></mk-button>
<mk-button @click="readAllNotifications">{{ $t('markAsReadAllNotifications') }}</mk-button>
<mk-button @click="readAllUnreadNotes">{{ $t('markAsReadAllUnreadNotes') }}</mk-button>
<mk-button @click="readAllMessagingMessages">{{ $t('markAsReadAllTalkMessages') }}</mk-button>
</div>
</section>
@ -32,9 +32,9 @@
<x-integration/>
<x-api/>
<router-link class="_panel _buttonPrimary" to="/my/apps" style="margin: var(--margin) auto;" v-t="'installedApps'"></router-link>
<router-link class="_panel _buttonPrimary" to="/my/apps" style="margin: var(--margin) auto;">{{ $t('installedApps') }}</router-link>
<button class="_panel _buttonPrimary" @click="$root.signout()" style="margin: var(--margin) auto;" v-t="'logout'"></button>
<button class="_panel _buttonPrimary" @click="$root.signout()" style="margin: var(--margin) auto;">{{ $t('logout') }}</button>
</div>
</template>

View file

@ -5,22 +5,22 @@
<div class="_content" v-if="enableTwitterIntegration">
<header><fa :icon="faTwitter"/> Twitter</header>
<p v-if="integrations.twitter">{{ $t('connectedTo') }}: <a :href="`https://twitter.com/${integrations.twitter.screenName}`" rel="nofollow noopener" target="_blank">@{{ integrations.twitter.screenName }}</a></p>
<mk-button v-if="integrations.twitter" @click="disconnectTwitter" v-t="'disconnectSerice'"></mk-button>
<mk-button v-else @click="connectTwitter" v-t="'connectSerice'"></mk-button>
<mk-button v-if="integrations.twitter" @click="disconnectTwitter">{{ $t('disconnectSerice') }}</mk-button>
<mk-button v-else @click="connectTwitter">{{ $t('connectSerice') }}</mk-button>
</div>
<div class="_content" v-if="enableDiscordIntegration">
<header><fa :icon="faDiscord"/> Discord</header>
<p v-if="integrations.discord">{{ $t('connectedTo') }}: <a :href="`https://discordapp.com/users/${integrations.discord.id}`" rel="nofollow noopener" target="_blank">@{{ integrations.discord.username }}#{{ integrations.discord.discriminator }}</a></p>
<mk-button v-if="integrations.discord" @click="disconnectDiscord" v-t="'disconnectSerice'"></mk-button>
<mk-button v-else @click="connectDiscord" v-t="'connectSerice'"></mk-button>
<mk-button v-if="integrations.discord" @click="disconnectDiscord">{{ $t('disconnectSerice') }}</mk-button>
<mk-button v-else @click="connectDiscord">{{ $t('connectSerice') }}</mk-button>
</div>
<div class="_content" v-if="enableGithubIntegration">
<header><fa :icon="faGithub"/> GitHub</header>
<p v-if="integrations.github">{{ $t('connectedTo') }}: <a :href="`https://github.com/${integrations.github.login}`" rel="nofollow noopener" target="_blank">@{{ integrations.github.login }}</a></p>
<mk-button v-if="integrations.github" @click="disconnectGithub" v-t="'disconnectSerice'"></mk-button>
<mk-button v-else @click="connectGithub" v-t="'connectSerice'"></mk-button>
<mk-button v-if="integrations.github" @click="disconnectGithub">{{ $t('disconnectSerice') }}</mk-button>
<mk-button v-else @click="connectGithub">{{ $t('connectSerice') }}</mk-button>
</div>
</section>
</template>

View file

@ -2,9 +2,9 @@
<section class="rrfwjxfl _card">
<div class="_title"><fa :icon="faBan"/> {{ $t('muteAndBlock') }}</div>
<div class="_content">
<span v-t="'mutedUsers'"></span>
<span>{{ $t('mutedUsers') }}</span>
<mk-pagination :pagination="mutingPagination" class="muting">
<template #empty><span v-t="'noUsers'"></span></template>
<template #empty><span>{{ $t('noUsers') }}</span></template>
<template #default="{items}">
<div class="user" v-for="(mute, i) in items" :key="mute.id">
<router-link class="name" :to="mute.mutee | userPage">
@ -15,9 +15,9 @@
</mk-pagination>
</div>
<div class="_content">
<span v-t="'blockedUsers'"></span>
<span>{{ $t('blockedUsers') }}</span>
<mk-pagination :pagination="blockingPagination" class="blocking">
<template #empty><span v-t="'noUsers'"></span></template>
<template #empty><span>{{ $t('noUsers') }}</span></template>
<template #default="{items}">
<div class="user" v-for="(block, i) in items" :key="block.id">
<router-link class="name" :to="block.blockee | userPage">

View file

@ -2,19 +2,19 @@
<section class="_card">
<div class="_title"><fa :icon="faLock"/> {{ $t('privacy') }}</div>
<div class="_content">
<mk-switch v-model="isLocked" @change="save()" v-t="'makeFollowManuallyApprove'"></mk-switch>
<mk-switch v-model="autoAcceptFollowed" v-if="isLocked" @change="save()" v-t="'autoAcceptFollowed'"></mk-switch>
<mk-switch v-model="isLocked" @change="save()">{{ $t('makeFollowManuallyApprove') }}</mk-switch>
<mk-switch v-model="autoAcceptFollowed" v-if="isLocked" @change="save()">{{ $t('autoAcceptFollowed') }}</mk-switch>
</div>
<div class="_content">
<mk-switch v-model="rememberNoteVisibility" @change="save()" v-t="'rememberNoteVisibility'"></mk-switch>
<mk-switch v-model="rememberNoteVisibility" @change="save()">{{ $t('rememberNoteVisibility') }}</mk-switch>
<mk-select v-model="defaultNoteVisibility" style="margin-bottom: 8px;" v-if="!rememberNoteVisibility">
<template #label>{{ $t('defaultNoteVisibility') }}</template>
<option value="public" v-t="'_visibility.public'"></option>
<option value="home" v-t="'_visibility.home'"></option>
<option value="followers" v-t="'_visibility.followers'"></option>
<option value="specified" v-t="'_visibility.specified'"></option>
<option value="public">{{ $t('_visibility.public') }}</option>
<option value="home">{{ $t('_visibility.home') }}</option>
<option value="followers">{{ $t('_visibility.followers') }}</option>
<option value="specified">{{ $t('_visibility.specified') }}</option>
</mk-select>
<mk-switch v-model="defaultNoteLocalOnly" v-if="!rememberNoteVisibility" v-t="'_visibility.localOnly'"></mk-switch>
<mk-switch v-model="defaultNoteLocalOnly" v-if="!rememberNoteVisibility">{{ $t('_visibility.localOnly') }}</mk-switch>
</div>
</section>
</template>

View file

@ -7,16 +7,16 @@
</div>
<mk-input v-model="name" :max="30">
<span v-t="'_profile.name'"></span>
<span>{{ $t('_profile.name') }}</span>
</mk-input>
<mk-textarea v-model="description" :max="500">
<span v-t="'_profile.description'"></span>
<span>{{ $t('_profile.description') }}</span>
<template #desc>{{ $t('_profile.youCanIncludeHashtags') }}</template>
</mk-textarea>
<mk-input v-model="location">
<span v-t="'location'"></span>
<span>{{ $t('location') }}</span>
<template #prefix><fa :icon="faMapMarkerAlt"/></template>
</mk-input>
@ -26,27 +26,27 @@
</mk-input>
<details class="fields">
<summary v-t="'_profile.metadata'"></summary>
<summary>{{ $t('_profile.metadata') }}</summary>
<div class="row">
<mk-input v-model="fieldName0" v-t="'_profile.metadataLabel'"></mk-input>
<mk-input v-model="fieldValue0" v-t="'_profile.metadataContent'"></mk-input>
<mk-input v-model="fieldName0">{{ $t('_profile.metadataLabel') }}</mk-input>
<mk-input v-model="fieldValue0">{{ $t('_profile.metadataContent') }}</mk-input>
</div>
<div class="row">
<mk-input v-model="fieldName1" v-t="'_profile.metadataLabel'"></mk-input>
<mk-input v-model="fieldValue1" v-t="'_profile.metadataContent'"></mk-input>
<mk-input v-model="fieldName1">{{ $t('_profile.metadataLabel') }}</mk-input>
<mk-input v-model="fieldValue1">{{ $t('_profile.metadataContent') }}</mk-input>
</div>
<div class="row">
<mk-input v-model="fieldName2" v-t="'_profile.metadataLabel'"></mk-input>
<mk-input v-model="fieldValue2" v-t="'_profile.metadataContent'"></mk-input>
<mk-input v-model="fieldName2">{{ $t('_profile.metadataLabel') }}</mk-input>
<mk-input v-model="fieldValue2">{{ $t('_profile.metadataContent') }}</mk-input>
</div>
<div class="row">
<mk-input v-model="fieldName3" v-t="'_profile.metadataLabel'"></mk-input>
<mk-input v-model="fieldValue3" v-t="'_profile.metadataContent'"></mk-input>
<mk-input v-model="fieldName3">{{ $t('_profile.metadataLabel') }}</mk-input>
<mk-input v-model="fieldValue3">{{ $t('_profile.metadataContent') }}</mk-input>
</div>
</details>
<mk-switch v-model="isBot" v-t="'flagAsBot'"></mk-switch>
<mk-switch v-model="isCat" v-t="'flagAsCat'"></mk-switch>
<mk-switch v-model="isBot">{{ $t('flagAsBot') }}</mk-switch>
<mk-switch v-model="isCat">{{ $t('flagAsCat') }}</mk-switch>
</div>
<div class="_footer">
<mk-button @click="save(true)" primary><fa :icon="faSave"/> {{ $t('save') }}</mk-button>

View file

@ -3,7 +3,7 @@
<div class="_title"><fa :icon="faLaugh"/> {{ $t('reaction') }}</div>
<div class="_content">
<mk-input v-model="reactions" style="font-family: 'Segoe UI Emoji', 'Noto Color Emoji', Roboto, HelveticaNeue, Arial, sans-serif">
{{ $t('reaction') }}<template #desc>{{ $t('reactionSettingDescription') }} <button class="_textButton" @click="chooseEmoji" v-t="'chooseEmoji'"></button></template>
{{ $t('reaction') }}<template #desc>{{ $t('reactionSettingDescription') }} <button class="_textButton" @click="chooseEmoji">{{ $t('chooseEmoji') }}</button></template>
</mk-input>
<mk-button inline @click="setDefault"><fa :icon="faUndo"/> {{ $t('default') }}</mk-button>
</div>

View file

@ -2,7 +2,7 @@
<section class="_card">
<div class="_title"><fa :icon="faLock"/> {{ $t('password') }}</div>
<div class="_content">
<mk-button primary @click="change()" v-t="'changePassword'"></mk-button>
<mk-button primary @click="change()">{{ $t('changePassword') }}</mk-button>
</div>
</section>
</template>

View file

@ -1,11 +1,11 @@
<template>
<div class="ipledcug">
<portal to="icon"><fa :icon="faExclamationTriangle"/></portal>
<portal to="title" v-t="'notFound'"></portal>
<portal to="title">{{ $t('notFound') }}</portal>
<div class="_fullinfo">
<img src="https://xn--931a.moe/assets/not-found.jpg" class="_ghost"/>
<div v-t="'notFoundDescription'"></div>
<div>{{ $t('notFoundDescription') }}</div>
</div>
</div>
</template>

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faBell"/></portal>
<portal to="title" v-t="'notifications'"></portal>
<portal to="title">{{ $t('notifications') }}</portal>
<x-notifications @before="before" @after="after" page/>
</div>
</template>

View file

@ -3,21 +3,21 @@
<template #header><fa :icon="faBolt"/> {{ $t('_pages.blocks.button') }}</template>
<section class="xfhsjczc">
<mk-input v-model="value.text"><span v-t="'_pages.blocks._button.text'"></span></mk-input>
<mk-switch v-model="value.primary"><span v-t="'_pages.blocks._button.colored'"></span></mk-switch>
<mk-input v-model="value.text"><span>{{ $t('_pages.blocks._button.text') }}</span></mk-input>
<mk-switch v-model="value.primary"><span>{{ $t('_pages.blocks._button.colored') }}</span></mk-switch>
<mk-select v-model="value.action">
<template #label>{{ $t('_pages.blocks._button.action') }}</template>
<option value="dialog" v-t="'_pages.blocks._button._action.dialog'"></option>
<option value="resetRandom" v-t="'_pages.blocks._button._action.resetRandom'"></option>
<option value="pushEvent" v-t="'_pages.blocks._button._action.pushEvent'"></option>
<option value="callAiScript" v-t="'_pages.blocks._button._action.callAiScript'"></option>
<option value="dialog">{{ $t('_pages.blocks._button._action.dialog') }}</option>
<option value="resetRandom">{{ $t('_pages.blocks._button._action.resetRandom') }}</option>
<option value="pushEvent">{{ $t('_pages.blocks._button._action.pushEvent') }}</option>
<option value="callAiScript">{{ $t('_pages.blocks._button._action.callAiScript') }}</option>
</mk-select>
<template v-if="value.action === 'dialog'">
<mk-input v-model="value.content"><span v-t="'_pages.blocks._button._action._dialog.content'"></span></mk-input>
<mk-input v-model="value.content"><span>{{ $t('_pages.blocks._button._action._dialog.content') }}</span></mk-input>
</template>
<template v-else-if="value.action === 'pushEvent'">
<mk-input v-model="value.event"><span v-t="'_pages.blocks._button._action._pushEvent.event'"></span></mk-input>
<mk-input v-model="value.message"><span v-t="'_pages.blocks._button._action._pushEvent.message'"></span></mk-input>
<mk-input v-model="value.event"><span>{{ $t('_pages.blocks._button._action._pushEvent.event') }}</span></mk-input>
<mk-input v-model="value.message"><span>{{ $t('_pages.blocks._button._action._pushEvent.message') }}</span></mk-input>
<mk-select v-model="value.var">
<template #label>{{ $t('_pages.blocks._button._action._pushEvent.variable') }}</template>
<option :value="null">{{ $t('_pages.blocks._button._action._pushEvent.no-variable') }}</option>
@ -31,7 +31,7 @@
</mk-select>
</template>
<template v-else-if="value.action === 'callAiScript'">
<mk-input v-model="value.fn"><span v-t="'_pages.blocks._button._action._callAiScript.functionName'"></span></mk-input>
<mk-input v-model="value.fn"><span>{{ $t('_pages.blocks._button._action._callAiScript.functionName') }}</span></mk-input>
</template>
</section>
</x-container>

View file

@ -3,9 +3,9 @@
<template #header><fa :icon="faPaintBrush"/> {{ $t('_pages.blocks.canvas') }}</template>
<section style="padding: 0 16px 0 16px;">
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span v-t="'_pages.blocks._canvas.id'"></span></mk-input>
<mk-input v-model="value.width" type="number"><span v-t="'_pages.blocks._canvas.width'"></span><template #suffix>px</template></mk-input>
<mk-input v-model="value.height" type="number"><span v-t="'_pages.blocks._canvas.height'"></span><template #suffix>px</template></mk-input>
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._canvas.id') }}</span></mk-input>
<mk-input v-model="value.width" type="number"><span>{{ $t('_pages.blocks._canvas.width') }}</span><template #suffix>px</template></mk-input>
<mk-input v-model="value.height" type="number"><span>{{ $t('_pages.blocks._canvas.height') }}</span><template #suffix>px</template></mk-input>
</section>
</x-container>
</template>

View file

@ -3,9 +3,9 @@
<template #header><fa :icon="faBolt"/> {{ $t('_pages.blocks.counter') }}</template>
<section style="padding: 0 16px 0 16px;">
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span v-t="'_pages.blocks._counter.name'"></span></mk-input>
<mk-input v-model="value.text"><span v-t="'_pages.blocks._counter.text'"></span></mk-input>
<mk-input v-model="value.inc" type="number"><span v-t="'_pages.blocks._counter.inc'"></span></mk-input>
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._counter.name') }}</span></mk-input>
<mk-input v-model="value.text"><span>{{ $t('_pages.blocks._counter.text') }}</span></mk-input>
<mk-input v-model="value.inc" type="number"><span>{{ $t('_pages.blocks._counter.inc') }}</span></mk-input>
</section>
</x-container>
</template>

View file

@ -3,9 +3,9 @@
<template #header><fa :icon="faBolt"/> {{ $t('_pages.blocks.numberInput') }}</template>
<section style="padding: 0 16px 0 16px;">
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span v-t="'_pages.blocks._numberInput.name'"></span></mk-input>
<mk-input v-model="value.text"><span v-t="'_pages.blocks._numberInput.text'"></span></mk-input>
<mk-input v-model="value.default" type="number"><span v-t="'_pages.blocks._numberInput.default'"></span></mk-input>
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._numberInput.name') }}</span></mk-input>
<mk-input v-model="value.text"><span>{{ $t('_pages.blocks._numberInput.text') }}</span></mk-input>
<mk-input v-model="value.default" type="number"><span>{{ $t('_pages.blocks._numberInput.default') }}</span></mk-input>
</section>
</x-container>
</template>

View file

@ -3,9 +3,9 @@
<template #header><fa :icon="faPaperPlane"/> {{ $t('_pages.blocks.post') }}</template>
<section style="padding: 16px;">
<mk-textarea v-model="value.text" v-t="'_pages.blocks._post.text'"></mk-textarea>
<mk-switch v-model="value.attachCanvasImage"><span v-t="'_pages.blocks._post.attachCanvasImage'"></span></mk-switch>
<mk-input v-if="value.attachCanvasImage" v-model="value.canvasId"><span v-t="'_pages.blocks._post.canvasId'"></span></mk-input>
<mk-textarea v-model="value.text">{{ $t('_pages.blocks._post.text') }}</mk-textarea>
<mk-switch v-model="value.attachCanvasImage"><span>{{ $t('_pages.blocks._post.attachCanvasImage') }}</span></mk-switch>
<mk-input v-if="value.attachCanvasImage" v-model="value.canvasId"><span>{{ $t('_pages.blocks._post.canvasId') }}</span></mk-input>
</section>
</x-container>
</template>

View file

@ -3,10 +3,10 @@
<template #header><fa :icon="faBolt"/> {{ $t('_pages.blocks.radioButton') }}</template>
<section style="padding: 0 16px 16px 16px;">
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span v-t="'_pages.blocks._radioButton.name'"></span></mk-input>
<mk-input v-model="value.title"><span v-t="'_pages.blocks._radioButton.title'"></span></mk-input>
<mk-textarea v-model="values"><span v-t="'_pages.blocks._radioButton.values'"></span></mk-textarea>
<mk-input v-model="value.default"><span v-t="'_pages.blocks._radioButton.default'"></span></mk-input>
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._radioButton.name') }}</span></mk-input>
<mk-input v-model="value.title"><span>{{ $t('_pages.blocks._radioButton.title') }}</span></mk-input>
<mk-textarea v-model="values"><span>{{ $t('_pages.blocks._radioButton.values') }}</span></mk-textarea>
<mk-input v-model="value.default"><span>{{ $t('_pages.blocks._radioButton.default') }}</span></mk-input>
</section>
</x-container>
</template>

View file

@ -3,9 +3,9 @@
<template #header><fa :icon="faBolt"/> {{ $t('_pages.blocks.switch') }}</template>
<section class="kjuadyyj">
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span v-t="'_pages.blocks._switch.name'"></span></mk-input>
<mk-input v-model="value.text"><span v-t="'_pages.blocks._switch.text'"></span></mk-input>
<mk-switch v-model="value.default"><span v-t="'_pages.blocks._switch.default'"></span></mk-switch>
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._switch.name') }}</span></mk-input>
<mk-input v-model="value.text"><span>{{ $t('_pages.blocks._switch.text') }}</span></mk-input>
<mk-switch v-model="value.default"><span>{{ $t('_pages.blocks._switch.default') }}</span></mk-switch>
</section>
</x-container>
</template>

View file

@ -3,9 +3,9 @@
<template #header><fa :icon="faBolt"/> {{ $t('_pages.blocks.textInput') }}</template>
<section style="padding: 0 16px 0 16px;">
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span v-t="'_pages.blocks._textInput.name'"></span></mk-input>
<mk-input v-model="value.text"><span v-t="'_pages.blocks._textInput.text'"></span></mk-input>
<mk-input v-model="value.default" type="text"><span v-t="'_pages.blocks._textInput.default'"></span></mk-input>
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._textInput.name') }}</span></mk-input>
<mk-input v-model="value.text"><span>{{ $t('_pages.blocks._textInput.text') }}</span></mk-input>
<mk-input v-model="value.default" type="text"><span>{{ $t('_pages.blocks._textInput.default') }}</span></mk-input>
</section>
</x-container>
</template>

View file

@ -3,9 +3,9 @@
<template #header><fa :icon="faBolt"/> {{ $t('_pages.blocks.textareaInput') }}</template>
<section style="padding: 0 16px 16px 16px;">
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span v-t="'_pages.blocks._textareaInput.name'"></span></mk-input>
<mk-input v-model="value.text"><span v-t="'_pages.blocks._textareaInput.text'"></span></mk-input>
<mk-textarea v-model="value.default"><span v-t="'_pages.blocks._textareaInput.default'"></span></mk-textarea>
<mk-input v-model="value.name"><template #prefix><fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._textareaInput.name') }}</span></mk-input>
<mk-input v-model="value.text"><span>{{ $t('_pages.blocks._textareaInput.text') }}</span></mk-input>
<mk-textarea v-model="value.default"><span>{{ $t('_pages.blocks._textareaInput.default') }}</span></mk-textarea>
</section>
</x-container>
</template>

View file

@ -41,7 +41,7 @@
</section>
<section v-else-if="value.type === 'fn'" class="" style="padding:0 16px 16px 16px;">
<mk-textarea v-model="slots">
<span v-t="'_pages.script.blocks._fn.slots'"></span>
<span>{{ $t('_pages.script.blocks._fn.slots') }}</span>
<template #desc>{{ $t('_pages.script.blocks._fn.slots-info') }}</template>
</mk-textarea>
<x-v v-if="value.value.expression" v-model="value.value.expression" :title="$t(`_pages.script.blocks._fn.arg1`)" :get-expected-type="() => null" :hpml="hpml" :fn-slots="value.value.slots" :name="name"/>

View file

@ -14,28 +14,28 @@
<router-link class="view" v-if="pageId" :to="`/@${ author.username }/pages/${ currentName }`"><fa :icon="faExternalLinkSquareAlt"/> {{ $t('_pages.viewPage') }}</router-link>
<mk-input v-model="title">
<span v-t="'_pages.title'"></span>
<span>{{ $t('_pages.title') }}</span>
</mk-input>
<template v-if="showOptions">
<mk-input v-model="summary">
<span v-t="'_pages.summary'"></span>
<span>{{ $t('_pages.summary') }}</span>
</mk-input>
<mk-input v-model="name">
<template #prefix>{{ url }}/@{{ author.username }}/pages/</template>
<span v-t="'_pages.url'"></span>
<span>{{ $t('_pages.url') }}</span>
</mk-input>
<mk-switch v-model="alignCenter" v-t="'_pages.alignCenter'"></mk-switch>
<mk-switch v-model="alignCenter">{{ $t('_pages.alignCenter') }}</mk-switch>
<mk-select v-model="font">
<template #label>{{ $t('_pages.font') }}</template>
<option value="serif" v-t="'_pages.fontSerif'"></option>
<option value="sans-serif" v-t="'_pages.fontSansSerif'"></option>
<option value="serif">{{ $t('_pages.fontSerif') }}</option>
<option value="sans-serif">{{ $t('_pages.fontSansSerif') }}</option>
</mk-select>
<mk-switch v-model="hideTitleWhenPinned" v-t="'_pages.hideTitleWhenPinned'"></mk-switch>
<mk-switch v-model="hideTitleWhenPinned">{{ $t('_pages.hideTitleWhenPinned') }}</mk-switch>
<div class="eyeCatch">
<mk-button v-if="eyeCatchingImageId == null && !readonly" @click="setEyeCatchingImage()"><fa :icon="faPlus"/> {{ $t('_pages.eyeCatchingImageSet') }}</mk-button>

View file

@ -14,11 +14,11 @@
<div class="_footer">
<small>@{{ page.user.username }}</small>
<template v-if="$store.getters.isSignedIn && $store.state.i.id === page.userId">
<router-link :to="`/my/pages/edit/${page.id}`" v-t="'_pages.editThisPage'"></router-link>
<a v-if="$store.state.i.pinnedPageId === page.id" @click="pin(false)" v-t="'unpin'"></a>
<a v-else @click="pin(true)" v-t="'pin'"></a>
<router-link :to="`/my/pages/edit/${page.id}`">{{ $t('_pages.editThisPage') }}</router-link>
<a v-if="$store.state.i.pinnedPageId === page.id" @click="pin(false)">{{ $t('unpin') }}</a>
<a v-else @click="pin(true)">{{ $t('pin') }}</a>
</template>
<router-link :to="`./${page.name}/view-source`" v-t="'_pages.viewSource'"></router-link>
<router-link :to="`./${page.name}/view-source`">{{ $t('_pages.viewSource') }}</router-link>
<div class="like">
<button class="_button" @click="unlike()" v-if="page.isLiked" :title="$t('_pages.unlike')"><fa :icon="faHeartS"/></button>
<button class="_button" @click="like()" v-else :title="$t('_pages.like')"><fa :icon="faHeartR"/></button>

View file

@ -1,7 +1,7 @@
<template>
<div>
<portal to="icon"><fa :icon="faStickyNote"/></portal>
<portal to="title" v-t="'pages'"></portal>
<portal to="title">{{ $t('pages') }}</portal>
<mk-container :body-togglable="true">
<template #header><fa :icon="faEdit" fixed-width/>{{ $t('_pages.my') }}</template>

View file

@ -1,9 +1,9 @@
<template>
<div>
<portal to="icon"><fa :icon="faCog"/></portal>
<portal to="title" v-t="'clinetSettings'"></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);" v-t="'accountSettings'"></router-link>
<router-link v-if="$store.getters.isSignedIn" class="_panel _buttonPrimary" to="/my/settings" style="margin-bottom: var(--margin);">{{ $t('accountSettings') }}</router-link>
<x-theme/>
@ -16,7 +16,7 @@
<div class="_content">
<mk-range v-model="sfxVolume" :min="0" :max="1" :step="0.1">
<fa slot="icon" :icon="volumeIcon"/>
<span slot="title" v-t="'volume'"></span>
<span slot="title">{{ $t('volume') }}</span>
</mk-range>
</div>
<div class="_content">
@ -61,25 +61,25 @@
</mk-switch>
</div>
<div class="_content">
<div v-t="'_deck.columnAlign'"></div>
<mk-radio v-model="deckColumnAlign" value="left" v-t="'left'"></mk-radio>
<mk-radio v-model="deckColumnAlign" value="center" v-t="'center'"></mk-radio>
<div>{{ $t('_deck.columnAlign') }}</div>
<mk-radio v-model="deckColumnAlign" value="left">{{ $t('left') }}</mk-radio>
<mk-radio v-model="deckColumnAlign" value="center">{{ $t('center') }}</mk-radio>
</div>
</section>
<section class="_card">
<div class="_title"><fa :icon="faCog"/> {{ $t('appearance') }}</div>
<div class="_content">
<mk-switch v-model="disableAnimatedMfm" v-t="'disableAnimatedMfm'"></mk-switch>
<mk-switch v-model="reduceAnimation" v-t="'reduceUiAnimation'"></mk-switch>
<mk-switch v-model="useBlurEffectForModal" v-t="'useBlurEffectForModal'"></mk-switch>
<mk-switch v-model="disableAnimatedMfm">{{ $t('disableAnimatedMfm') }}</mk-switch>
<mk-switch v-model="reduceAnimation">{{ $t('reduceUiAnimation') }}</mk-switch>
<mk-switch v-model="useBlurEffectForModal">{{ $t('useBlurEffectForModal') }}</mk-switch>
<mk-switch v-model="useOsNativeEmojis">
{{ $t('useOsNativeEmojis') }}
<template #desc><mfm text="🍮🍦🍭🍩🍰🍫🍬🥞🍪"/></template>
</mk-switch>
</div>
<div class="_content">
<div v-t="'fontSize'"></div>
<div>{{ $t('fontSize') }}</div>
<mk-radio v-model="fontSize" value="small"><span style="font-size: 14px;">Aa</span></mk-radio>
<mk-radio v-model="fontSize" :value="null"><span style="font-size: 16px;">Aa</span></mk-radio>
<mk-radio v-model="fontSize" value="large"><span style="font-size: 18px;">Aa</span></mk-radio>
@ -95,11 +95,11 @@
</mk-switch>
</div>
<div class="_content">
<mk-switch v-model="imageNewTab" v-t="'openImageInNewTab'"></mk-switch>
<mk-switch v-model="showFixedPostForm" v-t="'showFixedPostForm'"></mk-switch>
<mk-switch v-model="enableInfiniteScroll" v-t="'enableInfiniteScroll'"></mk-switch>
<mk-switch v-model="fixedWidgetsPosition" v-t="'fixedWidgetsPosition'"></mk-switch>
<mk-switch v-model="disablePagesScript" v-t="'disablePagesScript'"></mk-switch>
<mk-switch v-model="imageNewTab">{{ $t('openImageInNewTab') }}</mk-switch>
<mk-switch v-model="showFixedPostForm">{{ $t('showFixedPostForm') }}</mk-switch>
<mk-switch v-model="enableInfiniteScroll">{{ $t('enableInfiniteScroll') }}</mk-switch>
<mk-switch v-model="fixedWidgetsPosition">{{ $t('fixedWidgetsPosition') }}</mk-switch>
<mk-switch v-model="disablePagesScript">{{ $t('disablePagesScript') }}</mk-switch>
</div>
<div class="_content">
<mk-select v-model="lang">
@ -110,7 +110,7 @@
</div>
</section>
<mk-button @click="cacheClear()" primary style="margin: var(--margin) auto;" v-t="'cacheClear'"></mk-button>
<mk-button @click="cacheClear()" primary style="margin: var(--margin) auto;">{{ $t('cacheClear') }}</mk-button>
</div>
</template>

View file

@ -6,7 +6,7 @@
<summary><fa :icon="faDownload"/> {{ $t('install') }}</summary>
<mk-info warn>{{ $t('pluginInstallWarn') }}</mk-info>
<mk-textarea v-model="script" tall>
<span v-t="'script'"></span>
<span>{{ $t('script') }}</span>
</mk-textarea>
<mk-button @click="install()" primary><fa :icon="faSave"/> {{ $t('install') }}</mk-button>
</details>

View file

@ -3,8 +3,8 @@
<div class="_title"><fa :icon="faListUl"/> {{ $t('sidebar') }}</div>
<div class="_content">
<mk-textarea v-model="items" tall>
<span v-t="'sidebar'"></span>
<template #desc><button class="_textButton" @click="addItem" v-t="'addItem'"></button></template>
<span>{{ $t('sidebar') }}</span>
<template #desc><button class="_textButton" @click="addItem">{{ $t('addItem') }}</button></template>
</mk-textarea>
</div>
<div class="_footer">

View file

@ -6,8 +6,8 @@
<div class="toggleWrapper">
<input type="checkbox" class="dn" id="dn" v-model="darkMode" :disabled="syncDeviceDarkMode"/>
<label for="dn" class="toggle">
<span class="before" v-t="'light'"></span>
<span class="after" v-t="'dark'"></span>
<span class="before">{{ $t('light') }}</span>
<span class="after">{{ $t('dark') }}</span>
<span class="toggle__handler">
<span class="crater crater--1"></span>
<span class="crater crater--2"></span>
@ -22,7 +22,7 @@
</label>
</div>
</div>
<mk-switch v-model="syncDeviceDarkMode" v-t="'syncDeviceDarkMode'"></mk-switch>
<mk-switch v-model="syncDeviceDarkMode">{{ $t('syncDeviceDarkMode') }}</mk-switch>
</div>
<div class="_content">
<mk-select v-model="lightTheme">
@ -43,17 +43,17 @@
<option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
</optgroup>
</mk-select>
<a href="https://assets.msky.cafe/theme/list" rel="noopener" target="_blank" class="_link" v-t="'_theme.explore'"></a>・<router-link to="/theme-editor" class="_link" v-t="'_theme.make'"></router-link>
<a href="https://assets.msky.cafe/theme/list" rel="noopener" target="_blank" class="_link">{{ $t('_theme.explore') }}</a><router-link to="/theme-editor" class="_link">{{ $t('_theme.make') }}</router-link>
</div>
<div class="_content">
<mk-button primary v-if="wallpaper == null" @click="setWallpaper" v-t="'setWallpaper'"></mk-button>
<mk-button primary v-else @click="wallpaper = null" v-t="'removeWallpaper'"></mk-button>
<mk-button primary v-if="wallpaper == null" @click="setWallpaper">{{ $t('setWallpaper') }}</mk-button>
<mk-button primary v-else @click="wallpaper = null">{{ $t('removeWallpaper') }}</mk-button>
</div>
<div class="_content">
<details>
<summary><fa :icon="faDownload"/> {{ $t('_theme.install') }}</summary>
<mk-textarea v-model="installThemeCode">
<span v-t="'_theme.code'"></span>
<span>{{ $t('_theme.code') }}</span>
</mk-textarea>
<mk-button @click="() => install(this.installThemeCode)" :disabled="installThemeCode == null" primary inline><fa :icon="faCheck"/> {{ $t('install') }}</mk-button>
<mk-button @click="() => preview(this.installThemeCode)" :disabled="installThemeCode == null" inline><fa :icon="faEye"/> {{ $t('preview') }}</mk-button>
@ -67,7 +67,7 @@
</mk-select>
<template v-if="selectedTheme">
<mk-textarea readonly tall :value="selectedThemeCode">
<span v-t="'_theme.code'"></span>
<span>{{ $t('_theme.code') }}</span>
</mk-textarea>
<mk-button @click="uninstall()" v-if="!builtinThemes.some(t => t.id == selectedTheme.id)"><fa :icon="faTrashAlt"/> {{ $t('uninstall') }}</mk-button>
</template>

View file

@ -16,7 +16,7 @@
<div v-for="k in Object.keys(selectedFurnitureInfo.props)" :key="k">
<p>{{ k }}</p>
<template v-if="selectedFurnitureInfo.props[k] === 'image'">
<mk-button @click="chooseImage(k, $event)" v-t="'_rooms.chooseImage'"></mk-button>
<mk-button @click="chooseImage(k, $event)">{{ $t('_rooms.chooseImage') }}</mk-button>
</template>
<template v-else-if="selectedFurnitureInfo.props[k] === 'color'">
<input type="color" :value="selectedFurnitureProps ? selectedFurnitureProps[k] : null" @change="updateColor(k, $event)"/>
@ -41,11 +41,11 @@
<div class="_content">
<mk-select :value="roomType" @input="updateRoomType($event)">
<template #label>{{ $t('_rooms.roomType') }}</template>
<option value="default" v-t="'_rooms._roomType.default'"></option>
<option value="washitsu" v-t="'_rooms._roomType.washitsu'"></option>
<option value="default">{{ $t('_rooms._roomType.default') }}</option>
<option value="washitsu">{{ $t('_rooms._roomType.washitsu') }}</option>
</mk-select>
<label v-if="roomType === 'default'">
<span v-t="'_rooms.carpetColor'"></span>
<span>{{ $t('_rooms.carpetColor') }}</span>
<input type="color" :value="carpetColor" @change="updateCarpetColor($event)"/>
</label>
</div>

View file

@ -1,7 +1,7 @@
<template>
<div class="">
<portal to="icon"><fa :icon="faTerminal"/></portal>
<portal to="title" v-t="'scratchpad'"></portal>
<portal to="title">{{ $t('scratchpad') }}</portal>
<div class="_panel">
<prism-editor v-model="code" :line-numbers="false" language="js"/>
@ -16,7 +16,7 @@
</mk-container>
<section class="_card" style="margin-top: var(--margin);">
<div class="_content" v-t="'scratchpadDescription'"></div>
<div class="_content">{{ $t('scratchpadDescription') }}</div>
</section>
</div>
</template>

View file

@ -1,13 +1,13 @@
<template>
<div class="">
<portal to="icon"><fa :icon="faShareAlt"/></portal>
<portal to="title" v-t="'share'"></portal>
<portal to="title">{{ $t('share') }}</portal>
<section class="_card">
<div class="_title" v-if="title">{{ title }}</div>
<div class="_content">
<div>{{ text }}</div>
<mk-button @click="post()" v-if="!posted" v-t="'post'"></mk-button>
<mk-button @click="post()" v-if="!posted">{{ $t('post') }}</mk-button>
<mk-button primary @click="close()" v-else>{{ $t('close') }}</mk-button>
</div>
<div class="_footer" v-if="url">{{ url }}</div>

View file

@ -1,17 +1,17 @@
<template>
<div class="t9makv94">
<portal to="icon"><fa :icon="faPalette"/></portal>
<portal to="title" v-t="'themeEditor'"></portal>
<portal to="title">{{ $t('themeEditor') }}</portal>
<section class="_card">
<div class="_content">
<mk-input v-model="name" required><span v-t="'name'"></span></mk-input>
<mk-input v-model="author" required><span v-t="'author'"></span></mk-input>
<mk-textarea v-model="description"><span v-t="'description'"></span></mk-textarea>
<mk-input v-model="name" required><span>{{ $t('name') }}</span></mk-input>
<mk-input v-model="author" required><span>{{ $t('author') }}</span></mk-input>
<mk-textarea v-model="description"><span>{{ $t('description') }}</span></mk-textarea>
<div class="_inputs">
<div v-text="$t('_theme.base')" />
<mk-radio v-model="baseTheme" value="light" v-t="'light'"></mk-radio>
<mk-radio v-model="baseTheme" value="dark" v-t="'dark'"></mk-radio>
<mk-radio v-model="baseTheme" value="light">{{ $t('light') }}</mk-radio>
<mk-radio v-model="baseTheme" value="dark">{{ $t('dark') }}</mk-radio>
</div>
</div>
<div class="_content">
@ -36,7 +36,7 @@
<!-- ref const -->
<mk-input v-else-if="v.type === 'refConst'" v-model="v.key">
<template #prefix>$</template>
<span v-t="'name'"></span>
<span>{{ $t('name') }}</span>
</mk-input>
<!-- ref props -->
<mk-select class="select" v-else-if="v.type === 'refProp'" v-model="v.key">
@ -48,7 +48,7 @@
<template #label>{{ $t('_theme.funcKind') }}</template>
<option v-for="n in ['alpha', 'darken', 'lighten']" :value="n" :key="n">{{ $t('_theme.' + n) }}</option>
</mk-select>
<mk-input type="number" v-model="v.arg"><span v-t="'_theme.argument'"></span></mk-input>
<mk-input type="number" v-model="v.arg"><span>{{ $t('_theme.argument') }}</span></mk-input>
<mk-select class="select" v-model="v.value">
<template #label>{{ $t('_theme.basedProp') }}</template>
<option v-for="key in themeProps" :value="key" :key="key">{{ $t('_theme.keys.' + key) }}</option>
@ -57,18 +57,18 @@
</div>
</div>
</div>
<mk-button primary @click="addConst" v-t="'_theme.addConstant'"></mk-button>
<mk-button primary @click="addConst">{{ $t('_theme.addConstant') }}</mk-button>
</div>
</div>
<div class="_content">
<mk-textarea v-model="themeToImport">
{{ $t('_theme.importInfo') }}
</mk-textarea>
<mk-button :disabled="!themeToImport.trim()" @click="importTheme" v-t="'import'"></mk-button>
<mk-button :disabled="!themeToImport.trim()" @click="importTheme">{{ $t('import') }}</mk-button>
</div>
<div class="_footer">
<mk-button inline @click="preview" v-t="'preview'"></mk-button>
<mk-button inline primary :disabled="!name || !author" @click="save" v-t="'save'"></mk-button>
<mk-button inline @click="preview">{{ $t('preview') }}</mk-button>
<mk-button inline primary :disabled="!name || !author" @click="save">{{ $t('save') }}</mk-button>
</div>
</section>
</div>

View file

@ -8,7 +8,7 @@
:to="image.note | notePage"
></router-link>
</div>
<p class="empty" v-if="!fetching && images.length == 0" v-t="'nothing'"></p>
<p class="empty" v-if="!fetching && images.length == 0">{{ $t('nothing') }}</p>
</div>
</template>

View file

@ -1,9 +1,9 @@
<template>
<div class="kjeftjfm" v-size="[{ max: 500 }]">
<div class="with">
<button class="_button" @click="with_ = null" :class="{ active: with_ === null }" v-t="'notes'"></button>
<button class="_button" @click="with_ = 'replies'" :class="{ active: with_ === 'replies' }" v-t="'notesAndReplies'"></button>
<button class="_button" @click="with_ = 'files'" :class="{ active: with_ === 'files' }" v-t="'withFiles'"></button>
<button class="_button" @click="with_ = null" :class="{ active: with_ === null }">{{ $t('notes') }}</button>
<button class="_button" @click="with_ = 'replies'" :class="{ active: with_ === 'replies' }">{{ $t('notesAndReplies') }}</button>
<button class="_button" @click="with_ = 'files'" :class="{ active: with_ === 'files' }">{{ $t('withFiles') }}</button>
</div>
<x-notes ref="timeline" :pagination="pagination" @before="$emit('before')" @after="e => $emit('after', e)"/>
</div>

View file

@ -20,7 +20,7 @@
<span v-if="user.isBot" :title="$t('isBot')"><fa :icon="faRobot"/></span>
</div>
</div>
<span class="followed" v-if="$store.getters.isSignedIn && $store.state.i.id != user.id && user.isFollowed" v-t="'followsYou'"></span>
<span class="followed" v-if="$store.getters.isSignedIn && $store.state.i.id != user.id && user.isFollowed">{{ $t('followsYou') }}</span>
<div class="actions" v-if="$store.getters.isSignedIn">
<button @click="menu" class="menu _button" ref="menu"><fa :icon="faEllipsisH"/></button>
<mk-follow-button v-if="$store.state.i.id != user.id" :user="user" :inline="true" :transparent="false" :full="true" class="koudoku"/>
@ -39,7 +39,7 @@
</div>
<div class="description">
<mfm v-if="user.description" :text="user.description" :is-note="false" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
<p v-else class="empty" v-t="'noAccountDescription'"></p>
<p v-else class="empty">{{ $t('noAccountDescription') }}</p>
</div>
<div class="fields system">
<dl class="field" v-if="user.location">
@ -68,15 +68,15 @@
<div class="status">
<router-link :to="user | userPage()" :class="{ active: $route.name === 'user' }">
<b>{{ user.notesCount | number }}</b>
<span v-t="'notes'"></span>
<span>{{ $t('notes') }}</span>
</router-link>
<router-link :to="user | userPage('following')" :class="{ active: $route.name === 'userFollowing' }">
<b>{{ user.followingCount | number }}</b>
<span v-t="'following'"></span>
<span>{{ $t('following') }}</span>
</router-link>
<router-link :to="user | userPage('followers')" :class="{ active: $route.name === 'userFollowers' }">
<b>{{ user.followersCount | number }}</b>
<span v-t="'followers'"></span>
<span>{{ $t('followers') }}</span>
</router-link>
</div>
</div>