Compare commits
229 Commits
Author | SHA1 | Date | |
---|---|---|---|
9e7b6790fd | |||
8fae064156 | |||
8451f4830c | |||
deded2bcf7 | |||
51fcaff90e | |||
ce8794f7dd | |||
c61abc3327 | |||
2bff683d52 | |||
4c408c7330 | |||
4505a80383 | |||
ed3e46953d | |||
79fd6c202b | |||
aef25ef565 | |||
a53d786515 | |||
27b8b81d4e | |||
369d9d5641 | |||
56b77d3cf8 | |||
0d2eb2c07c | |||
5bc1fe1f2c | |||
83bf229f5b | |||
492d550410 | |||
22a72d87ea | |||
d5ef52ec17 | |||
42c811a523 | |||
51e3c11acb | |||
b9ab18f5a9 | |||
00357c2f07 | |||
2f756c9988 | |||
4c55a19c6d | |||
a6eb0971a4 | |||
2e25e000de | |||
e3a15532bf | |||
3dcf721c53 | |||
b20b975935 | |||
2e6905c74c | |||
8bb97f2e4c | |||
684a8531b6 | |||
0b6ee98f05 | |||
a66225c67f | |||
67f1d76efe | |||
fdd14c601a | |||
5fb31512c4 | |||
8ab0581661 | |||
f71d9adb75 | |||
26f44edfd2 | |||
71d3265ddd | |||
484fe48076 | |||
b6f60f3785 | |||
eb1aa1ef47 | |||
1f1955490d | |||
533af40ac6 | |||
e2f61e36e1 | |||
aeb59f5bb8 | |||
501bb9638f | |||
2f96db4e45 | |||
c88dba2364 | |||
f146d7bcb6 | |||
5b4de85926 | |||
f6449a7f32 | |||
42849da497 | |||
f044ea7c85 | |||
d1f8b4e8d6 | |||
69520b7c96 | |||
43d09a19c5 | |||
c85caef2d0 | |||
8c02039e44 | |||
6245555e9a | |||
d119f2a0f1 | |||
ee8d1cfdc9 | |||
69a79fa191 | |||
ee48a049fe | |||
e7908ab8bb | |||
c2edb0e393 | |||
ec5b2ce30b | |||
4c36e545ba | |||
7f846f114d | |||
58abaa723d | |||
853ee415ae | |||
ff6409be3f | |||
7ce7bd8a30 | |||
6af37026c9 | |||
a4966573a8 | |||
18b2a5f105 | |||
03bdbd13c8 | |||
5e60e81a98 | |||
91d2738d6c | |||
01db424280 | |||
532e0bcf01 | |||
32de11c4bb | |||
3187cb69ec | |||
aec8a9f70d | |||
0cc9f4661b | |||
0483412c3c | |||
e22a08d8c9 | |||
2aa94faa50 | |||
575b00b7b1 | |||
d66c57dabe | |||
07f7b33fd9 | |||
8abb20d24e | |||
dfdff31b3c | |||
32e34bc72d | |||
29e69785c6 | |||
01e7c0175e | |||
e52246a5f0 | |||
7d78972528 | |||
2be5b2eb03 | |||
d379d295db | |||
eabd6f2b0e | |||
b05d80a7e6 | |||
9e518e8b66 | |||
7981bd3080 | |||
880f552001 | |||
6e75942dda | |||
254fbbbc75 | |||
a97296df45 | |||
7e83dfd4bc | |||
53eeb0e446 | |||
f3e1e27b61 | |||
4952a6050b | |||
48a9eee425 | |||
670ccead0b | |||
1bfaf1728f | |||
4ff138c35e | |||
07162ff341 | |||
bf3100b012 | |||
724675378f | |||
cafb702d87 | |||
2b41542330 | |||
8db7797ed7 | |||
de92233314 | |||
1942305b77 | |||
590e13a2bf | |||
94e8661441 | |||
cda3baa1ae | |||
e6eb1b2ae1 | |||
ddad9da1c1 | |||
db4cbbd9fa | |||
81ef070129 | |||
cab6699ac6 | |||
5bb4ab1a2c | |||
93af018037 | |||
30148d47b1 | |||
0a4460f035 | |||
4de7eb6e62 | |||
3942fb4707 | |||
41d0881f51 | |||
794a49a591 | |||
1dd9821da2 | |||
b1eb2aadbc | |||
706028b20a | |||
1a2d0303bf | |||
c0d7cbca88 | |||
1af05ed96a | |||
96b05f7884 | |||
553e1890d1 | |||
cc486a3313 | |||
565d61674d | |||
f1581a9375 | |||
e6c4ba8133 | |||
db9132987c | |||
0d0c45a4cf | |||
4c3dccfc0b | |||
1075e3a005 | |||
a54ffb2896 | |||
74abc85518 | |||
b917113d9b | |||
68a11ea2ff | |||
ad72e7b624 | |||
7704aca20e | |||
1f472b484f | |||
749e778939 | |||
e175a6ec9f | |||
dad8fff12d | |||
a6a175ede1 | |||
a01607fd97 | |||
345084a764 | |||
27582319fa | |||
44bb99259c | |||
9b0e83d971 | |||
db882ebb6f | |||
c501bf4e16 | |||
c0eb873feb | |||
0926c92245 | |||
e880d7da6c | |||
6ad90ecfa8 | |||
fbd51f0079 | |||
60b60fda8d | |||
612db86141 | |||
49911d15d3 | |||
8a1aa08200 | |||
64bd853b07 | |||
e7890eb6b9 | |||
b59db33435 | |||
ef5a4bc078 | |||
f662319bf1 | |||
83277ccbaf | |||
bf1a4a4be3 | |||
7bd39f44a7 | |||
0b5ac1daec | |||
3f86bf6557 | |||
a251c9a1a7 | |||
c696666b32 | |||
a8ade110e6 | |||
f5cad1b142 | |||
b247852bf8 | |||
c5feafb893 | |||
99e6769f48 | |||
c78e75db78 | |||
d90292eb0c | |||
c972869688 | |||
409967a17f | |||
ed848c986c | |||
d6cbfa5b06 | |||
d032e89f48 | |||
c6c58daaef | |||
f9c1923fa8 | |||
dc36113c06 | |||
f4a5ef8292 | |||
f221c4da64 | |||
b1716a1dda | |||
b25a8ef5d4 | |||
4317e76104 | |||
1529a2eded | |||
893bac8b3b | |||
605700b98e | |||
4ad51672c1 | |||
89a58dc596 | |||
e1672e539b | |||
518f6e9677 |
11
.travis.yml
11
.travis.yml
@ -7,7 +7,7 @@ notifications:
|
||||
language: node_js
|
||||
|
||||
node_js:
|
||||
- 9.8.0
|
||||
- 10.1.0
|
||||
|
||||
env:
|
||||
- CXX=g++-4.8 NODE_ENV=production
|
||||
@ -22,19 +22,14 @@ addons:
|
||||
|
||||
cache:
|
||||
directories:
|
||||
# パッケージをキャッシュすると本来は動かないはずなのに動いてしまう
|
||||
# 場合があり危険なのでキャッシュはしない:
|
||||
#- node_modules
|
||||
- node_modules
|
||||
|
||||
services:
|
||||
- mongodb
|
||||
- redis-server
|
||||
|
||||
before_script:
|
||||
# Travisはproduction環境なので(10行目により)、
|
||||
# npm install しただけでは devDependencies はインストールされないので、
|
||||
# --only=dev オプションを付けてそれらもインストールされるようにする:
|
||||
- npm install --only=dev
|
||||
- npm install
|
||||
|
||||
# 設定ファイルを配置
|
||||
- cp ./.travis/default.yml ./.config
|
||||
|
41
appveyor.yml
Normal file
41
appveyor.yml
Normal file
@ -0,0 +1,41 @@
|
||||
# appveyor file
|
||||
# http://www.appveyor.com/docs/appveyor-yml
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
- nodejs_version: 10.1.0
|
||||
|
||||
cache:
|
||||
- node_modules
|
||||
|
||||
build: off
|
||||
|
||||
install:
|
||||
# Update Node.js
|
||||
# 標準で入っている Node.js を更新します (2014/11/13 時点では、v0.10.32 が標準)
|
||||
- ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version)
|
||||
- node --version
|
||||
|
||||
# Update NPM
|
||||
- npm install -g npm
|
||||
- npm --version
|
||||
|
||||
# Update node-gyp
|
||||
# 必須! node-gyp のバージョンを上げないと、ネイティブモジュールのコンパイルに失敗します
|
||||
- npm install -g node-gyp
|
||||
|
||||
- npm install
|
||||
|
||||
init:
|
||||
# git clone の際の改行を変換しないようにします
|
||||
- git config --global core.autocrlf false
|
||||
|
||||
before_test:
|
||||
# 設定ファイルを配置
|
||||
- cp ./.travis/default.yml ./.config
|
||||
- cp ./.travis/test.yml ./.config
|
||||
|
||||
- npm run build
|
||||
|
||||
test_script:
|
||||
- npm test
|
@ -1,12 +1,8 @@
|
||||
Misskey's Translation - English version
|
||||
============
|
||||
|
||||
How to add a new language?
|
||||
----------------------
|
||||
Copy a language file to `/locales` and rename it after the language you wish to add.
|
||||
Misskey's Translation
|
||||
=====================
|
||||
|
||||
If you find an untranslated part on Misskey:
|
||||
-------------------------------
|
||||
--------------------------------------------
|
||||
|
||||
1. Look for untranslated parts in the miskey's source code.
|
||||
- For instance, if you find an untranslated part in: `src/client/app/mobile/views/pages/home.vue`.
|
||||
|
@ -1,12 +1,8 @@
|
||||
Traduction de Misskey - Version Française
|
||||
============
|
||||
|
||||
Comment ajouter une nouvelle langue ?
|
||||
----------------------
|
||||
Veuillez copier un fichier de langue dans /locales puis renommez-le du nom de la langue que vous voulez ajouter et modifier.
|
||||
Traduction de Misskey
|
||||
=====================
|
||||
|
||||
Si vous trouvez un segment non-traduit sur Misskey :
|
||||
-------------------------------
|
||||
----------------------------------------------------
|
||||
|
||||
1. Veuillez chercher des parties non-traduites dans le code source de Misskey.
|
||||
- Par exemple, supposons que vous trouviez un segment non-traduit dans : `src/client/app/mobile/views/pages/home.vue`.
|
||||
|
@ -1,10 +1,6 @@
|
||||
Misskeyの翻訳
|
||||
============
|
||||
|
||||
新たな言語を追加するには
|
||||
----------------------
|
||||
/locales 内に既にある何らかの言語ファイルをコピーして、追加したい言語名にリネームして編集してください。
|
||||
|
||||
Misskey内の未翻訳箇所を見つけたら
|
||||
-------------------------------
|
||||
|
||||
|
317
locales/de.yml
317
locales/de.yml
@ -1,4 +1,7 @@
|
||||
---
|
||||
meta:
|
||||
lang: "Deutsch"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Teile alles mit anderen mithilfe von Misskey"
|
||||
time:
|
||||
@ -19,7 +22,7 @@ common:
|
||||
wednesday: "Mi"
|
||||
thursday: "Do"
|
||||
friday: "Fr"
|
||||
saturday: "土"
|
||||
saturday: "Sa"
|
||||
reactions:
|
||||
like: "Gefällt mir"
|
||||
love: "Lieben"
|
||||
@ -140,46 +143,74 @@ common/views/components/stream-indicator.vue:
|
||||
reconnecting: "Erneut verbinden"
|
||||
connected: "Verbindung hergestellt"
|
||||
common/views/components/twitter-setting.vue:
|
||||
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
||||
connected-to: "次のTwitterアカウントに接続されています"
|
||||
detail: "詳細..."
|
||||
reconnect: "再接続する"
|
||||
connect: "Twitterと接続する"
|
||||
disconnect: "切断する"
|
||||
description: "Wenn du deinen Twitter-Account mit deinem Misskey-Account verbindest, siehst du deine Twitter Account-Informationen auf deinem Profil und du kannst dich mit Twitter einloggen."
|
||||
connected-to: "Du bist mit diesem Twitter-Account verbunden"
|
||||
detail: "Mehr..."
|
||||
reconnect: "Erneut verbinden"
|
||||
connect: "Mit Twitter verbinden"
|
||||
disconnect: "Trennen"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "待機中"
|
||||
waiting: "Warten"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
fetching: "Laden"
|
||||
no-broadcasts: "Keine Broadcasts"
|
||||
have-a-nice-day: "Schönen Tag!"
|
||||
next: "Nächster"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
title: "Spende"
|
||||
text: "Um Misskey am Laufen zu halten geben wir Geld für Domain, Server usw. aus. Wir bekommen dafür kein Geld und würden uns freuen, wenn du spenden würdest. Wenn du interessiert bist, dann kontaktiere {}. Danke für deine Unterstützung!"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "フォトストリーム"
|
||||
no-photos: "写真はありません"
|
||||
title: "Fotostream"
|
||||
no-photos: "Keine Fotos"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
title: "Serverinformationen"
|
||||
toggle: "Sicht umschalten"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "Öffentlich"
|
||||
home: "Home"
|
||||
home-desc: "Nur an dieser Stelle sichtbar"
|
||||
followers: "Follower"
|
||||
followers-desc: "Nur für diejenigen sichtbar, die dir folgen"
|
||||
specified: "Direkt"
|
||||
specified-desc: "Nur für bestimmte Benutzer"
|
||||
private: "Privat"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Schwarz ... komplett"
|
||||
notes: "Blau ... Hinweise"
|
||||
replies: "Rot ... Antworten"
|
||||
renotes: "Grün ... Anmerkungen"
|
||||
desktop/views/components/activity.vue:
|
||||
title: "アクティビティ"
|
||||
toggle: "表示を切り替え"
|
||||
title: "Aktivität"
|
||||
toggle: "Sichten umschalten"
|
||||
desktop/views/components/calendar.vue:
|
||||
title: "{1}年 {2}月"
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
go: "クリックして時間遡行"
|
||||
title: "{1} / {2}"
|
||||
prev: "Vorheriger Monat"
|
||||
next: "Nächster Monat"
|
||||
go: "Klicke zur Navigation"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "Datei auswählen"
|
||||
upload: "Dateien von deinem PC hochladen"
|
||||
cancel: "Abbrechen"
|
||||
ok: "OK"
|
||||
choose-prompt: "Wähle eine Datei aus"
|
||||
desktop/views/components/choose-folder-from-drive-window.vue:
|
||||
cancel: "Abbrechen"
|
||||
ok: "OK"
|
||||
choose-prompt: "Wähle einen Ordner"
|
||||
desktop/views/components/crop-window.vue:
|
||||
skip: "Zuschneiden überspringen"
|
||||
cancel: "Abbrechen"
|
||||
ok: "OK"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
used: "benutzt"
|
||||
drive: "Speicher"
|
||||
desktop/views/components/drive.file.vue:
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
avatar: "Avatar"
|
||||
banner: "Banner"
|
||||
contextmenu:
|
||||
rename: "名前を変更"
|
||||
copy-url: "URLをコピー"
|
||||
download: "ダウンロード"
|
||||
rename: "Umbenennen"
|
||||
copy-url: "URL kopieren"
|
||||
download: "Download"
|
||||
else-files: "その他..."
|
||||
set-as-avatar: "アイコンに設定"
|
||||
set-as-banner: "バナーに設定"
|
||||
@ -221,14 +252,73 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "Ein Verzeichnis erstellen"
|
||||
upload: "Eine Datei hochladen"
|
||||
url-upload: "Von einer URL hochladen"
|
||||
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:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "Spende"
|
||||
nav: "Navigation"
|
||||
tips: "Tipps"
|
||||
add: "Hinzufügen"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "Abbrechen"
|
||||
ok: "OK"
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "Nachrichten:"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "Nachrichten"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "Lade weitere Konversationen"
|
||||
private: "(Dieser Post ist privat)"
|
||||
is-renote: "がRenote"
|
||||
location: "Ort"
|
||||
renote: "Anmerkung"
|
||||
add-reaction: "Reaktion hinzufügen"
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(Dieser Post ist privat)"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "Auch geteilt von"
|
||||
reply: "Antworten"
|
||||
renote: "Anmerken"
|
||||
add-reaction: "Eine Reaktion hinzufügen"
|
||||
detail: "Zeige Details"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "Laden fehlgeschlagen."
|
||||
retry: "Erneut versuchen"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "Mehr"
|
||||
empty: "Keine Benachrichtigungen"
|
||||
@ -257,13 +347,15 @@ desktop/views/components/post-form-window.vue:
|
||||
reply: "Antworten"
|
||||
attaches: "{} Medien hinzugefügt"
|
||||
uploading-media: "Lade {} Medien hoch"
|
||||
desktop/views/components/progress-dialog.vue:
|
||||
waiting: "Warten"
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "Zitieren..."
|
||||
cancel: "Abbrechen"
|
||||
renote: "Anmerkung"
|
||||
reposting: "しています..."
|
||||
success: "Renoteしました!"
|
||||
failure: "Renoteに失敗しました"
|
||||
reposting: "Weitersagen..."
|
||||
success: "Weitergesagt!"
|
||||
failure: "Weitersagen fehlgeschlagen"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "この投稿をRenoteしますか?"
|
||||
desktop/views/components/settings.vue:
|
||||
@ -273,10 +365,72 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
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: "この設定はブラウザに記憶されます。"
|
||||
experimental: "実験的機能を有効にする"
|
||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@ -300,6 +454,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -320,6 +475,12 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "Profil aktualisieren"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
poll: "投票"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "Home"
|
||||
local: "Lokal"
|
||||
@ -344,6 +505,28 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "Einen neuen Post erstellen"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Suchen"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
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:
|
||||
prev: "Vorheriger Kommentar"
|
||||
next: "Nächster Kommentar"
|
||||
@ -352,6 +535,10 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "OK"
|
||||
cancel: "Abbrechen"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
username: "ユーザー名"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "知り合いのフォロワー"
|
||||
loading: "読み込み中"
|
||||
@ -378,6 +565,11 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
with-media: "メディア"
|
||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
@ -391,6 +583,9 @@ desktop/views/widgets/post-form.vue:
|
||||
title: "投稿"
|
||||
note: "投稿"
|
||||
placeholder: "いまどうしてる?"
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "クリックでバナー編集"
|
||||
update-avatar: "クリックでアバター編集"
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "トレンド"
|
||||
refresh: "他を見る"
|
||||
@ -399,10 +594,6 @@ desktop/views/widgets/users.vue:
|
||||
title: "おすすめユーザー"
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
desktop/views/widgets/channel.vue:
|
||||
title: "チャンネル"
|
||||
settings: "ウィジェットの設定"
|
||||
get-started: "右上の歯車をクリックして受信するチャンネルを指定してください"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
@ -435,6 +626,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
@ -478,21 +672,21 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/profile-setting.vue:
|
||||
title: "プロフィール設定"
|
||||
will-be-published: "これらのプロフィールは公開されます。"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
avatar-saved: "アイコンを保存しました"
|
||||
banner-saved: "バナーを保存しました"
|
||||
set-avatar: "アイコンを選択する"
|
||||
set-banner: "バナーを選択する"
|
||||
is-bot: "このアカウントはBotです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@ -500,9 +694,38 @@ mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
profile: "プロフィール"
|
||||
lang: "言語"
|
||||
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||
recommended: "推奨"
|
||||
auto: "自動"
|
||||
specify-language: "言語を指定"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
twitter: "Twitter連携"
|
||||
signin-history: "サインイン履歴"
|
||||
twitter-connect: "Twitterアカウントに接続する"
|
||||
twitter-reconnect: "再接続する"
|
||||
twitter-disconnect: "切断する"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
check-for-updates: "アップデートを確認"
|
||||
no-updates: "利用可能な更新はありません"
|
||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
mobile/views/pages/user.vue:
|
||||
|
253
locales/en.yml
253
locales/en.yml
@ -1,4 +1,7 @@
|
||||
---
|
||||
meta:
|
||||
lang: "English"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Share everything with others using Misskey."
|
||||
time:
|
||||
@ -162,6 +165,20 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "Server info"
|
||||
toggle: "Toggle views"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "Public"
|
||||
home: "Home"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "Followers"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "Direct"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "Private"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
replies: "Red ... Replies"
|
||||
renotes: "Green ... Renotes"
|
||||
desktop/views/components/activity.vue:
|
||||
title: "Activity"
|
||||
toggle: "Toggle views"
|
||||
@ -170,6 +187,20 @@ desktop/views/components/calendar.vue:
|
||||
prev: "Previous month"
|
||||
next: "Next month"
|
||||
go: "Click to naviguate"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "ファイル選択中"
|
||||
upload: "Upload files from your PC"
|
||||
cancel: "Cancel"
|
||||
ok: "OK"
|
||||
choose-prompt: "Choose a file"
|
||||
desktop/views/components/choose-folder-from-drive-window.vue:
|
||||
cancel: "Cancel"
|
||||
ok: "OK"
|
||||
choose-prompt: "Choose a Folder"
|
||||
desktop/views/components/crop-window.vue:
|
||||
skip: "Skip cropping"
|
||||
cancel: "Cancel"
|
||||
ok: "OK"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "used"
|
||||
drive: "Drive"
|
||||
@ -221,14 +252,73 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "Create a folder"
|
||||
upload: "Upload a file"
|
||||
url-upload: "Upload from a URL"
|
||||
desktop/views/components/follow-button.vue:
|
||||
unfollow: "Unfollow"
|
||||
follow: "Follow"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "Followers of {}"
|
||||
desktop/views/components/followers.vue:
|
||||
empty: "Seems that you don’t have any followers."
|
||||
desktop/views/components/following-window.vue:
|
||||
following: "Following {}"
|
||||
desktop/views/components/following.vue:
|
||||
empty: "You don’t follow anyone."
|
||||
desktop/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー:"
|
||||
empty: "Similar users weren’t found."
|
||||
fetching: "Loading…"
|
||||
refresh: "More"
|
||||
close: "Close"
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "Othello"
|
||||
desktop/views/components/home.vue:
|
||||
done: "Submit"
|
||||
add-widget: "Add widget:"
|
||||
profile: "Profile"
|
||||
calendar: "Calendar"
|
||||
timemachine: "Calendar (Time Machine)"
|
||||
activity: "Activity"
|
||||
rss: "RSS reader"
|
||||
trends: "Trends"
|
||||
photostream: "Photostream"
|
||||
slideshow: "Slideshow"
|
||||
version: "Version"
|
||||
broadcast: "Broadcast"
|
||||
notifications: "Notifications"
|
||||
users: "Recommended users"
|
||||
polls: "Polls"
|
||||
post-form: "Post form"
|
||||
messaging: "Messaging"
|
||||
server: "Server info"
|
||||
donation: "Donation"
|
||||
nav: "Navigation"
|
||||
tips: "Tips"
|
||||
add: "Add"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "Cancel"
|
||||
ok: "OK"
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "Messages:"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "Messaging"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "Load more conversations"
|
||||
private: "(this post is private)"
|
||||
is-renote: "がRenote"
|
||||
location: "Location"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(this post is private)"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "Reposted by {}"
|
||||
reply: "Reply"
|
||||
renote: "Renote"
|
||||
add-reaction: "Add a reaction"
|
||||
detail: "Show detail"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "Loading failed."
|
||||
retry: "Retry"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "More"
|
||||
empty: "No notifications"
|
||||
@ -257,6 +347,8 @@ desktop/views/components/post-form-window.vue:
|
||||
reply: "Reply"
|
||||
attaches: "{} media attached"
|
||||
uploading-media: "Uploading {} media"
|
||||
desktop/views/components/progress-dialog.vue:
|
||||
waiting: "Waiting"
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "Quote..."
|
||||
cancel: "Cancel"
|
||||
@ -273,10 +365,72 @@ desktop/views/components/settings.vue:
|
||||
mute: "Mute"
|
||||
drive: "Drive"
|
||||
security: "Security"
|
||||
signin: "Sign in history"
|
||||
password: "Password"
|
||||
2fa: "Two-factor authentication"
|
||||
other: "Other"
|
||||
license: "License"
|
||||
behaviour: "Behavior"
|
||||
fetch-on-scroll: "Fetch on scroll"
|
||||
fetch-on-scroll-desc: "When you scroll down the page automatically fetches additional content."
|
||||
auto-popout: "Auto pop-out window"
|
||||
auto-popout-desc: "Pop-out an opened window if possible. This setting is stored in the browser."
|
||||
advanced: "Advanced settings"
|
||||
api-via-stream: "API request via stream"
|
||||
api-via-stream-desc: "API request is performed via the WebSocket connection instead of native fetch API (for better performance). This setting is stored in the browser."
|
||||
display: "Design and display"
|
||||
customize: "Customize Home"
|
||||
dark-mode: "Dark Mode"
|
||||
circle-icons: "Use circle icons"
|
||||
gradient-window-header: "Use gradients on window headers"
|
||||
post-form-on-timeline: "Display post form at the top of the timeline"
|
||||
show-reply-target: "Display reply target"
|
||||
show-my-renotes: "Show my renote in the timeline"
|
||||
show-renoted-my-notes: "Show renoted my post in the timeline"
|
||||
show-maps: "Show the map"
|
||||
show-maps-desc: "Show the map of the location attached to the post."
|
||||
sound: "Sound"
|
||||
enable-sounds: "Enable sound"
|
||||
enable-sounds-desc: "Play a sound when you received a post/message. This setting is stored in the browser."
|
||||
volume: "Volume"
|
||||
test: "Test"
|
||||
mobile: "Mobile"
|
||||
disable-via-mobile: "Not mark the post as 'from mobile'"
|
||||
language: "Language"
|
||||
pick-language: "Select a language"
|
||||
recommended: "Recommended"
|
||||
auto: "Auto"
|
||||
specify-language: "Specify the language"
|
||||
language-desc: "You need to reload the page for the changes to take effect."
|
||||
cache: "Cache"
|
||||
clean-cache: "Cleanup"
|
||||
cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up."
|
||||
cache-cleared: "Cache cleared"
|
||||
cache-cleared-desc: "Please reload the page."
|
||||
auto-watch: "Auto watch"
|
||||
auto-watch-desc: "Receive notifications about the post/reply/reaction automatically."
|
||||
about: "About Misskey"
|
||||
operator: "The admin of this instance"
|
||||
update: "Misskey Update"
|
||||
version: "Version:"
|
||||
latest-version: "Latest version:"
|
||||
update-checking: "Checking for updates"
|
||||
do-update: "Check for update"
|
||||
update-settings: "Advanced settings"
|
||||
prevent-update: "アップデートを延期する(非推奨)"
|
||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
||||
no-updates: "No updates available"
|
||||
no-updates-desc: "Your Misskey is up to date."
|
||||
update-available: "New version is available!"
|
||||
update-available-desc: "To reload the page and updates are applied."
|
||||
advanced-settings: "Advanced"
|
||||
debug-mode: "Enable the debug mode"
|
||||
debug-mode-desc: "This setting is stored in the browser."
|
||||
experimental: "Enable experimental features"
|
||||
experimental-desc: "It would make Misskey client unstable. This setting is stored in the browser."
|
||||
tools: "Tools"
|
||||
task-manager: "Task Manager"
|
||||
third-parties: "Third-party"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "If you set up 2-step verification, you will need not only a password at sign-in but also a pre-registered physical device (such as your smartphone), which will improve security. "
|
||||
detail: "See details..."
|
||||
@ -296,10 +450,11 @@ desktop/views/components/settings.2fa.vue:
|
||||
failed: "Failed to setup. please ensure that the token is correct."
|
||||
info: "From now on, enter the token that is displayed on your device in addition to your password when signing-in to Misskey."
|
||||
desktop/views/components/settings.api.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
intro: "To access the API, set this token as the key 'i' of request parameters."
|
||||
caution: "Please do not show this token to third parties (do not enter it somewhere else other than here) otherwise your account could get compromised."
|
||||
regeneration-of-token: "In the unlikely event that this token leaks out you can regenerate it."
|
||||
regenerate-token: "Regenerate the token"
|
||||
token: "Token:"
|
||||
enter-password: "Please enter the password"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "No authorized apps"
|
||||
@ -320,6 +475,12 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "Description"
|
||||
birthday: "Birthday"
|
||||
save: "Update profile"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(this post is private)"
|
||||
media: " media"
|
||||
poll: "Polls"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "Task Manager"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "Home"
|
||||
local: "Local"
|
||||
@ -344,6 +505,28 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "Compose new Post"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Search"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "Create list"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "Posts"
|
||||
following: "Following"
|
||||
followers: "Followers"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "All"
|
||||
iknow: "You know"
|
||||
load-more: "More"
|
||||
fetching: "Loading…"
|
||||
desktop/views/components/users-list-item.vue:
|
||||
followed: "Follows you"
|
||||
desktop/views/components/window.vue:
|
||||
popout: "Popout"
|
||||
close: "Close"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
more: "Load More"
|
||||
desktop/views/pages/home-customize.vue:
|
||||
title: "Customize home"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "Previous note"
|
||||
next: "Next note"
|
||||
@ -352,6 +535,10 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "OK"
|
||||
cancel: "Cancel"
|
||||
upload: "Upload files from you PC"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "User"
|
||||
add-user: "Add a user"
|
||||
username: "Username"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "Followers you know"
|
||||
loading: "Loading"
|
||||
@ -378,6 +565,11 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "Mute"
|
||||
muted: "Muting"
|
||||
unmute: "Unmute"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "Posts"
|
||||
with-replies: "Posts and replies"
|
||||
with-media: "Media"
|
||||
empty: "This user has never posted yet."
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "Messaging"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
@ -391,6 +583,9 @@ desktop/views/widgets/post-form.vue:
|
||||
title: "Post"
|
||||
note: "Post"
|
||||
placeholder: "What's happening?"
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "Click to edit your banner"
|
||||
update-avatar: "Click to edit your avatar"
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "Trend"
|
||||
refresh: "Show others"
|
||||
@ -399,10 +594,6 @@ desktop/views/widgets/users.vue:
|
||||
title: "Recommended users"
|
||||
refresh: "Show others"
|
||||
no-one: "No one"
|
||||
desktop/views/widgets/channel.vue:
|
||||
title: "Channel"
|
||||
settings: "Widget settings"
|
||||
get-started: "Please click the cog in the upper right corner to specify a channel"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "Drive"
|
||||
used: "used"
|
||||
@ -435,6 +626,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "No notifications"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "Post"
|
||||
reply: "Reply"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "Quote this post. (optional)"
|
||||
reply-placeholder: "Reply to this note..."
|
||||
note-placeholder: "What's happening?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
@ -478,21 +672,21 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "Notifications"
|
||||
read-all: "Are you sure you want to mark all unread notifications as read?"
|
||||
mobile/views/pages/profile-setting.vue:
|
||||
title: "Profile settings"
|
||||
will-be-published: "These profile settings will be updated."
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "Profile"
|
||||
will-be-published: "※公開されます"
|
||||
name: "Name"
|
||||
account: "Account"
|
||||
location: "Location"
|
||||
description: "Description"
|
||||
birthday: "Birthday"
|
||||
avatar: "Avatar"
|
||||
banner: "Banner"
|
||||
avatar-saved: "Avatar updated successfully"
|
||||
banner-saved: "Banner updated successfully"
|
||||
set-avatar: "Choose an avatar"
|
||||
set-banner: "Choose a banner"
|
||||
save: "Save"
|
||||
is-bot: "This account is a Bot"
|
||||
save: "Update profile"
|
||||
saved: "Profile updated successfully"
|
||||
uploading: "Uploading"
|
||||
upload-failed: "Upload failed"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "Search"
|
||||
empty: "No posts were found for '{}'"
|
||||
@ -500,9 +694,38 @@ mobile/views/pages/selectdrive.vue:
|
||||
select-file: "Choose a file"
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "Signed in as {}"
|
||||
profile: "Profile"
|
||||
lang: "Language"
|
||||
lang-tip: "You will need to reload the page for the changes to take effect."
|
||||
recommended: "Recommended"
|
||||
auto: "Auto"
|
||||
specify-language: "Specify the language"
|
||||
design: "Design and display"
|
||||
dark-mode: "Dark Mode"
|
||||
i-am-under-limited-internet: "I'm under limited internet"
|
||||
circle-icons: "Use circle icons"
|
||||
timeline: "Timeline"
|
||||
show-reply-target: "Show reply target"
|
||||
show-my-renotes: "Show my renotes"
|
||||
show-renoted-my-notes: "Show renoted my notes"
|
||||
post-style: "Post design"
|
||||
post-style-standard: "Standard"
|
||||
post-style-smart: "Smart"
|
||||
behavior: "Behavior"
|
||||
fetch-on-scroll: "Fetch on scroll"
|
||||
disable-via-mobile: "Without the \"mobile posts\" flag"
|
||||
twitter: "Twitter integration"
|
||||
signin-history: "Sign in history"
|
||||
twitter-connect: "Connect to your Twitter account"
|
||||
twitter-reconnect: "Reconnect"
|
||||
twitter-disconnect: "Disconnect"
|
||||
update: "Misskey Update"
|
||||
version: "Current version:"
|
||||
latest-version: "Latest version:"
|
||||
update-checking: "Checking for updates"
|
||||
check-for-updates: "Check for update"
|
||||
no-updates: "No updates available"
|
||||
no-updates-desc: "Your Misskey is up to date."
|
||||
update-available: "New version is available!"
|
||||
update-available-desc: "To reload the page and updates are applied."
|
||||
settings: "Settings"
|
||||
signout: "Sign out"
|
||||
mobile/views/pages/user.vue:
|
||||
|
249
locales/es.yml
249
locales/es.yml
@ -1,4 +1,7 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Misskeyで皆と共有しよう。"
|
||||
time:
|
||||
@ -162,6 +165,20 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
replies: "Red ... Replies"
|
||||
renotes: "Green ... Renotes"
|
||||
desktop/views/components/activity.vue:
|
||||
title: "アクティビティ"
|
||||
toggle: "表示を切り替え"
|
||||
@ -170,6 +187,20 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
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:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
@ -221,14 +252,73 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
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:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "キャンセル"
|
||||
ok: "決定"
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "メッセージ:"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "会話をもっと読み込む"
|
||||
private: "(この投稿は非公開です)"
|
||||
is-renote: "がRenote"
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(この投稿は非公開です)"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
detail: "詳細"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
@ -257,6 +347,8 @@ desktop/views/components/post-form-window.vue:
|
||||
reply: "返信"
|
||||
attaches: "添付: {}メディア"
|
||||
uploading-media: "{}個のメディアをアップロード中"
|
||||
desktop/views/components/progress-dialog.vue:
|
||||
waiting: "待機中"
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "引用する..."
|
||||
cancel: "キャンセル"
|
||||
@ -273,10 +365,72 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
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: "この設定はブラウザに記憶されます。"
|
||||
experimental: "実験的機能を有効にする"
|
||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@ -300,6 +454,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -320,6 +475,12 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
poll: "投票"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
@ -344,6 +505,28 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
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:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -352,6 +535,10 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
username: "ユーザー名"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "知り合いのフォロワー"
|
||||
loading: "読み込み中"
|
||||
@ -378,6 +565,11 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
with-media: "メディア"
|
||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
@ -391,6 +583,9 @@ desktop/views/widgets/post-form.vue:
|
||||
title: "投稿"
|
||||
note: "投稿"
|
||||
placeholder: "いまどうしてる?"
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "クリックでバナー編集"
|
||||
update-avatar: "クリックでアバター編集"
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "トレンド"
|
||||
refresh: "他を見る"
|
||||
@ -399,10 +594,6 @@ desktop/views/widgets/users.vue:
|
||||
title: "おすすめユーザー"
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
desktop/views/widgets/channel.vue:
|
||||
title: "チャンネル"
|
||||
settings: "ウィジェットの設定"
|
||||
get-started: "右上の歯車をクリックして受信するチャンネルを指定してください"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
@ -435,6 +626,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
@ -478,21 +672,21 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/profile-setting.vue:
|
||||
title: "プロフィール設定"
|
||||
will-be-published: "これらのプロフィールは公開されます。"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
avatar-saved: "アイコンを保存しました"
|
||||
banner-saved: "バナーを保存しました"
|
||||
set-avatar: "アイコンを選択する"
|
||||
set-banner: "バナーを選択する"
|
||||
is-bot: "このアカウントはBotです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@ -500,9 +694,38 @@ mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
profile: "プロフィール"
|
||||
lang: "言語"
|
||||
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||
recommended: "推奨"
|
||||
auto: "自動"
|
||||
specify-language: "言語を指定"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
twitter: "Twitter連携"
|
||||
signin-history: "サインイン履歴"
|
||||
twitter-connect: "Twitterアカウントに接続する"
|
||||
twitter-reconnect: "再接続する"
|
||||
twitter-disconnect: "切断する"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
check-for-updates: "アップデートを確認"
|
||||
no-updates: "利用可能な更新はありません"
|
||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
mobile/views/pages/user.vue:
|
||||
|
267
locales/fr.yml
267
locales/fr.yml
@ -1,4 +1,7 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Partagez avec les autres en utilisant Misskey"
|
||||
time:
|
||||
@ -19,7 +22,7 @@ common:
|
||||
wednesday: "M"
|
||||
thursday: "J"
|
||||
friday: "V"
|
||||
saturday: "S"
|
||||
saturday: "土"
|
||||
reactions:
|
||||
like: "Aime"
|
||||
love: "Adore"
|
||||
@ -162,6 +165,20 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "Info sur le serveur"
|
||||
toggle: "Afficher les vues"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
replies: "Red ... Replies"
|
||||
renotes: "Green ... Renotes"
|
||||
desktop/views/components/activity.vue:
|
||||
title: "Activitié"
|
||||
toggle: "Afficher les vues"
|
||||
@ -170,6 +187,20 @@ desktop/views/components/calendar.vue:
|
||||
prev: "Mois dernier"
|
||||
next: "Mois prochain"
|
||||
go: "Cliquer pour naviguer"
|
||||
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:
|
||||
used: "utilisé"
|
||||
drive: "Drive"
|
||||
@ -221,14 +252,73 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "Créer un dossier"
|
||||
upload: "Uploader un fichier"
|
||||
url-upload: "Uploader d'un 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:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "キャンセル"
|
||||
ok: "決定"
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "メッセージ:"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "Messagerie"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "会話をもっと読み込む"
|
||||
private: "(この投稿は非公開です)"
|
||||
is-renote: "がRenote"
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(この投稿は非公開です)"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "Reposté par {}"
|
||||
reply: "Répondre"
|
||||
renote: "Renote"
|
||||
add-reaction: "Ajouter votre reaction"
|
||||
detail: "Afficher les détails"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "Plus"
|
||||
empty: "Pas de notifications"
|
||||
@ -257,6 +347,8 @@ desktop/views/components/post-form-window.vue:
|
||||
reply: "Répondre"
|
||||
attaches: "{} media joint(s)"
|
||||
uploading-media: "Upload du media {}"
|
||||
desktop/views/components/progress-dialog.vue:
|
||||
waiting: "待機中"
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "Citer..."
|
||||
cancel: "Annuler"
|
||||
@ -273,10 +365,72 @@ desktop/views/components/settings.vue:
|
||||
mute: "Mettre en sourdine"
|
||||
drive: "Drive"
|
||||
security: "Sécurité"
|
||||
signin: "サインイン履歴"
|
||||
password: "Mot de Passe"
|
||||
2fa: "Vérification en deux étapes"
|
||||
other: "Autres"
|
||||
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: "この設定はブラウザに記憶されます。"
|
||||
experimental: "実験的機能を有効にする"
|
||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "Si vous configurez la vérication en deux étapes vous aurez non seulement besoin de votre mot de passe mais aussi un appareil déjà pré-enregistré(tel que votre smartphone) ce qui ameliora grandement la sécurité de votre compte."
|
||||
detail: "Voir les détails..."
|
||||
@ -300,6 +454,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "Regenerer le token"
|
||||
token: "Token:"
|
||||
enter-password: "Veuillez entrer le mot de passe"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "Aucune application authorisée"
|
||||
@ -320,6 +475,12 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "Description"
|
||||
birthday: "Date de naissance"
|
||||
save: "Mettre à jour le profil"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
poll: "投票"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
@ -344,6 +505,28 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "Composer un nouveau post"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Chercher"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
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:
|
||||
prev: "Note précédente"
|
||||
next: "Note suivante"
|
||||
@ -352,6 +535,10 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "OK"
|
||||
cancel: "Annuler"
|
||||
upload: "Uploader un ou plusieurs fichier(s) depuis votre PC"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
username: "ユーザー名"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "Abonnés que vous connaissez"
|
||||
loading: "Chargement en cours"
|
||||
@ -378,6 +565,11 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "Mettre en sourdine"
|
||||
muted: "Muting"
|
||||
unmute: "Enlever la sourdine"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
with-media: "メディア"
|
||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "Messagerie"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
@ -391,6 +583,9 @@ desktop/views/widgets/post-form.vue:
|
||||
title: "Post"
|
||||
note: "Post"
|
||||
placeholder: "Qu'est-ce qu'il se passe?"
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "クリックでバナー編集"
|
||||
update-avatar: "クリックでアバター編集"
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "Tendances"
|
||||
refresh: "Afficher d'autres"
|
||||
@ -399,10 +594,6 @@ desktop/views/widgets/users.vue:
|
||||
title: "Utilisateurs"
|
||||
refresh: "Afficher d'autres"
|
||||
no-one: "Personne"
|
||||
desktop/views/widgets/channel.vue:
|
||||
title: "Cannal"
|
||||
settings: "Réglages des widgets"
|
||||
get-started: "Veuillez cliquer sur la dent en haute à droite pour choisir un channel"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "Drive"
|
||||
used: "utilisé"
|
||||
@ -435,6 +626,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "Pas de notifications"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "Poster"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "Répondre à cette note"
|
||||
note-placeholder: "Qu'est-ce qu'il se passe?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
@ -478,21 +672,21 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "Notifications"
|
||||
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?"
|
||||
mobile/views/pages/profile-setting.vue:
|
||||
title: "Réglages du profiles"
|
||||
will-be-published: "Ces profiles vont être publier"
|
||||
name: "Nom"
|
||||
location: "Localisation"
|
||||
description: "Description"
|
||||
birthday: "Anniversaire"
|
||||
avatar: "Avatar"
|
||||
banner: "Bannière"
|
||||
avatar-saved: "Avatar mis à jour avec succès!"
|
||||
banner-saved: "Bannière mise à jour avec succès!"
|
||||
set-avatar: "Choisir un avatar"
|
||||
set-banner: "Choisir une bannière"
|
||||
save: "Sauvegarder"
|
||||
saved: "Profil mis à jour avec succès"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "Chercher"
|
||||
empty: "Aucun message trouvé pour '{}' "
|
||||
@ -500,9 +694,38 @@ mobile/views/pages/selectdrive.vue:
|
||||
select-file: "Choisissez un fichier"
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "Connecté en tant que {}"
|
||||
profile: "Profile"
|
||||
lang: "言語"
|
||||
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||
recommended: "推奨"
|
||||
auto: "自動"
|
||||
specify-language: "言語を指定"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
twitter: "Twitter連携"
|
||||
signin-history: "Historique de connexion"
|
||||
twitter-connect: "Twitterアカウントに接続する"
|
||||
twitter-reconnect: "再接続する"
|
||||
twitter-disconnect: "切断する"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
check-for-updates: "アップデートを確認"
|
||||
no-updates: "利用可能な更新はありません"
|
||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "Réglages"
|
||||
signout: "Déconnexion"
|
||||
mobile/views/pages/user.vue:
|
||||
|
249
locales/it.yml
249
locales/it.yml
@ -1,4 +1,7 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Misskeyで皆と共有しよう。"
|
||||
time:
|
||||
@ -162,6 +165,20 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
replies: "Red ... Replies"
|
||||
renotes: "Green ... Renotes"
|
||||
desktop/views/components/activity.vue:
|
||||
title: "アクティビティ"
|
||||
toggle: "表示を切り替え"
|
||||
@ -170,6 +187,20 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
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:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
@ -221,14 +252,73 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
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:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "キャンセル"
|
||||
ok: "決定"
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "メッセージ:"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "会話をもっと読み込む"
|
||||
private: "(この投稿は非公開です)"
|
||||
is-renote: "がRenote"
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(この投稿は非公開です)"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
detail: "詳細"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
@ -257,6 +347,8 @@ desktop/views/components/post-form-window.vue:
|
||||
reply: "返信"
|
||||
attaches: "添付: {}メディア"
|
||||
uploading-media: "{}個のメディアをアップロード中"
|
||||
desktop/views/components/progress-dialog.vue:
|
||||
waiting: "待機中"
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "引用する..."
|
||||
cancel: "キャンセル"
|
||||
@ -273,10 +365,72 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
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: "この設定はブラウザに記憶されます。"
|
||||
experimental: "実験的機能を有効にする"
|
||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@ -300,6 +454,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -320,6 +475,12 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
poll: "投票"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
@ -344,6 +505,28 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
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:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -352,6 +535,10 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
username: "ユーザー名"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "知り合いのフォロワー"
|
||||
loading: "読み込み中"
|
||||
@ -378,6 +565,11 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
with-media: "メディア"
|
||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
@ -391,6 +583,9 @@ desktop/views/widgets/post-form.vue:
|
||||
title: "投稿"
|
||||
note: "投稿"
|
||||
placeholder: "いまどうしてる?"
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "クリックでバナー編集"
|
||||
update-avatar: "クリックでアバター編集"
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "トレンド"
|
||||
refresh: "他を見る"
|
||||
@ -399,10 +594,6 @@ desktop/views/widgets/users.vue:
|
||||
title: "おすすめユーザー"
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
desktop/views/widgets/channel.vue:
|
||||
title: "チャンネル"
|
||||
settings: "ウィジェットの設定"
|
||||
get-started: "右上の歯車をクリックして受信するチャンネルを指定してください"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
@ -435,6 +626,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
@ -478,21 +672,21 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/profile-setting.vue:
|
||||
title: "プロフィール設定"
|
||||
will-be-published: "これらのプロフィールは公開されます。"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
avatar-saved: "アイコンを保存しました"
|
||||
banner-saved: "バナーを保存しました"
|
||||
set-avatar: "アイコンを選択する"
|
||||
set-banner: "バナーを選択する"
|
||||
is-bot: "このアカウントはBotです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@ -500,9 +694,38 @@ mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
profile: "プロフィール"
|
||||
lang: "言語"
|
||||
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||
recommended: "推奨"
|
||||
auto: "自動"
|
||||
specify-language: "言語を指定"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
twitter: "Twitter連携"
|
||||
signin-history: "サインイン履歴"
|
||||
twitter-connect: "Twitterアカウントに接続する"
|
||||
twitter-reconnect: "再接続する"
|
||||
twitter-disconnect: "切断する"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
check-for-updates: "アップデートを確認"
|
||||
no-updates: "利用可能な更新はありません"
|
||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
mobile/views/pages/user.vue:
|
||||
|
293
locales/ja.yml
293
locales/ja.yml
@ -1,3 +1,7 @@
|
||||
meta:
|
||||
lang: "日本語"
|
||||
divider: ""
|
||||
|
||||
common:
|
||||
misskey: "Misskeyで皆と共有しよう。"
|
||||
|
||||
@ -187,6 +191,22 @@ common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
replies: "Red ... Replies"
|
||||
renotes: "Green ... Renotes"
|
||||
|
||||
desktop/views/components/activity.vue:
|
||||
title: "アクティビティ"
|
||||
toggle: "表示を切り替え"
|
||||
@ -197,6 +217,23 @@ desktop/views/components/calendar.vue:
|
||||
next: "次の月"
|
||||
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:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
@ -253,9 +290,77 @@ desktop/views/components/drive.vue:
|
||||
upload: "ファイルをアップロード"
|
||||
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:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "キャンセル"
|
||||
ok: "決定"
|
||||
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "メッセージ:"
|
||||
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "会話をもっと読み込む"
|
||||
private: "(この投稿は非公開です)"
|
||||
is-renote: "がRenote"
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(この投稿は非公開です)"
|
||||
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
@ -263,6 +368,10 @@ desktop/views/components/notes.note.vue:
|
||||
add-reaction: "リアクション"
|
||||
detail: "詳細"
|
||||
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
@ -294,6 +403,9 @@ desktop/views/components/post-form-window.vue:
|
||||
attaches: "添付: {}メディア"
|
||||
uploading-media: "{}個のメディアをアップロード中"
|
||||
|
||||
desktop/views/components/progress-dialog.vue:
|
||||
waiting: "待機中"
|
||||
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "引用する..."
|
||||
cancel: "キャンセル"
|
||||
@ -312,11 +424,83 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
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: "この設定はブラウザに記憶されます。"
|
||||
experimental: "実験的機能を有効にする"
|
||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@ -341,6 +525,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
|
||||
desktop/views/components/settings.app.vue:
|
||||
@ -366,6 +551,14 @@ desktop/views/components/settings.profile.vue:
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
poll: "投票"
|
||||
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
@ -396,6 +589,36 @@ desktop/views/components/ui.header.post.vue:
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
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:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -406,6 +629,11 @@ desktop/views/pages/selectdrive.vue:
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
username: "ユーザー名"
|
||||
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "知り合いのフォロワー"
|
||||
loading: "読み込み中"
|
||||
@ -438,6 +666,12 @@ desktop/views/pages/user/user.profile.vue:
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
with-media: "メディア"
|
||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "メッセージ"
|
||||
|
||||
@ -455,6 +689,10 @@ desktop/views/widgets/post-form.vue:
|
||||
note: "投稿"
|
||||
placeholder: "いまどうしてる?"
|
||||
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "クリックでバナー編集"
|
||||
update-avatar: "クリックでアバター編集"
|
||||
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "トレンド"
|
||||
refresh: "他を見る"
|
||||
@ -465,11 +703,6 @@ desktop/views/widgets/users.vue:
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
|
||||
desktop/views/widgets/channel.vue:
|
||||
title: "チャンネル"
|
||||
settings: "ウィジェットの設定"
|
||||
get-started: "右上の歯車をクリックして受信するチャンネルを指定してください"
|
||||
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
@ -510,6 +743,9 @@ mobile/views/components/notifications.vue:
|
||||
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
|
||||
@ -567,21 +803,21 @@ mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
|
||||
mobile/views/pages/profile-setting.vue:
|
||||
title: "プロフィール設定"
|
||||
will-be-published: "これらのプロフィールは公開されます。"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
avatar-saved: "アイコンを保存しました"
|
||||
banner-saved: "バナーを保存しました"
|
||||
set-avatar: "アイコンを選択する"
|
||||
set-banner: "バナーを選択する"
|
||||
is-bot: "このアカウントはBotです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
@ -592,9 +828,38 @@ mobile/views/pages/selectdrive.vue:
|
||||
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
profile: "プロフィール"
|
||||
lang: "言語"
|
||||
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||
recommended: "推奨"
|
||||
auto: "自動"
|
||||
specify-language: "言語を指定"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
twitter: "Twitter連携"
|
||||
signin-history: "サインイン履歴"
|
||||
twitter-connect: "Twitterアカウントに接続する"
|
||||
twitter-reconnect: "再接続する"
|
||||
twitter-disconnect: "切断する"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
check-for-updates: "アップデートを確認"
|
||||
no-updates: "利用可能な更新はありません"
|
||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
|
||||
|
249
locales/ko.yml
249
locales/ko.yml
@ -1,4 +1,7 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Misskeyで皆と共有しよう。"
|
||||
time:
|
||||
@ -162,6 +165,20 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
replies: "Red ... Replies"
|
||||
renotes: "Green ... Renotes"
|
||||
desktop/views/components/activity.vue:
|
||||
title: "アクティビティ"
|
||||
toggle: "表示を切り替え"
|
||||
@ -170,6 +187,20 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
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:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
@ -221,14 +252,73 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
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:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "キャンセル"
|
||||
ok: "決定"
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "メッセージ:"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "会話をもっと読み込む"
|
||||
private: "(この投稿は非公開です)"
|
||||
is-renote: "がRenote"
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(この投稿は非公開です)"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
detail: "詳細"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
@ -257,6 +347,8 @@ desktop/views/components/post-form-window.vue:
|
||||
reply: "返信"
|
||||
attaches: "添付: {}メディア"
|
||||
uploading-media: "{}個のメディアをアップロード中"
|
||||
desktop/views/components/progress-dialog.vue:
|
||||
waiting: "待機中"
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "引用する..."
|
||||
cancel: "キャンセル"
|
||||
@ -273,10 +365,72 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
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: "この設定はブラウザに記憶されます。"
|
||||
experimental: "実験的機能を有効にする"
|
||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@ -300,6 +454,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -320,6 +475,12 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
poll: "投票"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
@ -344,6 +505,28 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
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:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -352,6 +535,10 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
username: "ユーザー名"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "知り合いのフォロワー"
|
||||
loading: "読み込み中"
|
||||
@ -378,6 +565,11 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
with-media: "メディア"
|
||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
@ -391,6 +583,9 @@ desktop/views/widgets/post-form.vue:
|
||||
title: "投稿"
|
||||
note: "投稿"
|
||||
placeholder: "いまどうしてる?"
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "クリックでバナー編集"
|
||||
update-avatar: "クリックでアバター編集"
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "トレンド"
|
||||
refresh: "他を見る"
|
||||
@ -399,10 +594,6 @@ desktop/views/widgets/users.vue:
|
||||
title: "おすすめユーザー"
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
desktop/views/widgets/channel.vue:
|
||||
title: "チャンネル"
|
||||
settings: "ウィジェットの設定"
|
||||
get-started: "右上の歯車をクリックして受信するチャンネルを指定してください"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
@ -435,6 +626,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
@ -478,21 +672,21 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/profile-setting.vue:
|
||||
title: "プロフィール設定"
|
||||
will-be-published: "これらのプロフィールは公開されます。"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
avatar-saved: "アイコンを保存しました"
|
||||
banner-saved: "バナーを保存しました"
|
||||
set-avatar: "アイコンを選択する"
|
||||
set-banner: "バナーを選択する"
|
||||
is-bot: "このアカウントはBotです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@ -500,9 +694,38 @@ mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
profile: "プロフィール"
|
||||
lang: "言語"
|
||||
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||
recommended: "推奨"
|
||||
auto: "自動"
|
||||
specify-language: "言語を指定"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
twitter: "Twitter連携"
|
||||
signin-history: "サインイン履歴"
|
||||
twitter-connect: "Twitterアカウントに接続する"
|
||||
twitter-reconnect: "再接続する"
|
||||
twitter-disconnect: "切断する"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
check-for-updates: "アップデートを確認"
|
||||
no-updates: "利用可能な更新はありません"
|
||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
mobile/views/pages/user.vue:
|
||||
|
281
locales/pl.yml
281
locales/pl.yml
@ -1,4 +1,7 @@
|
||||
---
|
||||
meta:
|
||||
lang: "japoński"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Dziel się zawartością z innymi korzystając z Misskey."
|
||||
time:
|
||||
@ -157,11 +160,25 @@ common/views/widgets/donation.vue:
|
||||
title: "Dotacje"
|
||||
text: "Aby utrzymywać Misskey, płacimy za domenę, serwery i nie tylko… Nie zarabiamy na tym, więc byłoby nam miło, gdybyśmy uzyskali od Ciebie dotację. Jeżeli jesteś zainteresowany, skontaktuj się z {}. Dziękujemy za wsparcie!"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "フォトストリーム"
|
||||
title: "Photostream"
|
||||
no-photos: "Brak zdjęć"
|
||||
common/views/widgets/server.vue:
|
||||
title: "Informacje o serwerze"
|
||||
toggle: "Przełącz widok"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "Publiczny"
|
||||
home: "Lokalny"
|
||||
home-desc: "Widoczny tylko na tej instancji"
|
||||
followers: "Dla śledzących"
|
||||
followers-desc: "Widoczny tylko dla osób, które Cię śledzą"
|
||||
specified: "Bezpośredni"
|
||||
specified-desc: "Tylko dla określonych użytkowników"
|
||||
private: "Prywatny"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Czarny … Łącznie"
|
||||
notes: "Niebieski … Wpisy"
|
||||
replies: "Czerwony … Odpowiedzi"
|
||||
renotes: "Czerwony … Udostępnienia"
|
||||
desktop/views/components/activity.vue:
|
||||
title: "Aktywność"
|
||||
toggle: "Przełącz widok"
|
||||
@ -170,6 +187,20 @@ desktop/views/components/calendar.vue:
|
||||
prev: "Poprzedni miesiąc"
|
||||
next: "Następny miesiąc"
|
||||
go: "Naciśnij, aby przejść"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "Wybierz plik"
|
||||
upload: "Wyślij pliki z Twojego komputera"
|
||||
cancel: "Anuluj"
|
||||
ok: "OK"
|
||||
choose-prompt: "Wybierz plik"
|
||||
desktop/views/components/choose-folder-from-drive-window.vue:
|
||||
cancel: "Anuluj"
|
||||
ok: "OK"
|
||||
choose-prompt: "Wybierz katalog"
|
||||
desktop/views/components/crop-window.vue:
|
||||
skip: "Pomiń przycinanie"
|
||||
cancel: "Anuluj"
|
||||
ok: "OK"
|
||||
desktop/views/components/drive-window.vue:
|
||||
used: "wykorzystane"
|
||||
drive: "Dysk"
|
||||
@ -221,14 +252,73 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "Utwórz katalog"
|
||||
upload: "Wyślij plik"
|
||||
url-upload: "Wyślij z adresu URL"
|
||||
desktop/views/components/follow-button.vue:
|
||||
unfollow: "Przestań śledzić"
|
||||
follow: "Śledź"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "Śledzący"
|
||||
desktop/views/components/followers.vue:
|
||||
empty: "Wygląda na to, że nikt Cię nie śledzi…"
|
||||
desktop/views/components/following-window.vue:
|
||||
following: "Śledzeni przez {}"
|
||||
desktop/views/components/following.vue:
|
||||
empty: "Nikt Cię nie śledzi."
|
||||
desktop/views/components/friends-maker.vue:
|
||||
title: "Zacznij śledzić ludzi takich jak Ty:"
|
||||
empty: "Nie znaleziono podobnych użytkowników."
|
||||
fetching: "Ładowanie…"
|
||||
refresh: "Więcej"
|
||||
close: "Zamknij"
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "Othello"
|
||||
desktop/views/components/home.vue:
|
||||
done: "Wyślij"
|
||||
add-widget: "Dodaj widżet:"
|
||||
profile: "Profil"
|
||||
calendar: "Kalendarz"
|
||||
timemachine: "Kalendarz (wehikuł czasu)"
|
||||
activity: "Aktywność"
|
||||
rss: "Czytnik RSS"
|
||||
trends: "Na czasie"
|
||||
photostream: "Photostream"
|
||||
slideshow: "Pokaz slajdów"
|
||||
version: "Wersja"
|
||||
broadcast: "Transmisja"
|
||||
notifications: "Powiadomienia"
|
||||
users: "Polecani użytkownicy"
|
||||
polls: "Ankiety"
|
||||
post-form: "Formularz tworzenia"
|
||||
messaging: "Wiadomości"
|
||||
server: "Informacje o serwerze"
|
||||
donation: "Dotacje"
|
||||
nav: "Nawigacja"
|
||||
tips: "Wskazówki"
|
||||
add: "Dodaj"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "Anuluj"
|
||||
ok: "OK"
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "Wiadomości:"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "Wiadomości"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "Załaduj więcej konwersacji"
|
||||
private: "(ten wpis jest prywatny)"
|
||||
is-renote: "がRenote"
|
||||
location: "Informacje o lokalizacji"
|
||||
renote: "Przeredaguj"
|
||||
add-reaction: "Dodaj reakcję"
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(ten wpis jest prywatny)"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "Udostępniono przez {}"
|
||||
reply: "Odpowiedz"
|
||||
renote: "Przeredaguj"
|
||||
add-reaction: "Dodaj reakcję"
|
||||
detail: "Pokaż szczegóły"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "Ładowanie nie powiodło się."
|
||||
retry: "Spróbuj ponownie"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "Więcej"
|
||||
empty: "Brak powiadomień"
|
||||
@ -257,6 +347,8 @@ desktop/views/components/post-form-window.vue:
|
||||
reply: "Odpowiedz"
|
||||
attaches: "{} załączników multimedialnych"
|
||||
uploading-media: "Wysyłanie {} treści multimedialnych"
|
||||
desktop/views/components/progress-dialog.vue:
|
||||
waiting: "Oczekiwanie"
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "Cytuj…"
|
||||
cancel: "Anuluj"
|
||||
@ -273,10 +365,72 @@ desktop/views/components/settings.vue:
|
||||
mute: "Wyciszanie"
|
||||
drive: "Dysk"
|
||||
security: "Bezpieczeństwo"
|
||||
signin: "Historia logowań"
|
||||
password: "Hasło"
|
||||
2fa: "Uwierzytelnianie dwuetapowe"
|
||||
other: "Inne"
|
||||
license: "Licencja"
|
||||
behaviour: "Zachowanie"
|
||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||
fetch-on-scroll-desc: "Po przewinięciu na dół strony automatycznie zostaną załadowane nowe treści."
|
||||
auto-popout: "Automatycznie pojawiające się okna"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "Ustawienia zaawansowane"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
display: "Wygląd i wyświetlanie"
|
||||
customize: "Dostosuj stronę główną"
|
||||
dark-mode: "Tryb ciemny"
|
||||
circle-icons: "Używaj okrągłych ikon"
|
||||
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
||||
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||
show-maps: "Automatycznie pokazuj mapę"
|
||||
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
|
||||
sound: "Dźwięk"
|
||||
enable-sounds: "Włącz dźwięk"
|
||||
enable-sounds-desc: "Odtwarzaj dźwięk przy wstawianiu wpisów, wysyłaniu lub otrzymywaniu wiadomości. Opcja ta jest zapamiętywana przez przeglądarkę."
|
||||
volume: "Głośność"
|
||||
test: "Test"
|
||||
mobile: "Wersja mobilna"
|
||||
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
||||
language: "Język"
|
||||
pick-language: "Wybierz język"
|
||||
recommended: "Zalecane"
|
||||
auto: "Automatycznie"
|
||||
specify-language: "Wybierz język"
|
||||
language-desc: "Aby zmiany zostały uwzględnione, odśwież stronę."
|
||||
cache: "Pamięć podręczna"
|
||||
clean-cache: "Wyczyść"
|
||||
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
|
||||
cache-cleared: "Wyczyszczono pamięć podręczną"
|
||||
cache-cleared-desc: "Proszę odświeżyć stronę."
|
||||
auto-watch: "投稿の自動ウォッチ"
|
||||
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
|
||||
about: "O Misskey"
|
||||
operator: "Administrator instancji"
|
||||
update: "Aktualizacja Misskey"
|
||||
version: "Wersja:"
|
||||
latest-version: "Najnowsza wersja:"
|
||||
update-checking: "Sprawdzanie dostępności aktualizacji"
|
||||
do-update: "Sprawdź dostępność aktualizacji"
|
||||
update-settings: "Ustawienia zaawansowane"
|
||||
prevent-update: "Unikaj aktualizacji (niezalecane)"
|
||||
prevent-update-desc: "Nawet jeżeli opcja jest zaznaczona, aktualizacje mogą zostać wykonane. Opcja dotyczy tylko tego urządzenia."
|
||||
no-updates: "Brak dostępnych aktualizacji"
|
||||
no-updates-desc: "Twój Misskey jest aktualny."
|
||||
update-available: "Dostępna jest nowa wersja"
|
||||
update-available-desc: "Odśwież stronę, aby zastosować aktualizację."
|
||||
advanced-settings: "Ustawienia zaawansowane"
|
||||
debug-mode: "Włącz tryb debugowania"
|
||||
debug-mode-desc: "To ustawienie jest przechowywane w przeglądarce."
|
||||
experimental: "Włącz eksperymentalne funkcje"
|
||||
experimental-desc: "Aktywowanie eksperymentalnych funkcji może spowodować niestabilność Misskey. Opcja ta jest przechowywana w przeglądarce."
|
||||
tools: "Narzędzia"
|
||||
task-manager: "Menedżer zadań"
|
||||
third-parties: "サードパーティ"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "Jeżeli skonfigurujesz uwierzytelnianie dwuetapowe, aby zablokować się będziesz potrzebować (oprócz hasła) kodu ze skonfigurowanego urządzenia (np. smartfonu), co zwiększy bezpieczeństwo."
|
||||
detail: "Zobacz szczegóły…"
|
||||
@ -300,6 +454,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "Nie pokazuj tego tokenu osobom trzecim (nie wprowadzaj go nigdzie indziej), aby konto nie trafiło w niepowołane ręce."
|
||||
regeneration-of-token: "W przypadku wycieku tokenu, możesz wygenerować nowy."
|
||||
regenerate-token: "Wygeneruj nowy token"
|
||||
token: "Token:"
|
||||
enter-password: "Wprowadź hasło"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "Brak zautoryzowanych aplikacji"
|
||||
@ -320,11 +475,17 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "Opis"
|
||||
birthday: "Data urodzenia"
|
||||
save: "Aktualizuj profil"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
poll: "投票"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "Menedżer zadań"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
global: "グローバル"
|
||||
list: "リスト"
|
||||
home: "Strona główna"
|
||||
local: "Lokalne"
|
||||
global: "Globalne"
|
||||
list: "Listy"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "Twój profil"
|
||||
drive: "Dysk"
|
||||
@ -344,6 +505,28 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "Utwórz nowy wpis"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Szukaj"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "Utwórz listę"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "Wpisy"
|
||||
following: "Śledzeni"
|
||||
followers: "Śledzący"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "Wszyscy"
|
||||
iknow: "Znasz"
|
||||
load-more: "Więcej"
|
||||
fetching: "Ładowanie…"
|
||||
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:
|
||||
prev: "Poprzedni wpis"
|
||||
next: "Następny wpis"
|
||||
@ -352,6 +535,10 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "OK"
|
||||
cancel: "Anuluj"
|
||||
upload: "Wyślij pliki z Twojego komputera"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
username: "ユーザー名"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "Śledzący których znasz"
|
||||
loading: "Ładowanie"
|
||||
@ -378,8 +565,13 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "Wycisz"
|
||||
muted: "Wyciszyłeś"
|
||||
unmute: "Cofnij wyciszenie"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
with-media: "メディア"
|
||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "メッセージ"
|
||||
title: "Wiadomości"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
title: "Powiadomienia"
|
||||
settings: "Ustawienia"
|
||||
@ -391,6 +583,9 @@ desktop/views/widgets/post-form.vue:
|
||||
title: "Wpis"
|
||||
note: "Wpis"
|
||||
placeholder: "Co się dzieje?"
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "クリックでバナー編集"
|
||||
update-avatar: "クリックでアバター編集"
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "Na czasie"
|
||||
refresh: "Pokaż inne"
|
||||
@ -399,10 +594,6 @@ desktop/views/widgets/users.vue:
|
||||
title: "Polecani użytkownicy"
|
||||
refresh: "Pokaż innych"
|
||||
no-one: "Pusto"
|
||||
desktop/views/widgets/channel.vue:
|
||||
title: "Kanał"
|
||||
settings: "Ustawienia widżetu"
|
||||
get-started: "右上の歯車をクリックして受信するチャンネルを指定してください"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "Dysk"
|
||||
used: "użyto"
|
||||
@ -426,7 +617,7 @@ mobile/views/components/follow-button.vue:
|
||||
follow: "Śledź"
|
||||
unfollow: "Przestań śledzić"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reposted-by: "Udostępniono przez {}"
|
||||
mobile/views/components/note-detail.vue:
|
||||
reply: "Odpowiedz"
|
||||
reaction: "Reakcja"
|
||||
@ -435,6 +626,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "Brak powiadomień"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "Wyślij"
|
||||
reply: "Odpowiedz"
|
||||
renote: "Przeredaguj"
|
||||
renote-placeholder: "Zacytuj wpis… (nieobowiązkowe)"
|
||||
reply-placeholder: "Odpowiedź na ten wpis…"
|
||||
note-placeholder: "Co się dzieje?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
@ -478,21 +672,21 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "Powiadomienia"
|
||||
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
||||
mobile/views/pages/profile-setting.vue:
|
||||
title: "Ustawienia profilu"
|
||||
will-be-published: "Te ustawienia profilu zostaną zaktualizowane."
|
||||
name: "Nazwa"
|
||||
location: "Lokalizacja"
|
||||
description: "Opis"
|
||||
birthday: "Data urodzenia"
|
||||
avatar: "Awatar"
|
||||
banner: "Baner"
|
||||
avatar-saved: "Pomyślnie zaktualizowano awatar"
|
||||
banner-saved: "Pomyślnie zaktualizowano baner"
|
||||
set-avatar: "Wybierz awatar"
|
||||
set-banner: "Wybierz baner"
|
||||
save: "Zapisz"
|
||||
saved: "Pomyślnie zaktualizowano profil"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
is-bot: "このアカウントはBotです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "Szukaj"
|
||||
empty: "Nie znaleziono wpisów zawierających '{}'"
|
||||
@ -500,9 +694,38 @@ mobile/views/pages/selectdrive.vue:
|
||||
select-file: "Wybierz plik"
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "Zalogowany jako {}"
|
||||
profile: "Profil"
|
||||
twitter: "Twitter連携"
|
||||
signin-history: "Historia logowań"
|
||||
lang: "Język"
|
||||
lang-tip: "Aby zmiany zostały uwzględnione, odśwież stronę."
|
||||
recommended: "Zalecany"
|
||||
auto: "Automatycznie"
|
||||
specify-language: "Wybierz język"
|
||||
design: "Wygląd i wyświetlanie"
|
||||
dark-mode: "Tryb ciemny"
|
||||
i-am-under-limited-internet: "Ograniczaj zużycie transferu"
|
||||
circle-icons: "Używaj okrągłych ikon"
|
||||
timeline: "Oś czasu"
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "Zachowanie"
|
||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
||||
twitter: "Połączenie z Twitterem"
|
||||
twitter-connect: "Połącz z Twitterem"
|
||||
twitter-reconnect: "Połącz ponownie"
|
||||
twitter-disconnect: "Rozłącz"
|
||||
update: "Aktualizacja Misskey"
|
||||
version: "Wersja:"
|
||||
latest-version: "Najnowsza wersja:"
|
||||
update-checking: "Sprawdzanie dostępności aktualizacji"
|
||||
check-for-updates: "Sprawdź dostępność aktualizacji"
|
||||
no-updates: "Brak dostępnych aktualizacji"
|
||||
no-updates-desc: "Twój Misskey jest aktualny."
|
||||
update-available: "Dostępna jest nowa wersja"
|
||||
update-available-desc: "Odśwież stronę, aby zastosować aktualizację."
|
||||
settings: "Ustawienia"
|
||||
signout: "Wyloguj"
|
||||
mobile/views/pages/user.vue:
|
||||
|
249
locales/ru.yml
249
locales/ru.yml
@ -1,4 +1,7 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Misskeyで皆と共有しよう。"
|
||||
time:
|
||||
@ -162,6 +165,20 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
replies: "Red ... Replies"
|
||||
renotes: "Green ... Renotes"
|
||||
desktop/views/components/activity.vue:
|
||||
title: "アクティビティ"
|
||||
toggle: "表示を切り替え"
|
||||
@ -170,6 +187,20 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
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:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
@ -221,14 +252,73 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
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:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "キャンセル"
|
||||
ok: "決定"
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "メッセージ:"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "会話をもっと読み込む"
|
||||
private: "(この投稿は非公開です)"
|
||||
is-renote: "がRenote"
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(この投稿は非公開です)"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
detail: "詳細"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
@ -257,6 +347,8 @@ desktop/views/components/post-form-window.vue:
|
||||
reply: "返信"
|
||||
attaches: "添付: {}メディア"
|
||||
uploading-media: "{}個のメディアをアップロード中"
|
||||
desktop/views/components/progress-dialog.vue:
|
||||
waiting: "待機中"
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "引用する..."
|
||||
cancel: "キャンセル"
|
||||
@ -273,10 +365,72 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
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: "この設定はブラウザに記憶されます。"
|
||||
experimental: "実験的機能を有効にする"
|
||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@ -300,6 +454,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -320,6 +475,12 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
poll: "投票"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
@ -344,6 +505,28 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
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:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -352,6 +535,10 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
username: "ユーザー名"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "知り合いのフォロワー"
|
||||
loading: "読み込み中"
|
||||
@ -378,6 +565,11 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
with-media: "メディア"
|
||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
@ -391,6 +583,9 @@ desktop/views/widgets/post-form.vue:
|
||||
title: "投稿"
|
||||
note: "投稿"
|
||||
placeholder: "いまどうしてる?"
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "クリックでバナー編集"
|
||||
update-avatar: "クリックでアバター編集"
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "トレンド"
|
||||
refresh: "他を見る"
|
||||
@ -399,10 +594,6 @@ desktop/views/widgets/users.vue:
|
||||
title: "おすすめユーザー"
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
desktop/views/widgets/channel.vue:
|
||||
title: "チャンネル"
|
||||
settings: "ウィジェットの設定"
|
||||
get-started: "右上の歯車をクリックして受信するチャンネルを指定してください"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
@ -435,6 +626,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
@ -478,21 +672,21 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/profile-setting.vue:
|
||||
title: "プロフィール設定"
|
||||
will-be-published: "これらのプロフィールは公開されます。"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
avatar-saved: "アイコンを保存しました"
|
||||
banner-saved: "バナーを保存しました"
|
||||
set-avatar: "アイコンを選択する"
|
||||
set-banner: "バナーを選択する"
|
||||
is-bot: "このアカウントはBotです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@ -500,9 +694,38 @@ mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
profile: "プロフィール"
|
||||
lang: "言語"
|
||||
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||
recommended: "推奨"
|
||||
auto: "自動"
|
||||
specify-language: "言語を指定"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
twitter: "Twitter連携"
|
||||
signin-history: "サインイン履歴"
|
||||
twitter-connect: "Twitterアカウントに接続する"
|
||||
twitter-reconnect: "再接続する"
|
||||
twitter-disconnect: "切断する"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
check-for-updates: "アップデートを確認"
|
||||
no-updates: "利用可能な更新はありません"
|
||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
mobile/views/pages/user.vue:
|
||||
|
249
locales/zh.yml
249
locales/zh.yml
@ -1,4 +1,7 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Misskeyで皆と共有しよう。"
|
||||
time:
|
||||
@ -162,6 +165,20 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
commons/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
replies: "Red ... Replies"
|
||||
renotes: "Green ... Renotes"
|
||||
desktop/views/components/activity.vue:
|
||||
title: "アクティビティ"
|
||||
toggle: "表示を切り替え"
|
||||
@ -170,6 +187,20 @@ desktop/views/components/calendar.vue:
|
||||
prev: "前の月"
|
||||
next: "次の月"
|
||||
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:
|
||||
used: "使用中"
|
||||
drive: "ドライブ"
|
||||
@ -221,14 +252,73 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
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:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "キャンセル"
|
||||
ok: "決定"
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "メッセージ:"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "会話をもっと読み込む"
|
||||
private: "(この投稿は非公開です)"
|
||||
is-renote: "がRenote"
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(この投稿は非公開です)"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
detail: "詳細"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
@ -257,6 +347,8 @@ desktop/views/components/post-form-window.vue:
|
||||
reply: "返信"
|
||||
attaches: "添付: {}メディア"
|
||||
uploading-media: "{}個のメディアをアップロード中"
|
||||
desktop/views/components/progress-dialog.vue:
|
||||
waiting: "待機中"
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "引用する..."
|
||||
cancel: "キャンセル"
|
||||
@ -273,10 +365,72 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
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: "この設定はブラウザに記憶されます。"
|
||||
experimental: "実験的機能を有効にする"
|
||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
||||
tools: "ツール"
|
||||
task-manager: "タスクマネージャ"
|
||||
third-parties: "サードパーティ"
|
||||
desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
@ -300,6 +454,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -320,6 +475,12 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
save: "保存"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
poll: "投票"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "タスクマネージャ"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
@ -344,6 +505,28 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
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:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -352,6 +535,10 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
username: "ユーザー名"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "知り合いのフォロワー"
|
||||
loading: "読み込み中"
|
||||
@ -378,6 +565,11 @@ desktop/views/pages/user/user.profile.vue:
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "投稿"
|
||||
with-replies: "投稿と返信"
|
||||
with-media: "メディア"
|
||||
empty: "このユーザーはまだ何も投稿していないようです。"
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
@ -391,6 +583,9 @@ desktop/views/widgets/post-form.vue:
|
||||
title: "投稿"
|
||||
note: "投稿"
|
||||
placeholder: "いまどうしてる?"
|
||||
desktop/views/widgets/profile.vue:
|
||||
update-banner: "クリックでバナー編集"
|
||||
update-avatar: "クリックでアバター編集"
|
||||
desktop/views/widgets/trends.vue:
|
||||
title: "トレンド"
|
||||
refresh: "他を見る"
|
||||
@ -399,10 +594,6 @@ desktop/views/widgets/users.vue:
|
||||
title: "おすすめユーザー"
|
||||
refresh: "他を見る"
|
||||
no-one: "いません!"
|
||||
desktop/views/widgets/channel.vue:
|
||||
title: "チャンネル"
|
||||
settings: "ウィジェットの設定"
|
||||
get-started: "右上の歯車をクリックして受信するチャンネルを指定してください"
|
||||
mobile/views/components/drive.vue:
|
||||
drive: "ドライブ"
|
||||
used: "使用中"
|
||||
@ -435,6 +626,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
@ -478,21 +672,21 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/profile-setting.vue:
|
||||
title: "プロフィール設定"
|
||||
will-be-published: "これらのプロフィールは公開されます。"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
will-be-published: "※公開されます"
|
||||
name: "名前"
|
||||
account: "アカウント"
|
||||
location: "場所"
|
||||
description: "自己紹介"
|
||||
birthday: "誕生日"
|
||||
avatar: "アイコン"
|
||||
banner: "バナー"
|
||||
avatar-saved: "アイコンを保存しました"
|
||||
banner-saved: "バナーを保存しました"
|
||||
set-avatar: "アイコンを選択する"
|
||||
set-banner: "バナーを選択する"
|
||||
is-bot: "このアカウントはBotです"
|
||||
save: "保存"
|
||||
saved: "プロフィールを保存しました"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
mobile/views/pages/search.vue:
|
||||
search: "検索"
|
||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||
@ -500,9 +694,38 @@ mobile/views/pages/selectdrive.vue:
|
||||
select-file: "ファイルを選択"
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
profile: "プロフィール"
|
||||
lang: "言語"
|
||||
lang-tip: "変更はページの再読み込み後に反映されます。"
|
||||
recommended: "推奨"
|
||||
auto: "自動"
|
||||
specify-language: "言語を指定"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
post-style: "投稿の表示スタイル"
|
||||
post-style-standard: "標準"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "動作"
|
||||
fetch-on-scroll: "スクロールで自動読み込み"
|
||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||
twitter: "Twitter連携"
|
||||
signin-history: "サインイン履歴"
|
||||
twitter-connect: "Twitterアカウントに接続する"
|
||||
twitter-reconnect: "再接続する"
|
||||
twitter-disconnect: "切断する"
|
||||
update: "Misskey Update"
|
||||
version: "バージョン:"
|
||||
latest-version: "最新のバージョン:"
|
||||
update-checking: "アップデートを確認中"
|
||||
check-for-updates: "アップデートを確認"
|
||||
no-updates: "利用可能な更新はありません"
|
||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
mobile/views/pages/user.vue:
|
||||
|
43
package.json
43
package.json
@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "2.7.1",
|
||||
"clientVersion": "1.0.5345",
|
||||
"version": "2.13.0",
|
||||
"clientVersion": "1.0.5576",
|
||||
"codename": "nighthike",
|
||||
"main": "./built/index.js",
|
||||
"private": true,
|
||||
@ -31,8 +31,6 @@
|
||||
"@prezzemolo/rap": "0.1.2",
|
||||
"@prezzemolo/zip": "0.0.3",
|
||||
"@types/bcryptjs": "2.4.1",
|
||||
"@types/chai": "4.1.3",
|
||||
"@types/chai-http": "3.0.4",
|
||||
"@types/debug": "0.0.30",
|
||||
"@types/deep-equal": "1.0.1",
|
||||
"@types/elasticsearch": "5.0.23",
|
||||
@ -58,7 +56,7 @@
|
||||
"@types/koa-multer": "1.0.0",
|
||||
"@types/koa-router": "7.0.28",
|
||||
"@types/koa-send": "4.1.1",
|
||||
"@types/koa-views": "^2.0.3",
|
||||
"@types/koa-views": "2.0.3",
|
||||
"@types/koa__cors": "2.2.2",
|
||||
"@types/kue": "0.11.8",
|
||||
"@types/license-checker": "15.0.0",
|
||||
@ -67,9 +65,9 @@
|
||||
"@types/mongodb": "3.0.18",
|
||||
"@types/monk": "6.0.0",
|
||||
"@types/ms": "0.7.30",
|
||||
"@types/node": "10.1.0",
|
||||
"@types/node": "10.1.2",
|
||||
"@types/nopt": "3.0.29",
|
||||
"@types/parse5": "^3.0.0",
|
||||
"@types/parse5": "3.0.0",
|
||||
"@types/pug": "2.0.4",
|
||||
"@types/qrcode": "0.8.1",
|
||||
"@types/ratelimiter": "2.1.28",
|
||||
@ -78,11 +76,11 @@
|
||||
"@types/request-promise-native": "1.0.14",
|
||||
"@types/rimraf": "2.0.2",
|
||||
"@types/seedrandom": "2.4.27",
|
||||
"@types/single-line-log": "^1.1.0",
|
||||
"@types/single-line-log": "1.1.0",
|
||||
"@types/speakeasy": "2.0.2",
|
||||
"@types/tmp": "0.0.33",
|
||||
"@types/uuid": "3.4.3",
|
||||
"@types/webpack": "4.1.7",
|
||||
"@types/webpack": "4.4.0",
|
||||
"@types/webpack-stream": "3.2.10",
|
||||
"@types/websocket": "0.0.39",
|
||||
"@types/ws": "5.1.1",
|
||||
@ -92,8 +90,6 @@
|
||||
"bcryptjs": "2.4.3",
|
||||
"bootstrap-vue": "2.0.0-rc.6",
|
||||
"cafy": "8.0.0",
|
||||
"chai": "4.1.2",
|
||||
"chai-http": "4.0.0",
|
||||
"chalk": "2.4.1",
|
||||
"crc-32": "1.2.0",
|
||||
"css-loader": "0.28.11",
|
||||
@ -102,8 +98,8 @@
|
||||
"deepcopy": "0.6.3",
|
||||
"diskusage": "0.2.4",
|
||||
"dompurify": "1.0.4",
|
||||
"elasticsearch": "14.2.2",
|
||||
"element-ui": "2.3.8",
|
||||
"elasticsearch": "15.0.0",
|
||||
"element-ui": "2.3.9",
|
||||
"emojilib": "2.2.12",
|
||||
"escape-regexp": "0.0.1",
|
||||
"eslint": "4.19.1",
|
||||
@ -128,7 +124,7 @@
|
||||
"gulp-typescript": "4.0.2",
|
||||
"gulp-uglify": "3.0.0",
|
||||
"gulp-util": "3.0.8",
|
||||
"hard-source-webpack-plugin": "0.6.7",
|
||||
"hard-source-webpack-plugin": "0.6.9",
|
||||
"highlight.js": "9.12.0",
|
||||
"html-minifier": "3.5.15",
|
||||
"http-signature": "1.2.0",
|
||||
@ -148,13 +144,13 @@
|
||||
"koa-router": "7.4.0",
|
||||
"koa-send": "4.1.3",
|
||||
"koa-slow": "2.1.0",
|
||||
"koa-views": "^6.1.4",
|
||||
"koa-views": "6.1.4",
|
||||
"kue": "0.11.6",
|
||||
"license-checker": "19.0.0",
|
||||
"license-checker": "20.0.0",
|
||||
"loader-utils": "1.1.0",
|
||||
"mecab-async": "0.1.2",
|
||||
"mkdirp": "0.5.1",
|
||||
"mocha": "5.1.1",
|
||||
"mocha": "5.2.0",
|
||||
"moji": "0.5.1",
|
||||
"mongodb": "3.0.8",
|
||||
"monk": "6.0.6",
|
||||
@ -167,10 +163,10 @@
|
||||
"object-assign-deep": "0.4.0",
|
||||
"on-build-webpack": "0.1.0",
|
||||
"os-utils": "0.0.14",
|
||||
"parse5": "^4.0.0",
|
||||
"parse5": "4.0.0",
|
||||
"progress-bar-webpack-plugin": "1.11.0",
|
||||
"prominence": "0.2.0",
|
||||
"promise-sequential": "^1.1.1",
|
||||
"promise-sequential": "1.1.1",
|
||||
"pug": "2.0.3",
|
||||
"punycode": "2.1.0",
|
||||
"qrcode": "1.2.0",
|
||||
@ -185,12 +181,12 @@
|
||||
"s-age": "1.1.2",
|
||||
"sass-loader": "7.0.1",
|
||||
"seedrandom": "2.4.3",
|
||||
"single-line-log": "^1.1.2",
|
||||
"single-line-log": "1.1.2",
|
||||
"speakeasy": "2.0.0",
|
||||
"style-loader": "0.21.0",
|
||||
"stylus": "0.54.5",
|
||||
"stylus-loader": "3.0.2",
|
||||
"summaly": "2.0.4",
|
||||
"summaly": "2.0.6",
|
||||
"swagger-jsdoc": "1.9.7",
|
||||
"syuilo-password-strength": "0.0.1",
|
||||
"tcp-port-used": "0.1.2",
|
||||
@ -209,16 +205,17 @@
|
||||
"vue-cropperjs": "2.2.0",
|
||||
"vue-js-modal": "1.3.13",
|
||||
"vue-json-tree-view": "2.1.4",
|
||||
"vue-loader": "15.0.11",
|
||||
"vue-loader": "15.1.0",
|
||||
"vue-material": "^1.0.0-beta-10.2",
|
||||
"vue-router": "3.0.1",
|
||||
"vue-template-compiler": "2.5.16",
|
||||
"vuedraggable": "2.16.0",
|
||||
"vuex": "3.0.1",
|
||||
"vuex-persistedstate": "^2.5.4",
|
||||
"web-push": "3.3.1",
|
||||
"webfinger.js": "2.6.6",
|
||||
"webpack": "4.8.3",
|
||||
"webpack-cli": "2.1.3",
|
||||
"webpack-replace-loader": "1.3.0",
|
||||
"websocket": "1.0.26",
|
||||
"ws": "5.1.1",
|
||||
"xev": "2.0.0"
|
||||
|
@ -7,7 +7,7 @@ import locale from '../../locales';
|
||||
export default class Replacer {
|
||||
private lang: string;
|
||||
|
||||
public pattern = /%i18n:([a-z0-9_\-\.\/\|\!]+?)%/g;
|
||||
public pattern = /%i18n:([a-z0-9_\-\.\/\|]+?)%/g;
|
||||
|
||||
constructor(lang: string) {
|
||||
this.lang = lang;
|
||||
@ -56,11 +56,6 @@ export default class Replacer {
|
||||
public replacement(match, key) {
|
||||
let path = null;
|
||||
|
||||
const shouldEscape = key[0] == '!';
|
||||
if (shouldEscape) {
|
||||
key = key.substr(1);
|
||||
}
|
||||
|
||||
if (key.indexOf('|') != -1) {
|
||||
path = key.split('|')[0];
|
||||
key = key.split('|')[1];
|
||||
@ -68,8 +63,6 @@ export default class Replacer {
|
||||
|
||||
const txt = this.get(path, key);
|
||||
|
||||
return shouldEscape
|
||||
? txt.replace(/'/g, '\\x27').replace(/"/g, '\\x22')
|
||||
: txt.replace(/"/g, '"');
|
||||
return txt.replace(/'/g, '\\x27').replace(/"/g, '\\x22');
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,11 @@ html
|
||||
cursor progress !important
|
||||
|
||||
body
|
||||
// for md
|
||||
font-size 16px !important
|
||||
line-height initial !important
|
||||
letter-spacing initial !important
|
||||
|
||||
overflow-wrap break-word
|
||||
|
||||
#error
|
||||
|
@ -29,11 +29,21 @@
|
||||
if (url.pathname == '/auth') app = 'auth';
|
||||
//#endregion
|
||||
|
||||
// Detect the user language
|
||||
// Note: The default language is Japanese
|
||||
//#region Detect the user language
|
||||
let lang = navigator.language.split('-')[0];
|
||||
|
||||
// The default language is English
|
||||
if (!LANGS.includes(lang)) lang = 'en';
|
||||
if (localStorage.getItem('lang')) lang = localStorage.getItem('lang');
|
||||
|
||||
const vuex = localStorage.getItem('vuex');
|
||||
if (vuex) {
|
||||
const data = JSON.parse(vuex);
|
||||
if (data.device.lang) lang = data.device.lang;
|
||||
}
|
||||
|
||||
const storedLang = localStorage.getItem('lang');
|
||||
if (storedLang) lang = storedLang;
|
||||
//#endregion
|
||||
|
||||
// Detect the user agent
|
||||
const ua = navigator.userAgent.toLowerCase();
|
||||
@ -68,13 +78,6 @@
|
||||
// Script version
|
||||
const ver = localStorage.getItem('v') || VERSION;
|
||||
|
||||
// Whether in debug mode
|
||||
const isDebug = localStorage.getItem('debug') == 'true';
|
||||
|
||||
// Whether use raw version script
|
||||
const raw = (localStorage.getItem('useRawScript') == 'true' && isDebug)
|
||||
|| ENV != 'production';
|
||||
|
||||
// Get salt query
|
||||
const salt = localStorage.getItem('salt')
|
||||
? '?salt=' + localStorage.getItem('salt')
|
||||
@ -84,7 +87,7 @@
|
||||
// Note: 'async' make it possible to load the script asyncly.
|
||||
// 'defer' make it possible to run the script when the dom loaded.
|
||||
const script = document.createElement('script');
|
||||
script.setAttribute('src', `/assets/${app}.${ver}.${lang}.${raw ? 'raw' : 'min'}.js${salt}`);
|
||||
script.setAttribute('src', `/assets/${app}.${ver}.${lang}.js${salt}`);
|
||||
script.setAttribute('async', 'true');
|
||||
script.setAttribute('defer', 'true');
|
||||
head.appendChild(script);
|
||||
|
@ -1,15 +0,0 @@
|
||||
/**
|
||||
* Channels
|
||||
*/
|
||||
|
||||
// Style
|
||||
import './style.styl';
|
||||
|
||||
require('./tags');
|
||||
import init from '../init';
|
||||
|
||||
/**
|
||||
* init
|
||||
*/
|
||||
init(() => {
|
||||
});
|
@ -1,10 +0,0 @@
|
||||
@import "../app"
|
||||
|
||||
html
|
||||
padding 8px
|
||||
background #efefef
|
||||
|
||||
#wait
|
||||
top auto
|
||||
bottom 15px
|
||||
left 15px
|
@ -1,409 +0,0 @@
|
||||
<mk-channel>
|
||||
<mk-header/>
|
||||
<hr>
|
||||
<main v-if="!fetching">
|
||||
<h1>{ channel.title }</h1>
|
||||
|
||||
<div v-if="$root.$data.os.isSignedIn">
|
||||
<p v-if="channel.isWatching">このチャンネルをウォッチしています <a @click="unwatch">ウォッチ解除</a></p>
|
||||
<p v-if="!channel.isWatching"><a @click="watch">このチャンネルをウォッチする</a></p>
|
||||
</div>
|
||||
|
||||
<div class="share">
|
||||
<mk-twitter-button/>
|
||||
<mk-line-button/>
|
||||
</div>
|
||||
|
||||
<div class="body">
|
||||
<p v-if="notesFetching">読み込み中<mk-ellipsis/></p>
|
||||
<div v-if="!notesFetching">
|
||||
<p v-if="notes == null || notes.length == 0">まだ投稿がありません</p>
|
||||
<template v-if="notes != null">
|
||||
<mk-channel-note each={ note in notes.slice().reverse() } note={ note } form={ parent.refs.form }/>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<mk-channel-form v-if="$root.$data.os.isSignedIn" channel={ channel } ref="form"/>
|
||||
<div v-if="!$root.$data.os.isSignedIn">
|
||||
<p>参加するには<a href={ _URL_ }>ログインまたは新規登録</a>してください</p>
|
||||
</div>
|
||||
<hr>
|
||||
<footer>
|
||||
<small><a href={ _URL_ }>Misskey</a> ver { _VERSION_ } (葵 aoi)</small>
|
||||
</footer>
|
||||
</main>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
||||
> main
|
||||
> h1
|
||||
font-size 1.5em
|
||||
color #f00
|
||||
|
||||
> .share
|
||||
> *
|
||||
margin-right 4px
|
||||
|
||||
> .body
|
||||
margin 8px 0 0 0
|
||||
|
||||
> mk-channel-form
|
||||
max-width 500px
|
||||
|
||||
</style>
|
||||
<script lang="typescript">
|
||||
import Progress from '../../common/scripts/loading';
|
||||
import ChannelStream from '../../common/scripts/streaming/channel-stream';
|
||||
|
||||
this.mixin('i');
|
||||
this.mixin('api');
|
||||
|
||||
this.id = this.opts.id;
|
||||
this.fetching = true;
|
||||
this.notesFetching = true;
|
||||
this.channel = null;
|
||||
this.notes = null;
|
||||
this.connection = new ChannelStream(this.id);
|
||||
this.unreadCount = 0;
|
||||
|
||||
this.on('mount', () => {
|
||||
document.documentElement.style.background = '#efefef';
|
||||
|
||||
Progress.start();
|
||||
|
||||
let fetched = false;
|
||||
|
||||
// チャンネル概要読み込み
|
||||
this.$root.$data.os.api('channels/show', {
|
||||
channelId: this.id
|
||||
}).then(channel => {
|
||||
if (fetched) {
|
||||
Progress.done();
|
||||
} else {
|
||||
Progress.set(0.5);
|
||||
fetched = true;
|
||||
}
|
||||
|
||||
this.update({
|
||||
fetching: false,
|
||||
channel: channel
|
||||
});
|
||||
|
||||
document.title = channel.title + ' | Misskey'
|
||||
});
|
||||
|
||||
// 投稿読み込み
|
||||
this.$root.$data.os.api('channels/notes', {
|
||||
channelId: this.id
|
||||
}).then(notes => {
|
||||
if (fetched) {
|
||||
Progress.done();
|
||||
} else {
|
||||
Progress.set(0.5);
|
||||
fetched = true;
|
||||
}
|
||||
|
||||
this.update({
|
||||
notesFetching: false,
|
||||
notes: notes
|
||||
});
|
||||
});
|
||||
|
||||
this.connection.on('note', this.onNote);
|
||||
document.addEventListener('visibilitychange', this.onVisibilitychange, false);
|
||||
});
|
||||
|
||||
this.on('unmount', () => {
|
||||
this.connection.off('note', this.onNote);
|
||||
this.connection.close();
|
||||
document.removeEventListener('visibilitychange', this.onVisibilitychange);
|
||||
});
|
||||
|
||||
this.onNote = note => {
|
||||
this.notes.unshift(note);
|
||||
this.update();
|
||||
|
||||
if (document.hidden && this.$root.$data.os.isSignedIn && note.userId !== this.$root.$data.os.i.id) {
|
||||
this.unreadCount++;
|
||||
document.title = `(${this.unreadCount}) ${this.channel.title} | Misskey`;
|
||||
}
|
||||
};
|
||||
|
||||
this.onVisibilitychange = () => {
|
||||
if (!document.hidden) {
|
||||
this.unreadCount = 0;
|
||||
document.title = this.channel.title + ' | Misskey'
|
||||
}
|
||||
};
|
||||
|
||||
this.watch = () => {
|
||||
this.$root.$data.os.api('channels/watch', {
|
||||
channelId: this.id
|
||||
}).then(() => {
|
||||
this.channel.isWatching = true;
|
||||
this.update();
|
||||
}, e => {
|
||||
alert('error');
|
||||
});
|
||||
};
|
||||
|
||||
this.unwatch = () => {
|
||||
this.$root.$data.os.api('channels/unwatch', {
|
||||
channelId: this.id
|
||||
}).then(() => {
|
||||
this.channel.isWatching = false;
|
||||
this.update();
|
||||
}, e => {
|
||||
alert('error');
|
||||
});
|
||||
};
|
||||
</script>
|
||||
</mk-channel>
|
||||
|
||||
<mk-channel-note>
|
||||
<header>
|
||||
<a class="index" @click="reply">{ note.index }:</a>
|
||||
<a class="name" href={ _URL_ + '/@' + acct }><b>{ getUserName(note.user) }</b></a>
|
||||
<mk-time time={ note.createdAt }/>
|
||||
<mk-time time={ note.createdAt } mode="detail"/>
|
||||
<span>ID:<i>{ acct }</i></span>
|
||||
</header>
|
||||
<div>
|
||||
<a v-if="note.reply">>>{ note.reply.index }</a>
|
||||
{ note.text }
|
||||
<div class="media" v-if="note.media">
|
||||
<template each={ file in note.media }>
|
||||
<a href={ file.url } target="_blank">
|
||||
<img src={ file.url + '?thumbnail&size=512' } alt={ file.name } title={ file.name }/>
|
||||
</a>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
margin 0
|
||||
padding 0
|
||||
|
||||
> header
|
||||
position -webkit-sticky
|
||||
position sticky
|
||||
z-index 1
|
||||
top 0
|
||||
background rgba(239, 239, 239, 0.9)
|
||||
|
||||
> .index
|
||||
margin-right 0.25em
|
||||
color #000
|
||||
|
||||
> .name
|
||||
margin-right 0.5em
|
||||
color #008000
|
||||
|
||||
> mk-time
|
||||
margin-right 0.5em
|
||||
|
||||
&:first-of-type
|
||||
display none
|
||||
|
||||
@media (max-width 600px)
|
||||
> mk-time
|
||||
&:first-of-type
|
||||
display initial
|
||||
|
||||
&:last-of-type
|
||||
display none
|
||||
|
||||
> div
|
||||
padding 0 0 1em 2em
|
||||
|
||||
> .media
|
||||
> a
|
||||
display inline-block
|
||||
|
||||
> img
|
||||
max-width 100%
|
||||
vertical-align bottom
|
||||
|
||||
</style>
|
||||
<script lang="typescript">
|
||||
import getAcct from '../../../../acct/render';
|
||||
import getUserName from '../../../../renderers/get-user-name';
|
||||
|
||||
this.note = this.opts.note;
|
||||
this.form = this.opts.form;
|
||||
this.acct = getAcct(this.note.user);
|
||||
this.name = getUserName(this.note.user);
|
||||
|
||||
this.reply = () => {
|
||||
this.form.update({
|
||||
reply: this.note
|
||||
});
|
||||
};
|
||||
</script>
|
||||
</mk-channel-note>
|
||||
|
||||
<mk-channel-form>
|
||||
<p v-if="reply"><b>>>{ reply.index }</b> ({ getUserName(reply.user) }): <a @click="clearReply">[x]</a></p>
|
||||
<textarea ref="text" disabled={ wait } oninput={ update } onkeydown={ onkeydown } onpaste={ onpaste } placeholder="%i18n:ch.tags.mk-channel-form.textarea%"></textarea>
|
||||
<div class="actions">
|
||||
<button @click="selectFile">%fa:upload%%i18n:ch.tags.mk-channel-form.upload%</button>
|
||||
<button @click="drive">%fa:cloud%%i18n:ch.tags.mk-channel-form.drive%</button>
|
||||
<button :class="{ wait: wait }" ref="submit" disabled={ wait || (refs.text.value.length == 0) } @click="note">
|
||||
<template v-if="!wait">%fa:paper-plane%</template>{ wait ? '%i18n:!ch.tags.mk-channel-form.posting%' : '%i18n:!ch.tags.mk-channel-form.note%' }<mk-ellipsis v-if="wait"/>
|
||||
</button>
|
||||
</div>
|
||||
<mk-uploader ref="uploader"/>
|
||||
<ol v-if="files">
|
||||
<li each={ files }>{ name }</li>
|
||||
</ol>
|
||||
<input ref="file" type="file" accept="image/*" multiple="multiple" onchange={ changeFile }/>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
||||
> textarea
|
||||
width 100%
|
||||
max-width 100%
|
||||
min-width 100%
|
||||
min-height 5em
|
||||
|
||||
> .actions
|
||||
display flex
|
||||
|
||||
> button
|
||||
> [data-fa]
|
||||
margin-right 0.25em
|
||||
|
||||
&:last-child
|
||||
margin-left auto
|
||||
|
||||
&.wait
|
||||
cursor wait
|
||||
|
||||
> input[type='file']
|
||||
display none
|
||||
|
||||
</style>
|
||||
<script lang="typescript">
|
||||
import getUserName from '../../../../renderers/get-user-name';
|
||||
|
||||
this.mixin('api');
|
||||
|
||||
this.channel = this.opts.channel;
|
||||
this.files = null;
|
||||
|
||||
this.on('mount', () => {
|
||||
this.$refs.uploader.on('uploaded', file => {
|
||||
this.update({
|
||||
files: [file]
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
this.upload = file => {
|
||||
this.$refs.uploader.upload(file);
|
||||
};
|
||||
|
||||
this.clearReply = () => {
|
||||
this.update({
|
||||
reply: null
|
||||
});
|
||||
};
|
||||
|
||||
this.clear = () => {
|
||||
this.clearReply();
|
||||
this.update({
|
||||
files: null
|
||||
});
|
||||
this.$refs.text.value = '';
|
||||
};
|
||||
|
||||
this.note = () => {
|
||||
this.update({
|
||||
wait: true
|
||||
});
|
||||
|
||||
const files = this.files && this.files.length > 0
|
||||
? this.files.map(f => f.id)
|
||||
: undefined;
|
||||
|
||||
this.$root.$data.os.api('notes/create', {
|
||||
text: this.$refs.text.value == '' ? undefined : this.$refs.text.value,
|
||||
mediaIds: files,
|
||||
replyId: this.reply ? this.reply.id : undefined,
|
||||
channelId: this.channel.id
|
||||
}).then(data => {
|
||||
this.clear();
|
||||
}).catch(err => {
|
||||
alert('失敗した');
|
||||
}).then(() => {
|
||||
this.update({
|
||||
wait: false
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
this.changeFile = () => {
|
||||
Array.from(this.$refs.file.files).forEach(this.upload);
|
||||
};
|
||||
|
||||
this.selectFile = () => {
|
||||
this.$refs.file.click();
|
||||
};
|
||||
|
||||
this.drive = () => {
|
||||
window['cb'] = files => {
|
||||
this.update({
|
||||
files: files
|
||||
});
|
||||
};
|
||||
|
||||
window.open(_URL_ + '/selectdrive?multiple=true',
|
||||
'drive_window',
|
||||
'height=500,width=800');
|
||||
};
|
||||
|
||||
this.onkeydown = e => {
|
||||
if ((e.which == 10 || e.which == 13) && (e.ctrlKey || e.metaKey)) this.post();
|
||||
};
|
||||
|
||||
this.onpaste = e => {
|
||||
Array.from(e.clipboardData.items).forEach(item => {
|
||||
if (item.kind == 'file') {
|
||||
this.upload(item.getAsFile());
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
this.getUserName = getUserName;
|
||||
</script>
|
||||
</mk-channel-form>
|
||||
|
||||
<mk-twitter-button>
|
||||
<a href="https://twitter.com/share?ref_src=twsrc%5Etfw" class="twitter-share-button" data-show-count="false">Tweet</a>
|
||||
<script lang="typescript">
|
||||
this.on('mount', () => {
|
||||
const head = document.getElementsByTagName('head')[0];
|
||||
const script = document.createElement('script');
|
||||
script.setAttribute('src', 'https://platform.twitter.com/widgets.js');
|
||||
script.setAttribute('async', 'async');
|
||||
head.appendChild(script);
|
||||
});
|
||||
</script>
|
||||
</mk-twitter-button>
|
||||
|
||||
<mk-line-button>
|
||||
<div class="line-it-button" data-lang="ja" data-type="share-a" data-url={ _CH_URL_ } style="display: none;"></div>
|
||||
<script lang="typescript">
|
||||
this.on('mount', () => {
|
||||
const head = document.getElementsByTagName('head')[0];
|
||||
const script = document.createElement('script');
|
||||
script.setAttribute('src', 'https://d.line-scdn.net/r/web/social-plugin/js/thirdparty/loader.min.js');
|
||||
script.setAttribute('async', 'async');
|
||||
head.appendChild(script);
|
||||
});
|
||||
</script>
|
||||
</mk-line-button>
|
@ -1,20 +0,0 @@
|
||||
<mk-header>
|
||||
<div>
|
||||
<a href={ _CH_URL_ }>Index</a> | <a href={ _URL_ }>Misskey</a>
|
||||
</div>
|
||||
<div>
|
||||
<a v-if="!$root.$data.os.isSignedIn" href={ _URL_ }>ログイン(新規登録)</a>
|
||||
<a v-if="$root.$data.os.isSignedIn" href={ _URL_ + '/@' + I.username }>{ I.username }</a>
|
||||
</div>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display flex
|
||||
|
||||
> div:last-child
|
||||
margin-left auto
|
||||
|
||||
</style>
|
||||
<script lang="typescript">
|
||||
this.mixin('i');
|
||||
</script>
|
||||
</mk-header>
|
@ -1,37 +0,0 @@
|
||||
<mk-index>
|
||||
<mk-header/>
|
||||
<hr>
|
||||
<button @click="n">%i18n:ch.tags.mk-index.new%</button>
|
||||
<hr>
|
||||
<ul v-if="channels">
|
||||
<li each={ channels }><a href={ '/' + this.id }>{ this.title }</a></li>
|
||||
</ul>
|
||||
<style lang="stylus" scoped>
|
||||
:scope
|
||||
display block
|
||||
|
||||
</style>
|
||||
<script lang="typescript">
|
||||
this.mixin('api');
|
||||
|
||||
this.on('mount', () => {
|
||||
this.$root.$data.os.api('channels', {
|
||||
limit: 100
|
||||
}).then(channels => {
|
||||
this.update({
|
||||
channels: channels
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
this.n = () => {
|
||||
const title = window.prompt('%i18n:!ch.tags.mk-index.channel-title%');
|
||||
|
||||
this.$root.$data.os.api('channels/create', {
|
||||
title: title
|
||||
}).then(channel => {
|
||||
location.href = '/' + channel.id;
|
||||
});
|
||||
};
|
||||
</script>
|
||||
</mk-index>
|
@ -1,3 +0,0 @@
|
||||
require('./index.tag');
|
||||
require('./channel.tag');
|
||||
require('./header.tag');
|
16
src/client/app/common/scripts/can-hide-text.ts
Normal file
16
src/client/app/common/scripts/can-hide-text.ts
Normal file
@ -0,0 +1,16 @@
|
||||
export default function(note) {
|
||||
if (note.text == null) return true;
|
||||
|
||||
let txt = note.text;
|
||||
|
||||
if (note.media) {
|
||||
note.media.forEach(file => {
|
||||
txt = txt.replace(file.url, '');
|
||||
if (file.src) txt = txt.replace(file.src, '');
|
||||
});
|
||||
|
||||
if (txt == '') return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
@ -23,7 +23,7 @@ export default async function(mios: MiOS, force = false, silent = false) {
|
||||
}
|
||||
|
||||
if (!silent) {
|
||||
alert('%i18n:!common.update-available%'.replace('{newer}', newer).replace('{current}', current));
|
||||
alert('%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current));
|
||||
}
|
||||
|
||||
return newer;
|
||||
|
@ -1,13 +0,0 @@
|
||||
import Stream from './stream';
|
||||
import MiOS from '../../../mios';
|
||||
|
||||
/**
|
||||
* Channel stream connection
|
||||
*/
|
||||
export default class Connection extends Stream {
|
||||
constructor(os: MiOS, channelId) {
|
||||
super(os, 'channel', {
|
||||
channel: channelId
|
||||
});
|
||||
}
|
||||
}
|
@ -62,7 +62,7 @@ export class HomeStream extends Stream {
|
||||
// トークンが再生成されたとき
|
||||
// このままではMisskeyが利用できないので強制的にサインアウトさせる
|
||||
this.on('my_token_regenerated', () => {
|
||||
alert('%i18n:!common.my-token-regenerated%');
|
||||
alert('%i18n:common.my-token-regenerated%');
|
||||
os.signout();
|
||||
});
|
||||
}
|
||||
|
19
src/client/app/common/views/components/acct.vue
Normal file
19
src/client/app/common/views/components/acct.vue
Normal file
@ -0,0 +1,19 @@
|
||||
<template>
|
||||
<span class="mk-acct">
|
||||
<span class="name">@{{ user.username }}</span>
|
||||
<span class="host" v-if="user.host">@{{ user.host }}</span>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
export default Vue.extend({
|
||||
props: ['user']
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.mk-acct
|
||||
> .host
|
||||
opacity 0.5
|
||||
</style>
|
@ -21,10 +21,13 @@ export default Vue.extend({
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
lightmode(): boolean {
|
||||
return this.$store.state.device.lightmode;
|
||||
},
|
||||
style(): any {
|
||||
return {
|
||||
backgroundColor: this.user.avatarColor ? `rgb(${ this.user.avatarColor.join(',') })` : null,
|
||||
backgroundImage: `url(${ this.user.avatarUrl }?thumbnail)`,
|
||||
backgroundColor: this.user.avatarColor && this.user.avatarColor.length == 3 ? `rgb(${ this.user.avatarColor.join(',') })` : null,
|
||||
backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl }?thumbnail)`,
|
||||
borderRadius: (this as any).clientSettings.circleIcons ? '100%' : null
|
||||
};
|
||||
}
|
||||
|
@ -8,21 +8,21 @@
|
||||
<template v-if="network">%fa:check%</template>
|
||||
<template v-if="!network">%fa:times%</template>
|
||||
</template>
|
||||
{{ network == null ? '%i18n:!@checking-network%' : '%i18n:!@network%' }}<mk-ellipsis v-if="network == null"/>
|
||||
{{ network == null ? '%i18n:@checking-network%' : '%i18n:@network%' }}<mk-ellipsis v-if="network == null"/>
|
||||
</p>
|
||||
<p v-if="network == true" :data-wip="internet == null">
|
||||
<template v-if="internet != null">
|
||||
<template v-if="internet">%fa:check%</template>
|
||||
<template v-if="!internet">%fa:times%</template>
|
||||
</template>
|
||||
{{ internet == null ? '%i18n:!@checking-internet%' : '%i18n:!@internet%' }}<mk-ellipsis v-if="internet == null"/>
|
||||
{{ internet == null ? '%i18n:@checking-internet%' : '%i18n:@internet%' }}<mk-ellipsis v-if="internet == null"/>
|
||||
</p>
|
||||
<p v-if="internet == true" :data-wip="server == null">
|
||||
<template v-if="server != null">
|
||||
<template v-if="server">%fa:check%</template>
|
||||
<template v-if="!server">%fa:times%</template>
|
||||
</template>
|
||||
{{ server == null ? '%i18n:!@checking-server%' : '%i18n:!@server%' }}<mk-ellipsis v-if="server == null"/>
|
||||
{{ server == null ? '%i18n:@checking-server%' : '%i18n:@server%' }}<mk-ellipsis v-if="server == null"/>
|
||||
</p>
|
||||
</div>
|
||||
<p v-if="!end">%i18n:@finding%<mk-ellipsis/></p>
|
||||
|
@ -3,9 +3,9 @@
|
||||
<img src="data:image/jpeg;base64,%base64:/assets/error.jpg%" alt=""/>
|
||||
<h1>%i18n:@title%</h1>
|
||||
<p class="text">
|
||||
<span>{{ '%i18n:!@description%'.substr(0, '%i18n:!@description%'.indexOf('{')) }}</span>
|
||||
<a @click="reload">{{ '%i18n:!@description%'.match(/\{(.+?)\}/)[1] }}</a>
|
||||
<span>{{ '%i18n:!@description%'.substr('%i18n:!@description%'.indexOf('}') + 1) }}</span>
|
||||
<span>{{ '%i18n:@description%'.substr(0, '%i18n:@description%'.indexOf('{')) }}</span>
|
||||
<a @click="reload">{{ '%i18n:@description%'.match(/\{(.+?)\}/)[1] }}</a>
|
||||
<span>{{ '%i18n:@description%'.substr('%i18n:@description%'.indexOf('}') + 1) }}</span>
|
||||
</p>
|
||||
<button v-if="!troubleshooting" @click="troubleshooting = true">%i18n:@troubleshoot%</button>
|
||||
<x-troubleshooter v-if="troubleshooting"/>
|
||||
|
@ -3,6 +3,7 @@ import Vue from 'vue';
|
||||
import signin from './signin.vue';
|
||||
import signup from './signup.vue';
|
||||
import forkit from './forkit.vue';
|
||||
import acct from './acct.vue';
|
||||
import avatar from './avatar.vue';
|
||||
import nav from './nav.vue';
|
||||
import noteHtml from './note-html';
|
||||
@ -29,6 +30,7 @@ import welcomeTimeline from './welcome-timeline.vue';
|
||||
Vue.component('mk-signin', signin);
|
||||
Vue.component('mk-signup', signup);
|
||||
Vue.component('mk-forkit', forkit);
|
||||
Vue.component('mk-acct', acct);
|
||||
Vue.component('mk-avatar', avatar);
|
||||
Vue.component('mk-nav', nav);
|
||||
Vue.component('mk-note-html', noteHtml);
|
||||
|
@ -8,7 +8,7 @@
|
||||
<p class="empty" v-if="!init && messages.length == 0">%fa:info-circle%%i18n:@empty%</p>
|
||||
<p class="no-history" v-if="!init && messages.length > 0 && !existMoreMessages">%fa:flag%%i18n:@no-history%</p>
|
||||
<button class="more" :class="{ fetching: fetchingMoreMessages }" v-if="existMoreMessages" @click="fetchMoreMessages" :disabled="fetchingMoreMessages">
|
||||
<template v-if="fetchingMoreMessages">%fa:spinner .pulse .fw%</template>{{ fetchingMoreMessages ? '%i18n:!common.loading%' : '%i18n:!@more%' }}
|
||||
<template v-if="fetchingMoreMessages">%fa:spinner .pulse .fw%</template>{{ fetchingMoreMessages ? '%i18n:common.loading%' : '%i18n:@more%' }}
|
||||
</button>
|
||||
<template v-for="(message, i) in _messages">
|
||||
<x-message :message="message" :key="message.id"/>
|
||||
@ -149,9 +149,9 @@ export default Vue.extend({
|
||||
|
||||
onMessage(message) {
|
||||
// サウンドを再生する
|
||||
if ((this as any).os.isEnableSounds) {
|
||||
if (this.$store.state.device.enableSounds) {
|
||||
const sound = new Audio(`${url}/assets/message.mp3`);
|
||||
sound.volume = localStorage.getItem('soundVolume') ? parseInt(localStorage.getItem('soundVolume'), 10) / 100 : 0.5;
|
||||
sound.volume = this.$store.state.device.soundVolume;
|
||||
sound.play();
|
||||
}
|
||||
|
||||
@ -172,7 +172,7 @@ export default Vue.extend({
|
||||
});
|
||||
} else if (message.userId != (this as any).os.i.id) {
|
||||
// Notify
|
||||
this.notify('%i18n:!@new-message%');
|
||||
this.notify('%i18n:@new-message%');
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -162,9 +162,9 @@ export default Vue.extend({
|
||||
this.o.put(this.myColor, pos);
|
||||
|
||||
// サウンドを再生する
|
||||
if ((this as any).os.isEnableSounds) {
|
||||
if (this.$store.state.device.enableSounds) {
|
||||
const sound = new Audio(`${url}/assets/othello-put-me.mp3`);
|
||||
sound.volume = localStorage.getItem('soundVolume') ? parseInt(localStorage.getItem('soundVolume'), 10) / 100 : 0.5;
|
||||
sound.volume = this.$store.state.device.soundVolume;
|
||||
sound.play();
|
||||
}
|
||||
|
||||
@ -186,9 +186,9 @@ export default Vue.extend({
|
||||
this.$forceUpdate();
|
||||
|
||||
// サウンドを再生する
|
||||
if ((this as any).os.isEnableSounds && x.color != this.myColor) {
|
||||
if (this.$store.state.device.enableSounds && x.color != this.myColor) {
|
||||
const sound = new Audio(`${url}/assets/othello-put-you.mp3`);
|
||||
sound.volume = localStorage.getItem('soundVolume') ? parseInt(localStorage.getItem('soundVolume'), 10) / 100 : 0.5;
|
||||
sound.volume = this.$store.state.device.soundVolume;
|
||||
sound.play();
|
||||
}
|
||||
},
|
||||
|
@ -5,7 +5,7 @@
|
||||
</p>
|
||||
<ul ref="choices">
|
||||
<li v-for="(choice, i) in choices">
|
||||
<input :value="choice" @input="onInput(i, $event)" :placeholder="'%i18n:!@choice-n%'.replace('{}', i + 1)">
|
||||
<input :value="choice" @input="onInput(i, $event)" :placeholder="'%i18n:@choice-n%'.replace('{}', i + 1)">
|
||||
<button @click="remove(i)" title="%i18n:@remove%">
|
||||
%fa:times%
|
||||
</button>
|
||||
|
@ -1,19 +1,19 @@
|
||||
<template>
|
||||
<div class="mk-poll" :data-is-voted="isVoted">
|
||||
<ul>
|
||||
<li v-for="choice in poll.choices" :key="choice.id" @click="vote(choice.id)" :class="{ voted: choice.voted }" :title="!isVoted ? '%i18n:!@vote-to%'.replace('{}', choice.text) : ''">
|
||||
<li v-for="choice in poll.choices" :key="choice.id" @click="vote(choice.id)" :class="{ voted: choice.voted }" :title="!isVoted ? '%i18n:@vote-to%'.replace('{}', choice.text) : ''">
|
||||
<div class="backdrop" :style="{ 'width': (showResult ? (choice.votes / total * 100) : 0) + '%' }"></div>
|
||||
<span>
|
||||
<template v-if="choice.isVoted">%fa:check%</template>
|
||||
<span>{{ choice.text }}</span>
|
||||
<span class="votes" v-if="showResult">({{ '%i18n:!@vote-count%'.replace('{}', choice.votes) }})</span>
|
||||
<span class="votes" v-if="showResult">({{ '%i18n:@vote-count%'.replace('{}', choice.votes) }})</span>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
<p v-if="total > 0">
|
||||
<span>{{ '%i18n:!@total-users%'.replace('{}', total) }}</span>
|
||||
<span>{{ '%i18n:@total-users%'.replace('{}', total) }}</span>
|
||||
<span>・</span>
|
||||
<a v-if="!isVoted" @click="toggleShowResult">{{ showResult ? '%i18n:!@vote%' : '%i18n:!@show-result%' }}</a>
|
||||
<a v-if="!isVoted" @click="toggleShowResult">{{ showResult ? '%i18n:@vote%' : '%i18n:@show-result%' }}</a>
|
||||
<span v-if="isVoted">%i18n:@voted%</span>
|
||||
</p>
|
||||
</div>
|
||||
|
@ -22,7 +22,7 @@
|
||||
import Vue from 'vue';
|
||||
import * as anime from 'animejs';
|
||||
|
||||
const placeholder = '%i18n:!@choose-reaction%';
|
||||
const placeholder = '%i18n:@choose-reaction%';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['note', 'source', 'compact', 'cb'],
|
||||
|
@ -9,7 +9,7 @@
|
||||
<label class="token" v-if="user && user.twoFactorEnabled">
|
||||
<input v-model="token" type="number" placeholder="%i18n:@token%" required/>%fa:lock%
|
||||
</label>
|
||||
<button type="submit" :disabled="signing">{{ signing ? '%i18n:!@signing-in%' : '%i18n:!@signin%' }}</button>
|
||||
<button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</button>
|
||||
もしくは <a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a>
|
||||
</form>
|
||||
</template>
|
||||
|
@ -127,7 +127,7 @@ export default Vue.extend({
|
||||
location.href = '/';
|
||||
});
|
||||
}).catch(() => {
|
||||
alert('%i18n:!@some-error%');
|
||||
alert('%i18n:@some-error%');
|
||||
|
||||
(window as any).grecaptcha.reset();
|
||||
this.recaptchaed = false;
|
||||
|
@ -44,16 +44,16 @@ export default Vue.extend({
|
||||
const time = this._time;
|
||||
const ago = (this.now.getTime() - time.getTime()) / 1000/*ms*/;
|
||||
return (
|
||||
ago >= 31536000 ? '%i18n:!common.time.years_ago%' .replace('{}', (~~(ago / 31536000)).toString()) :
|
||||
ago >= 2592000 ? '%i18n:!common.time.months_ago%' .replace('{}', (~~(ago / 2592000)).toString()) :
|
||||
ago >= 604800 ? '%i18n:!common.time.weeks_ago%' .replace('{}', (~~(ago / 604800)).toString()) :
|
||||
ago >= 86400 ? '%i18n:!common.time.days_ago%' .replace('{}', (~~(ago / 86400)).toString()) :
|
||||
ago >= 3600 ? '%i18n:!common.time.hours_ago%' .replace('{}', (~~(ago / 3600)).toString()) :
|
||||
ago >= 60 ? '%i18n:!common.time.minutes_ago%'.replace('{}', (~~(ago / 60)).toString()) :
|
||||
ago >= 10 ? '%i18n:!common.time.seconds_ago%'.replace('{}', (~~(ago % 60)).toString()) :
|
||||
ago >= 0 ? '%i18n:!common.time.just_now%' :
|
||||
ago < 0 ? '%i18n:!common.time.future%' :
|
||||
'%i18n:!common.time.unknown%');
|
||||
ago >= 31536000 ? '%i18n:common.time.years_ago%' .replace('{}', (~~(ago / 31536000)).toString()) :
|
||||
ago >= 2592000 ? '%i18n:common.time.months_ago%' .replace('{}', (~~(ago / 2592000)).toString()) :
|
||||
ago >= 604800 ? '%i18n:common.time.weeks_ago%' .replace('{}', (~~(ago / 604800)).toString()) :
|
||||
ago >= 86400 ? '%i18n:common.time.days_ago%' .replace('{}', (~~(ago / 86400)).toString()) :
|
||||
ago >= 3600 ? '%i18n:common.time.hours_ago%' .replace('{}', (~~(ago / 3600)).toString()) :
|
||||
ago >= 60 ? '%i18n:common.time.minutes_ago%'.replace('{}', (~~(ago / 60)).toString()) :
|
||||
ago >= 10 ? '%i18n:common.time.seconds_ago%'.replace('{}', (~~(ago % 60)).toString()) :
|
||||
ago >= 0 ? '%i18n:common.time.just_now%' :
|
||||
ago < 0 ? '%i18n:common.time.future%' :
|
||||
'%i18n:common.time.unknown%');
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -3,7 +3,7 @@
|
||||
<p>%i18n:@description%<a :href="`${docsUrl}/link-to-twitter`" target="_blank">%i18n:@detail%</a></p>
|
||||
<p class="account" v-if="os.i.twitter" :title="`Twitter ID: ${os.i.twitter.userId}`">%i18n:@connected-to%: <a :href="`https://twitter.com/${os.i.twitter.screenName}`" target="_blank">@{{ os.i.twitter.screenName }}</a></p>
|
||||
<p>
|
||||
<a :href="`${apiUrl}/connect/twitter`" target="_blank" @click.prevent="connect">{{ os.i.twitter ? '%i18n:!@reconnect%' : '%i18n:!@connect%' }}</a>
|
||||
<a :href="`${apiUrl}/connect/twitter`" target="_blank" @click.prevent="connect">{{ os.i.twitter ? '%i18n:@reconnect%' : '%i18n:@connect%' }}</a>
|
||||
<span v-if="os.i.twitter"> or </span>
|
||||
<a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="os.i.twitter" @click.prevent="disconnect">%i18n:@disconnect%</a>
|
||||
</p>
|
||||
|
@ -126,16 +126,21 @@ root(isDark)
|
||||
line-height 16px
|
||||
vertical-align top
|
||||
|
||||
@media (max-width 500px)
|
||||
font-size 8px
|
||||
border none
|
||||
|
||||
@media (max-width 700px)
|
||||
> .thumbnail
|
||||
width 70px
|
||||
position relative
|
||||
width 100%
|
||||
height 100px
|
||||
|
||||
& + article
|
||||
left 70px
|
||||
width calc(100% - 70px)
|
||||
left 0
|
||||
width 100%
|
||||
|
||||
@media (max-width 500px)
|
||||
font-size 8px
|
||||
|
||||
> .thumbnail
|
||||
height 70px
|
||||
|
||||
> article
|
||||
padding 8px
|
||||
|
@ -5,34 +5,34 @@
|
||||
<div @click="choose('public')" :class="{ active: v == 'public' }">
|
||||
<div>%fa:globe%</div>
|
||||
<div>
|
||||
<span>公開</span>
|
||||
<span>%i18n:@public%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div @click="choose('home')" :class="{ active: v == 'home' }">
|
||||
<div>%fa:home%</div>
|
||||
<div>
|
||||
<span>ホーム</span>
|
||||
<span>ホームタイムラインにのみ公開</span>
|
||||
<span>%i18n:@home%</span>
|
||||
<span>%i18n:@home-desc%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div @click="choose('followers')" :class="{ active: v == 'followers' }">
|
||||
<div>%fa:unlock%</div>
|
||||
<div>
|
||||
<span>フォロワー</span>
|
||||
<span>自分のフォロワーにのみ公開</span>
|
||||
<span>%i18n:@followers%</span>
|
||||
<span>%i18n:@followers-desc%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div @click="choose('specified')" :class="{ active: v == 'specified' }">
|
||||
<div>%fa:envelope%</div>
|
||||
<div>
|
||||
<span>ダイレクト</span>
|
||||
<span>指定したユーザーにのみ公開</span>
|
||||
<span>%i18n:@specified%</span>
|
||||
<span>%i18n:@specified-desc%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div @click="choose('private')" :class="{ active: v == 'private' }">
|
||||
<div>%fa:lock%</div>
|
||||
<div>
|
||||
<span>非公開</span>
|
||||
<span>%i18n:@private%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,91 +0,0 @@
|
||||
<template>
|
||||
<div class="mkw-access-log">
|
||||
<mk-widget-container :show-header="props.design == 0">
|
||||
<template slot="header">%fa:server%%i18n:@title%</template>
|
||||
|
||||
<div :class="$style.logs" ref="log">
|
||||
<p v-for="req in requests">
|
||||
<span :class="$style.ip" :style="`color:${ req.fg }; background:${ req.bg }`">{{ req.ip }}</span>
|
||||
<b>{{ req.method }}</b>
|
||||
<span>{{ req.path }}</span>
|
||||
</p>
|
||||
</div>
|
||||
</mk-widget-container>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import define from '../../../common/define-widget';
|
||||
import * as seedrandom from 'seedrandom';
|
||||
|
||||
export default define({
|
||||
name: 'broadcast',
|
||||
props: () => ({
|
||||
design: 0
|
||||
})
|
||||
}).extend({
|
||||
data() {
|
||||
return {
|
||||
requests: [],
|
||||
connection: null,
|
||||
connectionId: null
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.connection = (this as any).os.streams.requestsStream.getConnection();
|
||||
this.connectionId = (this as any).os.streams.requestsStream.use();
|
||||
this.connection.on('request', this.onRequest);
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.connection.off('request', this.onRequest);
|
||||
(this as any).os.streams.requestsStream.dispose(this.connectionId);
|
||||
},
|
||||
methods: {
|
||||
onRequest(request) {
|
||||
const random = seedrandom(request.ip);
|
||||
const r = Math.floor(random() * 255);
|
||||
const g = Math.floor(random() * 255);
|
||||
const b = Math.floor(random() * 255);
|
||||
const luma = (0.2126 * r) + (0.7152 * g) + (0.0722 * b); // SMPTE C, Rec. 709 weightings
|
||||
request.bg = `rgb(${r}, ${g}, ${b})`;
|
||||
request.fg = luma >= 165 ? '#000' : '#fff';
|
||||
|
||||
this.requests.push(request);
|
||||
if (this.requests.length > 30) this.requests.shift();
|
||||
|
||||
(this.$refs.log as any).scrollTop = (this.$refs.log as any).scrollHeight;
|
||||
},
|
||||
func() {
|
||||
if (this.props.design == 1) {
|
||||
this.props.design = 0;
|
||||
} else {
|
||||
this.props.design++;
|
||||
}
|
||||
this.save();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" module>
|
||||
.logs
|
||||
max-height 250px
|
||||
overflow auto
|
||||
|
||||
> p
|
||||
margin 0
|
||||
padding 8px
|
||||
font-size 0.8em
|
||||
color #555
|
||||
|
||||
&:nth-child(odd)
|
||||
background rgba(#000, 0.025)
|
||||
|
||||
> b
|
||||
margin-right 4px
|
||||
|
||||
.ip
|
||||
margin-right 4px
|
||||
padding 0 4px
|
||||
|
||||
</style>
|
@ -14,7 +14,7 @@
|
||||
</svg>
|
||||
</div>
|
||||
<p class="fetching" v-if="fetching">%i18n:@fetching%<mk-ellipsis/></p>
|
||||
<h1 v-if="!fetching">{{ broadcasts.length == 0 ? '%i18n:!@no-broadcasts%' : broadcasts[i].title }}</h1>
|
||||
<h1 v-if="!fetching">{{ broadcasts.length == 0 ? '%i18n:@no-broadcasts%' : broadcasts[i].title }}</h1>
|
||||
<p v-if="!fetching">
|
||||
<span v-if="broadcasts.length != 0" v-html="broadcasts[i].text"></span>
|
||||
<template v-if="broadcasts.length == 0">%i18n:@have-a-nice-day%</template>
|
||||
|
@ -1,9 +1,7 @@
|
||||
<template>
|
||||
<div class="mkw-calendar"
|
||||
:data-melt="props.design == 1"
|
||||
:data-special="special"
|
||||
:data-mobile="isMobile"
|
||||
>
|
||||
<div class="mkw-calendar" :data-special="special" :data-mobile="isMobile">
|
||||
<mk-widget-container :naked="props.design == 1" :show-header="false">
|
||||
<div class="mkw-calendar--body">
|
||||
<div class="calendar" :data-is-holiday="isHoliday">
|
||||
<p class="month-and-year">
|
||||
<span class="year">{{ year }}年</span>
|
||||
@ -33,6 +31,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</mk-widget-container>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
@ -111,23 +111,12 @@ export default define({
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
padding 16px 0
|
||||
color isDark ? #c5ced6 :#777
|
||||
background isDark ? #282C37 : #fff
|
||||
border solid 1px rgba(#000, 0.075)
|
||||
border-radius 6px
|
||||
|
||||
&[data-special='on-new-years-day']
|
||||
border-color #ef95a0
|
||||
|
||||
&[data-melt]
|
||||
background transparent
|
||||
border none
|
||||
|
||||
&[data-mobile]
|
||||
border none
|
||||
border-radius 8px
|
||||
box-shadow 0 0 0 1px rgba(#000, 0.2)
|
||||
.mkw-calendar--body
|
||||
padding 16px 0
|
||||
color isDark ? #c5ced6 : #777
|
||||
|
||||
&:after
|
||||
content ""
|
||||
|
@ -3,9 +3,9 @@
|
||||
<article>
|
||||
<h1>%fa:heart%%i18n:@title%</h1>
|
||||
<p>
|
||||
{{ '%i18n:!@text%'.substr(0, '%i18n:!@text%'.indexOf('{')) }}
|
||||
{{ '%i18n:@text%'.substr(0, '%i18n:@text%'.indexOf('{')) }}
|
||||
<a href="https://syuilo.com">@syuilo</a>
|
||||
{{ '%i18n:!@text%'.substr('%i18n:!@text%'.indexOf('}') + 1) }}
|
||||
{{ '%i18n:@text%'.substr('%i18n:@text%'.indexOf('}') + 1) }}
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
|
@ -1,6 +1,5 @@
|
||||
import Vue from 'vue';
|
||||
|
||||
import wAccessLog from './access-log.vue';
|
||||
import wVersion from './version.vue';
|
||||
import wRss from './rss.vue';
|
||||
import wServer from './server.vue';
|
||||
@ -22,4 +21,3 @@ Vue.component('mkw-broadcast', wBroadcast);
|
||||
Vue.component('mkw-server', wServer);
|
||||
Vue.component('mkw-rss', wRss);
|
||||
Vue.component('mkw-version', wVersion);
|
||||
Vue.component('mkw-access-log', wAccessLog);
|
||||
|
@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="mkw-rss" :data-mobile="isMobile">
|
||||
<div class="mkw-rss">
|
||||
<mk-widget-container :show-header="!props.compact">
|
||||
<template slot="header">%fa:rss-square%RSS</template>
|
||||
<button slot="func" title="設定" @click="setting">%fa:cog%</button>
|
||||
|
||||
<div class="mkw-rss--body">
|
||||
<div class="mkw-rss--body" :data-mobile="isMobile">
|
||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<div class="feed" v-else>
|
||||
<a v-for="item in items" :href="item.link" target="_blank">{{ item.title }}</a>
|
||||
@ -85,15 +85,17 @@ root(isDark)
|
||||
margin-right 4px
|
||||
|
||||
&[data-mobile]
|
||||
background isDark ? #21242f : #f3f3f3
|
||||
|
||||
.feed
|
||||
padding 0
|
||||
font-size 1em
|
||||
|
||||
> a
|
||||
padding 8px 16px
|
||||
border-bottom none
|
||||
|
||||
&:nth-child(even)
|
||||
background rgba(#000, 0.05)
|
||||
background isDark ? rgba(#000, 0.05) : rgba(#fff, 0.7)
|
||||
|
||||
.mkw-rss[data-darkmode]
|
||||
root(true)
|
||||
|
@ -8,6 +8,7 @@ declare const _STATS_URL_: string;
|
||||
declare const _STATUS_URL_: string;
|
||||
declare const _DEV_URL_: string;
|
||||
declare const _LANG_: string;
|
||||
declare const _LANGS_: string;
|
||||
declare const _RECAPTCHA_SITEKEY_: string;
|
||||
declare const _SW_PUBLICKEY_: string;
|
||||
declare const _THEME_COLOR_: string;
|
||||
@ -27,6 +28,7 @@ export const statsUrl = _STATS_URL_;
|
||||
export const statusUrl = _STATUS_URL_;
|
||||
export const devUrl = _DEV_URL_;
|
||||
export const lang = _LANG_;
|
||||
export const langs = _LANGS_;
|
||||
export const recaptchaSitekey = _RECAPTCHA_SITEKEY_;
|
||||
export const swPublickey = _SW_PUBLICKEY_;
|
||||
export const themeColor = _THEME_COLOR_;
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<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
|
||||
:points="pointsNote"
|
||||
fill="none"
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="mk-calendar" :data-melt="design == 4 || design == 5">
|
||||
<template v-if="design == 0 || design == 1">
|
||||
<button @click="prev" title="%i18n:@prev%">%fa:chevron-circle-left%</button>
|
||||
<p class="title">{{ '%i18n:!@title%'.replace('{1}', year).replace('{2}', month) }}</p>
|
||||
<p class="title">{{ '%i18n:@title%'.replace('{1}', year).replace('{2}', month) }}</p>
|
||||
<button @click="next" title="%i18n:@next%">%fa:chevron-circle-right%</button>
|
||||
</template>
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
:data-is-out-of-range="isOutOfRange(i + 1)"
|
||||
:data-is-donichi="isDonichi(i + 1)"
|
||||
@click="go(i + 1)"
|
||||
:title="isOutOfRange(i + 1) ? null : '%i18n:!@go%'"
|
||||
:title="isOutOfRange(i + 1) ? null : '%i18n:@go%'"
|
||||
>
|
||||
<div>{{ i + 1 }}</div>
|
||||
</div>
|
||||
@ -58,13 +58,13 @@ export default Vue.extend({
|
||||
month: new Date().getMonth() + 1,
|
||||
selected: new Date(),
|
||||
weekdayText: [
|
||||
'%i18n:!common.weekday-short.sunday%',
|
||||
'%i18n:!common.weekday-short.monday%',
|
||||
'%i18n:!common.weekday-short.tuesday%',
|
||||
'%i18n:!common.weekday-short.wednesday%',
|
||||
'%i18n:!common.weekday-short.thursday%',
|
||||
'%i18n:!common.weekday-short.friday%',
|
||||
'%i18n:!common.weekday-short.saturday%'
|
||||
'%i18n:common.weekday-short.sunday%',
|
||||
'%i18n:common.weekday-short.monday%',
|
||||
'%i18n:common.weekday-short.tuesday%',
|
||||
'%i18n:common.weekday-short.wednesday%',
|
||||
'%i18n:common.weekday-short.thursday%',
|
||||
'%i18n:common.weekday-short.friday%',
|
||||
'%i18n:common.weekday-short.saturday%'
|
||||
]
|
||||
};
|
||||
},
|
||||
|
@ -2,7 +2,7 @@
|
||||
<mk-window ref="window" is-modal width="800px" height="500px" @closed="$destroy">
|
||||
<span slot="header">
|
||||
<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>
|
||||
|
||||
<mk-drive
|
||||
@ -13,9 +13,9 @@
|
||||
@change-selection="onChangeSelection"
|
||||
/>
|
||||
<div :class="$style.footer">
|
||||
<button :class="$style.upload" title="PCからドライブにファイルをアップロード" @click="upload">%fa:upload%</button>
|
||||
<button :class="$style.cancel" @click="cancel">キャンセル</button>
|
||||
<button :class="$style.ok" :disabled="multiple && files.length == 0" @click="ok">決定</button>
|
||||
<button :class="$style.upload" title="%i18n:@upload%" @click="upload">%fa:upload%</button>
|
||||
<button :class="$style.cancel" @click="cancel">%i18n:@cancel%</button>
|
||||
<button :class="$style.ok" :disabled="multiple && files.length == 0" @click="ok">%i18n:@ok%</button>
|
||||
</div>
|
||||
</mk-window>
|
||||
</template>
|
||||
@ -28,7 +28,7 @@ export default Vue.extend({
|
||||
default: false
|
||||
},
|
||||
title: {
|
||||
default: '%fa:R file%ファイルを選択'
|
||||
default: '%fa:R file%%i18n:@choose-prompt%s'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@ -177,4 +177,3 @@ export default Vue.extend({
|
||||
border-color #dcdcdc
|
||||
|
||||
</style>
|
||||
|
||||
|
@ -10,8 +10,8 @@
|
||||
:multiple="false"
|
||||
/>
|
||||
<div :class="$style.footer">
|
||||
<button :class="$style.cancel" @click="cancel">キャンセル</button>
|
||||
<button :class="$style.ok" @click="ok">決定</button>
|
||||
<button :class="$style.cancel" @click="cancel">%i18n:@cancel%</button>
|
||||
<button :class="$style.ok" @click="ok">%i18n:@ok%</button>
|
||||
</div>
|
||||
</mk-window>
|
||||
</template>
|
||||
@ -21,7 +21,7 @@ import Vue from 'vue';
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
title: {
|
||||
default: '%fa:R folder%フォルダを選択'
|
||||
default: '%fa:R folder%%i18n:@choose-prompt%'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -10,9 +10,9 @@
|
||||
/>
|
||||
</div>
|
||||
<div :class="$style.actions">
|
||||
<button :class="$style.skip" @click="skip">クロップをスキップ</button>
|
||||
<button :class="$style.cancel" @click="cancel">キャンセル</button>
|
||||
<button :class="$style.ok" @click="ok">決定</button>
|
||||
<button :class="$style.skip" @click="skip">%i18n:@skip%</button>
|
||||
<button :class="$style.cancel" @click="cancel">%i18n:@cancel%</button>
|
||||
<button :class="$style.ok" @click="ok">%i18n:@ok%</button>
|
||||
</div>
|
||||
</mk-window>
|
||||
</template>
|
||||
|
@ -50,7 +50,7 @@ export default Vue.extend({
|
||||
return `${this.file.name}\n${this.file.type} ${Vue.filter('bytes')(this.file.datasize)}`;
|
||||
},
|
||||
background(): string {
|
||||
return this.file.properties.avgColor
|
||||
return this.file.properties.avgColor && this.file.properties.avgColor.length == 3
|
||||
? `rgb(${this.file.properties.avgColor.join(',')})`
|
||||
: 'transparent';
|
||||
}
|
||||
@ -64,46 +64,46 @@ export default Vue.extend({
|
||||
this.isContextmenuShowing = true;
|
||||
contextmenu(e, [{
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.rename%',
|
||||
text: '%i18n:@contextmenu.rename%',
|
||||
icon: '%fa:i-cursor%',
|
||||
onClick: this.rename
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.copy-url%',
|
||||
text: '%i18n:@contextmenu.copy-url%',
|
||||
icon: '%fa:link%',
|
||||
onClick: this.copyUrl
|
||||
}, {
|
||||
type: 'link',
|
||||
href: `${this.file.url}?download`,
|
||||
text: '%i18n:!@contextmenu.download%',
|
||||
text: '%i18n:@contextmenu.download%',
|
||||
icon: '%fa:download%',
|
||||
}, {
|
||||
type: 'divider',
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:!common.delete%',
|
||||
text: '%i18n:common.delete%',
|
||||
icon: '%fa:R trash-alt%',
|
||||
onClick: this.deleteFile
|
||||
}, {
|
||||
type: 'divider',
|
||||
}, {
|
||||
type: 'nest',
|
||||
text: '%i18n:!@contextmenu.else-files%',
|
||||
text: '%i18n:@contextmenu.else-files%',
|
||||
menu: [{
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.set-as-avatar%',
|
||||
text: '%i18n:@contextmenu.set-as-avatar%',
|
||||
onClick: this.setAsAvatar
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.set-as-banner%',
|
||||
text: '%i18n:@contextmenu.set-as-banner%',
|
||||
onClick: this.setAsBanner
|
||||
}]
|
||||
}, {
|
||||
type: 'nest',
|
||||
text: '%i18n:!@contextmenu.open-in-app%',
|
||||
text: '%i18n:@contextmenu.open-in-app%',
|
||||
menu: [{
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.add-app%...',
|
||||
text: '%i18n:@contextmenu.add-app%...',
|
||||
onClick: this.addApp
|
||||
}]
|
||||
}], {
|
||||
@ -129,7 +129,7 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
onThumbnailLoaded() {
|
||||
if (this.file.properties.avgColor) {
|
||||
if (this.file.properties.avgColor && this.file.properties.avgColor.length == 3) {
|
||||
anime({
|
||||
targets: this.$refs.thumbnail,
|
||||
backgroundColor: `rgba(${this.file.properties.avgColor.join(',')}, 0)`,
|
||||
@ -141,8 +141,8 @@ export default Vue.extend({
|
||||
|
||||
rename() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:!@contextmenu.rename-file%',
|
||||
placeholder: '%i18n:!@contextmenu.input-new-file-name%',
|
||||
title: '%i18n:@contextmenu.rename-file%',
|
||||
placeholder: '%i18n:@contextmenu.input-new-file-name%',
|
||||
default: this.file.name,
|
||||
allowEmpty: false
|
||||
}).then(name => {
|
||||
@ -157,9 +157,9 @@ export default Vue.extend({
|
||||
copyToClipboard(this.file.url);
|
||||
(this as any).apis.dialog({
|
||||
title: '%fa:check%%i18n:@contextmenu.copied%',
|
||||
text: '%i18n:!@contextmenu.copied-url-to-clipboard%',
|
||||
text: '%i18n:@contextmenu.copied-url-to-clipboard%',
|
||||
actions: [{
|
||||
text: '%i18n:!common.ok%'
|
||||
text: '%i18n:common.ok%'
|
||||
}]
|
||||
});
|
||||
},
|
||||
|
@ -54,26 +54,26 @@ export default Vue.extend({
|
||||
this.isContextmenuShowing = true;
|
||||
contextmenu(e, [{
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.move-to-this-folder%',
|
||||
text: '%i18n:@contextmenu.move-to-this-folder%',
|
||||
icon: '%fa:arrow-right%',
|
||||
onClick: this.go
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.show-in-new-window%',
|
||||
text: '%i18n:@contextmenu.show-in-new-window%',
|
||||
icon: '%fa:R window-restore%',
|
||||
onClick: this.newWindow
|
||||
}, {
|
||||
type: 'divider',
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.rename%',
|
||||
text: '%i18n:@contextmenu.rename%',
|
||||
icon: '%fa:i-cursor%',
|
||||
onClick: this.rename
|
||||
}, {
|
||||
type: 'divider',
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:!common.delete%',
|
||||
text: '%i18n:common.delete%',
|
||||
icon: '%fa:R trash-alt%',
|
||||
onClick: this.deleteFolder
|
||||
}], {
|
||||
@ -159,15 +159,15 @@ export default Vue.extend({
|
||||
switch (err) {
|
||||
case 'detected-circular-definition':
|
||||
(this as any).apis.dialog({
|
||||
title: '%fa:exclamation-triangle%%i18n:!@unable-to-process%',
|
||||
text: '%i18n:!@circular-reference-detected%',
|
||||
title: '%fa:exclamation-triangle%%i18n:@unable-to-process%',
|
||||
text: '%i18n:@circular-reference-detected%',
|
||||
actions: [{
|
||||
text: '%i18n:!common.ok%'
|
||||
text: '%i18n:common.ok%'
|
||||
}]
|
||||
});
|
||||
break;
|
||||
default:
|
||||
alert('%i18n:!@unhandled-error% ' + err);
|
||||
alert('%i18n:@unhandled-error% ' + err);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -199,8 +199,8 @@ export default Vue.extend({
|
||||
|
||||
rename() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:!@contextmenu.rename-folder%',
|
||||
placeholder: '%i18n:!@contextmenu.input-new-folder-name%',
|
||||
title: '%i18n:@contextmenu.rename-folder%',
|
||||
placeholder: '%i18n:@contextmenu.input-new-folder-name%',
|
||||
default: this.folder.name
|
||||
}).then(name => {
|
||||
(this as any).api('drive/folders/update', {
|
||||
|
@ -8,7 +8,7 @@
|
||||
@drop.stop="onDrop"
|
||||
>
|
||||
<template v-if="folder == null">%fa:cloud%</template>
|
||||
<span>{{ folder == null ? '%i18n:!@drive%' : folder.name }}</span>
|
||||
<span>{{ folder == null ? '%i18n:@drive%' : folder.name }}</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -138,17 +138,17 @@ export default Vue.extend({
|
||||
onContextmenu(e) {
|
||||
contextmenu(e, [{
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.create-folder%',
|
||||
text: '%i18n:@contextmenu.create-folder%',
|
||||
icon: '%fa:R folder%',
|
||||
onClick: this.createFolder
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.upload%',
|
||||
text: '%i18n:@contextmenu.upload%',
|
||||
icon: '%fa:upload%',
|
||||
onClick: this.selectLocalFile
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:!@contextmenu.url-upload%',
|
||||
text: '%i18n:@contextmenu.url-upload%',
|
||||
icon: '%fa:cloud-upload-alt%',
|
||||
onClick: this.urlUpload
|
||||
}]);
|
||||
@ -306,15 +306,15 @@ export default Vue.extend({
|
||||
switch (err) {
|
||||
case 'detected-circular-definition':
|
||||
(this as any).apis.dialog({
|
||||
title: '%fa:exclamation-triangle%%i18n:!@unable-to-process%',
|
||||
text: '%i18n:!@circular-reference-detected%',
|
||||
title: '%fa:exclamation-triangle%%i18n:@unable-to-process%',
|
||||
text: '%i18n:@circular-reference-detected%',
|
||||
actions: [{
|
||||
text: '%i18n:!common.ok%'
|
||||
text: '%i18n:common.ok%'
|
||||
}]
|
||||
});
|
||||
break;
|
||||
default:
|
||||
alert('%i18n:!@unhandled-error% ' + err);
|
||||
alert('%i18n:@unhandled-error% ' + err);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -327,8 +327,8 @@ export default Vue.extend({
|
||||
|
||||
urlUpload() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:!@url-upload%',
|
||||
placeholder: '%i18n:!@url-of-file%'
|
||||
title: '%i18n:@url-upload%',
|
||||
placeholder: '%i18n:@url-of-file%'
|
||||
}).then(url => {
|
||||
(this as any).api('drive/files/upload_from_url', {
|
||||
url: url,
|
||||
@ -337,9 +337,9 @@ export default Vue.extend({
|
||||
|
||||
(this as any).apis.dialog({
|
||||
title: '%fa:check%%i18n:@url-upload-requested%',
|
||||
text: '%i18n:!@may-take-time%',
|
||||
text: '%i18n:@may-take-time%',
|
||||
actions: [{
|
||||
text: '%i18n:!common.ok%'
|
||||
text: '%i18n:common.ok%'
|
||||
}]
|
||||
});
|
||||
});
|
||||
@ -347,8 +347,8 @@ export default Vue.extend({
|
||||
|
||||
createFolder() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:!@create-folder%',
|
||||
placeholder: '%i18n:!@folder-name%'
|
||||
title: '%i18n:@create-folder%',
|
||||
placeholder: '%i18n:@folder-name%'
|
||||
}).then(name => {
|
||||
(this as any).api('drive/folders/create', {
|
||||
name: name,
|
||||
|
@ -3,15 +3,15 @@
|
||||
:class="{ wait, follow: !user.isFollowing, unfollow: user.isFollowing, big: size == 'big' }"
|
||||
@click="onClick"
|
||||
:disabled="wait"
|
||||
:title="user.isFollowing ? 'フォロー解除' : 'フォローする'"
|
||||
:title="user.isFollowing ? '%i18n:@unfollow%' : '%i18n:@follow%'"
|
||||
>
|
||||
<template v-if="!wait && user.isFollowing">
|
||||
<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 v-if="!wait && !user.isFollowing">
|
||||
<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 v-if="wait">%fa:spinner .pulse .fw%</template>
|
||||
</button>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<mk-window width="400px" height="550px" @closed="$destroy">
|
||||
<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>
|
||||
<mk-followers :user="user"/>
|
||||
</mk-window>
|
||||
|
@ -4,7 +4,7 @@
|
||||
:count="user.followersCount"
|
||||
:you-know-count="user.followersYouKnowCount"
|
||||
>
|
||||
フォロワーはいないようです。
|
||||
%i18n:@empty%
|
||||
</mk-users-list>
|
||||
</template>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<mk-window width="400px" height="550px" @closed="$destroy">
|
||||
<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>
|
||||
<mk-following :user="user"/>
|
||||
</mk-window>
|
||||
|
@ -4,7 +4,7 @@
|
||||
:count="user.followingCount"
|
||||
:you-know-count="user.followingYouKnowCount"
|
||||
>
|
||||
フォロー中のユーザーはいないようです。
|
||||
%i18n:@empty%
|
||||
</mk-users-list>
|
||||
</template>
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<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="user" v-for="user in users" :key="user.id">
|
||||
<mk-avatar class="avatar" :user="user" target="_blank"/>
|
||||
@ -11,10 +11,10 @@
|
||||
<mk-follow-button :user="user"/>
|
||||
</div>
|
||||
</div>
|
||||
<p class="empty" v-if="!fetching && users.length == 0">おすすめのユーザーは見つかりませんでした。</p>
|
||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p>
|
||||
<a class="refresh" @click="refresh">もっと見る</a>
|
||||
<button class="close" @click="$destroy()" title="閉じる">%fa:times%</button>
|
||||
<p class="empty" v-if="!fetching && users.length == 0">%i18n:@empty%</p>
|
||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:@fetching%<mk-ellipsis/></p>
|
||||
<a class="refresh" @click="refresh">%i18n:@refresh%</a>
|
||||
<button class="close" @click="$destroy()" title="%i18n:@close%">%fa:times%</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<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-window>
|
||||
</template>
|
||||
|
@ -1,34 +1,32 @@
|
||||
<template>
|
||||
<div class="mk-home" :data-customize="customize">
|
||||
<div class="customize" v-if="customize">
|
||||
<router-link to="/">%fa:check%完了</router-link>
|
||||
<router-link to="/">%fa:check%%i18n:@done%</router-link>
|
||||
<div>
|
||||
<div class="adder">
|
||||
<p>ウィジェットを追加:</p>
|
||||
<p>%i18n:@add-widget%</p>
|
||||
<select v-model="widgetAdderSelected">
|
||||
<option value="profile">プロフィール</option>
|
||||
<option value="calendar">カレンダー</option>
|
||||
<option value="timemachine">カレンダー(タイムマシン)</option>
|
||||
<option value="activity">アクティビティ</option>
|
||||
<option value="rss">RSSリーダー</option>
|
||||
<option value="trends">トレンド</option>
|
||||
<option value="photo-stream">フォトストリーム</option>
|
||||
<option value="slideshow">スライドショー</option>
|
||||
<option value="version">バージョン</option>
|
||||
<option value="broadcast">ブロードキャスト</option>
|
||||
<option value="notifications">通知</option>
|
||||
<option value="users">おすすめユーザー</option>
|
||||
<option value="polls">投票</option>
|
||||
<option value="post-form">投稿フォーム</option>
|
||||
<option value="messaging">メッセージ</option>
|
||||
<option value="channel">チャンネル</option>
|
||||
<option value="access-log">アクセスログ</option>
|
||||
<option value="server">サーバー情報</option>
|
||||
<option value="donation">寄付のお願い</option>
|
||||
<option value="nav">ナビゲーション</option>
|
||||
<option value="tips">ヒント</option>
|
||||
<option value="profile">%i18n:@profile%</option>
|
||||
<option value="calendar">%i18n:@calendar%</option>
|
||||
<option value="timemachine">%i18n:@timemachine%</option>
|
||||
<option value="activity">%i18n:@activity%</option>
|
||||
<option value="rss">%i18n:@rss%</option>
|
||||
<option value="trends">%i18n:@trends%</option>
|
||||
<option value="photo-stream">%i18n:@photo-stream%</option>
|
||||
<option value="slideshow">%i18n:@slideshow%</option>
|
||||
<option value="version">%i18n:@version%</option>
|
||||
<option value="broadcast">%i18n:@broadcast%</option>
|
||||
<option value="notifications">%i18n:@notifications%</option>
|
||||
<option value="users">%i18n:@users%</option>
|
||||
<option value="polls">%i18n:@polls%</option>
|
||||
<option value="post-form">%i18n:@post-form%</option>
|
||||
<option value="messaging">%i18n:@messaging%</option>
|
||||
<option value="server">%i18n:@server%</option>
|
||||
<option value="donation">%i18n:@donation%</option>
|
||||
<option value="nav">%i18n:@nav%</option>
|
||||
<option value="tips">%i18n:@tips%</option>
|
||||
</select>
|
||||
<button @click="addWidget">追加</button>
|
||||
<button @click="addWidget">%i18n:@add%</button>
|
||||
</div>
|
||||
<div class="trash">
|
||||
<x-draggable v-model="trash" :options="{ group: 'x' }" @add="onTrash"></x-draggable>
|
||||
@ -104,7 +102,7 @@ export default Vue.extend({
|
||||
|
||||
computed: {
|
||||
home(): any[] {
|
||||
return this.$store.state.settings.data.home;
|
||||
return this.$store.state.settings.home;
|
||||
},
|
||||
left(): any[] {
|
||||
return this.home.filter(w => w.place == 'left');
|
||||
|
@ -8,8 +8,8 @@
|
||||
<input ref="text" v-model="text" :type="type" @keydown="onKeydown" :placeholder="placeholder"/>
|
||||
</div>
|
||||
<div :class="$style.actions">
|
||||
<button :class="$style.cancel" @click="cancel">キャンセル</button>
|
||||
<button :class="$style.ok" :disabled="!allowEmpty && text.length == 0" @click="ok">決定</button>
|
||||
<button :class="$style.cancel" @click="cancel">%i18n:@cancel%</button>
|
||||
<button :class="$style.ok" :disabled="!allowEmpty && text.length == 0" @click="ok">%i18n:@ok%</button>
|
||||
</div>
|
||||
</mk-window>
|
||||
</template>
|
||||
|
@ -26,7 +26,7 @@ export default Vue.extend({
|
||||
computed: {
|
||||
style(): any {
|
||||
return {
|
||||
'background-color': this.image.properties.avgColor ? `rgb(${this.image.properties.avgColor.join(',')})` : 'transparent',
|
||||
'background-color': this.image.properties.avgColor && this.image.properties.avgColor.length == 3 ? `rgb(${this.image.properties.avgColor.join(',')})` : 'transparent',
|
||||
'background-image': this.raw ? `url(${this.image.url})` : `url(${this.image.url}?thumbnail&size=512)`
|
||||
};
|
||||
}
|
||||
|
@ -1,125 +0,0 @@
|
||||
<template>
|
||||
<div class="mk-mentions">
|
||||
<header>
|
||||
<span :data-active="mode == 'all'" @click="mode = 'all'">すべて</span>
|
||||
<span :data-active="mode == 'following'" @click="mode = 'following'">フォロー中</span>
|
||||
</header>
|
||||
<div class="fetching" v-if="fetching">
|
||||
<mk-ellipsis-icon/>
|
||||
</div>
|
||||
<p class="empty" v-if="notes.length == 0 && !fetching">
|
||||
%fa:R comments%
|
||||
<span v-if="mode == 'all'">あなた宛ての投稿はありません。</span>
|
||||
<span v-if="mode == 'following'">あなたがフォローしているユーザーからの言及はありません。</span>
|
||||
</p>
|
||||
<mk-notes :notes="notes" ref="timeline"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
export default Vue.extend({
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
moreFetching: false,
|
||||
mode: 'all',
|
||||
notes: []
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
mode() {
|
||||
this.fetch();
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.addEventListener('keydown', this.onDocumentKeydown);
|
||||
window.addEventListener('scroll', this.onScroll);
|
||||
|
||||
this.fetch(() => this.$emit('loaded'));
|
||||
},
|
||||
beforeDestroy() {
|
||||
document.removeEventListener('keydown', this.onDocumentKeydown);
|
||||
window.removeEventListener('scroll', this.onScroll);
|
||||
},
|
||||
methods: {
|
||||
onDocumentKeydown(e) {
|
||||
if (e.target.tagName != 'INPUT' && e.target.tagName != 'TEXTAREA') {
|
||||
if (e.which == 84) { // t
|
||||
(this.$refs.timeline as any).focus();
|
||||
}
|
||||
}
|
||||
},
|
||||
onScroll() {
|
||||
const current = window.scrollY + window.innerHeight;
|
||||
if (current > document.body.offsetHeight - 8) this.more();
|
||||
},
|
||||
fetch(cb?) {
|
||||
this.fetching = true;
|
||||
this.notes = [];
|
||||
(this as any).api('notes/mentions', {
|
||||
following: this.mode == 'following'
|
||||
}).then(notes => {
|
||||
this.notes = notes;
|
||||
this.fetching = false;
|
||||
if (cb) cb();
|
||||
});
|
||||
},
|
||||
more() {
|
||||
if (this.moreFetching || this.fetching || this.notes.length == 0) return;
|
||||
this.moreFetching = true;
|
||||
(this as any).api('notes/mentions', {
|
||||
following: this.mode == 'following',
|
||||
untilId: this.notes[this.notes.length - 1].id
|
||||
}).then(notes => {
|
||||
this.notes = this.notes.concat(notes);
|
||||
this.moreFetching = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
.mk-mentions
|
||||
background #fff
|
||||
border solid 1px rgba(#000, 0.075)
|
||||
border-radius 6px
|
||||
|
||||
> header
|
||||
padding 8px 16px
|
||||
border-bottom solid 1px #eee
|
||||
|
||||
> span
|
||||
margin-right 16px
|
||||
line-height 27px
|
||||
font-size 18px
|
||||
color #555
|
||||
|
||||
&:not([data-active])
|
||||
color $theme-color
|
||||
cursor pointer
|
||||
|
||||
&:hover
|
||||
text-decoration underline
|
||||
|
||||
> .fetching
|
||||
padding 64px 0
|
||||
|
||||
> .empty
|
||||
display block
|
||||
margin 0 auto
|
||||
padding 32px
|
||||
max-width 400px
|
||||
text-align center
|
||||
color #999
|
||||
|
||||
> [data-fa]
|
||||
display block
|
||||
margin-bottom 16px
|
||||
font-size 3em
|
||||
color #ccc
|
||||
|
||||
</style>
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<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-window>
|
||||
</template>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<header>
|
||||
<div class="left">
|
||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</router-link>
|
||||
<span class="username">@{{ note.user | acct }}</span>
|
||||
<span class="username"><mk-acct :user="note.user"/></span>
|
||||
</div>
|
||||
<div class="right">
|
||||
<router-link class="time" :to="note | notePage">
|
||||
@ -15,7 +15,7 @@
|
||||
</header>
|
||||
<div class="body">
|
||||
<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"/>
|
||||
</div>
|
||||
<div class="media" v-if="note.mediaIds.length > 0">
|
||||
|
@ -3,7 +3,7 @@
|
||||
<button
|
||||
class="read-more"
|
||||
v-if="p.reply && p.reply.replyId && context.length == 0"
|
||||
title="会話をもっと読み込む"
|
||||
title="%i18n:@more%"
|
||||
@click="fetchContext"
|
||||
:disabled="contextFetching"
|
||||
>
|
||||
@ -21,21 +21,21 @@
|
||||
<mk-avatar class="avatar" :user="note.user"/>
|
||||
%fa:retweet%
|
||||
<router-link class="name" :href="note.user | userPage">{{ note.user | userName }}</router-link>
|
||||
がRenote
|
||||
%i18n:@is-renote%
|
||||
</p>
|
||||
</div>
|
||||
<article>
|
||||
<mk-avatar class="avatar" :user="p.user"/>
|
||||
<header>
|
||||
<router-link class="name" :to="p.user | userPage" v-user-preview="p.user.id">{{ p.user | userName }}</router-link>
|
||||
<span class="username">@{{ p.user | acct }}</span>
|
||||
<span class="username"><mk-acct :user="p.user"/></span>
|
||||
<router-link class="time" :to="p | notePage">
|
||||
<mk-time :time="p.createdAt"/>
|
||||
</router-link>
|
||||
</header>
|
||||
<div class="body">
|
||||
<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"/>
|
||||
</div>
|
||||
<div class="media" v-if="p.media.length > 0">
|
||||
@ -46,7 +46,7 @@
|
||||
<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>
|
||||
</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="renote" v-if="p.renote">
|
||||
<mk-note-preview :note="p.renote"/>
|
||||
@ -54,15 +54,15 @@
|
||||
</div>
|
||||
<footer>
|
||||
<mk-reactions-viewer :note="p"/>
|
||||
<button @click="reply" title="返信">
|
||||
<button @click="reply" title="">
|
||||
<template v-if="p.reply">%fa:reply-all%</template>
|
||||
<template v-else>%fa:reply%</template>
|
||||
<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
||||
</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>
|
||||
</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>
|
||||
</button>
|
||||
<button @click="menu" ref="menuButton">
|
||||
|
@ -4,7 +4,7 @@
|
||||
<div class="main">
|
||||
<header>
|
||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</router-link>
|
||||
<span class="username">@{{ note.user | acct }}</span>
|
||||
<span class="username"><mk-acct :user="note.user"/></span>
|
||||
<router-link class="time" :to="note | notePage">
|
||||
<mk-time :time="note.createdAt"/>
|
||||
</router-link>
|
||||
@ -59,17 +59,20 @@ root(isDark)
|
||||
> .name
|
||||
margin 0 .5em 0 0
|
||||
padding 0
|
||||
overflow hidden
|
||||
color isDark ? #fff : #607073
|
||||
font-size 1em
|
||||
font-weight bold
|
||||
text-decoration none
|
||||
white-space normal
|
||||
text-overflow ellipsis
|
||||
|
||||
&:hover
|
||||
text-decoration underline
|
||||
|
||||
> .username
|
||||
margin 0 .5em 0 0
|
||||
overflow hidden
|
||||
text-overflow ellipsis
|
||||
color isDark ? #606984 : #d1d8da
|
||||
|
||||
> .time
|
||||
|
@ -4,7 +4,7 @@
|
||||
<div class="main">
|
||||
<header>
|
||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</router-link>
|
||||
<span class="username">@{{ note.user | acct }}</span>
|
||||
<span class="username"><mk-acct :user="note.user"/></span>
|
||||
<div class="info">
|
||||
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
|
||||
<router-link class="created-at" :to="note | notePage">
|
||||
|
@ -6,9 +6,9 @@
|
||||
<div class="renote" v-if="isRenote">
|
||||
<mk-avatar class="avatar" :user="note.user"/>
|
||||
%fa:retweet%
|
||||
<span>{{ '%i18n:!@reposted-by%'.substr(0, '%i18n:!@reposted-by%'.indexOf('{')) }}</span>
|
||||
<span>{{ '%i18n:@reposted-by%'.substr(0, '%i18n:@reposted-by%'.indexOf('{')) }}</span>
|
||||
<a class="name" :href="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</a>
|
||||
<span>{{ '%i18n:!@reposted-by%'.substr('%i18n:!@reposted-by%'.indexOf('}') + 1) }}</span>
|
||||
<span>{{ '%i18n:@reposted-by%'.substr('%i18n:@reposted-by%'.indexOf('}') + 1) }}</span>
|
||||
<mk-time :time="note.createdAt"/>
|
||||
</div>
|
||||
<article>
|
||||
@ -17,7 +17,7 @@
|
||||
<header>
|
||||
<router-link class="name" :to="p.user | userPage" v-user-preview="p.user.id">{{ p.user | userName }}</router-link>
|
||||
<span class="is-bot" v-if="p.user.host === null && p.user.isBot">bot</span>
|
||||
<span class="username">@{{ p.user | acct }}</span>
|
||||
<span class="username"><mk-acct :user="p.user"/></span>
|
||||
<div class="info">
|
||||
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
|
||||
<span class="mobile" v-if="p.viaMobile">%fa:mobile-alt%</span>
|
||||
@ -33,9 +33,6 @@
|
||||
</div>
|
||||
</header>
|
||||
<div class="body">
|
||||
<p class="channel" v-if="p.channel">
|
||||
<a :href="`${_CH_URL_}/${p.channel.id}`" target="_blank">{{ p.channel.title }}</a>:
|
||||
</p>
|
||||
<p v-if="p.cw != null" class="cw">
|
||||
<span class="text" v-if="p.cw != ''">{{ p.cw }}</span>
|
||||
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '隠す' : 'もっと見る' }}</span>
|
||||
@ -44,7 +41,7 @@
|
||||
<div class="text">
|
||||
<span v-if="p.isHidden" style="opacity: 0.5">(この投稿は非公開です)</span>
|
||||
<a class="reply" v-if="p.reply">%fa:reply%</a>
|
||||
<mk-note-html v-if="p.text" :text="p.text" :i="os.i" :class="$style.text"/>
|
||||
<mk-note-html v-if="p.text && !canHideText(p)" :text="p.text" :i="os.i" :class="$style.text"/>
|
||||
<a class="rp" v-if="p.renote">RP:</a>
|
||||
</div>
|
||||
<div class="media" v-if="p.media.length > 0">
|
||||
@ -94,6 +91,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import dateStringify from '../../../common/scripts/date-stringify';
|
||||
import canHideText from '../../../common/scripts/can-hide-text';
|
||||
import parse from '../../../../../text/parse';
|
||||
|
||||
import MkPostFormWindow from './post-form-window.vue';
|
||||
@ -130,16 +128,17 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
computed: {
|
||||
|
||||
isRenote(): boolean {
|
||||
return (this.note.renote &&
|
||||
this.note.text == null &&
|
||||
this.note.mediaIds.length == 0 &&
|
||||
this.note.poll == null);
|
||||
},
|
||||
|
||||
p(): any {
|
||||
return this.isRenote ? this.note.renote : this.note;
|
||||
},
|
||||
|
||||
reactionsCount(): number {
|
||||
return this.p.reactionCounts
|
||||
? Object.keys(this.p.reactionCounts)
|
||||
@ -147,9 +146,11 @@ export default Vue.extend({
|
||||
.reduce((a, b) => a + b)
|
||||
: 0;
|
||||
},
|
||||
|
||||
title(): string {
|
||||
return dateStringify(this.p.createdAt);
|
||||
},
|
||||
|
||||
urls(): string[] {
|
||||
if (this.p.text) {
|
||||
const ast = parse(this.p.text);
|
||||
@ -205,6 +206,8 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
methods: {
|
||||
canHideText,
|
||||
|
||||
capture(withHandler = false) {
|
||||
if ((this as any).os.isSignedIn) {
|
||||
this.connection.send({
|
||||
@ -214,6 +217,7 @@ export default Vue.extend({
|
||||
if (withHandler) this.connection.on('note-updated', this.onStreamNoteUpdated);
|
||||
}
|
||||
},
|
||||
|
||||
decapture(withHandler = false) {
|
||||
if ((this as any).os.isSignedIn) {
|
||||
this.connection.send({
|
||||
@ -223,9 +227,11 @@ export default Vue.extend({
|
||||
if (withHandler) this.connection.off('note-updated', this.onStreamNoteUpdated);
|
||||
}
|
||||
},
|
||||
|
||||
onStreamConnected() {
|
||||
this.capture();
|
||||
},
|
||||
|
||||
onStreamNoteUpdated(data) {
|
||||
const note = data.note;
|
||||
if (note.id == this.note.id) {
|
||||
@ -234,28 +240,33 @@ export default Vue.extend({
|
||||
this.note.renote = note;
|
||||
}
|
||||
},
|
||||
|
||||
reply() {
|
||||
(this as any).os.new(MkPostFormWindow, {
|
||||
reply: this.p
|
||||
});
|
||||
},
|
||||
|
||||
renote() {
|
||||
(this as any).os.new(MkRenoteFormWindow, {
|
||||
note: this.p
|
||||
});
|
||||
},
|
||||
|
||||
react() {
|
||||
(this as any).os.new(MkReactionPicker, {
|
||||
source: this.$refs.reactButton,
|
||||
note: this.p
|
||||
});
|
||||
},
|
||||
|
||||
menu() {
|
||||
(this as any).os.new(MkNoteMenu, {
|
||||
source: this.$refs.menuButton,
|
||||
note: this.p
|
||||
});
|
||||
},
|
||||
|
||||
onKeydown(e) {
|
||||
let shouldBeCancel = true;
|
||||
|
||||
@ -336,6 +347,7 @@ root(isDark)
|
||||
align-items center
|
||||
padding 16px 32px
|
||||
line-height 28px
|
||||
white-space pre
|
||||
color #9dbb00
|
||||
background isDark ? linear-gradient(to bottom, #314027 0%, #282c37 100%) : linear-gradient(to bottom, #edfde2 0%, #fff 100%)
|
||||
|
||||
@ -559,9 +571,6 @@ root(isDark)
|
||||
.mk-url-preview
|
||||
margin-top 8px
|
||||
|
||||
> .channel
|
||||
margin 0
|
||||
|
||||
> .mk-poll
|
||||
font-size 80%
|
||||
|
||||
|
@ -5,8 +5,8 @@
|
||||
<slot name="empty" v-if="notes.length == 0 && !fetching && requestInitPromise == null"></slot>
|
||||
|
||||
<div v-if="!fetching && requestInitPromise != null">
|
||||
<p>読み込みに失敗しました。</p>
|
||||
<button @click="resolveInitPromise">リトライ</button>
|
||||
<p>%i18n:@error%</p>
|
||||
<button @click="resolveInitPromise">%i18n:@retry%</button>
|
||||
</div>
|
||||
|
||||
<transition-group name="mk-notes" class="transition">
|
||||
@ -145,9 +145,9 @@ export default Vue.extend({
|
||||
this.notes.unshift(note);
|
||||
|
||||
// サウンドを再生する
|
||||
if ((this as any).os.isEnableSounds && !silent) {
|
||||
if (this.$store.state.device.enableSounds && !silent) {
|
||||
const sound = new Audio(`${url}/assets/post.mp3`);
|
||||
sound.volume = localStorage.getItem('soundVolume') ? parseInt(localStorage.getItem('soundVolume'), 10) / 100 : 0.5;
|
||||
sound.volume = this.$store.state.device.soundVolume;
|
||||
sound.play();
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@
|
||||
</transition-group>
|
||||
</div>
|
||||
<button class="more" :class="{ fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" :disabled="fetchingMoreNotifications">
|
||||
<template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:!common.loading%' : '%i18n:!@more%' }}
|
||||
<template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:@more%' }}
|
||||
</button>
|
||||
<p class="empty" v-if="notifications.length == 0 && !fetching">%i18n:@empty%</p>
|
||||
<p class="loading" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
|
@ -4,8 +4,8 @@
|
||||
<span :class="$style.icon" v-if="geo">%fa:map-marker-alt%</span>
|
||||
<span v-if="!reply">%i18n:@note%</span>
|
||||
<span v-if="reply">%i18n:@reply%</span>
|
||||
<span :class="$style.count" v-if="media.length != 0">{{ '%i18n:!@attaches%'.replace('{}', media.length) }}</span>
|
||||
<span :class="$style.count" v-if="uploadings.length != 0">{{ '%i18n:!@uploading-media%'.replace('{}', uploadings.length) }}<mk-ellipsis/></span>
|
||||
<span :class="$style.count" v-if="media.length != 0">{{ '%i18n:@attaches%'.replace('{}', media.length) }}</span>
|
||||
<span :class="$style.count" v-if="uploadings.length != 0">{{ '%i18n:@uploading-media%'.replace('{}', uploadings.length) }}<mk-ellipsis/></span>
|
||||
</span>
|
||||
|
||||
<mk-note-preview v-if="reply" :class="$style.notePreview" :note="reply"/>
|
||||
|
@ -37,7 +37,7 @@
|
||||
<button class="visibility" title="公開範囲" @click="setVisibility" ref="visibilityButton">%fa:lock%</button>
|
||||
<p class="text-count" :class="{ over: text.length > 1000 }">{{ 1000 - text.length }}</p>
|
||||
<button :class="{ posting }" class="submit" :disabled="!canPost" @click="post">
|
||||
{{ posting ? '%i18n:!@posting%' : submitText }}<mk-ellipsis v-if="posting"/>
|
||||
{{ posting ? '%i18n:@posting%' : submitText }}<mk-ellipsis v-if="posting"/>
|
||||
</button>
|
||||
<input ref="file" type="file" accept="image/*" multiple="multiple" tabindex="-1" @change="onChangeFile"/>
|
||||
<div class="dropzone" v-if="draghover"></div>
|
||||
@ -86,18 +86,18 @@ export default Vue.extend({
|
||||
|
||||
placeholder(): string {
|
||||
return this.renote
|
||||
? '%i18n:!@quote-placeholder%'
|
||||
? '%i18n:@quote-placeholder%'
|
||||
: this.reply
|
||||
? '%i18n:!@reply-placeholder%'
|
||||
: '%i18n:!@note-placeholder%';
|
||||
? '%i18n:@reply-placeholder%'
|
||||
: '%i18n:@note-placeholder%';
|
||||
},
|
||||
|
||||
submitText(): string {
|
||||
return this.renote
|
||||
? '%i18n:!@renote%'
|
||||
? '%i18n:@renote%'
|
||||
: this.reply
|
||||
? '%i18n:!@reply%'
|
||||
: '%i18n:!@note%';
|
||||
? '%i18n:@reply%'
|
||||
: '%i18n:@note%';
|
||||
},
|
||||
|
||||
canPost(): boolean {
|
||||
@ -304,16 +304,16 @@ export default Vue.extend({
|
||||
this.deleteDraft();
|
||||
this.$emit('posted');
|
||||
(this as any).apis.notify(this.renote
|
||||
? '%i18n:!@reposted%'
|
||||
? '%i18n:@reposted%'
|
||||
: this.reply
|
||||
? '%i18n:!@replied%'
|
||||
: '%i18n:!@posted%');
|
||||
? '%i18n:@replied%'
|
||||
: '%i18n:@posted%');
|
||||
}).catch(err => {
|
||||
(this as any).apis.notify(this.renote
|
||||
? '%i18n:!@renote-failed%'
|
||||
? '%i18n:@renote-failed%'
|
||||
: this.reply
|
||||
? '%i18n:!@reply-failed%'
|
||||
: '%i18n:!@note-failed%');
|
||||
? '%i18n:@reply-failed%'
|
||||
: '%i18n:@note-failed%');
|
||||
}).then(() => {
|
||||
this.posting = false;
|
||||
});
|
||||
|
@ -2,7 +2,7 @@
|
||||
<mk-window ref="window" :is-modal="false" :can-close="false" width="500px" @closed="$destroy">
|
||||
<span slot="header">{{ title }}<mk-ellipsis/></span>
|
||||
<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>
|
||||
<progress :class="$style.progress"
|
||||
v-if="!isNaN(value) && value < max"
|
||||
|
@ -5,7 +5,7 @@
|
||||
<footer>
|
||||
<a class="quote" v-if="!quote" @click="onQuote">%i18n:@quote%</a>
|
||||
<button class="ui cancel" @click="cancel">%i18n:@cancel%</button>
|
||||
<button class="ui primary ok" @click="ok" :disabled="wait">{{ wait ? '%i18n:!@reposting%' : '%i18n:!@renote%' }}</button>
|
||||
<button class="ui primary ok" @click="ok" :disabled="wait">{{ wait ? '%i18n:@reposting%' : '%i18n:@renote%' }}</button>
|
||||
</footer>
|
||||
</template>
|
||||
<template v-if="quote">
|
||||
@ -32,9 +32,9 @@ export default Vue.extend({
|
||||
renoteId: this.note.id
|
||||
}).then(data => {
|
||||
this.$emit('posted');
|
||||
(this as any).apis.notify('%i18n:!@success%');
|
||||
(this as any).apis.notify('%i18n:@success%');
|
||||
}).catch(err => {
|
||||
(this as any).apis.notify('%i18n:!@failure%');
|
||||
(this as any).apis.notify('%i18n:@failure%');
|
||||
}).then(() => {
|
||||
this.wait = false;
|
||||
});
|
||||
|
@ -34,7 +34,7 @@ export default Vue.extend({
|
||||
methods: {
|
||||
register() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:!@enter-password%',
|
||||
title: '%i18n:@enter-password%',
|
||||
type: 'password'
|
||||
}).then(password => {
|
||||
(this as any).api('i/2fa/register', {
|
||||
@ -47,13 +47,13 @@ export default Vue.extend({
|
||||
|
||||
unregister() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:!@enter-password%',
|
||||
title: '%i18n:@enter-password%',
|
||||
type: 'password'
|
||||
}).then(password => {
|
||||
(this as any).api('i/2fa/unregister', {
|
||||
password: password
|
||||
}).then(() => {
|
||||
(this as any).apis.notify('%i18n:!@unregistered%');
|
||||
(this as any).apis.notify('%i18n:@unregistered%');
|
||||
(this as any).os.i.twoFactorEnabled = false;
|
||||
});
|
||||
});
|
||||
@ -63,10 +63,10 @@ export default Vue.extend({
|
||||
(this as any).api('i/2fa/done', {
|
||||
token: this.token
|
||||
}).then(() => {
|
||||
(this as any).apis.notify('%i18n:!@success%');
|
||||
(this as any).apis.notify('%i18n:@success%');
|
||||
(this as any).os.i.twoFactorEnabled = true;
|
||||
}).catch(() => {
|
||||
(this as any).apis.notify('%i18n:!@failed%');
|
||||
(this as any).apis.notify('%i18n:@failed%');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="root api">
|
||||
<p>Token: <code>{{ os.i.token }}</code></p>
|
||||
<p>%i18n:@token% <code>{{ os.i.token }}</code></p>
|
||||
<p>%i18n:@intro%</p>
|
||||
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:@caution%</p></div>
|
||||
<p>%i18n:@regeneration-of-token%</p>
|
||||
@ -15,7 +15,7 @@ export default Vue.extend({
|
||||
methods: {
|
||||
regenerateToken() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:!@enter-password%',
|
||||
title: '%i18n:@enter-password%',
|
||||
type: 'password'
|
||||
}).then(password => {
|
||||
(this as any).api('i/regenerate_token', {
|
||||
|
@ -11,21 +11,21 @@ export default Vue.extend({
|
||||
methods: {
|
||||
reset() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:!@enter-current-password%',
|
||||
title: '%i18n:@enter-current-password%',
|
||||
type: 'password'
|
||||
}).then(currentPassword => {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:!@enter-new-password%',
|
||||
title: '%i18n:@enter-new-password%',
|
||||
type: 'password'
|
||||
}).then(newPassword => {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:!@enter-new-password-again%',
|
||||
title: '%i18n:@enter-new-password-again%',
|
||||
type: 'password'
|
||||
}).then(newPassword2 => {
|
||||
if (newPassword !== newPassword2) {
|
||||
(this as any).apis.dialog({
|
||||
title: null,
|
||||
text: '%i18n:!@not-match%',
|
||||
text: '%i18n:@not-match%',
|
||||
actions: [{
|
||||
text: 'OK'
|
||||
}]
|
||||
@ -36,7 +36,7 @@ export default Vue.extend({
|
||||
currentPasword: currentPassword,
|
||||
newPassword: newPassword
|
||||
}).then(() => {
|
||||
(this as any).apis.notify('%i18n:!@changed%');
|
||||
(this as any).apis.notify('%i18n:@changed%');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -19,91 +19,89 @@
|
||||
</section>
|
||||
|
||||
<section class="web" v-show="page == 'web'">
|
||||
<h1>動作</h1>
|
||||
<mk-switch v-model="clientSettings.fetchOnScroll" @change="onChangeFetchOnScroll" text="スクロールで自動読み込み">
|
||||
<span>ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。</span>
|
||||
<h1>%i18n:@behaviour%</h1>
|
||||
<mk-switch v-model="clientSettings.fetchOnScroll" @change="onChangeFetchOnScroll" text="%i18n:@fetch-on-scroll%">
|
||||
<span>%i18n:@fetch-on-scroll-desc%</span>
|
||||
</mk-switch>
|
||||
<mk-switch v-model="autoPopout" text="ウィンドウの自動ポップアウト">
|
||||
<span>ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。</span>
|
||||
<mk-switch v-model="autoPopout" text="%i18n:@auto-popout%">
|
||||
<span>%i18n:@auto-popout-desc%</span>
|
||||
</mk-switch>
|
||||
<details>
|
||||
<summary>詳細設定</summary>
|
||||
<mk-switch v-model="apiViaStream" text="ストリームを経由したAPIリクエスト">
|
||||
<span>この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。</span>
|
||||
<summary>%i18n:@advanced%</summary>
|
||||
<mk-switch v-model="apiViaStream" text="%i18n:@api-via-stream%">
|
||||
<span>%i18n:@api-via-stream-desc%</span>
|
||||
</mk-switch>
|
||||
</details>
|
||||
</section>
|
||||
|
||||
<section class="web" v-show="page == 'web'">
|
||||
<h1>デザインと表示</h1>
|
||||
<h1>%i18n:@display%</h1>
|
||||
<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 class="div">
|
||||
<mk-switch v-model="darkmode" text="ダークモード"/>
|
||||
<mk-switch v-model="clientSettings.circleIcons" @change="onChangeCircleIcons" text="円形のアイコンを使用"/>
|
||||
<mk-switch v-model="clientSettings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="ウィンドウのタイトルバーにグラデーションを使用"/>
|
||||
<mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
|
||||
<mk-switch v-model="clientSettings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
|
||||
<mk-switch v-model="clientSettings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
|
||||
</div>
|
||||
<mk-switch v-model="clientSettings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="タイムライン上部に投稿フォームを表示する"/>
|
||||
<mk-switch v-model="clientSettings.showReplyTarget" @change="onChangeShowReplyTarget" text="リプライ先を表示する"/>
|
||||
<mk-switch v-model="clientSettings.showMyRenotes" @change="onChangeShowMyRenotes" text="自分の行ったRenoteをタイムラインに表示する"/>
|
||||
<mk-switch v-model="clientSettings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="Renoteされた自分の投稿をタイムラインに表示する"/>
|
||||
<mk-switch v-model="clientSettings.showMaps" @change="onChangeShowMaps" text="マップの自動展開">
|
||||
<span>位置情報が添付された投稿のマップを自動的に展開します。</span>
|
||||
<mk-switch v-model="clientSettings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
|
||||
<mk-switch v-model="clientSettings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
|
||||
<mk-switch v-model="clientSettings.showMyRenotes" @change="onChangeShowMyRenotes" text="%i18n:@show-my-renotes%"/>
|
||||
<mk-switch v-model="clientSettings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="%i18n:@show-renoted-my-notes%"/>
|
||||
<mk-switch v-model="clientSettings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%">
|
||||
<span>%i18n:@show-maps-desc%</span>
|
||||
</mk-switch>
|
||||
</section>
|
||||
|
||||
<section class="web" v-show="page == 'web'">
|
||||
<h1>サウンド</h1>
|
||||
<mk-switch v-model="enableSounds" text="サウンドを有効にする">
|
||||
<span>投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。</span>
|
||||
<h1>%i18n:@sound%</h1>
|
||||
<mk-switch v-model="enableSounds" text="%i18n:@enable-sounds%">
|
||||
<span>%i18n:@enable-sounds-desc%</span>
|
||||
</mk-switch>
|
||||
<label>ボリューム</label>
|
||||
<label>%i18n:@volume%</label>
|
||||
<el-slider
|
||||
v-model="soundVolume"
|
||||
:show-input="true"
|
||||
:format-tooltip="v => `${v}%`"
|
||||
:format-tooltip="v => `${v * 100}%`"
|
||||
:disabled="!enableSounds"
|
||||
:max="1"
|
||||
:step="0.1"
|
||||
/>
|
||||
<button class="ui button" @click="soundTest">%fa:volume-up% テスト</button>
|
||||
<button class="ui button" @click="soundTest">%fa:volume-up% %i18n:@test%</button>
|
||||
</section>
|
||||
|
||||
<section class="web" v-show="page == 'web'">
|
||||
<h1>モバイル</h1>
|
||||
<mk-switch v-model="clientSettings.disableViaMobile" @change="onChangeDisableViaMobile" text="「モバイルからの投稿」フラグを付けない"/>
|
||||
<h1>%i18n:@mobile%</h1>
|
||||
<mk-switch v-model="clientSettings.disableViaMobile" @change="onChangeDisableViaMobile" text="%i18n:@disable-via-mobile%"/>
|
||||
</section>
|
||||
|
||||
<section class="web" v-show="page == 'web'">
|
||||
<h1>言語</h1>
|
||||
<el-select v-model="lang" placeholder="言語を選択">
|
||||
<el-option-group label="推奨">
|
||||
<el-option label="自動" value=""/>
|
||||
<h1>%i18n:@language%</h1>
|
||||
<el-select v-model="lang" placeholder="%i18n:@pick-language%">
|
||||
<el-option-group label="%i18n:@recommended%">
|
||||
<el-option label="%i18n:@auto%" :value="null"/>
|
||||
</el-option-group>
|
||||
<el-option-group label="言語を指定">
|
||||
<el-option label="ja" value="ja"/>
|
||||
<el-option label="en" value="en"/>
|
||||
<el-option label="fr" value="fr"/>
|
||||
<el-option label="pl" value="pl"/>
|
||||
<el-option label="de" value="de"/>
|
||||
<el-option-group label="%i18n:@specify-language%">
|
||||
<el-option v-for="x in langs" :label="x[1]" :value="x[0]" :key="x[0]"/>
|
||||
</el-option-group>
|
||||
</el-select>
|
||||
<div class="none ui info">
|
||||
<p>%fa:info-circle%変更はページの再度読み込み後に反映されます。</p>
|
||||
<p>%fa:info-circle%%i18n:@language-desc%</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="web" v-show="page == 'web'">
|
||||
<h1>キャッシュ</h1>
|
||||
<button class="ui button" @click="clean">クリーンアップ</button>
|
||||
<h1>%i18n:@cache%</h1>
|
||||
<button class="ui button" @click="clean">%i18n:@clean-cache%</button>
|
||||
<div class="none ui info warn">
|
||||
<p>%fa:exclamation-triangle%クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。</p>
|
||||
<p>%fa:exclamation-triangle%%i18n:@cache-warn%</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="notification" v-show="page == 'notification'">
|
||||
<h1>通知</h1>
|
||||
<mk-switch v-model="os.i.settings.autoWatch" @change="onChangeAutoWatch" text="投稿の自動ウォッチ">
|
||||
<span>リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。</span>
|
||||
<h1>%i18n:@notification%</h1>
|
||||
<mk-switch v-model="os.i.settings.autoWatch" @change="onChangeAutoWatch" text="%i18n:@auto-watch%">
|
||||
<span>%i18n:@auto-watch-desc%</span>
|
||||
</mk-switch>
|
||||
</section>
|
||||
|
||||
@ -118,7 +116,7 @@
|
||||
</section>
|
||||
|
||||
<section class="apps" v-show="page == 'apps'">
|
||||
<h1>アプリケーション</h1>
|
||||
<h1>%i18n:@apps%</h1>
|
||||
<x-apps/>
|
||||
</section>
|
||||
|
||||
@ -138,7 +136,7 @@
|
||||
</section>
|
||||
|
||||
<section class="signin" v-show="page == 'security'">
|
||||
<h1>サインイン履歴</h1>
|
||||
<h1>%i18n:@signin%</h1>
|
||||
<x-signins/>
|
||||
</section>
|
||||
|
||||
@ -148,57 +146,49 @@
|
||||
</section>
|
||||
|
||||
<section class="other" v-show="page == 'other'">
|
||||
<h1>Misskeyについて</h1>
|
||||
<p v-if="meta">このサーバーの運営者: <i><a :href="meta.maintainer.url" target="_blank">{{ meta.maintainer.name }}</a></i></p>
|
||||
<h1>%i18n:@about%</h1>
|
||||
<p v-if="meta">%i18n:@operator%: <i><a :href="meta.maintainer.url" target="_blank">{{ meta.maintainer.name }}</a></i></p>
|
||||
</section>
|
||||
|
||||
<section class="other" v-show="page == 'other'">
|
||||
<h1>Misskey Update</h1>
|
||||
<h1>%i18n:@update%</h1>
|
||||
<p>
|
||||
<span>バージョン: <i>{{ version }}</i></span>
|
||||
<span>%i18n:@version% <i>{{ version }}</i></span>
|
||||
<template v-if="latestVersion !== undefined">
|
||||
<br>
|
||||
<span>最新のバージョン: <i>{{ latestVersion ? latestVersion : version }}</i></span>
|
||||
<span>%i18n:@latest-version% <i>{{ latestVersion ? latestVersion : version }}</i></span>
|
||||
</template>
|
||||
</p>
|
||||
<button class="ui button block" @click="checkForUpdate" :disabled="checkingForUpdate">
|
||||
<template v-if="checkingForUpdate">アップデートを確認中<mk-ellipsis/></template>
|
||||
<template v-else>アップデートを確認</template>
|
||||
<template v-if="checkingForUpdate">%i18n:@update-checking%<mk-ellipsis/></template>
|
||||
<template v-else>%i18n:@do-update%</template>
|
||||
</button>
|
||||
<details>
|
||||
<summary>詳細設定</summary>
|
||||
<mk-switch v-model="preventUpdate" text="アップデートを延期する(非推奨)">
|
||||
<span>この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。</span>
|
||||
<summary>%i18n:@update-settings%</summary>
|
||||
<mk-switch v-model="preventUpdate" text="%i18n:@prevent-update%">
|
||||
<span>%i18n:@prevent-update-desc%</span>
|
||||
</mk-switch>
|
||||
</details>
|
||||
</section>
|
||||
|
||||
<section class="other" v-show="page == 'other'">
|
||||
<h1>高度な設定</h1>
|
||||
<mk-switch v-model="debug" text="デバッグモードを有効にする">
|
||||
<span>この設定はブラウザに記憶されます。</span>
|
||||
<h1>%i18n:@advanced-settings%</h1>
|
||||
<mk-switch v-model="debug" text="%i18n:@debug-mode%">
|
||||
<span>%i18n:@debug-mode-desc%</span>
|
||||
</mk-switch>
|
||||
<template v-if="debug">
|
||||
<mk-switch v-model="useRawScript" text="生のスクリプトを読み込む">
|
||||
<span>圧縮されていない「生の」スクリプトを使用します。サイズが大きいため、読み込みに時間がかかる場合があります。この設定はブラウザに記憶されます。</span>
|
||||
</mk-switch>
|
||||
<div class="none ui info">
|
||||
<p>%fa:info-circle%Misskeyはソースマップも提供しています。</p>
|
||||
</div>
|
||||
</template>
|
||||
<mk-switch v-model="enableExperimental" text="実験的機能を有効にする">
|
||||
<span>実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。</span>
|
||||
<mk-switch v-model="enableExperimentalFeatures" text="%i18n:@experimental%">
|
||||
<span>%i18n:@experimental-desc%</span>
|
||||
</mk-switch>
|
||||
<details v-if="debug">
|
||||
<summary>ツール</summary>
|
||||
<button class="ui button block" @click="taskmngr">タスクマネージャ</button>
|
||||
<summary>%i18n:@tools%</summary>
|
||||
<button class="ui button block" @click="taskmngr">%i18n:@task-manager%</button>
|
||||
</details>
|
||||
</section>
|
||||
|
||||
<section class="other" v-show="page == 'other'">
|
||||
<h1>%i18n:@license%</h1>
|
||||
<div v-html="license"></div>
|
||||
<a :href="licenseUrl" target="_blank">サードパーティ</a>
|
||||
<a :href="licenseUrl" target="_blank">%i18n:@third-parties%</a>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
@ -214,7 +204,7 @@ import XApi from './settings.api.vue';
|
||||
import XApps from './settings.apps.vue';
|
||||
import XSignins from './settings.signins.vue';
|
||||
import XDrive from './settings.drive.vue';
|
||||
import { url, docsUrl, license, lang, version } from '../../../config';
|
||||
import { url, docsUrl, license, lang, langs, version } from '../../../config';
|
||||
import checkForUpdate from '../../../common/scripts/check-for-update';
|
||||
import MkTaskManager from './taskmanager.vue';
|
||||
|
||||
@ -235,55 +225,60 @@ export default Vue.extend({
|
||||
meta: null,
|
||||
license,
|
||||
version,
|
||||
langs,
|
||||
latestVersion: undefined,
|
||||
checkingForUpdate: false,
|
||||
darkmode: localStorage.getItem('darkmode') == 'true',
|
||||
enableSounds: localStorage.getItem('enableSounds') == 'true',
|
||||
autoPopout: localStorage.getItem('autoPopout') == 'true',
|
||||
apiViaStream: localStorage.getItem('apiViaStream') ? localStorage.getItem('apiViaStream') == 'true' : true,
|
||||
soundVolume: localStorage.getItem('soundVolume') ? parseInt(localStorage.getItem('soundVolume'), 10) : 50,
|
||||
lang: localStorage.getItem('lang') || '',
|
||||
preventUpdate: localStorage.getItem('preventUpdate') == 'true',
|
||||
debug: localStorage.getItem('debug') == 'true',
|
||||
useRawScript: localStorage.getItem('useRawScript') == 'true',
|
||||
enableExperimental: localStorage.getItem('enableExperimental') == 'true'
|
||||
darkmode: localStorage.getItem('darkmode') == 'true'
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
licenseUrl(): string {
|
||||
return `${docsUrl}/${lang}/license`;
|
||||
},
|
||||
|
||||
apiViaStream: {
|
||||
get() { return this.$store.state.device.apiViaStream; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'apiViaStream', value }); }
|
||||
},
|
||||
|
||||
autoPopout: {
|
||||
get() { return this.$store.state.device.autoPopout; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); }
|
||||
},
|
||||
|
||||
enableSounds: {
|
||||
get() { return this.$store.state.device.enableSounds; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'enableSounds', value }); }
|
||||
},
|
||||
|
||||
soundVolume: {
|
||||
get() { return this.$store.state.device.soundVolume; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'soundVolume', value }); }
|
||||
},
|
||||
|
||||
lang: {
|
||||
get() { return this.$store.state.device.lang; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'lang', value }); }
|
||||
},
|
||||
|
||||
preventUpdate: {
|
||||
get() { return this.$store.state.device.preventUpdate; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'preventUpdate', value }); }
|
||||
},
|
||||
|
||||
debug: {
|
||||
get() { return this.$store.state.device.debug; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'debug', value }); }
|
||||
},
|
||||
|
||||
enableExperimentalFeatures: {
|
||||
get() { return this.$store.state.device.enableExperimentalFeatures; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'enableExperimentalFeatures', value }); }
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
autoPopout() {
|
||||
localStorage.setItem('autoPopout', this.autoPopout ? 'true' : 'false');
|
||||
},
|
||||
apiViaStream() {
|
||||
localStorage.setItem('apiViaStream', this.apiViaStream ? 'true' : 'false');
|
||||
},
|
||||
darkmode() {
|
||||
(this as any)._updateDarkmode_(this.darkmode);
|
||||
},
|
||||
enableSounds() {
|
||||
localStorage.setItem('enableSounds', this.enableSounds ? 'true' : 'false');
|
||||
},
|
||||
soundVolume() {
|
||||
localStorage.setItem('soundVolume', this.soundVolume.toString());
|
||||
},
|
||||
lang() {
|
||||
localStorage.setItem('lang', this.lang);
|
||||
},
|
||||
preventUpdate() {
|
||||
localStorage.setItem('preventUpdate', this.preventUpdate ? 'true' : 'false');
|
||||
},
|
||||
debug() {
|
||||
localStorage.setItem('debug', this.debug ? 'true' : 'false');
|
||||
},
|
||||
useRawScript() {
|
||||
localStorage.setItem('useRawScript', this.useRawScript ? 'true' : 'false');
|
||||
},
|
||||
enableExperimental() {
|
||||
localStorage.setItem('enableExperimental', this.enableExperimental ? 'true' : 'false');
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@ -371,13 +366,13 @@ export default Vue.extend({
|
||||
this.latestVersion = newer;
|
||||
if (newer == null) {
|
||||
(this as any).apis.dialog({
|
||||
title: '利用可能な更新はありません',
|
||||
text: 'お使いのMisskeyは最新です。'
|
||||
title: '%i18n:@no-updates%',
|
||||
text: '%i18n:@no-updates-desc%'
|
||||
});
|
||||
} else {
|
||||
(this as any).apis.dialog({
|
||||
title: '新しいバージョンが利用可能です',
|
||||
text: 'ページを再度読み込みすると更新が適用されます。'
|
||||
title: '%i18n:@update-available%',
|
||||
text: '%i18n:@update-available-desc%'
|
||||
});
|
||||
}
|
||||
});
|
||||
@ -385,13 +380,13 @@ export default Vue.extend({
|
||||
clean() {
|
||||
localStorage.clear();
|
||||
(this as any).apis.dialog({
|
||||
title: 'キャッシュを削除しました',
|
||||
text: 'ページを再度読み込みしてください。'
|
||||
title: '%i18n:@cache-cleared%',
|
||||
text: '%i18n:@caache-cleared-desc%'
|
||||
});
|
||||
},
|
||||
soundTest() {
|
||||
const sound = new Audio(`${url}/assets/message.mp3`);
|
||||
sound.volume = localStorage.getItem('soundVolume') ? parseInt(localStorage.getItem('soundVolume'), 10) / 100 : 0.5;
|
||||
sound.volume = this.$store.state.device.soundVolume;
|
||||
sound.play();
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,17 @@
|
||||
<template>
|
||||
<div class="mk-sub-note-content">
|
||||
<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>
|
||||
<mk-note-html :text="note.text" :i="os.i"/>
|
||||
<a class="rp" v-if="note.renoteId" :href="`/note:${note.renoteId}`">RP: ...</a>
|
||||
</div>
|
||||
<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"/>
|
||||
</details>
|
||||
<details v-if="note.poll">
|
||||
<summary>投票</summary>
|
||||
<summary>%i18n:@poll%</summary>
|
||||
<mk-poll :note="note"/>
|
||||
</details>
|
||||
</div>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<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-tab-pane label="Requests">
|
||||
<el-table
|
||||
|
@ -3,7 +3,7 @@
|
||||
<span slot="header">%fa:list% リスト</span>
|
||||
|
||||
<div data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82" :data-darkmode="_darkmode_">
|
||||
<button class="ui" @click="add">リストを作成</button>
|
||||
<button class="ui" @click="add">%i18n:@create-list%</button>
|
||||
<a v-for="list in lists" :key="list.id" @click="choice(list)">{{ list.title }}</a>
|
||||
</div>
|
||||
</mk-window>
|
||||
|
@ -5,18 +5,18 @@
|
||||
<mk-avatar class="avatar" :user="u" :disable-preview="true"/>
|
||||
<div class="title">
|
||||
<router-link class="name" :to="u | userPage">{{ u | userName }}</router-link>
|
||||
<p class="username">@{{ u | acct }}</p>
|
||||
<p class="username"><mk-acct :user="u"/></p>
|
||||
</div>
|
||||
<div class="description">{{ u.description }}</div>
|
||||
<div class="status">
|
||||
<div>
|
||||
<p>投稿</p><a>{{ u.notesCount }}</a>
|
||||
<p>%i18n:@notes%</p><a>{{ u.notesCount }}</a>
|
||||
</div>
|
||||
<div>
|
||||
<p>フォロー</p><a>{{ u.followingCount }}</a>
|
||||
<p>%i18n:@following%</p><a>{{ u.followingCount }}</a>
|
||||
</div>
|
||||
<div>
|
||||
<p>フォロワー</p><a>{{ u.followersCount }}</a>
|
||||
<p>%i18n:@followers%</p><a>{{ u.followersCount }}</a>
|
||||
</div>
|
||||
</div>
|
||||
<mk-follow-button v-if="os.isSignedIn && user.id != os.i.id" :user="u"/>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<span class="username">@{{ user | acct }}</span>
|
||||
</header>
|
||||
<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>
|
||||
</div>
|
||||
|
@ -2,8 +2,8 @@
|
||||
<div class="mk-users-list">
|
||||
<nav>
|
||||
<div>
|
||||
<span :data-active="mode == 'all'" @click="mode = 'all'">すべて<span>{{ count }}</span></span>
|
||||
<span v-if="os.isSignedIn && youKnowCount" :data-active="mode == 'iknow'" @click="mode = 'iknow'">知り合い<span>{{ youKnowCount }}</span></span>
|
||||
<span :data-active="mode == 'all'" @click="mode = 'all'">%i18n:@all%<span>{{ count }}</span></span>
|
||||
<span v-if="os.isSignedIn && youKnowCount" :data-active="mode == 'iknow'" @click="mode = 'iknow'">%i18n:@iknow%<span>{{ youKnowCount }}</span></span>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="users" v-if="!fetching && users.length != 0">
|
||||
@ -12,13 +12,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<button class="more" v-if="!fetching && next != null" @click="more" :disabled="moreFetching">
|
||||
<span v-if="!moreFetching">もっと</span>
|
||||
<span v-if="moreFetching">読み込み中<mk-ellipsis/></span>
|
||||
<span v-if="!moreFetching">%i18n:@load-more%</span>
|
||||
<span v-if="moreFetching">%i18n:common.loading%<mk-ellipsis/></span>
|
||||
</button>
|
||||
<p class="no" v-if="!fetching && users.length == 0">
|
||||
<slot></slot>
|
||||
</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>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -9,8 +9,8 @@
|
||||
>
|
||||
<h1><slot name="header"></slot></h1>
|
||||
<div>
|
||||
<button class="popout" v-if="popoutUrl" @mousedown.stop="() => {}" @click="popout" title="ポップアウト">%fa:R window-restore%</button>
|
||||
<button class="close" v-if="canClose" @mousedown.stop="() => {}" @click="close" title="閉じる">%fa:times%</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="%i18n:@close%">%fa:times%</button>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content">
|
||||
@ -95,7 +95,7 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
created() {
|
||||
if (localStorage.getItem('autoPopout') == 'true' && this.popoutUrl) {
|
||||
if (this.$store.state.device.autoPopout && this.popoutUrl) {
|
||||
this.popout();
|
||||
this.preventMount = true;
|
||||
} else {
|
||||
|
@ -16,11 +16,11 @@ export default Vue.extend({
|
||||
this.folder = this.$route.params.folder;
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Misskey Drive';
|
||||
document.title = '%i18n:@title%';
|
||||
},
|
||||
methods: {
|
||||
onMoveRoot() {
|
||||
const title = 'Misskey Drive';
|
||||
const title = '%i18n:@title%';
|
||||
|
||||
// Rewrite URL
|
||||
history.pushState(null, title, '/i/drive');
|
||||
@ -28,7 +28,7 @@ export default Vue.extend({
|
||||
document.title = title;
|
||||
},
|
||||
onOpenFolder(folder) {
|
||||
const title = folder.name + ' | Misskey Drive';
|
||||
const title = folder.name + ' | %i18n:@title%';
|
||||
|
||||
// Rewrite URL
|
||||
history.pushState(null, title, '/i/drive/folder/' + folder.id);
|
||||
@ -49,4 +49,3 @@ export default Vue.extend({
|
||||
> .mk-drive
|
||||
height 100%
|
||||
</style>
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
<template v-for="favorite in favorites">
|
||||
<mk-note-detail :note="favorite.note" :key="favorite.note.id"/>
|
||||
</template>
|
||||
<a v-if="existMore" @click="more">さらに読み込む</a>
|
||||
<a v-if="existMore" @click="more">%i18n:@more%</a>
|
||||
</main>
|
||||
</mk-ui>
|
||||
</template>
|
||||
|
@ -6,7 +6,7 @@
|
||||
import Vue from 'vue';
|
||||
export default Vue.extend({
|
||||
mounted() {
|
||||
document.title = 'Misskey - ホームのカスタマイズ';
|
||||
document.title = 'Misskey - %i18n:@title%';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
@ -29,7 +29,7 @@ export default Vue.extend({
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = '%i18n:!@title%';
|
||||
document.title = '%i18n:@title%';
|
||||
},
|
||||
methods: {
|
||||
onSelected(file) {
|
||||
|
@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<div>
|
||||
<mk-widget-container>
|
||||
<template slot="header">%fa:users% ユーザー</template>
|
||||
<button slot="func" title="ユーザーを追加" @click="add">%fa:plus%</button>
|
||||
<template slot="header">%fa:users% %i18n:@users%</template>
|
||||
<button slot="func" title="%i18n:@add-user%" @click="add">%fa:plus%</button>
|
||||
|
||||
<div data-id="d0b63759-a822-4556-a5ce-373ab966e08a">
|
||||
<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: {
|
||||
add() {
|
||||
(this as any).apis.input({
|
||||
title: 'ユーザー名',
|
||||
title: '%i18n:@username%',
|
||||
}).then(async username => {
|
||||
const user = await (this as any).api('users/show', {
|
||||
username
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user