mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-04 13:05:57 +02:00
@@ -3,7 +3,7 @@
|
||||
<span slot="header">
|
||||
<template v-if="folder"><span style="margin-right:4px;"><fa :icon="['far', 'folder-open']"/></span>{{ folder.name }}</template>
|
||||
<template v-if="file"><mk-file-type-icon data-icon :type="file.type" style="margin-right:4px;"/>{{ file.name }}</template>
|
||||
<template v-if="!folder && !file"><span style="margin-right:4px;"><fa icon="cloud"/></span>%i18n:common.drive%</template>
|
||||
<template v-if="!folder && !file"><span style="margin-right:4px;"><fa icon="cloud"/></span>{{ $t('@.drive') }}</template>
|
||||
</span>
|
||||
<template slot="func"><button @click="fn"><fa icon="ellipsis-h"/></button></template>
|
||||
<mk-drive
|
||||
@@ -24,9 +24,11 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n(),
|
||||
data() {
|
||||
return {
|
||||
Progress,
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa icon="star"/></span>%i18n:@title%</span>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa icon="star"/></span>{{ $t('title') }}</span>
|
||||
|
||||
<main>
|
||||
<template v-for="favorite in favorites">
|
||||
<mk-note-detail class="post" :note="favorite.note" :key="favorite.note.id"/>
|
||||
</template>
|
||||
<a v-if="existMore" @click="more">%i18n:@more%</a>
|
||||
<a v-if="existMore" @click="more">{{ $t('@.load-more') }}</a>
|
||||
</main>
|
||||
</mk-ui>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/favorites.vue'),
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<template slot="header" v-if="!fetching">
|
||||
<img :src="user.avatarUrl" alt="">
|
||||
{{ '%i18n:@followers-of%'.replace('{}', name) }}
|
||||
<img :src="user.avatarUrl" alt="">{{ $t('followers-of', { name }) }}
|
||||
</template>
|
||||
<mk-users-list
|
||||
v-if="!fetching"
|
||||
@@ -18,11 +17,13 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
import parseAcct from '../../../../../misc/acct/parse';
|
||||
import getUserName from '../../../../../misc/get-user-name';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/followers.vue'),
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
@@ -49,7 +50,7 @@ export default Vue.extend({
|
||||
this.user = user;
|
||||
this.fetching = false;
|
||||
|
||||
document.title = `${'%i18n:@followers-of%'.replace('{}', this.name)} | ${(this as any).os.instanceName}`;
|
||||
document.title = `${this.$t('followers-of').replace('{}', this.name)} | ${(this as any).os.instanceName}`;
|
||||
});
|
||||
},
|
||||
onLoaded() {
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<template slot="header" v-if="!fetching">
|
||||
<img :src="user.avatarUrl" alt="">
|
||||
{{ '%i18n:@following-of%'.replace('{}', name) }}
|
||||
<img :src="user.avatarUrl" alt="">{{ $t('following-of', { name }) }}
|
||||
</template>
|
||||
<mk-users-list
|
||||
v-if="!fetching"
|
||||
@@ -18,10 +17,12 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
import parseAcct from '../../../../../misc/acct/parse';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/following.vue'),
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
@@ -48,7 +49,7 @@ export default Vue.extend({
|
||||
this.user = user;
|
||||
this.fetching = false;
|
||||
|
||||
document.title = `${'%i18n:@followers-of%'.replace('{}', this.name)} | ${(this as any).os.instanceName}`;
|
||||
document.title = `${this.$t('followers-of').replace('{}', this.name)} | ${(this as any).os.instanceName}`;
|
||||
});
|
||||
},
|
||||
onLoaded() {
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa icon="gamepad"/></span>%i18n:@reversi%</span>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa icon="gamepad"/></span>{{ $t('reversi') }}</span>
|
||||
<x-reversi :game-id="$route.params.game" @nav="nav" :self-nav="false"/>
|
||||
</mk-ui>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../../i18n';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/games/reversi.vue'),
|
||||
components: {
|
||||
XReversi: () => import('../../../../common/views/components/games/reversi/reversi.vue')
|
||||
},
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
<mk-ui>
|
||||
<span slot="header" @click="showNav = true">
|
||||
<span :class="$style.title">
|
||||
<span v-if="src == 'home'"><fa icon="home"/>%i18n:@home%</span>
|
||||
<span v-if="src == 'local'"><fa :icon="['far', 'comments']"/>%i18n:@local%</span>
|
||||
<span v-if="src == 'hybrid'"><fa icon="share-alt"/>%i18n:@hybrid%</span>
|
||||
<span v-if="src == 'global'"><fa icon="globe"/>%i18n:@global%</span>
|
||||
<span v-if="src == 'mentions'"><fa icon="at"/>%i18n:@mentions%</span>
|
||||
<span v-if="src == 'messages'"><fa :icon="['far', 'envelope']"/>%i18n:@messages%</span>
|
||||
<span v-if="src == 'home'"><fa icon="home"/>{{ $t('home') }}</span>
|
||||
<span v-if="src == 'local'"><fa :icon="['far', 'comments']"/>{{ $t('local') }}</span>
|
||||
<span v-if="src == 'hybrid'"><fa icon="share-alt"/>{{ $t('hybrid') }}</span>
|
||||
<span v-if="src == 'global'"><fa icon="globe"/>{{ $t('global') }}</span>
|
||||
<span v-if="src == 'mentions'"><fa icon="at"/>{{ $t('mentions') }}</span>
|
||||
<span v-if="src == 'messages'"><fa :icon="['far', 'envelope']"/>{{ $t('messages') }}</span>
|
||||
<span v-if="src == 'list'"><fa icon="list"/>{{ list.title }}</span>
|
||||
<span v-if="src == 'tag'"><fa icon="hashtag"/>{{ tagTl.title }}</span>
|
||||
</span>
|
||||
@@ -28,13 +28,13 @@
|
||||
<div class="pointer"></div>
|
||||
<div class="body">
|
||||
<div>
|
||||
<span :data-active="src == 'home'" @click="src = 'home'"><fa icon="home"/> %i18n:@home%</span>
|
||||
<span :data-active="src == 'local'" @click="src = 'local'" v-if="enableLocalTimeline"><fa :icon="['far', 'comments']"/> %i18n:@local%</span>
|
||||
<span :data-active="src == 'hybrid'" @click="src = 'hybrid'" v-if="enableLocalTimeline"><fa icon="share-alt"/> %i18n:@hybrid%</span>
|
||||
<span :data-active="src == 'global'" @click="src = 'global'"><fa icon="globe"/> %i18n:@global%</span>
|
||||
<span :data-active="src == 'home'" @click="src = 'home'"><fa icon="home"/> {{ $t('home') }}</span>
|
||||
<span :data-active="src == 'local'" @click="src = 'local'" v-if="enableLocalTimeline"><fa :icon="['far', 'comments']"/> {{ $t('local') }}</span>
|
||||
<span :data-active="src == 'hybrid'" @click="src = 'hybrid'" v-if="enableLocalTimeline"><fa icon="share-alt"/> {{ $t('hybrid') }}</span>
|
||||
<span :data-active="src == 'global'" @click="src = 'global'"><fa icon="globe"/> {{ $t('global') }}</span>
|
||||
<div class="hr"></div>
|
||||
<span :data-active="src == 'mentions'" @click="src = 'mentions'"><fa icon="at"/> %i18n:@mentions%<i class="badge" v-if="$store.state.i.hasUnreadMentions"><fa icon="circle"/></i></span>
|
||||
<span :data-active="src == 'messages'" @click="src = 'messages'"><fa :icon="['far', 'envelope']"/> %i18n:@messages%<i class="badge" v-if="$store.state.i.hasUnreadSpecifiedNotes"><fa icon="circle"/></i></span>
|
||||
<span :data-active="src == 'mentions'" @click="src = 'mentions'"><fa icon="at"/> {{ $t('mentions') }}<i class="badge" v-if="$store.state.i.hasUnreadMentions"><fa icon="circle"/></i></span>
|
||||
<span :data-active="src == 'messages'" @click="src = 'messages'"><fa :icon="['far', 'envelope']"/> {{ $t('messages') }}<i class="badge" v-if="$store.state.i.hasUnreadSpecifiedNotes"><fa icon="circle"/></i></span>
|
||||
<template v-if="lists">
|
||||
<div class="hr" v-if="lists.length > 0"></div>
|
||||
<span v-for="l in lists" :data-active="src == 'list' && list == l" @click="src = 'list'; list = l" :key="l.id"><fa icon="list"/> {{ l.title }}</span>
|
||||
@@ -61,10 +61,13 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
import XTl from './home.timeline.vue';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/home.vue'),
|
||||
|
||||
components: {
|
||||
XTl
|
||||
},
|
||||
|
||||
@@ -10,9 +10,11 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import parseAcct from '../../../../../misc/acct/parse';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n(),
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
@@ -47,7 +49,7 @@ export default Vue.extend({
|
||||
this.user = user;
|
||||
this.fetching = false;
|
||||
|
||||
document.title = `%i18n:@messaging%: ${Vue.filter('userName')(this.user)} | ${(this as any).os.instanceName}`;
|
||||
document.title = `${this.$t('@.messaging')}: ${Vue.filter('userName')(this.user)} | ${(this as any).os.instanceName}`;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa :icon="['far', 'comments']"/></span>%i18n:@messaging%</span>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa :icon="['far', 'comments']"/></span>{{ $t('@.messaging') }}</span>
|
||||
<mk-messaging @navigate="navigate" :header-top="48"/>
|
||||
</mk-ui>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import getAcct from '../../../../../misc/acct/render';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n(),
|
||||
mounted() {
|
||||
document.title = `${(this as any).os.instanceName} %i18n:@messaging%`;
|
||||
document.title = `${(this as any).os.instanceName} ${this.$t('@.messaging')}`;
|
||||
},
|
||||
methods: {
|
||||
navigate(user) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa :icon="['far', 'sticky-note']"/></span>%i18n:@title%</span>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa :icon="['far', 'sticky-note']"/></span>{{ $t('title') }}</span>
|
||||
<main v-if="!fetching">
|
||||
<div>
|
||||
<mk-note-detail :note="note"/>
|
||||
</div>
|
||||
<footer>
|
||||
<router-link v-if="note.prev" :to="note.prev"><fa icon="angle-left"/> %i18n:@prev%</router-link>
|
||||
<router-link v-if="note.next" :to="note.next">%i18n:@next% <fa icon="angle-right"/></router-link>
|
||||
<router-link v-if="note.prev" :to="note.prev"><fa icon="angle-left"/> {{ $t('prev') }}</router-link>
|
||||
<router-link v-if="note.next" :to="note.next">{{ $t('next') }} <fa icon="angle-right"/></router-link>
|
||||
</footer>
|
||||
</main>
|
||||
</mk-ui>
|
||||
@@ -15,9 +15,11 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/note.vue'),
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa :icon="['far', 'bell']"/></span>%i18n:@notifications%</span>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa :icon="['far', 'bell']"/></span>{{ $t('notifications') }}</span>
|
||||
<template slot="func"><button @click="fn"><fa icon="check"/></button></template>
|
||||
|
||||
<main>
|
||||
@@ -11,17 +11,19 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/notifications.vue'),
|
||||
mounted() {
|
||||
document.title = '%i18n:@notifications%';
|
||||
document.title = this.$t('notifications');
|
||||
|
||||
Progress.start();
|
||||
},
|
||||
methods: {
|
||||
fn() {
|
||||
const ok = window.confirm('%i18n:@read-all%');
|
||||
const ok = window.confirm(this.$t('read-all'));
|
||||
if (!ok) return;
|
||||
|
||||
(this as any).api('notifications/mark_all_as_read');
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header"><fa :icon="['far', 'envelope']"/>%i18n:@title%</span>
|
||||
<span slot="header"><fa :icon="['far', 'envelope']"/>{{ $t('title') }}</span>
|
||||
|
||||
<main>
|
||||
<div v-for="req in requests">
|
||||
<router-link :key="req.id" :to="req.follower | userPage">{{ req.follower | userName }}</router-link>
|
||||
<span>
|
||||
<a @click="accept(req.follower)">%i18n:@accept%</a>|<a @click="reject(req.follower)">%i18n:@reject%</a>
|
||||
<a @click="accept(req.follower)">{{ $t('accept') }}</a>|<a @click="reject(req.follower)">{{ $t('reject') }}</a>
|
||||
</span>
|
||||
</div>
|
||||
</main>
|
||||
@@ -15,9 +15,11 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/received-follow-requests.vue'),
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
@@ -25,7 +27,7 @@ export default Vue.extend({
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
document.title = '%i18n:@title%';
|
||||
document.title = this.$t('title');
|
||||
|
||||
Progress.start();
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<span slot="header"><fa icon="search"/> {{ q }}</span>
|
||||
|
||||
<main>
|
||||
<p :class="$style.empty" v-if="!fetching && empty"><fa icon="search"/> {{ '%i18n:not-found%'.split('{}')[0] }}{{ q }}{{ '%i18n:not-found%'.split('{}')[1] }}</p>
|
||||
<p :class="$style.empty" v-if="!fetching && empty"><fa icon="search"/> {{ $t('not-found', { q }) }}</p>
|
||||
<mk-notes ref="timeline" :more="existMore ? more : null"/>
|
||||
</main>
|
||||
</mk-ui>
|
||||
@@ -11,11 +11,13 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
const limit = 20;
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/search.vue'),
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="mk-selectdrive">
|
||||
<header>
|
||||
<h1>%i18n:@select-file%<span class="count" v-if="files.length > 0">({{ files.length }})</span></h1>
|
||||
<h1>{{ $t('select-file') }}<span class="count" v-if="files.length > 0">({{ files.length }})</span></h1>
|
||||
<button class="upload" @click="upload"><fa icon="upload"/></button>
|
||||
<button v-if="multiple" class="ok" @click="ok"><fa icon="check"/></button>
|
||||
</header>
|
||||
@@ -11,8 +11,10 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/selectdrive.vue'),
|
||||
data() {
|
||||
return {
|
||||
files: []
|
||||
@@ -25,7 +27,7 @@ export default Vue.extend({
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = '%i18n:@title%';
|
||||
document.title = this.$t('title');
|
||||
},
|
||||
methods: {
|
||||
onSelected(file) {
|
||||
|
||||
@@ -1,84 +1,84 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa icon="cog"/></span>%i18n:@settings%</span>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa icon="cog"/></span>{{ $t('settings') }}</span>
|
||||
<main>
|
||||
<div class="signin-as" v-html="'%i18n:@signed-in-as%'.replace('{}', `<b>${name}</b>`)"></div>
|
||||
<div class="signin-as" v-html="this.$t('signed-in-as').replace('{}', `<b>${name}</b>`)"></div>
|
||||
|
||||
<div>
|
||||
<mk-profile-editor/>
|
||||
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="palette"/> %i18n:@theme%</div>
|
||||
<div slot="title"><fa icon="palette"/> {{ $t('theme') }}</div>
|
||||
<section>
|
||||
<mk-theme/>
|
||||
</section>
|
||||
</ui-card>
|
||||
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="poll-h"/> %i18n:@design%</div>
|
||||
<div slot="title"><fa icon="poll-h"/> {{ $t('design') }}</div>
|
||||
|
||||
<section>
|
||||
<ui-switch v-model="darkmode">%i18n:@dark-mode%</ui-switch>
|
||||
<ui-switch v-model="circleIcons">%i18n:@circle-icons%</ui-switch>
|
||||
<ui-switch v-model="reduceMotion">%i18n:common.reduce-motion% (%i18n:common.this-setting-is-this-device-only%)</ui-switch>
|
||||
<ui-switch v-model="contrastedAcct">%i18n:@contrasted-acct%</ui-switch>
|
||||
<ui-switch v-model="showFullAcct">%i18n:common.show-full-acct%</ui-switch>
|
||||
<ui-switch v-model="useOsDefaultEmojis">%i18n:common.use-os-default-emojis%</ui-switch>
|
||||
<ui-switch v-model="iLikeSushi">%i18n:common.i-like-sushi%</ui-switch>
|
||||
<ui-switch v-model="disableAnimatedMfm">%i18n:common.disable-animated-mfm%</ui-switch>
|
||||
<ui-switch v-model="alwaysShowNsfw">%i18n:common.always-show-nsfw% (%i18n:common.this-setting-is-this-device-only%)</ui-switch>
|
||||
<ui-switch v-model="darkmode">{{ $t('dark-mode') }}</ui-switch>
|
||||
<ui-switch v-model="circleIcons">{{ $t('circle-icons') }}</ui-switch>
|
||||
<ui-switch v-model="reduceMotion">{{ $t('@.reduce-motion') }} ({{ $t('@.this-setting-is-this-device-only') }})</ui-switch>
|
||||
<ui-switch v-model="contrastedAcct">{{ $t('contrasted-acct') }}</ui-switch>
|
||||
<ui-switch v-model="showFullAcct">{{ $t('@.show-full-acct') }}</ui-switch>
|
||||
<ui-switch v-model="useOsDefaultEmojis">{{ $t('@.use-os-default-emojis') }}</ui-switch>
|
||||
<ui-switch v-model="iLikeSushi">{{ $t('@.i-like-sushi') }}</ui-switch>
|
||||
<ui-switch v-model="disableAnimatedMfm">{{ $t('@.disable-animated-mfm') }}</ui-switch>
|
||||
<ui-switch v-model="alwaysShowNsfw">{{ $t('@.always-show-nsfw') }} ({{ $t('@.this-setting-is-this-device-only') }})</ui-switch>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<ui-switch v-model="games_reversi_showBoardLabels">%i18n:common.show-reversi-board-labels%</ui-switch>
|
||||
<ui-switch v-model="games_reversi_useContrastStones">%i18n:common.use-contrast-reversi-stones%</ui-switch>
|
||||
<ui-switch v-model="games_reversi_showBoardLabels">{{ $t('@.show-reversi-board-labels') }}</ui-switch>
|
||||
<ui-switch v-model="games_reversi_useContrastStones">{{ $t('@.use-contrast-reversi-stones') }}</ui-switch>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<header>%i18n:@timeline%</header>
|
||||
<header>{{ $t('timeline') }}</header>
|
||||
<div>
|
||||
<ui-switch v-model="showReplyTarget">%i18n:@show-reply-target%</ui-switch>
|
||||
<ui-switch v-model="showMyRenotes">%i18n:@show-my-renotes%</ui-switch>
|
||||
<ui-switch v-model="showRenotedMyNotes">%i18n:@show-renoted-my-notes%</ui-switch>
|
||||
<ui-switch v-model="showLocalRenotes">%i18n:@show-local-renotes%</ui-switch>
|
||||
<ui-switch v-model="showReplyTarget">{{ $t('show-reply-target') }}</ui-switch>
|
||||
<ui-switch v-model="showMyRenotes">{{ $t('show-my-renotes') }}</ui-switch>
|
||||
<ui-switch v-model="showRenotedMyNotes">{{ $t('show-renoted-my-notes') }}</ui-switch>
|
||||
<ui-switch v-model="showLocalRenotes">{{ $t('show-local-renotes') }}</ui-switch>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<header>%i18n:@post-style%</header>
|
||||
<ui-radio v-model="postStyle" value="standard">%i18n:@post-style-standard%</ui-radio>
|
||||
<ui-radio v-model="postStyle" value="smart">%i18n:@post-style-smart%</ui-radio>
|
||||
<header>{{ $t('post-style') }}</header>
|
||||
<ui-radio v-model="postStyle" value="standard">{{ $t('post-style-standard') }}</ui-radio>
|
||||
<ui-radio v-model="postStyle" value="smart">{{ $t('post-style-smart') }}</ui-radio>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<header>%i18n:@notification-position%</header>
|
||||
<ui-radio v-model="mobileNotificationPosition" value="bottom">%i18n:@notification-position-bottom%</ui-radio>
|
||||
<ui-radio v-model="mobileNotificationPosition" value="top">%i18n:@notification-position-top%</ui-radio>
|
||||
<header>{{ $t('notification-position') }}</header>
|
||||
<ui-radio v-model="mobileNotificationPosition" value="bottom">{{ $t('notification-position-bottom') }}</ui-radio>
|
||||
<ui-radio v-model="mobileNotificationPosition" value="top">{{ $t('notification-position-top') }}</ui-radio>
|
||||
</section>
|
||||
</ui-card>
|
||||
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="sliders-h"/> %i18n:@behavior%</div>
|
||||
<div slot="title"><fa icon="sliders-h"/> {{ $t('behavior') }}</div>
|
||||
|
||||
<section>
|
||||
<ui-switch v-model="fetchOnScroll">%i18n:@fetch-on-scroll%</ui-switch>
|
||||
<ui-switch v-model="disableViaMobile">%i18n:@disable-via-mobile%</ui-switch>
|
||||
<ui-switch v-model="loadRawImages">%i18n:@load-raw-images%</ui-switch>
|
||||
<ui-switch v-model="loadRemoteMedia">%i18n:@load-remote-media%</ui-switch>
|
||||
<ui-switch v-model="lightmode">%i18n:@i-am-under-limited-internet%</ui-switch>
|
||||
<ui-switch v-model="fetchOnScroll">{{ $t('fetch-on-scroll') }}</ui-switch>
|
||||
<ui-switch v-model="disableViaMobile">{{ $t('disable-via-mobile') }}</ui-switch>
|
||||
<ui-switch v-model="loadRawImages">{{ $t('load-raw-images') }}</ui-switch>
|
||||
<ui-switch v-model="loadRemoteMedia">{{ $t('load-remote-media') }}</ui-switch>
|
||||
<ui-switch v-model="lightmode">{{ $t('i-am-under-limited-internet') }}</ui-switch>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<header>%i18n:@note-visibility%</header>
|
||||
<ui-switch v-model="rememberNoteVisibility">%i18n:@remember-note-visibility%</ui-switch>
|
||||
<header>{{ $t('note-visibility') }}</header>
|
||||
<ui-switch v-model="rememberNoteVisibility">{{ $t('remember-note-visibility') }}</ui-switch>
|
||||
<section>
|
||||
<header>%i18n:@default-note-visibility%</header>
|
||||
<header>{{ $t('default-note-visibility') }}</header>
|
||||
<ui-select v-model="defaultNoteVisibility">
|
||||
<option value="public">%i18n:common.note-visibility.public%</option>
|
||||
<option value="home">%i18n:common.note-visibility.home%</option>
|
||||
<option value="followers">%i18n:common.note-visibility.followers%</option>
|
||||
<option value="specified">%i18n:common.note-visibility.specified%</option>
|
||||
<option value="private">%i18n:common.note-visibility.private%</option>
|
||||
<option value="public">{{ $t('@.note-visibility.public') }}</option>
|
||||
<option value="home">{{ $t('@.note-visibility.home') }}</option>
|
||||
<option value="followers">{{ $t('@.note-visibility.followers') }}</option>
|
||||
<option value="specified">{{ $t('@.note-visibility.specified') }}</option>
|
||||
<option value="private">{{ $t('@.note-visibility.private') }}</option>
|
||||
</ui-select>
|
||||
</section>
|
||||
</section>
|
||||
@@ -89,52 +89,52 @@
|
||||
<mk-mute-and-block/>
|
||||
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="volume-up"/> %i18n:@sound%</div>
|
||||
<div slot="title"><fa icon="volume-up"/> {{ $t('sound') }}</div>
|
||||
|
||||
<section>
|
||||
<ui-switch v-model="enableSounds">%i18n:@enable-sounds%</ui-switch>
|
||||
<ui-switch v-model="enableSounds">{{ $t('enable-sounds') }}</ui-switch>
|
||||
</section>
|
||||
</ui-card>
|
||||
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="language"/> %i18n:@lang%</div>
|
||||
<div slot="title"><fa icon="language"/> {{ $t('lang') }}</div>
|
||||
|
||||
<section class="fit-top">
|
||||
<ui-select v-model="lang" placeholder="%i18n:@auto%">
|
||||
<optgroup label="%i18n:@recommended%">
|
||||
<option value="">%i18n:@auto%</option>
|
||||
<ui-select v-model="lang" :placeholder="$t('placeholder')">
|
||||
<optgroup :label="$t('label')">
|
||||
<option value="">{{ $t('auto') }}</option>
|
||||
</optgroup>
|
||||
|
||||
<optgroup label="%i18n:@specify-language%">
|
||||
<optgroup :label="$t('label')">
|
||||
<option v-for="x in langs" :value="x[0]" :key="x[0]">{{ x[1] }}</option>
|
||||
</optgroup>
|
||||
</ui-select>
|
||||
<span><fa icon="info-circle"/> %i18n:@lang-tip%</span>
|
||||
<span><fa icon="info-circle"/> {{ $t('lang-tip') }}</span>
|
||||
</section>
|
||||
</ui-card>
|
||||
|
||||
<ui-card>
|
||||
<div slot="title"><fa :icon="['fab', 'twitter']"/> %i18n:@twitter%</div>
|
||||
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter') }}</div>
|
||||
|
||||
<section>
|
||||
<p class="account" v-if="$store.state.i.twitter"><a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
|
||||
<p>
|
||||
<a :href="`${apiUrl}/connect/twitter`" target="_blank">{{ $store.state.i.twitter ? '%i18n:@twitter-reconnect%' : '%i18n:@twitter-connect%' }}</a>
|
||||
<a :href="`${apiUrl}/connect/twitter`" target="_blank">{{ $store.state.i.twitter ? this.$t('twitter-reconnect') : this.$t('twitter-connect') }}</a>
|
||||
<span v-if="$store.state.i.twitter"> or </span>
|
||||
<a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="$store.state.i.twitter">%i18n:@twitter-disconnect%</a>
|
||||
<a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="$store.state.i.twitter">{{ $t('twitter-disconnect') }}</a>
|
||||
</p>
|
||||
</section>
|
||||
</ui-card>
|
||||
|
||||
<ui-card>
|
||||
<div slot="title"><fa :icon="['fab', 'github']"/> %i18n:@github%</div>
|
||||
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github') }}</div>
|
||||
|
||||
<section>
|
||||
<p class="account" v-if="$store.state.i.github"><a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p>
|
||||
<p>
|
||||
<a :href="`${apiUrl}/connect/github`" target="_blank">{{ $store.state.i.github ? '%i18n:@github-reconnect%' : '%i18n:@github-connect%' }}</a>
|
||||
<a :href="`${apiUrl}/connect/github`" target="_blank">{{ $store.state.i.github ? this.$t('github-reconnect') : this.$t('github-connect') }}</a>
|
||||
<span v-if="$store.state.i.github"> or </span>
|
||||
<a :href="`${apiUrl}/disconnect/github`" target="_blank" v-if="$store.state.i.github">%i18n:@github-disconnect%</a>
|
||||
<a :href="`${apiUrl}/disconnect/github`" target="_blank" v-if="$store.state.i.github">{{ $t('github-disconnect') }}</a>
|
||||
</p>
|
||||
</section>
|
||||
</ui-card>
|
||||
@@ -142,29 +142,29 @@
|
||||
<mk-api-settings />
|
||||
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="unlock-alt"/> %i18n:@password%</div>
|
||||
<div slot="title"><fa icon="unlock-alt"/> {{ $t('password') }}</div>
|
||||
<section>
|
||||
<mk-password-settings/>
|
||||
</section>
|
||||
</ui-card>
|
||||
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="sync-alt"/> %i18n:@update%</div>
|
||||
<div slot="title"><fa icon="sync-alt"/> {{ $t('update') }}</div>
|
||||
|
||||
<section>
|
||||
<div>%i18n:@version% <i>{{ version }}</i></div>
|
||||
<div>{{ $t('version') }} <i>{{ version }}</i></div>
|
||||
<template v-if="latestVersion !== undefined">
|
||||
<div>%i18n:@latest-version% <i>{{ latestVersion ? latestVersion : version }}</i></div>
|
||||
<div>{{ $t('latest-version') }} <i>{{ latestVersion ? latestVersion : version }}</i></div>
|
||||
</template>
|
||||
<ui-button @click="checkForUpdate" :disabled="checkingForUpdate">
|
||||
<template v-if="checkingForUpdate">%i18n:@update-checking%<mk-ellipsis/></template>
|
||||
<template v-else>%i18n:@check-for-updates%</template>
|
||||
<template v-if="checkingForUpdate">{{ $t('update-checking') }}<mk-ellipsis/></template>
|
||||
<template v-else>{{ $t('check-for-updates') }}</template>
|
||||
</ui-button>
|
||||
</section>
|
||||
</ui-card>
|
||||
</div>
|
||||
|
||||
<div class="signout" @click="signout">%i18n:@signout%</div>
|
||||
<div class="signout" @click="signout">{{ $t('signout') }}</div>
|
||||
|
||||
<footer>
|
||||
<small>ver {{ version }} ({{ codename }})</small>
|
||||
@@ -175,10 +175,12 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import { apiUrl, clientVersion as version, codename, langs } from '../../../config';
|
||||
import checkForUpdate from '../../../common/scripts/check-for-update';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/settings.vue'),
|
||||
data() {
|
||||
return {
|
||||
apiUrl,
|
||||
@@ -327,7 +329,7 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
mounted() {
|
||||
document.title = '%i18n:@settings%';
|
||||
document.title = this.$t('settings');
|
||||
},
|
||||
|
||||
methods: {
|
||||
@@ -342,13 +344,13 @@ export default Vue.extend({
|
||||
this.latestVersion = newer;
|
||||
if (newer == null) {
|
||||
(this as any).apis.dialog({
|
||||
title: '%i18n:@no-updates%',
|
||||
text: '%i18n:@no-updates-desc%'
|
||||
title: this.$t('no-updates'),
|
||||
text: this.$t('no-updates-desc')
|
||||
});
|
||||
} else {
|
||||
(this as any).apis.dialog({
|
||||
title: '%i18n:@update-available%',
|
||||
text: '%i18n:@update-available-desc%'
|
||||
title: this.$t('update-available'),
|
||||
text: this.$t('update-available-desc')
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
<template>
|
||||
<div class="azibmfpleajagva420swmu4c3r7ni7iw">
|
||||
<h1>{{ '%i18n:@share-with%'.replace('{}', name) }}</h1>
|
||||
<h1>{{ $t('share-with', { name }) }}</h1>
|
||||
<div>
|
||||
<mk-signin v-if="!$store.getters.isSignedIn"/>
|
||||
<mk-post-form v-else-if="!posted" :initial-text="text" :instant="true" @posted="posted = true"/>
|
||||
<p v-if="posted" class="posted"><fa icon="check"/></p>
|
||||
</div>
|
||||
<ui-button class="close" v-if="posted" @click="close">%i18n:common.close%</ui-button>
|
||||
<ui-button class="close" v-if="posted" @click="close">{{ $t('@.close') }}</ui-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/share.vue'),
|
||||
data() {
|
||||
return {
|
||||
name: null,
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
<template>
|
||||
<div class="signup">
|
||||
<h1>%i18n:@lets-start%</h1>
|
||||
<h1>{{ $t('lets-start') }}</h1>
|
||||
<mk-signup/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
export default Vue.extend({});
|
||||
import i18n from '../../../i18n';
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/signup.vue'),});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<span slot="header"><span style="margin-right:4px;"><fa icon="hashtag"/></span>{{ $route.params.tag }}</span>
|
||||
|
||||
<main>
|
||||
<p v-if="!fetching && empty"><fa icon="search"/> {{ '%i18n:no-posts-found%'.split('{}')[0] }}{{ q }}{{ '%i18n:no-posts-found%'.split('{}')[1] }}</p>
|
||||
<p v-if="!fetching && empty"><fa icon="search"/> {{ $t('no-posts-found', { q }) }}</p>
|
||||
<mk-notes ref="timeline" :more="existMore ? more : null"/>
|
||||
</main>
|
||||
</mk-ui>
|
||||
@@ -11,11 +11,13 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
const limit = 20;
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/tag.vue'),
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header"><fa icon="list"/>%i18n:@title%</span>
|
||||
<span slot="header"><fa icon="list"/>{{ $t('title') }}</span>
|
||||
<template slot="func"><button @click="fn"><fa icon="plus"/></button></template>
|
||||
|
||||
<main>
|
||||
@@ -13,9 +13,11 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/user-lists.vue'),
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
@@ -23,7 +25,7 @@ export default Vue.extend({
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
document.title = '%i18n:@title%';
|
||||
document.title = this.$t('title');
|
||||
|
||||
Progress.start();
|
||||
|
||||
@@ -37,7 +39,7 @@ export default Vue.extend({
|
||||
methods: {
|
||||
fn() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@enter-list-name%',
|
||||
title: this.$t('enter-list-name'),
|
||||
}).then(async title => {
|
||||
const list = await (this as any).api('users/lists/create', {
|
||||
title
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<mk-ui>
|
||||
<template slot="header" v-if="!fetching"><img :src="user.avatarUrl" alt="">{{ user | userName }}</template>
|
||||
<main v-if="!fetching">
|
||||
<div class="is-suspended" v-if="user.isSuspended"><p><fa icon="exclamation-triangle"/> %i18n:@is-suspended%</p></div>
|
||||
<div class="is-remote" v-if="user.host != null"><p><fa icon="exclamation-triangle"/> %i18n:common.is-remote-user%<a :href="user.url || user.uri" target="_blank">%i18n:common.view-on-remote%</a></p></div>
|
||||
<div class="is-suspended" v-if="user.isSuspended"><p><fa icon="exclamation-triangle"/> {{ $t('is-suspended') }}</p></div>
|
||||
<div class="is-remote" v-if="user.host != null"><p><fa icon="exclamation-triangle"/> {{ $t('@.is-remote-user') }}<a :href="user.url || user.uri" target="_blank">{{ $t('@.view-on-remote') }}</a></p></div>
|
||||
<header>
|
||||
<div class="banner" :style="style"></div>
|
||||
<div class="body">
|
||||
@@ -17,7 +17,7 @@
|
||||
<div class="title">
|
||||
<h1>{{ user | userName }}</h1>
|
||||
<span class="username"><mk-acct :user="user" :detail="true" /></span>
|
||||
<span class="followed" v-if="user.isFollowed">%i18n:@follows-you%</span>
|
||||
<span class="followed" v-if="user.isFollowed">{{ $t('follows-you') }}</span>
|
||||
</div>
|
||||
<div class="description">
|
||||
<misskey-flavored-markdown v-if="user.description" :text="user.description" :i="$store.state.i"/>
|
||||
@@ -33,24 +33,24 @@
|
||||
<div class="status">
|
||||
<a>
|
||||
<b>{{ user.notesCount | number }}</b>
|
||||
<i>%i18n:@notes%</i>
|
||||
<i>{{ $t('notes') }}</i>
|
||||
</a>
|
||||
<a :href="user | userPage('following')">
|
||||
<b>{{ user.followingCount | number }}</b>
|
||||
<i>%i18n:@following%</i>
|
||||
<i>{{ $t('following') }}</i>
|
||||
</a>
|
||||
<a :href="user | userPage('followers')">
|
||||
<b>{{ user.followersCount | number }}</b>
|
||||
<i>%i18n:@followers%</i>
|
||||
<i>{{ $t('followers') }}</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<nav>
|
||||
<div class="nav-container">
|
||||
<a :data-active="page == 'home'" @click="page = 'home'"><fa icon="home"/> %i18n:@overview%</a>
|
||||
<a :data-active="page == 'notes'" @click="page = 'notes'"><fa :icon="['far', 'comment-alt']"/> %i18n:@timeline%</a>
|
||||
<a :data-active="page == 'media'" @click="page = 'media'"><fa icon="image"/> %i18n:@media%</a>
|
||||
<a :data-active="page == 'home'" @click="page = 'home'"><fa icon="home"/> {{ $t('overview') }}</a>
|
||||
<a :data-active="page == 'notes'" @click="page = 'notes'"><fa :icon="['far', 'comment-alt']"/> {{ $t('timeline') }}</a>
|
||||
<a :data-active="page == 'media'" @click="page = 'media'"><fa icon="image"/> {{ $t('media') }}</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="body">
|
||||
@@ -64,6 +64,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import * as age from 's-age';
|
||||
import parseAcct from '../../../../../misc/acct/parse';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
@@ -71,6 +72,7 @@ import Menu from '../../../common/views/components/menu.vue';
|
||||
import XHome from './user/home.vue';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/user.vue'),
|
||||
components: {
|
||||
XHome
|
||||
},
|
||||
@@ -115,7 +117,7 @@ export default Vue.extend({
|
||||
menu() {
|
||||
let menu = [{
|
||||
icon: this.user.isMuted ? '<fa icon="eye"/>' : '<fa icon="eye-slash"/>',
|
||||
text: this.user.isMuted ? '%i18n:@unmute%' : '%i18n:@mute%',
|
||||
text: this.user.isMuted ? this.$t('unmute') : this.$t('mute'),
|
||||
action: () => {
|
||||
if (this.user.isMuted) {
|
||||
(this as any).api('mute/delete', {
|
||||
@@ -137,7 +139,7 @@ export default Vue.extend({
|
||||
}
|
||||
}, {
|
||||
icon: this.user.isBlocking ? '<fa icon="user"/>' : '<fa icon="user-slash"/>',
|
||||
text: this.user.isBlocking ? '%i18n:@unblock%' : '%i18n:@block%',
|
||||
text: this.user.isBlocking ? this.$t('unblock') : this.$t('block'),
|
||||
action: () => {
|
||||
if (this.user.isBlocking) {
|
||||
(this as any).api('blocking/delete', {
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
<template>
|
||||
<div class="root followers-you-know">
|
||||
<p class="initializing" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>%i18n:@loading%<mk-ellipsis/></p>
|
||||
<p class="initializing" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||
<div v-if="!fetching && users.length > 0">
|
||||
<a v-for="user in users" :key="user.id" :href="user | userPage">
|
||||
<img :src="user.avatarUrl" :alt="user | userName"/>
|
||||
</a>
|
||||
</div>
|
||||
<p class="empty" v-if="!fetching && users.length == 0">%i18n:@no-users%</p>
|
||||
<p class="empty" v-if="!fetching && users.length == 0">{{ $t('no-users') }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../../i18n';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/user/home.followers-you-know.vue'),
|
||||
props: ['user'],
|
||||
data() {
|
||||
return {
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
<template>
|
||||
<div class="root friends">
|
||||
<p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>%i18n:@loading%<mk-ellipsis/></p>
|
||||
<p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||
<div v-if="!fetching && users.length > 0">
|
||||
<mk-user-card v-for="user in users" :key="user.id" :user="user"/>
|
||||
</div>
|
||||
<p class="empty" v-if="!fetching && users.length == 0">%i18n:@no-users%</p>
|
||||
<p class="empty" v-if="!fetching && users.length == 0">{{ $t('no-users') }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../../i18n';
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/user/home.friends.vue'),
|
||||
props: ['user'],
|
||||
data() {
|
||||
return {
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
<template>
|
||||
<div class="root notes">
|
||||
<p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>%i18n:@loading%<mk-ellipsis/></p>
|
||||
<p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||
<div v-if="!fetching && notes.length > 0">
|
||||
<mk-note-card v-for="note in notes" :key="note.id" :note="note"/>
|
||||
</div>
|
||||
<p class="empty" v-if="!fetching && notes.length == 0">%i18n:@no-notes%</p>
|
||||
<p class="empty" v-if="!fetching && notes.length == 0">{{ $t('no-notes') }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../../i18n';
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/user/home.notes.vue'),
|
||||
props: ['user'],
|
||||
data() {
|
||||
return {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="root photos">
|
||||
<p class="initializing" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>%i18n:@loading%<mk-ellipsis/></p>
|
||||
<p class="initializing" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||
<div class="stream" v-if="!fetching && images.length > 0">
|
||||
<a v-for="image in images"
|
||||
class="img"
|
||||
@@ -8,14 +8,16 @@
|
||||
:href="image.note | notePage"
|
||||
></a>
|
||||
</div>
|
||||
<p class="empty" v-if="!fetching && images.length == 0">%i18n:@no-photos%</p>
|
||||
<p class="empty" v-if="!fetching && images.length == 0">{{ $t('no-photos') }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../../i18n';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/user/home.photos.vue'),
|
||||
props: ['user'],
|
||||
data() {
|
||||
return {
|
||||
|
||||
@@ -2,47 +2,49 @@
|
||||
<div class="root home">
|
||||
<mk-note-detail v-for="n in user.pinnedNotes" :key="n.id" :note="n" :compact="true"/>
|
||||
<section class="recent-notes">
|
||||
<h2><fa :icon="['far', 'comments']"/>%i18n:@recent-notes%</h2>
|
||||
<h2><fa :icon="['far', 'comments']"/>{{ $t('recent-notes') }}</h2>
|
||||
<div>
|
||||
<x-notes :user="user"/>
|
||||
</div>
|
||||
</section>
|
||||
<section class="images">
|
||||
<h2><fa icon="image"/>%i18n:@images%</h2>
|
||||
<h2><fa icon="image"/>{{ $t('images') }}</h2>
|
||||
<div>
|
||||
<x-photos :user="user"/>
|
||||
</div>
|
||||
</section>
|
||||
<section class="activity">
|
||||
<h2><fa icon="chart-bar"/>%i18n:@activity%</h2>
|
||||
<h2><fa icon="chart-bar"/>{{ $t('activity') }}</h2>
|
||||
<div>
|
||||
<mk-activity :user="user"/>
|
||||
</div>
|
||||
</section>
|
||||
<section class="frequently-replied-users">
|
||||
<h2><fa icon="users"/>%i18n:@frequently-replied-users%</h2>
|
||||
<h2><fa icon="users"/>{{ $t('frequently-replied-users') }}</h2>
|
||||
<div>
|
||||
<x-friends :user="user"/>
|
||||
</div>
|
||||
</section>
|
||||
<section class="followers-you-know" v-if="$store.getters.isSignedIn && $store.state.i.id !== user.id">
|
||||
<h2><fa icon="users"/>%i18n:@followers-you-know%</h2>
|
||||
<h2><fa icon="users"/>{{ $t('followers-you-know') }}</h2>
|
||||
<div>
|
||||
<x-followers-you-know :user="user"/>
|
||||
</div>
|
||||
</section>
|
||||
<p v-if="user.host === null">%i18n:@last-used-at%: <b><mk-time :time="user.lastUsedAt"/></b></p>
|
||||
<p v-if="user.host === null">{{ $t('last-used-at') }}: <b><mk-time :time="user.lastUsedAt"/></b></p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../../i18n';
|
||||
import XNotes from './home.notes.vue';
|
||||
import XPhotos from './home.photos.vue';
|
||||
import XFriends from './home.friends.vue';
|
||||
import XFollowersYouKnow from './home.followers-you-know.vue';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/user/home.vue'),
|
||||
components: {
|
||||
XNotes,
|
||||
XPhotos,
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
<p class="host">{{ host }}</p>
|
||||
<div class="about">
|
||||
<h2>{{ name }}</h2>
|
||||
<p v-html="description || '%i18n:common.about%'"></p>
|
||||
<router-link class="signup" to="/signup">%i18n:@signup%</router-link>
|
||||
<p v-html="description || this.$t('@.about')"></p>
|
||||
<router-link class="signup" to="/signup">{{ $t('signup') }}</router-link>
|
||||
</div>
|
||||
<div class="login">
|
||||
<mk-signin :with-avatar="false"/>
|
||||
@@ -33,32 +33,32 @@
|
||||
</article>
|
||||
</div>
|
||||
<article class="about-misskey">
|
||||
<h1>%i18n:common.intro.title%</h1>
|
||||
<p v-html="'%i18n:common.intro.about%'"></p>
|
||||
<h1>{{ $t('@.intro.title') }}</h1>
|
||||
<p v-html="this.$t('@.intro.about')"></p>
|
||||
<section>
|
||||
<h2>%i18n:common.intro.features%</h2>
|
||||
<h2>{{ $t('@.intro.features') }}</h2>
|
||||
<section>
|
||||
<h3>%i18n:common.intro.rich-contents%</h3>
|
||||
<h3>{{ $t('@.intro.rich-contents') }}</h3>
|
||||
<div class="image"><img src="/assets/about/post.png" alt=""></div>
|
||||
<p v-html="'%i18n:common.intro.rich-contents-desc%'"></p>
|
||||
<p v-html="this.$t('@.intro.rich-contents-desc')"></p>
|
||||
</section>
|
||||
<section>
|
||||
<h3>%i18n:common.intro.reaction%</h3>
|
||||
<h3>{{ $t('@.intro.reaction') }}</h3>
|
||||
<div class="image"><img src="/assets/about/reaction.png" alt=""></div>
|
||||
<p v-html="'%i18n:common.intro.reaction-desc%'"></p>
|
||||
<p v-html="this.$t('@.intro.reaction-desc')"></p>
|
||||
</section>
|
||||
<section>
|
||||
<h3>%i18n:common.intro.ui%</h3>
|
||||
<h3>{{ $t('@.intro.ui') }}</h3>
|
||||
<div class="image"><img src="/assets/about/ui.png" alt=""></div>
|
||||
<p v-html="'%i18n:common.intro.ui-desc%'"></p>
|
||||
<p v-html="this.$t('@.intro.ui-desc')"></p>
|
||||
</section>
|
||||
<section>
|
||||
<h3>%i18n:common.intro.drive%</h3>
|
||||
<h3>{{ $t('@.intro.drive') }}</h3>
|
||||
<div class="image"><img src="/assets/about/drive.png" alt=""></div>
|
||||
<p v-html="'%i18n:common.intro.drive-desc%'"></p>
|
||||
<p v-html="this.$t('@.intro.drive-desc')"></p>
|
||||
</section>
|
||||
</section>
|
||||
<p v-html="'%i18n:common.intro.outro%'"></p>
|
||||
<p v-html="this.$t('@.intro.outro')"></p>
|
||||
</article>
|
||||
<div class="info" v-if="meta">
|
||||
<p>Version: <b>{{ meta.version }}</b></p>
|
||||
@@ -73,10 +73,12 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import { copyright, host } from '../../../config';
|
||||
import { concat } from '../../../../../prelude/array';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/welcome.vue'),
|
||||
data() {
|
||||
return {
|
||||
meta: null,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa icon="home"/></span>%i18n:@dashboard%</span>
|
||||
<span slot="header"><span style="margin-right:4px;"><fa icon="home"/></span>{{ $t('dashboard') }}</span>
|
||||
<template slot="func">
|
||||
<button @click="customizing = !customizing"><fa icon="cog"/></button>
|
||||
</template>
|
||||
@@ -8,24 +8,24 @@
|
||||
<template v-if="customizing">
|
||||
<header>
|
||||
<select v-model="widgetAdderSelected">
|
||||
<option value="profile">%i18n:common.widgets.profile%</option>
|
||||
<option value="analog-clock">%i18n:common.widgets.analog-clock%</option>
|
||||
<option value="calendar">%i18n:common.widgets.calendar%</option>
|
||||
<option value="activity">%i18n:common.widgets.activity%</option>
|
||||
<option value="rss">%i18n:common.widgets.rss%</option>
|
||||
<option value="photo-stream">%i18n:common.widgets.photo-stream%</option>
|
||||
<option value="slideshow">%i18n:common.widgets.slideshow%</option>
|
||||
<option value="hashtags">%i18n:common.widgets.hashtags%</option>
|
||||
<option value="posts-monitor">%i18n:common.widgets.posts-monitor%</option>
|
||||
<option value="version">%i18n:common.widgets.version%</option>
|
||||
<option value="server">%i18n:common.widgets.server%</option>
|
||||
<option value="memo">%i18n:common.widgets.memo%</option>
|
||||
<option value="donation">%i18n:common.widgets.donation%</option>
|
||||
<option value="nav">%i18n:common.widgets.nav%</option>
|
||||
<option value="tips">%i18n:common.widgets.tips%</option>
|
||||
<option value="profile">{{ $t('@.widgets.profile') }}</option>
|
||||
<option value="analog-clock">{{ $t('@.widgets.analog-clock') }}</option>
|
||||
<option value="calendar">{{ $t('@.widgets.calendar') }}</option>
|
||||
<option value="activity">{{ $t('@.widgets.activity') }}</option>
|
||||
<option value="rss">{{ $t('@.widgets.rss') }}</option>
|
||||
<option value="photo-stream">{{ $t('@.widgets.photo-stream') }}</option>
|
||||
<option value="slideshow">{{ $t('@.widgets.slideshow') }}</option>
|
||||
<option value="hashtags">{{ $t('@.widgets.hashtags') }}</option>
|
||||
<option value="posts-monitor">{{ $t('@.widgets.posts-monitor') }}</option>
|
||||
<option value="version">{{ $t('@.widgets.version') }}</option>
|
||||
<option value="server">{{ $t('@.widgets.server') }}</option>
|
||||
<option value="memo">{{ $t('@.widgets.memo') }}</option>
|
||||
<option value="donation">{{ $t('@.widgets.donation') }}</option>
|
||||
<option value="nav">{{ $t('@.widgets.nav') }}</option>
|
||||
<option value="tips">{{ $t('@.widgets.tips') }}</option>
|
||||
</select>
|
||||
<button @click="addWidget">%i18n:add-widget%</button>
|
||||
<p><a @click="hint">%i18n:customization-tips%</a></p>
|
||||
<button @click="addWidget">{{ $t('add-widget') }}</button>
|
||||
<p><a @click="hint">{{ $t('customization-tips') }}</a></p>
|
||||
</header>
|
||||
<x-draggable
|
||||
:list="widgets"
|
||||
@@ -51,10 +51,12 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import * as XDraggable from 'vuedraggable';
|
||||
import * as uuid from 'uuid';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/widgets.vue'),
|
||||
components: {
|
||||
XDraggable
|
||||
},
|
||||
@@ -107,7 +109,7 @@ export default Vue.extend({
|
||||
|
||||
methods: {
|
||||
hint() {
|
||||
alert('%i18n:@widgets-hints%');
|
||||
alert(this.$t('widgets-hints'));
|
||||
},
|
||||
|
||||
widgetFunc(id) {
|
||||
|
||||
Reference in New Issue
Block a user