This commit is contained in:
Aya Morisawa 2018-08-02 19:03:31 +09:00
parent 0df093383d
commit 7b33c63f78
34 changed files with 167 additions and 74 deletions

View File

@ -6,6 +6,10 @@ common:
misskey: "A ⭐ of the fediverse" misskey: "A ⭐ of the fediverse"
about-title: "A ⭐ of the fediverse." about-title: "A ⭐ of the fediverse."
about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?" about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?"
adblock:
detected: "Please disable ad blocker."
warning: "<strong>Misskey is not running ads</strong>, but some features may be unavailable or malfunctioning if ad blocking features are enabled."
application-authorization: "Application authorizations"
customization-tips: customization-tips:
title: "Customization tips" title: "Customization tips"
paragraph1: "Home customization allows you to add/delete, drag and drop and rearrange widgets." paragraph1: "Home customization allows you to add/delete, drag and drop and rearrange widgets."
@ -13,6 +17,15 @@ common:
paragraph3: "To delete a widget, <strong>drag and drop the widget onto the area labeled \"Trash\"</strong> in the header." paragraph3: "To delete a widget, <strong>drag and drop the widget onto the area labeled \"Trash\"</strong> in the header."
paragraph4: "To finish the customization, click \"Finish\" in the upper right." paragraph4: "To finish the customization, click \"Finish\" in the upper right."
gotit: "Got it!" gotit: "Got it!"
close: "Close"
notification:
file-uploaded: "File uploaded!"
message-from: "Message from {}:"
reversi-invited: "Invited to a game:"
reversi-invited-by: "By {}."
notified-by: "Notified by {}:"
reply-from: "Reply from {}:"
quoted-by: "Quoted by {}:"
name: "Misskey" name: "Misskey"
time: time:
unknown: "unknown" unknown: "unknown"
@ -26,6 +39,12 @@ common:
months_ago: "{}month(s) ago" months_ago: "{}month(s) ago"
years_ago: "{}year(s) ago" years_ago: "{}year(s) ago"
trash: "Trash" trash: "Trash"
date:
full-year: "Year"
month: "Month"
day: "Day"
hours: "Hours"
minutes: "Minutes"
weekday-short: weekday-short:
sunday: "S" sunday: "S"
monday: "M" monday: "M"
@ -121,6 +140,30 @@ common:
rename: "Rename" rename: "Rename"
stack-left: "Stack to the left" stack-left: "Stack to the left"
pop-right: "Dock on the right" pop-right: "Dock on the right"
auth/views/form.vue:
share-access: "Would you <b>allow</b> <i>{{app.name}}</i> to access your account?"
permission-ask: "This application requires the following permissions:"
account-read: "View account information."
account-write: "Modify account information."
note-write: "Post."
like-write: "React."
following-write: "Follow or unfollow."
drive-read: "Read your drive."
drive-write: "Upload/delete files in your drive."
notification-read: "Read your notifications."
notification-write: "Manage your notifications."
cancel: "Cancel"
accept: "Accept"
auth/views/index.vue:
loading: "Loading..."
denied: "Application authorization is denied."
denied-paragraph: "This application will not access your account."
already-authorized: "This application is already authorized."
allowed: "Application authorization allowed."
callback-url: "Going back to the application."
please-go-back: "Please go back to the application."
error: "Session does not exist."
sign-in: "Please sign in."
common/views/components/games/reversi/reversi.vue: common/views/components/games/reversi/reversi.vue:
title: "Misskey Reversi" title: "Misskey Reversi"
sub-title: "Play reversi with your friends!" sub-title: "Play reversi with your friends!"
@ -751,10 +794,9 @@ desktop/views/pages/search.vue:
not-available: "The search function can not be used." not-available: "The search function can not be used."
not-found: "No posts were found for '{}'" not-found: "No posts were found for '{}'"
desktop/views/pages/share.vue: desktop/views/pages/share.vue:
share-with: "Share with Misskey" share-with: "Share with {}"
close: "Close"
desktop/views/pages/tag.vue: desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。" no-posts-found: "No posts \"{}\" found."
desktop/views/pages/user-list.users.vue: desktop/views/pages/user-list.users.vue:
users: "User" users: "User"
add-user: "Add a user" add-user: "Add a user"
@ -954,7 +996,7 @@ mobile/views/pages/home.vue:
hybrid: "Social" hybrid: "Social"
global: "Global" global: "Global"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。" no-posts-found: "No posts \"{}\" found."
mobile/views/pages/welcome.vue: mobile/views/pages/welcome.vue:
signup: "Sign up" signup: "Sign up"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
@ -995,6 +1037,8 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue: mobile/views/pages/search.vue:
search: "Search" search: "Search"
empty: "No posts were found for '{}'" empty: "No posts were found for '{}'"
mobile/views/pages/share.vue:
share-with: "Share with {}."
mobile/views/pages/selectdrive.vue: mobile/views/pages/selectdrive.vue:
select-file: "Choose files" select-file: "Choose files"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:

