Merge branch 'misskey-dev:develop' into develop
This commit is contained in:
commit
46fad1b0d0
225
.github/workflows/get-api-diff.yml
vendored
Normal file
225
.github/workflows/get-api-diff.yml
vendored
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
name: Report API Diff
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
get-base:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [20.5.1]
|
||||||
|
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: postgres:13
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
env:
|
||||||
|
POSTGRES_DB: misskey
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
POSTGRES_USER: example-misskey-user
|
||||||
|
POSTGRESS_PASS: example-misskey-pass
|
||||||
|
redis:
|
||||||
|
image: redis:7
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.1.1
|
||||||
|
with:
|
||||||
|
repository: ${{ github.event.pull_request.base.repo.full_name }}
|
||||||
|
ref: ${{ github.base_ref }}
|
||||||
|
submodules: true
|
||||||
|
- name: Install pnpm
|
||||||
|
uses: pnpm/action-setup@v2
|
||||||
|
with:
|
||||||
|
version: 8
|
||||||
|
run_install: false
|
||||||
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v3.8.1
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
cache: 'pnpm'
|
||||||
|
- run: corepack enable
|
||||||
|
- run: pnpm i --frozen-lockfile
|
||||||
|
- name: Check pnpm-lock.yaml
|
||||||
|
run: git diff --exit-code pnpm-lock.yaml
|
||||||
|
- name: Copy Configure
|
||||||
|
run: cp .config/example.yml .config/default.yml
|
||||||
|
- name: Build
|
||||||
|
run: pnpm build
|
||||||
|
- name : Migrate
|
||||||
|
run: pnpm migrate
|
||||||
|
- name: Launch misskey
|
||||||
|
run: |
|
||||||
|
screen -S misskey -dm pnpm run dev
|
||||||
|
sleep 30s
|
||||||
|
- name: Wait for Misskey to be ready
|
||||||
|
run: |
|
||||||
|
MAX_RETRIES=12
|
||||||
|
RETRY_DELAY=5
|
||||||
|
count=0
|
||||||
|
until $(curl --output /dev/null --silent --head --fail http://localhost:3000) || [[ $count -eq $MAX_RETRIES ]]; do
|
||||||
|
printf '.'
|
||||||
|
sleep $RETRY_DELAY
|
||||||
|
count=$((count + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $count -eq $MAX_RETRIES ]]; then
|
||||||
|
echo "Failed to connect to Misskey after $MAX_RETRIES attempts."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
- id: fetch
|
||||||
|
name: Get api.json from Misskey
|
||||||
|
run: |
|
||||||
|
RESULT=$(curl --retry 5 --retry-delay 5 --retry-max-time 60 http://localhost:3000/api.json)
|
||||||
|
echo $RESULT > api-base.json
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: api-artifact
|
||||||
|
path: api-base.json
|
||||||
|
- name: Kill Misskey Job
|
||||||
|
run: screen -S misskey -X quit
|
||||||
|
|
||||||
|
get-head:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [20.5.1]
|
||||||
|
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: postgres:13
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
env:
|
||||||
|
POSTGRES_DB: misskey
|
||||||
|
POSTGRES_HOST_AUTH_METHOD: trust
|
||||||
|
POSTGRES_USER: example-misskey-user
|
||||||
|
POSTGRESS_PASS: example-misskey-pass
|
||||||
|
redis:
|
||||||
|
image: redis:7
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.1.1
|
||||||
|
with:
|
||||||
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
||||||
|
ref: ${{ github.head_ref }}
|
||||||
|
submodules: true
|
||||||
|
- name: Install pnpm
|
||||||
|
uses: pnpm/action-setup@v2
|
||||||
|
with:
|
||||||
|
version: 8
|
||||||
|
run_install: false
|
||||||
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v3.8.1
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
cache: 'pnpm'
|
||||||
|
- run: corepack enable
|
||||||
|
- run: pnpm i --frozen-lockfile
|
||||||
|
- name: Check pnpm-lock.yaml
|
||||||
|
run: git diff --exit-code pnpm-lock.yaml
|
||||||
|
- name: Copy Configure
|
||||||
|
run: cp .config/example.yml .config/default.yml
|
||||||
|
- name: Build
|
||||||
|
run: pnpm build
|
||||||
|
- name : Migrate
|
||||||
|
run: pnpm migrate
|
||||||
|
- name: Launch misskey
|
||||||
|
run: |
|
||||||
|
screen -S misskey -dm pnpm run dev
|
||||||
|
sleep 30s
|
||||||
|
- name: Wait for Misskey to be ready
|
||||||
|
run: |
|
||||||
|
MAX_RETRIES=12
|
||||||
|
RETRY_DELAY=5
|
||||||
|
count=0
|
||||||
|
until $(curl --output /dev/null --silent --head --fail http://localhost:3000) || [[ $count -eq $MAX_RETRIES ]]; do
|
||||||
|
printf '.'
|
||||||
|
sleep $RETRY_DELAY
|
||||||
|
count=$((count + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $count -eq $MAX_RETRIES ]]; then
|
||||||
|
echo "Failed to connect to Misskey after $MAX_RETRIES attempts."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
- id: fetch
|
||||||
|
name: Get api.json from Misskey
|
||||||
|
run: |
|
||||||
|
RESULT=$(curl --retry 5 --retry-delay 5 --retry-max-time 60 http://localhost:3000/api.json)
|
||||||
|
echo $RESULT > api-head.json
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: api-artifact
|
||||||
|
path: api-head.json
|
||||||
|
- name: Kill Misskey Job
|
||||||
|
run: screen -S misskey -X quit
|
||||||
|
|
||||||
|
compare-diff:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: success()
|
||||||
|
needs: [get-base, get-head]
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Download Artifact
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: api-artifact
|
||||||
|
path: ./artifacts
|
||||||
|
- name: Output base
|
||||||
|
run: cat ./artifacts/api-base.json
|
||||||
|
- name: Output head
|
||||||
|
run: cat ./artifacts/api-head.json
|
||||||
|
- name: Arrange json files
|
||||||
|
run: |
|
||||||
|
jq '.' ./artifacts/api-base.json > ./api-base.json
|
||||||
|
jq '.' ./artifacts/api-head.json > ./api-head.json
|
||||||
|
- name: Get diff of 2 files
|
||||||
|
run: diff -u --label=base --label=head ./api-base.json ./api-head.json | cat > api.json.diff
|
||||||
|
- name: Get full diff
|
||||||
|
run: diff --label=base --label=head --new-line-format='+%L' --old-line-format='-%L' --unchanged-line-format=' %L' ./api-base.json ./api-head.json | cat > api-full.json.diff
|
||||||
|
- name: Echo full diff
|
||||||
|
run: cat ./api-full.json.diff
|
||||||
|
- name: Upload full diff to Artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: api-artifact
|
||||||
|
path: api-full.json.diff
|
||||||
|
- id: out-diff
|
||||||
|
name: Build diff Comment
|
||||||
|
run: |
|
||||||
|
cat <<- EOF > ./output.md
|
||||||
|
このPRによるapi.jsonの差分
|
||||||
|
<details>
|
||||||
|
<summary>差分はこちら</summary>
|
||||||
|
|
||||||
|
\`\`\`diff
|
||||||
|
$(cat ./api.json.diff)
|
||||||
|
\`\`\`
|
||||||
|
</details>
|
||||||
|
|
||||||
|
[Get diff files from Workflow Page](https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})
|
||||||
|
EOF
|
||||||
|
- name: Write diff comment
|
||||||
|
uses: thollander/actions-comment-pull-request@v2
|
||||||
|
with:
|
||||||
|
comment_tag: show_diff
|
||||||
|
filePath: ./output.md
|
@ -1 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
_lang_: "japanski"
|
||||||
|
ok: "OK"
|
||||||
|
gotIt: "Razumijem"
|
||||||
|
cancel: "otkazati"
|
||||||
|
@ -1 +1,18 @@
|
|||||||
---
|
---
|
||||||
|
_lang_: "Japonè"
|
||||||
|
password: "modpas"
|
||||||
|
ok: "OK"
|
||||||
|
gotIt: "Konprann"
|
||||||
|
cancel: "anile"
|
||||||
|
noThankYou: "Sispann"
|
||||||
|
instance: "sèvè"
|
||||||
|
profile: "pwofil"
|
||||||
|
save: "kenbe"
|
||||||
|
delete: "efase"
|
||||||
|
instances: "sèvè"
|
||||||
|
remove: "efase"
|
||||||
|
smtpPass: "modpas"
|
||||||
|
_2fa:
|
||||||
|
renewTOTPCancel: "Sispann"
|
||||||
|
_widgets:
|
||||||
|
profile: "pwofil"
|
||||||
|
@ -1136,7 +1136,7 @@ externalServices: "Servizi esterni"
|
|||||||
impressum: "Dichiarazione di proprietà"
|
impressum: "Dichiarazione di proprietà"
|
||||||
impressumUrl: "URL della dichiarazione di proprietà"
|
impressumUrl: "URL della dichiarazione di proprietà"
|
||||||
impressumDescription: "La dichiarazione di proprietà, è obbligatoria in alcuni paesi come la Germania (Impressum)."
|
impressumDescription: "La dichiarazione di proprietà, è obbligatoria in alcuni paesi come la Germania (Impressum)."
|
||||||
privacyPolicy: "Informativa ai sensi degli artt. 13 e 14 del Regolamento UE 2016/679 per la protezione dei dati personali (GDPR)"
|
privacyPolicy: "Informativa privacy ai sensi del Regolamento UE 2016/679 (GDPR)"
|
||||||
privacyPolicyUrl: "URL della informativa privacy"
|
privacyPolicyUrl: "URL della informativa privacy"
|
||||||
tosAndPrivacyPolicy: "Condizioni d'uso e informativa privacy"
|
tosAndPrivacyPolicy: "Condizioni d'uso e informativa privacy"
|
||||||
_announcement:
|
_announcement:
|
||||||
|
@ -45,6 +45,7 @@ pin: "ピン留めしとく"
|
|||||||
unpin: "やっぱピン留めせん"
|
unpin: "やっぱピン留めせん"
|
||||||
copyContent: "内容をコピー"
|
copyContent: "内容をコピー"
|
||||||
copyLink: "リンクをコピー"
|
copyLink: "リンクをコピー"
|
||||||
|
copyLinkRenote: "リノートのリンクをコピーするで?"
|
||||||
delete: "ほかす"
|
delete: "ほかす"
|
||||||
deleteAndEdit: "ほかして直す"
|
deleteAndEdit: "ほかして直す"
|
||||||
deleteAndEditConfirm: "このノートをほかしてもっかい直す?このノートへのツッコミ、Renote、返信も全部消えるんやけどそれでもええん?"
|
deleteAndEditConfirm: "このノートをほかしてもっかい直す?このノートへのツッコミ、Renote、返信も全部消えるんやけどそれでもええん?"
|
||||||
@ -194,6 +195,7 @@ perHour: "1時間ごと"
|
|||||||
perDay: "1日ごと"
|
perDay: "1日ごと"
|
||||||
stopActivityDelivery: "アクティビティの配送をやめる"
|
stopActivityDelivery: "アクティビティの配送をやめる"
|
||||||
blockThisInstance: "このサーバーをブロックすんで"
|
blockThisInstance: "このサーバーをブロックすんで"
|
||||||
|
silenceThisInstance: "サーバーサイレンスすんで?"
|
||||||
operations: "操作"
|
operations: "操作"
|
||||||
software: "ソフトウェア"
|
software: "ソフトウェア"
|
||||||
version: "バージョン"
|
version: "バージョン"
|
||||||
@ -213,6 +215,8 @@ clearCachedFiles: "キャッシュをほかす"
|
|||||||
clearCachedFilesConfirm: "キャッシュされとるリモートファイルをみんなほかしてええか?"
|
clearCachedFilesConfirm: "キャッシュされとるリモートファイルをみんなほかしてええか?"
|
||||||
blockedInstances: "ブロックしたサーバー"
|
blockedInstances: "ブロックしたサーバー"
|
||||||
blockedInstancesDescription: "ブロックしたいサーバーのホストを改行で区切って設定してな。ブロックされてもうたサーバーとはもう金輪際やり取りできひんくなるで。ついでにそのサブドメインもブロックするで。"
|
blockedInstancesDescription: "ブロックしたいサーバーのホストを改行で区切って設定してな。ブロックされてもうたサーバーとはもう金輪際やり取りできひんくなるで。ついでにそのサブドメインもブロックするで。"
|
||||||
|
silencedInstances: "サーバーサイレンスされてんねん"
|
||||||
|
silencedInstancesDescription: "サイレンスしたいサーバーのホストを改行で区切って設定すんで。サイレンスされたサーバーに所属するアカウントはすべて「サイレンス」として扱われ、フォローがすべてリクエストになり、フォロワーでないローカルアカウントにはメンションできなくなんねん。ブロックしたインスタンスには影響せーへんで。"
|
||||||
muteAndBlock: "ミュートとブロック"
|
muteAndBlock: "ミュートとブロック"
|
||||||
mutedUsers: "ミュートしたユーザー"
|
mutedUsers: "ミュートしたユーザー"
|
||||||
blockedUsers: "ブロックしたユーザー"
|
blockedUsers: "ブロックしたユーザー"
|
||||||
@ -410,12 +414,14 @@ aboutMisskey: "Misskeyってなんや?"
|
|||||||
administrator: "管理者"
|
administrator: "管理者"
|
||||||
token: "トークン"
|
token: "トークン"
|
||||||
2fa: "二要素認証"
|
2fa: "二要素認証"
|
||||||
|
setupOf2fa: "二要素認証のセットアップ"
|
||||||
totp: "認証アプリ"
|
totp: "認証アプリ"
|
||||||
totpDescription: "認証アプリ使うてワンタイムパスワードを入れる"
|
totpDescription: "認証アプリ使うてワンタイムパスワードを入れる"
|
||||||
moderator: "モデレーター"
|
moderator: "モデレーター"
|
||||||
moderation: "モデレーション"
|
moderation: "モデレーション"
|
||||||
moderationNote: "モデレーションノート"
|
moderationNote: "モデレーションノート"
|
||||||
addModerationNote: "モデレーションノートを追加するで"
|
addModerationNote: "モデレーションノートを追加するで"
|
||||||
|
moderationLogs: "モデログ"
|
||||||
nUsersMentioned: "{n}人が投稿"
|
nUsersMentioned: "{n}人が投稿"
|
||||||
securityKeyAndPasskey: "セキュリティキー・パスキー"
|
securityKeyAndPasskey: "セキュリティキー・パスキー"
|
||||||
securityKey: "セキュリティキー"
|
securityKey: "セキュリティキー"
|
||||||
@ -528,6 +534,7 @@ serverLogs: "サーバーログ"
|
|||||||
deleteAll: "全部ほかす"
|
deleteAll: "全部ほかす"
|
||||||
showFixedPostForm: "タイムラインの上の方で投稿できるようにやってくれへん?"
|
showFixedPostForm: "タイムラインの上の方で投稿できるようにやってくれへん?"
|
||||||
showFixedPostFormInChannel: "タイムラインの上の方で投稿できるようにするわ(チャンネル)"
|
showFixedPostFormInChannel: "タイムラインの上の方で投稿できるようにするわ(チャンネル)"
|
||||||
|
withRepliesByDefaultForNewlyFollowed: "フォローする時、デフォルトで返信をタイムラインに含むようにしよか"
|
||||||
newNoteRecived: "新しいノートがあるで"
|
newNoteRecived: "新しいノートがあるで"
|
||||||
sounds: "サウンド"
|
sounds: "サウンド"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@ -655,6 +662,7 @@ behavior: "動作"
|
|||||||
sample: "サンプル"
|
sample: "サンプル"
|
||||||
abuseReports: "通報"
|
abuseReports: "通報"
|
||||||
reportAbuse: "通報"
|
reportAbuse: "通報"
|
||||||
|
reportAbuseRenote: "リノート苦情だすで?"
|
||||||
reportAbuseOf: "{name}を通報する"
|
reportAbuseOf: "{name}を通報する"
|
||||||
fillAbuseReportDescription: "細かい通報理由を書いてなー。対象ノートがある時はそのURLも書いといてなー。"
|
fillAbuseReportDescription: "細かい通報理由を書いてなー。対象ノートがある時はそのURLも書いといてなー。"
|
||||||
abuseReported: "無事内容が送信されたみたいやで。おおきに〜。"
|
abuseReported: "無事内容が送信されたみたいやで。おおきに〜。"
|
||||||
@ -707,6 +715,7 @@ lockedAccountInfo: "フォローを承認制にしとっても、ノートの公
|
|||||||
alwaysMarkSensitive: "デフォルトでメディアを閲覧注意にするで"
|
alwaysMarkSensitive: "デフォルトでメディアを閲覧注意にするで"
|
||||||
loadRawImages: "添付画像のサムネイルをオリジナル画質にするで"
|
loadRawImages: "添付画像のサムネイルをオリジナル画質にするで"
|
||||||
disableShowingAnimatedImages: "アニメーション画像を再生せんとくで"
|
disableShowingAnimatedImages: "アニメーション画像を再生せんとくで"
|
||||||
|
highlightSensitiveMedia: "メディアがセンシティブなことをめっっちゃわかりやすく表紙"
|
||||||
verificationEmailSent: "無事確認のメールを送れたで。メールに書いてあるリンクにアクセスして、設定を完了してなー。"
|
verificationEmailSent: "無事確認のメールを送れたで。メールに書いてあるリンクにアクセスして、設定を完了してなー。"
|
||||||
notSet: "未設定"
|
notSet: "未設定"
|
||||||
emailVerified: "メールアドレスは確認されたで"
|
emailVerified: "メールアドレスは確認されたで"
|
||||||
@ -1021,6 +1030,7 @@ retryAllQueuesConfirmText: "一時的にサーバー重なるかもしれへん
|
|||||||
enableChartsForRemoteUser: "リモートユーザーのチャートを作る"
|
enableChartsForRemoteUser: "リモートユーザーのチャートを作る"
|
||||||
enableChartsForFederatedInstances: "リモートサーバーのチャートを作る"
|
enableChartsForFederatedInstances: "リモートサーバーのチャートを作る"
|
||||||
showClipButtonInNoteFooter: "ノートのアクションにクリップを追加"
|
showClipButtonInNoteFooter: "ノートのアクションにクリップを追加"
|
||||||
|
reactionsDisplaySize: "リアクションの表示のでかさ"
|
||||||
noteIdOrUrl: "ノートIDかURL"
|
noteIdOrUrl: "ノートIDかURL"
|
||||||
video: "動画"
|
video: "動画"
|
||||||
videos: "動画"
|
videos: "動画"
|
||||||
@ -1107,8 +1117,28 @@ replies: "返事"
|
|||||||
renotes: "Renote"
|
renotes: "Renote"
|
||||||
loadReplies: "返信を見るで"
|
loadReplies: "返信を見るで"
|
||||||
loadConversation: "会話を見るで"
|
loadConversation: "会話を見るで"
|
||||||
|
pinnedList: "ピン留めしはったリスト"
|
||||||
|
keepScreenOn: "デバイスの画面を常にオンにすんで"
|
||||||
verifiedLink: "このリンク先の所有者であることが確認されたで。"
|
verifiedLink: "このリンク先の所有者であることが確認されたで。"
|
||||||
|
notifyNotes: "投稿を通知"
|
||||||
|
unnotifyNotes: "投稿の通知を解除すんで"
|
||||||
|
authentication: "認証"
|
||||||
authenticationRequiredToContinue: "続けるには認証をやってや。"
|
authenticationRequiredToContinue: "続けるには認証をやってや。"
|
||||||
|
dateAndTime: "日時"
|
||||||
|
showRenotes: "リノートを表示"
|
||||||
|
edited: "編集し終わってる"
|
||||||
|
notificationRecieveConfig: "通知を受け取るかの設定"
|
||||||
|
mutualFollow: "お互いフォローしてんで"
|
||||||
|
fileAttachedOnly: "ファイル付きのみ"
|
||||||
|
showRepliesToOthersInTimeline: "タイムラインに他の人への返信とかも含めんで"
|
||||||
|
hideRepliesToOthersInTimeline: "タイムラインに他の人への返信とかは見ーへんで"
|
||||||
|
externalServices: "他のサイトのサービス"
|
||||||
|
impressum: "運営者の情報"
|
||||||
|
impressumUrl: "運営者の情報URL"
|
||||||
|
impressumDescription: "ドイツなどのほんま1部の国と地域ではな、表示が義務付けられててん。(Impressum)"
|
||||||
|
privacyPolicy: "プライバシーポリシー"
|
||||||
|
privacyPolicyUrl: "プライバシーポリシーURL"
|
||||||
|
tosAndPrivacyPolicy: "利用規約・プライバシーポリシー"
|
||||||
_announcement:
|
_announcement:
|
||||||
forExistingUsers: "もうおるユーザーのみ"
|
forExistingUsers: "もうおるユーザーのみ"
|
||||||
forExistingUsersDescription: "有効にすると、このお知らせ作成時点でおるユーザーにのみお知らせが表示されます。無効にすると、このお知らせ作成後にアカウントを作成したユーザーにもお知らせが表示されます。"
|
forExistingUsersDescription: "有効にすると、このお知らせ作成時点でおるユーザーにのみお知らせが表示されます。無効にすると、このお知らせ作成後にアカウントを作成したユーザーにもお知らせが表示されます。"
|
||||||
@ -1141,6 +1171,8 @@ _serverSettings:
|
|||||||
appIconUsageExample: "PWAや、スマートフォンのホーム画面にブックマークとして追加された時など"
|
appIconUsageExample: "PWAや、スマートフォンのホーム画面にブックマークとして追加された時など"
|
||||||
appIconStyleRecommendation: "円形もしくは角丸にクロップされる場合があるさかいに、塗り潰された余白のある背景があるものが推奨されるで。"
|
appIconStyleRecommendation: "円形もしくは角丸にクロップされる場合があるさかいに、塗り潰された余白のある背景があるものが推奨されるで。"
|
||||||
appIconResolutionMustBe: "解像度は必ず{resolution}である必要があるで。"
|
appIconResolutionMustBe: "解像度は必ず{resolution}である必要があるで。"
|
||||||
|
manifestJsonOverride: "manifest.jsonのオーバーライド"
|
||||||
|
shortName: "略称"
|
||||||
shortNameDescription: "サーバーの名前が長い時に、代わりに表示することのできるあだ名。"
|
shortNameDescription: "サーバーの名前が長い時に、代わりに表示することのできるあだ名。"
|
||||||
_accountMigration:
|
_accountMigration:
|
||||||
moveFrom: "別のアカウントからこのアカウントに引っ越す"
|
moveFrom: "別のアカウントからこのアカウントに引っ越す"
|
||||||
@ -1396,6 +1428,9 @@ _achievements:
|
|||||||
title: "Brain Diver"
|
title: "Brain Diver"
|
||||||
description: "Brain Diverへのリンクを投稿したった"
|
description: "Brain Diverへのリンクを投稿したった"
|
||||||
flavor: "Misskey-Misskey La-Tu-Ma"
|
flavor: "Misskey-Misskey La-Tu-Ma"
|
||||||
|
_smashTestNotificationButton:
|
||||||
|
title: "テスト過剰"
|
||||||
|
description: "通知テストをごく短時間のうちに連続して行ったねん"
|
||||||
_role:
|
_role:
|
||||||
new: "ロールの作成"
|
new: "ロールの作成"
|
||||||
edit: "ロールの編集"
|
edit: "ロールの編集"
|
||||||
@ -1453,6 +1488,7 @@ _role:
|
|||||||
descriptionOfRateLimitFactor: "ちっちゃいほど制限が緩なって、大きいほど制限されるで。"
|
descriptionOfRateLimitFactor: "ちっちゃいほど制限が緩なって、大きいほど制限されるで。"
|
||||||
canHideAds: "広告を表示させへん"
|
canHideAds: "広告を表示させへん"
|
||||||
canSearchNotes: "ノート検索を使わすかどうか"
|
canSearchNotes: "ノート検索を使わすかどうか"
|
||||||
|
canUseTranslator: "翻訳機能の利用"
|
||||||
_condition:
|
_condition:
|
||||||
isLocal: "ローカルユーザー"
|
isLocal: "ローカルユーザー"
|
||||||
isRemote: "リモートユーザー"
|
isRemote: "リモートユーザー"
|
||||||
@ -1501,6 +1537,10 @@ _ad:
|
|||||||
reduceFrequencyOfThisAd: "この広告の表示頻度を下げるで"
|
reduceFrequencyOfThisAd: "この広告の表示頻度を下げるで"
|
||||||
hide: "表示せん"
|
hide: "表示せん"
|
||||||
timezoneinfo: "曜日はサーバーのタイムゾーンを元に指定されるで。"
|
timezoneinfo: "曜日はサーバーのタイムゾーンを元に指定されるで。"
|
||||||
|
adsSettings: "広告配信設定"
|
||||||
|
notesPerOneAd: "リアタイ更新中に広告を出す間隔(ノートの個数な)"
|
||||||
|
setZeroToDisable: "0でリアタイ更新時の広告配信を無効にすんで"
|
||||||
|
adsTooClose: "広告を出す間隔がめっちゃ短いから、ユーザー体験が著しく損なわれる可能性があんで。"
|
||||||
_forgotPassword:
|
_forgotPassword:
|
||||||
enterEmail: "アカウントに登録したメールアドレスをここに入力してや。そのアドレス宛に、パスワードリセット用のリンクが送られるから待っててな~。"
|
enterEmail: "アカウントに登録したメールアドレスをここに入力してや。そのアドレス宛に、パスワードリセット用のリンクが送られるから待っててな~。"
|
||||||
ifNoEmail: "メールアドレスを登録してへんのやったら、管理者まで教えてな~。"
|
ifNoEmail: "メールアドレスを登録してへんのやったら、管理者まで教えてな~。"
|
||||||
@ -1700,6 +1740,7 @@ _2fa:
|
|||||||
step1: "ほんなら、{a}や{b}とかの認証アプリを使っとるデバイスにインストールしてな。"
|
step1: "ほんなら、{a}や{b}とかの認証アプリを使っとるデバイスにインストールしてな。"
|
||||||
step2: "次に、ここにあるQRコードをアプリでスキャンしてな~。"
|
step2: "次に、ここにあるQRコードをアプリでスキャンしてな~。"
|
||||||
step2Click: "QRコードをクリックすると、今使とる端末に入っとる認証アプリとかキーリングに登録できるで。"
|
step2Click: "QRコードをクリックすると、今使とる端末に入っとる認証アプリとかキーリングに登録できるで。"
|
||||||
|
step2Uri: "デスクトップアプリを使う時は次のURIを入れるで"
|
||||||
step3Title: "確認コードを入れてーや"
|
step3Title: "確認コードを入れてーや"
|
||||||
step3: "アプリに表示されているトークンを入力して終わりや。"
|
step3: "アプリに表示されているトークンを入力して終わりや。"
|
||||||
setupCompleted: "設定が完了したで。"
|
setupCompleted: "設定が完了したで。"
|
||||||
@ -1718,6 +1759,7 @@ _2fa:
|
|||||||
renewTOTPOk: "もっかい設定する"
|
renewTOTPOk: "もっかい設定する"
|
||||||
renewTOTPCancel: "やめとく"
|
renewTOTPCancel: "やめとく"
|
||||||
checkBackupCodesBeforeCloseThisWizard: "このウィザードを閉じる前に、したのバックアップコードを確認しいや。"
|
checkBackupCodesBeforeCloseThisWizard: "このウィザードを閉じる前に、したのバックアップコードを確認しいや。"
|
||||||
|
backupCodes: "バックアップコード"
|
||||||
backupCodesDescription: "認証アプリが使用できんなった場合、以下のバックアップコードを使ってアカウントにアクセスできるで。これらのコードは必ず安全な場所に置いときや。各コードは一回だけ使用できるで。"
|
backupCodesDescription: "認証アプリが使用できんなった場合、以下のバックアップコードを使ってアカウントにアクセスできるで。これらのコードは必ず安全な場所に置いときや。各コードは一回だけ使用できるで。"
|
||||||
backupCodeUsedWarning: "バックアップコードが使用されたで。認証アプリが使えなくなってるん場合、なるべく早く認証アプリを再設定しや。"
|
backupCodeUsedWarning: "バックアップコードが使用されたで。認証アプリが使えなくなってるん場合、なるべく早く認証アプリを再設定しや。"
|
||||||
backupCodesExhaustedWarning: "バックアップコードが全て使用されたで。認証アプリを利用できん場合、これ以上アカウントにアクセスできなくなるで。認証アプリを再登録しや。"
|
backupCodesExhaustedWarning: "バックアップコードが全て使用されたで。認証アプリを利用できん場合、これ以上アカウントにアクセスできなくなるで。認証アプリを再登録しや。"
|
||||||
@ -1773,6 +1815,7 @@ _antennaSources:
|
|||||||
homeTimeline: "フォローしとるユーザーのノート"
|
homeTimeline: "フォローしとるユーザーのノート"
|
||||||
users: "選らんだ一人か複数のユーザーのノート"
|
users: "選らんだ一人か複数のユーザーのノート"
|
||||||
userList: "選んだリストのユーザーのノート"
|
userList: "選んだリストのユーザーのノート"
|
||||||
|
userBlacklist: "選んだ1人か複数のユーザーのノート"
|
||||||
_weekday:
|
_weekday:
|
||||||
sunday: "日曜日"
|
sunday: "日曜日"
|
||||||
monday: "月曜日"
|
monday: "月曜日"
|
||||||
@ -1872,6 +1915,7 @@ _profile:
|
|||||||
metadataContent: "内容"
|
metadataContent: "内容"
|
||||||
changeAvatar: "アバター画像を変更するで"
|
changeAvatar: "アバター画像を変更するで"
|
||||||
changeBanner: "バナー画像を変更するで"
|
changeBanner: "バナー画像を変更するで"
|
||||||
|
verifiedLinkDescription: "内容をURLに設定すると、リンク先のwebサイトに自分のプロフのリンクが含まれてる場合に所有者確認済みアイコンを表示させることができるで。"
|
||||||
_exportOrImport:
|
_exportOrImport:
|
||||||
allNotes: "全てのノート"
|
allNotes: "全てのノート"
|
||||||
favoritedNotes: "お気に入りにしたノート"
|
favoritedNotes: "お気に入りにしたノート"
|
||||||
@ -1881,6 +1925,7 @@ _exportOrImport:
|
|||||||
userLists: "リスト"
|
userLists: "リスト"
|
||||||
excludeMutingUsers: "ミュートしてるユーザーは入れんとくわ"
|
excludeMutingUsers: "ミュートしてるユーザーは入れんとくわ"
|
||||||
excludeInactiveUsers: "使われてなさそうなアカウントは入れんとくわ"
|
excludeInactiveUsers: "使われてなさそうなアカウントは入れんとくわ"
|
||||||
|
withReplies: "インポートした人による返信をTLに含むようにすんで。"
|
||||||
_charts:
|
_charts:
|
||||||
federation: "連合"
|
federation: "連合"
|
||||||
apRequest: "リクエスト"
|
apRequest: "リクエスト"
|
||||||
@ -1990,14 +2035,17 @@ _notification:
|
|||||||
youReceivedFollowRequest: "フォロー許可してほしいみたいやな"
|
youReceivedFollowRequest: "フォロー許可してほしいみたいやな"
|
||||||
yourFollowRequestAccepted: "フォローさせてもろたで"
|
yourFollowRequestAccepted: "フォローさせてもろたで"
|
||||||
pollEnded: "アンケートの結果が出たみたいや"
|
pollEnded: "アンケートの結果が出たみたいや"
|
||||||
|
newNote: "さらの投稿"
|
||||||
unreadAntennaNote: "アンテナ {name}"
|
unreadAntennaNote: "アンテナ {name}"
|
||||||
emptyPushNotificationMessage: "プッシュ通知の更新をしといたで"
|
emptyPushNotificationMessage: "プッシュ通知の更新をしといたで"
|
||||||
achievementEarned: "実績を獲得しとるで"
|
achievementEarned: "実績を獲得しとるで"
|
||||||
|
testNotification: "通知テスト"
|
||||||
checkNotificationBehavior: "通知の表示を確かめるで"
|
checkNotificationBehavior: "通知の表示を確かめるで"
|
||||||
sendTestNotification: "テスト通知を送信するで"
|
sendTestNotification: "テスト通知を送信するで"
|
||||||
notificationWillBeDisplayedLikeThis: "通知はこのように表示されるで"
|
notificationWillBeDisplayedLikeThis: "通知はこのように表示されるで"
|
||||||
_types:
|
_types:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
|
note: "あんたらの新規投稿"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
reply: "リプライ"
|
reply: "リプライ"
|
||||||
@ -2032,6 +2080,7 @@ _deck:
|
|||||||
widgetsIntroduction: "カラムのメニューから、「ウィジェットの編集」を選んでウィジェットを追加してなー"
|
widgetsIntroduction: "カラムのメニューから、「ウィジェットの編集」を選んでウィジェットを追加してなー"
|
||||||
useSimpleUiForNonRootPages: "非ルートページは簡易UIで表示"
|
useSimpleUiForNonRootPages: "非ルートページは簡易UIで表示"
|
||||||
usedAsMinWidthWhenFlexible: "「幅を自動調整」が有効の場合、これが幅の最小値となるで"
|
usedAsMinWidthWhenFlexible: "「幅を自動調整」が有効の場合、これが幅の最小値となるで"
|
||||||
|
flexible: "幅を自動調整"
|
||||||
_columns:
|
_columns:
|
||||||
main: "メイン"
|
main: "メイン"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
@ -2067,6 +2116,41 @@ _webhookSettings:
|
|||||||
reaction: "ツッコミがあるとき~!"
|
reaction: "ツッコミがあるとき~!"
|
||||||
mention: "メンションがあるとき~!"
|
mention: "メンションがあるとき~!"
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
|
createRole: "ロールを追加すんで"
|
||||||
|
deleteRole: "ロールほかす"
|
||||||
|
updateRole: "ロールの更新すんで"
|
||||||
|
assignRole: "ロールへアサイン"
|
||||||
|
unassignRole: "ロールのアサインほかす"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
|
unsuspend: "凍結解除"
|
||||||
|
addCustomEmoji: "自由な絵文字追加されたで"
|
||||||
|
updateCustomEmoji: "自由な絵文字更新されたで"
|
||||||
|
deleteCustomEmoji: "自由な絵文字消されたで"
|
||||||
|
updateServerSettings: "サーバー設定更新すんねん"
|
||||||
|
updateUserNote: "モデレーションノート更新"
|
||||||
|
deleteDriveFile: "ファイルをほかす"
|
||||||
|
deleteNote: "ノートを削除"
|
||||||
|
createGlobalAnnouncement: "みんなへの通告を作成したで"
|
||||||
|
createUserAnnouncement: "あんたらへの通告を作成したで"
|
||||||
|
updateGlobalAnnouncement: "みんなへの通告更新したったで"
|
||||||
|
updateUserAnnouncement: "あんたらへの通告更新したったで"
|
||||||
|
deleteGlobalAnnouncement: "みんなへの通告消したったで"
|
||||||
|
deleteUserAnnouncement: "あんたらへのお知らせを削除"
|
||||||
resetPassword: "パスワードをリセット"
|
resetPassword: "パスワードをリセット"
|
||||||
|
suspendRemoteInstance: "リモートサーバーを止めんで"
|
||||||
|
unsuspendRemoteInstance: "リモートサーバーを再開すんで"
|
||||||
|
markSensitiveDriveFile: "ファイルをセンシティブ付与"
|
||||||
|
unmarkSensitiveDriveFile: "ファイルをセンシティブ解除"
|
||||||
|
resolveAbuseReport: "苦情を解決"
|
||||||
createInvitation: "招待コードを作成"
|
createInvitation: "招待コードを作成"
|
||||||
|
createAd: "広告を作んで"
|
||||||
|
deleteAd: "広告ほかす"
|
||||||
|
updateAd: "広告を更新"
|
||||||
|
_fileViewer:
|
||||||
|
title: "ファイルの詳しい情報"
|
||||||
|
type: "ファイルの種類"
|
||||||
|
size: "ファイルのでかさ"
|
||||||
|
url: "URL"
|
||||||
|
uploadedAt: "追加した日"
|
||||||
|
attachedNotes: "ファイルがついてきてるノート"
|
||||||
|
thisPageCanBeSeenFromTheAuthor: "このページはこのファイルをアップした人しか見れへんねん。"
|
||||||
|
@ -1,4 +1,19 @@
|
|||||||
---
|
---
|
||||||
_lang_: "ياپونچە"
|
_lang_: "ياپونچە"
|
||||||
|
headlineMisskey: "خاتىرە ئارقىلىق ئۇلانغان تور"
|
||||||
|
monthAndDay: "{day}-{month}"
|
||||||
search: "ئىزدەش"
|
search: "ئىزدەش"
|
||||||
|
ok: "ماقۇل"
|
||||||
|
noThankYou: "ئۇنى توختىتىڭ"
|
||||||
|
profile: "profile"
|
||||||
|
login: "كىرىش"
|
||||||
|
loggingIn: "كىرىش"
|
||||||
|
pin: "pinned"
|
||||||
|
delete: "ئۆچۈرۈش"
|
||||||
|
pinned: "pinned"
|
||||||
|
remove: "ئۆچۈرۈش"
|
||||||
searchByGoogle: "ئىزدەش"
|
searchByGoogle: "ئىزدەش"
|
||||||
|
_2fa:
|
||||||
|
renewTOTPCancel: "ئۇنى توختىتىڭ"
|
||||||
|
_widgets:
|
||||||
|
profile: "profile"
|
||||||
|
@ -195,6 +195,7 @@ perHour: "每小时"
|
|||||||
perDay: "每天"
|
perDay: "每天"
|
||||||
stopActivityDelivery: "停止发送活动"
|
stopActivityDelivery: "停止发送活动"
|
||||||
blockThisInstance: "阻止此服务器向本服务器推流"
|
blockThisInstance: "阻止此服务器向本服务器推流"
|
||||||
|
silenceThisInstance: "使服务器静音"
|
||||||
operations: "操作"
|
operations: "操作"
|
||||||
software: "软件"
|
software: "软件"
|
||||||
version: "版本"
|
version: "版本"
|
||||||
@ -214,6 +215,8 @@ clearCachedFiles: "清除缓存"
|
|||||||
clearCachedFilesConfirm: "确定要清除缓存文件?"
|
clearCachedFilesConfirm: "确定要清除缓存文件?"
|
||||||
blockedInstances: "被封锁的服务器"
|
blockedInstances: "被封锁的服务器"
|
||||||
blockedInstancesDescription: "设定要封锁的服务器,以换行来进行分割。被封锁的服务器将无法与本服务器进行交换通讯。子域名也同样会被封锁。"
|
blockedInstancesDescription: "设定要封锁的服务器,以换行来进行分割。被封锁的服务器将无法与本服务器进行交换通讯。子域名也同样会被封锁。"
|
||||||
|
silencedInstances: "沉默的服务器"
|
||||||
|
silencedInstancesDescription: "设置要静音的服务器的主机,以换行符分隔。属于静默服务器的所有帐户都将被视为“静默”,所有关注都将成为请求,并且您将无法提及非关注者的本地帐户。被阻止的实例不受影响。"
|
||||||
muteAndBlock: "屏蔽/拉黑"
|
muteAndBlock: "屏蔽/拉黑"
|
||||||
mutedUsers: "已屏蔽用户"
|
mutedUsers: "已屏蔽用户"
|
||||||
blockedUsers: "已拉黑的用户"
|
blockedUsers: "已拉黑的用户"
|
||||||
@ -2127,3 +2130,6 @@ _moderationLogTypes:
|
|||||||
createAd: "创建了广告"
|
createAd: "创建了广告"
|
||||||
deleteAd: "删除了广告"
|
deleteAd: "删除了广告"
|
||||||
updateAd: "更新了广告"
|
updateAd: "更新了广告"
|
||||||
|
_fileViewer:
|
||||||
|
url: "URL"
|
||||||
|
uploadedAt: "添加日期"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"version": "2023.10.2-beta.2",
|
"version": "2023.10.2",
|
||||||
"codename": "nasubi",
|
"codename": "nasubi",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -322,7 +322,11 @@ export class UserEntityService implements OnModuleInit {
|
|||||||
|
|
||||||
const isModerator = isMe && opts.detail ? this.roleService.isModerator(user) : null;
|
const isModerator = isMe && opts.detail ? this.roleService.isModerator(user) : null;
|
||||||
const isAdmin = isMe && opts.detail ? this.roleService.isAdministrator(user) : null;
|
const isAdmin = isMe && opts.detail ? this.roleService.isAdministrator(user) : null;
|
||||||
const unreadAnnouncements = isMe && opts.detail ? await this.announcementService.getUnreadAnnouncements(user) : null;
|
const unreadAnnouncements = isMe && opts.detail ?
|
||||||
|
(await this.announcementService.getUnreadAnnouncements(user)).map((announcement) => ({
|
||||||
|
createdAt: this.idService.parse(announcement.id).date.toISOString(),
|
||||||
|
...announcement,
|
||||||
|
})) : null;
|
||||||
|
|
||||||
const falsy = opts.detail ? false : undefined;
|
const falsy = opts.detail ? false : undefined;
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<MkA v-user-preview="canonical" :class="[$style.root, { [$style.isMe]: isMe }]" :to="url" :style="{ background: bgCss }">
|
<MkA v-user-preview="canonical" :class="[$style.root, { [$style.isMe]: isMe }]" :to="url" :style="{ background: bgCss }">
|
||||||
<img :class="$style.icon" :src="`/avatar/@${username}@${host}`" alt="">
|
<img :class="$style.icon" :src="avatarUrl" alt="">
|
||||||
<span>
|
<span>
|
||||||
<span>@{{ username }}</span>
|
<span>@{{ username }}</span>
|
||||||
<span v-if="(host != localHost) || defaultStore.state.showFullAcct" :class="$style.host">@{{ toUnicode(host) }}</span>
|
<span v-if="(host != localHost) || defaultStore.state.showFullAcct" :class="$style.host">@{{ toUnicode(host) }}</span>
|
||||||
@ -15,11 +15,12 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { toUnicode } from 'punycode';
|
import { toUnicode } from 'punycode';
|
||||||
import { } from 'vue';
|
import { computed } from 'vue';
|
||||||
import tinycolor from 'tinycolor2';
|
import tinycolor from 'tinycolor2';
|
||||||
import { host as localHost } from '@/config.js';
|
import { host as localHost } from '@/config.js';
|
||||||
import { $i } from '@/account.js';
|
import { $i } from '@/account.js';
|
||||||
import { defaultStore } from '@/store.js';
|
import { defaultStore } from '@/store.js';
|
||||||
|
import { getStaticImageUrl } from '@/scripts/media-proxy.js';
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
username: string;
|
username: string;
|
||||||
@ -37,6 +38,11 @@ const isMe = $i && (
|
|||||||
const bg = tinycolor(getComputedStyle(document.documentElement).getPropertyValue(isMe ? '--mentionMe' : '--mention'));
|
const bg = tinycolor(getComputedStyle(document.documentElement).getPropertyValue(isMe ? '--mentionMe' : '--mention'));
|
||||||
bg.setAlpha(0.1);
|
bg.setAlpha(0.1);
|
||||||
const bgCss = bg.toRgbString();
|
const bgCss = bg.toRgbString();
|
||||||
|
|
||||||
|
const avatarUrl = computed(() => defaultStore.state.disableShowingAnimatedImages
|
||||||
|
? getStaticImageUrl(`/avatar/@${props.username}@${props.host}`)
|
||||||
|
: `/avatar/@${props.username}@${props.host}`,
|
||||||
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" module>
|
<style lang="scss" module>
|
||||||
|
@ -283,6 +283,12 @@ useTooltip(reactionRef, (showing) => {
|
|||||||
|
|
||||||
.quote:first-child {
|
.quote:first-child {
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
position: absolute;
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.quote:last-child {
|
.quote:last-child {
|
||||||
|
Loading…
Reference in New Issue
Block a user