even moar i18n

Signed-off-by: Marcin Mikołajczak <me@m4sk.in>
This commit is contained in:
Marcin Mikołajczak 2018-05-18 20:33:55 +02:00
parent 85e5c6210a
commit cb33949b76
20 changed files with 255 additions and 107 deletions

View File

@ -191,6 +191,12 @@ common/views/widgets/server.vue:
title: "サーバー情報" title: "サーバー情報"
toggle: "表示を切り替え" toggle: "表示を切り替え"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
replies: "Red ... Replies"
renotes: "Green ... Renotes"
desktop/views/components/activity.vue: desktop/views/components/activity.vue:
title: "アクティビティ" title: "アクティビティ"
toggle: "表示を切り替え" toggle: "表示を切り替え"
@ -201,6 +207,23 @@ desktop/views/components/calendar.vue:
next: "次の月" next: "次の月"
go: "クリックして時間遡行" go: "クリックして時間遡行"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"
cancel: "キャンセル"
ok: "決定"
choose-prompt: "ファイルを選択"
desktop/views/components/choose-folder-from-drive-window.vue:
cancel: "キャンセル"
ok: "決定"
choose-prompt: "フォルダを選択"
desktop/views/components/crop-window.vue:
skip: "クロップをスキップ"
cancel: "キャンセル"
ok: "決定"
desktop/views/components/drive-window.vue: desktop/views/components/drive-window.vue:
used: "使用中" used: "使用中"
drive: "ドライブ" drive: "ドライブ"
@ -257,6 +280,32 @@ desktop/views/components/drive.vue:
upload: "ファイルをアップロード" upload: "ファイルをアップロード"
url-upload: "URLからアップロード" url-upload: "URLからアップロード"
desktop/views/components/follow-button.vue:
unfollow: "フォロー解除"
follow: "フォローする"
desktop/views/components/followers-window.vue:
followers: "{} のフォロワー"
desktop/views/components/followers.vue:
empty: "フォロワーはいないようです。"
desktop/views/components/following-window.vue:
following: "{} のフォロー"
desktop/views/components/following.vue:
empty: "フォロー中のユーザーはいないようです。"
desktop/views/components/friends-maker.vue:
title: "気になるユーザーをフォロー:"
empty: "おすすめのユーザーは見つかりませんでした。"
fetching: "読み込んでいます"
refresh: "もっと見る"
close: "閉じる"
desktop/views/components/game-window.vue:
game: "オセロ"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "完了" done: "完了"
add-widget: "ウィジェットを追加:" add-widget: "ウィジェットを追加:"
@ -283,9 +332,25 @@ desktop/views/components/home.vue:
tips: "ヒント" tips: "ヒント"
add: "追加" add: "追加"
desktop/views/input-dialog.vue:
cancel: "キャンセル"
ok: "決定"
desktop/views/components/mentions.vue:
all: "すべて"
followed: "フォロー中"
empty: "あなた宛ての投稿はありません。"
empty-followed: "あなたがフォローしているユーザーからの言及はありません。"
desktop/views/components/messaging-room-window.vue:
title: "メッセージ:"
desktop/views/components/messaging-window.vue: desktop/views/components/messaging-window.vue:
title: "メッセージ" title: "メッセージ"
desktop/views/components/note-detail.sub.vue:
private: "(この投稿は非公開です)"
desktop/views/components/notes.note.vue: desktop/views/components/notes.note.vue:
reposted-by: "{}がRenote" reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
@ -293,6 +358,10 @@ desktop/views/components/notes.note.vue:
add-reaction: "リアクション" add-reaction: "リアクション"
detail: "詳細" detail: "詳細"
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "もっと見る" more: "もっと見る"
empty: "ありません!" empty: "ありません!"
@ -324,6 +393,9 @@ desktop/views/components/post-form-window.vue:
attaches: "添付: {}メディア" attaches: "添付: {}メディア"
uploading-media: "{}個のメディアをアップロード中" uploading-media: "{}個のメディアをアップロード中"
desktop/views/components/progress-dialog.vue:
waiting: "待機中"
desktop/views/components/renote-form.vue: desktop/views/components/renote-form.vue:
quote: "引用する..." quote: "引用する..."
cancel: "キャンセル" cancel: "キャンセル"
@ -348,6 +420,80 @@ desktop/views/components/settings.vue:
other: "その他" other: "その他"
license: "ライセンス" license: "ライセンス"
behaviour: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
auto-popout: "ウィンドウの自動ポップアウト"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "詳細設定"
api-via-stream: "ストリームを経由したAPIリクエスト"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
dark-mode: "ダークモード"
circle-icons: "円形のアイコンを使用"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
show-maps: "マップの自動展開"
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム"
test: "テスト"
mobile: "モバイル"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "キャッシュ"
clean-cache: "クリーンアップ"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "Misskeyについて"
operator: "このサーバーの運営者"
update: "Misskey Update"
version: "バージョン:"
latest-version: "最新のバージョン:"
update-checking: "アップデートを確認中"
do-update: "アップデートを確認"
update-settings: "詳細設定"
prevent-update: "アップデートを延期する(非推奨)"
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
no-updates: "利用可能な更新はありません"
no-updates-desc: "お使いのMisskeyは最新です。"
update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
advanced-settings: "高度な設定"
debug-mode: "デバッグモードを有効にする"
debug-mode-desc: "この設定はブラウザに記憶されます。"
use-raw-script: "生のスクリプトを読み込む"
use-raw-script-desc: "圧縮されていない「生の」スクリプトを使用します。サイズが大きいため、読み込みに時間がかかる場合があります。この設定はブラウザに記憶されます。"
source-info: "Misskeyはソースマップも提供しています。"
experimental: "実験的機能を有効にする"
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
tools: "ツール"
task-manager: "タスクマネージャ"
third-parties: "サードパーティ"
desktop/views/components/settings.2fa.vue: desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。" intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "詳細..." detail: "詳細..."
@ -398,6 +544,9 @@ desktop/views/components/settings.profile.vue:
birthday: "誕生日" birthday: "誕生日"
save: "保存" save: "保存"
desktop/views/components/taskmanager.vue:
title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"

