diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2018-11-09 03:44:35 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-11-09 03:44:35 +0900 |
| commit | 25a69ec1b69cb7f380949ef9cf1c3599eaa4face (patch) | |
| tree | 6f10016d32f94140d3953446c4b1fdb474e216e8 /src/client/app/admin | |
| parent | Update CircleCI configuration (#3163) (diff) | |
| download | misskey-25a69ec1b69cb7f380949ef9cf1c3599eaa4face.tar.gz misskey-25a69ec1b69cb7f380949ef9cf1c3599eaa4face.tar.bz2 misskey-25a69ec1b69cb7f380949ef9cf1c3599eaa4face.zip | |
Refactoring of i18n (#3165)
Refactoring of i18n
Diffstat (limited to 'src/client/app/admin')
| -rw-r--r-- | src/client/app/admin/views/announcements.vue | 22 | ||||
| -rw-r--r-- | src/client/app/admin/views/charts.vue | 46 | ||||
| -rw-r--r-- | src/client/app/admin/views/dashboard.vue | 22 | ||||
| -rw-r--r-- | src/client/app/admin/views/emoji.vue | 40 | ||||
| -rw-r--r-- | src/client/app/admin/views/hashtags.vue | 8 | ||||
| -rw-r--r-- | src/client/app/admin/views/index.vue | 22 | ||||
| -rw-r--r-- | src/client/app/admin/views/instance.vue | 84 | ||||
| -rw-r--r-- | src/client/app/admin/views/users.vue | 28 |
8 files changed, 144 insertions, 128 deletions
diff --git a/src/client/app/admin/views/announcements.vue b/src/client/app/admin/views/announcements.vue index 14177a6211..0c0c6e57cf 100644 --- a/src/client/app/admin/views/announcements.vue +++ b/src/client/app/admin/views/announcements.vue @@ -1,30 +1,32 @@ <template> <div class="cdeuzmsthagexbkpofbmatmugjuvogfb"> <ui-card> - <div slot="title"><fa icon="broadcast-tower"/> %i18n:@announcements%</div> + <div slot="title"><fa icon="broadcast-tower"/> {{ $t('announcements') }}</div> <section v-for="(announcement, i) in announcements" class="fit-top"> <ui-input v-model="announcement.title" @change="save"> - <span>%i18n:@title%</span> + <span>{{ $t('title') }}</span> </ui-input> <ui-textarea v-model="announcement.text"> - <span>%i18n:@text%</span> + <span>{{ $t('text') }}</span> </ui-textarea> <ui-horizon-group> - <ui-button @click="save()"><fa :icon="['far', 'save']"/> %i18n:@save%</ui-button> - <ui-button @click="remove(i)"><fa :icon="['far', 'trash-alt']"/> %i18n:@remove%</ui-button> + <ui-button @click="save()"><fa :icon="['far', 'save']"/> {{ $t('save') }}</ui-button> + <ui-button @click="remove(i)"><fa :icon="['far', 'trash-alt']"/> {{ $t('remove') }}</ui-button> </ui-horizon-group> </section> <section> - <ui-button @click="add"><fa icon="plus"/> %i18n:@add%</ui-button> + <ui-button @click="add"><fa icon="plus"/> {{ $t('add') }}</ui-button> </section> </ui-card> </div> </template> <script lang="ts"> -import Vue from "vue"; +import Vue from 'vue'; +import i18n from '../../i18n'; export default Vue.extend({ + i18n: i18n('admin/views/announcements.vue'), data() { return { announcements: [], @@ -48,7 +50,7 @@ export default Vue.extend({ remove(i) { this.$swal({ type: 'warning', - text: '%i18n:@_remove.are-you-sure%'.replace('$1', this.announcements.find((_, j) => j == i).title), + text: this.$t('_remove.are-you-sure').replace('$1', this.announcements.find((_, j) => j == i).title), showCancelButton: true }).then(res => { if (!res.value) return; @@ -56,7 +58,7 @@ export default Vue.extend({ this.save(true); this.$swal({ type: 'success', - text: '%i18n:@_remove.removed%' + text: this.$t('_remove.removed') }); }); }, @@ -68,7 +70,7 @@ export default Vue.extend({ if (!silent) { this.$swal({ type: 'success', - text: '%i18n:@saved%' + text: this.$t('saved') }); } }).catch(e => { diff --git a/src/client/app/admin/views/charts.vue b/src/client/app/admin/views/charts.vue index 59e06d6ff6..fbd52eebea 100644 --- a/src/client/app/admin/views/charts.vue +++ b/src/client/app/admin/views/charts.vue @@ -1,36 +1,36 @@ <template> <div class="qvgidhudpqhjttdhxubzuyrhyzgslujw"> <header> - <b><fa :icon="['far', 'chart-bar']"/> %i18n:@title%:</b> + <b><fa :icon="['far', 'chart-bar']"/> {{ $t('title') }}:</b> <select v-model="src"> - <optgroup label="%i18n:@federation%"> - <option value="federation-instances">%i18n:@charts.federation-instances%</option> - <option value="federation-instances-total">%i18n:@charts.federation-instances-total%</option> + <optgroup :label="$t('label')"> + <option value="federation-instances">{{ $t('charts.federation-instances') }}</option> + <option value="federation-instances-total">{{ $t('charts.federation-instances-total') }}</option> </optgroup> - <optgroup label="%i18n:@users%"> - <option value="users">%i18n:@charts.users%</option> - <option value="users-total">%i18n:@charts.users-total%</option> + <optgroup :label="$t('label')"> + <option value="users">{{ $t('charts.users') }}</option> + <option value="users-total">{{ $t('charts.users-total') }}</option> </optgroup> - <optgroup label="%i18n:@notes%"> - <option value="notes">%i18n:@charts.notes%</option> - <option value="local-notes">%i18n:@charts.local-notes%</option> - <option value="remote-notes">%i18n:@charts.remote-notes%</option> - <option value="notes-total">%i18n:@charts.notes-total%</option> + <optgroup :label="$t('label')"> + <option value="notes">{{ $t('charts.notes') }}</option> + <option value="local-notes">{{ $t('charts.local-notes') }}</option> + <option value="remote-notes">{{ $t('charts.remote-notes') }}</option> + <option value="notes-total">{{ $t('charts.notes-total') }}</option> </optgroup> - <optgroup label="%i18n:@drive%"> - <option value="drive-files">%i18n:@charts.drive-files%</option> - <option value="drive-files-total">%i18n:@charts.drive-files-total%</option> - <option value="drive">%i18n:@charts.drive%</option> - <option value="drive-total">%i18n:@charts.drive-total%</option> + <optgroup :label="$t('label')"> + <option value="drive-files">{{ $t('charts.drive-files') }}</option> + <option value="drive-files-total">{{ $t('charts.drive-files-total') }}</option> + <option value="drive">{{ $t('charts.drive') }}</option> + <option value="drive-total">{{ $t('charts.drive-total') }}</option> </optgroup> - <optgroup label="%i18n:@network%"> - <option value="network-requests">%i18n:@charts.network-requests%</option> - <option value="network-time">%i18n:@charts.network-time%</option> - <option value="network-usage">%i18n:@charts.network-usage%</option> + <optgroup :label="$t('label')"> + <option value="network-requests">{{ $t('charts.network-requests') }}</option> + <option value="network-time">{{ $t('charts.network-time') }}</option> + <option value="network-usage">{{ $t('charts.network-usage') }}</option> </optgroup> </select> <div> - <span @click="span = 'day'" :class="{ active: span == 'day' }">%i18n:@per-day%</span> | <span @click="span = 'hour'" :class="{ active: span == 'hour' }">%i18n:@per-hour%</span> + <span @click="span = 'day'" :class="{ active: span == 'day' }">{{ $t('per-day') }}</span> | <span @click="span = 'hour'" :class="{ active: span == 'hour' }">{{ $t('per-hour') }}</span> </div> </header> <div ref="chart"></div> @@ -39,6 +39,7 @@ <script lang="ts"> import Vue from 'vue'; +import i18n from '../../i18n'; import * as tinycolor from 'tinycolor2'; import * as ApexCharts from 'apexcharts'; @@ -48,6 +49,7 @@ const sum = (...arr) => arr.reduce((r, a) => r.map((b, i) => a[i] + b)); const negate = arr => arr.map(x => -x); export default Vue.extend({ + i18n: i18n('admin/views/charts.vue'), data() { return { chart: null, diff --git a/src/client/app/admin/views/dashboard.vue b/src/client/app/admin/views/dashboard.vue index 383b859263..d62feecbd2 100644 --- a/src/client/app/admin/views/dashboard.vue +++ b/src/client/app/admin/views/dashboard.vue @@ -5,7 +5,7 @@ <p><b>Machine</b><span>{{ meta.machine }}</span></p> <p><b>OS</b><span>{{ meta.os }}</span></p> <p><b>Node</b><span>{{ meta.node }}</span></p> - <p>%i18n:common.ai-chan-kawaii%</p> + <p>{{ $t('@.ai-chan-kawaii') }}</p> </header> <div v-if="stats" class="stats"> @@ -13,12 +13,12 @@ <div> <div><fa icon="user"/></div> <div> - <span>%i18n:@accounts%</span> + <span>{{ $t('accounts') }}</span> <b class="primary">{{ stats.originalUsersCount | number }}</b> </div> </div> <div> - <span><fa icon="home"/> %i18n:@this-instance%</span> + <span><fa icon="home"/> {{ $t('this-instance') }}</span> <span @click="setChartSrc('users')"><fa :icon="['far', 'chart-bar']"/></span> </div> </div> @@ -26,12 +26,12 @@ <div> <div><fa icon="pencil-alt"/></div> <div> - <span>%i18n:@notes%</span> + <span>{{ $t('notes') }}</span> <b class="primary">{{ stats.originalNotesCount | number }}</b> </div> </div> <div> - <span><fa icon="home"/> %i18n:@this-instance%</span> + <span><fa icon="home"/> {{ $t('this-instance') }}</span> <span @click="setChartSrc('notes')"><fa :icon="['far', 'chart-bar']"/></span> </div> </div> @@ -39,12 +39,12 @@ <div> <div><fa icon="database"/></div> <div> - <span>%i18n:@drive%</span> + <span>{{ $t('drive') }}</span> <b>{{ stats.driveUsageLocal | bytes }}</b> </div> </div> <div> - <span><fa icon="home"/> %i18n:@this-instance%</span> + <span><fa icon="home"/> {{ $t('this-instance') }}</span> <span @click="setChartSrc('drive')"><fa :icon="['far', 'chart-bar']"/></span> </div> </div> @@ -52,12 +52,12 @@ <div> <div><fa :icon="['far', 'hdd']"/></div> <div> - <span>%i18n:@instances%</span> + <span>{{ $t('instances') }}</span> <b>{{ stats.instances | number }}</b> </div> </div> <div> - <span><fa icon="globe"/> %i18n:@federated%</span> + <span><fa icon="globe"/> {{ $t('federated') }}</span> <span @click="setChartSrc('federation-instances-total')"><fa :icon="['far', 'chart-bar']"/></span> </div> </div> @@ -78,12 +78,14 @@ </template> <script lang="ts"> -import Vue from "vue"; +import Vue from 'vue'; +import i18n from '../../i18n'; import XCpuMemory from "./cpu-memory.vue"; import XCharts from "./charts.vue"; import XApLog from "./ap-log.vue"; export default Vue.extend({ + i18n: i18n('admin/views/dashboard.vue'), components: { XCpuMemory, XCharts, diff --git a/src/client/app/admin/views/emoji.vue b/src/client/app/admin/views/emoji.vue index 155fae82a1..fb6e871bb9 100644 --- a/src/client/app/admin/views/emoji.vue +++ b/src/client/app/admin/views/emoji.vue @@ -1,46 +1,46 @@ <template> <div class="tumhkfkmgtvzljezfvmgkeurkfncshbe"> <ui-card> - <div slot="title"><fa icon="plus"/> %i18n:@add-emoji.title%</div> + <div slot="title"><fa icon="plus"/> {{ $t('add-emoji.title') }}</div> <section class="fit-top"> <ui-horizon-group inputs> <ui-input v-model="name"> - <span>%i18n:@add-emoji.name%</span> - <span slot="desc">%i18n:@add-emoji.name-desc%</span> + <span>{{ $t('add-emoji.name') }}</span> + <span slot="desc">{{ $t('add-emoji.name-desc') }}</span> </ui-input> <ui-input v-model="aliases"> - <span>%i18n:@add-emoji.aliases%</span> - <span slot="desc">%i18n:@add-emoji.aliases-desc%</span> + <span>{{ $t('add-emoji.aliases') }}</span> + <span slot="desc">{{ $t('add-emoji.aliases-desc') }}</span> </ui-input> </ui-horizon-group> <ui-input v-model="url"> <i slot="icon"><fa icon="link"/></i> - <span>%i18n:@add-emoji.url%</span> + <span>{{ $t('add-emoji.url') }}</span> </ui-input> - <ui-info>%i18n:@add-emoji.info%</ui-info> - <ui-button @click="add">%i18n:@add-emoji.add%</ui-button> + <ui-info>{{ $t('add-emoji.info') }}</ui-info> + <ui-button @click="add">{{ $t('add-emoji.add') }}</ui-button> </section> </ui-card> <ui-card> - <div slot="title"><fa :icon="['far', 'grin']"/> %i18n:@emojis.title%</div> + <div slot="title"><fa :icon="['far', 'grin']"/> {{ $t('emojis.title') }}</div> <section v-for="emoji in emojis"> <img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/> <ui-horizon-group inputs> <ui-input v-model="emoji.name"> - <span>%i18n:@add-emoji.name%</span> + <span>{{ $t('add-emoji.name') }}</span> </ui-input> <ui-input v-model="emoji.aliases"> - <span>%i18n:@add-emoji.aliases%</span> + <span>{{ $t('add-emoji.aliases') }}</span> </ui-input> </ui-horizon-group> <ui-input v-model="emoji.url"> <i slot="icon"><fa icon="link"/></i> - <span>%i18n:@add-emoji.url%</span> + <span>{{ $t('add-emoji.url') }}</span> </ui-input> <ui-horizon-group> - <ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> %i18n:@emojis.update%</ui-button> - <ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> %i18n:@emojis.remove%</ui-button> + <ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button> + <ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button> </ui-horizon-group> </section> </ui-card> @@ -48,9 +48,11 @@ </template> <script lang="ts"> -import Vue from "vue"; +import Vue from 'vue'; +import i18n from '../../i18n'; export default Vue.extend({ + i18n: i18n('admin/views/emoji.vue'), data() { return { name: '', @@ -73,7 +75,7 @@ export default Vue.extend({ }).then(() => { this.$swal({ type: 'success', - text: '%i18n:@add-emoji.added%' + text: this.$t('add-emoji.added') }); this.fetchEmojis(); }).catch(e => { @@ -101,7 +103,7 @@ export default Vue.extend({ }).then(() => { this.$swal({ type: 'success', - text: '%i18n:@updated%' + text: this.$t('updated') }); }).catch(e => { this.$swal({ @@ -114,7 +116,7 @@ export default Vue.extend({ removeEmoji(emoji) { this.$swal({ type: 'warning', - text: '%i18n:@remove-emoji.are-you-sure%'.replace('$1', emoji.name), + text: this.$t('remove-emoji.are-you-sure').replace('$1', emoji.name), showCancelButton: true }).then(res => { if (!res.value) return; @@ -124,7 +126,7 @@ export default Vue.extend({ }).then(() => { this.$swal({ type: 'success', - text: '%i18n:@remove-emoji.removed%' + text: this.$t('remove-emoji.removed') }); this.fetchEmojis(); }).catch(e => { diff --git a/src/client/app/admin/views/hashtags.vue b/src/client/app/admin/views/hashtags.vue index 1635305f17..9ddb378a8d 100644 --- a/src/client/app/admin/views/hashtags.vue +++ b/src/client/app/admin/views/hashtags.vue @@ -1,19 +1,21 @@ <template> <div> <ui-card> - <div slot="title">%i18n:@hided-tags%</div> + <div slot="title">{{ $t('hided-tags') }}</div> <section> <textarea class="jdnqwkzlnxcfftthoybjxrebyolvoucw" v-model="hidedTags"></textarea> - <ui-button @click="save">%i18n:@save%</ui-button> + <ui-button @click="save">{{ $t('save') }}</ui-button> </section> </ui-card> </div> </template> <script lang="ts"> -import Vue from "vue"; +import Vue from 'vue'; +import i18n from '../../i18n'; export default Vue.extend({ + i18n: i18n('admin/views/hashtags.vue'), data() { return { hidedTags: '', diff --git a/src/client/app/admin/views/index.vue b/src/client/app/admin/views/index.vue index 33465b9b63..c812f28855 100644 --- a/src/client/app/admin/views/index.vue +++ b/src/client/app/admin/views/index.vue @@ -18,18 +18,18 @@ <p class="name">{{ $store.state.i | userName }}</p> </div> <ul> - <li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>%i18n:@dashboard%</li> - <li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>%i18n:@instance%</li> - <li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>%i18n:@users%</li> - <li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="['far', 'grin']" fixed-width/>%i18n:@emoji%</li> - <li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>%i18n:@announcements%</li> - <li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>%i18n:@hashtags%</li> + <li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li> + <li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li> + <li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li> + <li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="['far', 'grin']" fixed-width/>{{ $t('emoji') }}</li> + <li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li> + <li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li> - <!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>%i18n:common.drive%</li> --> - <!-- <li @click="nav('update')" :class="{ active: page == 'update' }">%i18n:@update%</li> --> + <!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li> --> + <!-- <li @click="nav('update')" :class="{ active: page == 'update' }">{{ $t('update') }}</li> --> </ul> <div class="back-to-misskey"> - <a href="/"><fa icon="arrow-left"/> %i18n:@back-to-misskey%</a> + <a href="/"><fa icon="arrow-left"/> {{ $t('back-to-misskey') }}</a> </div> <div class="version"> <small>Misskey {{ version }}</small> @@ -49,7 +49,8 @@ </template> <script lang="ts"> -import Vue from "vue"; +import Vue from 'vue'; +import i18n from '../../i18n'; import { version } from '../../config'; import XDashboard from "./dashboard.vue"; import XInstance from "./instance.vue"; @@ -63,6 +64,7 @@ const ua = navigator.userAgent.toLowerCase(); const isMobile = /mobile|iphone|ipad|android/.test(ua); export default Vue.extend({ + i18n: i18n('admin/views/index.vue'), components: { XDashboard, XInstance, diff --git a/src/client/app/admin/views/instance.vue b/src/client/app/admin/views/instance.vue index 73d504ef9b..f5a29e5b52 100644 --- a/src/client/app/admin/views/instance.vue +++ b/src/client/app/admin/views/instance.vue @@ -1,87 +1,89 @@ <template> <div class="axbwjelsbymowqjyywpirzhdlszoncqs"> <ui-card> - <div slot="title"><fa icon="cog"/> %i18n:@instance%</div> + <div slot="title"><fa icon="cog"/> {{ $t('instance') }}</div> <section class="fit-top fit-bottom"> - <ui-input v-model="name">%i18n:@instance-name%</ui-input> - <ui-textarea v-model="description">%i18n:@instance-description%</ui-textarea> - <ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>%i18n:@banner-url%</ui-input> - <ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>%i18n:@languages%<span slot="desc">%i18n:@languages-desc%</span></ui-input> + <ui-input v-model="name">{{ $t('instance-name') }}</ui-input> + <ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea> + <ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input> + <ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input> </section> <section class="fit-bottom"> - <header><fa icon="headset"/> %i18n:@maintainer-config%</header> - <ui-input v-model="maintainerName">%i18n:@maintainer-name%</ui-input> - <ui-input v-model="maintainerEmail" type="email"><i slot="icon"><fa :icon="['far', 'envelope']"/></i>%i18n:@maintainer-email%</ui-input> + <header><fa icon="headset"/> {{ $t('maintainer-config') }}</header> + <ui-input v-model="maintainerName">{{ $t('maintainer-name') }}</ui-input> + <ui-input v-model="maintainerEmail" type="email"><i slot="icon"><fa :icon="['far', 'envelope']"/></i>{{ $t('maintainer-email') }}</ui-input> </section> <section class="fit-top fit-bottom"> - <ui-input v-model="maxNoteTextLength">%i18n:@max-note-text-length%</ui-input> + <ui-input v-model="maxNoteTextLength">{{ $t('max-note-text-length') }}</ui-input> </section> <section class="fit-bottom"> - <header><fa icon="cloud"/> %i18n:@drive-config%</header> - <ui-switch v-model="cacheRemoteFiles">%i18n:@cache-remote-files%<span slot="desc">%i18n:@cache-remote-files-desc%</span></ui-switch> - <ui-input v-model="localDriveCapacityMb" type="number">%i18n:@local-drive-capacity-mb%<span slot="suffix">MB</span><span slot="desc">%i18n:@mb%</span></ui-input> - <ui-input v-model="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">%i18n:@remote-drive-capacity-mb%<span slot="suffix">MB</span><span slot="desc">%i18n:@mb%</span></ui-input> + <header><fa icon="cloud"/> {{ $t('drive-config') }}</header> + <ui-switch v-model="cacheRemoteFiles">{{ $t('cache-remote-files') }}<span slot="desc">{{ $t('cache-remote-files-desc') }}</span></ui-switch> + <ui-input v-model="localDriveCapacityMb" type="number">{{ $t('local-drive-capacity-mb') }}<span slot="suffix">MB</span><span slot="desc">{{ $t('mb') }}</span></ui-input> + <ui-input v-model="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">{{ $t('remote-drive-capacity-mb') }}<span slot="suffix">MB</span><span slot="desc">{{ $t('mb') }}</span></ui-input> </section> <section class="fit-bottom"> - <header><fa icon="shield-alt"/> %i18n:@recaptcha-config%</header> - <ui-switch v-model="enableRecaptcha">%i18n:@enable-recaptcha%</ui-switch> - <ui-info>%i18n:@recaptcha-info%</ui-info> - <ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>%i18n:@recaptcha-site-key%</ui-input> - <ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>%i18n:@recaptcha-secret-key%</ui-input> + <header><fa icon="shield-alt"/> {{ $t('recaptcha-config') }}</header> + <ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch> + <ui-info>{{ $t('recaptcha-info') }}</ui-info> + <ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input> + <ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input> </section> <section> - <header><fa icon="ghost"/> %i18n:@proxy-account-config%</header> - <ui-info>%i18n:@proxy-account-info%</ui-info> - <ui-input v-model="proxyAccount"><span slot="prefix">@</span>%i18n:@proxy-account-username%<span slot="desc">%i18n:@proxy-account-username-desc%</span></ui-input> - <ui-info warn>%i18n:@proxy-account-warn%</ui-info> + <header><fa icon="ghost"/> {{ $t('proxy-account-config') }}</header> + <ui-info>{{ $t('proxy-account-info') }}</ui-info> + <ui-input v-model="proxyAccount"><span slot="prefix">@</span>{{ $t('proxy-account-username') }}<span slot="desc">{{ $t('proxy-account-username-desc') }}</span></ui-input> + <ui-info warn>{{ $t('proxy-account-warn') }}</ui-info> </section> <section> - <ui-switch v-model="disableRegistration">%i18n:@disable-registration%</ui-switch> + <ui-switch v-model="disableRegistration">{{ $t('disable-registration') }}</ui-switch> </section> <section> - <ui-switch v-model="disableLocalTimeline">%i18n:@disable-local-timeline%</ui-switch> + <ui-switch v-model="disableLocalTimeline">{{ $t('disable-local-timeline') }}</ui-switch> </section> <section> - <ui-button @click="updateMeta">%i18n:@save%</ui-button> + <ui-button @click="updateMeta">{{ $t('save') }}</ui-button> </section> </ui-card> <ui-card> - <div slot="title">%i18n:@invite%</div> + <div slot="title">{{ $t('invite') }}</div> <section> - <ui-button @click="invite">%i18n:@invite%</ui-button> + <ui-button @click="invite">{{ $t('invite') }}</ui-button> <p v-if="inviteCode">Code: <code>{{ inviteCode }}</code></p> </section> </ui-card> <ui-card> - <div slot="title"><fa :icon="['fab', 'twitter']"/> %i18n:@twitter-integration-config%</div> + <div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div> <section> - <ui-switch v-model="enableTwitterIntegration">%i18n:@enable-twitter-integration%</ui-switch> - <ui-info>%i18n:@twitter-integration-info%</ui-info> - <ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>%i18n:@twitter-integration-consumer-key%</ui-input> - <ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>%i18n:@twitter-integration-consumer-secret%</ui-input> - <ui-button @click="updateMeta">%i18n:@save%</ui-button> + <ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch> + <ui-info>{{ $t('twitter-integration-info') }}</ui-info> + <ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input> + <ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input> + <ui-button @click="updateMeta">{{ $t('save') }}</ui-button> </section> </ui-card> <ui-card> - <div slot="title"><fa :icon="['fab', 'github']"/> %i18n:@github-integration-config%</div> + <div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div> <section> - <ui-switch v-model="enableGithubIntegration">%i18n:@enable-github-integration%</ui-switch> - <ui-info>%i18n:@github-integration-info%</ui-info> - <ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>%i18n:@github-integration-client-id%</ui-input> - <ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>%i18n:@github-integration-client-secret%</ui-input> - <ui-button @click="updateMeta">%i18n:@save%</ui-button> + <ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch> + <ui-info>{{ $t('github-integration-info') }}</ui-info> + <ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input> + <ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input> + <ui-button @click="updateMeta">{{ $t('save') }}</ui-button> </section> </ui-card> </div> </template> <script lang="ts"> -import Vue from "vue"; +import Vue from 'vue'; +import i18n from '../../i18n'; export default Vue.extend({ + i18n: i18n('admin/views/instance.vue'), data() { return { maintainerName: null, @@ -174,7 +176,7 @@ export default Vue.extend({ }).then(() => { this.$swal({ type: 'success', - text: '%i18n:@saved%' + text: this.$t('saved') }); }).catch(e => { this.$swal({ diff --git a/src/client/app/admin/views/users.vue b/src/client/app/admin/views/users.vue index ed9f372f09..6cc0a420e9 100644 --- a/src/client/app/admin/views/users.vue +++ b/src/client/app/admin/views/users.vue @@ -1,52 +1,54 @@ <template> <div class="ucnffhbtogqgscfmqcymwmmupoknpfsw"> <ui-card> - <div slot="title">%i18n:@verify-user%</div> + <div slot="title">{{ $t('verify-user') }}</div> <section class="fit-top"> <ui-input v-model="verifyUsername" type="text"> <span slot="prefix">@</span> </ui-input> - <ui-button @click="verifyUser" :disabled="verifying">%i18n:@verify%</ui-button> + <ui-button @click="verifyUser" :disabled="verifying">{{ $t('verify') }}</ui-button> </section> </ui-card> <ui-card> - <div slot="title">%i18n:@unverify-user%</div> + <div slot="title">{{ $t('unverify-user') }}</div> <section class="fit-top"> <ui-input v-model="unverifyUsername" type="text"> <span slot="prefix">@</span> </ui-input> - <ui-button @click="unverifyUser" :disabled="unverifying">%i18n:@unverify%</ui-button> + <ui-button @click="unverifyUser" :disabled="unverifying">{{ $t('unverify') }}</ui-button> </section> </ui-card> <ui-card> - <div slot="title">%i18n:@suspend-user%</div> + <div slot="title">{{ $t('suspend-user') }}</div> <section class="fit-top"> <ui-input v-model="suspendUsername" type="text"> <span slot="prefix">@</span> </ui-input> - <ui-button @click="suspendUser" :disabled="suspending">%i18n:@suspend%</ui-button> + <ui-button @click="suspendUser" :disabled="suspending">{{ $t('suspend') }}</ui-button> </section> </ui-card> <ui-card> - <div slot="title">%i18n:@unsuspend-user%</div> + <div slot="title">{{ $t('unsuspend-user') }}</div> <section class="fit-top"> <ui-input v-model="unsuspendUsername" type="text"> <span slot="prefix">@</span> </ui-input> - <ui-button @click="unsuspendUser" :disabled="unsuspending">%i18n:@unsuspend%</ui-button> + <ui-button @click="unsuspendUser" :disabled="unsuspending">{{ $t('unsuspend') }}</ui-button> </section> </ui-card> </div> </template> <script lang="ts"> -import Vue from "vue"; +import Vue from 'vue'; +import i18n from '../../i18n'; import parseAcct from "../../../../misc/acct/parse"; export default Vue.extend({ + i18n: i18n('admin/views/users.vue'), data() { return { verifyUsername: null, @@ -67,7 +69,7 @@ export default Vue.extend({ const process = async () => { const user = await (this as any).os.api('users/show', parseAcct(this.verifyUsername)); await (this as any).os.api('admin/verify-user', { userId: user.id }); - //(this as any).os.apis.dialog({ text: '%i18n:@verified%' }); + //(this as any).os.apis.dialog({ text: this.$t('verified') }); }; await process().catch(e => { @@ -83,7 +85,7 @@ export default Vue.extend({ const process = async () => { const user = await (this as any).os.api('users/show', parseAcct(this.unverifyUsername)); await (this as any).os.api('admin/unverify-user', { userId: user.id }); - //(this as any).os.apis.dialog({ text: '%i18n:@unverified%' }); + //(this as any).os.apis.dialog({ text: this.$t('unverified') }); }; await process().catch(e => { @@ -99,7 +101,7 @@ export default Vue.extend({ const process = async () => { const user = await (this as any).os.api('users/show', parseAcct(this.suspendUsername)); await (this as any).os.api('admin/suspend-user', { userId: user.id }); - //(this as any).os.apis.dialog({ text: '%i18n:@suspended%' }); + //(this as any).os.apis.dialog({ text: this.$t('suspended') }); }; await process().catch(e => { @@ -115,7 +117,7 @@ export default Vue.extend({ const process = async () => { const user = await (this as any).os.api('users/show', parseAcct(this.unsuspendUsername)); await (this as any).os.api('admin/unsuspend-user', { userId: user.id }); - //(this as any).os.apis.dialog({ text: '%i18n:@unsuspended%' }); + //(this as any).os.apis.dialog({ text: this.$t('unsuspended') }); }; await process().catch(e => { |