View File

@ -6,6 +6,11 @@ common:
misskey: "A ⭐ of fediverse" misskey: "A ⭐ of fediverse"
about-title: "A ⭐ of fediverse." about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
adblock:
detected: "広告ブロッカーを無効にしてください"
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。" paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@ -13,6 +18,14 @@ common:
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。" paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。" paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
gotit: "Got it!" gotit: "Got it!"
notification:
file-uploaded: "ファイルがアップロードされました"
message-from: "{}さんからメッセージ:"
reversi-invited: "対局への招待があります"
reversi-invited-by: "{}さんから"
notified-by: "{}さんから"
reply-from: "{}さんから返信:"
quoted-by: "{}さんが引用:"
name: "Misskey" name: "Misskey"
time: time:
unknown: "なぞのじかん" unknown: "なぞのじかん"
@ -28,6 +41,13 @@ common:
trash: "ゴミ箱" trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short: weekday-short:
sunday: "日" sunday: "日"
monday: "月" monday: "月"
@ -131,6 +151,32 @@ common:
stack-left: "左に重ねる" stack-left: "左に重ねる"
pop-right: "右に出す" pop-right: "右に出す"
auth/views/form.vue:
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
permission-ask: "このアプリは次の権限を要求しています:"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
like-write: "いいねしたりいいね解除する。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"
cancel: "キャンセル"
accept: "アクセスを許可"
auth/views/index.vue:
loading: "読み込み中"
denied: "アプリケーションの連携をキャンセルしました。"
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
already-authorized: "このアプリは既に連携済みです"
allowed: "アプリケーションの連携を許可しました"
callback-url: "アプリケーションに戻っています"
please-go-back: "アプリケーションに戻って、やっていってください。"
error: "セッションが存在しません。"
sign-in: "サインインしてください"
common/views/components/games/reversi/reversi.vue: common/views/components/games/reversi/reversi.vue:
title: "Misskey Reversi" title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう" sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
@ -870,8 +916,7 @@ desktop/views/pages/search.vue:
not-found: "「{}」に関する投稿は見つかりませんでした。" not-found: "「{}」に関する投稿は見つかりませんでした。"
desktop/views/pages/share.vue: desktop/views/pages/share.vue:
share-with: "Misskeyで共有" share-with: "{}で共有"
close: "閉じる"
desktop/views/pages/tag.vue: desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
@ -1127,10 +1172,14 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
mobile/views/pages/widgets/activity.vue: mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ" activity: "アクティビティ"
mobile/views/pages/share.vue:
share-with: "{}で共有"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "メッセージ" messaging: "メッセージ"

View File

