From a59ec64103a256313be9d75e789f6797cef04321 Mon Sep 17 00:00:00 2001 From: Memo Date: Wed, 16 Aug 2023 09:49:43 +0000 Subject: [PATCH 01/12] chore: Translated using Weblate (German) Currently translated at 100.0% (1850 of 1850 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ --- locales/de-DE.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index d58896da84..cae0a1ea08 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -1945,7 +1945,7 @@ _notification: renote: "Renote" voted: haben bei deiner Umfrage abgestimmt reacted: hat auf deinen Beitrag reagiert - renoted: hat Ihren Beitrag geteilt + renoted: hat deinen Beitrag geteilt _deck: alwaysShowMainColumn: "Hauptspalte immer zeigen" columnAlign: "Spaltenausrichtung" From 825f23bf5d17145558b4021ce339194ae267bb31 Mon Sep 17 00:00:00 2001 From: Xalis Ratt Date: Tue, 15 Aug 2023 10:16:47 +0000 Subject: [PATCH 02/12] chore: Translated using Weblate (Ukrainian) Currently translated at 100.0% (1850 of 1850 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/uk/ --- locales/uk-UA.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml index 50910e8224..f1c9dab4b4 100644 --- a/locales/uk-UA.yml +++ b/locales/uk-UA.yml @@ -305,7 +305,7 @@ emptyDrive: "Диск порожній" emptyFolder: "Тека порожня" unableToDelete: "Видалення неможливе" inputNewFileName: "Введіть ім'я нового файлу" -inputNewDescription: "Введіть новий заголовок" +inputNewDescription: "Введіть новий опис" inputNewFolderName: "Введіть ім'я нової теки" circularReferenceFolder: "Ви намагаєтесь перемістити папку в її підпапку." hasChildFilesOrFolders: "Ця тека не порожня і не може бути видалена." @@ -591,8 +591,8 @@ disablePlayer: "Закрити відеоплеєр" expandTweet: "Розгорнути твіт" themeEditor: "Редактор тем" description: "Опис" -describeFile: "Додати підпис" -enterFileDescription: "Введіть підпис" +describeFile: "Додати опис" +enterFileDescription: "Введіть опис" author: "Автор" leaveConfirm: "Зміни не збережені. Ви дійсно хочете скасувати зміни?" manage: "Управління" @@ -1985,7 +1985,7 @@ showUpdates: Показувати спливаюче вікно при онов updateAvailable: Можливо, є доступне оновлення! recommendedInstancesDescription: Рекомендовані сервери відокремлюються переведенням рядка, щоб з'явитися на стрічці рекомендацій. -caption: Автоматичний підпис +caption: Автоматичний опис showAdminUpdates: Вказати, що доступна нова версія Firefish (тільки для адміністратора) defaultReaction: Емодзі реакція за замовчуванням для вихідних і вхідних записів license: Ліцензія @@ -2151,3 +2151,7 @@ deletePasskeysConfirm: Це видалить усі ключ-паролі і к записі без можливости відмінити цю дію. Продовжити? addRe: Додати "re:" на початку коментаря у відповідь на запис із попередженням про вміст +confirm: Підтвердити +importZip: Імпортувати ZIP +exportZip: Експортувати ZIP +emojiPackCreator: Генератор паків емодзі From 5520c6ff3d23ea5aea58c87b924b260eef82cefa Mon Sep 17 00:00:00 2001 From: Namekuji Date: Fri, 18 Aug 2023 04:57:19 -0400 Subject: [PATCH 03/12] fix: veiry url --- .../backend/src/services/drive/upload-from-url.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/services/drive/upload-from-url.ts b/packages/backend/src/services/drive/upload-from-url.ts index 9d71757e35..e3ee875c53 100644 --- a/packages/backend/src/services/drive/upload-from-url.ts +++ b/packages/backend/src/services/drive/upload-from-url.ts @@ -23,6 +23,9 @@ type Args = { requestHeaders?: Record | null; }; +const PRIVATE_IP = + /(^127\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)/; + export async function uploadFromUrl({ url, user, @@ -35,7 +38,15 @@ export async function uploadFromUrl({ requestIp = null, requestHeaders = null, }: Args): Promise { - let name = new URL(url).pathname.split("/").pop() || null; + const parsedUrl = new URL(url); + if ( + process.env.NODE_ENV === "production" && + PRIVATE_IP.test(parsedUrl.hostname) + ) { + throw new Error("Private IP is not allowed"); + } + + let name = parsedUrl.pathname.split("/").pop() || null; if (name == null || !DriveFiles.validateFileName(name)) { name = null; } From cd75d652717ae8b5c7b9b6576c9aad533fd7ab0a Mon Sep 17 00:00:00 2001 From: Namekuji Date: Fri, 18 Aug 2023 05:01:19 -0400 Subject: [PATCH 04/12] fix: exclude localhost --- packages/backend/src/services/drive/upload-from-url.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/services/drive/upload-from-url.ts b/packages/backend/src/services/drive/upload-from-url.ts index e3ee875c53..d9d68d03c8 100644 --- a/packages/backend/src/services/drive/upload-from-url.ts +++ b/packages/backend/src/services/drive/upload-from-url.ts @@ -41,7 +41,8 @@ export async function uploadFromUrl({ const parsedUrl = new URL(url); if ( process.env.NODE_ENV === "production" && - PRIVATE_IP.test(parsedUrl.hostname) + (PRIVATE_IP.test(parsedUrl.hostname) || + parsedUrl.hostname.includes("localhost")) ) { throw new Error("Private IP is not allowed"); } From c3944f49ef784a32e28b1668b8b4eafe8d276609 Mon Sep 17 00:00:00 2001 From: Namekuji Date: Fri, 18 Aug 2023 05:40:07 -0400 Subject: [PATCH 05/12] fix: exclude ula and lla --- packages/backend/src/services/drive/upload-from-url.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/backend/src/services/drive/upload-from-url.ts b/packages/backend/src/services/drive/upload-from-url.ts index d9d68d03c8..6e6059960f 100644 --- a/packages/backend/src/services/drive/upload-from-url.ts +++ b/packages/backend/src/services/drive/upload-from-url.ts @@ -23,8 +23,9 @@ type Args = { requestHeaders?: Record | null; }; -const PRIVATE_IP = - /(^127\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)/; +const PRIVATE_IPV4 = + /(^127\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)|(^0\.)/; +const PRIVATE_IPV6 = /(f[c-e][0-9a-f][0-9a-f]:)|(F[C-E][0-9A-F][0-9A-F]:)|(::)/; export async function uploadFromUrl({ url, @@ -41,7 +42,8 @@ export async function uploadFromUrl({ const parsedUrl = new URL(url); if ( process.env.NODE_ENV === "production" && - (PRIVATE_IP.test(parsedUrl.hostname) || + (PRIVATE_IPV4.test(parsedUrl.hostname) || + PRIVATE_IPV6.test(parsedUrl.hostname) || parsedUrl.hostname.includes("localhost")) ) { throw new Error("Private IP is not allowed"); From ad93bc80f832f2594d4a2654ac4d4be275eb4774 Mon Sep 17 00:00:00 2001 From: Namekuji Date: Fri, 18 Aug 2023 05:51:41 -0400 Subject: [PATCH 06/12] refactor: remove regex --- packages/backend/src/misc/download-url.ts | 2 +- packages/backend/src/services/drive/upload-from-url.ts | 10 ++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/packages/backend/src/misc/download-url.ts b/packages/backend/src/misc/download-url.ts index e9975f3486..83680c175f 100644 --- a/packages/backend/src/misc/download-url.ts +++ b/packages/backend/src/misc/download-url.ts @@ -92,7 +92,7 @@ export async function downloadUrl(url: string, path: string): Promise { logger.succ(`Download finished: ${chalk.cyan(url)}`); } -function isPrivateIp(ip: string): boolean { +export function isPrivateIp(ip: string): boolean { for (const net of config.allowedPrivateNetworks || []) { const cidr = new IPCIDR(net); if (cidr.contains(ip)) { diff --git a/packages/backend/src/services/drive/upload-from-url.ts b/packages/backend/src/services/drive/upload-from-url.ts index 6e6059960f..abbefbbf6b 100644 --- a/packages/backend/src/services/drive/upload-from-url.ts +++ b/packages/backend/src/services/drive/upload-from-url.ts @@ -1,7 +1,7 @@ import { URL } from "node:url"; import type { User } from "@/models/entities/user.js"; import { createTemp } from "@/misc/create-temp.js"; -import { downloadUrl } from "@/misc/download-url.js"; +import { downloadUrl, isPrivateIp } from "@/misc/download-url.js"; import type { DriveFolder } from "@/models/entities/drive-folder.js"; import type { DriveFile } from "@/models/entities/drive-file.js"; import { DriveFiles } from "@/models/index.js"; @@ -23,10 +23,6 @@ type Args = { requestHeaders?: Record | null; }; -const PRIVATE_IPV4 = - /(^127\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)|(^0\.)/; -const PRIVATE_IPV6 = /(f[c-e][0-9a-f][0-9a-f]:)|(F[C-E][0-9A-F][0-9A-F]:)|(::)/; - export async function uploadFromUrl({ url, user, @@ -42,9 +38,7 @@ export async function uploadFromUrl({ const parsedUrl = new URL(url); if ( process.env.NODE_ENV === "production" && - (PRIVATE_IPV4.test(parsedUrl.hostname) || - PRIVATE_IPV6.test(parsedUrl.hostname) || - parsedUrl.hostname.includes("localhost")) + isPrivateIp(parsedUrl.hostname) ) { throw new Error("Private IP is not allowed"); } From dc2fde0a75e1e3884671d73e798c52e7240a57a7 Mon Sep 17 00:00:00 2001 From: Namekuji Date: Fri, 18 Aug 2023 06:22:51 -0400 Subject: [PATCH 07/12] fix: remove brackets --- packages/backend/src/services/drive/upload-from-url.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/src/services/drive/upload-from-url.ts b/packages/backend/src/services/drive/upload-from-url.ts index abbefbbf6b..0638bcab89 100644 --- a/packages/backend/src/services/drive/upload-from-url.ts +++ b/packages/backend/src/services/drive/upload-from-url.ts @@ -38,7 +38,7 @@ export async function uploadFromUrl({ const parsedUrl = new URL(url); if ( process.env.NODE_ENV === "production" && - isPrivateIp(parsedUrl.hostname) + isPrivateIp(parsedUrl.hostname.replaceAll(/(\[)|(\])/g, "")) ) { throw new Error("Private IP is not allowed"); } From 4a848adc344184821581a5b53c61574e8109e7d1 Mon Sep 17 00:00:00 2001 From: EpicKitty Date: Fri, 18 Aug 2023 21:28:04 +0000 Subject: [PATCH 08/12] =?UTF-8?q?fix:=20=F0=9F=9A=91=20thumbnail=20serving?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/backend/src/server/file/send-drive-file.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/backend/src/server/file/send-drive-file.ts b/packages/backend/src/server/file/send-drive-file.ts index 9c70770910..1c4d4136b5 100644 --- a/packages/backend/src/server/file/send-drive-file.ts +++ b/packages/backend/src/server/file/send-drive-file.ts @@ -167,7 +167,6 @@ export default async function (ctx: Koa.Context) { return; } - ctx.length = file.size; ctx.set("Content-Disposition", contentDisposition("inline", filename)); ctx.set("Content-Type", contentType); @@ -192,7 +191,6 @@ export default async function (ctx: Koa.Context) { ctx.set("Accept-Ranges", "bytes"); } else { ctx.status = 206; - ctx.length = readable.size; readable.on("close", async () => { await fileHandle.close(); }); From 58d5b76edb66de768ff7c10588247d53165f5785 Mon Sep 17 00:00:00 2001 From: naskya Date: Fri, 18 Aug 2023 22:27:57 +0000 Subject: [PATCH 09/12] regard x.com as twitter in MkUrlPreview.vue --- packages/client/src/components/MkUrlPreview.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/client/src/components/MkUrlPreview.vue b/packages/client/src/components/MkUrlPreview.vue index 4e37805986..f7326caf2b 100644 --- a/packages/client/src/components/MkUrlPreview.vue +++ b/packages/client/src/components/MkUrlPreview.vue @@ -139,8 +139,7 @@ if (!["http:", "https:"].includes(requestUrl.protocol)) throw new Error("invalid url"); if ( - requestUrl.hostname === "twitter.com" || - requestUrl.hostname === "mobile.twitter.com" + ["twitter.com", "mobile.twitter.com", "x.com"].includes(requestUrl.hostname) ) { const m = requestUrl.pathname.match(/^\/.+\/status(?:es)?\/(\d+)/); if (m) tweetId.value = m[1]; From 8a72800611f42b036602ede06ef19135f7c9e51b Mon Sep 17 00:00:00 2001 From: naskya Date: Sat, 19 Aug 2023 02:20:16 +0000 Subject: [PATCH 10/12] note -> post --- locales/en-US.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index 60784310f3..2658327907 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -51,7 +51,7 @@ deleted: "Deleted" deleteAndEdit: "Delete and edit" deleteAndEditConfirm: "Are you sure you want to delete this post and edit it? You will lose all reactions, boosts and replies to it." -editNote: "Edit note" +editNote: "Edit post" edited: "Edited at {date} {time}" addToList: "Add to list" sendMessage: "Send a message" From 0cdcd05ea6f2bbbda1f08d6c8ee4f9ef041a47b8 Mon Sep 17 00:00:00 2001 From: "@DDoSkiray@ddoskey.com" Date: Fri, 18 Aug 2023 10:21:31 +0000 Subject: [PATCH 11/12] chore: Translated using Weblate (Japanese) Currently translated at 100.0% (1850 of 1850 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja/ --- locales/ja-JP.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 43436b996d..7aeccbc215 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -849,7 +849,7 @@ filter: "フィルタ" controlPanel: "コントロールパネル" manageAccounts: "アカウントを管理" makeReactionsPublic: "リアクション一覧を公開する" -makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見れるようにします。" +makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見られるようにします。" classic: "中央寄せ" muteThread: "スレッドをミュート" unmuteThread: "スレッドのミュートを解除" From 1b1a7ad27d3fbb5dc73a1c721a60c99c343d74cb Mon Sep 17 00:00:00 2001 From: "@DDoSkiray@ddoskey.com" Date: Fri, 18 Aug 2023 10:40:19 +0000 Subject: [PATCH 12/12] chore: Translated using Weblate (Japanese (Kansai)) Currently translated at 69.1% (1280 of 1850 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja_KS/ --- locales/ja-KS.yml | 186 +++++++++++++++++++++++++--------------------- 1 file changed, 101 insertions(+), 85 deletions(-) diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 4e95bfc8ed..991fd717ca 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -1,7 +1,7 @@ ---- _lang_: "日本語 (関西弁)" -headlineFirefish: "ノートでつながるネットワーク" -introFirefish: "ようお越し!Misskeyは、オープンソースの分散型マイクロブログサービスやねん。\n「ノート」を作って、いま起こっとることを共有したり、あんたについて皆に発信しよう📡\n「リアクション」機能で、皆のノートに素早く反応を追加したりもできるで✌\nほな新しい世界を探検しよか🚀" +headlineFirefish: "ずっとタダでオープンソースの非中央集権型ソーシャルメディアプラットフォーム!🚀" +introFirefish: "おおきに!Firefishは、オープンソースの分散型ソーシャルメディアプラットフォームやねん。\nいま起こっとるもんをシェアしたり、あんたについてみんなに発信したりしようや📡\n\ + 「リアクション」機能で、みんなの投稿に素早く反応を送ったりもできるんやで✌\nほな、新しい世界を探検しにいこか🚀" monthAndDay: "{month}月 {day}日" search: "探す" notifications: "通知" @@ -13,10 +13,10 @@ ok: "OKや" gotIt: "ほい" cancel: "やめとく" enterUsername: "ユーザー名を入れてや" -renotedBy: "{user}がRenote" -noNotes: "ノートはあらへん" +renotedBy: "{user}がブースト" +noNotes: "投稿はありまへん" noNotifications: "通知はあらへん" -instance: "インスタンス" +instance: "サーバー" settings: "設定" basicSettings: "基本設定" otherSettings: "その他の設定" @@ -44,7 +44,7 @@ copyContent: "内容をコピー" copyLink: "リンクをコピー" delete: "ほかす" deleteAndEdit: "ほかして直す" -deleteAndEditConfirm: "このノートをほかして書き直すんか?このノートへのリアクション、Renote、返信も全部消えてまうで。" +deleteAndEditConfirm: "この投稿をほかして書き直すんか?この投稿へのリアクション、ブースト、返信もみんな消えてまうで。" addToList: "リストに入れたる" sendMessage: "メッセージを送る" copyUsername: "ユーザー名をコピー" @@ -64,14 +64,14 @@ import: "インポート" export: "エクスポート" files: "ファイル" download: "ダウンロード" -driveFileDeleteConfirm: "ファイル「{name}」を消してしもうてええか?このファイルを添付したノートも消えてまうで。" +driveFileDeleteConfirm: "ファイル「{name}」を消してしもうてええか?このファイルを添付した投稿も消えてまうで。" unfollowConfirm: "{name}のフォローを解除してもええんか?" exportRequested: "エクスポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。エクスポート終わったら「ドライブ」に突っ込んどくで。" importRequested: "インポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。" lists: "リスト" noLists: "リストなんてあらへんで" -note: "ノート" -notes: "ノート" +note: "投稿" +notes: "投稿" following: "フォロー" followers: "フォロワー" followsYou: "フォローされとるで" @@ -82,8 +82,10 @@ somethingHappened: "なんかアカンことが起こったで" retry: "もっぺんやる?" pageLoadError: "ページの読み込みに失敗してしもうたで…" pageLoadErrorDescription: "これは普通、ネットワークかブラウザキャッシュが原因やからね。キャッシュをクリアするか、もうちっとだけ待ってくれへんか?" -serverIsDead: "The server is not responding. Please wait for a while before trying again." -youShouldUpgradeClient: "To display this page, please reload and use a new version client. " +serverIsDead: "The server is not responding. Please wait for a while before trying + again." +youShouldUpgradeClient: "To display this page, please reload and use a new version + client. " enterListName: "リスト名を入れてや" privacy: "プライバシー" makeFollowManuallyApprove: "自分が認めた人だけがこのアカウントをフォローできるようにする" @@ -94,13 +96,13 @@ followRequests: "フォロー申請" unfollow: "フォローやめる" followRequestPending: "フォロー許してくれるん待っとる" enterEmoji: "絵文字を入れてや" -renote: "Renote" -unrenote: "Renoteやめる" -renoted: "Renoteしたで。" -cantRenote: "この投稿はRenoteできへんらしい。" -cantReRenote: "Renote自体はRenoteできへんで。" +renote: "ブースト" +unrenote: "ブーストやめる" +renoted: "ブーストしたで。" +cantRenote: "この投稿はブーストでけへんらしい。" +cantReRenote: "ブースト自体はブーストでけへんで。" quote: "引用" -pinnedNote: "ピン留めされとるノート" +pinnedNote: "ピン留めされとる投稿" pinned: "ピン留めしとく" you: "あんた" clickToShow: "押したら見えるで" @@ -139,11 +141,12 @@ settingGuide: "ええ感じの設定" cacheRemoteFiles: "リモートのファイルをキャッシュする" cacheRemoteFilesDescription: "この設定を切っとくと、リモートファイルをキャッシュせず直リンクするようになるで。サーバーの容量は節約できるけど、サムネイルが作られんくなるから通信量が増えるで。" flagAsBot: "Botやで" -flagAsBotDescription: "もしこのアカウントがプログラムによって運用されるんやったら、このフラグをオンにしてたのむで。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Misskeyのシステム上での扱いがBotに合ったもんになるんやで。" +flagAsBotDescription: "もしこのアカウントがプログラムによって運用されるんやったら、このフラグをオンにしてたのむで。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いがBotに合ったもんになったりするんやで。" flagAsCat: "Catやで" flagAsCatDescription: "ワレ、猫ちゃんならこのフラグをつけてみ?" flagShowTimelineReplies: "It will display the reply to the note in the timeline. " -flagShowTimelineRepliesDescription: "It will display the reply to notes other than the user notes in the timeline when you turn it on. " +flagShowTimelineRepliesDescription: "It will display the reply to notes other than + the user notes in the timeline when you turn it on. " autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストを勝手に許可しとく" addAccount: "アカウントを追加" loginFailed: "ログインに失敗してしもうた…" @@ -162,7 +165,7 @@ selectUser: "ユーザーを選ぶ" recipient: "宛先" annotation: "注釈" federation: "連合" -instances: "インスタンス" +instances: "サーバー" registeredAt: "初観測" latestRequestSentAt: "ちょっと前のリクエスト送信" latestRequestReceivedAt: "ちょっと前のリクエスト受信" @@ -172,7 +175,7 @@ charts: "チャート" perHour: "1時間ごと" perDay: "1日ごと" stopActivityDelivery: "アクティビティの配送をやめる" -blockThisInstance: "このインスタンスをブロック" +blockThisInstance: "このサーバーをブロック" operations: "操作" software: "ソフトウェア" version: "バージョン" @@ -182,23 +185,23 @@ jobQueue: "ジョブキュー" cpuAndMemory: "CPUとメモリ" network: "ネットワーク" disk: "ディスク" -instanceInfo: "インスタンス情報" +instanceInfo: "サーバー情報" statistics: "統計" clearQueue: "キューにさいなら" clearQueueConfirmTitle: "キューをクリアしまっか?" clearQueueConfirmText: "未配達の投稿は配送されなくなるで。通常この操作を行う必要はあらへんや。" clearCachedFiles: "キャッシュにさいなら" clearCachedFilesConfirm: "キャッシュされとるリモートファイルをみんなほかしてええか?" -blockedInstances: "インスタンスブロック" -blockedInstancesDescription: "ブロックしたいインスタンスのホストを改行で区切って設定してな。ブロックされてもうたインスタンスとはもう金輪際やり取りできひんくなるで。" +blockedInstances: "ブロックしたサーバー" +blockedInstancesDescription: "ブロックしたいサーバーのホストを改行で区切って設定してな。ブロックされてもうたサーバーとはもう金輪際やり取りできんくなるで。" muteAndBlock: "ミュートとブロック" mutedUsers: "ミュートしたユーザー" blockedUsers: "ブロックしたユーザー" noUsers: "ユーザーはおらへん" editProfile: "プロフィールをいじる" -noteDeleteConfirm: "このノートを削除しまっか?" +noteDeleteConfirm: "この投稿を削除しまっか?" pinLimitExceeded: "これ以上ピン留めできひん" -intro: "Misskeyのインストールが完了してん!管理者アカウントを作ってや。" +intro: "Firefishのインストールが完了してん!管理者アカウントを作ってや。" done: "でけた" processing: "処理しとる" preview: "プレビュー" @@ -213,9 +216,9 @@ all: "みんな" subscribing: "購読しとる" publishing: "配信しとる" notResponding: "応答してへんで" -instanceFollowing: "インスタンスのフォロー" -instanceFollowers: "インスタンスのフォロワー\n" -instanceUsers: "インスタンスのユーザー" +instanceFollowing: "サーバーのフォロー" +instanceFollowers: "サーバーのフォロワー" +instanceUsers: "このサーバーの利用者" changePassword: "パスワード変える" security: "セキュリティ" retypedNotMatch: "そやないねん。" @@ -239,7 +242,8 @@ saved: "保存したで!" messaging: "チャット" upload: "アップロード" keepOriginalUploading: "Retain the original image. " -keepOriginalUploadingDescription: "When uploading the clip, the original version will be retained. Turning it of then uploading will produce images for public use. " +keepOriginalUploadingDescription: "When uploading the clip, the original version will + be retained. Turning it of then uploading will produce images for public use. " fromDrive: "ドライブから" fromUrl: "URLから" uploadFromUrl: "URLアップロード" @@ -305,8 +309,8 @@ unwatch: "ウォッチやめる" accept: "ええで" reject: "あかん" normal: "ええ感じ" -instanceName: "インスタンス名" -instanceDescription: "インスタンスの紹介" +instanceName: "サーバー名" +instanceDescription: "サーバーの紹介" maintainerName: "管理者の名前" maintainerEmail: "管理者のメールアドレス" tosUrl: "利用規約のURL" @@ -336,9 +340,9 @@ basicInfo: "基本情報" pinnedUsers: "ピン留めしたユーザー" pinnedUsersDescription: "「みつける」ページとかにピン留めしたいユーザーをここに書けばええんやで。他ん人との名前は改行で区切ればええんやで。" pinnedPages: "ピン留めページ" -pinnedPagesDescription: "インスタンスのいっちゃん上にピン留めしたいページのパスを改行で区切って記述してな" +pinnedPagesDescription: "サーバーのいっちゃん上にピン留めしたいページのパスを、改行で区切って記述してな。" pinnedClipId: "ピン留めするクリップのID" -pinnedNotes: "ピン留めされとるノート" +pinnedNotes: "ピン留めされとる投稿" hcaptcha: "hCaptcha(キャプチャ)" enableHcaptcha: "hCaptcha(キャプチャ)をつけとく" hcaptchaSiteKey: "サイトキー" @@ -355,8 +359,8 @@ antennaSource: "受信ソース(このソースは食われへん)" antennaKeywords: "受信キーワード" antennaExcludeKeywords: "除外キーワード" antennaKeywordsDescription: "スペースで区切ったるとAND指定で、改行で区切ったるとOR指定や" -notifyAntenna: "新しいノートを通知すんで" -withFileAntenna: "なんか添付されたノートだけ" +notifyAntenna: "新しい投稿を通知すんで" +withFileAntenna: "ファイルが添付された投稿のみ" enableServiceworker: "ServiceWorkerをつこて" antennaUsersDescription: "ユーザー名を改行で区切ったってな" caseSensitive: "大文字と小文字は別もんや" @@ -377,7 +381,7 @@ exploreFediverse: "Fediverseを探ってみる" popularTags: "人気のタグ" userList: "リスト" about: "情報" -aboutFirefish: "Misskeyってなんや?" +aboutFirefish: "Firefishってなんやねん?" administrator: "管理者" token: "トークン" twoStepAuthentication: "二段階認証" @@ -420,7 +424,7 @@ text: "テキスト" enable: "有効にするで" next: "次" retype: "もっかい入力" -noteOf: "{user}のノート" +noteOf: "{user}の投稿" inviteToGroup: "グループに招く" quoteAttached: "引用付いとるで" quoteQuestion: "引用として添付してもええか?" @@ -478,12 +482,13 @@ accountSettings: "アカウントの設定" promotion: "宣伝" promote: "宣伝" numberOfDays: "日数" -hideThisNote: "このノートは表示せんでいい" -showFeaturedNotesInTimeline: "タイムラインにおすすめのノートを表示してや" +hideThisNote: "この投稿は表示せんでいい" +showFeaturedNotesInTimeline: "タイムラインにおすすめの投稿を表示してや" objectStorage: "オブジェクトストレージ" useObjectStorage: "オブジェクトストレージを使う" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "参照に使うにURLやで。CDNやProxyを使用してるんならそのURL、S3: 'https://.s3.amazonaws.com'、GCSとかなら: 'https://storage.googleapis.com/'。" +objectStorageBaseUrlDesc: "参照に使うにURLやで。CDNやProxyを使用してるんならそのURL、S3: 'https://.s3.amazonaws.com'、GCSとかなら: + 'https://storage.googleapis.com/'。" objectStorageBucket: "Bucket" objectStorageBucketDesc: "使ってるサービスのbucket名を選んでな" objectStoragePrefix: "Prefix" @@ -500,7 +505,7 @@ objectStorageSetPublicRead: "アップロードした時に'public-read'を設 serverLogs: "サーバーログ" deleteAll: "全て削除してや" showFixedPostForm: "タイムラインの上の方で投稿できるようにやってくれへん?" -newNoteRecived: "新しいノートがあるで" +newNoteRecived: "新しい投稿があるで" sounds: "サウンド" listen: "聴く" none: "なし" @@ -523,7 +528,7 @@ sort: "仕分ける" ascendingOrder: "小さい順" descendingOrder: "大きい順" scratchpad: "スクラッチパッド" -scratchpadDescription: "スクラッチパッドではAiScriptを色々試すことができるんや。Misskeyに対して色々できるコードを書いて動かしてみたり、結果を見たりできるで。" +scratchpadDescription: "スクラッチパッドではAiScriptを色々試すことができるんや。Firefishに対して色々できるコードを書いて動かしてみたり、結果を見たりできるで。" output: "出力" script: "スクリプト" disablePagesScript: "Pagesのスクリプトを無効にしてや" @@ -531,7 +536,7 @@ updateRemoteUser: "リモートユーザー情報の更新してくれん?" deleteAllFiles: "すべてのファイルを削除" deleteAllFilesConfirm: "ホンマにすべてのファイルを削除するん?消したもんはもう戻ってこんのやで?" removeAllFollowing: "フォローを全解除" -removeAllFollowingDescription: "{host}からのフォローをすべて解除するで。そのインスタンスが消えて無くなった時とかには便利な機能やで。" +removeAllFollowingDescription: "{host}からのフォローをすべて解除するで。そのサーバーが消えて無くなった時とかに便利な機能やで。" userSuspended: "このユーザーは...凍結されとる。" userSilenced: "このユーザーは...サイレンスされとる。" yourAccountSuspendedTitle: "あんたのアカウント凍結されとるで" @@ -595,7 +600,7 @@ testEmail: "配信テスト" wordMute: "ワードミュート" regexpError: "正規表現エラー" regexpErrorDescription: "{tab}ワードミュートの{line}行目の正規表現にエラーが出てきたで:" -instanceMute: "インスタンスミュート" +instanceMute: "サーバーミュート" userSaysSomething: "{name}が何か言ったようやで" makeActive: "使うで" display: "表示" @@ -621,20 +626,20 @@ sample: "サンプル" abuseReports: "通報" reportAbuse: "通報" reportAbuseOf: "{name}を通報する" -fillAbuseReportDescription: "細かい通報理由を書いてなー。対象ノートがある時はそのURLも書いといてなー。" +fillAbuseReportDescription: "細かい通報理由を書いてなー。特定の投稿を通報するなら、そのURLも書いといてなー。" abuseReported: "無事内容が送信されたみたいやで。おおきに〜。" reporter: "通報者" reporteeOrigin: "通報先" reporterOrigin: "通報元" -forwardReport: "リモートインスタンスに通報を転送するで" -forwardReportIsAnonymous: "リモートインスタンスからはあんたの情報は見れへんくって、匿名のシステムアカウントとして表示されるで。" +forwardReport: "リモートサーバーに通報を転送するで" +forwardReportIsAnonymous: "リモートサーバーからはあんたの情報は見れへんくて、匿名のシステムアカウントとして表示されるで。" send: "送信" abuseMarkAsResolved: "対応したで" openInNewTab: "新しいタブで開く" openInSideView: "サイドビューで開く" defaultNavigationBehaviour: "デフォルトのナビゲーション" editTheseSettingsMayBreakAccount: "このへんの設定をようわからんままイジるとアカウントが壊れて使えんくなるかも知れへんで?" -instanceTicker: "ノートのインスタンス情報" +instanceTicker: "投稿のサーバー情報" waitingFor: "{x}を待っとるで" random: "ランダム" system: "システム" @@ -645,16 +650,16 @@ createNew: "新しく作るで" optional: "任意" createNewClip: "新しいクリップを作るで" unclip: "クリップ解除するで" -confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれとるで。ノートをこのクリップから除外したる?" +confirmToUnclipAlreadyClippedNote: "この投稿はすでにクリップ「{name}」に含まれとるで。投稿をこのクリップから除外したる?" public: "パブリック" i18nInfo: "Firefishは有志によっていろんな言語に翻訳されとるで。{link}で翻訳に協力したってやー。" manageAccessTokens: "アクセストークンの管理" accountInfo: "アカウント情報" -notesCount: "ノートの数やで" +notesCount: "投稿の数やで" repliesCount: "返信した数やで" -renotesCount: "Renoteした数やで" +renotesCount: "ブーストした数やで" repliedCount: "返信された数やで" -renotedCount: "Renoteされた数やで" +renotedCount: "ブーストされた数やで" followingCount: "フォロー数やで" followersCount: "フォロワー数やで" sentReactionsCount: "リアクションした数やで" @@ -666,15 +671,15 @@ no: "いいえ" driveFilesCount: "ドライブのファイル数" driveUsage: "ドライブ使用量やで" noCrawle: "クローラーによるインデックスを拒否するで" -noCrawleDescription: "検索エンジンにあんたのユーザーページ、ノート、Pagesとかのコンテンツを登録(インデックス)せぇへんように頼むで。" -lockedAccountInfo: "フォローを承認制にしとっても、ノートの公開範囲を「フォロワー」にせぇへん限り、誰でもあんたのノートを見れるで。" +noCrawleDescription: "検索エンジンにあんたのプロフィール、投稿、ページとかのコンテンツを登録(インデックス)せぇへんように頼むで。" +lockedAccountInfo: "フォローを承認制にしとっても、投稿の公開範囲を「フォロワー」にせん限り、誰でもあんたの投稿を見れるで。" alwaysMarkSensitive: "デフォルトでメディアを閲覧注意にするで" loadRawImages: "添付画像のサムネイルをオリジナル画質にするで" disableShowingAnimatedImages: "アニメーション画像を再生しやへんで" verificationEmailSent: "無事確認のメールを送れたで。メールに書いてあるリンクにアクセスして、設定を完了してなー。" notSet: "未設定" emailVerified: "メールアドレスは確認されたで" -noteFavoritesCount: "お気に入りノートの数やで" +noteFavoritesCount: "お気に入り投稿の数やで" pageLikesCount: "Pageにええやんと思った数" pageLikedCount: "Pageにええやんと思ってくれた数" contact: "連絡先" @@ -684,7 +689,7 @@ experimentalFeatures: "実験的機能やで" developer: "開発者やで" makeExplorable: "アカウントを見つけやすくするで" makeExplorableDescription: "オフにすると、「みつける」にアカウントが載らんくなるで。" -showGapBetweenNotesInTimeline: "タイムラインのノートを放して表示するで" +showGapBetweenNotesInTimeline: "タイムライン上の投稿を離して表示するで" duplicate: "複製" left: "左" center: "中央" @@ -696,9 +701,9 @@ showTitlebar: "タイトルバーを見せる" clearCache: "キャッシュをほかす" onlineUsersCount: "{n}人が起きとるで" nUsers: "{n}ユーザー" -nNotes: "{n}ノート" +nNotes: "{n}投稿" sendErrorReports: "エラーリポートを送る" -sendErrorReportsDescription: "オンにしたら、なんか変なことが起きたときにエラーの詳細がMisskeyに共有されて、ソフトウェアの品質向上に役立てられるんや。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれるで。" +sendErrorReportsDescription: "オンにしたら、なんか変なことが起きたときにエラーの詳細がFirefishに共有されて、ソフトウェアの品質向上に役立てられるんや。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれるで。" myTheme: "マイテーマ" backgroundColor: "背景" accentColor: "アクセント" @@ -722,7 +727,7 @@ capacity: "容量" inUse: "使用中" editCode: "コードを編集" apply: "適用" -receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る" +receiveAnnouncementFromInstance: "サーバーからのお知らせを受け取る" emailNotification: "メール通知" publish: "公開" inChannelSearch: "チャンネル内検索" @@ -737,7 +742,7 @@ unlikeConfirm: "いいね解除するんか?" fullView: "フルビュー" quitFullView: "フルビュー解除" addDescription: "説明を追加するで" -userPagePinTip: "個々のノートのメニューから「ピン留め」を選んどくと、ここにノートを表示しておけるで。" +userPagePinTip: "個々の投稿のメニューから「ピン留め」を選んどくと、ここにそいつを表示しておけるで。" notSpecifiedMentionWarning: "宛先に含まれてへんメンションがあるで" info: "情報" userInfo: "ユーザー情報やで" @@ -750,7 +755,7 @@ active: "アクティブ" offline: "オフライン" notRecommended: "あんま推奨しやんで" botProtection: "Botプロテクション" -instanceBlocking: "インスタンスブロック" +instanceBlocking: "連合の管理" selectAccount: "アカウントを選んでなー" switchAccount: "アカウントを変えるで" enabled: "有効" @@ -767,7 +772,7 @@ postToGallery: "ギャラリーへ投稿" gallery: "ギャラリー" recentPosts: "最近の投稿" popularPosts: "人気の投稿" -shareWithNote: "ノートで共有" +shareWithNote: "投稿で共有" ads: "広告" expiration: "期限" memo: "メモ" @@ -789,7 +794,7 @@ hashtags: "ハッシュタグ" troubleshooting: "トラブルシューティング" useBlurEffect: "UIにぼかし効果を使うで" learnMore: "詳しく" -misskeyUpdated: "Misskeyが更新されたで!\nモデレーターの人らに感謝せなあかんで" +misskeyUpdated: "Firefishが更新されたで!\nモデレーターの人らに感謝やね" whatIsNew: "更新情報を見るで" translate: "翻訳" translatedFrom: "{x}から翻訳するで" @@ -834,7 +839,7 @@ cannotUploadBecauseInappropriate: "不適切な内容を含むかもしれへん cannotUploadBecauseNoFreeSpace: "ドライブの空き容量が無いでアップロードできまへん。" beta: "ベータ" enableAutoSensitive: "自動NSFW判定" -enableAutoSensitiveDescription: "使える時は、機械学習を使って自動でメディアにNSFWフラグを設定するで。この機能をオフにしても、インスタンスによっては自動で設定されることがあるで。" +enableAutoSensitiveDescription: "いけるときは、機械学習を使って自動でメディアにNSFWフラグを設定するで。この機能をオフにしても、サーバーによっては自動で設定されることがあるで。" activeEmailValidationDescription: "ユーザーのメールアドレスのバリデーションを、捨てアドかどうかや実際に通信可能かどうかとかを判定して積極的に行うで。オフにすると単に文字列として正しいかどうかだけチェックするで。" navbar: "ナビゲーションバー" shuffle: "シャッフルするで" @@ -868,14 +873,15 @@ _registry: domain: "ドメイン" createKey: "キーを作る" _aboutFirefish: - about: "Misskeyはsyuiloが2014年からずっと作ってはる、オープンソースなソフトウェアや。" + about: "Firefishは、ThatOneCalculatorが2022年にMisskeyをいじって作った、オープンソースなソフトウェアや。" contributors: "主な貢献者" allContributors: "全ての貢献者" source: "ソースコード" - translation: "Misskeyを翻訳" - donate: "Misskeyに寄付" + translation: "Firefishを翻訳" + donate: "Firefishに寄付" morePatrons: "他にもぎょうさんの人からサポートしてもろてんねん。ほんまおおきに🥰" patrons: "支援者" + misskeyContributors: フォーク元のMisskeyを作らはった人ら _mfm: cheatSheet: "MFMチートシート" mention: "メンション" @@ -896,6 +902,7 @@ _mfm: blur: "ぼかし" font: "フォント" rotate: "回転" + intro: MFMは、MisskeyやFirefish、Akkomaなどの様々な場所で使用できるマークアップ言語なんよ。ここでは、MFMで使用可能な構文一覧が確認できるで。 _instanceTicker: none: "表示せん" remote: "リモートユーザーに表示" @@ -958,7 +965,7 @@ _theme: hashtag: "ハッシュタグ" mention: "メンション" mentionMe: "うち宛てのメンション" - renote: "Renote" + renote: "ブースト" modalBg: "モーダルの背景" divider: "分割線" scrollbarHandle: "スクロールバーの取っ手" @@ -985,8 +992,8 @@ _theme: accentLighten: "アクセント (明るめ)" fgHighlighted: "強調されとる文字" _sfx: - note: "ノート" - noteMy: "ノート(自分)" + note: "投稿" + noteMy: "投稿(自分)" notification: "通知" chat: "チャット" _ago: @@ -1017,8 +1024,8 @@ _permissions: _auth: permissionAsk: "このアプリは次の権限を要求しとるで" _antennaSources: - all: "みんなのノート" - homeTimeline: "フォローしとるユーザーのノート" + all: "みんなの投稿" + homeTimeline: "フォローしとるユーザーの投稿" _weekday: sunday: "日曜日" monday: "月曜日" @@ -1072,7 +1079,7 @@ _profile: name: "名前" username: "ユーザー名" _exportOrImport: - allNotes: "全てのノート" + allNotes: "すべての投稿" followingList: "フォロー" muteList: "ミュート" blockingList: "ブロック" @@ -1082,10 +1089,10 @@ _charts: apRequest: "リクエスト" usersTotal: "ユーザーの合計" activeUsers: "アクティブユーザー数" - notesIncDec: "ノートの増減" - localNotesIncDec: "ローカルのノートの増減" - remoteNotesIncDec: "リモートのノートの増減" - notesTotal: "ノートの合計" + notesIncDec: "投稿の増減" + localNotesIncDec: "ローカルの投稿の増減" + remoteNotesIncDec: "リモートの投稿の増減" + notesTotal: "投稿の合計" filesIncDec: "ファイルの増減" filesTotal: "ファイルの合計" storageUsageIncDec: "ストレージ使用量の増減" @@ -1094,8 +1101,8 @@ _instanceCharts: requests: "リクエスト" users: "ユーザーの増減" usersTotal: "ユーザーの累積" - notes: "ノートの増減" - notesTotal: "ノートの累積" + notes: "投稿の増減" + notesTotal: "投稿の累積" ff: "フォロー/フォロワーの増減" ffTotal: "フォロー/フォロワーの累積" cacheSize: "キャッシュサイズの増減" @@ -1165,9 +1172,9 @@ _pages: id: "キャンバスID" width: "幅" height: "高さ" - note: "ノート埋め込み" + note: "投稿の埋め込み" _note: - id: "ノートID" + id: "投稿のID" detailed: "詳細な表示" switch: "スイッチ" _switch: @@ -1385,14 +1392,14 @@ _notification: all: "すべて" follow: "フォロー" mention: "メンション" - renote: "Renote" + renote: "ブースト" quote: "引用" reaction: "リアクション" receiveFollowRequest: "フォロー許可してほしいみたいやで" followRequestAccepted: "フォローが受理されたで" _actions: reply: "返事" - renote: "Renote" + renote: "ブースト" _deck: alwaysShowMainColumn: "いつもメインカラムを表示" columnAlign: "カラムの寄せ" @@ -1413,3 +1420,12 @@ _deck: list: "リスト" mentions: "あんた宛て" direct: "ダイレクト" +_experiments: + postImportsCaption: + ユーザーが過去の投稿をFirefish・Misskey・Mastodon・Akkoma・Pleromaからインポートできるようにするで。キューが溜まっとるときにインポートするとサーバーに負荷がかかるかもしれんね。 +searchPlaceholder: Firefishを検索 +addInstance: サーバーを追加 +editNote: 投稿を編集 +edited: '編集済み: {date} {time}' +deleted: 削除済み +noThankYou: いらんわ