View File

@ -1,6 +1,6 @@
<template> <template>
<svg :viewBox="`0 0 ${ viewBoxX } ${ viewBoxY }`" preserveAspectRatio="none" @mousedown.prevent="onMousedown"> <svg :viewBox="`0 0 ${ viewBoxX } ${ viewBoxY }`" preserveAspectRatio="none" @mousedown.prevent="onMousedown">
<title>Black ... Total<br/>Blue ... Notes<br/>Red ... Replies<br/>Green ... Renotes</title> <title>%i18n:@total%<br/>%i18n:@notes%<br/>%i18n:@replies%<br/>%i18n:@renotes%</title>
<polyline <polyline
:points="pointsNote" :points="pointsNote"
fill="none" fill="none"

View File

@ -2,7 +2,7 @@
<mk-window ref="window" is-modal width="800px" height="500px" @closed="$destroy"> <mk-window ref="window" is-modal width="800px" height="500px" @closed="$destroy">
<span slot="header"> <span slot="header">
<span v-html="title" :class="$style.title"></span> <span v-html="title" :class="$style.title"></span>
<span :class="$style.count" v-if="multiple && files.length > 0">({{ files.length }}ファイル選択中)</span> <span :class="$style.count" v-if="multiple && files.length > 0">({{ files.length }}%i18n:@choose-file%)</span>
</span> </span>
<mk-drive <mk-drive
@ -13,9 +13,9 @@
@change-selection="onChangeSelection" @change-selection="onChangeSelection"
/> />
<div :class="$style.footer"> <div :class="$style.footer">
<button :class="$style.upload" title="PCからドライブにファイルをアップロード" @click="upload">%fa:upload%</button> <button :class="$style.upload" title="%i18n:@upload%" @click="upload">%fa:upload%</button>
<button :class="$style.cancel" @click="cancel">キャンセル</button> <button :class="$style.cancel" @click="cancel">%i18n:@cancel%</button>
<button :class="$style.ok" :disabled="multiple && files.length == 0" @click="ok">決定</button> <button :class="$style.ok" :disabled="multiple && files.length == 0" @click="ok">%i18n:@ok%</button>
</div> </div>
</mk-window> </mk-window>
</template> </template>
@ -28,7 +28,7 @@ export default Vue.extend({
default: false default: false
}, },
title: { title: {
default: '%fa:R file%ファイルを選択' default: '%fa:R file%%i18n:@choose-prompt%s'
} }
}, },
data() { data() {
@ -177,4 +177,3 @@ export default Vue.extend({
border-color #dcdcdc border-color #dcdcdc
</style> </style>

View File

@ -10,8 +10,8 @@
:multiple="false" :multiple="false"
/> />
<div :class="$style.footer"> <div :class="$style.footer">
<button :class="$style.cancel" @click="cancel">キャンセル</button> <button :class="$style.cancel" @click="cancel">%i18n:@cancel%</button>
<button :class="$style.ok" @click="ok">決定</button> <button :class="$style.ok" @click="ok">%i18n:@ok%</button>
</div> </div>
</mk-window> </mk-window>
</template> </template>
@ -21,7 +21,7 @@ import Vue from 'vue';
export default Vue.extend({ export default Vue.extend({
props: { props: {
title: { title: {
default: '%fa:R folder%フォルダを選択' default: '%fa:R folder%%i18n:@choose-prompt%'
} }
}, },
methods: { methods: {

View File

@ -10,9 +10,9 @@
/> />
</div> </div>
<div :class="$style.actions"> <div :class="$style.actions">
<button :class="$style.skip" @click="skip">クロップをスキップ</button> <button :class="$style.skip" @click="skip">%i18n:@skip%</button>
<button :class="$style.cancel" @click="cancel">キャンセル</button> <button :class="$style.cancel" @click="cancel">%i18n:@cancel%</button>
<button :class="$style.ok" @click="ok">決定</button> <button :class="$style.ok" @click="ok">%i18n:@ok%</button>
</div> </div>
</mk-window> </mk-window>
</template> </template>

View File

@ -3,15 +3,15 @@
:class="{ wait, follow: !user.isFollowing, unfollow: user.isFollowing, big: size == 'big' }" :class="{ wait, follow: !user.isFollowing, unfollow: user.isFollowing, big: size == 'big' }"
@click="onClick" @click="onClick"
:disabled="wait" :disabled="wait"
:title="user.isFollowing ? 'フォロー解除' : 'フォローする'" :title="user.isFollowing ? '%i18n:@unfollow%' : '%i18n:@follow%'"
> >
<template v-if="!wait && user.isFollowing"> <template v-if="!wait && user.isFollowing">
<template v-if="size == 'compact'">%fa:minus%</template> <template v-if="size == 'compact'">%fa:minus%</template>
<template v-if="size == 'big'">%fa:minus%フォロー解除</template> <template v-if="size == 'big'">%fa:minus%%i18n:@unfollow%</template>
</template> </template>
<template v-if="!wait && !user.isFollowing"> <template v-if="!wait && !user.isFollowing">
<template v-if="size == 'compact'">%fa:plus%</template> <template v-if="size == 'compact'">%fa:plus%</template>
<template v-if="size == 'big'">%fa:plus%フォロー</template> <template v-if="size == 'big'">%fa:plus%%i18n:@follow%</template>
</template> </template>
<template v-if="wait">%fa:spinner .pulse .fw%</template> <template v-if="wait">%fa:spinner .pulse .fw%</template>
</button> </button>

View File

@ -1,7 +1,7 @@
<template> <template>
<mk-window width="400px" height="550px" @closed="$destroy"> <mk-window width="400px" height="550px" @closed="$destroy">
<span slot="header" :class="$style.header"> <span slot="header" :class="$style.header">
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>{{ user | userName }}のフォロワー <img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>%i18n:!@followers%.replace('{}', {{ user | userName }})
</span> </span>
<mk-followers :user="user"/> <mk-followers :user="user"/>
</mk-window> </mk-window>

View File

@ -4,7 +4,7 @@
:count="user.followersCount" :count="user.followersCount"
:you-know-count="user.followersYouKnowCount" :you-know-count="user.followersYouKnowCount"
> >
フォロワーはいないようです %i18n:@empty%
</mk-users-list> </mk-users-list>
</template> </template>

View File

@ -1,7 +1,7 @@
<template> <template>
<mk-window width="400px" height="550px" @closed="$destroy"> <mk-window width="400px" height="550px" @closed="$destroy">
<span slot="header" :class="$style.header"> <span slot="header" :class="$style.header">
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>{{ user | userName }}のフォロー <img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>%i18n:!@following%.replace('{}', {{ user | userName }})
</span> </span>
<mk-following :user="user"/> <mk-following :user="user"/>
</mk-window> </mk-window>

View File

@ -4,7 +4,7 @@
:count="user.followingCount" :count="user.followingCount"
:you-know-count="user.followingYouKnowCount" :you-know-count="user.followingYouKnowCount"
> >
フォロー中のユーザーはいないようです %i18n:@empty%
</mk-users-list> </mk-users-list>
</template> </template>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="mk-friends-maker"> <div class="mk-friends-maker">
<p class="title">気になるユーザーをフォロー:</p> <p class="title">%i18n:@title%</p>
<div class="users" v-if="!fetching && users.length > 0"> <div class="users" v-if="!fetching && users.length > 0">
<div class="user" v-for="user in users" :key="user.id"> <div class="user" v-for="user in users" :key="user.id">
<mk-avatar class="avatar" :user="user" target="_blank"/> <mk-avatar class="avatar" :user="user" target="_blank"/>
@ -11,10 +11,10 @@
<mk-follow-button :user="user"/> <mk-follow-button :user="user"/>
</div> </div>
</div> </div>
<p class="empty" v-if="!fetching && users.length == 0">おすすめのユーザーは見つかりませんでした</p> <p class="empty" v-if="!fetching && users.length == 0">%i18n:@empty%</p>
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p> <p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:@fetching%<mk-ellipsis/></p>
<a class="refresh" @click="refresh">もっと見る</a> <a class="refresh" @click="refresh">%i18n:@refresh%</a>
<button class="close" @click="$destroy()" title="閉じる">%fa:times%</button> <button class="close" @click="$destroy()" title="%i18n:@close%">%fa:times%</button>
</div> </div>
</template> </template>

View File

@ -1,6 +1,6 @@
<template> <template>
<mk-window ref="window" width="500px" height="560px" :popout-url="popout" @closed="$destroy"> <mk-window ref="window" width="500px" height="560px" :popout-url="popout" @closed="$destroy">
<span slot="header" :class="$style.header">%fa:gamepad%オセロ</span> <span slot="header" :class="$style.header">%fa:gamepad%%i18n:@game%</span>
<mk-othello :class="$style.content" @gamed="g => game = g"/> <mk-othello :class="$style.content" @gamed="g => game = g"/>
</mk-window> </mk-window>
</template> </template>

View File

@ -8,8 +8,8 @@
<input ref="text" v-model="text" :type="type" @keydown="onKeydown" :placeholder="placeholder"/> <input ref="text" v-model="text" :type="type" @keydown="onKeydown" :placeholder="placeholder"/>
</div> </div>
<div :class="$style.actions"> <div :class="$style.actions">
<button :class="$style.cancel" @click="cancel">キャンセル</button> <button :class="$style.cancel" @click="cancel">%i18n:@cancel%</button>
<button :class="$style.ok" :disabled="!allowEmpty && text.length == 0" @click="ok">決定</button> <button :class="$style.ok" :disabled="!allowEmpty && text.length == 0" @click="ok">%i18n:@ok%</button>
</div> </div>
</mk-window> </mk-window>
</template> </template>

View File

@ -1,16 +1,16 @@
<template> <template>
<div class="mk-mentions"> <div class="mk-mentions">
<header> <header>
<span :data-active="mode == 'all'" @click="mode = 'all'">すべて</span> <span :data-active="mode == 'all'" @click="mode = 'all'">%i18n:@all%</span>
<span :data-active="mode == 'following'" @click="mode = 'following'">フォロー中</span> <span :data-active="mode == 'following'" @click="mode = 'following'">%i18n:@followed%</span>
</header> </header>
<div class="fetching" v-if="fetching"> <div class="fetching" v-if="fetching">
<mk-ellipsis-icon/> <mk-ellipsis-icon/>
</div> </div>
<p class="empty" v-if="notes.length == 0 && !fetching"> <p class="empty" v-if="notes.length == 0 && !fetching">
%fa:R comments% %fa:R comments%
<span v-if="mode == 'all'">あなた宛ての投稿はありません</span> <span v-if="mode == 'all'">%i18n:@empty%</span>
<span v-if="mode == 'following'">あなたがフォローしているユーザーからの言及はありません</span> <span v-if="mode == 'following'">%i18n:@empty-followed%</span>
</p> </p>
<mk-notes :notes="notes" ref="timeline"/> <mk-notes :notes="notes" ref="timeline"/>
</div> </div>

View File

@ -1,6 +1,6 @@
<template> <template>
<mk-window ref="window" width="500px" height="560px" :popout-url="popout" @closed="$destroy"> <mk-window ref="window" width="500px" height="560px" :popout-url="popout" @closed="$destroy">
<span slot="header" :class="$style.header">%fa:comments%メッセージ: {{ user | userName }}</span> <span slot="header" :class="$style.header">%fa:comments%%i18n:@title% {{ user | userName }}</span>
<mk-messaging-room :user="user" :class="$style.content"/> <mk-messaging-room :user="user" :class="$style.content"/>
</mk-window> </mk-window>
</template> </template>

View File

@ -15,7 +15,7 @@
</header> </header>
<div class="body"> <div class="body">
<div class="text"> <div class="text">
<span v-if="note.isHidden" style="opacity: 0.5">(この投稿は非公開です)</span> <span v-if="note.isHidden" style="opacity: 0.5">%i18n:@private%</span>
<mk-note-html v-if="note.text" :text="note.text" :i="os.i"/> <mk-note-html v-if="note.text" :text="note.text" :i="os.i"/>
</div> </div>
<div class="media" v-if="note.mediaIds.length > 0"> <div class="media" v-if="note.mediaIds.length > 0">

View File

@ -5,8 +5,8 @@
<slot name="empty" v-if="notes.length == 0 && !fetching && requestInitPromise == null"></slot> <slot name="empty" v-if="notes.length == 0 && !fetching && requestInitPromise == null"></slot>
<div v-if="!fetching && requestInitPromise != null"> <div v-if="!fetching && requestInitPromise != null">
<p>読み込みに失敗しました</p> <p>%i18n:@error%</p>
<button @click="resolveInitPromise">リトライ</button> <button @click="resolveInitPromise">%i18n:@retry%</button>
</div> </div>
<transition-group name="mk-notes" class="transition"> <transition-group name="mk-notes" class="transition">

View File

@ -2,7 +2,7 @@
<mk-window ref="window" :is-modal="false" :can-close="false" width="500px" @closed="$destroy"> <mk-window ref="window" :is-modal="false" :can-close="false" width="500px" @closed="$destroy">
<span slot="header">{{ title }}<mk-ellipsis/></span> <span slot="header">{{ title }}<mk-ellipsis/></span>
<div :class="$style.body"> <div :class="$style.body">
<p :class="$style.init" v-if="isNaN(value)">待機中<mk-ellipsis/></p> <p :class="$style.init" v-if="isNaN(value)">%i18n:@waiting%<mk-ellipsis/></p>
<p :class="$style.percentage" v-if="!isNaN(value)">{{ Math.floor((value / max) * 100) }}</p> <p :class="$style.percentage" v-if="!isNaN(value)">{{ Math.floor((value / max) * 100) }}</p>
<progress :class="$style.progress" <progress :class="$style.progress"
v-if="!isNaN(value) && value < max" v-if="!isNaN(value) && value < max"

View File

@ -19,91 +19,91 @@
</section> </section>
<section class="web" v-show="page == 'web'"> <section class="web" v-show="page == 'web'">
<h1>動作</h1> <h1>%i18n:@behaviour%</h1>
<mk-switch v-model="clientSettings.fetchOnScroll" @change="onChangeFetchOnScroll" text="スクロールで自動読み込み"> <mk-switch v-model="clientSettings.fetchOnScroll" @change="onChangeFetchOnScroll" text="%i18n:@fetch-on-scroll%>
<span>ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます</span> <span>%i18n:@fetch-on-scroll-desc%</span>
</mk-switch> </mk-switch>
<mk-switch v-model="autoPopout" text="ウィンドウの自動ポップアウト"> <mk-switch v-model="autoPopout" text="%i18n:@auto-popout%">
<span>ウィンドウが開かれるときポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトしますこの設定はブラウザに記憶されます</span> <span>%i18n:@auto-popout-desc%</span>
</mk-switch> </mk-switch>
<details> <details>
<summary>詳細設定</summary> <summary>%i18n:@advanced%</summary>
<mk-switch v-model="apiViaStream" text="ストリームを経由したAPIリクエスト"> <mk-switch v-model="apiViaStream" text="%i18n:@api-via-stream%">
<span>この設定をオンにするとwebsocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)オフにするとネイティブの fetch APIが利用されますこの設定はこのデバイスのみ有効です</span> <span>%i18n:@api-via-stream-desc%</span>
</mk-switch> </mk-switch>
</details> </details>
</section> </section>
<section class="web" v-show="page == 'web'"> <section class="web" v-show="page == 'web'">
<h1>デザインと表示</h1> <h1>%i18n:@display%</h1>
<div class="div"> <div class="div">
<button class="ui button" @click="customizeHome" style="margin-bottom: 16px">ホームをカスタマイズ</button> <button class="ui button" @click="customizeHome" style="margin-bottom: 16px">%i18n:@customize%</button>
</div> </div>
<div class="div"> <div class="div">
<mk-switch v-model="darkmode" text="ダークモード"/> <mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
<mk-switch v-model="clientSettings.circleIcons" @change="onChangeCircleIcons" text="円形のアイコンを使用"/> <mk-switch v-model="clientSettings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
<mk-switch v-model="clientSettings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="ウィンドウのタイトルバーにグラデーションを使用"/> <mk-switch v-model="clientSettings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
</div> </div>
<mk-switch v-model="clientSettings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="タイムライン上部に投稿フォームを表示する"/> <mk-switch v-model="clientSettings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
<mk-switch v-model="clientSettings.showReplyTarget" @change="onChangeShowReplyTarget" text="リプライ先を表示する"/> <mk-switch v-model="clientSettings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
<mk-switch v-model="clientSettings.showMyRenotes" @change="onChangeShowMyRenotes" text="自分の行ったRenoteをタイムラインに表示する"/> <mk-switch v-model="clientSettings.showMyRenotes" @change="onChangeShowMyRenotes" text="%i18n:@show-my-renotes%"/>
<mk-switch v-model="clientSettings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="Renoteされた自分の投稿をタイムラインに表示する"/> <mk-switch v-model="clientSettings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="%i18n:@show-renoted-my-notes%"/>
<mk-switch v-model="clientSettings.showMaps" @change="onChangeShowMaps" text="マップの自動展開"> <mk-switch v-model="clientSettings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%">
<span>位置情報が添付された投稿のマップを自動的に展開します</span> <span>%i18n:@show-maps-desc%</span>
</mk-switch> </mk-switch>
</section> </section>
<section class="web" v-show="page == 'web'"> <section class="web" v-show="page == 'web'">
<h1>サウンド</h1> <h1>%i18n:@sound%</h1>
<mk-switch v-model="enableSounds" text="サウンドを有効にする"> <mk-switch v-model="enableSounds" text="%i18n:@enable-sounds%">
<span>投稿やメッセージを送受信したときなどにサウンドを再生しますこの設定はブラウザに記憶されます</span> <span>%i18n:@enable-sounds-desc%</span>
</mk-switch> </mk-switch>
<label>ボリューム</label> <label>%i18n:@volume%</label>
<el-slider <el-slider
v-model="soundVolume" v-model="soundVolume"
:show-input="true" :show-input="true"
:format-tooltip="v => `${v}%`" :format-tooltip="v => `${v}%`"
:disabled="!enableSounds" :disabled="!enableSounds"
/> />
<button class="ui button" @click="soundTest">%fa:volume-up% テスト</button> <button class="ui button" @click="soundTest">%fa:volume-up% %i18n:@test%</button>
</section> </section>
<section class="web" v-show="page == 'web'"> <section class="web" v-show="page == 'web'">
<h1>モバイル</h1> <h1>%i18n:@mobile%</h1>
<mk-switch v-model="clientSettings.disableViaMobile" @change="onChangeDisableViaMobile" text="「モバイルからの投稿」フラグを付けない"/> <mk-switch v-model="clientSettings.disableViaMobile" @change="onChangeDisableViaMobile" text="%i18n:@disable-via-mobile%"/>
</section> </section>
<section class="web" v-show="page == 'web'"> <section class="web" v-show="page == 'web'">
<h1>言語</h1> <h1>%i18n:@language%</h1>
<el-select v-model="lang" placeholder="言語を選択"> <el-select v-model="lang" placeholder="%i18n:@pick-language%">
<el-option-group label="推奨"> <el-option-group label="%i18n:@recommended%">
<el-option label="自動" value=""/> <el-option label="%i18n:@auto%" value=""/>
</el-option-group> </el-option-group>
<el-option-group label="言語を指定"> <el-option-group label="%i18n:@specify-language%">
<el-option label="ja" value="ja"/> <el-option label="日本語" value="ja"/>
<el-option label="en" value="en"/> <el-option label="English" value="en"/>
<el-option label="fr" value="fr"/> <el-option label="Français" value="fr"/>
<el-option label="pl" value="pl"/> <el-option label="Polski" value="pl"/>
<el-option label="de" value="de"/> <el-option label="Deutsch" value="de"/>
</el-option-group> </el-option-group>
</el-select> </el-select>
<div class="none ui info"> <div class="none ui info">
<p>%fa:info-circle%変更はページの再度読み込み後に反映されます</p> <p>%fa:info-circle%%i18n:@language-desc%</p>
</div> </div>
</section> </section>
<section class="web" v-show="page == 'web'"> <section class="web" v-show="page == 'web'">
<h1>キャッシュ</h1> <h1>%i18n:@cache%</h1>
<button class="ui button" @click="clean">クリーンアップ</button> <button class="ui button" @click="clean">%i18n:@clean-cache%</button>
<div class="none ui info warn"> <div class="none ui info warn">
<p>%fa:exclamation-triangle%クリーンアップを行うとブラウザに記憶されたアカウント情報のキャッシュ書きかけの投稿返信メッセージおよびその他のデータ(設定情報含む)が削除されますクリーンアップを行った後はページを再度読み込みする必要があります</p> <p>%fa:exclamation-triangle%%i18n:@cache-warn%</p>
</div> </div>
</section> </section>
<section class="notification" v-show="page == 'notification'"> <section class="notification" v-show="page == 'notification'">
<h1>%i18n:@notification%</h1> <h1>%i18n:@notification%</h1>
<mk-switch v-model="os.i.settings.autoWatch" @change="onChangeAutoWatch" text="投稿の自動ウォッチ"> <mk-switch v-model="os.i.settings.autoWatch" @change="onChangeAutoWatch" text="%i18n:@auto-watch%">
<span>リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします</span> <span>%i18n:@auto-watch-desc%</span>
</mk-switch> </mk-switch>
</section> </section>
@ -148,57 +148,57 @@
</section> </section>
<section class="other" v-show="page == 'other'"> <section class="other" v-show="page == 'other'">
<h1>Misskeyについて</h1> <h1>%i18n:@about%</h1>
<p v-if="meta">このサーバーの運営者: <i><a :href="meta.maintainer.url" target="_blank">{{ meta.maintainer.name }}</a></i></p> <p v-if="meta">%i18n:@operator%: <i><a :href="meta.maintainer.url" target="_blank">{{ meta.maintainer.name }}</a></i></p>
</section> </section>
<section class="other" v-show="page == 'other'"> <section class="other" v-show="page == 'other'">
<h1>Misskey Update</h1> <h1>%i18n:@update%</h1>
<p> <p>
<span>バージョン: <i>{{ version }}</i></span> <span>%i18n:@version% <i>{{ version }}</i></span>
<template v-if="latestVersion !== undefined"> <template v-if="latestVersion !== undefined">
<br> <br>
<span>最新のバージョン: <i>{{ latestVersion ? latestVersion : version }}</i></span> <span>%i18n:@latest-version% <i>{{ latestVersion ? latestVersion : version }}</i></span>
</template> </template>
</p> </p>
<button class="ui button block" @click="checkForUpdate" :disabled="checkingForUpdate"> <button class="ui button block" @click="checkForUpdate" :disabled="checkingForUpdate">
<template v-if="checkingForUpdate">アップデートを確認中<mk-ellipsis/></template> <template v-if="checkingForUpdate">%i18n:@update-checking%<mk-ellipsis/></template>
<template v-else>アップデートを確認</template> <template v-else>%i18n:@do-update%</template>
</button> </button>
<details> <details>
<summary>詳細設定</summary> <summary>%i18n:@update-settings%</summary>
<mk-switch v-model="preventUpdate" text="アップデートを延期する(非推奨)"> <mk-switch v-model="preventUpdate" text="%i18n:@prevent-update%>
<span>この設定をオンにしてもアップデートが反映される場合がありますこの設定はこのデバイスのみ有効です</span> <span>%i18n:@prevent-update-desc%</span>
</mk-switch> </mk-switch>
</details> </details>
</section> </section>
<section class="other" v-show="page == 'other'"> <section class="other" v-show="page == 'other'">
<h1>高度な設定</h1> <h1>%i18n:@advanced-settings%</h1>
<mk-switch v-model="debug" text="デバッグモードを有効にする"> <mk-switch v-model="debug" text="%i18n:@debug-mode%">
<span>この設定はブラウザに記憶されます</span> <span>%i18n:@debug-mode-desc%</span>
</mk-switch> </mk-switch>
<template v-if="debug"> <template v-if="debug">
<mk-switch v-model="useRawScript" text="生のスクリプトを読み込む"> <mk-switch v-model="useRawScript" text="%i18n:@use-raw-script%">
<span>圧縮されていない生のスクリプトを使用しますサイズが大きいため読み込みに時間がかかる場合がありますこの設定はブラウザに記憶されます</span> <span>%i18n:@use-raw-script-desc%</span>
</mk-switch> </mk-switch>
<div class="none ui info"> <div class="none ui info">
<p>%fa:info-circle%Misskeyはソースマップも提供しています</p> <p>%fa:info-circle%%i18n:@source-info%</p>
</div> </div>
</template> </template>
<mk-switch v-model="enableExperimental" text="実験的機能を有効にする"> <mk-switch v-model="enableExperimental" text="%i18n:@experimental%">
<span>実験的機能を有効にするとMisskeyの動作が不安定になる可能性がありますこの設定はブラウザに記憶されます</span> <span>%i18n:@experimental-desc%</span>
</mk-switch> </mk-switch>
<details v-if="debug"> <details v-if="debug">
<summary>ツール</summary> <summary>%i18n:@tools%</summary>
<button class="ui button block" @click="taskmngr">タスクマネージャ</button> <button class="ui button block" @click="taskmngr">%i18n:@task-manager%</button>
</details> </details>
</section> </section>
<section class="other" v-show="page == 'other'"> <section class="other" v-show="page == 'other'">
<h1>%i18n:@license%</h1> <h1>%i18n:@license%</h1>
<div v-html="license"></div> <div v-html="license"></div>
<a :href="licenseUrl" target="_blank">サードパーティ</a> <a :href="licenseUrl" target="_blank">%i18n:@third-parties%</a>
</section> </section>
</div> </div>
</div> </div>
@ -371,13 +371,13 @@ export default Vue.extend({
this.latestVersion = newer; this.latestVersion = newer;
if (newer == null) { if (newer == null) {
(this as any).apis.dialog({ (this as any).apis.dialog({
title: '利用可能な更新はありません', title: '%i18n:@no-updates%',
text: 'お使いのMisskeyは最新です。' text: '%i18n:@no-updates-desc%'
}); });
} else { } else {
(this as any).apis.dialog({ (this as any).apis.dialog({
title: '新しいバージョンが利用可能です', title: '%i18n:@update-available%',
text: 'ページを再度読み込みすると更新が適用されます。' text: '%i18n:@update-available-desc%'
}); });
} }
}); });
@ -385,8 +385,8 @@ export default Vue.extend({
clean() { clean() {
localStorage.clear(); localStorage.clear();
(this as any).apis.dialog({ (this as any).apis.dialog({
title: 'キャッシュを削除しました', title: '%i18n:@cache-cleared%',
text: 'ページを再度読み込みしてください。' text: '%i18n:@caache-cleared-desc%'
}); });
}, },
soundTest() { soundTest() {

View File

@ -1,6 +1,6 @@
<template> <template>
<mk-window ref="window" width="750px" height="500px" @closed="$destroy" name="TaskManager"> <mk-window ref="window" width="750px" height="500px" @closed="$destroy" name="TaskManager">
<span slot="header" :class="$style.header">%fa:stethoscope%タスクマネージャ</span> <span slot="header" :class="$style.header">%fa:stethoscope%%i18n:@title%</span>
<el-tabs :class="$style.content"> <el-tabs :class="$style.content">
<el-tab-pane label="Requests"> <el-tab-pane label="Requests">
<el-table <el-table