@ -15,7 +15,7 @@ import Index from './views/index.vue';
* init * init
*/ */
init(launch => { init(launch => {
document.title = 'Misskey | アプリの連携'; document.title = '%i18n:common.name% | %i18n:common.application-authorization%';
// Init router // Init router
const router = new VueRouter({ const router = new VueRouter({

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="form"> <div class="form">
<header> <header>
<h1><i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか</h1> <h1>%i18n:@share-access%</h1>
<img :src="app.iconUrl"/> <img :src="app.iconUrl"/>
</header> </header>
<div class="app"> <div class="app">
@ -11,25 +11,25 @@
<p class="description">{{ app.description }}</p> <p class="description">{{ app.description }}</p>
</section> </section>
<section> <section>
<h2>このアプリは次の権限を要求しています:</h2> <h2>%i18n:@permission-ask%</h2>
<ul> <ul>
<template v-for="p in app.permission"> <template v-for="p in app.permission">
<li v-if="p == 'account-read'">アカウントの情報を見る</li> <li v-if="p == 'account-read'">%i18n:@account-read%</li>
<li v-if="p == 'account-write'">アカウントの情報を操作する</li> <li v-if="p == 'account-write'">%i18n:@account-write%</li>
<li v-if="p == 'note-write'">投稿する</li> <li v-if="p == 'note-write'">%i18n:@note-write%</li>
<li v-if="p == 'like-write'">いいねしたりいいね解除する</li> <li v-if="p == 'like-write'">%i18n:@like-write%</li>
<li v-if="p == 'following-write'">フォローしたりフォロー解除する</li> <li v-if="p == 'following-write'">%i18n:@following-write%</li>
<li v-if="p == 'drive-read'">ドライブを見る</li> <li v-if="p == 'drive-read'">%i18n:@drive-read%</li>
<li v-if="p == 'drive-write'">ドライブを操作する</li> <li v-if="p == 'drive-write'">%i18n:@drive-write%</li>
<li v-if="p == 'notification-read'">通知を見る</li> <li v-if="p == 'notification-read'">%i18n:@notification-read%</li>
<li v-if="p == 'notification-write'">通知を操作する</li> <li v-if="p == 'notification-write'">%i18n:@notification-write%</li>
</template> </template>
</ul> </ul>
</section> </section>
</div> </div>
<div class="action"> <div class="action">
<button @click="cancel">キャンセル</button> <button @click="cancel">%i18n:@cancel%</button>
<button @click="accept">アクセスを許可</button> <button @click="accept">%i18n:@accept%</button>
</div> </div>
</div> </div>
</template> </template>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="index"> <div class="index">
<main v-if="$store.getters.isSignedIn"> <main v-if="$store.getters.isSignedIn">
<p class="fetching" v-if="fetching">読み込み中<mk-ellipsis/></p> <p class="fetching" v-if="fetching">%i18n:@loading%<mk-ellipsis/></p>
<x-form <x-form
class="form" class="form"
ref="form" ref="form"
@ -11,20 +11,20 @@
@accepted="accepted" @accepted="accepted"
/> />
<div class="denied" v-if="state == 'denied'"> <div class="denied" v-if="state == 'denied'">
<h1>アプリケーションの連携をキャンセルしました</h1> <h1>%i18n:@denied%</h1>
<p>このアプリがあなたのアカウントにアクセスすることはありません</p> <p>%i18n:@denied-paragraph%</p>
</div> </div>
<div class="accepted" v-if="state == 'accepted'"> <div class="accepted" v-if="state == 'accepted'">
<h1>{{ session.app.isAuthorized ? 'このアプリは既に連携済みです' : 'アプリケーションの連携を許可しました' }}</h1> <h1>{{ session.app.isAuthorized ? '%i18n:@already-authorized%' : '%i18n:@allowed%' }}</h1>
<p v-if="session.app.callbackUrl">アプリケーションに戻っています<mk-ellipsis/></p> <p v-if="session.app.callbackUrl">%i18n:@callback-url%<mk-ellipsis/></p>
<p v-if="!session.app.callbackUrl">アプリケーションに戻ってやっていってください</p> <p v-if="!session.app.callbackUrl">%i18n:@please-go-back%</p>
</div> </div>
<div class="error" v-if="state == 'fetch-session-error'"> <div class="error" v-if="state == 'fetch-session-error'">
<p>セッションが存在しません</p> <p>%i18n:@error%</p>
</div> </div>
</main> </main>
<main class="signin" v-if="!$store.getters.isSignedIn"> <main class="signin" v-if="!$store.getters.isSignedIn">
<h1>サインインしてください</h1> <h1>%i18n:@sign-in%</h1>
<mk-signin/> <mk-signin/>
</main> </main>
<footer><img src="/assets/auth/icon.svg" alt="Misskey"/></footer> <footer><img src="/assets/auth/icon.svg" alt="Misskey"/></footer>

View File

@ -15,22 +15,22 @@ export default function(type, data): Notification {
switch (type) { switch (type) {
case 'drive_file_created': case 'drive_file_created':
return { return {
title: 'ファイルがアップロードされました', title: '%i18n:common.notification.file-uploaded%',
body: data.name, body: data.name,
icon: data.url icon: data.url
}; };
case 'unread_messaging_message': case 'unread_messaging_message':
return { return {
title: `${getUserName(data.user)}さんからメッセージ:`, title: '%i18n:common.notification.message-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split("{}")[1] ,
body: data.text, // TODO: getMessagingMessageSummary(data), body: data.text, // TODO: getMessagingMessageSummary(data),
icon: data.user.avatarUrl icon: data.user.avatarUrl
}; };
case 'reversi_invited': case 'reversi_invited':
return { return {
title: '対局への招待があります', title: '%i18n:common.notification.reversi-invited%',
body: `${getUserName(data.parent)}さんから`, body: '%i18n:common.notification.reversi-invited-by%'.split("{}")[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split("{}")[1],
icon: data.parent.avatarUrl icon: data.parent.avatarUrl
}; };
@ -38,21 +38,21 @@ export default function(type, data): Notification {
switch (data.type) { switch (data.type) {
case 'mention': case 'mention':
return { return {
title: `${getUserName(data.user)}さんから:`, title: '%i18n:common.notification.notified-by%'.split("{}")[0] + `${getUserName(data.user)}さんから:` + '%i18n:common.notification.notified-by%'.split("{}")[1],
body: getNoteSummary(data), body: getNoteSummary(data),
icon: data.user.avatarUrl icon: data.user.avatarUrl
}; };
case 'reply': case 'reply':
return { return {
title: `${getUserName(data.user)}さんから返信:`, title: '%i18n:common.notification.reply-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.reply-from%'.split("{}")[1],
body: getNoteSummary(data), body: getNoteSummary(data),
icon: data.user.avatarUrl icon: data.user.avatarUrl
}; };
case 'quote': case 'quote':
return { return {
title: `${getUserName(data.user)}さんが引用:`, title: '%i18n:common.notification.quoted-by%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.quoted-by%'.split("{}")[1],
body: getNoteSummary(data), body: getNoteSummary(data),
icon: data.user.avatarUrl icon: data.user.avatarUrl
}; };

View File

@ -1,12 +1,12 @@
export default date => { export default date => {
if (typeof date == 'string') date = new Date(date); if (typeof date == 'string') date = new Date(date);
return ( return (
date.getFullYear() + '' + date.getFullYear() + '%i18n:common.date.full-year%' +
(date.getMonth() + 1) + '' + (date.getMonth() + 1) + '%i18n:common.date.month%' +
date.getDate() + '' + date.getDate() + '%i18n:common.date.day%' +
' ' + ' ' +
date.getHours() + '' + date.getHours() + '%i18n:common.date.hours%' +
date.getMinutes() + '' + date.getMinutes() + '%i18n:common.date.minutes%' +
' ' + ' ' +
`(${['日', '月', '火', '水', '木', '金', '土'][date.getDay()]})` `(${['日', '月', '火', '水', '木', '金', '土'][date.getDay()]})`
); );

View File

@ -5,8 +5,8 @@ declare const fuckAdBlock: any;
export default (os) => { export default (os) => {
function adBlockDetected() { function adBlockDetected() {
os.apis.dialog({ os.apis.dialog({
title: '%fa:exclamation-triangle%広告ブロッカーを無効にしてください', title: '%fa:exclamation-triangle%%i18n:common.adblock.detected%',
text: '<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。', text: '%i18n:common.adblock.warning%',
actins: [{ actins: [{
text: 'OK' text: 'OK'
}] }]

View File

@ -71,7 +71,7 @@ export default Vue.extend({
this.user = user; this.user = user;
this.fetching = false; this.fetching = false;
Progress.done(); Progress.done();
document.title = getUserName(this.user) + ' | Misskey'; document.title = getUserName(this.user) + ' | %i18n:common.name%';
}); });
}, },

View File

@ -187,7 +187,7 @@ export default Vue.extend({
clearNotification() { clearNotification() {
this.unreadCount = 0; this.unreadCount = 0;
document.title = 'Misskey'; document.title = '%i18n:common.name%';
}, },
onVisibilitychange() { onVisibilitychange() {

View File

@ -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 - %i18n:@title%'; document.title = '%i18n:common.name% - %i18n:@title%';
} }
}); });
</script> </script>

View File

@ -16,7 +16,7 @@ export default Vue.extend({
} }
}, },
mounted() { mounted() {
document.title = 'Misskey'; document.title = '%i18n:common.name%';
Progress.start(); Progress.start();
}, },

View File

@ -1,12 +1,12 @@
<template> <template>
<div class="pptjhabgjtt7kwskbfv4y3uml6fpuhmr"> <div class="pptjhabgjtt7kwskbfv4y3uml6fpuhmr">
<h1>%i18n:@share-with%</h1> <h1>{{'%i18n:@share-with%'.split("{}")[0] + '%i18n:common.name%' + '%i18n:@share-with%'.split("{}")[1]}}</h1>
<div> <div>
<mk-signin v-if="!$store.getters.isSignedIn"/> <mk-signin v-if="!$store.getters.isSignedIn"/>
<mk-post-form v-else-if="!posted" :initial-text="text" :instant="true" @posted="posted = true"/> <mk-post-form v-else-if="!posted" :initial-text="text" :instant="true" @posted="posted = true"/>
<p v-if="posted" class="posted">%fa:check%</p> <p v-if="posted" class="posted">%fa:check%</p>
</div> </div>
<button v-if="posted" class="ui button" @click="close">%i18n:@close%</button> <button v-if="posted" class="ui button" @click="close">%i18n:common.close%</button>
</div> </div>
</template> </template>

View File

@ -68,7 +68,7 @@ export default Vue.extend({
this.user = user; this.user = user;
this.fetching = false; this.fetching = false;
Progress.done(); Progress.done();
document.title = getUserName(this.user) + ' | Misskey'; document.title = getUserName(this.user) + ' | %i18n:common.name%';
}); });
}, },

View File

@ -17,7 +17,7 @@
<main> <main>
<div class="about"> <div class="about">
<h1 v-if="name">{{ name }}</h1> <h1 v-if="name">{{ name }}</h1>
<h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="Misskey"></h1> <h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="%i18n:common.name%"></h1>
<p class="powerd-by" v-if="name">%i18n:@powered-by-misskey%</p> <p class="powerd-by" v-if="name">%i18n:@powered-by-misskey%</p>
<p class="desc" v-html="description || '%i18n:common.about%'"></p> <p class="desc" v-html="description || '%i18n:common.about%'"></p>
<a ref="signup" @click="signup">📦 %i18n:@signup%</a> <a ref="signup" @click="signup">📦 %i18n:@signup%</a>
@ -32,7 +32,7 @@
<mk-nav class="nav"/> <mk-nav class="nav"/>
</div> </div>
<mk-forkit class="forkit"/> <mk-forkit class="forkit"/>
<img src="assets/title.dark.svg" alt="Misskey"> <img src="assets/title.dark.svg" alt="%i18n:common.name%">
</div> </div>
<div class="tl"> <div class="tl">
<mk-welcome-timeline :max="20"/> <mk-welcome-timeline :max="20"/>

View File

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<b-navbar toggleable="md" type="dark" variant="info"> <b-navbar toggleable="md" type="dark" variant="info">
<b-navbar-brand>Misskey Developers</b-navbar-brand> <b-navbar-brand>%i18n:common.name% Developers</b-navbar-brand>
<b-navbar-nav> <b-navbar-nav>
<b-nav-item to="/">Home</b-nav-item> <b-nav-item to="/">Home</b-nav-item>
<b-nav-item to="/apps">Apps</b-nav-item> <b-nav-item to="/apps">Apps</b-nav-item>

View File

@ -183,7 +183,7 @@ export default Vue.extend({
clearNotification() { clearNotification() {
this.unreadCount = 0; this.unreadCount = 0;
document.title = 'Misskey'; document.title = '%i18n:common.name%';
}, },
onVisibilitychange() { onVisibilitychange() {

View File

@ -43,7 +43,7 @@ export default Vue.extend({
window.addEventListener('popstate', this.onPopState); window.addEventListener('popstate', this.onPopState);
}, },
mounted() { mounted() {
document.title = 'Misskey Drive'; document.title = '%i18n:common.name% Drive';
document.documentElement.style.background = '#fff'; document.documentElement.style.background = '#fff';
}, },
beforeDestroy() { beforeDestroy() {
@ -63,7 +63,7 @@ export default Vue.extend({
(this.$refs as any).browser.openContextMenu(); (this.$refs as any).browser.openContextMenu();
}, },
onMoveRoot(silent) { onMoveRoot(silent) {
const title = 'Misskey Drive'; const title = '%i18n:common.name% Drive';
if (!silent) { if (!silent) {
// Rewrite URL // Rewrite URL
@ -76,7 +76,7 @@ export default Vue.extend({
this.folder = null; this.folder = null;
}, },
onOpenFolder(folder, silent) { onOpenFolder(folder, silent) {
const title = folder.name + ' | Misskey Drive'; const title = folder.name + ' | %i18n:common.name% Drive';
if (!silent) { if (!silent) {
// Rewrite URL // Rewrite URL
@ -89,7 +89,7 @@ export default Vue.extend({
this.folder = folder; this.folder = folder;
}, },
onOpenFile(file, silent) { onOpenFile(file, silent) {
const title = file.name + ' | Misskey Drive'; const title = file.name + ' | %i18n:common.name% Drive';
if (!silent) { if (!silent) {
// Rewrite URL // Rewrite URL

View File

@ -28,7 +28,7 @@ export default Vue.extend({
this.fetch(); this.fetch();
}, },
mounted() { mounted() {
document.title = 'Misskey | %i18n:@notifications%'; document.title = '%i18n:common.name% | %i18n:@notifications%';
}, },
methods: { methods: {
fetch() { fetch() {

View File

@ -49,7 +49,7 @@ export default Vue.extend({
this.user = user; this.user = user;
this.fetching = false; this.fetching = false;
document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | Misskey'; document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | %i18n:common.name%';
}); });
}, },
onLoaded() { onLoaded() {

View File

@ -48,7 +48,7 @@ export default Vue.extend({
this.user = user; this.user = user;
this.fetching = false; this.fetching = false;
document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | Misskey'; document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | %i18n:common.name%';
}); });
}, },
onLoaded() { onLoaded() {

View File

@ -96,7 +96,7 @@ export default Vue.extend({
}, },
mounted() { mounted() {
document.title = 'Misskey'; document.title = '%i18n:common.name%';
Progress.start(); Progress.start();

View File

@ -47,7 +47,7 @@ export default Vue.extend({
this.user = user; this.user = user;
this.fetching = false; this.fetching = false;
document.title = `%i18n:@messaging%: ${Vue.filter('userName')(this.user)} | Misskey`; document.title = `%i18n:@messaging%: ${Vue.filter('userName')(this.user)} | %i18n:common.name%`;
}); });
} }
} }

View File

@ -11,7 +11,7 @@ import getAcct from '../../../../../misc/acct/render';
export default Vue.extend({ export default Vue.extend({
mounted() { mounted() {
document.title = 'Misskey %i18n:@messaging%'; document.title = '%i18n:common.name% %i18n:@messaging%';
}, },
methods: { methods: {
navigate(user) { navigate(user) {

View File

@ -31,7 +31,7 @@ export default Vue.extend({
this.fetch(); this.fetch();
}, },
mounted() { mounted() {
document.title = 'Misskey'; document.title = '%i18n:common.name%';
}, },
methods: { methods: {
fetch() { fetch() {

View File

@ -15,7 +15,7 @@ import Progress from '../../../common/scripts/loading';
export default Vue.extend({ export default Vue.extend({
mounted() { mounted() {
document.title = 'Misskey | %i18n:@notifications%'; document.title = '%i18n:common.name% | %i18n:@notifications%';
Progress.start(); Progress.start();
}, },

View File

@ -25,7 +25,7 @@ export default Vue.extend({
}; };
}, },
mounted() { mounted() {
document.title = 'Misskey | %i18n:@title%'; document.title = '%i18n:common.name% | %i18n:@title%';
Progress.start(); Progress.start();

View File

@ -34,7 +34,7 @@ export default Vue.extend({
} }
}, },
mounted() { mounted() {
document.title = `%i18n:@search%: ${this.q} | Misskey`; document.title = `%i18n:@search%: ${this.q} | %i18n:common.name%`;
this.fetch(); this.fetch();
}, },

View File

@ -142,7 +142,7 @@ export default Vue.extend({
}, },
mounted() { mounted() {
document.title = 'Misskey | %i18n:@settings%'; document.title = '%i18n:common.name% | %i18n:@settings%';
}, },
methods: { methods: {

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="azibmfpleajagva420swmu4c3r7ni7iw"> <div class="azibmfpleajagva420swmu4c3r7ni7iw">
<h1>Misskeyで共有</h1> <h1>{{'%i18n:@share-with%'.split("{}")[0] + '%i18n:common.name%' + '%i18n:@share-with%'.split("{}")[1]}}</h1>
<div> <div>
<mk-signin v-if="!$store.getters.isSignedIn"/> <mk-signin v-if="!$store.getters.isSignedIn"/>
<mk-post-form v-else-if="!posted" :initial-text="text" :instant="true" @posted="posted = true"/> <mk-post-form v-else-if="!posted" :initial-text="text" :instant="true" @posted="posted = true"/>

View File

@ -23,7 +23,7 @@ export default Vue.extend({
}; };
}, },
mounted() { mounted() {
document.title = 'Misskey | %i18n:@title%'; document.title = '%i18n:common.name% | %i18n:@title%';
Progress.start(); Progress.start();

View File

@ -106,7 +106,7 @@ export default Vue.extend({
this.fetching = false; this.fetching = false;
Progress.done(); Progress.done();
document.title = Vue.filter('userName')(this.user) + ' | Misskey'; document.title = Vue.filter('userName')(this.user) + ' | %i18n:common.name%';
}); });
} }
} }

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="welcome"> <div class="welcome">
<div> <div>
<img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="Misskey"> <img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="%i18n:common.name%">
<p class="host">{{ host }}</p> <p class="host">{{ host }}</p>
<div class="about"> <div class="about">
<h2>{{ name || 'unidentified' }}</h2> <h2>{{ name || 'unidentified' }}</h2>

View File

@ -102,12 +102,12 @@ export default Vue.extend({
}, },
mounted() { mounted() {
document.title = 'Misskey'; document.title = '%i18n:common.name%';
}, },
methods: { methods: {
hint() { hint() {
alert('ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。'); alert('%i18n:@widgets-hints%');
}, },
widgetFunc(id) { widgetFunc(id) {