moar and moar i18n
Signed-off-by: Marcin Mikołajczak <me@m4sk.in>
This commit is contained in:
parent
254fbbbc75
commit
01e7c0175e
12 changed files with 89 additions and 36 deletions
|
@ -191,6 +191,16 @@ common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
|
|
||||||
|
commons/views/widgets/visibility-chooser.vue:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
|
@ -340,6 +350,14 @@ desktop/views/components/messaging-room-window.vue:
|
||||||
desktop/views/components/messaging-window.vue:
|
desktop/views/components/messaging-window.vue:
|
||||||
title: "メッセージ"
|
title: "メッセージ"
|
||||||
|
|
||||||
|
desktop/views/components/note-detail.vue:
|
||||||
|
more: "会話をもっと読み込む"
|
||||||
|
private: "(この投稿は非公開です)"
|
||||||
|
is-renote: "がRenote"
|
||||||
|
location: "位置情報"
|
||||||
|
renote: "Renote"
|
||||||
|
add-reaction: "リアクション"
|
||||||
|
|
||||||
desktop/views/components/note-detail.sub.vue:
|
desktop/views/components/note-detail.sub.vue:
|
||||||
private: "(この投稿は非公開です)"
|
private: "(この投稿は非公開です)"
|
||||||
|
|
||||||
|
@ -536,6 +554,11 @@ desktop/views/components/settings.profile.vue:
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
|
|
||||||
|
desktop/views/components/sub-note-content.vue:
|
||||||
|
hidden: "(この投稿は非公開です)"
|
||||||
|
media: "つのメディア"
|
||||||
|
poll: "投票"
|
||||||
|
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "タスクマネージャ"
|
title: "タスクマネージャ"
|
||||||
|
|
||||||
|
@ -583,6 +606,22 @@ desktop/views/components/users-list.vue:
|
||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
fetching: "読み込んでいます"
|
fetching: "読み込んでいます"
|
||||||
|
|
||||||
|
desktop/views/components/users-list-item.vue:
|
||||||
|
followed: "フォローされています"
|
||||||
|
|
||||||
|
desktop/views/components/window.vue:
|
||||||
|
popout: "ポップアウト"
|
||||||
|
close: "閉じる"
|
||||||
|
|
||||||
|
desktop/views/pages/drive.vue:
|
||||||
|
title: "Misskey Drive"
|
||||||
|
|
||||||
|
desktop/views/pages/favorites.vue:
|
||||||
|
more: "さらに読み込む"
|
||||||
|
|
||||||
|
desktop/views/pages/home-customize.vue:
|
||||||
|
title: "ホームのカスタマイズ"
|
||||||
|
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
prev: "前の投稿"
|
prev: "前の投稿"
|
||||||
next: "次の投稿"
|
next: "次の投稿"
|
||||||
|
@ -593,6 +632,11 @@ desktop/views/pages/selectdrive.vue:
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "PCからドライブにファイルをアップロード"
|
||||||
|
|
||||||
|
desktop/views/pages/user-list.users.vue:
|
||||||
|
users: "ユーザー"
|
||||||
|
add-user: "ユーザーを追加"
|
||||||
|
username: "ユーザー名"
|
||||||
|
|
||||||
desktop/views/pages/user/user.followers-you-know.vue:
|
desktop/views/pages/user/user.followers-you-know.vue:
|
||||||
title: "知り合いのフォロワー"
|
title: "知り合いのフォロワー"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
|
@ -625,6 +669,12 @@ desktop/views/pages/user/user.profile.vue:
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
|
||||||
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
|
default: "投稿"
|
||||||
|
with-replies: "投稿と返信"
|
||||||
|
with-media: "メディア"
|
||||||
|
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||||
|
|
||||||
desktop/views/widgets/messaging.vue:
|
desktop/views/widgets/messaging.vue:
|
||||||
title: "メッセージ"
|
title: "メッセージ"
|
||||||
|
|
||||||
|
@ -642,6 +692,10 @@ desktop/views/widgets/post-form.vue:
|
||||||
note: "投稿"
|
note: "投稿"
|
||||||
placeholder: "いまどうしてる?"
|
placeholder: "いまどうしてる?"
|
||||||
|
|
||||||
|
desktop/views/widgets/profile.vue:
|
||||||
|
update-banner: "クリックでバナー編集"
|
||||||
|
update-avatar: "クリックでアバター編集"
|
||||||
|
|
||||||
desktop/views/widgets/trends.vue:
|
desktop/views/widgets/trends.vue:
|
||||||
title: "トレンド"
|
title: "トレンド"
|
||||||
refresh: "他を見る"
|
refresh: "他を見る"
|
||||||
|
|
|
@ -5,34 +5,34 @@
|
||||||
<div @click="choose('public')" :class="{ active: v == 'public' }">
|
<div @click="choose('public')" :class="{ active: v == 'public' }">
|
||||||
<div>%fa:globe%</div>
|
<div>%fa:globe%</div>
|
||||||
<div>
|
<div>
|
||||||
<span>公開</span>
|
<span>%i18n:@public%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div @click="choose('home')" :class="{ active: v == 'home' }">
|
<div @click="choose('home')" :class="{ active: v == 'home' }">
|
||||||
<div>%fa:home%</div>
|
<div>%fa:home%</div>
|
||||||
<div>
|
<div>
|
||||||
<span>ホーム</span>
|
<span>%i18n:@home%</span>
|
||||||
<span>ホームタイムラインにのみ公開</span>
|
<span>%i18n:@home-desc%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div @click="choose('followers')" :class="{ active: v == 'followers' }">
|
<div @click="choose('followers')" :class="{ active: v == 'followers' }">
|
||||||
<div>%fa:unlock%</div>
|
<div>%fa:unlock%</div>
|
||||||
<div>
|
<div>
|
||||||
<span>フォロワー</span>
|
<span>%i18n:@followers%</span>
|
||||||
<span>自分のフォロワーにのみ公開</span>
|
<span>%i18n:@followers-desc%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div @click="choose('specified')" :class="{ active: v == 'specified' }">
|
<div @click="choose('specified')" :class="{ active: v == 'specified' }">
|
||||||
<div>%fa:envelope%</div>
|
<div>%fa:envelope%</div>
|
||||||
<div>
|
<div>
|
||||||
<span>ダイレクト</span>
|
<span>%i18n:@specified%</span>
|
||||||
<span>指定したユーザーにのみ公開</span>
|
<span>%i18n:@specified-desc%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div @click="choose('private')" :class="{ active: v == 'private' }">
|
<div @click="choose('private')" :class="{ active: v == 'private' }">
|
||||||
<div>%fa:lock%</div>
|
<div>%fa:lock%</div>
|
||||||
<div>
|
<div>
|
||||||
<span>非公開</span>
|
<span>%i18n:@private%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<button
|
<button
|
||||||
class="read-more"
|
class="read-more"
|
||||||
v-if="p.reply && p.reply.replyId && context.length == 0"
|
v-if="p.reply && p.reply.replyId && context.length == 0"
|
||||||
title="会話をもっと読み込む"
|
title="%i18n:@more%"
|
||||||
@click="fetchContext"
|
@click="fetchContext"
|
||||||
:disabled="contextFetching"
|
:disabled="contextFetching"
|
||||||
>
|
>
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
<mk-avatar class="avatar" :user="note.user"/>
|
<mk-avatar class="avatar" :user="note.user"/>
|
||||||
%fa:retweet%
|
%fa:retweet%
|
||||||
<router-link class="name" :href="note.user | userPage">{{ note.user | userName }}</router-link>
|
<router-link class="name" :href="note.user | userPage">{{ note.user | userName }}</router-link>
|
||||||
がRenote
|
%i18n:@is-renote%
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<article>
|
<article>
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
</header>
|
</header>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<span v-if="p.isHidden" style="opacity: 0.5">(この投稿は非公開です)</span>
|
<span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span>
|
||||||
<mk-note-html v-if="p.text" :text="p.text" :i="os.i"/>
|
<mk-note-html v-if="p.text" :text="p.text" :i="os.i"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="media" v-if="p.media.length > 0">
|
<div class="media" v-if="p.media.length > 0">
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
<div class="tags" v-if="p.tags && p.tags.length > 0">
|
<div class="tags" v-if="p.tags && p.tags.length > 0">
|
||||||
<router-link v-for="tag in p.tags" :key="tag" :to="`/search?q=#${tag}`">{{ tag }}</router-link>
|
<router-link v-for="tag in p.tags" :key="tag" :to="`/search?q=#${tag}`">{{ tag }}</router-link>
|
||||||
</div>
|
</div>
|
||||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a>
|
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
||||||
<div class="map" v-if="p.geo" ref="map"></div>
|
<div class="map" v-if="p.geo" ref="map"></div>
|
||||||
<div class="renote" v-if="p.renote">
|
<div class="renote" v-if="p.renote">
|
||||||
<mk-note-preview :note="p.renote"/>
|
<mk-note-preview :note="p.renote"/>
|
||||||
|
@ -54,15 +54,15 @@
|
||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
<mk-reactions-viewer :note="p"/>
|
<mk-reactions-viewer :note="p"/>
|
||||||
<button @click="reply" title="返信">
|
<button @click="reply" title="">
|
||||||
<template v-if="p.reply">%fa:reply-all%</template>
|
<template v-if="p.reply">%fa:reply-all%</template>
|
||||||
<template v-else>%fa:reply%</template>
|
<template v-else>%fa:reply%</template>
|
||||||
<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button @click="renote" title="Renote">
|
<button @click="renote" title="%i18n:@renote%>
|
||||||
%fa:retweet%<p class="count" v-if="p.renoteCount > 0">{{ p.renoteCount }}</p>
|
%fa:retweet%<p class="count" v-if="p.renoteCount > 0">{{ p.renoteCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button :class="{ reacted: p.myReaction != null }" @click="react" ref="reactButton" title="リアクション">
|
<button :class="{ reacted: p.myReaction != null }" @click="react" ref="reactButton" title="%i18n:@add-reaction%">
|
||||||
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button @click="menu" ref="menuButton">
|
<button @click="menu" ref="menuButton">
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="mk-sub-note-content">
|
<div class="mk-sub-note-content">
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<span v-if="note.isHidden" style="opacity: 0.5">(この投稿は非公開です)</span>
|
<span v-if="note.isHidden" style="opacity: 0.5">%i18n:@hidden%</span>
|
||||||
<a class="reply" v-if="note.replyId">%fa:reply%</a>
|
<a class="reply" v-if="note.replyId">%fa:reply%</a>
|
||||||
<mk-note-html :text="note.text" :i="os.i"/>
|
<mk-note-html :text="note.text" :i="os.i"/>
|
||||||
<a class="rp" v-if="note.renoteId" :href="`/note:${note.renoteId}`">RP: ...</a>
|
<a class="rp" v-if="note.renoteId" :href="`/note:${note.renoteId}`">RP: ...</a>
|
||||||
</div>
|
</div>
|
||||||
<details v-if="note.media.length > 0">
|
<details v-if="note.media.length > 0">
|
||||||
<summary>({{ note.media.length }}つのメディア)</summary>
|
<summary>({{ note.media.length }}%i18n:@media%)</summary>
|
||||||
<mk-media-list :media-list="note.media"/>
|
<mk-media-list :media-list="note.media"/>
|
||||||
</details>
|
</details>
|
||||||
<details v-if="note.poll">
|
<details v-if="note.poll">
|
||||||
<summary>投票</summary>
|
<summary>%i18n:@poll%</summary>
|
||||||
<mk-poll :note="note"/>
|
<mk-poll :note="note"/>
|
||||||
</details>
|
</details>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<span class="username">@{{ user | acct }}</span>
|
<span class="username">@{{ user | acct }}</span>
|
||||||
</header>
|
</header>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<p class="followed" v-if="user.isFollowed">フォローされています</p>
|
<p class="followed" v-if="user.isFollowed">%i18n:@followed%</p>
|
||||||
<div class="description">{{ user.description }}</div>
|
<div class="description">{{ user.description }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
>
|
>
|
||||||
<h1><slot name="header"></slot></h1>
|
<h1><slot name="header"></slot></h1>
|
||||||
<div>
|
<div>
|
||||||
<button class="popout" v-if="popoutUrl" @mousedown.stop="() => {}" @click="popout" title="ポップアウト">%fa:R window-restore%</button>
|
<button class="popout" v-if="popoutUrl" @mousedown.stop="() => {}" @click="popout" title="%i18n:@popout%">%fa:R window-restore%</button>
|
||||||
<button class="close" v-if="canClose" @mousedown.stop="() => {}" @click="close" title="閉じる">%fa:times%</button>
|
<button class="close" v-if="canClose" @mousedown.stop="() => {}" @click="close" title="%i18n:@close%">%fa:times%</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
|
@ -16,11 +16,11 @@ export default Vue.extend({
|
||||||
this.folder = this.$route.params.folder;
|
this.folder = this.$route.params.folder;
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = 'Misskey Drive';
|
document.title = '%i18n:@title%';
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onMoveRoot() {
|
onMoveRoot() {
|
||||||
const title = 'Misskey Drive';
|
const title = '%i18n:@title%';
|
||||||
|
|
||||||
// Rewrite URL
|
// Rewrite URL
|
||||||
history.pushState(null, title, '/i/drive');
|
history.pushState(null, title, '/i/drive');
|
||||||
|
@ -28,7 +28,7 @@ export default Vue.extend({
|
||||||
document.title = title;
|
document.title = title;
|
||||||
},
|
},
|
||||||
onOpenFolder(folder) {
|
onOpenFolder(folder) {
|
||||||
const title = folder.name + ' | Misskey Drive';
|
const title = folder.name + ' | %i18n:@title%';
|
||||||
|
|
||||||
// Rewrite URL
|
// Rewrite URL
|
||||||
history.pushState(null, title, '/i/drive/folder/' + folder.id);
|
history.pushState(null, title, '/i/drive/folder/' + folder.id);
|
||||||
|
@ -49,4 +49,3 @@ export default Vue.extend({
|
||||||
> .mk-drive
|
> .mk-drive
|
||||||
height 100%
|
height 100%
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<template v-for="favorite in favorites">
|
<template v-for="favorite in favorites">
|
||||||
<mk-note-detail :note="favorite.note" :key="favorite.note.id"/>
|
<mk-note-detail :note="favorite.note" :key="favorite.note.id"/>
|
||||||
</template>
|
</template>
|
||||||
<a v-if="existMore" @click="more">さらに読み込む</a>
|
<a v-if="existMore" @click="more">%i18n:@more%</a>
|
||||||
</main>
|
</main>
|
||||||
</mk-ui>
|
</mk-ui>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = 'Misskey - ホームのカスタマイズ';
|
document.title = 'Misskey - %i18n:@title%';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<mk-widget-container>
|
<mk-widget-container>
|
||||||
<template slot="header">%fa:users% ユーザー</template>
|
<template slot="header">%fa:users% %i18n:@users%</template>
|
||||||
<button slot="func" title="ユーザーを追加" @click="add">%fa:plus%</button>
|
<button slot="func" title="%i18n:@add-user%" @click="add">%fa:plus%</button>
|
||||||
|
|
||||||
<div data-id="d0b63759-a822-4556-a5ce-373ab966e08a">
|
<div data-id="d0b63759-a822-4556-a5ce-373ab966e08a">
|
||||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw% %i18n:common.loading%<mk-ellipsis/></p>
|
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw% %i18n:common.loading%<mk-ellipsis/></p>
|
||||||
|
@ -48,7 +48,7 @@ export default Vue.extend({
|
||||||
methods: {
|
methods: {
|
||||||
add() {
|
add() {
|
||||||
(this as any).apis.input({
|
(this as any).apis.input({
|
||||||
title: 'ユーザー名',
|
title: '%i18n:@username%',
|
||||||
}).then(async username => {
|
}).then(async username => {
|
||||||
const user = await (this as any).api('users/show', {
|
const user = await (this as any).api('users/show', {
|
||||||
username
|
username
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="timeline">
|
<div class="timeline">
|
||||||
<header>
|
<header>
|
||||||
<span :data-active="mode == 'default'" @click="mode = 'default'">投稿</span>
|
<span :data-active="mode == 'default'" @click="mode = 'default'">%i18n:@default%</span>
|
||||||
<span :data-active="mode == 'with-replies'" @click="mode = 'with-replies'">投稿と返信</span>
|
<span :data-active="mode == 'with-replies'" @click="mode = 'with-replies'">%i18n:@with-replies%</span>
|
||||||
<span :data-active="mode == 'with-media'" @click="mode = 'with-media'">メディア</span>
|
<span :data-active="mode == 'with-media'" @click="mode = 'with-media'">%i18n:@with-media%</span>
|
||||||
</header>
|
</header>
|
||||||
<div class="loading" v-if="fetching">
|
<div class="loading" v-if="fetching">
|
||||||
<mk-ellipsis-icon/>
|
<mk-ellipsis-icon/>
|
||||||
</div>
|
</div>
|
||||||
<mk-notes ref="timeline" :more="existMore ? more : null">
|
<mk-notes ref="timeline" :more="existMore ? more : null">
|
||||||
<p class="empty" slot="empty">%fa:R comments%このユーザーはまだ何も投稿していないようです。</p>
|
<p class="empty" slot="empty">%fa:R comments%%i18n:@empty%</p>
|
||||||
</mk-notes>
|
</mk-notes>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -5,12 +5,12 @@
|
||||||
>
|
>
|
||||||
<div class="banner"
|
<div class="banner"
|
||||||
:style="os.i.bannerUrl ? `background-image: url(${os.i.bannerUrl}?thumbnail&size=256)` : ''"
|
:style="os.i.bannerUrl ? `background-image: url(${os.i.bannerUrl}?thumbnail&size=256)` : ''"
|
||||||
title="クリックでバナー編集"
|
title="%i18n:@update-banner%"
|
||||||
@click="os.apis.updateBanner"
|
@click="os.apis.updateBanner"
|
||||||
></div>
|
></div>
|
||||||
<mk-avatar class="avatar" :user="os.i"
|
<mk-avatar class="avatar" :user="os.i"
|
||||||
@click="os.apis.updateAvatar"
|
@click="os.apis.updateAvatar"
|
||||||
title="クリックでアバター編集"
|
title="%i18n:@update-avatar%"
|
||||||
/>
|
/>
|
||||||
<router-link class="name" :to="os.i | userPage">{{ os.i | userName }}</router-link>
|
<router-link class="name" :to="os.i | userPage">{{ os.i | userName }}</router-link>
|
||||||
<p class="username">@{{ os.i | acct }}</p>
|
<p class="username">@{{ os.i | acct }}</p>
|
||||||
|
|
Loading…
Reference in a new issue