diff --git a/locales/generateDTS.js b/locales/generateDTS.js index 6eb5bd630daf2484ba2fd172ef1493e4a9fff26c..49807144ec64aac5d4ec0858db3b218676c52c6e 100644 --- a/locales/generateDTS.js +++ b/locales/generateDTS.js @@ -16,32 +16,40 @@ function createMemberType(item) { item.matchAll(parameterRegExp), ([, parameter]) => parameter, ); - if (!parameters.length) { - return ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword); - } - return ts.factory.createTypeReferenceNode( - ts.factory.createIdentifier('ParameterizedString'), - [ - ts.factory.createUnionTypeNode( - parameters.map((parameter) => - ts.factory.createLiteralTypeNode( - ts.factory.createStringLiteral(parameter), + return parameters.length + ? ts.factory.createTypeReferenceNode( + ts.factory.createIdentifier('ParameterizedString'), + [ + ts.factory.createUnionTypeNode( + parameters.map((parameter) => + ts.factory.createStringLiteral(parameter), + ), ), - ), - ), - ], - ); + ], + ) + : ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword); } function createMembers(record) { - return Object.entries(record).map(([k, v]) => - ts.factory.createPropertySignature( + return Object.entries(record).map(([k, v]) => { + const node = ts.factory.createPropertySignature( undefined, ts.factory.createStringLiteral(k), undefined, createMemberType(v), - ), - ); + ); + if (typeof v === 'string') { + ts.addSyntheticLeadingComment( + node, + ts.SyntaxKind.MultiLineCommentTrivia, + `* + * ${v.replace(/\n/g, '\n * ')} + `, + true, + ); + } + return node; + }); } export default function generateDTS() { @@ -72,10 +80,8 @@ export default function generateDTS() { ts.factory.createTypeParameterDeclaration( undefined, ts.factory.createIdentifier('T'), - ts.factory.createTypeReferenceNode( - ts.factory.createIdentifier('string'), - undefined, - ), + ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), + ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), ), ], undefined, @@ -115,7 +121,6 @@ export default function generateDTS() { ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), ts.factory.createTypeReferenceNode( ts.factory.createIdentifier('ParameterizedString'), - [ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)], ), ts.factory.createTypeReferenceNode( ts.factory.createIdentifier('ILocale'), @@ -187,6 +192,24 @@ export default function generateDTS() { ), ts.factory.createExportDefault(ts.factory.createIdentifier('locales')), ]; + ts.addSyntheticLeadingComment( + elements[0], + ts.SyntaxKind.MultiLineCommentTrivia, + ' eslint-disable ', + true, + ); + ts.addSyntheticLeadingComment( + elements[0], + ts.SyntaxKind.SingleLineCommentTrivia, + ' This file is generated by locales/generateDTS.js', + true, + ); + ts.addSyntheticLeadingComment( + elements[0], + ts.SyntaxKind.SingleLineCommentTrivia, + ' Do not edit this file directly.', + true, + ); const printed = ts .createPrinter({ newLine: ts.NewLineKind.LineFeed, @@ -203,12 +226,5 @@ export default function generateDTS() { ), ); - fs.writeFileSync( - `${__dirname}/index.d.ts`, - `/* eslint-disable */ -// This file is generated by locales/generateDTS.js -// Do not edit this file directly. -${printed}`, - 'utf-8', - ); + fs.writeFileSync(`${__dirname}/index.d.ts`, printed, 'utf-8'); } diff --git a/locales/index.d.ts b/locales/index.d.ts index 85e0c6b244ceb9d04003f0916568e151d3e3b3c7..f7f952175fad4973e4ee38f8bb45db64d0f25ffd 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -2,2670 +2,9544 @@ // This file is generated by locales/generateDTS.js // Do not edit this file directly. declare const kParameters: unique symbol; -export interface ParameterizedString<T extends string> { +export interface ParameterizedString<T extends string = string> { [kParameters]: T; } export interface ILocale { - [_: string]: string | ParameterizedString<string> | ILocale; + [_: string]: string | ParameterizedString | ILocale; } export interface Locale extends ILocale { + /** + * 日本語 + */ "_lang_": string; + /** + * ノートã§ã¤ãªãŒã‚‹ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ + */ "headlineMisskey": string; + /** + * よã†ã“ãï¼Misskeyã¯ã€ã‚ªãƒ¼ãƒ—ンソースã®åˆ†æ•£åž‹ãƒžã‚¤ã‚¯ãƒãƒ–ãƒã‚°ã‚µãƒ¼ãƒ“スã§ã™ã€‚ + * 「ノートã€ã‚’作æˆã—ã¦ã€ã„ã¾èµ·ã“ã£ã¦ã„ã‚‹ã“ã¨ã‚’共有ã—ãŸã‚Šã€ã‚ãªãŸã«ã¤ã„ã¦çš†ã«ç™ºä¿¡ã—よã†ðŸ“¡ + * 「リアクションã€æ©Ÿèƒ½ã§ã€çš†ã®ãƒŽãƒ¼ãƒˆã«ç´ æ—©ãåå¿œã‚’è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ðŸ‘ + * æ–°ã—ã„世界を探検ã—よã†ðŸš€ + */ "introMisskey": string; + /** + * {name}ã¯ã€ã‚ªãƒ¼ãƒ—ンソースã®ãƒ—ラットフォーム<b>Misskey</b>ã®ã‚µãƒ¼ãƒãƒ¼ã®ã²ã¨ã¤ã§ã™ã€‚ + */ "poweredByMisskeyDescription": ParameterizedString<"name">; + /** + * {month}月 {day}æ—¥ + */ "monthAndDay": ParameterizedString<"month" | "day">; + /** + * 検索 + */ "search": string; + /** + * 通知 + */ "notifications": string; + /** + * ユーザーå + */ "username": string; + /** + * パスワード + */ "password": string; + /** + * パスワードを忘れ㟠+ */ "forgotPassword": string; + /** + * 連åˆã«ç…§ä¼šä¸ + */ "fetchingAsApObject": string; + /** + * OK + */ "ok": string; + /** + * ã‚ã‹ã£ãŸ + */ "gotIt": string; + /** + * ã‚ャンセル + */ "cancel": string; + /** + * ã‚„ã‚ã¦ãŠã + */ "noThankYou": string; + /** + * ユーザーåを入力 + */ "enterUsername": string; + /** + * {user}ãŒãƒªãƒŽãƒ¼ãƒˆ + */ "renotedBy": ParameterizedString<"user">; + /** + * ノートã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noNotes": string; + /** + * 通知ã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noNotifications": string; + /** + * サーãƒãƒ¼ + */ "instance": string; + /** + * è¨å®š + */ "settings": string; + /** + * 通知ã®è¨å®š + */ "notificationSettings": string; + /** + * 基本è¨å®š + */ "basicSettings": string; + /** + * ãã®ä»–ã®è¨å®š + */ "otherSettings": string; + /** + * ウィンドウã§é–‹ã + */ "openInWindow": string; + /** + * プãƒãƒ•ã‚£ãƒ¼ãƒ« + */ "profile": string; + /** + * タイムライン + */ "timeline": string; + /** + * 自己紹介ã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noAccountDescription": string; + /** + * ãƒã‚°ã‚¤ãƒ³ + */ "login": string; + /** + * ãƒã‚°ã‚¤ãƒ³ä¸ + */ "loggingIn": string; + /** + * ãƒã‚°ã‚¢ã‚¦ãƒˆ + */ "logout": string; + /** + * æ–°è¦ç™»éŒ² + */ "signup": string; + /** + * アップãƒãƒ¼ãƒ‰ä¸ + */ "uploading": string; + /** + * ä¿å˜ + */ "save": string; + /** + * ユーザー + */ "users": string; + /** + * ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’è¿½åŠ + */ "addUser": string; + /** + * ãŠæ°—ã«å…¥ã‚Š + */ "favorite": string; + /** + * ãŠæ°—ã«å…¥ã‚Š + */ "favorites": string; + /** + * ãŠæ°—ã«å…¥ã‚Šè§£é™¤ + */ "unfavorite": string; + /** + * ãŠæ°—ã«å…¥ã‚Šã«ç™»éŒ²ã—ã¾ã—ãŸã€‚ + */ "favorited": string; + /** + * æ—¢ã«ãŠæ°—ã«å…¥ã‚Šã«ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™ã€‚ + */ "alreadyFavorited": string; + /** + * ãŠæ°—ã«å…¥ã‚Šã«ç™»éŒ²ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ + */ "cantFavorite": string; + /** + * ピン留゠+ */ "pin": string; + /** + * ピン留ã‚解除 + */ "unpin": string; + /** + * 内容をコピー + */ "copyContent": string; + /** + * リンクをコピー + */ "copyLink": string; + /** + * リノートã®ãƒªãƒ³ã‚¯ã‚’コピー + */ "copyLinkRenote": string; + /** + * 削除 + */ "delete": string; + /** + * 削除ã—ã¦ç·¨é›† + */ "deleteAndEdit": string; + /** + * ã“ã®ãƒŽãƒ¼ãƒˆã‚’削除ã—ã¦ã‚‚ã†ä¸€åº¦ç·¨é›†ã—ã¾ã™ã‹ï¼Ÿã“ã®ãƒŽãƒ¼ãƒˆã¸ã®ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã€ãƒªãƒŽãƒ¼ãƒˆã€è¿”ä¿¡ã‚‚å…¨ã¦å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ + */ "deleteAndEditConfirm": string; + /** + * リストã«è¿½åŠ + */ "addToList": string; + /** + * アンテナã«è¿½åŠ + */ "addToAntenna": string; + /** + * メッセージをé€ä¿¡ + */ "sendMessage": string; + /** + * RSSをコピー + */ "copyRSS": string; + /** + * ユーザーåをコピー + */ "copyUsername": string; + /** + * ユーザーIDをコピー + */ "copyUserId": string; + /** + * ノートIDをコピー + */ "copyNoteId": string; + /** + * ファイルIDをコピー + */ "copyFileId": string; + /** + * フォルダーIDをコピー + */ "copyFolderId": string; + /** + * プãƒãƒ•ã‚£ãƒ¼ãƒ«URLをコピー + */ "copyProfileUrl": string; + /** + * ユーザーを検索 + */ "searchUser": string; + /** + * 返信 + */ "reply": string; + /** + * ã‚‚ã£ã¨è¦‹ã‚‹ + */ "loadMore": string; + /** + * ã‚‚ã£ã¨è¦‹ã‚‹ + */ "showMore": string; + /** + * é–‰ã˜ã‚‹ + */ "showLess": string; + /** + * フォãƒãƒ¼ã•ã‚Œã¾ã—㟠+ */ "youGotNewFollower": string; + /** + * フォãƒãƒ¼ãƒªã‚¯ã‚¨ã‚¹ãƒˆã•ã‚Œã¾ã—㟠+ */ "receiveFollowRequest": string; + /** + * フォãƒãƒ¼ãŒæ‰¿èªã•ã‚Œã¾ã—㟠+ */ "followRequestAccepted": string; + /** + * メンション + */ "mention": string; + /** + * ã‚ãªãŸå®›ã¦ + */ "mentions": string; + /** + * ダイレクト投稿 + */ "directNotes": string; + /** + * インãƒãƒ¼ãƒˆã¨ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ + */ "importAndExport": string; + /** + * インãƒãƒ¼ãƒˆ + */ "import": string; + /** + * エクスãƒãƒ¼ãƒˆ + */ "export": string; + /** + * ファイル + */ "files": string; + /** + * ダウンãƒãƒ¼ãƒ‰ + */ "download": string; + /** + * ファイル「{name}ã€ã‚’削除ã—ã¾ã™ã‹ï¼Ÿã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’使用ã—ãŸä¸€éƒ¨ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„も削除ã•ã‚Œã¾ã™ã€‚ + */ "driveFileDeleteConfirm": ParameterizedString<"name">; + /** + * {name}ã®ãƒ•ã‚©ãƒãƒ¼ã‚’解除ã—ã¾ã™ã‹ï¼Ÿ + */ "unfollowConfirm": ParameterizedString<"name">; + /** + * エクスãƒãƒ¼ãƒˆã‚’リクエストã—ã¾ã—ãŸã€‚ã“ã‚Œã«ã¯æ™‚é–“ãŒã‹ã‹ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚エクスãƒãƒ¼ãƒˆãŒçµ‚ã‚ã‚‹ã¨ã€ã€Œãƒ‰ãƒ©ã‚¤ãƒ–ã€ã«è¿½åŠ ã•ã‚Œã¾ã™ã€‚ + */ "exportRequested": string; + /** + * インãƒãƒ¼ãƒˆã‚’リクエストã—ã¾ã—ãŸã€‚ã“ã‚Œã«ã¯æ™‚é–“ãŒã‹ã‹ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ + */ "importRequested": string; + /** + * リスト + */ "lists": string; + /** + * リストã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noLists": string; + /** + * ノート + */ "note": string; + /** + * ノート + */ "notes": string; + /** + * フォãƒãƒ¼ + */ "following": string; + /** + * フォãƒãƒ¯ãƒ¼ + */ "followers": string; + /** + * フォãƒãƒ¼ã•ã‚Œã¦ã„ã¾ã™ + */ "followsYou": string; + /** + * ãƒªã‚¹ãƒˆä½œæˆ + */ "createList": string; + /** + * リストã®ç®¡ç† + */ "manageLists": string; + /** + * エラー + */ "error": string; + /** + * å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—㟠+ */ "somethingHappened": string; + /** + * å†è©¦è¡Œ + */ "retry": string; + /** + * ページã®èªã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ + */ "pageLoadError": string; + /** + * ã“ã‚Œã¯é€šå¸¸ã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã¾ãŸã¯ãƒ–ラウザã‚ャッシュãŒåŽŸå› ã§ã™ã€‚ã‚ャッシュをクリアã™ã‚‹ã‹ã€ã—ã°ã‚‰ãå¾…ã£ã¦ã‹ã‚‰å†åº¦è©¦ã—ã¦ãã ã•ã„。 + */ "pageLoadErrorDescription": string; + /** + * サーãƒãƒ¼ã®å¿œç”ãŒã‚ã‚Šã¾ã›ã‚“。ã—ã°ã‚‰ãå¾…ã£ã¦ã‹ã‚‰å†åº¦è©¦ã—ã¦ãã ã•ã„。 + */ "serverIsDead": string; + /** + * ã“ã®ãƒšãƒ¼ã‚¸ã‚’表示ã™ã‚‹ãŸã‚ã«ã¯ã€ãƒªãƒãƒ¼ãƒ‰ã—ã¦æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’ã”利用ãã ã•ã„。 + */ "youShouldUpgradeClient": string; + /** + * リストåを入力 + */ "enterListName": string; + /** + * プライãƒã‚·ãƒ¼ + */ "privacy": string; + /** + * フォãƒãƒ¼ã‚’承èªåˆ¶ã«ã™ã‚‹ + */ "makeFollowManuallyApprove": string; + /** + * デフォルトã®å…¬é–‹ç¯„囲 + */ "defaultNoteVisibility": string; + /** + * フォãƒãƒ¼ + */ "follow": string; + /** + * フォãƒãƒ¼ç”³è«‹ + */ "followRequest": string; + /** + * フォãƒãƒ¼ç”³è«‹ + */ "followRequests": string; + /** + * フォãƒãƒ¼è§£é™¤ + */ "unfollow": string; + /** + * フォãƒãƒ¼è¨±å¯å¾…ã¡ + */ "followRequestPending": string; + /** + * 絵文å—を入力 + */ "enterEmoji": string; + /** + * リノート + */ "renote": string; + /** + * リノート解除 + */ "unrenote": string; + /** + * リノートã—ã¾ã—ãŸã€‚ + */ "renoted": string; + /** + * ã“ã®æŠ•ç¨¿ã¯ãƒªãƒŽãƒ¼ãƒˆã§ãã¾ã›ã‚“。 + */ "cantRenote": string; + /** + * リノートをリノートã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + */ "cantReRenote": string; + /** + * 引用 + */ "quote": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«å†…リノート + */ "inChannelRenote": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«å†…引用 + */ "inChannelQuote": string; + /** + * ピン留ã‚ã•ã‚ŒãŸãƒŽãƒ¼ãƒˆ + */ "pinnedNote": string; + /** + * ピン留゠+ */ "pinned": string; + /** + * ã‚ãªãŸ + */ "you": string; + /** + * クリックã—ã¦è¡¨ç¤º + */ "clickToShow": string; + /** + * センシティブ + */ "sensitive": string; + /** + * è¿½åŠ + */ "add": string; + /** + * リアクション + */ "reaction": string; + /** + * リアクション + */ "reactions": string; + /** + * 絵文å—ピッカー + */ "emojiPicker": string; + /** + * リアクション時ã«ãƒ”ン留ã‚表示ã™ã‚‹çµµæ–‡å—ã‚’è¨å®šã§ãã¾ã™ + */ "pinnedEmojisForReactionSettingDescription": string; + /** + * 絵文å—入力時ã«ãƒ”ン留ã‚表示ã™ã‚‹çµµæ–‡å—ã‚’è¨å®šã§ãã¾ã™ + */ "pinnedEmojisSettingDescription": string; + /** + * ピッカーã®è¡¨ç¤º + */ "emojiPickerDisplay": string; + /** + * リアクションè¨å®šã‹ã‚‰ä¸Šæ›¸ãã™ã‚‹ + */ "overwriteFromPinnedEmojisForReaction": string; + /** + * 全般è¨å®šã‹ã‚‰ä¸Šæ›¸ãã™ã‚‹ + */ "overwriteFromPinnedEmojis": string; + /** + * ドラッグã—ã¦ä¸¦ã³æ›¿ãˆã€ã‚¯ãƒªãƒƒã‚¯ã—ã¦å‰Šé™¤ã€ï¼‹ã‚’押ã—ã¦è¿½åŠ ã—ã¾ã™ã€‚ + */ "reactionSettingDescription2": string; + /** + * 公開範囲を記憶ã™ã‚‹ + */ "rememberNoteVisibility": string; + /** + * 添付å–り消㗠+ */ "attachCancel": string; + /** + * センシティブã¨ã—ã¦è¨å®š + */ "markAsSensitive": string; + /** + * センシティブを解除ã™ã‚‹ + */ "unmarkAsSensitive": string; + /** + * ファイルåを入力 + */ "enterFileName": string; + /** + * ミュート + */ "mute": string; + /** + * ミュート解除 + */ "unmute": string; + /** + * リノートをミュート + */ "renoteMute": string; + /** + * リノートã®ãƒŸãƒ¥ãƒ¼ãƒˆã‚’解除 + */ "renoteUnmute": string; + /** + * ブãƒãƒƒã‚¯ + */ "block": string; + /** + * ブãƒãƒƒã‚¯è§£é™¤ + */ "unblock": string; + /** + * å‡çµ + */ "suspend": string; + /** + * è§£å‡ + */ "unsuspend": string; + /** + * ブãƒãƒƒã‚¯ã—ã¾ã™ã‹ï¼Ÿ + */ "blockConfirm": string; + /** + * ブãƒãƒƒã‚¯è§£é™¤ã—ã¾ã™ã‹ï¼Ÿ + */ "unblockConfirm": string; + /** + * å‡çµã—ã¾ã™ã‹ï¼Ÿ + */ "suspendConfirm": string; + /** + * 解å‡ã—ã¾ã™ã‹ï¼Ÿ + */ "unsuspendConfirm": string; + /** + * リストをé¸æŠž + */ "selectList": string; + /** + * リストを編集 + */ "editList": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«ã‚’é¸æŠž + */ "selectChannel": string; + /** + * アンテナをé¸æŠž + */ "selectAntenna": string; + /** + * アンテナを編集 + */ "editAntenna": string; + /** + * ウィジェットをé¸æŠž + */ "selectWidget": string; + /** + * ウィジェットを編集 + */ "editWidgets": string; + /** + * 編集を終了 + */ "editWidgetsExit": string; + /** + * ã‚«ã‚¹ã‚¿ãƒ çµµæ–‡å— + */ "customEmojis": string; + /** + * çµµæ–‡å— + */ "emoji": string; + /** + * çµµæ–‡å— + */ "emojis": string; + /** + * 絵文å—å + */ "emojiName": string; + /** + * 絵文å—ç”»åƒURL + */ "emojiUrl": string; + /** + * 絵文å—ã‚’è¿½åŠ + */ "addEmoji": string; + /** + * ãŠã™ã™ã‚è¨å®š + */ "settingGuide": string; + /** + * リモートã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã‚ャッシュã™ã‚‹ + */ "cacheRemoteFiles": string; + /** + * ã“ã®è¨å®šã‚’有効ã«ã™ã‚‹ã¨ã€ãƒªãƒ¢ãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã“ã®ã‚µãƒ¼ãƒãƒ¼ã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã«ã‚ャッシュã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ç”»åƒã®è¡¨ç¤ºãŒé«˜é€Ÿã«ãªã‚Šã¾ã™ãŒã€ã‚µãƒ¼ãƒãƒ¼ã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚’多ã消費ã—ã¾ã™ã€‚リモートユーザーãŒã©ã‚Œã»ã©ã‚ャッシュをä¿æŒã™ã‚‹ã‹ã¯ã€ãƒãƒ¼ãƒ«ã«ã‚ˆã‚‹ãƒ‰ãƒ©ã‚¤ãƒ–容é‡åˆ¶é™ã«ã‚ˆã£ã¦æ±ºå®šã•ã‚Œã¾ã™ã€‚ã“ã®åˆ¶é™ã‚’超ãˆãŸå ´åˆã€å¤ã„ファイルã‹ã‚‰ã‚ャッシュãŒå‰Šé™¤ã•ã‚Œãƒªãƒ³ã‚¯ã«ãªã‚Šã¾ã™ã€‚ã“ã®è¨å®šãŒç„¡åŠ¹ã®å ´åˆã€ãƒªãƒ¢ãƒ¼ãƒˆã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’最åˆã‹ã‚‰ãƒªãƒ³ã‚¯ã¨ã—ã¦ä¿æŒã—ã¾ã™ãŒã€ç”»åƒã®ã‚µãƒ ãƒã‚¤ãƒ«ç”Ÿæˆã‚„ユーザーã®ãƒ—ライãƒã‚·ãƒ¼ä¿è·ã®ãŸã‚ã«ã€default.ymlã§proxyRemoteFilesã‚’trueã«ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ + */ "cacheRemoteFilesDescription": string; + /** + * ファイル管ç†ã®ðŸ—‘ï¸ãƒœã‚¿ãƒ³ã§å…¨ã¦ã®ã‚ャッシュを削除ã§ãã¾ã™ã€‚ + */ "youCanCleanRemoteFilesCache": string; + /** + * リモートã®ã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ãªãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã‚ャッシュã™ã‚‹ + */ "cacheRemoteSensitiveFiles": string; + /** + * ã“ã®è¨å®šã‚’無効ã«ã™ã‚‹ã¨ã€ãƒªãƒ¢ãƒ¼ãƒˆã®ã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ãªãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚ャッシュã›ãšç›´ãƒªãƒ³ã‚¯ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ + */ "cacheRemoteSensitiveFilesDescription": string; + /** + * Botã¨ã—ã¦è¨å®š + */ "flagAsBot": string; + /** + * ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒãƒ—ãƒã‚°ãƒ©ãƒ ã«ã‚ˆã£ã¦é‹ç”¨ã•ã‚Œã‚‹å ´åˆã¯ã€ã“ã®ãƒ•ãƒ©ã‚°ã‚’オンã«ã—ã¾ã™ã€‚オンã«ã™ã‚‹ã¨ã€åå¿œã®é€£éŽ–を防ããŸã‚ã®ãƒ•ãƒ©ã‚°ã¨ã—ã¦ä»–ã®é–‹ç™ºè€…ã«å½¹ç«‹ã£ãŸã‚Šã€Misskeyã®ã‚·ã‚¹ãƒ†ãƒ 上ã§ã®æ‰±ã„ãŒBotã«åˆã£ãŸã‚‚ã®ã«ãªã‚Šã¾ã™ã€‚ + */ "flagAsBotDescription": string; + /** + * ã«ã‚ƒã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ã‚ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ + */ "flagAsCat": string; + /** + * ã«ã‚ƒã«ã‚ƒã«ã‚ƒï¼Ÿï¼Ÿ + */ "flagAsCatDescription": string; + /** + * タイムラインã«ãƒŽãƒ¼ãƒˆã¸ã®è¿”信を表示ã™ã‚‹ + */ "flagShowTimelineReplies": string; + /** + * オンã«ã™ã‚‹ã¨ã€ã‚¿ã‚¤ãƒ ラインã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒŽãƒ¼ãƒˆä»¥å¤–ã«ã‚‚ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ä»–ã®ãƒŽãƒ¼ãƒˆã¸ã®è¿”信を表示ã—ã¾ã™ã€‚ + */ "flagShowTimelineRepliesDescription": string; + /** + * フォãƒãƒ¼ä¸ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰ã®ãƒ•ã‚©ãƒãƒªã‚¯ã‚’è‡ªå‹•æ‰¿èª + */ "autoAcceptFollowed": string; + /** + * ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’è¿½åŠ + */ "addAccount": string; + /** + * アカウントリストã®æƒ…å ±ã‚’æ›´æ–° + */ "reloadAccountsList": string; + /** + * ãƒã‚°ã‚¤ãƒ³ã«å¤±æ•—ã—ã¾ã—㟠+ */ "loginFailed": string; + /** + * リモートã§è¡¨ç¤º + */ "showOnRemote": string; + /** + * 全般 + */ "general": string; + /** + * å£ç´™ + */ "wallpaper": string; + /** + * å£ç´™ã‚’è¨å®š + */ "setWallpaper": string; + /** + * å£ç´™ã‚’削除 + */ "removeWallpaper": string; + /** + * 検索: {q} + */ "searchWith": ParameterizedString<"q">; + /** + * リストãŒã‚ã‚Šã¾ã›ã‚“ + */ "youHaveNoLists": string; + /** + * {name}をフォãƒãƒ¼ã—ã¾ã™ã‹ï¼Ÿ + */ "followConfirm": ParameterizedString<"name">; + /** + * プãƒã‚シアカウント + */ "proxyAccount": string; + /** + * プãƒã‚シアカウントã¯ã€ç‰¹å®šã®æ¡ä»¶ä¸‹ã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒªãƒ¢ãƒ¼ãƒˆãƒ•ã‚©ãƒãƒ¼ã‚’代行ã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ã™ã€‚例ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒªãƒ¢ãƒ¼ãƒˆãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’リストã«å…¥ã‚ŒãŸã¨ãã€ãƒªã‚¹ãƒˆã«å…¥ã‚Œã‚‰ã‚ŒãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’誰もフォãƒãƒ¼ã—ã¦ã„ãªã„ã¨ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒã‚µãƒ¼ãƒãƒ¼ã«é…é”ã•ã‚Œãªã„ãŸã‚ã€ä»£ã‚ã‚Šã«ãƒ—ãƒã‚シアカウントãŒãƒ•ã‚©ãƒãƒ¼ã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚ + */ "proxyAccountDescription": string; + /** + * ホスト + */ "host": string; + /** + * ユーザーをé¸æŠž + */ "selectUser": string; + /** + * 宛先 + */ "recipient": string; + /** + * 注釈 + */ "annotation": string; + /** + * é€£åˆ + */ "federation": string; + /** + * サーãƒãƒ¼ + */ "instances": string; + /** + * åˆè¦³æ¸¬ + */ "registeredAt": string; + /** + * ç›´è¿‘ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆå—ä¿¡ + */ "latestRequestReceivedAt": string; + /** + * ç›´è¿‘ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ + */ "latestStatus": string; + /** + * ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ä½¿ç”¨é‡ + */ "storageUsage": string; + /** + * ãƒãƒ£ãƒ¼ãƒˆ + */ "charts": string; + /** + * 1時間ã”㨠+ */ "perHour": string; + /** + * 1æ—¥ã”㨠+ */ "perDay": string; + /** + * アクティビティã®é…é€ã‚’åœæ¢ + */ "stopActivityDelivery": string; + /** + * ã“ã®ã‚µãƒ¼ãƒãƒ¼ã‚’ブãƒãƒƒã‚¯ + */ "blockThisInstance": string; + /** + * サーãƒãƒ¼ã‚’サイレンス + */ "silenceThisInstance": string; + /** + * æ“作 + */ "operations": string; + /** + * ソフトウェア + */ "software": string; + /** + * ãƒãƒ¼ã‚¸ãƒ§ãƒ³ + */ "version": string; + /** + * メタデータ + */ "metadata": string; + /** + * {n}ã¤ã®ãƒ•ã‚¡ã‚¤ãƒ« + */ "withNFiles": ParameterizedString<"n">; + /** + * モニター + */ "monitor": string; + /** + * ジョブã‚ュー + */ "jobQueue": string; + /** + * CPUã¨ãƒ¡ãƒ¢ãƒª + */ "cpuAndMemory": string; + /** + * ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ + */ "network": string; + /** + * ディスク + */ "disk": string; + /** + * サーãƒãƒ¼æƒ…å ± + */ "instanceInfo": string; + /** + * 統計 + */ "statistics": string; + /** + * ã‚ューをクリア + */ "clearQueue": string; + /** + * ã‚ューをクリアã—ã¾ã™ã‹ï¼Ÿ + */ "clearQueueConfirmTitle": string; + /** + * 未é…é”ã®æŠ•ç¨¿ã¯é…é€ã•ã‚Œãªããªã‚Šã¾ã™ã€‚通常ã“ã®æ“作を行ã†å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + */ "clearQueueConfirmText": string; + /** + * ã‚ャッシュをクリア + */ "clearCachedFiles": string; + /** + * ã‚ャッシュã•ã‚ŒãŸãƒªãƒ¢ãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ + */ "clearCachedFilesConfirm": string; + /** + * ブãƒãƒƒã‚¯ã—ãŸã‚µãƒ¼ãƒãƒ¼ + */ "blockedInstances": string; + /** + * ブãƒãƒƒã‚¯ã—ãŸã„サーãƒãƒ¼ã®ãƒ›ã‚¹ãƒˆã‚’改行ã§åŒºåˆ‡ã£ã¦è¨å®šã—ã¾ã™ã€‚ブãƒãƒƒã‚¯ã•ã‚ŒãŸã‚µãƒ¼ãƒãƒ¼ã¯ã€ã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¨ã‚„ã‚Šå–ã‚Šã§ããªããªã‚Šã¾ã™ã€‚ + */ "blockedInstancesDescription": string; + /** + * サイレンスã—ãŸã‚µãƒ¼ãƒãƒ¼ + */ "silencedInstances": string; + /** + * サイレンスã—ãŸã„サーãƒãƒ¼ã®ãƒ›ã‚¹ãƒˆã‚’改行ã§åŒºåˆ‡ã£ã¦è¨å®šã—ã¾ã™ã€‚サイレンスã•ã‚ŒãŸã‚µãƒ¼ãƒãƒ¼ã«æ‰€å±žã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ã™ã¹ã¦ã€Œã‚µã‚¤ãƒ¬ãƒ³ã‚¹ã€ã¨ã—ã¦æ‰±ã‚ã‚Œã€ãƒ•ã‚©ãƒãƒ¼ãŒã™ã¹ã¦ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ãªã‚Šã€ãƒ•ã‚©ãƒãƒ¯ãƒ¼ã§ãªã„ãƒãƒ¼ã‚«ãƒ«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã¯ãƒ¡ãƒ³ã‚·ãƒ§ãƒ³ã§ããªããªã‚Šã¾ã™ã€‚ブãƒãƒƒã‚¯ã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã¯å½±éŸ¿ã—ã¾ã›ã‚“。 + */ "silencedInstancesDescription": string; + /** + * ミュートã¨ãƒ–ãƒãƒƒã‚¯ + */ "muteAndBlock": string; + /** + * ミュートã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "mutedUsers": string; + /** + * ブãƒãƒƒã‚¯ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "blockedUsers": string; + /** + * ユーザーã¯ã„ã¾ã›ã‚“ + */ "noUsers": string; + /** + * プãƒãƒ•ã‚£ãƒ¼ãƒ«ã‚’編集 + */ "editProfile": string; + /** + * ã“ã®ãƒŽãƒ¼ãƒˆã‚’削除ã—ã¾ã™ã‹ï¼Ÿ + */ "noteDeleteConfirm": string; + /** + * ã“れ以上ピン留ã‚ã§ãã¾ã›ã‚“ + */ "pinLimitExceeded": string; + /** + * Misskeyã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå®Œäº†ã—ã¾ã—ãŸï¼ç®¡ç†è€…アカウントを作æˆã—ã¾ã—ょã†ã€‚ + */ "intro": string; + /** + * 完了 + */ "done": string; + /** + * 処ç†ä¸ + */ "processing": string; + /** + * プレビュー + */ "preview": string; + /** + * デフォルト + */ "default": string; + /** + * デフォルト: {value} + */ "defaultValueIs": ParameterizedString<"value">; + /** + * 絵文å—ã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noCustomEmojis": string; + /** + * ジョブã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noJobs": string; + /** + * 連åˆä¸ + */ "federating": string; + /** + * ブãƒãƒƒã‚¯ä¸ + */ "blocked": string; + /** + * é…ä¿¡åœæ¢ + */ "suspended": string; + /** + * 全㦠+ */ "all": string; + /** + * è³¼èªä¸ + */ "subscribing": string; + /** + * é…ä¿¡ä¸ + */ "publishing": string; + /** + * å¿œç”ãªã— + */ "notResponding": string; + /** + * サーãƒãƒ¼ã®ãƒ•ã‚©ãƒãƒ¼ + */ "instanceFollowing": string; + /** + * サーãƒãƒ¼ã®ãƒ•ã‚©ãƒãƒ¯ãƒ¼ + */ "instanceFollowers": string; + /** + * サーãƒãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "instanceUsers": string; + /** + * パスワードを変更 + */ "changePassword": string; + /** + * ã‚»ã‚ュリティ + */ "security": string; + /** + * 入力ãŒä¸€è‡´ã—ã¾ã›ã‚“。 + */ "retypedNotMatch": string; + /** + * ç¾åœ¨ã®ãƒ‘スワード + */ "currentPassword": string; + /** + * æ–°ã—ã„パスワード + */ "newPassword": string; + /** + * æ–°ã—ã„パスワード(å†å…¥åŠ›) + */ "newPasswordRetype": string; + /** + * ファイルを添付 + */ "attachFile": string; + /** + * ã‚‚ã£ã¨ï¼ + */ "more": string; + /** + * ãƒã‚¤ãƒ©ã‚¤ãƒˆ + */ "featured": string; + /** + * ユーザーåã‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ID + */ "usernameOrUserId": string; + /** + * ユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ + */ "noSuchUser": string; + /** + * 照会 + */ "lookup": string; + /** + * ãŠçŸ¥ã‚‰ã› + */ "announcements": string; + /** + * ç”»åƒURL + */ "imageUrl": string; + /** + * 削除 + */ "remove": string; + /** + * 削除ã—ã¾ã—㟠+ */ "removed": string; + /** + * 「{x}ã€ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ + */ "removeAreYouSure": ParameterizedString<"x">; + /** + * 「{x}ã€ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ + */ "deleteAreYouSure": ParameterizedString<"x">; + /** + * リセットã—ã¾ã™ã‹ï¼Ÿ + */ "resetAreYouSure": string; + /** + * よã‚ã—ã„ã§ã™ã‹ï¼Ÿ + */ "areYouSure": string; + /** + * ä¿å˜ã—ã¾ã—㟠+ */ "saved": string; + /** + * ãƒãƒ£ãƒƒãƒˆ + */ "messaging": string; + /** + * アップãƒãƒ¼ãƒ‰ + */ "upload": string; + /** + * オリジナル画åƒã‚’ä¿æŒ + */ "keepOriginalUploading": string; + /** + * ç”»åƒã‚’アップãƒãƒ¼ãƒ‰ã™ã‚‹æ™‚ã«ã‚ªãƒªã‚¸ãƒŠãƒ«ç‰ˆã‚’ä¿æŒã—ã¾ã™ã€‚オフã«ã™ã‚‹ã¨ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«ãƒ–ラウザã§Web公開用画åƒã‚’生æˆã—ã¾ã™ã€‚ + */ "keepOriginalUploadingDescription": string; + /** + * ドライブã‹ã‚‰ + */ "fromDrive": string; + /** + * URLã‹ã‚‰ + */ "fromUrl": string; + /** + * URLアップãƒãƒ¼ãƒ‰ + */ "uploadFromUrl": string; + /** + * アップãƒãƒ¼ãƒ‰ã—ãŸã„ファイルã®URL + */ "uploadFromUrlDescription": string; + /** + * アップãƒãƒ¼ãƒ‰ã‚’リクエストã—ã¾ã—㟠+ */ "uploadFromUrlRequested": string; + /** + * アップãƒãƒ¼ãƒ‰ãŒå®Œäº†ã™ã‚‹ã¾ã§æ™‚é–“ãŒã‹ã‹ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ + */ "uploadFromUrlMayTakeTime": string; + /** + * ã¿ã¤ã‘ã‚‹ + */ "explore": string; + /** + * æ—¢èª + */ "messageRead": string; + /** + * ã“れよりéŽåŽ»ã®å±¥æ´ã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noMoreHistory": string; + /** + * ãƒãƒ£ãƒƒãƒˆã‚’開始 + */ "startMessaging": string; + /** + * {n}人ãŒèªã¿ã¾ã—㟠+ */ "nUsersRead": ParameterizedString<"n">; + /** + * {0}ã«åŒæ„ + */ "agreeTo": ParameterizedString<"0">; + /** + * åŒæ„ã™ã‚‹ + */ "agree": string; + /** + * 下記ã«åŒæ„ã™ã‚‹ + */ "agreeBelow": string; + /** + * 基本的ãªæ³¨æ„äº‹é … + */ "basicNotesBeforeCreateAccount": string; + /** + * 利用è¦ç´„ + */ "termsOfService": string; + /** + * 始ã‚ã‚‹ + */ "start": string; + /** + * ホーム+ */ "home": string; + /** + * リモートユーザーã®ãŸã‚ã€æƒ…å ±ãŒä¸å®Œå…¨ã§ã™ã€‚ + */ "remoteUserCaution": string; + /** + * アクティビティ + */ "activity": string; + /** + * ç”»åƒ + */ "images": string; + /** + * ç”»åƒ + */ "image": string; + /** + * 誕生日 + */ "birthday": string; + /** + * {age}æ³ + */ "yearsOld": ParameterizedString<"age">; + /** + * 登録日 + */ "registeredDate": string; + /** + * å ´æ‰€ + */ "location": string; + /** + * テーマ + */ "theme": string; + /** + * ライトモードã§ä½¿ã†ãƒ†ãƒ¼ãƒž + */ "themeForLightMode": string; + /** + * ダークモードã§ä½¿ã†ãƒ†ãƒ¼ãƒž + */ "themeForDarkMode": string; + /** + * ライト + */ "light": string; + /** + * ダーク + */ "dark": string; + /** + * 明るã„テーマ + */ "lightThemes": string; + /** + * æš—ã„テーマ + */ "darkThemes": string; + /** + * デãƒã‚¤ã‚¹ã®ãƒ€ãƒ¼ã‚¯ãƒ¢ãƒ¼ãƒ‰ã¨åŒæœŸã™ã‚‹ + */ "syncDeviceDarkMode": string; + /** + * ドライブ + */ "drive": string; + /** + * ファイルå + */ "fileName": string; + /** + * ファイルをé¸æŠž + */ "selectFile": string; + /** + * ファイルをé¸æŠž + */ "selectFiles": string; + /** + * フォルダーをé¸æŠž + */ "selectFolder": string; + /** + * フォルダーをé¸æŠž + */ "selectFolders": string; + /** + * ファイルåを変更 + */ "renameFile": string; + /** + * フォルダーå + */ "folderName": string; + /** + * ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’ä½œæˆ + */ "createFolder": string; + /** + * フォルダーåを変更 + */ "renameFolder": string; + /** + * フォルダーを削除 + */ "deleteFolder": string; + /** + * フォルダー + */ "folder": string; + /** + * ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ + */ "addFile": string; + /** + * ドライブã¯ç©ºã§ã™ + */ "emptyDrive": string; + /** + * フォルダーã¯ç©ºã§ã™ + */ "emptyFolder": string; + /** + * 削除ã§ãã¾ã›ã‚“ + */ "unableToDelete": string; + /** + * æ–°ã—ã„ファイルåを入力ã—ã¦ãã ã•ã„ + */ "inputNewFileName": string; + /** + * æ–°ã—ã„ã‚ャプションを入力ã—ã¦ãã ã•ã„ + */ "inputNewDescription": string; + /** + * æ–°ã—ã„フォルダåを入力ã—ã¦ãã ã•ã„ + */ "inputNewFolderName": string; + /** + * 移動先ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã¯ã€ç§»å‹•ã™ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã®ã‚µãƒ–フォルダーã§ã™ã€‚ + */ "circularReferenceFolder": string; + /** + * ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã¯ç©ºã§ãªã„ãŸã‚ã€å‰Šé™¤ã§ãã¾ã›ã‚“。 + */ "hasChildFilesOrFolders": string; + /** + * URLをコピー + */ "copyUrl": string; + /** + * åå‰ã‚’変更 + */ "rename": string; + /** + * アイコン + */ "avatar": string; + /** + * ãƒãƒŠãƒ¼ + */ "banner": string; + /** + * センシティブãªãƒ¡ãƒ‡ã‚£ã‚¢ã®è¡¨ç¤º + */ "displayOfSensitiveMedia": string; + /** + * サーãƒãƒ¼ã¨ã®æŽ¥ç¶šãŒå¤±ã‚ã‚ŒãŸã¨ã + */ "whenServerDisconnected": string; + /** + * サーãƒãƒ¼ã‹ã‚‰åˆ‡æ–ã•ã‚Œã¾ã—㟠+ */ "disconnectedFromServer": string; + /** + * リãƒãƒ¼ãƒ‰ + */ "reload": string; + /** + * ãªã«ã‚‚ã—ãªã„ + */ "doNothing": string; + /** + * リãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ + */ "reloadConfirm": string; + /** + * ウォッム+ */ "watch": string; + /** + * ウォッãƒè§£é™¤ + */ "unwatch": string; + /** + * è¨±å¯ + */ "accept": string; + /** + * æ‹’å¦ + */ "reject": string; + /** + * 通常 + */ "normal": string; + /** + * サーãƒãƒ¼å + */ "instanceName": string; + /** + * サーãƒãƒ¼ã®ç´¹ä»‹ + */ "instanceDescription": string; + /** + * 管ç†è€…ã®åå‰ + */ "maintainerName": string; + /** + * 管ç†è€…ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ + */ "maintainerEmail": string; + /** + * 利用è¦ç´„URL + */ "tosUrl": string; + /** + * 今年 + */ "thisYear": string; + /** + * 今月 + */ "thisMonth": string; + /** + * 今日 + */ "today": string; + /** + * {day}æ—¥ + */ "dayX": ParameterizedString<"day">; + /** + * {month}月 + */ "monthX": ParameterizedString<"month">; + /** + * {year}å¹´ + */ "yearX": ParameterizedString<"year">; + /** + * ページ + */ "pages": string; + /** + * é€£æº + */ "integration": string; + /** + * 接続ã™ã‚‹ + */ "connectService": string; + /** + * 切æ–ã™ã‚‹ + */ "disconnectService": string; + /** + * ãƒãƒ¼ã‚«ãƒ«ã‚¿ã‚¤ãƒ ラインを有効ã«ã™ã‚‹ + */ "enableLocalTimeline": string; + /** + * ã‚°ãƒãƒ¼ãƒãƒ«ã‚¿ã‚¤ãƒ ラインを有効ã«ã™ã‚‹ + */ "enableGlobalTimeline": string; + /** + * ã“れらã®ã‚¿ã‚¤ãƒ ラインを無効化ã—ã¦ã‚‚ã€åˆ©ä¾¿æ€§ã®ãŸã‚管ç†è€…ãŠã‚ˆã³ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚¿ãƒ¼ã¯å¼•ã続ã利用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + */ "disablingTimelinesInfo": string; + /** + * 登録 + */ "registration": string; + /** + * 誰ã§ã‚‚æ–°è¦ç™»éŒ²ã§ãるよã†ã«ã™ã‚‹ + */ "enableRegistration": string; + /** + * 招待 + */ "invite": string; + /** + * ãƒãƒ¼ã‚«ãƒ«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã²ã¨ã‚Šã‚ãŸã‚Šã®ãƒ‰ãƒ©ã‚¤ãƒ–å®¹é‡ + */ "driveCapacityPerLocalAccount": string; + /** + * リモートユーザーã²ã¨ã‚Šã‚ãŸã‚Šã®ãƒ‰ãƒ©ã‚¤ãƒ–å®¹é‡ + */ "driveCapacityPerRemoteAccount": string; + /** + * メガãƒã‚¤ãƒˆå˜ä½ + */ "inMb": string; + /** + * ãƒãƒŠãƒ¼ç”»åƒã®URL + */ "bannerUrl": string; + /** + * 背景画åƒã®URL + */ "backgroundImageUrl": string; + /** + * åŸºæœ¬æƒ…å ± + */ "basicInfo": string; + /** + * ピン留ã‚ユーザー + */ "pinnedUsers": string; + /** + * 「ã¿ã¤ã‘ã‚‹ã€ãƒšãƒ¼ã‚¸ãªã©ã«ãƒ”ン留ã‚ã—ãŸã„ユーザーを改行ã§åŒºåˆ‡ã£ã¦è¨˜è¿°ã—ã¾ã™ã€‚ + */ "pinnedUsersDescription": string; + /** + * ピン留ã‚ページ + */ "pinnedPages": string; + /** + * サーãƒãƒ¼ã®ãƒˆãƒƒãƒ—ページã«ãƒ”ン留ã‚ã—ãŸã„ページã®ãƒ‘スを改行ã§åŒºåˆ‡ã£ã¦è¨˜è¿°ã—ã¾ã™ã€‚ + */ "pinnedPagesDescription": string; + /** + * ピン留ã‚ã™ã‚‹ã‚¯ãƒªãƒƒãƒ—ã®ID + */ "pinnedClipId": string; + /** + * ピン留ã‚ã•ã‚ŒãŸãƒŽãƒ¼ãƒˆ + */ "pinnedNotes": string; + /** + * hCaptcha + */ "hcaptcha": string; + /** + * hCaptchaを有効ã«ã™ã‚‹ + */ "enableHcaptcha": string; + /** + * サイトã‚ー + */ "hcaptchaSiteKey": string; + /** + * シークレットã‚ー + */ "hcaptchaSecretKey": string; + /** + * mCaptcha + */ "mcaptcha": string; + /** + * mCaptchaを有効ã«ã™ã‚‹ + */ "enableMcaptcha": string; + /** + * サイトã‚ー + */ "mcaptchaSiteKey": string; + /** + * シークレットã‚ー + */ "mcaptchaSecretKey": string; + /** + * mCaptchaã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®URL + */ "mcaptchaInstanceUrl": string; + /** + * reCAPTCHA + */ "recaptcha": string; + /** + * reCAPTCHAを有効ã«ã™ã‚‹ + */ "enableRecaptcha": string; + /** + * サイトã‚ー + */ "recaptchaSiteKey": string; + /** + * シークレットã‚ー + */ "recaptchaSecretKey": string; + /** + * Turnstile + */ "turnstile": string; + /** + * Turnstileを有効ã«ã™ã‚‹ + */ "enableTurnstile": string; + /** + * サイトã‚ー + */ "turnstileSiteKey": string; + /** + * シークレットã‚ー + */ "turnstileSecretKey": string; + /** + * 複数ã®Captchaを使用ã™ã‚‹ã¨å¹²æ¸‰ã‚’èµ·ã“ã™å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ä»–ã®Captchaを無効ã«ã—ã¾ã™ã‹ï¼Ÿã‚ャンセルã—ã¦è¤‡æ•°ã®Captchaを有効化ã—ãŸã¾ã¾ã«ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ + */ "avoidMultiCaptchaConfirm": string; + /** + * アンテナ + */ "antennas": string; + /** + * アンテナã®ç®¡ç† + */ "manageAntennas": string; + /** + * åå‰ + */ "name": string; + /** + * å—信ソース + */ "antennaSource": string; + /** + * å—ä¿¡ã‚ーワード + */ "antennaKeywords": string; + /** + * 除外ã‚ーワード + */ "antennaExcludeKeywords": string; + /** + * スペースã§åŒºåˆ‡ã‚‹ã¨AND指定ã«ãªã‚Šã€æ”¹è¡Œã§åŒºåˆ‡ã‚‹ã¨OR指定ã«ãªã‚Šã¾ã™ + */ "antennaKeywordsDescription": string; + /** + * æ–°ã—ã„ノートを通知ã™ã‚‹ + */ "notifyAntenna": string; + /** + * ファイルãŒæ·»ä»˜ã•ã‚ŒãŸãƒŽãƒ¼ãƒˆã®ã¿ + */ "withFileAntenna": string; + /** + * ブラウザã¸ã®ãƒ—ッシュ通知を有効ã«ã™ã‚‹ + */ "enableServiceworker": string; + /** + * ユーザーåを改行ã§åŒºåˆ‡ã£ã¦æŒ‡å®šã—ã¾ã™ + */ "antennaUsersDescription": string; + /** + * 大文å—å°æ–‡å—を区別ã™ã‚‹ + */ "caseSensitive": string; + /** + * 返信をå«ã‚€ + */ "withReplies": string; + /** + * 次ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«æŽ¥ç¶šã•ã‚Œã¦ã„ã¾ã™ + */ "connectedTo": string; + /** + * 投稿ã¨è¿”ä¿¡ + */ "notesAndReplies": string; + /** + * ファイル付ã + */ "withFiles": string; + /** + * サイレンス + */ "silence": string; + /** + * サイレンスã—ã¾ã™ã‹ï¼Ÿ + */ "silenceConfirm": string; + /** + * サイレンス解除 + */ "unsilence": string; + /** + * サイレンス解除ã—ã¾ã™ã‹ï¼Ÿ + */ "unsilenceConfirm": string; + /** + * 人気ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "popularUsers": string; + /** + * 最近投稿ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "recentlyUpdatedUsers": string; + /** + * 最近登録ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "recentlyRegisteredUsers": string; + /** + * 最近発見ã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "recentlyDiscoveredUsers": string; + /** + * {count}ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã„ã¾ã™ + */ "exploreUsersCount": ParameterizedString<"count">; + /** + * Fediverseを探索 + */ "exploreFediverse": string; + /** + * 人気ã®ã‚¿ã‚° + */ "popularTags": string; + /** + * リスト + */ "userList": string; + /** + * æƒ…å ± + */ "about": string; + /** + * Misskeyã«ã¤ã„㦠+ */ "aboutMisskey": string; + /** + * 管ç†è€… + */ "administrator": string; + /** + * 確èªã‚³ãƒ¼ãƒ‰ + */ "token": string; + /** + * 二è¦ç´ èªè¨¼ + */ "2fa": string; + /** + * 二è¦ç´ èªè¨¼ã®ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ— + */ "setupOf2fa": string; + /** + * èªè¨¼ã‚¢ãƒ—リ + */ "totp": string; + /** + * èªè¨¼ã‚¢ãƒ—リを使ã£ã¦ãƒ¯ãƒ³ã‚¿ã‚¤ãƒ パスワードを入力 + */ "totpDescription": string; + /** + * モデレーター + */ "moderator": string; + /** + * モデレーション + */ "moderation": string; + /** + * モデレーションノート + */ "moderationNote": string; + /** + * ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒŽãƒ¼ãƒˆã‚’è¿½åŠ ã™ã‚‹ + */ "addModerationNote": string; + /** + * モデãƒã‚° + */ "moderationLogs": string; + /** + * {n}人ãŒæŠ•ç¨¿ + */ "nUsersMentioned": ParameterizedString<"n">; + /** + * ã‚»ã‚ュリティã‚ー・パスã‚ー + */ "securityKeyAndPasskey": string; + /** + * ã‚»ã‚ュリティã‚ー + */ "securityKey": string; + /** + * 最後ã®ä½¿ç”¨ + */ "lastUsed": string; + /** + * 最後ã®ä½¿ç”¨: {t} + */ "lastUsedAt": ParameterizedString<"t">; + /** + * 登録を解除 + */ "unregister": string; + /** + * パスワードレスãƒã‚°ã‚¤ãƒ³ + */ "passwordLessLogin": string; + /** + * パスワードを使用ã›ãšã€ã‚»ã‚ュリティã‚ーやパスã‚ーãªã©ã®ã¿ã§ãƒã‚°ã‚¤ãƒ³ã—ã¾ã™ + */ "passwordLessLoginDescription": string; + /** + * パスワードをリセット + */ "resetPassword": string; + /** + * æ–°ã—ã„パスワードã¯ã€Œ{password}ã€ã§ã™ + */ "newPasswordIs": ParameterizedString<"password">; + /** + * UIã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’減ら㙠+ */ "reduceUiAnimation": string; + /** + * 共有 + */ "share": string; + /** + * 見ã¤ã‹ã‚Šã¾ã›ã‚“ + */ "notFound": string; + /** + * 指定ã•ã‚ŒãŸURLã«è©²å½“ã™ã‚‹ãƒšãƒ¼ã‚¸ã¯ã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ + */ "notFoundDescription": string; + /** + * 既定アップãƒãƒ¼ãƒ‰å…ˆ + */ "uploadFolder": string; + /** + * ã™ã¹ã¦ã®é€šçŸ¥ã‚’æ—¢èªã«ã™ã‚‹ + */ "markAsReadAllNotifications": string; + /** + * ã™ã¹ã¦ã®æŠ•ç¨¿ã‚’æ—¢èªã«ã™ã‚‹ + */ "markAsReadAllUnreadNotes": string; + /** + * ã™ã¹ã¦ã®ãƒãƒ£ãƒƒãƒˆã‚’æ—¢èªã«ã™ã‚‹ + */ "markAsReadAllTalkMessages": string; + /** + * ヘルプ + */ "help": string; + /** + * ã“ã“ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’入力 + */ "inputMessageHere": string; + /** + * é–‰ã˜ã‚‹ + */ "close": string; + /** + * 招待 + */ "invites": string; + /** + * メンãƒãƒ¼ + */ "members": string; + /** + * è²æ¸¡ + */ "transfer": string; + /** + * タイトル + */ "title": string; + /** + * テã‚スト + */ "text": string; + /** + * 有効ã«ã™ã‚‹ + */ "enable": string; + /** + * 次 + */ "next": string; + /** + * å†å…¥åŠ› + */ "retype": string; + /** + * {user}ã®ãƒŽãƒ¼ãƒˆ + */ "noteOf": ParameterizedString<"user">; + /** + * 引用付ã + */ "quoteAttached": string; + /** + * 引用ã¨ã—ã¦æ·»ä»˜ã—ã¾ã™ã‹ï¼Ÿ + */ "quoteQuestion": string; + /** + * ã¾ã ãƒãƒ£ãƒƒãƒˆã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noMessagesYet": string; + /** + * æ–°ã—ã„メッセージãŒã‚ã‚Šã¾ã™ + */ "newMessageExists": string; + /** + * メッセージã«æ·»ä»˜ã§ãるファイルã¯ã²ã¨ã¤ã§ã™ + */ "onlyOneFileCanBeAttached": string; + /** + * 続行ã™ã‚‹å‰ã«ã€ã‚µã‚¤ãƒ³ã‚¢ãƒƒãƒ—ã¾ãŸã¯ã‚µã‚¤ãƒ³ã‚¤ãƒ³ãŒå¿…è¦ã§ã™ + */ "signinRequired": string; + /** + * 招待 + */ "invitations": string; + /** + * 招待コード + */ "invitationCode": string; + /** + * 確èªã—ã¦ã„ã¾ã™ + */ "checking": string; + /** + * 利用ã§ãã¾ã™ + */ "available": string; + /** + * 利用ã§ãã¾ã›ã‚“ + */ "unavailable": string; + /** + * a~zã€A~Zã€0~9ã€_ãŒä½¿ãˆã¾ã™ + */ "usernameInvalidFormat": string; + /** + * çŸã™ãŽã¾ã™ + */ "tooShort": string; + /** + * é•·ã™ãŽã¾ã™ + */ "tooLong": string; + /** + * å¼±ã„パスワード + */ "weakPassword": string; + /** + * 普通ã®ãƒ‘スワード + */ "normalPassword": string; + /** + * å¼·ã„パスワード + */ "strongPassword": string; + /** + * 一致ã—ã¾ã—㟠+ */ "passwordMatched": string; + /** + * 一致ã—ã¦ã„ã¾ã›ã‚“ + */ "passwordNotMatched": string; + /** + * {x}ã§ãƒã‚°ã‚¤ãƒ³ + */ "signinWith": ParameterizedString<"x">; + /** + * ãƒã‚°ã‚¤ãƒ³ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ユーザーåã¨ãƒ‘スワードを確èªã—ã¦ãã ã•ã„。 + */ "signinFailed": string; + /** + * ã‚‚ã—ã㯠+ */ "or": string; + /** + * 言語 + */ "language": string; + /** + * UIã®è¡¨ç¤ºè¨€èªž + */ "uiLanguage": string; + /** + * {x}ã«ã¤ã„㦠+ */ "aboutX": ParameterizedString<"x">; + /** + * 絵文å—ã®ã‚¹ã‚¿ã‚¤ãƒ« + */ "emojiStyle": string; + /** + * ãƒã‚¤ãƒ†ã‚£ãƒ– + */ "native": string; + /** + * メニューをドãƒãƒ¯ãƒ¼ã§è¡¨ç¤ºã—ãªã„ + */ "disableDrawer": string; + /** + * ノートã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’ホãƒãƒ¼æ™‚ã®ã¿è¡¨ç¤ºã™ã‚‹ + */ "showNoteActionsOnlyHover": string; + /** + * å±¥æ´ã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noHistory": string; + /** + * ãƒã‚°ã‚¤ãƒ³å±¥æ´ + */ "signinHistory": string; + /** + * 高度ãªMFMを有効ã«ã™ã‚‹ + */ "enableAdvancedMfm": string; + /** + * å‹•ãã®ã‚ã‚‹MFMを有効ã«ã™ã‚‹ + */ "enableAnimatedMfm": string; + /** + * ã‚„ã£ã¦ã„ã¾ã™ + */ "doing": string; + /** + * カテゴリ + */ "category": string; + /** + * ã‚¿ã‚° + */ "tags": string; + /** + * ã“ã®ãƒ‰ã‚ュメントã®ã‚½ãƒ¼ã‚¹ + */ "docSource": string; + /** + * ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ä½œæˆ + */ "createAccount": string; + /** + * æ—¢å˜ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ + */ "existingAccount": string; + /** + * å†ç”Ÿæˆ + */ "regenerate": string; + /** + * フォントサイズ + */ "fontSize": string; + /** + * ç”»åƒãŒ1æžšã®ã¿ã®ãƒ¡ãƒ‡ã‚£ã‚¢ãƒªã‚¹ãƒˆã®é«˜ã• + */ "mediaListWithOneImageAppearance": string; + /** + * {x}を上é™ã« + */ "limitTo": ParameterizedString<"x">; + /** + * フォãƒãƒ¼ç”³è«‹ã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noFollowRequests": string; + /** + * ç”»åƒã‚’æ–°ã—ã„タブã§é–‹ã + */ "openImageInNewTab": string; + /** + * ダッシュボード + */ "dashboard": string; + /** + * ãƒãƒ¼ã‚«ãƒ« + */ "local": string; + /** + * リモート + */ "remote": string; + /** + * åˆè¨ˆ + */ "total": string; + /** + * å‰é€±æ¯” + */ "weekOverWeekChanges": string; + /** + * å‰æ—¥æ¯” + */ "dayOverDayChanges": string; + /** + * アピアランス + */ "appearance": string; + /** + * クライアントè¨å®š + */ "clientSettings": string; + /** + * アカウントè¨å®š + */ "accountSettings": string; + /** + * プãƒãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ + */ "promotion": string; + /** + * プãƒãƒ¢ãƒ¼ãƒˆ + */ "promote": string; + /** + * 日数 + */ "numberOfDays": string; + /** + * ã“ã®ãƒŽãƒ¼ãƒˆã‚’éžè¡¨ç¤º + */ "hideThisNote": string; + /** + * タイムラインã«ãŠã™ã™ã‚ã®ãƒŽãƒ¼ãƒˆã‚’表示ã™ã‚‹ + */ "showFeaturedNotesInTimeline": string; + /** + * オブジェクトストレージ + */ "objectStorage": string; + /** + * オブジェクトストレージを使用 + */ "useObjectStorage": string; + /** + * Base URL + */ "objectStorageBaseUrl": string; + /** + * å‚ç…§ã«ä½¿ç”¨ã™ã‚‹URL。CDNã‚„Proxyを使用ã—ã¦ã„ã‚‹å ´åˆã¯ãã®URLã€S3: 'https://<bucket>.s3.amazonaws.com'ã€GCSç‰: 'https://storage.googleapis.com/<bucket>'。 + */ "objectStorageBaseUrlDesc": string; + /** + * Bucket + */ "objectStorageBucket": string; + /** + * 使用サービスã®bucketåを指定ã—ã¦ãã ã•ã„。 + */ "objectStorageBucketDesc": string; + /** + * Prefix + */ "objectStoragePrefix": string; + /** + * ã“ã®prefixã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªä¸‹ã«æ ¼ç´ã•ã‚Œã¾ã™ã€‚ + */ "objectStoragePrefixDesc": string; + /** + * Endpoint + */ "objectStorageEndpoint": string; + /** + * S3ã®å ´åˆã¯ç©ºã€ãれ以外ã®å ´åˆã¯å„サービスã®endpointを指定ã—ã¦ãã ã•ã„。'<host>'ã¾ãŸã¯'<host>:<port>'ã®ã‚ˆã†ã«æŒ‡å®šã—ã¾ã™ã€‚ + */ "objectStorageEndpointDesc": string; + /** + * Region + */ "objectStorageRegion": string; + /** + * 'xx-east-1'ã®ã‚ˆã†ãªregionを指定ã—ã¦ãã ã•ã„。使用サービスã«regionã®æ¦‚念ãŒãªã„å ´åˆã¯'us-east-1'ã«ã—ã¦ãã ã•ã„。AWSè¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¾ãŸã¯ç’°å¢ƒå¤‰æ•°ã‚’å‚ç…§ã™ã‚‹å ´åˆã¯ç©ºã«ã—ã¦ãã ã•ã„。 + */ "objectStorageRegionDesc": string; + /** + * SSLを使用ã™ã‚‹ + */ "objectStorageUseSSL": string; + /** + * API接続ã«httpsを使用ã—ãªã„å ´åˆã¯ã‚ªãƒ•ã«ã—ã¦ãã ã•ã„ + */ "objectStorageUseSSLDesc": string; + /** + * Proxyを利用ã™ã‚‹ + */ "objectStorageUseProxy": string; + /** + * API接続ã«proxyを利用ã—ãªã„å ´åˆã¯ã‚ªãƒ•ã«ã—ã¦ãã ã•ã„ + */ "objectStorageUseProxyDesc": string; + /** + * アップãƒãƒ¼ãƒ‰æ™‚ã«'public-read'ã‚’è¨å®šã™ã‚‹ + */ "objectStorageSetPublicRead": string; + /** + * s3ForcePathStyleを有効ã«ã™ã‚‹ã¨ã€ãƒã‚±ãƒƒãƒˆåã‚’URLã®ãƒ›ã‚¹ãƒˆåã§ã¯ãªãパスã®ä¸€éƒ¨ã¨ã—ã¦æŒ‡å®šã™ã‚‹ã“ã¨ã‚’強制ã—ã¾ã™ã€‚セルフホストã•ã‚ŒãŸMinioãªã©ã®ä½¿ç”¨æ™‚ã«æœ‰åŠ¹ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ + */ "s3ForcePathStyleDesc": string; + /** + * サーãƒãƒ¼ãƒã‚° + */ "serverLogs": string; + /** + * å…¨ã¦å‰Šé™¤ + */ "deleteAll": string; + /** + * タイムライン上部ã«æŠ•ç¨¿ãƒ•ã‚©ãƒ¼ãƒ を表示ã™ã‚‹ + */ "showFixedPostForm": string; + /** + * タイムライン上部ã«æŠ•ç¨¿ãƒ•ã‚©ãƒ¼ãƒ を表示ã™ã‚‹(ãƒãƒ£ãƒ³ãƒãƒ«) + */ "showFixedPostFormInChannel": string; + /** + * フォãƒãƒ¼ã™ã‚‹éš›ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§è¿”ä¿¡ã‚’TLã«å«ã‚€ã‚ˆã†ã«ã™ã‚‹ + */ "withRepliesByDefaultForNewlyFollowed": string; + /** + * æ–°ã—ã„ノートãŒã‚ã‚Šã¾ã™ + */ "newNoteRecived": string; + /** + * サウンド + */ "sounds": string; + /** + * サウンド + */ "sound": string; + /** + * è´ã + */ "listen": string; + /** + * ãªã— + */ "none": string; + /** + * ページã§è¡¨ç¤º + */ "showInPage": string; + /** + * ãƒãƒƒãƒ—アウト + */ "popout": string; + /** + * éŸ³é‡ + */ "volume": string; + /** + * ãƒžã‚¹ã‚¿ãƒ¼éŸ³é‡ + */ "masterVolume": string; + /** + * サウンドを出力ã—ãªã„ + */ "notUseSound": string; + /** + * MisskeyãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªæ™‚ã®ã¿ã‚µã‚¦ãƒ³ãƒ‰ã‚’出力ã™ã‚‹ + */ "useSoundOnlyWhenActive": string; + /** + * 詳細 + */ "details": string; + /** + * 絵文å—ã‚’é¸æŠž + */ "chooseEmoji": string; + /** + * æ“作を完了ã§ãã¾ã›ã‚“ + */ "unableToProcess": string; + /** + * 最近使用 + */ "recentUsed": string; + /** + * インストール + */ "install": string; + /** + * アンインストール + */ "uninstall": string; + /** + * インストールã•ã‚ŒãŸã‚¢ãƒ—リ + */ "installedApps": string; + /** + * ã‚ã‚Šã¾ã›ã‚“ + */ "nothing": string; + /** + * インストール日時 + */ "installedDate": string; + /** + * 最終使用日時 + */ "lastUsedDate": string; + /** + * 状態 + */ "state": string; + /** + * ソート + */ "sort": string; + /** + * æ˜‡é † + */ "ascendingOrder": string; + /** + * é™é † + */ "descendingOrder": string; + /** + * スクラッãƒãƒ‘ッド + */ "scratchpad": string; + /** + * スクラッãƒãƒ‘ッドã¯ã€AiScriptã®å®Ÿé¨“環境をæä¾›ã—ã¾ã™ã€‚Misskeyã¨å¯¾è©±ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã®è¨˜è¿°ã€å®Ÿè¡Œã€çµæžœã®ç¢ºèªãŒã§ãã¾ã™ã€‚ + */ "scratchpadDescription": string; + /** + * 出力 + */ "output": string; + /** + * スクリプト + */ "script": string; + /** + * Pagesã®ã‚¹ã‚¯ãƒªãƒ—トを無効ã«ã™ã‚‹ + */ "disablePagesScript": string; + /** + * ãƒªãƒ¢ãƒ¼ãƒˆãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ±ã®æ›´æ–° + */ "updateRemoteUser": string; + /** + * アイコンを解除 + */ "unsetUserAvatar": string; + /** + * アイコンを解除ã—ã¾ã™ã‹ï¼Ÿ + */ "unsetUserAvatarConfirm": string; + /** + * ãƒãƒŠãƒ¼ã‚’解除 + */ "unsetUserBanner": string; + /** + * ãƒãƒŠãƒ¼ã‚’解除ã—ã¾ã™ã‹ï¼Ÿ + */ "unsetUserBannerConfirm": string; + /** + * ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除 + */ "deleteAllFiles": string; + /** + * ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ + */ "deleteAllFilesConfirm": string; + /** + * フォãƒãƒ¼ã‚’全解除 + */ "removeAllFollowing": string; + /** + * {host}ã‹ã‚‰ã®ãƒ•ã‚©ãƒãƒ¼ã‚’ã™ã¹ã¦è§£é™¤ã—ã¾ã™ã€‚ãã®ã‚µãƒ¼ãƒãƒ¼ãŒã‚‚ã†å˜åœ¨ã—ãªããªã£ãŸå ´åˆãªã©ã«å®Ÿè¡Œã—ã¦ãã ã•ã„。 + */ "removeAllFollowingDescription": ParameterizedString<"host">; + /** + * ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯å‡çµã•ã‚Œã¦ã„ã¾ã™ã€‚ + */ "userSuspended": string; + /** + * ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã‚µã‚¤ãƒ¬ãƒ³ã‚¹ã•ã‚Œã¦ã„ã¾ã™ã€‚ + */ "userSilenced": string; + /** + * アカウントãŒå‡çµã•ã‚Œã¦ã„ã¾ã™ + */ "yourAccountSuspendedTitle": string; + /** + * ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ã€ã‚µãƒ¼ãƒãƒ¼ã®åˆ©ç”¨è¦ç´„ã«é•åã—ãŸãªã©ã®ç†ç”±ã«ã‚ˆã‚Šã€å‡çµã•ã‚Œã¦ã„ã¾ã™ã€‚詳細ã«ã¤ã„ã¦ã¯ç®¡ç†è€…ã¾ã§ãŠå•ã„åˆã‚ã›ãã ã•ã„。新ã—ã„アカウントを作らãªã„ã§ãã ã•ã„。 + */ "yourAccountSuspendedDescription": string; + /** + * トークンãŒç„¡åŠ¹ã§ã™ + */ "tokenRevoked": string; + /** + * ãƒã‚°ã‚¤ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ãŒå¤±åŠ¹ã—ã¦ã„ã¾ã™ã€‚ãƒã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦ãã ã•ã„。 + */ "tokenRevokedDescription": string; + /** + * アカウントã¯å‰Šé™¤ã•ã‚Œã¦ã„ã¾ã™ + */ "accountDeleted": string; + /** + * ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯å‰Šé™¤ã•ã‚Œã¦ã„ã¾ã™ã€‚ + */ "accountDeletedDescription": string; + /** + * メニュー + */ "menu": string; + /** + * 分割線 + */ "divider": string; + /** + * é …ç›®ã‚’è¿½åŠ + */ "addItem": string; + /** + * 並ã³æ›¿ãˆ + */ "rearrange": string; + /** + * リレー + */ "relays": string; + /** + * リレーã®è¿½åŠ + */ "addRelay": string; + /** + * inboxã®URL + */ "inboxUrl": string; + /** + * è¿½åŠ æ¸ˆã¿ã®ãƒªãƒ¬ãƒ¼ + */ "addedRelays": string; + /** + * プッシュ通知を行ã†ã«ã¯æœ‰åŠ¹ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + */ "serviceworkerInfo": string; + /** + * 削除ã•ã‚ŒãŸæŠ•ç¨¿ + */ "deletedNote": string; + /** + * éžå…¬é–‹ã®æŠ•ç¨¿ + */ "invisibleNote": string; + /** + * 自動ã§ã‚‚ã£ã¨è¦‹ã‚‹ + */ "enableInfiniteScroll": string; + /** + * 公開範囲 + */ "visibility": string; + /** + * アンケート + */ "poll": string; + /** + * å†…å®¹ã‚’éš ã™ + */ "useCw": string; + /** + * プレイヤーを開ã + */ "enablePlayer": string; + /** + * プレイヤーを閉ã˜ã‚‹ + */ "disablePlayer": string; + /** + * ãƒã‚¹ãƒˆã‚’展開ã™ã‚‹ + */ "expandTweet": string; + /** + * テーマエディター + */ "themeEditor": string; + /** + * 説明 + */ "description": string; + /** + * ã‚ャプションを付ã‘ã‚‹ + */ "describeFile": string; + /** + * ã‚ャプションを入力 + */ "enterFileDescription": string; + /** + * 作者 + */ "author": string; + /** + * 未ä¿å˜ã®å¤‰æ›´ãŒã‚ã‚Šã¾ã™ã€‚ç ´æ£„ã—ã¾ã™ã‹ï¼Ÿ + */ "leaveConfirm": string; + /** + * ç®¡ç† + */ "manage": string; + /** + * プラグイン + */ "plugins": string; + /** + * è¨å®šã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— + */ "preferencesBackups": string; + /** + * デッ゠+ */ "deck": string; + /** + * デッã‚解除 + */ "undeck": string; + /** + * モーダルã«ã¼ã‹ã—効果を使用 + */ "useBlurEffectForModal": string; + /** + * フル機能リアクションピッカーを使用 + */ "useFullReactionPicker": string; + /** + * å¹… + */ "width": string; + /** + * 高㕠+ */ "height": string; + /** + * 大 + */ "large": string; + /** + * ä¸ + */ "medium": string; + /** + * å° + */ "small": string; + /** + * アクセストークンã®ç™ºè¡Œ + */ "generateAccessToken": string; + /** + * æ¨©é™ + */ "permission": string; + /** + * 管ç†è€…æ¨©é™ + */ "adminPermission": string; + /** + * å…¨ã¦æœ‰åŠ¹ã«ã™ã‚‹ + */ "enableAll": string; + /** + * å…¨ã¦ç„¡åŠ¹ã«ã™ã‚‹ + */ "disableAll": string; + /** + * アカウントã¸ã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ + */ "tokenRequested": string; + /** + * ã“ã®ãƒ—ラグインã¯ã“ã“ã§è¨å®šã—ãŸæ¨©é™ã‚’行使ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ + */ "pluginTokenRequestedDescription": string; + /** + * 通知ã®ç¨®é¡ž + */ "notificationType": string; + /** + * 編集 + */ "edit": string; + /** + * メールサーãƒãƒ¼ + */ "emailServer": string; + /** + * メールé…信機能を有効化ã™ã‚‹ + */ "enableEmail": string; + /** + * メールアドレスã®ç¢ºèªã‚„パスワードリセットã®éš›ã«ä½¿ã„ã¾ã™ + */ "emailConfigInfo": string; + /** + * メール + */ "email": string; + /** + * メールアドレス + */ "emailAddress": string; + /** + * SMTP サーãƒãƒ¼ã®è¨å®š + */ "smtpConfig": string; + /** + * ホスト + */ "smtpHost": string; + /** + * ãƒãƒ¼ãƒˆ + */ "smtpPort": string; + /** + * ユーザーå + */ "smtpUser": string; + /** + * パスワード + */ "smtpPass": string; + /** + * ユーザーåã¨ãƒ‘スワードを空欄ã«ã™ã‚‹ã“ã¨ã§ã€SMTPèªè¨¼ã‚’無効化出æ¥ã¾ã™ + */ "emptyToDisableSmtpAuth": string; + /** + * SMTP 接続ã«æš—黙的ãªSSL/TLSを使用ã™ã‚‹ + */ "smtpSecure": string; + /** + * STARTTLS使用時ã¯ã‚ªãƒ•ã«ã—ã¾ã™ã€‚ + */ "smtpSecureInfo": string; + /** + * é…信テスト + */ "testEmail": string; + /** + * ワードミュート + */ "wordMute": string; + /** + * ãƒãƒ¼ãƒ‰ãƒ¯ãƒ¼ãƒ‰ãƒŸãƒ¥ãƒ¼ãƒˆ + */ "hardWordMute": string; + /** + * æ£è¦è¡¨ç¾ã‚¨ãƒ©ãƒ¼ + */ "regexpError": string; + /** + * {tab}ワードミュートã®{line}行目ã®æ£è¦è¡¨ç¾ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: + */ "regexpErrorDescription": ParameterizedString<"tab" | "line">; + /** + * サーãƒãƒ¼ãƒŸãƒ¥ãƒ¼ãƒˆ + */ "instanceMute": string; + /** + * {name}ãŒä½•ã‹ã‚’言ã„ã¾ã—㟠+ */ "userSaysSomething": ParameterizedString<"name">; + /** + * アクティブã«ã™ã‚‹ + */ "makeActive": string; + /** + * 表示 + */ "display": string; + /** + * コピー + */ "copy": string; + /** + * メトリクス + */ "metrics": string; + /** + * æ¦‚è¦ + */ "overview": string; + /** + * ãƒã‚° + */ "logs": string; + /** + * é…延 + */ "delayed": string; + /** + * データベース + */ "database": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ« + */ "channel": string; + /** + * ä½œæˆ + */ "create": string; + /** + * 通知è¨å®š + */ "notificationSetting": string; + /** + * 表示ã™ã‚‹é€šçŸ¥ã®ç¨®åˆ¥ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + */ "notificationSettingDesc": string; + /** + * ã‚°ãƒãƒ¼ãƒãƒ«è¨å®šã‚’使ㆠ+ */ "useGlobalSetting": string; + /** + * オンã«ã™ã‚‹ã¨ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®é€šçŸ¥è¨å®šãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚オフã«ã™ã‚‹ã¨ã€å€‹åˆ¥ã«è¨å®šã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚ + */ "useGlobalSettingDesc": string; + /** + * ãã®ä»– + */ "other": string; + /** + * ãƒã‚°ã‚¤ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ã‚’å†ç”Ÿæˆ + */ "regenerateLoginToken": string; + /** + * ãƒã‚°ã‚¤ãƒ³ã«ä½¿ç”¨ã•ã‚Œã‚‹å†…部トークンをå†ç”Ÿæˆã—ã¾ã™ã€‚通常ã“ã®æ“作を行ã†å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。å†ç”Ÿæˆã™ã‚‹ã¨ã€å…¨ã¦ã®ãƒ‡ãƒã‚¤ã‚¹ã§ãƒã‚°ã‚¢ã‚¦ãƒˆã•ã‚Œã¾ã™ã€‚ + */ "regenerateLoginTokenDescription": string; + /** + * カスタム絵文å—を検索ã™ã‚‹æ™‚ã®ã‚ーワードã«ãªã‚Šã¾ã™ã€‚ + */ "theKeywordWhenSearchingForCustomEmoji": string; + /** + * スペースã§åŒºåˆ‡ã£ã¦è¤‡æ•°è¨å®šã§ãã¾ã™ã€‚ + */ "setMultipleBySeparatingWithSpace": string; + /** + * ファイルIDã¾ãŸã¯URL + */ "fileIdOrUrl": string; + /** + * 動作 + */ "behavior": string; + /** + * サンプル + */ "sample": string; + /** + * é€šå ± + */ "abuseReports": string; + /** + * é€šå ± + */ "reportAbuse": string; + /** + * ãƒªãƒŽãƒ¼ãƒˆã‚’é€šå ± + */ "reportAbuseRenote": string; + /** + * {name}ã‚’é€šå ±ã™ã‚‹ + */ "reportAbuseOf": ParameterizedString<"name">; + /** + * é€šå ±ç†ç”±ã®è©³ç´°ã‚’記入ã—ã¦ãã ã•ã„。対象ã®ãƒŽãƒ¼ãƒˆãŒã‚ã‚‹å ´åˆã¯ãã®URLも記入ã—ã¦ãã ã•ã„。 + */ "fillAbuseReportDescription": string; + /** + * 内容ãŒé€ä¿¡ã•ã‚Œã¾ã—ãŸã€‚ã”å ±å‘Šã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚ + */ "abuseReported": string; + /** + * é€šå ±è€… + */ "reporter": string; + /** + * é€šå ±å…ˆ + */ "reporteeOrigin": string; + /** + * é€šå ±å…ƒ + */ "reporterOrigin": string; + /** + * リモートサーãƒãƒ¼ã«é€šå ±ã‚’転é€ã™ã‚‹ + */ "forwardReport": string; + /** + * リモートサーãƒãƒ¼ã‹ã‚‰ã¯ã‚ãªãŸã®æƒ…å ±ã¯è¦‹ã‚Œãšã€åŒ¿åã®ã‚·ã‚¹ãƒ†ãƒ アカウントã¨ã—ã¦è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + */ "forwardReportIsAnonymous": string; + /** + * é€ä¿¡ + */ "send": string; + /** + * 対応済ã¿ã«ã™ã‚‹ + */ "abuseMarkAsResolved": string; + /** + * æ–°ã—ã„タブã§é–‹ã + */ "openInNewTab": string; + /** + * サイドビューã§é–‹ã + */ "openInSideView": string; + /** + * デフォルトã®ãƒŠãƒ“ゲーション + */ "defaultNavigationBehaviour": string; + /** + * ã“れらã®è¨å®šã‚’編集ã™ã‚‹ã¨ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒç ´æã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ + */ "editTheseSettingsMayBreakAccount": string; + /** + * ノートã®ã‚µãƒ¼ãƒãƒ¼æƒ…å ± + */ "instanceTicker": string; + /** + * {x}ã‚’å¾…ã£ã¦ã„ã¾ã™ + */ "waitingFor": ParameterizedString<"x">; + /** + * ランダム+ */ "random": string; + /** + * システム+ */ "system": string; + /** + * UI切り替㈠+ */ "switchUi": string; + /** + * デスクトップ + */ "desktop": string; + /** + * クリップ + */ "clip": string; + /** + * æ–°è¦ä½œæˆ + */ "createNew": string; + /** + * ä»»æ„ + */ "optional": string; + /** + * æ–°ã—ã„ã‚¯ãƒªãƒƒãƒ—ã‚’ä½œæˆ + */ "createNewClip": string; + /** + * クリップ解除 + */ "unclip": string; + /** + * ã“ã®ãƒŽãƒ¼ãƒˆã¯ã™ã§ã«ã‚¯ãƒªãƒƒãƒ—「{name}ã€ã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ノートをã“ã®ã‚¯ãƒªãƒƒãƒ—ã‹ã‚‰é™¤å¤–ã—ã¾ã™ã‹ï¼Ÿ + */ "confirmToUnclipAlreadyClippedNote": ParameterizedString<"name">; + /** + * パブリック + */ "public": string; + /** + * éžå…¬é–‹ + */ "private": string; + /** + * Misskeyã¯æœ‰å¿—ã«ã‚ˆã£ã¦æ§˜ã€…ãªè¨€èªžã«ç¿»è¨³ã•ã‚Œã¦ã„ã¾ã™ã€‚{link}ã§ç¿»è¨³ã«å”力ã§ãã¾ã™ã€‚ + */ "i18nInfo": ParameterizedString<"link">; + /** + * アクセストークンã®ç®¡ç† + */ "manageAccessTokens": string; + /** + * ã‚¢ã‚«ã‚¦ãƒ³ãƒˆæƒ…å ± + */ "accountInfo": string; + /** + * ノートã®æ•° + */ "notesCount": string; + /** + * 返信ã—ãŸæ•° + */ "repliesCount": string; + /** + * リノートã—ãŸæ•° + */ "renotesCount": string; + /** + * 返信ã•ã‚ŒãŸæ•° + */ "repliedCount": string; + /** + * リノートã•ã‚ŒãŸæ•° + */ "renotedCount": string; + /** + * フォãƒãƒ¼æ•° + */ "followingCount": string; + /** + * フォãƒãƒ¯ãƒ¼æ•° + */ "followersCount": string; + /** + * リアクションã—ãŸæ•° + */ "sentReactionsCount": string; + /** + * リアクションã•ã‚ŒãŸæ•° + */ "receivedReactionsCount": string; + /** + * アンケートã«æŠ•ç¥¨ã—ãŸæ•° + */ "pollVotesCount": string; + /** + * アンケートã«æŠ•ç¥¨ã•ã‚ŒãŸæ•° + */ "pollVotedCount": string; + /** + * ã¯ã„ + */ "yes": string; + /** + * ã„ã„㈠+ */ "no": string; + /** + * ドライブã®ãƒ•ã‚¡ã‚¤ãƒ«æ•° + */ "driveFilesCount": string; + /** + * ãƒ‰ãƒ©ã‚¤ãƒ–ä½¿ç”¨é‡ + */ "driveUsage": string; + /** + * クãƒãƒ¼ãƒ©ãƒ¼ã«ã‚ˆã‚‹ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’æ‹’å¦ + */ "noCrawle": string; + /** + * 外部ã®æ¤œç´¢ã‚¨ãƒ³ã‚¸ãƒ³ã«ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒšãƒ¼ã‚¸ã€ãƒŽãƒ¼ãƒˆã€Pagesãªã©ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を登録(インデックス)ã—ãªã„よã†è¦æ±‚ã—ã¾ã™ã€‚ + */ "noCrawleDescription": string; + /** + * フォãƒãƒ¼ã‚’承èªåˆ¶ã«ã—ã¦ã‚‚ã€ãƒŽãƒ¼ãƒˆã®å…¬é–‹ç¯„囲を「フォãƒãƒ¯ãƒ¼ã€ã«ã—ãªã„é™ã‚Šã€èª°ã§ã‚‚ã‚ãªãŸã®ãƒŽãƒ¼ãƒˆã‚’見るã“ã¨ãŒã§ãã¾ã™ã€‚ + */ "lockedAccountInfo": string; + /** + * デフォルトã§ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’センシティブè¨å®šã«ã™ã‚‹ + */ "alwaysMarkSensitive": string; + /** + * 添付画åƒã®ã‚µãƒ ãƒã‚¤ãƒ«ã‚’オリジナル画質ã«ã™ã‚‹ + */ "loadRawImages": string; + /** + * アニメーション画åƒã‚’å†ç”Ÿã—ãªã„ + */ "disableShowingAnimatedImages": string; + /** + * メディアãŒã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ã§ã‚ã‚‹ã“ã¨ã‚’分ã‹ã‚Šã‚„ã™ã表示 + */ "highlightSensitiveMedia": string; + /** + * 確èªã®ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã—ã¾ã—ãŸã€‚メールã«è¨˜è¼‰ã•ã‚ŒãŸãƒªãƒ³ã‚¯ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã€è¨å®šã‚’完了ã—ã¦ãã ã•ã„。 + */ "verificationEmailSent": string; + /** + * 未è¨å®š + */ "notSet": string; + /** + * メールアドレスãŒç¢ºèªã•ã‚Œã¾ã—㟠+ */ "emailVerified": string; + /** + * ãŠæ°—ã«å…¥ã‚ŠãƒŽãƒ¼ãƒˆã®æ•° + */ "noteFavoritesCount": string; + /** + * Pageã«ã„ã„ãã—ãŸæ•° + */ "pageLikesCount": string; + /** + * Pageã«ã„ã„ãã•ã‚ŒãŸæ•° + */ "pageLikedCount": string; + /** + * 連絡先 + */ "contact": string; + /** + * システムã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ãƒ•ã‚©ãƒ³ãƒˆã‚’使ㆠ+ */ "useSystemFont": string; + /** + * クリップ + */ "clips": string; + /** + * 実験的機能 + */ "experimentalFeatures": string; + /** + * 実験的 + */ "experimental": string; + /** + * ã“ã‚Œã¯å®Ÿé¨“çš„ãªæ©Ÿèƒ½ã§ã™ã€‚仕様ãŒå¤‰æ›´ã•ã‚ŒãŸã‚Šã€æ£å¸¸ã«å‹•ä½œã—ãªã‹ã£ãŸã‚Šã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ + */ "thisIsExperimentalFeature": string; + /** + * 開発者 + */ "developer": string; + /** + * アカウントを見ã¤ã‘ã‚„ã™ãã™ã‚‹ + */ "makeExplorable": string; + /** + * オフã«ã™ã‚‹ã¨ã€ã€Œã¿ã¤ã‘ã‚‹ã€ã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒè¼‰ã‚‰ãªããªã‚Šã¾ã™ã€‚ + */ "makeExplorableDescription": string; + /** + * タイムラインã®ãƒŽãƒ¼ãƒˆã‚’離ã—ã¦è¡¨ç¤º + */ "showGapBetweenNotesInTimeline": string; + /** + * 複製 + */ "duplicate": string; + /** + * å·¦ + */ "left": string; + /** + * ä¸å¤® + */ "center": string; + /** + * 広ㄠ+ */ "wide": string; + /** + * ç‹ã„ + */ "narrow": string; + /** + * è¨å®šã¯ãƒšãƒ¼ã‚¸ãƒªãƒãƒ¼ãƒ‰å¾Œã«åæ˜ ã•ã‚Œã¾ã™ã€‚今ã™ãリãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ + */ "reloadToApplySetting": string; + /** + * åæ˜ ã«ã¯å†èµ·å‹•ãŒå¿…è¦ã§ã™ã€‚ + */ "needReloadToApply": string; + /** + * タイトルãƒãƒ¼ã‚’表示ã™ã‚‹ + */ "showTitlebar": string; + /** + * ã‚ャッシュをクリア + */ "clearCache": string; + /** + * {n}人ãŒã‚ªãƒ³ãƒ©ã‚¤ãƒ³ + */ "onlineUsersCount": ParameterizedString<"n">; + /** + * {n}ユーザー + */ "nUsers": ParameterizedString<"n">; + /** + * {n}ノート + */ "nNotes": ParameterizedString<"n">; + /** + * エラーリãƒãƒ¼ãƒˆã‚’é€ä¿¡ + */ "sendErrorReports": string; + /** + * オンã«ã™ã‚‹ã¨ã€å•é¡ŒãŒç™ºç”Ÿã—ãŸã¨ãã«ã‚¨ãƒ©ãƒ¼ã®è©³ç´°æƒ…å ±ãŒMisskeyã«å…±æœ‰ã•ã‚Œã€ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®å“質å‘上ã«å½¹ç«‹ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã‚¨ãƒ©ãƒ¼æƒ…å ±ã«ã¯ã€OSã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€ãƒ–ラウザã®ç¨®é¡žã€è¡Œå‹•å±¥æ´ãªã©ãŒå«ã¾ã‚Œã¾ã™ã€‚ + */ "sendErrorReportsDescription": string; + /** + * マイテーマ + */ "myTheme": string; + /** + * 背景 + */ "backgroundColor": string; + /** + * アクセント + */ "accentColor": string; + /** + * æ–‡å— + */ "textColor": string; + /** + * åå‰ã‚’付ã‘ã¦ä¿å˜ + */ "saveAs": string; + /** + * 高度 + */ "advanced": string; + /** + * 高度ãªè¨å®š + */ "advancedSettings": string; + /** + * 値 + */ "value": string; + /** + * 作æˆæ—¥æ™‚ + */ "createdAt": string; + /** + * 更新日時 + */ "updatedAt": string; + /** + * ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ + */ "saveConfirm": string; + /** + * 削除ã—ã¾ã™ã‹ï¼Ÿ + */ "deleteConfirm": string; + /** + * 有効ãªå€¤ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + */ "invalidValue": string; + /** + * レジストリ + */ "registry": string; + /** + * アカウントを閉鎖ã™ã‚‹ + */ "closeAccount": string; + /** + * ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ + */ "currentVersion": string; + /** + * 最新ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ + */ "latestVersion": string; + /** + * ãŠä½¿ã„ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã¯æœ€æ–°ã§ã™ã€‚ + */ "youAreRunningUpToDateClient": string; + /** + * æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚ + */ "newVersionOfClientAvailable": string; + /** + * ä½¿ç”¨é‡ + */ "usageAmount": string; + /** + * å®¹é‡ + */ "capacity": string; + /** + * ä½¿ç”¨ä¸ + */ "inUse": string; + /** + * コードを編集 + */ "editCode": string; + /** + * é©ç”¨ + */ "apply": string; + /** + * サーãƒãƒ¼ã‹ã‚‰ã®ãŠçŸ¥ã‚‰ã›ã‚’å—ã‘å–ã‚‹ + */ "receiveAnnouncementFromInstance": string; + /** + * メール通知 + */ "emailNotification": string; + /** + * 公開 + */ "publish": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«å†…検索 + */ "inChannelSearch": string; + /** + * å³ã‚¯ãƒªãƒƒã‚¯ã§ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãƒ”ッカーを開ã + */ "useReactionPickerForContextMenu": string; + /** + * {users}ãŒå…¥åŠ›ä¸ + */ "typingUsers": ParameterizedString<"users">; + /** + * 特定ã®æ—¥ä»˜ã«ã‚¸ãƒ£ãƒ³ãƒ— + */ "jumpToSpecifiedDate": string; + /** + * éŽåŽ»ã®ã‚¿ã‚¤ãƒ ラインを表示ã—ã¦ã„ã¾ã™ + */ "showingPastTimeline": string; + /** + * クリア + */ "clear": string; + /** + * å…¨ã¦æ—¢èªã«ã™ã‚‹ + */ "markAllAsRead": string; + /** + * 戻る + */ "goBack": string; + /** + * ã„ã„ã解除ã—ã¾ã™ã‹ï¼Ÿ + */ "unlikeConfirm": string; + /** + * フルビュー + */ "fullView": string; + /** + * フルビュー解除 + */ "quitFullView": string; + /** + * èª¬æ˜Žã‚’è¿½åŠ + */ "addDescription": string; + /** + * 個々ã®ãƒŽãƒ¼ãƒˆã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰ã€Œãƒ”ン留ã‚ã€ã‚’é¸æŠžã™ã‚‹ã“ã¨ã§ã€ã“ã“ã«ãƒŽãƒ¼ãƒˆã‚’表示ã—ã¦ãŠãã“ã¨ãŒã§ãã¾ã™ã€‚ + */ "userPagePinTip": string; + /** + * 宛先ã«å«ã¾ã‚Œã¦ã„ãªã„メンションãŒã‚ã‚Šã¾ã™ + */ "notSpecifiedMentionWarning": string; + /** + * æƒ…å ± + */ "info": string; + /** + * ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ± + */ "userInfo": string; + /** + * ä¸æ˜Ž + */ "unknown": string; + /** + * オンライン状態 + */ "onlineStatus": string; + /** + * ã‚ªãƒ³ãƒ©ã‚¤ãƒ³çŠ¶æ…‹ã‚’éš ã™ + */ "hideOnlineStatus": string; + /** + * ã‚ªãƒ³ãƒ©ã‚¤ãƒ³çŠ¶æ…‹ã‚’éš ã™ã¨ã€æ¤œç´¢ãªã©ã®ä¸€éƒ¨æ©Ÿèƒ½ã«ãŠã„ã¦åˆ©ä¾¿æ€§ãŒä½Žä¸‹ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ + */ "hideOnlineStatusDescription": string; + /** + * オンライン + */ "online": string; + /** + * アクティブ + */ "active": string; + /** + * オフライン + */ "offline": string; + /** + * éžæŽ¨å¥¨ + */ "notRecommended": string; + /** + * Botプãƒãƒ†ã‚¯ã‚·ãƒ§ãƒ³ + */ "botProtection": string; + /** + * サーãƒãƒ¼ãƒ–ãƒãƒƒã‚¯ãƒ»ã‚µã‚¤ãƒ¬ãƒ³ã‚¹ + */ "instanceBlocking": string; + /** + * アカウントをé¸æŠž + */ "selectAccount": string; + /** + * アカウントを切り替㈠+ */ "switchAccount": string; + /** + * 有効 + */ "enabled": string; + /** + * 無効 + */ "disabled": string; + /** + * クイックアクション + */ "quickAction": string; + /** + * ユーザー + */ "user": string; + /** + * ç®¡ç† + */ "administration": string; + /** + * アカウント + */ "accounts": string; + /** + * 切り替㈠+ */ "switch": string; + /** + * 管ç†è€…æƒ…å ±ãŒè¨å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。 + */ "noMaintainerInformationWarning": string; + /** + * Botプãƒãƒ†ã‚¯ã‚·ãƒ§ãƒ³ãŒè¨å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。 + */ "noBotProtectionWarning": string; + /** + * è¨å®šã™ã‚‹ + */ "configure": string; + /** + * ギャラリーã¸æŠ•ç¨¿ + */ "postToGallery": string; + /** + * ã“ã®ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°ã§æŠ•ç¨¿ + */ "postToHashtag": string; + /** + * ギャラリー + */ "gallery": string; + /** + * 最近ã®æŠ•ç¨¿ + */ "recentPosts": string; + /** + * 人気ã®æŠ•ç¨¿ + */ "popularPosts": string; + /** + * ノートã§å…±æœ‰ + */ "shareWithNote": string; + /** + * 広告 + */ "ads": string; + /** + * æœŸé™ + */ "expiration": string; + /** + * 開始期間 + */ "startingperiod": string; + /** + * メモ + */ "memo": string; + /** + * 優先度 + */ "priority": string; + /** + * 高 + */ "high": string; + /** + * ä¸ + */ "middle": string; + /** + * 低 + */ "low": string; + /** + * メールアドレスã®è¨å®šãŒã•ã‚Œã¦ã„ã¾ã›ã‚“。 + */ "emailNotConfiguredWarning": string; + /** + * 比率 + */ "ratio": string; + /** + * 本文をプレビュー + */ "previewNoteText": string; + /** + * カスタムCSS + */ "customCss": string; + /** + * ã“ã®è¨å®šã¯å¿…ãšçŸ¥è˜ã®ã‚ã‚‹æ–¹ãŒè¡Œã£ã¦ãã ã•ã„。ä¸é©åˆ‡ãªè¨å®šã‚’è¡Œã†ã¨ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒæ£å¸¸ã«ä½¿ç”¨ã§ããªããªã‚‹æã‚ŒãŒã‚ã‚Šã¾ã™ã€‚ + */ "customCssWarn": string; + /** + * ã‚°ãƒãƒ¼ãƒãƒ« + */ "global": string; + /** + * アイコンを四角形ã§è¡¨ç¤º + */ "squareAvatars": string; + /** + * é€ä¿¡ + */ "sent": string; + /** + * å—ä¿¡ + */ "received": string; + /** + * 検索çµæžœ + */ "searchResult": string; + /** + * ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚° + */ "hashtags": string; + /** + * トラブルシューティング + */ "troubleshooting": string; + /** + * UIã«ã¼ã‹ã—効果を使用 + */ "useBlurEffect": string; + /** + * 詳ã—ã + */ "learnMore": string; + /** + * MisskeyãŒæ›´æ–°ã•ã‚Œã¾ã—ãŸï¼ + */ "misskeyUpdated": string; + /** + * æ›´æ–°æƒ…å ±ã‚’è¦‹ã‚‹ + */ "whatIsNew": string; + /** + * 翻訳 + */ "translate": string; + /** + * {x}ã‹ã‚‰ç¿»è¨³ + */ "translatedFrom": ParameterizedString<"x">; + /** + * アカウントã®å‰Šé™¤ãŒé€²è¡Œä¸ã§ã™ + */ "accountDeletionInProgress": string; + /** + * サーãƒãƒ¼ä¸Šã§ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’一æ„ã«è˜åˆ¥ã™ã‚‹ãŸã‚ã®åå‰ã€‚アルファベット(a~z, A~Z)ã€æ•°å—(0~9)ã€ãŠã‚ˆã³ã‚¢ãƒ³ãƒ€ãƒ¼ãƒãƒ¼(_)ãŒä½¿ç”¨ã§ãã¾ã™ã€‚ユーザーåã¯å¾Œã‹ã‚‰å¤‰æ›´ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“。 + */ "usernameInfo": string; + /** + * è—モード + */ "aiChanMode": string; + /** + * 開発者モード + */ "devMode": string; + /** + * CWã‚’ç¶æŒã™ã‚‹ + */ "keepCw": string; + /** + * Pub/Subã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ + */ "pubSub": string; + /** + * ç›´è¿‘ã®é€šä¿¡ + */ "lastCommunication": string; + /** + * 解決済㿠+ */ "resolved": string; + /** + * 未解決 + */ "unresolved": string; + /** + * フォãƒãƒ¯ãƒ¼ã‚’解除 + */ "breakFollow": string; + /** + * フォãƒãƒ¯ãƒ¼è§£é™¤ã—ã¾ã™ã‹ï¼Ÿ + */ "breakFollowConfirm": string; + /** + * オンã«ãªã£ã¦ã„ã¾ã™ + */ "itsOn": string; + /** + * オフã«ãªã£ã¦ã„ã¾ã™ + */ "itsOff": string; + /** + * オン + */ "on": string; + /** + * オフ + */ "off": string; + /** + * アカウント登録ã«ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å¿…é ˆã«ã™ã‚‹ + */ "emailRequiredForSignup": string; + /** + * æœªèª + */ "unread": string; + /** + * フィルタ + */ "filter": string; + /** + * コントãƒãƒ¼ãƒ«ãƒ‘ãƒãƒ« + */ "controlPanel": string; + /** + * ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ç®¡ç† + */ "manageAccounts": string; + /** + * リアクション一覧を公開ã™ã‚‹ + */ "makeReactionsPublic": string; + /** + * ã‚ãªãŸãŒã—ãŸãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ä¸€è¦§ã‚’誰ã§ã‚‚見れるよã†ã«ã—ã¾ã™ã€‚ + */ "makeReactionsPublicDescription": string; + /** + * クラシック + */ "classic": string; + /** + * スレッドをミュート + */ "muteThread": string; + /** + * スレッドã®ãƒŸãƒ¥ãƒ¼ãƒˆã‚’解除 + */ "unmuteThread": string; + /** + * フォãƒãƒ¼ã®å…¬é–‹ç¯„囲 + */ "followingVisibility": string; + /** + * フォãƒãƒ¯ãƒ¼ã®å…¬é–‹ç¯„囲 + */ "followersVisibility": string; + /** + * ã•ã‚‰ã«ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’見る + */ "continueThread": string; + /** + * アカウントãŒå‰Šé™¤ã•ã‚Œã¾ã™ã€‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ + */ "deleteAccountConfirm": string; + /** + * パスワードãŒé–“é•ã£ã¦ã„ã¾ã™ã€‚ + */ "incorrectPassword": string; + /** + * 「{choice}ã€ã«æŠ•ç¥¨ã—ã¾ã™ã‹ï¼Ÿ + */ "voteConfirm": ParameterizedString<"choice">; + /** + * éš ã™ + */ "hide": string; + /** + * モãƒã‚¤ãƒ«ãƒ‡ãƒã‚¤ã‚¹ã®ã¨ãドãƒãƒ¯ãƒ¼ã§è¡¨ç¤º + */ "useDrawerReactionPickerForMobile": string; + /** + * ãŠã‹ãˆã‚Šãªã•ã„ã€{name}ã•ã‚“ + */ "welcomeBackWithName": ParameterizedString<"name">; + /** + * [{ok}]を押ã—ã¦ã€ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ç¢ºèªã‚’完了ã—ã¦ãã ã•ã„。 + */ "clickToFinishEmailVerification": ParameterizedString<"ok">; + /** + * デãƒã‚¤ã‚¹ã‚¿ã‚¤ãƒ— + */ "overridedDeviceKind": string; + /** + * スマートフォン + */ "smartphone": string; + /** + * タブレット + */ "tablet": string; + /** + * 自動 + */ "auto": string; + /** + * テーマカラー + */ "themeColor": string; + /** + * サイズ + */ "size": string; + /** + * 列ã®æ•° + */ "numberOfColumn": string; + /** + * 検索 + */ "searchByGoogle": string; + /** + * サーãƒãƒ¼ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ãƒ©ã‚¤ãƒˆãƒ†ãƒ¼ãƒž + */ "instanceDefaultLightTheme": string; + /** + * サーãƒãƒ¼ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ãƒ€ãƒ¼ã‚¯ãƒ†ãƒ¼ãƒž + */ "instanceDefaultDarkTheme": string; + /** + * オブジェクト形å¼ã®ãƒ†ãƒ¼ãƒžã‚³ãƒ¼ãƒ‰ã‚’記入ã—ã¾ã™ã€‚ + */ "instanceDefaultThemeDescription": string; + /** + * ミュートã™ã‚‹æœŸé™ + */ "mutePeriod": string; + /** + * æœŸé™ + */ "period": string; + /** + * ç„¡æœŸé™ + */ "indefinitely": string; + /** + * 10分 + */ "tenMinutes": string; + /** + * 1時間 + */ "oneHour": string; + /** + * 1æ—¥ + */ "oneDay": string; + /** + * 1週間 + */ "oneWeek": string; + /** + * 1ヶ月 + */ "oneMonth": string; + /** + * åæ˜ ã•ã‚Œã‚‹ã¾ã§æ™‚é–“ãŒã‹ã‹ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ + */ "reflectMayTakeTime": string; + /** + * ã‚¢ã‚«ã‚¦ãƒ³ãƒˆæƒ…å ±ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—㟠+ */ "failedToFetchAccountInformation": string; + /** + * レート制é™ã‚’超ãˆã¾ã—㟠+ */ "rateLimitExceeded": string; + /** + * ç”»åƒã®ã‚¯ãƒãƒƒãƒ— + */ "cropImage": string; + /** + * ç”»åƒã‚’クãƒãƒƒãƒ—ã—ã¾ã™ã‹ï¼Ÿ + */ "cropImageAsk": string; + /** + * クãƒãƒƒãƒ—ã™ã‚‹ + */ "cropYes": string; + /** + * ãã®ã¾ã¾ä½¿ã† + */ "cropNo": string; + /** + * ファイル + */ "file": string; + /** + * ç›´è¿‘{n}時間 + */ "recentNHours": ParameterizedString<"n">; + /** + * ç›´è¿‘{n}æ—¥ + */ "recentNDays": ParameterizedString<"n">; + /** + * メールサーãƒãƒ¼ã®è¨å®šãŒã•ã‚Œã¦ã„ã¾ã›ã‚“。 + */ "noEmailServerWarning": string; + /** + * 未対応ã®é€šå ±ãŒã‚ã‚Šã¾ã™ã€‚ + */ "thereIsUnresolvedAbuseReportWarning": string; + /** + * 推奨 + */ "recommended": string; + /** + * ãƒã‚§ãƒƒã‚¯ + */ "check": string; + /** + * ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ‰ãƒ©ã‚¤ãƒ–容é‡ä¸Šé™ã‚’変更 + */ "driveCapOverrideLabel": string; + /** + * 0以下を指定ã™ã‚‹ã¨è§£é™¤ã•ã‚Œã¾ã™ã€‚ + */ "driveCapOverrideCaption": string; + /** + * 閲覧ã™ã‚‹ã«ã¯ç®¡ç†è€…アカウントã§ãƒã‚°ã‚¤ãƒ³ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + */ "requireAdminForView": string; + /** + * システムã«ã‚ˆã‚Šè‡ªå‹•ã§ä½œæˆãƒ»ç®¡ç†ã•ã‚Œã¦ã„るアカウントã§ã™ã€‚ + */ "isSystemAccount": string; + /** + * ã“ã®æ“作を行ã†ã«ã¯ {x} ã¨å…¥åŠ›ã—ã¦ãã ã•ã„ + */ "typeToConfirm": ParameterizedString<"x">; + /** + * アカウント削除 + */ "deleteAccount": string; + /** + * ドã‚ュメント + */ "document": string; + /** + * ページã‚ャッシュ数 + */ "numberOfPageCache": string; + /** + * 多ãã™ã‚‹ã¨åˆ©ä¾¿æ€§ãŒå‘上ã—ã¾ã™ãŒã€è² è·ã¨ãƒ¡ãƒ¢ãƒªä½¿ç”¨é‡ãŒå¢—ãˆã¾ã™ã€‚ + */ "numberOfPageCacheDescription": string; + /** + * ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã¾ã™ã‹ï¼Ÿ + */ "logoutConfirm": string; + /** + * 最終利用日時 + */ "lastActiveDate": string; + /** + * ステータスãƒãƒ¼ + */ "statusbar": string; + /** + * é¸æŠžã—ã¦ãã ã•ã„ + */ "pleaseSelect": string; + /** + * å転 + */ "reverse": string; + /** + * 色付ã + */ "colored": string; + /** + * æ›´æ–°é–“éš” + */ "refreshInterval": string; + /** + * ラベル + */ "label": string; + /** + * タイプ + */ "type": string; + /** + * 速度 + */ "speed": string; + /** + * é…ã„ + */ "slow": string; + /** + * 速ㄠ+ */ "fast": string; + /** + * センシティブãªãƒ¡ãƒ‡ã‚£ã‚¢ã®æ¤œå‡º + */ "sensitiveMediaDetection": string; + /** + * ãƒãƒ¼ã‚«ãƒ«ã®ã¿ + */ "localOnly": string; + /** + * リモートã®ã¿ + */ "remoteOnly": string; + /** + * アップãƒãƒ¼ãƒ‰å¤±æ•— + */ "failedToUpload": string; + /** + * ä¸é©åˆ‡ãªå†…容をå«ã‚€å¯èƒ½æ€§ãŒã‚ã‚‹ã¨åˆ¤å®šã•ã‚ŒãŸãŸã‚アップãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 + */ "cannotUploadBecauseInappropriate": string; + /** + * ドライブã®ç©ºã容é‡ãŒç„¡ã„ãŸã‚アップãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 + */ "cannotUploadBecauseNoFreeSpace": string; + /** + * ファイルサイズã®åˆ¶é™ã‚’超ãˆã¦ã„ã‚‹ãŸã‚アップãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 + */ "cannotUploadBecauseExceedsFileSizeLimit": string; + /** + * ベータ + */ "beta": string; + /** + * 自動センシティブ判定 + */ "enableAutoSensitive": string; + /** + * 利用å¯èƒ½ãªå ´åˆã¯ã€æ©Ÿæ¢°å¦ç¿’を利用ã—ã¦è‡ªå‹•ã§ãƒ¡ãƒ‡ã‚£ã‚¢ã«ã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–フラグをè¨å®šã—ã¾ã™ã€‚ã“ã®æ©Ÿèƒ½ã‚’オフã«ã—ã¦ã‚‚ã€ã‚µãƒ¼ãƒãƒ¼ã«ã‚ˆã£ã¦ã¯è‡ªå‹•ã§è¨å®šã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ + */ "enableAutoSensitiveDescription": string; + /** + * ユーザーã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ã€æ¨ã¦ã‚¢ãƒ‰ã‹ã©ã†ã‹ã‚„実際ã«é€šä¿¡å¯èƒ½ã‹ã©ã†ã‹ãªã©ã‚’判定ã—よりç©æ¥µçš„ã«è¡Œã„ã¾ã™ã€‚オフã«ã™ã‚‹ã¨å˜ã«æ–‡å—列ã¨ã—ã¦æ£ã—ã„ã‹ã©ã†ã‹ã®ã¿ãƒã‚§ãƒƒã‚¯ã•ã‚Œã¾ã™ã€‚ + */ "activeEmailValidationDescription": string; + /** + * ナビゲーションãƒãƒ¼ + */ "navbar": string; + /** + * シャッフル + */ "shuffle": string; + /** + * アカウント + */ "account": string; + /** + * 移動 + */ "move": string; + /** + * プッシュ通知 + */ "pushNotification": string; + /** + * プッシュ通知を有効化 + */ "subscribePushNotification": string; + /** + * プッシュ通知をåœæ¢ã™ã‚‹ + */ "unsubscribePushNotification": string; + /** + * プッシュ通知ã¯æœ‰åŠ¹ã§ã™ + */ "pushNotificationAlreadySubscribed": string; + /** + * ブラウザã‹ã‚µãƒ¼ãƒãƒ¼ãŒãƒ—ッシュ通知ã«éžå¯¾å¿œ + */ "pushNotificationNotSupported": string; + /** + * 通知ãŒæ—¢èªã«ãªã£ãŸã‚‰ãƒ—ッシュ通知を削除ã™ã‚‹ + */ "sendPushNotificationReadMessage": string; + /** + * 端末ã®é›»æ± 消費é‡ãŒå¢—åŠ ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ + */ "sendPushNotificationReadMessageCaption": string; + /** + * 最大化 + */ "windowMaximize": string; + /** + * 最å°åŒ– + */ "windowMinimize": string; + /** + * å…ƒã«æˆ»ã™ + */ "windowRestore": string; + /** + * ã‚ャプション + */ "caption": string; + /** + * Botアカウントã§ãƒã‚°ã‚¤ãƒ³ä¸ + */ "loggedInAsBot": string; + /** + * ツール + */ "tools": string; + /** + * èªã¿è¾¼ã‚ã¾ã›ã‚“ + */ "cannotLoad": string; + /** + * プãƒãƒ•ã‚£ãƒ¼ãƒ«è¡¨ç¤ºå›žæ•° + */ "numberOfProfileView": string; + /** + * ã„ã„ãï¼ + */ "like": string; + /** + * ã„ã„ãを解除 + */ "unlike": string; + /** + * ã„ã„ãæ•° + */ "numberOfLikes": string; + /** + * 表示 + */ "show": string; + /** + * 今後表示ã—ãªã„ + */ "neverShow": string; + /** + * ã¾ãŸå¾Œã§ + */ "remindMeLater": string; + /** + * Misskeyã‚’æ°—ã«å…¥ã£ã¦ã„ãŸã ã‘ã¾ã—ãŸã‹ï¼Ÿ + */ "didYouLikeMisskey": string; + /** + * Misskeyã¯{host}ãŒä½¿ç”¨ã—ã¦ã„ã‚‹ç„¡æ–™ã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã™ã€‚ã“ã‚Œã‹ã‚‰ã‚‚開発を続ã‘られるよã†ã«ã€ãœã²å¯„付をãŠé¡˜ã„ã—ã¾ã™ï¼ + */ "pleaseDonate": ParameterizedString<"host">; + /** + * ãƒãƒ¼ãƒ« + */ "roles": string; + /** + * ãƒãƒ¼ãƒ« + */ "role": string; + /** + * ãƒãƒ¼ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“ + */ "noRole": string; + /** + * 一般ユーザー + */ "normalUser": string; + /** + * 未定義 + */ "undefined": string; + /** + * アサイン + */ "assign": string; + /** + * アサインを解除 + */ "unassign": string; + /** + * 色 + */ "color": string; + /** + * カスタム絵文å—ã®ç®¡ç† + */ "manageCustomEmojis": string; + /** + * ã‚¢ãƒã‚¿ãƒ¼ãƒ‡ã‚³ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®ç®¡ç† + */ "manageAvatarDecorations": string; + /** + * ã“れ以上作æˆã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + */ "youCannotCreateAnymore": string; + /** + * 一時的ã«åˆ©ç”¨ã§ãã¾ã›ã‚“ + */ "cannotPerformTemporary": string; + /** + * æ“作回数ãŒåˆ¶é™ã‚’超éŽã™ã‚‹ãŸã‚一時的ã«åˆ©ç”¨ã§ãã¾ã›ã‚“。ã—ã°ã‚‰ã時間を置ã„ã¦ã‹ã‚‰å†åº¦ãŠè©¦ã—ãã ã•ã„。 + */ "cannotPerformTemporaryDescription": string; + /** + * パラメータエラー + */ "invalidParamError": string; + /** + * リクエストパラメータã«å•é¡ŒãŒã‚ã‚Šã¾ã™ã€‚通常ã“ã‚Œã¯ãƒã‚°ã§ã™ãŒã€å…¥åŠ›ã—ãŸæ–‡å—æ•°ãŒå¤šã™ãŽã‚‹ç‰ã®å¯èƒ½æ€§ã‚‚ã‚ã‚Šã¾ã™ã€‚ + */ "invalidParamErrorDescription": string; + /** + * æ“作ãŒæ‹’å¦ã•ã‚Œã¾ã—㟠+ */ "permissionDeniedError": string; + /** + * ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã¯ã“ã®æ“作を行ã†ãŸã‚ã®æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。 + */ "permissionDeniedErrorDescription": string; + /** + * プリセット + */ "preset": string; + /** + * プリセットã‹ã‚‰é¸æŠž + */ "selectFromPresets": string; + /** + * 実績 + */ "achievements": string; + /** + * サーãƒãƒ¼ã®å¿œç”ãŒç„¡åŠ¹ã§ã™ + */ "gotInvalidResponseError": string; + /** + * サーãƒãƒ¼ãŒãƒ€ã‚¦ãƒ³ã¾ãŸã¯ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ã—ã°ã‚‰ãã—ã¦ã‹ã‚‰å†åº¦ãŠè©¦ã—ãã ã•ã„。 + */ "gotInvalidResponseErrorDescription": string; + /** + * ã“ã®æŠ•ç¨¿ã¯è¿·æƒ‘ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ + */ "thisPostMayBeAnnoying": string; + /** + * ホームã«æŠ•ç¨¿ + */ "thisPostMayBeAnnoyingHome": string; + /** + * ã‚„ã‚ã‚‹ + */ "thisPostMayBeAnnoyingCancel": string; + /** + * ã“ã®ã¾ã¾æŠ•ç¨¿ + */ "thisPostMayBeAnnoyingIgnore": string; + /** + * 見ãŸã“ã¨ã®ã‚るリノートをçœç•¥ã—ã¦è¡¨ç¤º + */ "collapseRenotes": string; + /** + * サーãƒãƒ¼å†…部エラー + */ "internalServerError": string; + /** + * サーãƒãƒ¼å†…部ã§äºˆæœŸã—ãªã„エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ + */ "internalServerErrorDescription": string; + /** + * ã‚¨ãƒ©ãƒ¼æƒ…å ±ã‚’ã‚³ãƒ”ãƒ¼ + */ "copyErrorInfo": string; + /** + * ã“ã®ã‚µãƒ¼ãƒãƒ¼ã«ç™»éŒ²ã™ã‚‹ + */ "joinThisServer": string; + /** + * ä»–ã®ã‚µãƒ¼ãƒãƒ¼ã‚’探㙠+ */ "exploreOtherServers": string; + /** + * タイムラインを見ã¦ã¿ã‚‹ + */ "letsLookAtTimeline": string; + /** + * 連åˆãªã—ã«ã—ã¾ã™ã‹ï¼Ÿ + */ "disableFederationConfirm": string; + /** + * 連åˆãªã—ã«ã—ã¦ã‚‚投稿ã¯éžå…¬é–‹ã«ãªã‚Šã¾ã›ã‚“。ã»ã¨ã‚“ã©ã®å ´åˆã€é€£åˆãªã—ã«ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + */ "disableFederationConfirmWarn": string; + /** + * 連åˆãªã—ã«ã™ã‚‹ + */ "disableFederationOk": string; + /** + * ç¾åœ¨ã“ã®ã‚µãƒ¼ãƒãƒ¼ã¯æ‹›å¾…制ã§ã™ã€‚招待コードをãŠæŒã¡ã®æ–¹ã®ã¿ç™»éŒ²ã§ãã¾ã™ã€‚ + */ "invitationRequiredToRegister": string; + /** + * ã“ã®ã‚µãƒ¼ãƒãƒ¼ã§ã¯ãƒ¡ãƒ¼ãƒ«é…ä¿¡ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“ + */ "emailNotSupported": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«ã«æŠ•ç¨¿ + */ "postToTheChannel": string; + /** + * 後ã‹ã‚‰å¤‰æ›´ã§ãã¾ã›ã‚“。 + */ "cannotBeChangedLater": string; + /** + * リアクションã®å—ã‘入れ + */ "reactionAcceptance": string; + /** + * ã„ã„ãã®ã¿ + */ "likeOnly": string; + /** + * 全㦠(リモートã¯ã„ã„ãã®ã¿) + */ "likeOnlyForRemote": string; + /** + * éžã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ã®ã¿ + */ "nonSensitiveOnly": string; + /** + * éžã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ã®ã¿ (リモートã¯ã„ã„ãã®ã¿) + */ "nonSensitiveOnlyForLocalLikeOnlyForRemote": string; + /** + * 自分ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒãƒ¼ãƒ« + */ "rolesAssignedToMe": string; + /** + * パスワードリセットã—ã¾ã™ã‹ï¼Ÿ + */ "resetPasswordConfirm": string; + /** + * センシティブワード + */ "sensitiveWords": string; + /** + * è¨å®šã—ãŸãƒ¯ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã‚‹ãƒŽãƒ¼ãƒˆã®å…¬é–‹ç¯„囲をホームã«ã—ã¾ã™ã€‚改行ã§åŒºåˆ‡ã£ã¦è¤‡æ•°è¨å®šã§ãã¾ã™ã€‚ + */ "sensitiveWordsDescription": string; + /** + * スペースã§åŒºåˆ‡ã‚‹ã¨AND指定ã«ãªã‚Šã€ã‚ーワードをスラッシュã§å›²ã‚€ã¨æ£è¦è¡¨ç¾ã«ãªã‚Šã¾ã™ã€‚ + */ "sensitiveWordsDescription2": string; + /** + * éžè¡¨ç¤ºãƒãƒƒã‚·ãƒ¥ã‚¿ã‚° + */ "hiddenTags": string; + /** + * è¨å®šã—ãŸã‚¿ã‚°ã‚’トレンドã«è¡¨ç¤ºã•ã›ãªã„よã†ã«ã—ã¾ã™ã€‚改行ã§åŒºåˆ‡ã£ã¦è¤‡æ•°è¨å®šã§ãã¾ã™ã€‚ + */ "hiddenTagsDescription": string; + /** + * ノート検索ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。 + */ "notesSearchNotAvailable": string; + /** + * ライセンス + */ "license": string; + /** + * ãŠæ°—ã«å…¥ã‚Šè§£é™¤ã—ã¾ã™ã‹ï¼Ÿ + */ "unfavoriteConfirm": string; + /** + * 自分ã®ã‚¯ãƒªãƒƒãƒ— + */ "myClips": string; + /** + * ドライブクリーナー + */ "drivecleaner": string; + /** + * ã™ã¹ã¦ã®ã‚ューを今ã™ãå†è©¦è¡Œ + */ "retryAllQueuesNow": string; + /** + * 今ã™ãå†è©¦è¡Œã—ã¾ã™ã‹ï¼Ÿ + */ "retryAllQueuesConfirmTitle": string; + /** + * 一時的ã«ã‚µãƒ¼ãƒãƒ¼ã®è² è·ãŒå¢—大ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ + */ "retryAllQueuesConfirmText": string; + /** + * リモートユーザーã®ãƒãƒ£ãƒ¼ãƒˆã‚’ç”Ÿæˆ + */ "enableChartsForRemoteUser": string; + /** + * リモートサーãƒãƒ¼ã®ãƒãƒ£ãƒ¼ãƒˆã‚’ç”Ÿæˆ + */ "enableChartsForFederatedInstances": string; + /** + * ノートã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã«ã‚¯ãƒªãƒƒãƒ—ã‚’è¿½åŠ + */ "showClipButtonInNoteFooter": string; + /** + * リアクションã®è¡¨ç¤ºã‚µã‚¤ã‚º + */ "reactionsDisplaySize": string; + /** + * リアクションã®æœ€å¤§æ¨ªå¹…を制é™ã—ã€ç¸®å°ã—ã¦è¡¨ç¤ºã™ã‚‹ + */ "limitWidthOfReaction": string; + /** + * ノートIDã¾ãŸã¯URL + */ "noteIdOrUrl": string; + /** + * å‹•ç”» + */ "video": string; + /** + * å‹•ç”» + */ "videos": string; + /** + * 音声 + */ "audio": string; + /** + * 音声 + */ "audioFiles": string; + /** + * データセーãƒãƒ¼ + */ "dataSaver": string; + /** + * アカウントã®ç§»è¡Œ + */ "accountMigration": string; + /** + * ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯æ–°ã—ã„アカウントã«ç§»è¡Œã—ã¾ã—ãŸï¼š + */ "accountMoved": string; + /** + * ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ç§»è¡Œã•ã‚Œã¦ã„ã¾ã™ + */ "accountMovedShort": string; + /** + * ã“ã®æ“作ã¯ã§ãã¾ã›ã‚“ + */ "operationForbidden": string; + /** + * 常ã«åºƒå‘Šã‚’表示ã™ã‚‹ + */ "forceShowAds": string; + /** + * ãƒ¡ãƒ¢ã‚’è¿½åŠ + */ "addMemo": string; + /** + * メモを編集 + */ "editMemo": string; + /** + * リアクション一覧 + */ "reactionsList": string; + /** + * リノート一覧 + */ "renotesList": string; + /** + * 通知ã®è¡¨ç¤º + */ "notificationDisplay": string; + /** + * 左上 + */ "leftTop": string; + /** + * å³ä¸Š + */ "rightTop": string; + /** + * 左下 + */ "leftBottom": string; + /** + * å³ä¸‹ + */ "rightBottom": string; + /** + * ã‚¹ã‚¿ãƒƒã‚¯æ–¹å‘ + */ "stackAxis": string; + /** + * 縦 + */ "vertical": string; + /** + * 横 + */ "horizontal": string; + /** + * ä½ç½® + */ "position": string; + /** + * サーãƒãƒ¼ãƒ«ãƒ¼ãƒ« + */ "serverRules": string; + /** + * ã“ã®ã‚µãƒ¼ãƒãƒ¼ã«ç™»éŒ²ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®å†…容を確èªã—åŒæ„ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + */ "pleaseConfirmBelowBeforeSignup": string; + /** + * 続ã‘ã‚‹ã«ã¯ã€å…¨ã¦ã®ã€ŒåŒæ„ã™ã‚‹ã€ã«ãƒã‚§ãƒƒã‚¯ãŒå…¥ã£ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + */ "pleaseAgreeAllToContinue": string; + /** + * 続ã‘ã‚‹ + */ "continue": string; + /** + * 予約ユーザーå + */ "preservedUsernames": string; + /** + * 予約ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼åを改行ã§åˆ—挙ã—ã¾ã™ã€‚ã“ã“ã§æŒ‡å®šã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶ãƒ¼åã¯ã‚¢ã‚«ã‚¦ãƒ³ãƒˆä½œæˆæ™‚ã«ä½¿ãˆãªããªã‚Šã¾ã™ãŒã€ç®¡ç†è€…ã«ã‚ˆã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆä½œæˆæ™‚ã¯ã“ã®åˆ¶é™ã‚’å—ã‘ã¾ã›ã‚“。ã¾ãŸã€æ—¢ã«å˜åœ¨ã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚‚影響をå—ã‘ã¾ã›ã‚“。 + */ "preservedUsernamesDescription": string; + /** + * ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ãƒŽãƒ¼ãƒˆã‚’ä½œæˆ + */ "createNoteFromTheFile": string; + /** + * アーカイブ + */ "archive": string; + /** + * {name}をアーカイブã—ã¾ã™ã‹ï¼Ÿ + */ "channelArchiveConfirmTitle": ParameterizedString<"name">; + /** + * アーカイブã™ã‚‹ã¨ã€ãƒãƒ£ãƒ³ãƒãƒ«ä¸€è¦§ã‚„検索çµæžœã«è¡¨ç¤ºã•ã‚Œãªããªã‚Šã€æ–°ãŸãªæ›¸ãè¾¼ã¿ã‚‚ã§ããªããªã‚Šã¾ã™ã€‚ + */ "channelArchiveConfirmDescription": string; + /** + * ã“ã®ãƒãƒ£ãƒ³ãƒãƒ«ã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã•ã‚Œã¦ã„ã¾ã™ã€‚ + */ "thisChannelArchived": string; + /** + * ノートã®è¡¨ç¤º + */ "displayOfNote": string; + /** + * åˆæœŸè¨å®š + */ "initialAccountSetting": string; + /** + * フォãƒãƒ¼ä¸ + */ "youFollowing": string; + /** + * 生æˆAIã«ã‚ˆã‚‹å¦ç¿’ã‚’æ‹’å¦ + */ "preventAiLearning": string; + /** + * 外部ã®æ–‡ç« 生æˆAIã‚„ç”»åƒç”ŸæˆAIã«å¯¾ã—ã¦ã€æŠ•ç¨¿ã—ãŸãƒŽãƒ¼ãƒˆã‚„ç”»åƒãªã©ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’å¦ç¿’ã®å¯¾è±¡ã«ã—ãªã„よã†ã«è¦æ±‚ã—ã¾ã™ã€‚ã“ã‚Œã¯noaiフラグをHTMLレスãƒãƒ³ã‚¹ã«å«ã‚ã‚‹ã“ã¨ã«ã‚ˆã£ã¦å®Ÿç¾ã•ã‚Œã¾ã™ãŒã€ã“ã®è¦æ±‚ã«å¾“ã†ã‹ã¯ãã®AI次第ã§ã‚ã‚‹ãŸã‚ã€å¦ç¿’を完全ã«é˜²æ¢ã™ã‚‹ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 + */ "preventAiLearningDescription": string; + /** + * オプション + */ "options": string; + /** + * ユーザー指定 + */ "specifyUser": string; + /** + * プレビューã§ãã¾ã›ã‚“ + */ "failedToPreviewUrl": string; + /** + * æ›´æ–° + */ "update": string; + /** + * リアクションã¨ã—ã¦ä½¿ãˆã‚‹ãƒãƒ¼ãƒ« + */ "rolesThatCanBeUsedThisEmojiAsReaction": string; + /** + * ãƒãƒ¼ãƒ«ã®æŒ‡å®šãŒä¸€ã¤ã‚‚ãªã„å ´åˆã€èª°ã§ã‚‚リアクションã¨ã—ã¦ä½¿ãˆã¾ã™ã€‚ + */ "rolesThatCanBeUsedThisEmojiAsReactionEmptyDescription": string; + /** + * ãƒãƒ¼ãƒ«ã¯å…¬é–‹ãƒãƒ¼ãƒ«ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + */ "rolesThatCanBeUsedThisEmojiAsReactionPublicRoleWarn": string; + /** + * リアクションをå–り消ã—ã¾ã™ã‹ï¼Ÿ + */ "cancelReactionConfirm": string; + /** + * リアクションを変更ã—ã¾ã™ã‹ï¼Ÿ + */ "changeReactionConfirm": string; + /** + * ã‚ã¨ã§ + */ "later": string; + /** + * Misskey㸠+ */ "goToMisskey": string; + /** + * 絵文å—ã®è¿½åŠ 辞書 + */ "additionalEmojiDictionary": string; + /** + * インストール済㿠+ */ "installed": string; + /** + * ブランディング + */ "branding": string; + /** + * サーãƒãƒ¼ã®ãƒžã‚·ãƒ³æƒ…å ±ã‚’å…¬é–‹ã™ã‚‹ + */ "enableServerMachineStats": string; + /** + * ユーザーã”ã¨ã®Identicon生æˆã‚’有効ã«ã™ã‚‹ + */ "enableIdenticonGeneration": string; + /** + * オフã«ã™ã‚‹ã¨ãƒ‘フォーマンスãŒå‘上ã—ã¾ã™ã€‚ + */ "turnOffToImprovePerformance": string; + /** + * æ‹›å¾…ã‚³ãƒ¼ãƒ‰ã‚’ä½œæˆ + */ "createInviteCode": string; + /** + * オプションを指定ã—ã¦ä½œæˆ + */ "createWithOptions": string; + /** + * 作æˆæ•° + */ "createCount": string; + /** + * 招待コードを作æˆã—ã¾ã—㟠+ */ "inviteCodeCreated": string; + /** + * 作æˆã§ãる招待コードã®æ•°ãŒä¸Šé™ã«é”ã—ã¦ã„ã¾ã™ã€‚ + */ "inviteLimitExceeded": string; + /** + * 作æˆã§ãる招待コード: 残り {limit} 個 + */ "createLimitRemaining": ParameterizedString<"limit">; + /** + * {time}ã§æœ€å¤§ {limit} 個ã®æ‹›å¾…コードを作æˆã§ãã¾ã™ã€‚ + */ "inviteLimitResetCycle": ParameterizedString<"time" | "limit">; + /** + * æœ‰åŠ¹æœŸé™ + */ "expirationDate": string; + /** + * 有効期é™ã‚’è¨ã‘ãªã„ + */ "noExpirationDate": string; + /** + * 招待コードãŒä½¿ç”¨ã•ã‚ŒãŸæ—¥æ™‚ + */ "inviteCodeUsedAt": string; + /** + * 招待コードを使用ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "registeredUserUsingInviteCode": string; + /** + * メールèªè¨¼å¾…ã¡ + */ "waitingForMailAuth": string; + /** + * 招待コードを作æˆã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "inviteCodeCreator": string; + /** + * 使用日時 + */ "usedAt": string; + /** + * 未使用 + */ "unused": string; + /** + * 使用済㿠+ */ "used": string; + /** + * 期é™åˆ‡ã‚Œ + */ "expired": string; + /** + * åŒæ„ã—ã¾ã™ã‹ï¼Ÿ + */ "doYouAgree": string; + /** + * é‡è¦ã§ã™ã®ã§å¿…ãšãŠèªã¿ãã ã•ã„。 + */ "beSureToReadThisAsItIsImportant": string; + /** + * 「{x}ã€ã®å†…容をよãèªã¿ã€åŒæ„ã—ã¾ã™ã€‚ + */ "iHaveReadXCarefullyAndAgree": ParameterizedString<"x">; + /** + * ダイアãƒã‚° + */ "dialog": string; + /** + * アイコン + */ "icon": string; + /** + * ã‚ãªãŸã¸ + */ "forYou": string; + /** + * ç¾åœ¨ã®ãŠçŸ¥ã‚‰ã› + */ "currentAnnouncements": string; + /** + * éŽåŽ»ã®ãŠçŸ¥ã‚‰ã› + */ "pastAnnouncements": string; + /** + * 未èªã®ãŠçŸ¥ã‚‰ã›ãŒã‚ã‚Šã¾ã™ã€‚ + */ "youHaveUnreadAnnouncements": string; + /** + * ブラウザã¾ãŸã¯ãƒ‡ãƒã‚¤ã‚¹ã®æŒ‡ç¤ºã«å¾“ã£ã¦ã€ã‚»ã‚ュリティã‚ーã¾ãŸã¯ãƒ‘スã‚ーを使用ã—ã¦ãã ã•ã„。 + */ "useSecurityKey": string; + /** + * 返信 + */ "replies": string; + /** + * リノート + */ "renotes": string; + /** + * 返信を見る + */ "loadReplies": string; + /** + * 会話を見る + */ "loadConversation": string; + /** + * ピン留ã‚ã•ã‚ŒãŸãƒªã‚¹ãƒˆ + */ "pinnedList": string; + /** + * デãƒã‚¤ã‚¹ã®ç”»é¢ã‚’常ã«ã‚ªãƒ³ã«ã™ã‚‹ + */ "keepScreenOn": string; + /** + * ã“ã®ãƒªãƒ³ã‚¯å…ˆã®æ‰€æœ‰è€…ã§ã‚ã‚‹ã“ã¨ãŒç¢ºèªã•ã‚Œã¾ã—㟠+ */ "verifiedLink": string; + /** + * 投稿を通知 + */ "notifyNotes": string; + /** + * 投稿ã®é€šçŸ¥ã‚’解除 + */ "unnotifyNotes": string; + /** + * èªè¨¼ + */ "authentication": string; + /** + * 続ã‘ã‚‹ã«ã¯èªè¨¼ã‚’è¡Œã£ã¦ãã ã•ã„ + */ "authenticationRequiredToContinue": string; + /** + * 日時 + */ "dateAndTime": string; + /** + * リノートを表示 + */ "showRenotes": string; + /** + * 編集済㿠+ */ "edited": string; + /** + * 通知ã®å—ä¿¡è¨å®š + */ "notificationRecieveConfig": string; + /** + * 相互フォãƒãƒ¼ + */ "mutualFollow": string; + /** + * ファイル付ãã®ã¿ + */ "fileAttachedOnly": string; + /** + * TLã«ä»–ã®äººã¸ã®è¿”ä¿¡ã‚’å«ã‚ã‚‹ + */ "showRepliesToOthersInTimeline": string; + /** + * TLã«ä»–ã®äººã¸ã®è¿”ä¿¡ã‚’å«ã‚ãªã„ + */ "hideRepliesToOthersInTimeline": string; + /** + * TLã«ç¾åœ¨ãƒ•ã‚©ãƒãƒ¼ä¸ã®äººå…¨å“¡ã®è¿”ä¿¡ã‚’å«ã‚るよã†ã«ã™ã‚‹ + */ "showRepliesToOthersInTimelineAll": string; + /** + * TLã«ç¾åœ¨ãƒ•ã‚©ãƒãƒ¼ä¸ã®äººå…¨å“¡ã®è¿”ä¿¡ã‚’å«ã‚ãªã„よã†ã«ã™ã‚‹ + */ "hideRepliesToOthersInTimelineAll": string; + /** + * ã“ã®æ“作ã¯å…ƒã«æˆ»ã›ã¾ã›ã‚“。本当ã«TLã«ç¾åœ¨ãƒ•ã‚©ãƒãƒ¼ä¸ã®äººå…¨å“¡ã®è¿”ä¿¡ã‚’å«ã‚るよã†ã«ã—ã¾ã™ã‹ï¼Ÿ + */ "confirmShowRepliesAll": string; + /** + * ã“ã®æ“作ã¯å…ƒã«æˆ»ã›ã¾ã›ã‚“。本当ã«TLã«ç¾åœ¨ãƒ•ã‚©ãƒãƒ¼ä¸ã®äººå…¨å“¡ã®è¿”ä¿¡ã‚’å«ã‚ãªã„よã†ã«ã—ã¾ã™ã‹ï¼Ÿ + */ "confirmHideRepliesAll": string; + /** + * 外部サービス + */ "externalServices": string; + /** + * é‹å–¶è€…æƒ…å ± + */ "impressum": string; + /** + * é‹å–¶è€…æƒ…å ±URL + */ "impressumUrl": string; + /** + * ドイツãªã©ã®ä¸€éƒ¨ã®å›½ã¨åœ°åŸŸã§ã¯è¡¨ç¤ºãŒç¾©å‹™ä»˜ã‘られã¦ã„ã¾ã™(Impressum)。 + */ "impressumDescription": string; + /** + * プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼ + */ "privacyPolicy": string; + /** + * プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼URL + */ "privacyPolicyUrl": string; + /** + * 利用è¦ç´„・プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼ + */ "tosAndPrivacyPolicy": string; + /** + * アイコンデコレーション + */ "avatarDecorations": string; + /** + * 付ã‘ã‚‹ + */ "attach": string; + /** + * 外㙠+ */ "detach": string; + /** + * å…¨ã¦å¤–ã™ + */ "detachAll": string; + /** + * 角度 + */ "angle": string; + /** + * å転 + */ "flip": string; + /** + * アイコンã®ãƒ‡ã‚³ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’表示 + */ "showAvatarDecorations": string; + /** + * 離ã—ã¦ãƒªãƒãƒ¼ãƒ‰ + */ "releaseToRefresh": string; + /** + * リãƒãƒ¼ãƒ‰ä¸ + */ "refreshing": string; + /** + * 引ã£å¼µã£ã¦ãƒªãƒãƒ¼ãƒ‰ + */ "pullDownToRefresh": string; + /** + * タイムラインã®ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ 更新を無効ã«ã™ã‚‹ + */ "disableStreamingTimeline": string; + /** + * 通知をグルーピングã—ã¦è¡¨ç¤ºã™ã‚‹ + */ "useGroupedNotifications": string; + /** + * メールアドレスã®ç¢ºèªä¸ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚リンクã®æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ + */ "signupPendingError": string; + /** + * ã€Œå†…å®¹ã‚’éš ã™ã€ãŒã‚ªãƒ³ã®å ´åˆã¯æ³¨é‡ˆã®è¨˜è¿°ãŒå¿…è¦ã§ã™ã€‚ + */ "cwNotationRequired": string; + /** + * リアクションã™ã‚‹ + */ "doReaction": string; + /** + * コード + */ "code": string; + /** + * è¨å®šã®åæ˜ ã«ã¯ãƒªãƒãƒ¼ãƒ‰ãŒå¿…è¦ã§ã™ã€‚ + */ "reloadRequiredToApplySettings": string; + /** + * 残り: {n} + */ "remainingN": ParameterizedString<"n">; + /** + * ç¾åœ¨ã®å†…容ã«ä¸Šæ›¸ãã•ã‚Œã¾ã™ãŒã‚ˆã‚ã—ã„ã§ã™ã‹ï¼Ÿ + */ "overwriteContentConfirm": string; + /** + * å£ç¯€ã«å¿œã˜ãŸç”»é¢ã®æ¼”出 + */ "seasonalScreenEffect": string; + /** + * デコる + */ "decorate": string; + /** + * è£…é£¾ã‚’è¿½åŠ + */ "addMfmFunction": string; + /** + * 高度ãªMFMã®ãƒ”ッカーを表示ã™ã‚‹ + */ "enableQuickAddMfmFunction": string; + /** + * ãƒãƒ–ルゲーム+ */ "bubbleGame": string; + /** + * 効果音 + */ "sfx": string; + /** + * サウンドãŒå†ç”Ÿã•ã‚Œã¾ã™ + */ "soundWillBePlayed": string; + /** + * リプレイを見る + */ "showReplay": string; + /** + * リプレイ + */ "replay": string; + /** + * ãƒªãƒ—ãƒ¬ã‚¤ä¸ + */ "replaying": string; + /** + * ランã‚ング + */ "ranking": string; + /** + * ç›´è¿‘{n}æ—¥ + */ "lastNDays": ParameterizedString<"n">; + /** + * タイトル㸠+ */ "backToTitle": string; + /** + * スワイプã—ã¦ã‚¿ãƒ–を切り替ãˆã‚‹ + */ "enableHorizontalSwipe": string; "_bubbleGame": { + /** + * éŠã³æ–¹ + */ "howToPlay": string; "_howToPlay": { + /** + * ä½ç½®ã‚’調整ã—ã¦ãƒã‚³ã«ãƒ¢ãƒŽã‚’è½ã¨ã—ã¾ã™ã€‚ + */ "section1": string; + /** + * åŒã˜ç¨®é¡žã®ãƒ¢ãƒŽãŒãã£ã¤ãã¨åˆ¥ã®ãƒ¢ãƒŽã«å¤‰åŒ–ã—ã¦ã€ã‚¹ã‚³ã‚¢ãŒå¾—られã¾ã™ã€‚ + */ "section2": string; + /** + * モノãŒãƒã‚³ã‹ã‚‰ã‚ãµã‚Œã‚‹ã¨ã‚²ãƒ¼ãƒ オーãƒãƒ¼ã§ã™ã€‚ãƒã‚³ã‹ã‚‰ã‚ãµã‚Œãªã„よã†ã«ã—ã¤ã¤ãƒ¢ãƒŽã‚’èžåˆã•ã›ã¦ãƒã‚¤ã‚¹ã‚³ã‚¢ã‚’目指ãã†ï¼ + */ "section3": string; }; }; "_announcement": { + /** + * æ—¢å˜ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã¿ + */ "forExistingUsers": string; + /** + * 有効ã«ã™ã‚‹ã¨ã€ã“ã®ãŠçŸ¥ã‚‰ã›ä½œæˆæ™‚点ã§å˜åœ¨ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã®ã¿ãŠçŸ¥ã‚‰ã›ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚無効ã«ã™ã‚‹ã¨ã€ã“ã®ãŠçŸ¥ã‚‰ã›ä½œæˆå¾Œã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚‚ãŠçŸ¥ã‚‰ã›ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + */ "forExistingUsersDescription": string; + /** + * æ—¢èªã«ã™ã‚‹ã®ã«ç¢ºèªãŒå¿…è¦ + */ "needConfirmationToRead": string; + /** + * 有効ã«ã™ã‚‹ã¨ã€ã“ã®ãŠçŸ¥ã‚‰ã›ã‚’æ—¢èªã«ã™ã‚‹éš›ã«ç¢ºèªãƒ€ã‚¤ã‚¢ãƒã‚°ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã¾ãŸã€ä¸€æ‹¬æ—¢èªæ“作ã®å¯¾è±¡ã«ãªã‚Šã¾ã›ã‚“。 + */ "needConfirmationToReadDescription": string; + /** + * ãŠçŸ¥ã‚‰ã›ã‚’終了 + */ "end": string; + /** + * アクティブãªãŠçŸ¥ã‚‰ã›ãŒå¤šã„ãŸã‚ã€UXãŒä½Žä¸‹ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚終了ã—ãŸãŠçŸ¥ã‚‰ã›ã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã™ã‚‹ã“ã¨ã‚’検討ã—ã¦ãã ã•ã„。 + */ "tooManyActiveAnnouncementDescription": string; + /** + * æ—¢èªã«ã—ã¾ã™ã‹ï¼Ÿ + */ "readConfirmTitle": string; + /** + * 「{title}ã€ã®å†…容をèªã¿ã€æ—¢èªã«ã—ã¾ã™ã€‚ + */ "readConfirmText": ParameterizedString<"title">; + /** + * 特ã«æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®UXã‚’æãã‚‹å¯èƒ½æ€§ãŒé«˜ã„ãŸã‚ã€ã‚¹ãƒˆãƒƒã‚¯æƒ…å ±ã§ã¯ãªãフãƒãƒ¼æƒ…å ±ã®æŽ²ç¤ºã«ãŠçŸ¥ã‚‰ã›ã‚’使用ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚ + */ "shouldNotBeUsedToPresentPermanentInfo": string; + /** + * ダイアãƒã‚°å½¢å¼ã®ãŠçŸ¥ã‚‰ã›ãŒåŒæ™‚ã«2ã¤ä»¥ä¸Šã‚ã‚‹å ´åˆã€UXã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã™å¯èƒ½æ€§ãŒéžå¸¸ã«é«˜ã„ãŸã‚ã€ä½¿ç”¨ã¯æ…Žé‡ã«è¡Œã†ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚ + */ "dialogAnnouncementUxWarn": string; + /** + * éžé€šçŸ¥ + */ "silence": string; + /** + * オンã«ã™ã‚‹ã¨ã€ã“ã®ãŠçŸ¥ã‚‰ã›ã¯é€šçŸ¥ã•ã‚Œãšã€æ—¢èªã«ã™ã‚‹å¿…è¦ã‚‚ãªããªã‚Šã¾ã™ã€‚ + */ "silenceDescription": string; }; "_initialAccountSetting": { + /** + * アカウントã®ä½œæˆãŒå®Œäº†ã—ã¾ã—ãŸï¼ + */ "accountCreated": string; + /** + * ã•ã£ããアカウントã®åˆæœŸè¨å®šã‚’è¡Œã„ã¾ã—ょã†ã€‚ + */ "letsStartAccountSetup": string; + /** + * ã¾ãšã¯ã‚ãªãŸã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ã‚’è¨å®šã—ã¾ã—ょã†ã€‚ + */ "letsFillYourProfile": string; + /** + * プãƒãƒ•ã‚£ãƒ¼ãƒ«è¨å®š + */ "profileSetting": string; + /** + * プライãƒã‚·ãƒ¼è¨å®š + */ "privacySetting": string; + /** + * ã“れらã®è¨å®šã¯å¾Œã‹ã‚‰å¤‰æ›´ã§ãã¾ã™ã€‚ + */ "theseSettingsCanEditLater": string; + /** + * ã“ã®ä»–ã«ã‚‚様々ãªè¨å®šã‚’「è¨å®šã€ãƒšãƒ¼ã‚¸ã‹ã‚‰è¡Œãˆã¾ã™ã€‚ãœã²å¾Œã§ç¢ºèªã—ã¦ã¿ã¦ãã ã•ã„。 + */ "youCanEditMoreSettingsInSettingsPageLater": string; + /** + * タイムラインを構築ã™ã‚‹ãŸã‚ã€æ°—ã«ãªã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’フォãƒãƒ¼ã—ã¦ã¿ã¾ã—ょã†ã€‚ + */ "followUsers": string; + /** + * プッシュ通知を有効ã«ã™ã‚‹ã¨{name}ã®é€šçŸ¥ã‚’ãŠä½¿ã„ã®ãƒ‡ãƒã‚¤ã‚¹ã§å—ã‘å–ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + */ "pushNotificationDescription": ParameterizedString<"name">; + /** + * åˆæœŸè¨å®šãŒå®Œäº†ã—ã¾ã—ãŸï¼ + */ "initialAccountSettingCompleted": string; + /** + * {name}ã‚’ãŠæ¥½ã—ã¿ãã ã•ã„ï¼ + */ "haveFun": ParameterizedString<"name">; + /** + * ã“ã®ã¾ã¾{name}(Misskey)ã®ä½¿ã„æ–¹ã«ã¤ã„ã¦ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã«é€²ã‚€ã“ã¨ã‚‚ã§ãã¾ã™ãŒã€ã“ã“ã§ä¸æ–ã—ã¦ã™ãã«ä½¿ã„始ã‚ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + */ "youCanContinueTutorial": ParameterizedString<"name">; + /** + * ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’開始 + */ "startTutorial": string; + /** + * åˆæœŸè¨å®šã‚’スã‚ップã—ã¾ã™ã‹ï¼Ÿ + */ "skipAreYouSure": string; + /** + * åˆæœŸè¨å®šã‚’ã‚ã¨ã§ã‚„ã‚Šç›´ã—ã¾ã™ã‹ï¼Ÿ + */ "laterAreYouSure": string; }; "_initialTutorial": { + /** + * ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’見る + */ "launchTutorial": string; + /** + * ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ« + */ "title": string; + /** + * よãã§ãã¾ã—㟠+ */ "wellDone": string; + /** + * ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’終了ã—ã¾ã™ã‹ï¼Ÿ + */ "skipAreYouSure": string; "_landing": { + /** + * ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã¸ã‚ˆã†ã“ã + */ "title": string; + /** + * ã“ã“ã§ã¯ã€Misskeyã®åŸºæœ¬çš„ãªä½¿ã„方や機能を確èªã§ãã¾ã™ã€‚ + */ "description": string; }; "_note": { + /** + * ノートã£ã¦ä½•ï¼Ÿ + */ "title": string; + /** + * Misskeyã§ã®æŠ•ç¨¿ã¯ã€ŒãƒŽãƒ¼ãƒˆã€ã¨å‘¼ã³ã¾ã™ã€‚ノートã¯ã‚¿ã‚¤ãƒ ラインã«æ™‚系列ã§ä¸¦ã‚“ã§ã„ã¦ã€ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ ã§æ›´æ–°ã•ã‚Œã¦ã„ãã¾ã™ã€‚ + */ "description": string; + /** + * 返信ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚返信ã«å¯¾ã—ã¦ã®è¿”ä¿¡ã‚‚å¯èƒ½ã§ã€ã‚¹ãƒ¬ãƒƒãƒ‰ã®ã‚ˆã†ã«ä¼šè©±ã‚’続ã‘ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + */ "reply": string; + /** + * ãã®ãƒŽãƒ¼ãƒˆã‚’自分ã®ã‚¿ã‚¤ãƒ ラインã«æµã—ã¦å…±æœ‰ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚テã‚ã‚¹ãƒˆã‚’è¿½åŠ ã—ã¦å¼•ç”¨ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ + */ "renote": string; + /** + * リアクションをã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚詳ã—ãã¯æ¬¡ã®ãƒšãƒ¼ã‚¸ã§è§£èª¬ã—ã¾ã™ã€‚ + */ "reaction": string; + /** + * ノートã®è©³ç´°ã‚’表示ã—ãŸã‚Šã€ãƒªãƒ³ã‚¯ã‚’コピーã—ãŸã‚Šãªã©ã®æ§˜ã€…ãªæ“作ãŒè¡Œãˆã¾ã™ã€‚ + */ "menu": string; }; "_reaction": { + /** + * リアクションã£ã¦ä½•ï¼Ÿ + */ "title": string; + /** + * ノートã«ã¯ã€Œãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã€ã‚’ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚「ã„ã„ãã€ã§ã¯ä¼ã‚らãªã„ニュアンスもã€ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã§ç°¡å˜ãƒ»æ°—軽ã«è¡¨ç¾ã§ãã¾ã™ã€‚ + */ "description": string; + /** + * リアクションã¯ã€ãƒŽãƒ¼ãƒˆã®ã€Œï¼‹ã€ãƒœã‚¿ãƒ³ã‚’クリックã™ã‚‹ã¨ã¤ã‘られã¾ã™ã€‚試ã—ã«ã“ã®ã‚µãƒ³ãƒ—ルã®ãƒŽãƒ¼ãƒˆã«ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’ã¤ã‘ã¦ã¿ã¦ãã ã•ã„ï¼ + */ "letsTryReacting": string; + /** + * リアクションをã¤ã‘ã‚‹ã¨å…ˆã«é€²ã‚るよã†ã«ãªã‚Šã¾ã™ã€‚ + */ "reactToContinue": string; + /** + * ã‚ãªãŸã®ãƒŽãƒ¼ãƒˆãŒèª°ã‹ã«ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã•ã‚Œã‚‹ã¨ã€ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ ã§é€šçŸ¥ã‚’å—ã‘å–ã‚Šã¾ã™ã€‚ + */ "reactNotification": string; + /** + * 「ーã€ãƒœã‚¿ãƒ³ã‚’押ã™ã¨ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’å–り消ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ + */ "reactDone": string; }; "_timeline": { + /** + * タイムラインã®ã—ãã¿ + */ "title": string; + /** + * Misskeyã«ã¯ã€ä½¿ã„æ–¹ã«å¿œã˜ã¦è¤‡æ•°ã®ã‚¿ã‚¤ãƒ ラインãŒç”¨æ„ã•ã‚Œã¦ã„ã¾ã™ï¼ˆã‚µãƒ¼ãƒãƒ¼ã«ã‚ˆã£ã¦ã¯ã„ãšã‚Œã‹ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ï¼‰ã€‚ + */ "description1": string; + /** + * ã‚ãªãŸãŒãƒ•ã‚©ãƒãƒ¼ã—ã¦ã„るアカウントã®æŠ•ç¨¿ã‚’見られã¾ã™ã€‚ + */ "home": string; + /** + * ã“ã®ã‚µãƒ¼ãƒãƒ¼ã«ã„るユーザー全員ã®æŠ•ç¨¿ã‚’見られã¾ã™ã€‚ + */ "local": string; + /** + * ホームタイムラインã¨ãƒãƒ¼ã‚«ãƒ«ã‚¿ã‚¤ãƒ ラインã®æŠ•ç¨¿ãŒä¸¡æ–¹è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + */ "social": string; + /** + * 接続ã—ã¦ã„ã‚‹ä»–ã®ã™ã¹ã¦ã®ã‚µãƒ¼ãƒãƒ¼ã‹ã‚‰ã®æŠ•ç¨¿ã‚’見られã¾ã™ã€‚ + */ "global": string; + /** + * ãã‚Œãžã‚Œã®ã‚¿ã‚¤ãƒ ラインã¯ã€ç”»é¢ä¸Šéƒ¨ã§ã„ã¤ã§ã‚‚切り替ãˆã‚‰ã‚Œã¾ã™ã€‚ + */ "description2": string; + /** + * ãã®ä»–ã«ã‚‚ã€ãƒªã‚¹ãƒˆã‚¿ã‚¤ãƒ ラインやãƒãƒ£ãƒ³ãƒãƒ«ã‚¿ã‚¤ãƒ ラインãªã©ãŒã‚ã‚Šã¾ã™ã€‚詳ã—ãã¯{link}ã‚’ã”覧ãã ã•ã„。 + */ "description3": ParameterizedString<"link">; }; "_postNote": { + /** + * ノートã®æŠ•ç¨¿è¨å®š + */ "title": string; + /** + * Misskeyã«ãƒŽãƒ¼ãƒˆã‚’投稿ã™ã‚‹éš›ã«ã¯ã€æ§˜ã€…ãªã‚ªãƒ—ションã®è¨å®šãŒå¯èƒ½ã§ã™ã€‚投稿フォームã¯ã“ã®ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ã€‚ + */ "description1": string; "_visibility": { + /** + * ノートを表示ã§ãる相手を制é™ã§ãã¾ã™ã€‚ + */ "description": string; + /** + * ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å…¬é–‹ã€‚ + */ "public": string; + /** + * ホームタイムラインã®ã¿ã«å…¬é–‹ã€‚フォãƒãƒ¯ãƒ¼ãƒ»ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ã‚’見ã«æ¥ãŸäººãƒ»ãƒªãƒŽãƒ¼ãƒˆã‹ã‚‰ã€ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚‚見るã“ã¨ãŒã§ãã¾ã™ã€‚ + */ "home": string; + /** + * フォãƒãƒ¯ãƒ¼ã«ã®ã¿å…¬é–‹ã€‚本人以外ãŒãƒªãƒŽãƒ¼ãƒˆã™ã‚‹ã“ã¨ã¯ã§ããšã€ã¾ãŸãƒ•ã‚©ãƒãƒ¯ãƒ¼ä»¥å¤–ã¯é–²è¦§ã§ãã¾ã›ã‚“。 + */ "followers": string; + /** + * 指定ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã®ã¿å…¬é–‹ã•ã‚Œã€ã¾ãŸç›¸æ‰‹ã«é€šçŸ¥ãŒå…¥ã‚Šã¾ã™ã€‚ダイレクトメッセージã®ã‹ã‚ã‚Šã«ãŠä½¿ã„ã„ãŸã ã‘ã¾ã™ã€‚ + */ "direct": string; + /** + * æ©Ÿå¯†æƒ…å ±ã¯é€ä¿¡ã™ã‚‹éš›ã¯æ³¨æ„ã—ã¦ãã ã•ã„。 + */ "doNotSendConfidencialOnDirect1": string; + /** + * é€ä¿¡å…ˆã®ã‚µãƒ¼ãƒãƒ¼ã®ç®¡ç†è€…ã¯æŠ•ç¨¿å†…容を見るã“ã¨ãŒå¯èƒ½ãªã®ã§ã€ä¿¡é ¼ã§ããªã„サーãƒãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆæŠ•ç¨¿ã‚’é€ä¿¡ã™ã‚‹å ´åˆã¯ã€æ©Ÿå¯†æƒ…å ±ã®æ‰±ã„ã«æ³¨æ„ãŒå¿…è¦ã§ã™ã€‚ + */ "doNotSendConfidencialOnDirect2": string; + /** + * ä»–ã®ã‚µãƒ¼ãƒãƒ¼ã«æŠ•ç¨¿ã‚’連åˆã—ã¾ã›ã‚“。上記ã®å…¬é–‹ç¯„囲ã«é–¢ã‚らãšã€ä»–ã®ã‚µãƒ¼ãƒãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã€ã“ã®è¨å®šãŒã¤ã„ãŸãƒŽãƒ¼ãƒˆã‚’直接閲覧ã™ã‚‹ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚ + */ "localOnly": string; }; "_cw": { + /** + * å†…å®¹ã‚’éš ã™ï¼ˆCW) + */ "title": string; + /** + * 本文ã®ã‹ã‚ã‚Šã«ã€Œæ³¨é‡ˆã€ã«æ›¸ã„ãŸå†…容ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚「もã£ã¨è¦‹ã‚‹ã€ã‚’押ã™ã¨æœ¬æ–‡ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + */ "description": string; "_exampleNote": { + /** + * 飯テãƒæ³¨æ„ + */ "cw": string; + /** + * ãƒãƒ§ã‚³ã®ã‹ã‹ã£ãŸãƒ‰ãƒ¼ãƒŠãƒ„を食ã¹ã¾ã—ãŸðŸ©ðŸ˜‹ + */ "note": string; }; + /** + * サーãƒãƒ¼ã®ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³ã«ã‚ˆã‚Šå¿…è¦ã¨ã•ã‚Œã‚‹ãƒŽãƒ¼ãƒˆã«æŒ‡å®šã—ãŸã‚Šã€ãƒã‚¿ãƒãƒ¬æŠ•ç¨¿ã‚„センシティブãªæ–‡ç« を自主è¦åˆ¶ã—ãŸã‚Šã™ã‚‹ã¨ãã«ä½¿ã„ã¾ã™ã€‚ + */ "useCases": string; }; }; "_howToMakeAttachmentsSensitive": { + /** + * 添付ファイルをセンシティブã«ã™ã‚‹ã«ã¯ï¼Ÿ + */ "title": string; + /** + * サーãƒãƒ¼ã®ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³ã«ã‚ˆã‚Šå¿…è¦ã¨ã•ã‚Œã‚‹éš›ã‚„ã€ãã®ã¾ã¾è¦‹ã‚Œã‚‹çŠ¶æ…‹ã«ã—ã¦ãŠãã¹ãã§ã¯ãªã„添付ファイルã«ã¯ã€ã€Œã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ã€è¨å®šã‚’付ã‘ã¾ã™ã€‚ + */ "description": string; + /** + * 試ã—ã«ã€ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã«æ·»ä»˜ã•ã‚ŒãŸç”»åƒã‚’センシティブã«ã—ã¦ã¿ã¦ãã ã•ã„ï¼ + */ "tryThisFile": string; "_exampleNote": { + /** + * ç´è±†ã®ãƒ•ã‚¿é–‹ã‘ã‚‹ã®ãƒŸã‚¹ã£ãŸã‚ã… + */ "note": string; }; + /** + * 添付ファイルをセンシティブã«ã™ã‚‹éš›ã¯ã€ãã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’クリックã—ã¦ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’é–‹ãã€ã€Œã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ã¨ã—ã¦è¨å®šã€ã‚’クリックã—ã¾ã™ã€‚ + */ "method": string; + /** + * ファイルを添付ã™ã‚‹éš›ã¯ã€ã‚µãƒ¼ãƒãƒ¼ã®ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³ã«å¾“ã£ã¦ã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ã‚’é©åˆ‡ã«è¨å®šã—ã¦ãã ã•ã„。 + */ "sensitiveSucceeded": string; + /** + * ç”»åƒã‚’センシティブã«è¨å®šã™ã‚‹ã¨å…ˆã«é€²ã‚るよã†ã«ãªã‚Šã¾ã™ã€‚ + */ "doItToContinue": string; }; "_done": { + /** + * ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã¯çµ‚了ã§ã™ðŸŽ‰ + */ "title": string; + /** + * ã“ã“ã§ç´¹ä»‹ã—ãŸæ©Ÿèƒ½ã¯ã»ã‚“ã®ä¸€éƒ¨ã«ã™ãŽã¾ã›ã‚“。Misskeyã®ä½¿ã„方をより詳ã—ã知るã«ã¯ã€{link}ã‚’ã”覧ãã ã•ã„。 + */ "description": ParameterizedString<"link">; }; }; "_timelineDescription": { + /** + * ホームタイムラインã§ã¯ã€ã‚ãªãŸãŒãƒ•ã‚©ãƒãƒ¼ã—ã¦ã„るアカウントã®æŠ•ç¨¿ã‚’見られã¾ã™ã€‚ + */ "home": string; + /** + * ãƒãƒ¼ã‚«ãƒ«ã‚¿ã‚¤ãƒ ラインã§ã¯ã€ã“ã®ã‚µãƒ¼ãƒãƒ¼ã«ã„るユーザー全員ã®æŠ•ç¨¿ã‚’見られã¾ã™ã€‚ + */ "local": string; + /** + * ソーシャルタイムラインã«ã¯ã€ãƒ›ãƒ¼ãƒ タイムラインã¨ãƒãƒ¼ã‚«ãƒ«ã‚¿ã‚¤ãƒ ラインã®æŠ•ç¨¿ãŒä¸¡æ–¹è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + */ "social": string; + /** + * ã‚°ãƒãƒ¼ãƒãƒ«ã‚¿ã‚¤ãƒ ラインã§ã¯ã€æŽ¥ç¶šã—ã¦ã„ã‚‹ä»–ã®ã™ã¹ã¦ã®ã‚µãƒ¼ãƒãƒ¼ã‹ã‚‰ã®æŠ•ç¨¿ã‚’見られã¾ã™ã€‚ + */ "global": string; }; "_serverRules": { + /** + * æ–°è¦ç™»éŒ²å‰ã«è¡¨ç¤ºã™ã‚‹ã€ã‚µãƒ¼ãƒãƒ¼ã®ç°¡æ½”ãªãƒ«ãƒ¼ãƒ«ã‚’è¨å®šã—ã¾ã™ã€‚内容ã¯åˆ©ç”¨è¦ç´„ã®è¦ç´„ã¨ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚ + */ "description": string; }; "_serverSettings": { + /** + * アイコン画åƒã®URL + */ "iconUrl": string; + /** + * {host}ãŒã‚¢ãƒ—リã¨ã—ã¦è¡¨ç¤ºã•ã‚Œã‚‹éš›ã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’指定ã—ã¾ã™ã€‚ + */ "appIconDescription": ParameterizedString<"host">; + /** + * 例: PWAã‚„ã€ã‚¹ãƒžãƒ¼ãƒˆãƒ•ã‚©ãƒ³ã®ãƒ›ãƒ¼ãƒ ç”»é¢ã«ãƒ–ックマークã¨ã—ã¦è¿½åŠ ã•ã‚ŒãŸæ™‚ãªã© + */ "appIconUsageExample": string; + /** + * 円形もã—ãã¯è§’丸ã«ã‚¯ãƒãƒƒãƒ—ã•ã‚Œã‚‹å ´åˆãŒã‚ã‚‹ãŸã‚ã€å¡—ã‚Šæ½°ã•ã‚ŒãŸä½™ç™½ã®ã‚る背景をæŒã¤ã“ã¨ãŒæŽ¨å¥¨ã•ã‚Œã¾ã™ã€‚ + */ "appIconStyleRecommendation": string; + /** + * 解åƒåº¦ã¯å¿…ãš{resolution}ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + */ "appIconResolutionMustBe": ParameterizedString<"resolution">; + /** + * manifest.jsonã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ + */ "manifestJsonOverride": string; + /** + * 略称 + */ "shortName": string; + /** + * サーãƒãƒ¼ã®æ£å¼å称ãŒé•·ã„å ´åˆã«ã€ä»£ã‚ã‚Šã«è¡¨ç¤ºã™ã‚‹ã“ã¨ã®ã§ãる略称や通称。 + */ "shortNameDescription": string; + /** + * 有効ã«ã™ã‚‹ã¨ã€å„種タイムラインをå–å¾—ã™ã‚‹éš›ã®ãƒ‘フォーマンスãŒå¤§å¹…ã«å‘上ã—ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®è² è·ã‚’軽減ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ãŸã ã—ã€Redisã®ãƒ¡ãƒ¢ãƒªä½¿ç”¨é‡ã¯å¢—åŠ ã—ã¾ã™ã€‚サーãƒãƒ¼ã®ãƒ¡ãƒ¢ãƒªå®¹é‡ãŒå°‘ãªã„å ´åˆã€ã¾ãŸã¯å‹•ä½œãŒä¸å®‰å®šãªå ´åˆã¯ç„¡åŠ¹ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + */ "fanoutTimelineDescription": string; + /** + * データベースã¸ã®ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯ + */ "fanoutTimelineDbFallback": string; + /** + * 有効ã«ã™ã‚‹ã¨ã€ã‚¿ã‚¤ãƒ ラインãŒã‚ャッシュã•ã‚Œã¦ã„ãªã„å ´åˆã«DBã¸è¿½åŠ ã§å•ã„åˆã‚ã›ã‚’è¡Œã†ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯å‡¦ç†ã‚’è¡Œã„ã¾ã™ã€‚無効ã«ã™ã‚‹ã¨ã€ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯å‡¦ç†ã‚’è¡Œã‚ãªã„ã“ã¨ã§ã•ã‚‰ã«ã‚µãƒ¼ãƒãƒ¼ã®è² è·ã‚’軽減ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ãŒã€ã‚¿ã‚¤ãƒ ラインãŒå–å¾—ã§ãる範囲ã«åˆ¶é™ãŒç”Ÿã˜ã¾ã™ã€‚ + */ "fanoutTimelineDbFallbackDescription": string; }; "_accountMigration": { + /** + * 別ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‹ã‚‰ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ç§»è¡Œ + */ "moveFrom": string; + /** + * 別ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¸ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’ä½œæˆ + */ "moveFromSub": string; + /** + * 移行元ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ #{n} + */ "moveFromLabel": ParameterizedString<"n">; + /** + * 別ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‹ã‚‰ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ç§»è¡Œã—ãŸã„å ´åˆã€ã“ã“ã§ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’作æˆã—ã¦ãŠãå¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + * 移行元ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ã“ã®ã‚ˆã†ã«å…¥åŠ›ã—ã¦ãã ã•ã„: @username@server.example.com + * 削除ã™ã‚‹ã«ã¯ã€å…¥åŠ›æ¬„を空ã«ã—ã¦ä¿å˜ã—ã¾ã™ï¼ˆéžæŽ¨å¥¨ï¼‰ã€‚ + */ "moveFromDescription": string; + /** + * ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’æ–°ã—ã„アカウントã¸ç§»è¡Œ + */ "moveTo": string; + /** + * 移行先ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ: + */ "moveToLabel": string; + /** + * アカウントを移行ã™ã‚‹ã¨ã€å–り消ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + */ "moveCannotBeUndone": string; + /** + * æ–°ã—ã„アカウントã¸ç§»è¡Œã—ã¾ã™ã€‚ + *  ・フォãƒãƒ¯ãƒ¼ãŒæ–°ã—ã„アカウントを自動ã§ãƒ•ã‚©ãƒãƒ¼ã—ã¾ã™ + *  ・ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‹ã‚‰ã®ãƒ•ã‚©ãƒãƒ¼ã¯å…¨ã¦è§£é™¤ã•ã‚Œã¾ã™ + *  ・ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ã¯ãƒŽãƒ¼ãƒˆã®ä½œæˆãªã©ãŒã§ããªããªã‚Šã¾ã™ + * + * フォãƒãƒ¯ãƒ¼ã®ç§»è¡Œã¯è‡ªå‹•ã§ã™ãŒã€ãƒ•ã‚©ãƒãƒ¼ã®ç§»è¡Œã¯æ‰‹å‹•ã§è¡Œã†å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚移行å‰ã«ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ãƒ•ã‚©ãƒãƒ¼ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã—ã€ç§»è¡Œå¾Œã™ãã«ç§»è¡Œå…ˆã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’è¡Œãªã£ã¦ãã ã•ã„。 + * リスト・ミュート・ブãƒãƒƒã‚¯ã«ã¤ã„ã¦ã‚‚åŒæ§˜ã§ã™ã®ã§ã€æ‰‹å‹•ã§ç§»è¡Œã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + * + * (ã“ã®èª¬æ˜Žã¯ã“ã®ã‚µãƒ¼ãƒãƒ¼ï¼ˆMisskey v13.12.0以é™ï¼‰ã®ä»•æ§˜ã§ã™ã€‚Mastodonãªã©ã®ä»–ã®ActivityPubソフトウェアã§ã¯æŒ™å‹•ãŒç•°ãªã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚) + */ "moveAccountDescription": string; + /** + * アカウントã®ç§»è¡Œã«ã¯ã€ã¾ãšã¯ç§»è¡Œå…ˆã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«å¯¾ã—エイリアスを作æˆã—ã¾ã™ã€‚ + * エイリアス作æˆå¾Œã€ç§»è¡Œå…ˆã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’次ã®ã‚ˆã†ã«å…¥åŠ›ã—ã¦ãã ã•ã„: @username@server.example.com + */ "moveAccountHowTo": string; + /** + * 移行ã™ã‚‹ + */ "startMigration": string; + /** + * 本当ã«ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ {account} ã«ç§»è¡Œã—ã¾ã™ã‹ï¼Ÿä¸€åº¦ç§»è¡Œã™ã‚‹ã¨å–り消ã›ãšã€äºŒåº¦ã¨ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’å…ƒã®çŠ¶æ…‹ã§ä½¿ç”¨ã§ããªããªã‚Šã¾ã™ã€‚ + */ "migrationConfirm": ParameterizedString<"account">; + /** + * + * アカウントã¯ç§»è¡Œã•ã‚Œã¦ã„ã¾ã™ã€‚ + * 移行をå–り消ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + */ "movedAndCannotBeUndone": string; + /** + * ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‹ã‚‰ã®ãƒ•ã‚©ãƒãƒ¼è§£é™¤ã¯ç§»è¡Œæ“作ã‹ã‚‰24時間後ã«å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚ + * ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ãƒ•ã‚©ãƒãƒ¼ãƒ»ãƒ•ã‚©ãƒãƒ¯ãƒ¼æ•°ã¯0ã«ãªã£ã¦ã„ã¾ã™ã€‚フォãƒãƒ¯ãƒ¼ã®è§£é™¤ã¯ã•ã‚Œãªã„ãŸã‚ã€ã‚ãªãŸã®ãƒ•ã‚©ãƒãƒ¯ãƒ¼ã¯ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ãƒ•ã‚©ãƒãƒ¯ãƒ¼å‘ã‘投稿を引ã続ã閲覧ã§ãã¾ã™ã€‚ + */ "postMigrationNote": string; + /** + * 移行先ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ: + */ "movedTo": string; }; "_achievements": { + /** + * ç²å¾—日時 + */ "earnedAt": string; "_types": { "_notes1": { + /** + * just setting up my msky + */ "title": string; + /** + * åˆã‚ã¦ãƒŽãƒ¼ãƒˆã‚’投稿ã—㟠+ */ "description": string; + /** + * 良ã„Misskeyãƒ©ã‚¤ãƒ•ã‚’ï¼ + */ "flavor": string; }; "_notes10": { + /** + * ã„ãã¤ã‹ã®ãƒŽãƒ¼ãƒˆ + */ "title": string; + /** + * ノートを10回投稿ã—㟠+ */ "description": string; }; "_notes100": { + /** + * ãŸãã•ã‚“ã®ãƒŽãƒ¼ãƒˆ + */ "title": string; + /** + * ノートを100回投稿ã—㟠+ */ "description": string; }; "_notes500": { + /** + * ノートã¾ã¿ã‚Œ + */ "title": string; + /** + * ノートを500回投稿ã—㟠+ */ "description": string; }; "_notes1000": { + /** + * ノートã®å±± + */ "title": string; + /** + * ノートを1,000回投稿ã—㟠+ */ "description": string; }; "_notes5000": { + /** + * 湧ã出るノート + */ "title": string; + /** + * ノートを5,000回投稿ã—㟠+ */ "description": string; }; "_notes10000": { + /** + * スーパーノート + */ "title": string; + /** + * ノートを10,000回投稿ã—㟠+ */ "description": string; }; "_notes20000": { + /** + * ニードモアノート + */ "title": string; + /** + * ノートを20,000回投稿ã—㟠+ */ "description": string; }; "_notes30000": { + /** + * ノートノートノート + */ "title": string; + /** + * ノートを30,000回投稿ã—㟠+ */ "description": string; }; "_notes40000": { + /** + * ãƒŽãƒ¼ãƒˆå·¥å ´ + */ "title": string; + /** + * ノートを40,000回投稿ã—㟠+ */ "description": string; }; "_notes50000": { + /** + * ノートã®æƒ‘星 + */ "title": string; + /** + * ノートを50,000回投稿ã—㟠+ */ "description": string; }; "_notes60000": { + /** + * ノートクエーサー + */ "title": string; + /** + * ノートを60,000回投稿ã—㟠+ */ "description": string; }; "_notes70000": { + /** + * ブラックノートホール + */ "title": string; + /** + * ノートを70,000回投稿ã—㟠+ */ "description": string; }; "_notes80000": { + /** + * ノートギャラクシー + */ "title": string; + /** + * ノートを80,000回投稿ã—㟠+ */ "description": string; }; "_notes90000": { + /** + * ノートãƒãƒ¼ã‚¹ + */ "title": string; + /** + * ノートを90,000回投稿ã—㟠+ */ "description": string; }; "_notes100000": { + /** + * ALL YOUR NOTE ARE BELONG TO US + */ "title": string; + /** + * ノートを100,000回投稿ã—㟠+ */ "description": string; + /** + * ãã‚“ãªã«æ›¸ãã“ã¨ã‚る? + */ "flavor": string; }; "_login3": { + /** + * ãƒ“ã‚®ãƒŠãƒ¼â… + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ3æ—¥ + */ "description": string; + /** + * 今日ã‹ã‚‰ã僕㯠ミスã‚ストã£ã¦ã“ã¨ã§ + */ "flavor": string; }; "_login7": { + /** + * ビギナーⅡ + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ7æ—¥ + */ "description": string; + /** + * 慣れã¦ãã¾ã—ãŸã‹ï¼Ÿ + */ "flavor": string; }; "_login15": { + /** + * ビギナーⅢ + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ15æ—¥ + */ "description": string; }; "_login30": { + /** + * ミスã‚ã‚¹ãƒˆâ… + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ30æ—¥ + */ "description": string; }; "_login60": { + /** + * ミスã‚ストⅡ + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ60æ—¥ + */ "description": string; }; "_login100": { + /** + * ミスã‚ストⅢ + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ100æ—¥ + */ "description": string; + /** + * ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã€ãƒŸã‚¹ã‚ストã«ã¤ã + */ "flavor": string; }; "_login200": { + /** + * å¸¸é€£â… + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ200æ—¥ + */ "description": string; }; "_login300": { + /** + * 常連Ⅱ + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ300æ—¥ + */ "description": string; }; "_login400": { + /** + * 常連Ⅲ + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ400æ—¥ + */ "description": string; }; "_login500": { + /** + * ãƒ™ãƒ†ãƒ©ãƒ³â… + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ500æ—¥ + */ "description": string; + /** + * 諸å›ã€ç§ã¯ãƒŽãƒ¼ãƒˆãŒå¥½ãã + */ "flavor": string; }; "_login600": { + /** + * ベテランⅡ + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ600æ—¥ + */ "description": string; }; "_login700": { + /** + * ベテランⅢ + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ700æ—¥ + */ "description": string; }; "_login800": { + /** + * ãƒŽãƒ¼ãƒˆãƒžã‚¹ã‚¿ãƒ¼â… + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ800æ—¥ + */ "description": string; }; "_login900": { + /** + * ノートマスターⅡ + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ900æ—¥ + */ "description": string; }; "_login1000": { + /** + * ノートマスターⅢ + */ "title": string; + /** + * 通算ãƒã‚°ã‚¤ãƒ³æ—¥æ•°ãŒ1,000æ—¥ + */ "description": string; + /** + * Misskeyを使ã£ã¦ãã‚Œã¦ã‚ã‚ŠãŒã¨ã†ï¼ + */ "flavor": string; }; "_noteClipped1": { + /** + * クリップã›ãšã«ã¯ã„られãªã„㪠+ */ "title": string; + /** + * åˆã‚ã¦ãƒŽãƒ¼ãƒˆã‚’クリップã—㟠+ */ "description": string; }; "_noteFavorited1": { + /** + * 星をã¿ã‚‹ã²ã¨ + */ "title": string; + /** + * åˆã‚ã¦ãƒŽãƒ¼ãƒˆã‚’ãŠæ°—ã«å…¥ã‚Šã«ç™»éŒ²ã—㟠+ */ "description": string; }; "_myNoteFavorited1": { + /** + * 星ãŒæ¬²ã—ã„ + */ "title": string; + /** + * 自分ã®ãƒŽãƒ¼ãƒˆãŒä»–ã®äººã‹ã‚‰ãŠæ°—ã«å…¥ã‚Šã«ç™»éŒ²ã•ã‚ŒãŸ + */ "description": string; }; "_profileFilled": { + /** + * 準備万端 + */ "title": string; + /** + * プãƒãƒ•ã‚£ãƒ¼ãƒ«è¨å®šã‚’è¡Œã£ãŸ + */ "description": string; }; "_markedAsCat": { + /** + * å¾è¼©ã¯çŒ«ã§ã‚ã‚‹ + */ "title": string; + /** + * アカウントをCatã¨ã—ã¦è¨å®šã—㟠+ */ "description": string; + /** + * åå‰ã¯ã¾ã ãªã„。 + */ "flavor": string; }; "_following1": { + /** + * ã¯ã˜ã‚ã¦ã®ãƒ•ã‚©ãƒãƒ¼ + */ "title": string; + /** + * åˆã‚ã¦ãƒ•ã‚©ãƒãƒ¼ã—㟠+ */ "description": string; }; "_following10": { + /** + * ã¤ã„ã¦ãã€ã¤ã„ã¦ã + */ "title": string; + /** + * フォãƒãƒ¼ãŒ10人を超ã—㟠+ */ "description": string; }; "_following50": { + /** + * å‹é”ãŸãã•ã‚“ + */ "title": string; + /** + * フォãƒãƒ¼ãŒ50人を超ã—㟠+ */ "description": string; }; "_following100": { + /** + * å‹é”100人 + */ "title": string; + /** + * フォãƒãƒ¼ãŒ100人を超ã—㟠+ */ "description": string; }; "_following300": { + /** + * å‹é”éŽå¤š + */ "title": string; + /** + * フォãƒãƒ¼ãŒ300人を超ã—㟠+ */ "description": string; }; "_followers1": { + /** + * ã¯ã˜ã‚ã¦ã®ãƒ•ã‚©ãƒãƒ¯ãƒ¼ + */ "title": string; + /** + * åˆã‚ã¦ãƒ•ã‚©ãƒãƒ¼ã•ã‚ŒãŸ + */ "description": string; }; "_followers10": { + /** + * フォãƒãƒ¼ãƒŸãƒ¼ï¼ + */ "title": string; + /** + * フォãƒãƒ¯ãƒ¼ãŒ10人を超ã—㟠+ */ "description": string; }; "_followers50": { + /** + * ãžã‚ãžã‚ + */ "title": string; + /** + * フォãƒãƒ¯ãƒ¼ãŒ50人を超ã—㟠+ */ "description": string; }; "_followers100": { + /** + * 人気者 + */ "title": string; + /** + * フォãƒãƒ¯ãƒ¼ãŒ100人を超ã—㟠+ */ "description": string; }; "_followers300": { + /** + * 一列ã§ãŠä¸¦ã³ãã ã•ã„ + */ "title": string; + /** + * フォãƒãƒ¯ãƒ¼ãŒ300人を超ã—㟠+ */ "description": string; }; "_followers500": { + /** + * 基地局 + */ "title": string; + /** + * フォãƒãƒ¯ãƒ¼ãŒ500人を超ã—㟠+ */ "description": string; }; "_followers1000": { + /** + * インフルエンサー + */ "title": string; + /** + * フォãƒãƒ¯ãƒ¼ãŒ1,000人を超ã—㟠+ */ "description": string; }; "_collectAchievements30": { + /** + * 実績コレクター + */ "title": string; + /** + * 実績を30個以上ç²å¾—ã—㟠+ */ "description": string; }; "_viewAchievements3min": { + /** + * 実績好ã + */ "title": string; + /** + * 実績一覧を3分以上眺ã‚続ã‘㟠+ */ "description": string; }; "_iLoveMisskey": { + /** + * I Love Misskey + */ "title": string; + /** + * "I ⤠#Misskey"を投稿ã—㟠+ */ "description": string; + /** + * Misskeyを使ã£ã¦ãã ã•ã‚Šã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ï¼ by 開発ãƒãƒ¼ãƒ + */ "flavor": string; }; "_foundTreasure": { + /** + * å®æŽ¢ã— + */ "title": string; + /** + * éš ã•ã‚ŒãŸãŠå®ã‚’発見ã—㟠+ */ "description": string; }; "_client30min": { + /** + * ã²ã¨ã‚„ã™ã¿ + */ "title": string; + /** + * クライアントを起動ã—ã¦ã‹ã‚‰30分以上経éŽã—㟠+ */ "description": string; }; "_client60min": { + /** + * Misskeyã®è¦‹ã™ãŽ + */ "title": string; + /** + * クライアントを起動ã—ã¦ã‹ã‚‰60分以上経éŽã—㟠+ */ "description": string; }; "_noteDeletedWithin1min": { + /** + * ã„ã¾ã®ãªã— + */ "title": string; + /** + * 投稿ã—ã¦ã‹ã‚‰1分以内ã«ãã®æŠ•ç¨¿ã‚’削除ã—㟠+ */ "description": string; }; "_postedAtLateNight": { + /** + * 夜行性 + */ "title": string; + /** + * 深夜ã«ãƒŽãƒ¼ãƒˆã‚’投稿ã—㟠+ */ "description": string; + /** + * ãã‚ãã‚å¯ã‚ˆã†ã€‚ + */ "flavor": string; }; "_postedAt0min0sec": { + /** + * æ™‚å ± + */ "title": string; + /** + * 0分0秒ã«ãƒŽãƒ¼ãƒˆã‚’投稿ã—㟠+ */ "description": string; + /** + * ãƒãƒƒ ãƒãƒƒ ãƒãƒƒ ピーン + */ "flavor": string; }; "_selfQuote": { + /** + * è‡ªå·±è¨€åŠ + */ "title": string; + /** + * 自分ã®ãƒŽãƒ¼ãƒˆã‚’引用ã—㟠+ */ "description": string; }; "_htl20npm": { + /** + * æµã‚Œã‚‹TL + */ "title": string; + /** + * ホームタイムラインã®æµé€ŸãŒ20npmを越㙠+ */ "description": string; }; "_viewInstanceChart": { + /** + * アナリスト + */ "title": string; + /** + * サーãƒãƒ¼ã®ãƒãƒ£ãƒ¼ãƒˆã‚’表示ã—㟠+ */ "description": string; }; "_outputHelloWorldOnScratchpad": { + /** + * Hello, world! + */ "title": string; + /** + * スクラッãƒãƒ‘ッド㧠hello world を出力ã—㟠+ */ "description": string; }; "_open3windows": { + /** + * マルãƒã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ + */ "title": string; + /** + * ウィンドウを3ã¤ä»¥ä¸Šé–‹ã„ãŸçŠ¶æ…‹ã«ã—㟠+ */ "description": string; }; "_driveFolderCircularReference": { + /** + * 循環å‚ç…§ + */ "title": string; + /** + * ドライブã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’å†å¸°çš„ãªå…¥ã‚Œåã«ã—よã†ã¨ã—㟠+ */ "description": string; }; "_reactWithoutRead": { + /** + * ã¡ã‚ƒã‚“ã¨èªã‚“ã ? + */ "title": string; + /** + * 100æ–‡å—以上ã®ãƒ†ã‚ストをå«ã‚€ãƒŽãƒ¼ãƒˆã«æŠ•ç¨¿ã•ã‚Œã¦ã‹ã‚‰3秒以内ã«ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã—㟠+ */ "description": string; }; "_clickedClickHere": { + /** + * ã“ã“をクリック + */ "title": string; + /** + * ã“ã“をクリックã—㟠+ */ "description": string; }; "_justPlainLucky": { + /** + * å˜ãªã‚‹ãƒ©ãƒƒã‚ー + */ "title": string; + /** + * 10秒ã”ã¨ã«0.005%ã®ç¢ºçŽ‡ã§ç²å¾— + */ "description": string; }; "_setNameToSyuilo": { + /** + * 神様コンプレックス + */ "title": string; + /** + * åå‰ã‚’ syuilo ã«è¨å®šã—㟠+ */ "description": string; }; "_passedSinceAccountCreated1": { + /** + * 一周年 + */ "title": string; + /** + * アカウント作æˆã‹ã‚‰1年経éŽã—㟠+ */ "description": string; }; "_passedSinceAccountCreated2": { + /** + * 二周年 + */ "title": string; + /** + * アカウント作æˆã‹ã‚‰2年経éŽã—㟠+ */ "description": string; }; "_passedSinceAccountCreated3": { + /** + * 三周年 + */ "title": string; + /** + * アカウント作æˆã‹ã‚‰3年経éŽã—㟠+ */ "description": string; }; "_loggedInOnBirthday": { + /** + * ãƒãƒƒãƒ”ーãƒãƒ¼ã‚¹ãƒ‡ãƒ¼ + */ "title": string; + /** + * 誕生日ã«ãƒã‚°ã‚¤ãƒ³ã—㟠+ */ "description": string; }; "_loggedInOnNewYearsDay": { + /** + * ã‚ã‘ã¾ã—ã¦ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ + */ "title": string; + /** + * 元日ã«ãƒã‚°ã‚¤ãƒ³ã—㟠+ */ "description": string; + /** + * 今年も弊サーãƒãƒ¼ã‚’よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ + */ "flavor": string; }; "_cookieClicked": { + /** + * クッã‚ーをクリックã™ã‚‹ã‚²ãƒ¼ãƒ + */ "title": string; + /** + * クッã‚ーをクリックã—㟠+ */ "description": string; + /** + * ソフト間é•ã£ã¦ãªã„? + */ "flavor": string; }; "_brainDiver": { + /** + * Brain Diver + */ "title": string; + /** + * Brain Diverã¸ã®ãƒªãƒ³ã‚¯ã‚’投稿ã—㟠+ */ "description": string; + /** + * Misskey-Misskey La-Tu-Ma + */ "flavor": string; }; "_smashTestNotificationButton": { + /** + * テストéŽå‰° + */ "title": string; + /** + * 通知ã®ãƒ†ã‚¹ãƒˆã‚’ã”ãçŸæ™‚é–“ã®ã†ã¡ã«é€£ç¶šã—ã¦è¡Œã£ãŸ + */ "description": string; }; "_tutorialCompleted": { + /** + * Misskeyåˆå¿ƒè€…講座 修了証 + */ "title": string; + /** + * ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’完了ã—㟠+ */ "description": string; }; "_bubbleGameExplodingHead": { + /** + * 🤯 + */ "title": string; + /** + * ãƒãƒ–ルゲームã§æœ€ã‚‚大ãã„モノを出ã—㟠+ */ "description": string; }; "_bubbleGameDoubleExplodingHead": { + /** + * ダブル🤯 + */ "title": string; + /** + * ãƒãƒ–ルゲームã§æœ€ã‚‚大ãã„モノを2ã¤åŒæ™‚ã«å‡ºã—㟠+ */ "description": string; + /** + * ã“ã‚Œãらã„ã®ã€€ãŠã¹ã‚“ã¨ã°ã“ã«ã€€ðŸ¤¯ã€€ðŸ¤¯ã€€ã¡ã‚‡ã£ã¨ã¤ã‚㦠+ */ "flavor": string; }; }; }; "_role": { + /** + * ãƒãƒ¼ãƒ«ã®ä½œæˆ + */ "new": string; + /** + * ãƒãƒ¼ãƒ«ã®ç·¨é›† + */ "edit": string; + /** + * ãƒãƒ¼ãƒ«å + */ "name": string; + /** + * ãƒãƒ¼ãƒ«ã®èª¬æ˜Ž + */ "description": string; + /** + * ãƒãƒ¼ãƒ«ã®æ¨©é™ + */ "permission": string; + /** + * <b>モデレーター</b>ã¯åŸºæœ¬çš„ãªãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«é–¢ã™ã‚‹æ“作を行ãˆã¾ã™ã€‚ + * <b>管ç†è€…</b>ã¯ã‚µãƒ¼ãƒãƒ¼ã®å…¨ã¦ã®è¨å®šã‚’変更ã§ãã¾ã™ã€‚ + */ "descriptionOfPermission": string; + /** + * アサイン + */ "assignTarget": string; + /** + * <b>マニュアル</b>ã¯èª°ãŒã“ã®ãƒãƒ¼ãƒ«ã«å«ã¾ã‚Œã‚‹ã‹ã‚’手動ã§ç®¡ç†ã—ã¾ã™ã€‚ + * <b>コンディショナル</b>ã¯æ¡ä»¶ã‚’è¨å®šã—ã€ãã‚Œã«åˆè‡´ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè‡ªå‹•ã§å«ã¾ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ + */ "descriptionOfAssignTarget": string; + /** + * マニュアル + */ "manual": string; + /** + * マニュアルãƒãƒ¼ãƒ« + */ "manualRoles": string; + /** + * コンディショナル + */ "conditional": string; + /** + * コンディショナルãƒãƒ¼ãƒ« + */ "conditionalRoles": string; + /** + * æ¡ä»¶ + */ "condition": string; + /** + * ã“ã‚Œã¯ã‚³ãƒ³ãƒ‡ã‚£ã‚·ãƒ§ãƒŠãƒ«ãƒãƒ¼ãƒ«ã§ã™ã€‚ + */ "isConditionalRole": string; + /** + * 公開ãƒãƒ¼ãƒ« + */ "isPublic": string; + /** + * ユーザーã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ã§ã“ã®ãƒãƒ¼ãƒ«ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + */ "descriptionOfIsPublic": string; + /** + * オプション + */ "options": string; + /** + * ãƒãƒªã‚·ãƒ¼ + */ "policies": string; + /** + * ベースãƒãƒ¼ãƒ« + */ "baseRole": string; + /** + * ベースãƒãƒ¼ãƒ«ã®å€¤ã‚’使用 + */ "useBaseValue": string; + /** + * アサインã™ã‚‹ãƒãƒ¼ãƒ«ã‚’é¸æŠž + */ "chooseRoleToAssign": string; + /** + * アイコン画åƒã®URL + */ "iconUrl": string; + /** + * ãƒãƒƒã‚¸ã¨ã—ã¦è¡¨ç¤º + */ "asBadge": string; + /** + * オンã«ã™ã‚‹ã¨ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼åã®æ¨ªã«ãƒãƒ¼ãƒ«ã®ã‚¢ã‚¤ã‚³ãƒ³ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + */ "descriptionOfAsBadge": string; + /** + * ユーザーを見ã¤ã‘ã‚„ã™ãã™ã‚‹ + */ "isExplorable": string; + /** + * オンã«ã™ã‚‹ã¨ã€ã€Œã¿ã¤ã‘ã‚‹ã€ã§ãƒ¡ãƒ³ãƒãƒ¼ä¸€è¦§ãŒå…¬é–‹ã•ã‚Œã‚‹ã»ã‹ã€ãƒãƒ¼ãƒ«ã®ã‚¿ã‚¤ãƒ ラインãŒåˆ©ç”¨å¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ + */ "descriptionOfIsExplorable": string; + /** + * è¡¨ç¤ºé † + */ "displayOrder": string; + /** + * 数値ãŒå¤§ãã„ã»ã©UI上ã§å…ˆé ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + */ "descriptionOfDisplayOrder": string; + /** + * モデレーターã®ãƒ¡ãƒ³ãƒãƒ¼ç·¨é›†ã‚’è¨±å¯ + */ "canEditMembersByModerator": string; + /** + * オンã«ã™ã‚‹ã¨ã€ç®¡ç†è€…ã«åŠ ãˆã¦ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚¿ãƒ¼ã‚‚ã“ã®ãƒãƒ¼ãƒ«ã¸ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’アサイン/アサイン解除ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚オフã«ã™ã‚‹ã¨ç®¡ç†è€…ã®ã¿ãŒè¡Œãˆã¾ã™ã€‚ + */ "descriptionOfCanEditMembersByModerator": string; + /** + * 優先度 + */ "priority": string; "_priority": { + /** + * 低 + */ "low": string; + /** + * ä¸ + */ "middle": string; + /** + * 高 + */ "high": string; }; "_options": { + /** + * ã‚°ãƒãƒ¼ãƒãƒ«ã‚¿ã‚¤ãƒ ラインã®é–²è¦§ + */ "gtlAvailable": string; + /** + * ãƒãƒ¼ã‚«ãƒ«ã‚¿ã‚¤ãƒ ラインã®é–²è¦§ + */ "ltlAvailable": string; + /** + * パブリック投稿ã®è¨±å¯ + */ "canPublicNote": string; + /** + * サーãƒãƒ¼æ‹›å¾…コードã®ç™ºè¡Œ + */ "canInvite": string; + /** + * 招待コードã®ä½œæˆå¯èƒ½æ•° + */ "inviteLimit": string; + /** + * 招待コードã®ç™ºè¡Œé–“éš” + */ "inviteLimitCycle": string; + /** + * 招待コードã®æœ‰åŠ¹æœŸé™ + */ "inviteExpirationTime": string; + /** + * カスタム絵文å—ã®ç®¡ç† + */ "canManageCustomEmojis": string; + /** + * ã‚¢ãƒã‚¿ãƒ¼ãƒ‡ã‚³ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®ç®¡ç† + */ "canManageAvatarDecorations": string; + /** + * ãƒ‰ãƒ©ã‚¤ãƒ–å®¹é‡ + */ "driveCapacity": string; + /** + * ファイルã«NSFWを常ã«ä»˜ä¸Ž + */ "alwaysMarkNsfw": string; + /** + * ノートã®ãƒ”ン留ã‚ã®æœ€å¤§æ•° + */ "pinMax": string; + /** + * アンテナã®ä½œæˆå¯èƒ½æ•° + */ "antennaMax": string; + /** + * ワードミュートã®æœ€å¤§æ–‡å—æ•° + */ "wordMuteMax": string; + /** + * Webhookã®ä½œæˆå¯èƒ½æ•° + */ "webhookMax": string; + /** + * クリップã®ä½œæˆå¯èƒ½æ•° + */ "clipMax": string; + /** + * クリップ内ã®ãƒŽãƒ¼ãƒˆã®æœ€å¤§æ•° + */ "noteEachClipsMax": string; + /** + * ユーザーリストã®ä½œæˆå¯èƒ½æ•° + */ "userListMax": string; + /** + * ユーザーリスト内ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æœ€å¤§æ•° + */ "userEachUserListsMax": string; + /** + * レートリミット + */ "rateLimitFactor": string; + /** + * å°ã•ã„ã»ã©åˆ¶é™ãŒç·©å’Œã•ã‚Œã€å¤§ãã„ã»ã©åˆ¶é™ãŒå¼·åŒ–ã•ã‚Œã¾ã™ã€‚ + */ "descriptionOfRateLimitFactor": string; + /** + * 広告ã®éžè¡¨ç¤º + */ "canHideAds": string; + /** + * ノート検索ã®åˆ©ç”¨ + */ "canSearchNotes": string; + /** + * 翻訳機能ã®åˆ©ç”¨ + */ "canUseTranslator": string; + /** + * アイコンデコレーションã®æœ€å¤§å–付個数 + */ "avatarDecorationLimit": string; }; "_condition": { + /** + * ãƒãƒ¼ã‚«ãƒ«ãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "isLocal": string; + /** + * リモートユーザー + */ "isRemote": string; + /** + * アカウント作æˆã‹ã‚‰ï½žä»¥å†… + */ "createdLessThan": string; + /** + * アカウント作æˆã‹ã‚‰ï½žçµŒéŽ + */ "createdMoreThan": string; + /** + * フォãƒãƒ¯ãƒ¼æ•°ãŒï½žä»¥ä¸‹ + */ "followersLessThanOrEq": string; + /** + * フォãƒãƒ¯ãƒ¼æ•°ãŒï½žä»¥ä¸Š + */ "followersMoreThanOrEq": string; + /** + * フォãƒãƒ¼æ•°ãŒï½žä»¥ä¸‹ + */ "followingLessThanOrEq": string; + /** + * フォãƒãƒ¼æ•°ãŒï½žä»¥ä¸Š + */ "followingMoreThanOrEq": string; + /** + * 投稿数ãŒï½žä»¥ä¸‹ + */ "notesLessThanOrEq": string; + /** + * 投稿数ãŒï½žä»¥ä¸Š + */ "notesMoreThanOrEq": string; + /** + * ~ã‹ã¤ï½ž + */ "and": string; + /** + * ~ã¾ãŸã¯ï½ž + */ "or": string; + /** + * ~ã§ã¯ãªã„ + */ "not": string; }; }; "_sensitiveMediaDetection": { + /** + * 機械å¦ç¿’を使ã£ã¦è‡ªå‹•ã§ã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ãªãƒ¡ãƒ‡ã‚£ã‚¢ã‚’検出ã—ã€ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«å½¹ç«‹ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚サーãƒãƒ¼ã®è² è·ãŒå°‘ã—増ãˆã¾ã™ã€‚ + */ "description": string; + /** + * 検出感度 + */ "sensitivity": string; + /** + * 感度を低ãã™ã‚‹ã¨ã€èª¤æ¤œçŸ¥(å½é™½æ€§)ãŒæ¸›ã‚Šã¾ã™ã€‚感度を高ãã™ã‚‹ã¨ã€æ¤œçŸ¥æ¼ã‚Œ(å½é™°æ€§)ãŒæ¸›ã‚Šã¾ã™ã€‚ + */ "sensitivityDescription": string; + /** + * センシティブフラグをè¨å®šã™ã‚‹ + */ "setSensitiveFlagAutomatically": string; + /** + * ã“ã®è¨å®šã‚’オフã«ã—ã¦ã‚‚内部的ã«åˆ¤å®šçµæžœã¯ä¿æŒã•ã‚Œã¾ã™ã€‚ + */ "setSensitiveFlagAutomaticallyDescription": string; + /** + * å‹•ç”»ã®è§£æžã‚’有効化 + */ "analyzeVideos": string; + /** + * é™æ¢ç”»ã«åŠ ãˆã¦å‹•ç”»ã‚‚解æžã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚サーãƒãƒ¼ã®è² è·ãŒå°‘ã—増ãˆã¾ã™ã€‚ + */ "analyzeVideosDescription": string; }; "_emailUnavailable": { + /** + * æ—¢ã«ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™ + */ "used": string; + /** + * å½¢å¼ãŒæ£ã—ãã‚ã‚Šã¾ã›ã‚“ + */ "format": string; + /** + * æ’ä¹…çš„ã«ä½¿ç”¨å¯èƒ½ãªã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“ + */ "disposable": string; + /** + * æ£ã—ã„メールサーãƒãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“ + */ "mx": string; + /** + * メールサーãƒãƒ¼ãŒå¿œç”ã—ã¾ã›ã‚“ + */ "smtp": string; + /** + * ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã¯ç™»éŒ²ã§ãã¾ã›ã‚“ + */ "banned": string; }; "_ffVisibility": { + /** + * 公開 + */ "public": string; + /** + * フォãƒãƒ¯ãƒ¼ã ã‘ã«å…¬é–‹ + */ "followers": string; + /** + * éžå…¬é–‹ + */ "private": string; }; "_signup": { + /** + * ã»ã¨ã‚“ã©å®Œäº†ã§ã™ + */ "almostThere": string; + /** + * ã‚ãªãŸãŒä½¿ã£ã¦ã„るメールアドレスを入力ã—ã¦ãã ã•ã„。メールアドレスãŒå…¬é–‹ã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。 + */ "emailAddressInfo": string; + /** + * 入力ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹({email})å®›ã«ç¢ºèªã®ãƒ¡ãƒ¼ãƒ«ãŒé€ä¿¡ã•ã‚Œã¾ã—ãŸã€‚メールã«è¨˜è¼‰ã•ã‚ŒãŸãƒªãƒ³ã‚¯ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã¨ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ä½œæˆãŒå®Œäº†ã—ã¾ã™ã€‚メールã«è¨˜è¼‰ã•ã‚Œã¦ã„るリンクã®æœ‰åŠ¹æœŸé™ã¯30分ã§ã™ã€‚ + */ "emailSent": ParameterizedString<"email">; }; "_accountDelete": { + /** + * アカウントã®å‰Šé™¤ + */ "accountDelete": string; + /** + * アカウントã®å‰Šé™¤ã¯è² è·ã®ã‹ã‹ã‚‹å‡¦ç†ã§ã‚ã‚‹ãŸã‚ã€ä½œæˆã—ãŸã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ•°ã‚„アップãƒãƒ¼ãƒ‰ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã®æ•°ãŒå¤šã„ã¨å®Œäº†ã¾ã§ã«æ™‚é–“ãŒã‹ã‹ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ + */ "mayTakeTime": string; + /** + * アカウントã®å‰Šé™¤ãŒå®Œäº†ã™ã‚‹éš›ã¯ã€ç™»éŒ²ã—ã¦ã‚ã£ãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹å®›ã«é€šçŸ¥ã‚’é€ä¿¡ã—ã¾ã™ã€‚ + */ "sendEmail": string; + /** + * アカウント削除をリクエスト + */ "requestAccountDelete": string; + /** + * 削除処ç†ãŒé–‹å§‹ã•ã‚Œã¾ã—ãŸã€‚ + */ "started": string; + /** + * 削除ãŒé€²è¡Œä¸ + */ "inProgress": string; }; "_ad": { + /** + * 戻る + */ "back": string; + /** + * ã“ã®åºƒå‘Šã®è¡¨ç¤ºé »åº¦ã‚’下ã’ã‚‹ + */ "reduceFrequencyOfThisAd": string; + /** + * 表示ã—ãªã„ + */ "hide": string; + /** + * 曜日ã¯ã‚µãƒ¼ãƒãƒ¼ã®ã‚¿ã‚¤ãƒ ゾーンを元ã«æŒ‡å®šã•ã‚Œã¾ã™ã€‚ + */ "timezoneinfo": string; + /** + * 広告é…ä¿¡è¨å®š + */ "adsSettings": string; + /** + * リアルタイム更新ä¸ã«åºƒå‘Šã‚’é…ä¿¡ã™ã‚‹é–“隔(ノートã®å€‹æ•°ï¼‰ + */ "notesPerOneAd": string; + /** + * 0ã§ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ 更新時ã®åºƒå‘Šé…信を無効 + */ "setZeroToDisable": string; + /** + * 広告ã®é…ä¿¡é–“éš”ãŒæ¥µã‚ã¦çŸã„ãŸã‚ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ä½“験ãŒè‘—ã—ãæã‚れるå¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ + */ "adsTooClose": string; }; "_forgotPassword": { + /** + * アカウントã«ç™»éŒ²ã—ãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„。ãã®ã‚¢ãƒ‰ãƒ¬ã‚¹å®›ã¦ã«ã€ãƒ‘スワードリセット用ã®ãƒªãƒ³ã‚¯ãŒé€ä¿¡ã•ã‚Œã¾ã™ã€‚ + */ "enterEmail": string; + /** + * メールアドレスを登録ã—ã¦ã„ãªã„å ´åˆã¯ã€ç®¡ç†è€…ã¾ã§ãŠå•ã„åˆã‚ã›ãã ã•ã„。 + */ "ifNoEmail": string; + /** + * ã“ã®ã‚µãƒ¼ãƒãƒ¼ã§ã¯ãƒ¡ãƒ¼ãƒ«ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ãŸã‚ã€ãƒ‘スワードリセットを行ã†å ´åˆã¯ç®¡ç†è€…ã¾ã§ãŠå•ã„åˆã‚ã›ãã ã•ã„。 + */ "contactAdmin": string; }; "_gallery": { + /** + * 自分ã®æŠ•ç¨¿ + */ "my": string; + /** + * ã„ã„ãã—ãŸæŠ•ç¨¿ + */ "liked": string; + /** + * ã„ã„ãï¼ + */ "like": string; + /** + * ã„ã„ã解除 + */ "unlike": string; }; "_email": { "_follow": { + /** + * フォãƒãƒ¼ã•ã‚Œã¾ã—㟠+ */ "title": string; }; "_receiveFollowRequest": { + /** + * フォãƒãƒ¼ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’å—ã‘å–ã‚Šã¾ã—㟠+ */ "title": string; }; }; "_plugin": { + /** + * プラグインã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ« + */ "install": string; + /** + * ä¿¡é ¼ã§ããªã„プラグインã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãªã„ã§ãã ã•ã„。 + */ "installWarn": string; + /** + * プラグインã®ç®¡ç† + */ "manage": string; + /** + * ソースを表示 + */ "viewSource": string; }; "_preferencesBackups": { + /** + * 作æˆã—ãŸãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— + */ "list": string; + /** + * æ–°è¦ä¿å˜ + */ "saveNew": string; + /** + * ファイルをèªã¿è¾¼ã¿ + */ "loadFile": string; + /** + * ã“ã®ãƒ‡ãƒã‚¤ã‚¹ã«é©ç”¨ + */ "apply": string; + /** + * 上書ãä¿å˜ + */ "save": string; + /** + * ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—åを入力 + */ "inputName": string; + /** + * ä¿å˜ã§ãã¾ã›ã‚“ + */ "cannotSave": string; + /** + * ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—å「{name}ã€ã¯æ—¢ã«å˜åœ¨ã—ã¾ã™ã€‚é•ã†åå‰ã‚’指定ã—ã¦ãã ã•ã„。 + */ "nameAlreadyExists": ParameterizedString<"name">; + /** + * ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—「{name}ã€ã‚’ç¾åœ¨ã®ãƒ‡ãƒã‚¤ã‚¹ã«é©ç”¨ã—ã¾ã™ã‹ï¼Ÿç¾åœ¨ã®ãƒ‡ãƒã‚¤ã‚¹è¨å®šã¯å¤±ã‚ã‚Œã¾ã™ã€‚ + */ "applyConfirm": ParameterizedString<"name">; + /** + * {name}ã«ä¸Šæ›¸ãä¿å˜ã—ã¾ã™ã‹ï¼Ÿ + */ "saveConfirm": ParameterizedString<"name">; + /** + * {name}を削除ã—ã¾ã™ã‹ï¼Ÿ + */ "deleteConfirm": ParameterizedString<"name">; + /** + * 「{old}ã€ã‚’「{new}ã€ã«å¤‰æ›´ã—ã¾ã™ã‹ï¼Ÿ + */ "renameConfirm": ParameterizedString<"old" | "new">; + /** + * ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã¯ã‚ã‚Šã¾ã›ã‚“。「新è¦ä¿å˜ã€ã§ç¾åœ¨ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆè¨å®šã‚’サーãƒãƒ¼ã«ä¿å˜ã§ãã¾ã™ã€‚ + */ "noBackups": string; + /** + * 作æˆæ—¥æ™‚: {date} {time} + */ "createdAt": ParameterizedString<"date" | "time">; + /** + * 更新日時: {date} {time} + */ "updatedAt": ParameterizedString<"date" | "time">; + /** + * èªã¿è¾¼ã¿ã§ãã¾ã›ã‚“ + */ "cannotLoad": string; + /** + * ファイル形å¼ãŒé•ã„ã¾ã™ã€‚ + */ "invalidFile": string; }; "_registry": { + /** + * スコープ + */ "scope": string; + /** + * ã‚ー + */ "key": string; + /** + * ã‚ー + */ "keys": string; + /** + * ドメイン + */ "domain": string; + /** + * ã‚ãƒ¼ã‚’ä½œæˆ + */ "createKey": string; }; "_aboutMisskey": { + /** + * Misskeyã¯syuiloã«ã‚ˆã£ã¦2014å¹´ã‹ã‚‰é–‹ç™ºã•ã‚Œã¦ã„ã‚‹ã€ã‚ªãƒ¼ãƒ—ンソースã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã™ã€‚ + */ "about": string; + /** + * コントリビューター + */ "contributors": string; + /** + * å…¨ã¦ã®ã‚³ãƒ³ãƒˆãƒªãƒ“ューター + */ "allContributors": string; + /** + * ソースコード + */ "source": string; + /** + * Misskeyを翻訳 + */ "translation": string; + /** + * Misskeyã«å¯„付 + */ "donate": string; + /** + * ä»–ã«ã‚‚多ãã®æ–¹ãŒæ”¯æ´ã—ã¦ãã‚Œã¦ã„ã¾ã™ã€‚ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ðŸ¥° + */ "morePatrons": string; + /** + * 支æ´è€… + */ "patrons": string; + /** + * プãƒã‚¸ã‚§ã‚¯ãƒˆãƒ¡ãƒ³ãƒãƒ¼ + */ "projectMembers": string; }; "_displayOfSensitiveMedia": { + /** + * センシティブè¨å®šã•ã‚ŒãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’éš ã™ + */ "respect": string; + /** + * センシティブè¨å®šã•ã‚ŒãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’éš ã•ãªã„ + */ "ignore": string; + /** + * 常ã«ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’éš ã™ + */ "force": string; }; "_instanceTicker": { + /** + * 表示ã—ãªã„ + */ "none": string; + /** + * リモートユーザーã«è¡¨ç¤º + */ "remote": string; + /** + * 常ã«è¡¨ç¤º + */ "always": string; }; "_serverDisconnectedBehavior": { + /** + * 自動ã§ãƒªãƒãƒ¼ãƒ‰ + */ "reload": string; + /** + * ダイアãƒã‚°ã§è¦å‘Š + */ "dialog": string; + /** + * 控ãˆã‚ã«è¦å‘Š + */ "quiet": string; }; "_channel": { + /** + * ãƒãƒ£ãƒ³ãƒãƒ«ã‚’ä½œæˆ + */ "create": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«ã‚’編集 + */ "edit": string; + /** + * ãƒãƒŠãƒ¼ã‚’è¨å®š + */ "setBanner": string; + /** + * ãƒãƒŠãƒ¼ã‚’削除 + */ "removeBanner": string; + /** + * トレンド + */ "featured": string; + /** + * 管ç†ä¸ + */ "owned": string; + /** + * フォãƒãƒ¼ä¸ + */ "following": string; + /** + * {n}人ãŒå‚åŠ ä¸ + */ "usersCount": ParameterizedString<"n">; + /** + * {n}投稿ãŒã‚ã‚Šã¾ã™ + */ "notesCount": ParameterizedString<"n">; + /** + * åå‰ã¨èª¬æ˜Ž + */ "nameAndDescription": string; + /** + * åå‰ã®ã¿ + */ "nameOnly": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«å¤–ã¸ã®ãƒªãƒŽãƒ¼ãƒˆã¨å¼•ç”¨ãƒªãƒŽãƒ¼ãƒˆã‚’許å¯ã™ã‚‹ + */ "allowRenoteToExternal": string; }; "_menuDisplay": { + /** + * 横 + */ "sideFull": string; + /** + * 横(アイコン) + */ "sideIcon": string; + /** + * 上部 + */ "top": string; + /** + * éš ã™ + */ "hide": string; }; "_wordMute": { + /** + * ミュートã™ã‚‹ãƒ¯ãƒ¼ãƒ‰ + */ "muteWords": string; + /** + * スペースã§åŒºåˆ‡ã‚‹ã¨AND指定ã«ãªã‚Šã€æ”¹è¡Œã§åŒºåˆ‡ã‚‹ã¨OR指定ã«ãªã‚Šã¾ã™ã€‚ + */ "muteWordsDescription": string; + /** + * ã‚ーワードをスラッシュã§å›²ã‚€ã¨æ£è¦è¡¨ç¾ã«ãªã‚Šã¾ã™ã€‚ + */ "muteWordsDescription2": string; }; "_instanceMute": { + /** + * ミュートã—ãŸã‚µãƒ¼ãƒãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¸ã®è¿”ä¿¡ã‚’å«ã‚ã¦ã€è¨å®šã—ãŸã‚µãƒ¼ãƒãƒ¼ã®å…¨ã¦ã®ãƒŽãƒ¼ãƒˆã¨Renoteをミュートã—ã¾ã™ã€‚ + */ "instanceMuteDescription": string; + /** + * 改行ã§åŒºåˆ‡ã£ã¦è¨å®šã—ã¾ã™ + */ "instanceMuteDescription2": string; + /** + * è¨å®šã—ãŸã‚µãƒ¼ãƒãƒ¼ã®ãƒŽãƒ¼ãƒˆã‚’éš ã—ã¾ã™ã€‚ + */ "title": string; + /** + * ミュートã™ã‚‹ã‚µãƒ¼ãƒãƒ¼ + */ "heading": string; }; "_theme": { + /** + * テーマを探㙠+ */ "explore": string; + /** + * テーマã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ« + */ "install": string; + /** + * テーマã®ç®¡ç† + */ "manage": string; + /** + * テーマコード + */ "code": string; + /** + * 説明 + */ "description": string; + /** + * {name}をインストールã—ã¾ã—㟠+ */ "installed": ParameterizedString<"name">; + /** + * インストールã•ã‚ŒãŸãƒ†ãƒ¼ãƒž + */ "installedThemes": string; + /** + * 標準ã®ãƒ†ãƒ¼ãƒž + */ "builtinThemes": string; + /** + * ãã®ãƒ†ãƒ¼ãƒžã¯æ—¢ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã™ + */ "alreadyInstalled": string; + /** + * テーマã®å½¢å¼ãŒé–“é•ã£ã¦ã„ã¾ã™ + */ "invalid": string; + /** + * テーマを作る + */ "make": string; + /** + * ベース + */ "base": string; + /** + * å®šæ•°ã‚’è¿½åŠ + */ "addConstant": string; + /** + * 定数 + */ "constant": string; + /** + * デフォルト値 + */ "defaultValue": string; + /** + * 色 + */ "color": string; + /** + * プãƒãƒ‘ティをå‚ç…§ + */ "refProp": string; + /** + * 定数をå‚ç…§ + */ "refConst": string; + /** + * ã‚ー + */ "key": string; + /** + * 関数 + */ "func": string; + /** + * 関数ã®ç¨®é¡ž + */ "funcKind": string; + /** + * 引数 + */ "argument": string; + /** + * å…ƒã«ã™ã‚‹ãƒ—ãƒãƒ‘ティã®åå‰ + */ "basedProp": string; + /** + * ä¸é€æ˜Žåº¦ + */ "alpha": string; + /** + * æš—ã• + */ "darken": string; + /** + * 明る㕠+ */ "lighten": string; + /** + * 定数åを入力ã—ã¦ãã ã•ã„ + */ "inputConstantName": string; + /** + * ã“ã“ã«ãƒ†ãƒ¼ãƒžã‚³ãƒ¼ãƒ‰ã‚’貼り付ã‘ã¦ã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã™ + */ "importInfo": string; + /** + * 定数 {const} を削除ã—ã¦ã‚‚良ã„ã§ã™ã‹ï¼Ÿ + */ "deleteConstantConfirm": ParameterizedString<"const">; "keys": { + /** + * アクセント + */ "accent": string; + /** + * 背景 + */ "bg": string; + /** + * æ–‡å— + */ "fg": string; + /** + * フォーカス + */ "focus": string; + /** + * インジケーター + */ "indicator": string; + /** + * パãƒãƒ« + */ "panel": string; + /** + * å½± + */ "shadow": string; + /** + * ヘッダー + */ "header": string; + /** + * サイドãƒãƒ¼ã®èƒŒæ™¯ + */ "navBg": string; + /** + * サイドãƒãƒ¼ã®æ–‡å— + */ "navFg": string; + /** + * サイドãƒãƒ¼æ–‡å—(ホãƒãƒ¼) + */ "navHoverFg": string; + /** + * サイドãƒãƒ¼æ–‡å—(アクティブ) + */ "navActive": string; + /** + * サイドãƒãƒ¼ã®ã‚¤ãƒ³ã‚¸ã‚±ãƒ¼ã‚¿ãƒ¼ + */ "navIndicator": string; + /** + * リンク + */ "link": string; + /** + * ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚° + */ "hashtag": string; + /** + * メンション + */ "mention": string; + /** + * ã‚ãªãŸå®›ã¦ãƒ¡ãƒ³ã‚·ãƒ§ãƒ³ + */ "mentionMe": string; + /** + * Renote + */ "renote": string; + /** + * モーダルã®èƒŒæ™¯ + */ "modalBg": string; + /** + * 分割線 + */ "divider": string; + /** + * スクãƒãƒ¼ãƒ«ãƒãƒ¼ã®å–ã£æ‰‹ + */ "scrollbarHandle": string; + /** + * スクãƒãƒ¼ãƒ«ãƒãƒ¼ã®å–ã£æ‰‹ï¼ˆãƒ›ãƒãƒ¼) + */ "scrollbarHandleHover": string; + /** + * 日付ラベルã®æ–‡å— + */ "dateLabelFg": string; + /** + * æƒ…å ±ã®èƒŒæ™¯ + */ "infoBg": string; + /** + * æƒ…å ±ã®æ–‡å— + */ "infoFg": string; + /** + * è¦å‘Šã®èƒŒæ™¯ + */ "infoWarnBg": string; + /** + * è¦å‘Šã®æ–‡å— + */ "infoWarnFg": string; + /** + * 通知トーストã®èƒŒæ™¯ + */ "toastBg": string; + /** + * 通知トーストã®æ–‡å— + */ "toastFg": string; + /** + * ボタンã®èƒŒæ™¯ + */ "buttonBg": string; + /** + * ボタンã®èƒŒæ™¯ (ホãƒãƒ¼) + */ "buttonHoverBg": string; + /** + * 入力ボックスã®ç¸å–ã‚Š + */ "inputBorder": string; + /** + * ãƒªã‚¹ãƒˆé …ç›®ã®èƒŒæ™¯ (ホãƒãƒ¼) + */ "listItemHoverBg": string; + /** + * ドライブフォルダーã®èƒŒæ™¯ + */ "driveFolderBg": string; + /** + * å£ç´™ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ¬ã‚¤ + */ "wallpaperOverlay": string; + /** + * ãƒãƒƒã‚¸ + */ "badge": string; + /** + * ãƒãƒ£ãƒƒãƒˆã®èƒŒæ™¯ + */ "messageBg": string; + /** + * アクセント (æš—ã‚) + */ "accentDarken": string; + /** + * アクセント (明るã‚) + */ "accentLighten": string; + /** + * 強調ã•ã‚ŒãŸæ–‡å— + */ "fgHighlighted": string; }; }; "_sfx": { + /** + * ノート + */ "note": string; + /** + * ノート(自分) + */ "noteMy": string; + /** + * 通知 + */ "notification": string; + /** + * アンテナå—ä¿¡ + */ "antenna": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«é€šçŸ¥ + */ "channel": string; + /** + * リアクションé¸æŠžæ™‚ + */ "reaction": string; }; "_soundSettings": { + /** + * ドライブã®éŸ³å£°ã‚’使用 + */ "driveFile": string; + /** + * ドライブã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„ + */ "driveFileWarn": string; + /** + * ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“ + */ "driveFileTypeWarn": string; + /** + * 音声ファイルをé¸æŠžã—ã¦ãã ã•ã„ + */ "driveFileTypeWarnDescription": string; + /** + * 音声ãŒé•·ã™ãŽã¾ã™ + */ "driveFileDurationWarn": string; + /** + * é•·ã„音声を使用ã™ã‚‹ã¨Misskeyã®ä½¿ç”¨ã«æ”¯éšœã‚’ããŸã™å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ãã‚Œã§ã‚‚続行ã—ã¾ã™ã‹ï¼Ÿ + */ "driveFileDurationWarnDescription": string; }; "_ago": { + /** + * æœªæ¥ + */ "future": string; + /** + * ãŸã£ãŸä»Š + */ "justNow": string; + /** + * {n}ç§’å‰ + */ "secondsAgo": ParameterizedString<"n">; + /** + * {n}åˆ†å‰ + */ "minutesAgo": ParameterizedString<"n">; + /** + * {n}æ™‚é–“å‰ + */ "hoursAgo": ParameterizedString<"n">; + /** + * {n}æ—¥å‰ + */ "daysAgo": ParameterizedString<"n">; + /** + * {n}é€±é–“å‰ + */ "weeksAgo": ParameterizedString<"n">; + /** + * {n}ãƒ¶æœˆå‰ + */ "monthsAgo": ParameterizedString<"n">; + /** + * {n}å¹´å‰ + */ "yearsAgo": ParameterizedString<"n">; + /** + * 日時ã®è§£æžã«å¤±æ•— + */ "invalid": string; }; "_timeIn": { + /** + * {n}秒後 + */ "seconds": ParameterizedString<"n">; + /** + * {n}分後 + */ "minutes": ParameterizedString<"n">; + /** + * {n}時間後 + */ "hours": ParameterizedString<"n">; + /** + * {n}日後 + */ "days": ParameterizedString<"n">; + /** + * {n}週間後 + */ "weeks": ParameterizedString<"n">; + /** + * {n}ヶ月後 + */ "months": ParameterizedString<"n">; + /** + * {n}年後 + */ "years": ParameterizedString<"n">; }; "_time": { + /** + * 秒 + */ "second": string; + /** + * 分 + */ "minute": string; + /** + * 時間 + */ "hour": string; + /** + * æ—¥ + */ "day": string; }; "_2fa": { + /** + * æ—¢ã«è¨å®šã¯å®Œäº†ã—ã¦ã„ã¾ã™ã€‚ + */ "alreadyRegistered": string; + /** + * èªè¨¼ã‚¢ãƒ—リã®è¨å®šã‚’開始 + */ "registerTOTP": string; + /** + * ã¾ãšã€{a}ã‚„{b}ãªã©ã®èªè¨¼ã‚¢ãƒ—リをãŠä½¿ã„ã®ãƒ‡ãƒã‚¤ã‚¹ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¾ã™ã€‚ + */ "step1": ParameterizedString<"a" | "b">; + /** + * 次ã«ã€è¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹QRコードをアプリã§ã‚¹ã‚ャンã—ã¾ã™ã€‚ + */ "step2": string; + /** + * QRコードをクリックã™ã‚‹ã¨ã€ãŠä½¿ã„ã®ç«¯æœ«ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹èªè¨¼ã‚¢ãƒ—リやã‚ーリングã«ç™»éŒ²ã§ãã¾ã™ã€‚ + */ "step2Click": string; + /** + * デスクトップアプリを使用ã™ã‚‹å ´åˆã¯æ¬¡ã®URIを入力ã—ã¾ã™ + */ "step2Uri": string; + /** + * 確èªã‚³ãƒ¼ãƒ‰ã‚’入力 + */ "step3Title": string; + /** + * アプリã«è¡¨ç¤ºã•ã‚Œã¦ã„る確èªã‚³ãƒ¼ãƒ‰ï¼ˆãƒˆãƒ¼ã‚¯ãƒ³ï¼‰ã‚’入力ã—ã¾ã™ã€‚ + */ "step3": string; + /** + * è¨å®šãŒå®Œäº†ã—ã¾ã—㟠+ */ "setupCompleted": string; + /** + * ã“ã‚Œã‹ã‚‰ãƒã‚°ã‚¤ãƒ³ã™ã‚‹ã¨ãã‚‚ã€åŒã˜ã‚ˆã†ã«ã‚³ãƒ¼ãƒ‰ã‚’入力ã—ã¾ã™ã€‚ + */ "step4": string; + /** + * ãŠä½¿ã„ã®ãƒ–ラウザã¯ã‚»ã‚ュリティã‚ーã«å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。 + */ "securityKeyNotSupported": string; + /** + * ã‚»ã‚ュリティã‚ー・パスã‚ーを登録ã™ã‚‹ã«ã¯ã€ã¾ãšèªè¨¼ã‚¢ãƒ—リã®è¨å®šã‚’è¡Œãªã£ã¦ãã ã•ã„。 + */ "registerTOTPBeforeKey": string; + /** + * FIDO2をサãƒãƒ¼ãƒˆã™ã‚‹ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã‚»ã‚ュリティã‚ーã€ç«¯æœ«ã®ç”Ÿä½“èªè¨¼ã‚„PINãƒãƒƒã‚¯ã€ãƒ‘スã‚ーã¨ã„ã£ãŸã€WebAuthnç”±æ¥ã®éµã‚’登録ã—ã¾ã™ã€‚ + */ "securityKeyInfo": string; + /** + * ã‚»ã‚ュリティã‚ー・パスã‚ーを登録ã™ã‚‹ + */ "registerSecurityKey": string; + /** + * ã‚ーã®åå‰ã‚’入力 + */ "securityKeyName": string; + /** + * ブラウザã®æŒ‡ç¤ºã«å¾“ã„ã€ã‚»ã‚ュリティã‚ーやパスã‚ーを登録ã—ã¦ãã ã•ã„ + */ "tapSecurityKey": string; + /** + * ã‚»ã‚ュリティã‚ーを削除 + */ "removeKey": string; + /** + * {name}を削除ã—ã¾ã™ã‹ï¼Ÿ + */ "removeKeyConfirm": ParameterizedString<"name">; + /** + * ã‚»ã‚ュリティã‚ーãŒç™»éŒ²ã•ã‚Œã¦ã„ã‚‹å ´åˆã€èªè¨¼ã‚¢ãƒ—リã®è¨å®šã¯è§£é™¤ã§ãã¾ã›ã‚“。 + */ "whyTOTPOnlyRenew": string; + /** + * èªè¨¼ã‚¢ãƒ—リをå†è¨å®š + */ "renewTOTP": string; + /** + * 今ã¾ã§ã®èªè¨¼ã‚¢ãƒ—リã®ç¢ºèªã‚³ãƒ¼ãƒ‰ãŠã‚ˆã³ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードã¯ä½¿ç”¨ã§ããªããªã‚Šã¾ã™ + */ "renewTOTPConfirm": string; + /** + * å†è¨å®šã™ã‚‹ + */ "renewTOTPOk": string; + /** + * ã‚„ã‚ã¦ãŠã + */ "renewTOTPCancel": string; + /** + * ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã‚’é–‰ã˜ã‚‹å‰ã«ã€ä»¥ä¸‹ã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードを確èªã—ã¦ãã ã•ã„。 + */ "checkBackupCodesBeforeCloseThisWizard": string; + /** + * ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コード + */ "backupCodes": string; + /** + * èªè¨¼ã‚¢ãƒ—リãŒä½¿ç”¨ã§ããªããªã£ãŸå ´åˆã€ä»¥ä¸‹ã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードを使ã£ã¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚ã“れらã®ã‚³ãƒ¼ãƒ‰ã¯å¿…ãšå®‰å…¨ãªå ´æ‰€ã«ä¿ç®¡ã—ã¦ãã ã•ã„。å„コードã¯ä¸€å›žã ã‘使用ã§ãã¾ã™ã€‚ + */ "backupCodesDescription": string; + /** + * ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸã€‚èªè¨¼ã‚¢ãƒ—リãŒä½¿ãˆãªããªã£ã¦ã„ã‚‹å ´åˆã€ãªã‚‹ã¹ãæ—©ãèªè¨¼ã‚¢ãƒ—リをå†è¨å®šã—ã¦ãã ã•ã„。 + */ "backupCodeUsedWarning": string; + /** + * ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードãŒå…¨ã¦ä½¿ç”¨ã•ã‚Œã¾ã—ãŸã€‚èªè¨¼ã‚¢ãƒ—リを利用ã§ããªã„å ´åˆã€ã“れ以上アカウントã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªããªã‚Šã¾ã™ã€‚èªè¨¼ã‚¢ãƒ—リをå†ç™»éŒ²ã—ã¦ãã ã•ã„。 + */ "backupCodesExhaustedWarning": string; }; "_permissions": { + /** + * アカウントã®æƒ…å ±ã‚’è¦‹ã‚‹ + */ "read:account": string; + /** + * アカウントã®æƒ…å ±ã‚’å¤‰æ›´ã™ã‚‹ + */ "write:account": string; + /** + * ブãƒãƒƒã‚¯ã‚’見る + */ "read:blocks": string; + /** + * ブãƒãƒƒã‚¯ã‚’æ“作ã™ã‚‹ + */ "write:blocks": string; + /** + * ドライブを見る + */ "read:drive": string; + /** + * ドライブをæ“作ã™ã‚‹ + */ "write:drive": string; + /** + * ãŠæ°—ã«å…¥ã‚Šã‚’見る + */ "read:favorites": string; + /** + * ãŠæ°—ã«å…¥ã‚Šã‚’æ“作ã™ã‚‹ + */ "write:favorites": string; + /** + * フォãƒãƒ¼ã®æƒ…å ±ã‚’è¦‹ã‚‹ + */ "read:following": string; + /** + * フォãƒãƒ¼ãƒ»ãƒ•ã‚©ãƒãƒ¼è§£é™¤ã™ã‚‹ + */ "write:following": string; + /** + * ãƒãƒ£ãƒƒãƒˆã‚’見る + */ "read:messaging": string; + /** + * ãƒãƒ£ãƒƒãƒˆã‚’æ“作ã™ã‚‹ + */ "write:messaging": string; + /** + * ミュートを見る + */ "read:mutes": string; + /** + * ミュートをæ“作ã™ã‚‹ + */ "write:mutes": string; + /** + * ノートを作æˆãƒ»å‰Šé™¤ã™ã‚‹ + */ "write:notes": string; + /** + * 通知を見る + */ "read:notifications": string; + /** + * 通知をæ“作ã™ã‚‹ + */ "write:notifications": string; + /** + * リアクションを見る + */ "read:reactions": string; + /** + * リアクションをæ“作ã™ã‚‹ + */ "write:reactions": string; + /** + * 投票ã™ã‚‹ + */ "write:votes": string; + /** + * ページを見る + */ "read:pages": string; + /** + * ページをæ“作ã™ã‚‹ + */ "write:pages": string; + /** + * ページã®ã„ã„ãを見る + */ "read:page-likes": string; + /** + * ページã®ã„ã„ãã‚’æ“作ã™ã‚‹ + */ "write:page-likes": string; + /** + * ユーザーグループを見る + */ "read:user-groups": string; + /** + * ユーザーグループをæ“作ã™ã‚‹ + */ "write:user-groups": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«ã‚’見る + */ "read:channels": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«ã‚’æ“作ã™ã‚‹ + */ "write:channels": string; + /** + * ギャラリーを見る + */ "read:gallery": string; + /** + * ギャラリーをæ“作ã™ã‚‹ + */ "write:gallery": string; + /** + * ギャラリーã®ã„ã„ãを見る + */ "read:gallery-likes": string; + /** + * ギャラリーã®ã„ã„ãã‚’æ“作ã™ã‚‹ + */ "write:gallery-likes": string; + /** + * Playを見る + */ "read:flash": string; + /** + * Playã‚’æ“作ã™ã‚‹ + */ "write:flash": string; + /** + * Playã®ã„ã„ãを見る + */ "read:flash-likes": string; + /** + * Playã®ã„ã„ãã‚’æ“作ã™ã‚‹ + */ "write:flash-likes": string; + /** + * ユーザーã‹ã‚‰ã®é€šå ±ã‚’見る + */ "read:admin:abuse-user-reports": string; + /** + * ユーザーアカウントを削除ã™ã‚‹ + */ "write:admin:delete-account": string; + /** + * ユーザーã®ã™ã¹ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除ã™ã‚‹ + */ "write:admin:delete-all-files-of-a-user": string; + /** + * データベースインデックスã«é–¢ã™ã‚‹æƒ…å ±ã‚’è¦‹ã‚‹ + */ "read:admin:index-stats": string; + /** + * データベーステーブルã«é–¢ã™ã‚‹æƒ…å ±ã‚’è¦‹ã‚‹ + */ "read:admin:table-stats": string; + /** + * ユーザーã®IPアドレスを見る + */ "read:admin:user-ips": string; + /** + * インスタンスã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’見る + */ "read:admin:meta": string; + /** + * ユーザーã®ãƒ‘スワードをリセットã™ã‚‹ + */ "write:admin:reset-password": string; + /** + * ユーザーã‹ã‚‰ã®é€šå ±ã‚’解決ã™ã‚‹ + */ "write:admin:resolve-abuse-user-report": string; + /** + * メールをé€ã‚‹ + */ "write:admin:send-email": string; + /** + * サーãƒãƒ¼ã®æƒ…å ±ã‚’è¦‹ã‚‹ + */ "read:admin:server-info": string; + /** + * モデレーションãƒã‚°ã‚’見る + */ "read:admin:show-moderation-log": string; + /** + * ユーザーã®ãƒ—ライベートãªæƒ…å ±ã‚’è¦‹ã‚‹ + */ "read:admin:show-user": string; + /** + * ユーザーã®ãƒ—ライベートãªæƒ…å ±ã‚’è¦‹ã‚‹ + */ "read:admin:show-users": string; + /** + * ユーザーをå‡çµã™ã‚‹ + */ "write:admin:suspend-user": string; + /** + * ユーザーã®ã‚¢ãƒã‚¿ãƒ¼ã‚’削除ã™ã‚‹ + */ "write:admin:unset-user-avatar": string; + /** + * ユーザーã®ãƒãƒ¼ãƒŠãƒ¼ã‚’削除ã™ã‚‹ + */ "write:admin:unset-user-banner": string; + /** + * ユーザーã®å‡çµã‚’解除ã™ã‚‹ + */ "write:admin:unsuspend-user": string; + /** + * インスタンスã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’æ“作ã™ã‚‹ + */ "write:admin:meta": string; + /** + * モデレーションノートをæ“作ã™ã‚‹ + */ "write:admin:user-note": string; + /** + * ãƒãƒ¼ãƒ«ã‚’æ“作ã™ã‚‹ + */ "write:admin:roles": string; + /** + * ãƒãƒ¼ãƒ«ã‚’見る + */ "read:admin:roles": string; + /** + * リレーをæ“作ã™ã‚‹ + */ "write:admin:relays": string; + /** + * リレーを見る + */ "read:admin:relays": string; + /** + * 招待コードをæ“作ã™ã‚‹ + */ "write:admin:invite-codes": string; + /** + * 招待コードを見る + */ "read:admin:invite-codes": string; + /** + * ãŠçŸ¥ã‚‰ã›ã‚’æ“作ã™ã‚‹ + */ "write:admin:announcements": string; + /** + * ãŠçŸ¥ã‚‰ã›ã‚’見る + */ "read:admin:announcements": string; + /** + * ã‚¢ãƒã‚¿ãƒ¼ãƒ‡ã‚³ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’æ“作ã™ã‚‹ + */ "write:admin:avatar-decorations": string; + /** + * ã‚¢ãƒã‚¿ãƒ¼ãƒ‡ã‚³ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’見る + */ "read:admin:avatar-decorations": string; + /** + * 連åˆã«é–¢ã™ã‚‹æƒ…å ±ã‚’æ“作ã™ã‚‹ + */ "write:admin:federation": string; + /** + * ユーザーアカウントをæ“作ã™ã‚‹ + */ "write:admin:account": string; + /** + * ユーザーã«é–¢ã™ã‚‹æƒ…å ±ã‚’è¦‹ã‚‹ + */ "read:admin:account": string; + /** + * 絵文å—ã‚’æ“作ã™ã‚‹ + */ "write:admin:emoji": string; + /** + * 絵文å—を見る + */ "read:admin:emoji": string; + /** + * ジョブã‚ューをæ“作ã™ã‚‹ + */ "write:admin:queue": string; + /** + * ジョブã‚ューã«é–¢ã™ã‚‹æƒ…å ±ã‚’è¦‹ã‚‹ + */ "read:admin:queue": string; + /** + * プãƒãƒ¢ãƒ¼ã‚·ãƒ§ãƒ³ãƒŽãƒ¼ãƒˆã‚’æ“作ã™ã‚‹ + */ "write:admin:promo": string; + /** + * ユーザーã®ãƒ‰ãƒ©ã‚¤ãƒ–ã‚’æ“作ã™ã‚‹ + */ "write:admin:drive": string; + /** + * ユーザーã®ãƒ‰ãƒ©ã‚¤ãƒ–ã®é–¢ã™ã‚‹æƒ…å ±ã‚’è¦‹ã‚‹ + */ "read:admin:drive": string; + /** + * 管ç†è€…用ã®Websocket APIを使ㆠ+ */ "read:admin:stream": string; + /** + * 広告をæ“作ã™ã‚‹ + */ "write:admin:ad": string; + /** + * 広告を見る + */ "read:admin:ad": string; + /** + * 招待コードを作æˆã™ã‚‹ + */ "write:invite-codes": string; + /** + * 招待コードをå–å¾—ã™ã‚‹ + */ "read:invite-codes": string; + /** + * クリップã®ã„ã„ãã‚’æ“作ã™ã‚‹ + */ "write:clip-favorite": string; + /** + * クリップã®ã„ã„ãを見る + */ "read:clip-favorite": string; + /** + * 連åˆã«é–¢ã™ã‚‹æƒ…å ±ã‚’å–å¾—ã™ã‚‹ + */ "read:federation": string; + /** + * é•åã‚’å ±å‘Šã™ã‚‹ + */ "write:report-abuse": string; }; "_auth": { + /** + * アプリã¸ã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ + */ "shareAccessTitle": string; + /** + * 「{name}ã€ãŒã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ã‚’許å¯ã—ã¾ã™ã‹ï¼Ÿ + */ "shareAccess": ParameterizedString<"name">; + /** + * アカウントã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ã¾ã™ã‹ï¼Ÿ + */ "shareAccessAsk": string; + /** + * {name}ã¯æ¬¡ã®æ¨©é™ã‚’è¦æ±‚ã—ã¦ã„ã¾ã™ + */ "permission": ParameterizedString<"name">; + /** + * ã“ã®ã‚¢ãƒ—リã¯æ¬¡ã®æ¨©é™ã‚’è¦æ±‚ã—ã¦ã„ã¾ã™ + */ "permissionAsk": string; + /** + * アプリケーションã«æˆ»ã£ã¦ã‚„ã£ã¦ã„ã£ã¦ãã ã•ã„ + */ "pleaseGoBack": string; + /** + * アプリケーションã«æˆ»ã£ã¦ã„ã¾ã™ + */ "callback": string; + /** + * アクセスを拒å¦ã—ã¾ã—㟠+ */ "denied": string; + /** + * アプリケーションã«ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’与ãˆã‚‹ã«ã¯ã€ãƒã‚°ã‚¤ãƒ³ãŒå¿…è¦ã§ã™ã€‚ + */ "pleaseLogin": string; }; "_antennaSources": { + /** + * å…¨ã¦ã®ãƒŽãƒ¼ãƒˆ + */ "all": string; + /** + * フォãƒãƒ¼ã—ã¦ã„るユーザーã®ãƒŽãƒ¼ãƒˆ + */ "homeTimeline": string; + /** + * 指定ã—ãŸä¸€äººã¾ãŸã¯è¤‡æ•°ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒŽãƒ¼ãƒˆ + */ "users": string; + /** + * 指定ã—ãŸãƒªã‚¹ãƒˆã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒŽãƒ¼ãƒˆ + */ "userList": string; + /** + * 指定ã—ãŸä¸€äººã¾ãŸã¯è¤‡æ•°ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’除ã„ãŸå…¨ã¦ã®ãƒŽãƒ¼ãƒˆ + */ "userBlacklist": string; }; "_weekday": { + /** + * 日曜日 + */ "sunday": string; + /** + * 月曜日 + */ "monday": string; + /** + * ç«æ›œæ—¥ + */ "tuesday": string; + /** + * 水曜日 + */ "wednesday": string; + /** + * 木曜日 + */ "thursday": string; + /** + * 金曜日 + */ "friday": string; + /** + * 土曜日 + */ "saturday": string; }; "_widgets": { + /** + * プãƒãƒ•ã‚£ãƒ¼ãƒ« + */ "profile": string; + /** + * サーãƒãƒ¼æƒ…å ± + */ "instanceInfo": string; + /** + * 付箋 + */ "memo": string; + /** + * 通知 + */ "notifications": string; + /** + * タイムライン + */ "timeline": string; + /** + * カレンダー + */ "calendar": string; + /** + * トレンド + */ "trends": string; + /** + * 時計 + */ "clock": string; + /** + * RSSリーダー + */ "rss": string; + /** + * RSSティッカー + */ "rssTicker": string; + /** + * アクティビティ + */ "activity": string; + /** + * フォト + */ "photos": string; + /** + * デジタル時計 + */ "digitalClock": string; + /** + * UNIX時計 + */ "unixClock": string; + /** + * é€£åˆ + */ "federation": string; + /** + * サーãƒãƒ¼ã‚¯ãƒ©ã‚¦ãƒ‰ + */ "instanceCloud": string; + /** + * 投稿フォーム+ */ "postForm": string; + /** + * スライドショー + */ "slideshow": string; + /** + * ボタン + */ "button": string; + /** + * オンラインユーザー + */ "onlineUsers": string; + /** + * ジョブã‚ュー + */ "jobQueue": string; + /** + * サーãƒãƒ¼ãƒ¡ãƒˆãƒªã‚¯ã‚¹ + */ "serverMetric": string; + /** + * AiScriptコンソール + */ "aiscript": string; + /** + * AiScript App + */ "aiscriptApp": string; + /** + * è— + */ "aichan": string; + /** + * ユーザーリスト + */ "userList": string; "_userList": { + /** + * リストをé¸æŠž + */ "chooseList": string; }; + /** + * クリッカー + */ "clicker": string; + /** + * 今日誕生日ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ + */ "birthdayFollowings": string; }; "_cw": { + /** + * éš ã™ + */ "hide": string; + /** + * ã‚‚ã£ã¨è¦‹ã‚‹ + */ "show": string; + /** + * {count}æ–‡å— + */ "chars": ParameterizedString<"count">; + /** + * {count}ファイル + */ "files": ParameterizedString<"count">; }; "_poll": { + /** + * é¸æŠžè‚¢ã¯æœ€ä½Ž2ã¤å¿…è¦ã§ã™ + */ "noOnlyOneChoice": string; + /** + * é¸æŠžè‚¢{n} + */ "choiceN": ParameterizedString<"n">; + /** + * ã“ã‚Œä»¥ä¸Šè¿½åŠ ã§ãã¾ã›ã‚“ + */ "noMore": string; + /** + * 複数回ç”å¯ + */ "canMultipleVote": string; + /** + * æœŸé™ + */ "expiration": string; + /** + * ç„¡æœŸé™ + */ "infinite": string; + /** + * 日時指定 + */ "at": string; + /** + * 経éŽæŒ‡å®š + */ "after": string; + /** + * 期日 + */ "deadlineDate": string; + /** + * 時間 + */ "deadlineTime": string; + /** + * 期間 + */ "duration": string; + /** + * {n}票 + */ "votesCount": ParameterizedString<"n">; + /** + * 計{n}票 + */ "totalVotes": ParameterizedString<"n">; + /** + * 投票ã™ã‚‹ + */ "vote": string; + /** + * çµæžœã‚’見る + */ "showResult": string; + /** + * 投票済㿠+ */ "voted": string; + /** + * 終了済㿠+ */ "closed": string; + /** + * 終了ã¾ã§ã‚ã¨{d}æ—¥{h}時間 + */ "remainingDays": ParameterizedString<"d" | "h">; + /** + * 終了ã¾ã§ã‚ã¨{h}時間{m}分 + */ "remainingHours": ParameterizedString<"h" | "m">; + /** + * 終了ã¾ã§ã‚ã¨{m}分{s}秒 + */ "remainingMinutes": ParameterizedString<"m" | "s">; + /** + * 終了ã¾ã§ã‚ã¨{s}秒 + */ "remainingSeconds": ParameterizedString<"s">; }; "_visibility": { + /** + * パブリック + */ "public": string; + /** + * å…¨ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å…¬é–‹ + */ "publicDescription": string; + /** + * ホーム+ */ "home": string; + /** + * ホームタイムラインã®ã¿ã«å…¬é–‹ + */ "homeDescription": string; + /** + * フォãƒãƒ¯ãƒ¼ + */ "followers": string; + /** + * 自分ã®ãƒ•ã‚©ãƒãƒ¯ãƒ¼ã®ã¿ã«å…¬é–‹ + */ "followersDescription": string; + /** + * ダイレクト + */ "specified": string; + /** + * 指定ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã¿ã«å…¬é–‹ + */ "specifiedDescription": string; + /** + * 連åˆãªã— + */ "disableFederation": string; + /** + * 他サーãƒãƒ¼ã¸ã®é…ä¿¡ã‚’è¡Œã„ã¾ã›ã‚“ + */ "disableFederationDescription": string; }; "_postForm": { + /** + * ã“ã®ãƒŽãƒ¼ãƒˆã«è¿”ä¿¡... + */ "replyPlaceholder": string; + /** + * ã“ã®ãƒŽãƒ¼ãƒˆã‚’引用... + */ "quotePlaceholder": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ«ã«æŠ•ç¨¿... + */ "channelPlaceholder": string; "_placeholders": { + /** + * ã„ã¾ã©ã†ã—ã¦ã‚‹ï¼Ÿ + */ "a": string; + /** + * 何ã‹ã‚ã‚Šã¾ã—ãŸã‹ï¼Ÿ + */ "b": string; + /** + * 何をãŠè€ƒãˆã§ã™ã‹ï¼Ÿ + */ "c": string; + /** + * 言ã„ãŸã„ã“ã¨ã¯ï¼Ÿ + */ "d": string; + /** + * ã“ã“ã«æ›¸ã„ã¦ãã ã•ã„ + */ "e": string; + /** + * ã‚ãªãŸãŒæ›¸ãã®ã‚’å¾…ã£ã¦ã„ã¾ã™... + */ "f": string; }; }; "_profile": { + /** + * åå‰ + */ "name": string; + /** + * ユーザーå + */ "username": string; + /** + * 自己紹介 + */ "description": string; + /** + * ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°ã‚’å«ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + */ "youCanIncludeHashtags": string; + /** + * è¿½åŠ æƒ…å ± + */ "metadata": string; + /** + * è¿½åŠ æƒ…å ±ã‚’ç·¨é›† + */ "metadataEdit": string; + /** + * プãƒãƒ•ã‚£ãƒ¼ãƒ«ã«è¡¨ã¨ã—ã¦è¿½åŠ æƒ…å ±ã‚’è¡¨ç¤ºã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + */ "metadataDescription": string; + /** + * ラベル + */ "metadataLabel": string; + /** + * 内容 + */ "metadataContent": string; + /** + * アイコン画åƒã‚’変更 + */ "changeAvatar": string; + /** + * ãƒãƒŠãƒ¼ç”»åƒã‚’変更 + */ "changeBanner": string; + /** + * 内容ã«URLã‚’è¨å®šã™ã‚‹ã¨ã€ãƒªãƒ³ã‚¯å…ˆã®Webサイトã«è‡ªåˆ†ã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ã¸ã®ãƒªãƒ³ã‚¯ãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã«æ‰€æœ‰è€…確èªæ¸ˆã¿ã‚¢ã‚¤ã‚³ãƒ³ã‚’表示ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + */ "verifiedLinkDescription": string; + /** + * 最大{max}ã¤ã¾ã§ãƒ‡ã‚³ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’付ã‘られã¾ã™ã€‚ + */ "avatarDecorationMax": ParameterizedString<"max">; }; "_exportOrImport": { + /** + * å…¨ã¦ã®ãƒŽãƒ¼ãƒˆ + */ "allNotes": string; + /** + * ãŠæ°—ã«å…¥ã‚Šã«ã—ãŸãƒŽãƒ¼ãƒˆ + */ "favoritedNotes": string; + /** + * クリップ + */ "clips": string; + /** + * フォãƒãƒ¼ + */ "followingList": string; + /** + * ミュート + */ "muteList": string; + /** + * ブãƒãƒƒã‚¯ + */ "blockingList": string; + /** + * リスト + */ "userLists": string; + /** + * ミュートã—ã¦ã„るユーザーを除外 + */ "excludeMutingUsers": string; + /** + * 使ã‚ã‚Œã¦ã„ãªã„アカウントを除外 + */ "excludeInactiveUsers": string; + /** + * インãƒãƒ¼ãƒˆã—ãŸäººã«ã‚ˆã‚‹è¿”ä¿¡ã‚’TLã«å«ã‚€ã‚ˆã†ã«ã™ã‚‹ + */ "withReplies": string; }; "_charts": { + /** + * é€£åˆ + */ "federation": string; + /** + * リクエスト + */ "apRequest": string; + /** + * ユーザーã®å¢—減 + */ "usersIncDec": string; + /** + * ユーザーã®åˆè¨ˆ + */ "usersTotal": string; + /** + * アクティブユーザー数 + */ "activeUsers": string; + /** + * ノートã®å¢—減 + */ "notesIncDec": string; + /** + * ãƒãƒ¼ã‚«ãƒ«ã®ãƒŽãƒ¼ãƒˆã®å¢—減 + */ "localNotesIncDec": string; + /** + * リモートã®ãƒŽãƒ¼ãƒˆã®å¢—減 + */ "remoteNotesIncDec": string; + /** + * ノートã®åˆè¨ˆ + */ "notesTotal": string; + /** + * ファイルã®å¢—減 + */ "filesIncDec": string; + /** + * ファイルã®åˆè¨ˆ + */ "filesTotal": string; + /** + * ストレージ使用é‡ã®å¢—減 + */ "storageUsageIncDec": string; + /** + * ストレージ使用é‡ã®åˆè¨ˆ + */ "storageUsageTotal": string; }; "_instanceCharts": { + /** + * リクエスト + */ "requests": string; + /** + * ユーザーã®å¢—減 + */ "users": string; + /** + * ユーザーã®ç´¯ç© + */ "usersTotal": string; + /** + * ノートã®å¢—減 + */ "notes": string; + /** + * ノートã®ç´¯ç© + */ "notesTotal": string; + /** + * フォãƒãƒ¼/フォãƒãƒ¯ãƒ¼ã®å¢—減 + */ "ff": string; + /** + * フォãƒãƒ¼/フォãƒãƒ¯ãƒ¼ã®ç´¯ç© + */ "ffTotal": string; + /** + * ã‚ャッシュサイズã®å¢—減 + */ "cacheSize": string; + /** + * ã‚ャッシュサイズã®ç´¯ç© + */ "cacheSizeTotal": string; + /** + * ファイル数ã®å¢—減 + */ "files": string; + /** + * ファイル数ã®ç´¯ç© + */ "filesTotal": string; }; "_timelines": { + /** + * ホーム+ */ "home": string; + /** + * ãƒãƒ¼ã‚«ãƒ« + */ "local": string; + /** + * ソーシャル + */ "social": string; + /** + * ã‚°ãƒãƒ¼ãƒãƒ« + */ "global": string; }; "_play": { + /** + * Playã®ä½œæˆ + */ "new": string; + /** + * Playã®ç·¨é›† + */ "edit": string; + /** + * Playを作æˆã—ã¾ã—㟠+ */ "created": string; + /** + * Playã‚’æ›´æ–°ã—ã¾ã—㟠+ */ "updated": string; + /** + * Playを削除ã—ã¾ã—㟠+ */ "deleted": string; + /** + * Playè¨å®š + */ "pageSetting": string; + /** + * ã“ã®Playを編集 + */ "editThisPage": string; + /** + * ソースを表示 + */ "viewSource": string; + /** + * 自分ã®Play + */ "my": string; + /** + * ã„ã„ãã—ãŸPlay + */ "liked": string; + /** + * 人気 + */ "featured": string; + /** + * タイトル + */ "title": string; + /** + * スクリプト + */ "script": string; + /** + * 説明 + */ "summary": string; }; "_pages": { + /** + * ページã®ä½œæˆ + */ "newPage": string; + /** + * ページã®ç·¨é›† + */ "editPage": string; + /** + * ã‚½ãƒ¼ã‚¹ã‚’è¡¨ç¤ºä¸ + */ "readPage": string; + /** + * ページを作æˆã—ã¾ã—㟠+ */ "created": string; + /** + * ページを更新ã—ã¾ã—㟠+ */ "updated": string; + /** + * ページを削除ã—ã¾ã—㟠+ */ "deleted": string; + /** + * ページè¨å®š + */ "pageSetting": string; + /** + * 指定ã•ã‚ŒãŸãƒšãƒ¼ã‚¸URLã¯æ—¢ã«å˜åœ¨ã—ã¦ã„ã¾ã™ + */ "nameAlreadyExists": string; + /** + * ä¸æ£ãªãƒšãƒ¼ã‚¸URLã§ã™ + */ "invalidNameTitle": string; + /** + * 空白ã§ãªã„ã‹ç¢ºèªã—ã¦ãã ã•ã„ + */ "invalidNameText": string; + /** + * ã“ã®ãƒšãƒ¼ã‚¸ã‚’編集 + */ "editThisPage": string; + /** + * ソースを表示 + */ "viewSource": string; + /** + * ページを見る + */ "viewPage": string; + /** + * ã„ã„ã + */ "like": string; + /** + * ã„ã„ã解除 + */ "unlike": string; + /** + * 自分ã®ãƒšãƒ¼ã‚¸ + */ "my": string; + /** + * ã„ã„ãã—ãŸãƒšãƒ¼ã‚¸ + */ "liked": string; + /** + * 人気 + */ "featured": string; + /** + * インスペクター + */ "inspector": string; + /** + * コンテンツ + */ "contents": string; + /** + * ページブãƒãƒƒã‚¯ + */ "content": string; + /** + * 変数 + */ "variables": string; + /** + * タイトル + */ "title": string; + /** + * ページURL + */ "url": string; + /** + * ページã®è¦ç´„ + */ "summary": string; + /** + * ä¸å¤®å¯„ã› + */ "alignCenter": string; + /** + * ピン留ã‚ã•ã‚Œã¦ã„ã‚‹ã¨ãã«ã‚¿ã‚¤ãƒˆãƒ«ã‚’éžè¡¨ç¤º + */ "hideTitleWhenPinned": string; + /** + * フォント + */ "font": string; + /** + * セリフ + */ "fontSerif": string; + /** + * サンセリフ + */ "fontSansSerif": string; + /** + * アイã‚ャッãƒç”»åƒã‚’è¨å®š + */ "eyeCatchingImageSet": string; + /** + * アイã‚ャッãƒç”»åƒã‚’削除 + */ "eyeCatchingImageRemove": string; + /** + * ブãƒãƒƒã‚¯ã‚’è¿½åŠ + */ "chooseBlock": string; + /** + * 種類をé¸æŠž + */ "selectType": string; + /** + * コンテンツ + */ "contentBlocks": string; + /** + * 入力 + */ "inputBlocks": string; + /** + * 特殊 + */ "specialBlocks": string; "blocks": { + /** + * テã‚スト + */ "text": string; + /** + * テã‚ストエリア + */ "textarea": string; + /** + * セクション + */ "section": string; + /** + * ç”»åƒ + */ "image": string; + /** + * ボタン + */ "button": string; + /** + * ノート埋ã‚込㿠+ */ "note": string; "_note": { + /** + * ノートID + */ "id": string; + /** + * ノートURLをペーストã—ã¦è¨å®šã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ + */ "idDescription": string; + /** + * 詳細ãªè¡¨ç¤º + */ "detailed": string; }; }; }; "_relayStatus": { + /** + * 承èªå¾…ã¡ + */ "requesting": string; + /** + * 承èªæ¸ˆã¿ + */ "accepted": string; + /** + * æ‹’å¦æ¸ˆã¿ + */ "rejected": string; }; "_notification": { + /** + * ファイルãŒã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•ã‚Œã¾ã—㟠+ */ "fileUploaded": string; + /** + * {name}ã‹ã‚‰ã®ãƒ¡ãƒ³ã‚·ãƒ§ãƒ³ + */ "youGotMention": ParameterizedString<"name">; + /** + * {name}ã‹ã‚‰ã®ãƒªãƒ—ライ + */ "youGotReply": ParameterizedString<"name">; + /** + * {name}ã«ã‚ˆã‚‹å¼•ç”¨ + */ "youGotQuote": ParameterizedString<"name">; + /** + * {name}ãŒRenoteã—ã¾ã—㟠+ */ "youRenoted": ParameterizedString<"name">; + /** + * フォãƒãƒ¼ã•ã‚Œã¾ã—㟠+ */ "youWereFollowed": string; + /** + * フォãƒãƒ¼ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒæ¥ã¾ã—㟠+ */ "youReceivedFollowRequest": string; + /** + * フォãƒãƒ¼ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒæ‰¿èªã•ã‚Œã¾ã—㟠+ */ "yourFollowRequestAccepted": string; + /** + * アンケートã®çµæžœãŒå‡ºã¾ã—㟠+ */ "pollEnded": string; + /** + * æ–°ã—ã„投稿 + */ "newNote": string; + /** + * アンテナ {name} + */ "unreadAntennaNote": ParameterizedString<"name">; + /** + * ãƒãƒ¼ãƒ«ãŒä»˜ä¸Žã•ã‚Œã¾ã—㟠+ */ "roleAssigned": string; + /** + * プッシュ通知ã®æ›´æ–°ã‚’ã—ã¾ã—㟠+ */ "emptyPushNotificationMessage": string; + /** + * 実績をç²å¾— + */ "achievementEarned": string; + /** + * 通知テスト + */ "testNotification": string; + /** + * 通知ã®è¡¨ç¤ºã‚’確ã‹ã‚ã‚‹ + */ "checkNotificationBehavior": string; + /** + * テスト通知をé€ä¿¡ã™ã‚‹ + */ "sendTestNotification": string; + /** + * 通知ã¯ã“ã®ã‚ˆã†ã«è¡¨ç¤ºã•ã‚Œã¾ã™ + */ "notificationWillBeDisplayedLikeThis": string; + /** + * {n}人ãŒãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã—ã¾ã—㟠+ */ "reactedBySomeUsers": ParameterizedString<"n">; + /** + * {n}人ãŒãƒªãƒŽãƒ¼ãƒˆã—ã¾ã—㟠+ */ "renotedBySomeUsers": ParameterizedString<"n">; + /** + * {n}人ã«ãƒ•ã‚©ãƒãƒ¼ã•ã‚Œã¾ã—㟠+ */ "followedBySomeUsers": ParameterizedString<"n">; "_types": { + /** + * ã™ã¹ã¦ + */ "all": string; + /** + * ユーザーã®æ–°è¦æŠ•ç¨¿ + */ "note": string; + /** + * フォãƒãƒ¼ + */ "follow": string; + /** + * メンション + */ "mention": string; + /** + * リプライ + */ "reply": string; + /** + * Renote + */ "renote": string; + /** + * 引用 + */ "quote": string; + /** + * リアクション + */ "reaction": string; + /** + * アンケートãŒçµ‚了 + */ "pollEnded": string; + /** + * フォãƒãƒ¼ç”³è«‹ã‚’å—ã‘å–ã£ãŸ + */ "receiveFollowRequest": string; + /** + * フォãƒãƒ¼ãŒå—ç†ã•ã‚ŒãŸ + */ "followRequestAccepted": string; + /** + * ãƒãƒ¼ãƒ«ãŒä»˜ä¸Žã•ã‚ŒãŸ + */ "roleAssigned": string; + /** + * 実績ã®ç²å¾— + */ "achievementEarned": string; + /** + * 連æºã‚¢ãƒ—リã‹ã‚‰ã®é€šçŸ¥ + */ "app": string; }; "_actions": { + /** + * フォãƒãƒ¼ãƒãƒƒã‚¯ + */ "followBack": string; + /** + * 返信 + */ "reply": string; + /** + * Renote + */ "renote": string; }; }; "_deck": { + /** + * 常ã«ãƒ¡ã‚¤ãƒ³ã‚«ãƒ©ãƒ を表示 + */ "alwaysShowMainColumn": string; + /** + * カラムã®å¯„ã› + */ "columnAlign": string; + /** + * ã‚«ãƒ©ãƒ ã‚’è¿½åŠ + */ "addColumn": string; + /** + * カラムã®è¨å®š + */ "configureColumn": string; + /** + * å·¦ã«ç§»å‹• + */ "swapLeft": string; + /** + * å³ã«ç§»å‹• + */ "swapRight": string; + /** + * 上ã«ç§»å‹• + */ "swapUp": string; + /** + * 下ã«ç§»å‹• + */ "swapDown": string; + /** + * å·¦ã«ã‚¹ã‚¿ãƒƒã‚¯ + */ "stackLeft": string; + /** + * å³ã«å‡ºã™ + */ "popRight": string; + /** + * プãƒãƒ•ã‚¡ã‚¤ãƒ« + */ "profile": string; + /** + * æ–°è¦ãƒ—ãƒãƒ•ã‚¡ã‚¤ãƒ« + */ "newProfile": string; + /** + * プãƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除 + */ "deleteProfile": string; + /** + * カラムを組ã¿åˆã‚ã›ã¦è‡ªåˆ†ã ã‘ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’作りã¾ã—ょã†ï¼ + */ "introduction": string; + /** + * ç”»é¢ã®å³ã«ã‚ã‚‹ + を押ã—ã¦ã€ã„ã¤ã§ã‚‚ã‚«ãƒ©ãƒ ã‚’è¿½åŠ ã§ãã¾ã™ã€‚ + */ "introduction2": string; + /** + * カラムã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰ã€ã€Œã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã®ç·¨é›†ã€ã‚’é¸æŠžã—ã¦ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã‚’è¿½åŠ ã—ã¦ãã ã•ã„ + */ "widgetsIntroduction": string; + /** + * éžãƒ«ãƒ¼ãƒˆãƒšãƒ¼ã‚¸ã¯ç°¡æ˜“UIã§è¡¨ç¤º + */ "useSimpleUiForNonRootPages": string; + /** + * 「幅を自動調整ã€ãŒæœ‰åŠ¹ã®å ´åˆã€ã“ã‚ŒãŒå¹…ã®æœ€å°å€¤ã¨ãªã‚Šã¾ã™ + */ "usedAsMinWidthWhenFlexible": string; + /** + * 幅を自動調整 + */ "flexible": string; "_columns": { + /** + * メイン + */ "main": string; + /** + * ウィジェット + */ "widgets": string; + /** + * 通知 + */ "notifications": string; + /** + * タイムライン + */ "tl": string; + /** + * アンテナ + */ "antenna": string; + /** + * リスト + */ "list": string; + /** + * ãƒãƒ£ãƒ³ãƒãƒ« + */ "channel": string; + /** + * ã‚ãªãŸå®›ã¦ + */ "mentions": string; + /** + * ダイレクト + */ "direct": string; + /** + * ãƒãƒ¼ãƒ«ã‚¿ã‚¤ãƒ ライン + */ "roleTimeline": string; }; }; "_dialog": { + /** + * 最大文å—数を超ãˆã¦ã„ã¾ã™ï¼ ç¾åœ¨ {current} / åˆ¶é™ {max} + */ "charactersExceeded": ParameterizedString<"current" | "max">; + /** + * 最å°æ–‡å—数を下回ã£ã¦ã„ã¾ã™ï¼ ç¾åœ¨ {current} / åˆ¶é™ {min} + */ "charactersBelow": ParameterizedString<"current" | "min">; }; "_disabledTimeline": { + /** + * 無効化ã•ã‚ŒãŸã‚¿ã‚¤ãƒ ライン + */ "title": string; + /** + * ç¾åœ¨ã®ãƒãƒ¼ãƒ«ã§ã¯ã€ã“ã®ã‚¿ã‚¤ãƒ ラインを使用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + */ "description": string; }; "_drivecleaner": { + /** + * サイズãŒå¤§ãã„é † + */ "orderBySizeDesc": string; + /** + * è¿½åŠ æ—¥ãŒå¤ã„é † + */ "orderByCreatedAtAsc": string; }; "_webhookSettings": { + /** + * Webhookã‚’ä½œæˆ + */ "createWebhook": string; + /** + * åå‰ + */ "name": string; + /** + * シークレット + */ "secret": string; + /** + * Webhookを実行ã™ã‚‹ã‚¿ã‚¤ãƒŸãƒ³ã‚° + */ "events": string; + /** + * 有効 + */ "active": string; "_events": { + /** + * フォãƒãƒ¼ã—ãŸã¨ã + */ "follow": string; + /** + * フォãƒãƒ¼ã•ã‚ŒãŸã¨ã + */ "followed": string; + /** + * ノートを投稿ã—ãŸã¨ã + */ "note": string; + /** + * 返信ã•ã‚ŒãŸã¨ã + */ "reply": string; + /** + * Renoteã•ã‚ŒãŸã¨ã + */ "renote": string; + /** + * リアクションãŒã‚ã£ãŸã¨ã + */ "reaction": string; + /** + * メンションã•ã‚ŒãŸã¨ã + */ "mention": string; }; }; "_moderationLogTypes": { + /** + * ãƒãƒ¼ãƒ«ã‚’ä½œæˆ + */ "createRole": string; + /** + * ãƒãƒ¼ãƒ«ã‚’削除 + */ "deleteRole": string; + /** + * ãƒãƒ¼ãƒ«ã‚’æ›´æ–° + */ "updateRole": string; + /** + * ãƒãƒ¼ãƒ«ã¸ã‚¢ã‚µã‚¤ãƒ³ + */ "assignRole": string; + /** + * ãƒãƒ¼ãƒ«ã®ã‚¢ã‚µã‚¤ãƒ³è§£é™¤ + */ "unassignRole": string; + /** + * å‡çµ + */ "suspend": string; + /** + * å‡çµè§£é™¤ + */ "unsuspend": string; + /** + * カスタム絵文å—è¿½åŠ + */ "addCustomEmoji": string; + /** + * カスタム絵文å—æ›´æ–° + */ "updateCustomEmoji": string; + /** + * カスタム絵文å—削除 + */ "deleteCustomEmoji": string; + /** + * サーãƒãƒ¼è¨å®šæ›´æ–° + */ "updateServerSettings": string; + /** + * モデレーションノート更新 + */ "updateUserNote": string; + /** + * ファイルを削除 + */ "deleteDriveFile": string; + /** + * ノートを削除 + */ "deleteNote": string; + /** + * 全体ã®ãŠçŸ¥ã‚‰ã›ã‚’ä½œæˆ + */ "createGlobalAnnouncement": string; + /** + * ユーザーã¸ãŠçŸ¥ã‚‰ã›ã‚’ä½œæˆ + */ "createUserAnnouncement": string; + /** + * 全体ã®ãŠçŸ¥ã‚‰ã›ã‚’æ›´æ–° + */ "updateGlobalAnnouncement": string; + /** + * ユーザーã®ãŠçŸ¥ã‚‰ã›ã‚’æ›´æ–° + */ "updateUserAnnouncement": string; + /** + * 全体ã®ãŠçŸ¥ã‚‰ã›ã‚’削除 + */ "deleteGlobalAnnouncement": string; + /** + * ユーザーã®ãŠçŸ¥ã‚‰ã›ã‚’削除 + */ "deleteUserAnnouncement": string; + /** + * パスワードをリセット + */ "resetPassword": string; + /** + * リモートサーãƒãƒ¼ã‚’åœæ¢ + */ "suspendRemoteInstance": string; + /** + * リモートサーãƒãƒ¼ã‚’å†é–‹ + */ "unsuspendRemoteInstance": string; + /** + * ファイルをセンシティブ付与 + */ "markSensitiveDriveFile": string; + /** + * ファイルをセンシティブ解除 + */ "unmarkSensitiveDriveFile": string; + /** + * é€šå ±ã‚’è§£æ±º + */ "resolveAbuseReport": string; + /** + * æ‹›å¾…ã‚³ãƒ¼ãƒ‰ã‚’ä½œæˆ + */ "createInvitation": string; + /** + * åºƒå‘Šã‚’ä½œæˆ + */ "createAd": string; + /** + * 広告を削除 + */ "deleteAd": string; + /** + * 広告を更新 + */ "updateAd": string; + /** + * ã‚¢ã‚¤ã‚³ãƒ³ãƒ‡ã‚³ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ä½œæˆ + */ "createAvatarDecoration": string; + /** + * アイコンデコレーションを更新 + */ "updateAvatarDecoration": string; + /** + * アイコンデコレーションを削除 + */ "deleteAvatarDecoration": string; + /** + * ユーザーã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’解除 + */ "unsetUserAvatar": string; + /** + * ユーザーã®ãƒãƒŠãƒ¼ã‚’解除 + */ "unsetUserBanner": string; }; "_fileViewer": { + /** + * ファイルã®è©³ç´° + */ "title": string; + /** + * ファイルタイプ + */ "type": string; + /** + * ファイルサイズ + */ "size": string; + /** + * URL + */ "url": string; + /** + * è¿½åŠ æ—¥ + */ "uploadedAt": string; + /** + * 添付ã•ã‚Œã¦ã„るノート + */ "attachedNotes": string; + /** + * ã“ã®ãƒšãƒ¼ã‚¸ã¯ã€ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップãƒãƒ¼ãƒ‰ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã—ã‹é–²è¦§ã§ãã¾ã›ã‚“。 + */ "thisPageCanBeSeenFromTheAuthor": string; }; "_externalResourceInstaller": { + /** + * 外部サイトã‹ã‚‰ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ« + */ "title": string; + /** + * é…布元ãŒä¿¡é ¼ã§ãã‚‹ã‹ã‚’確èªã—ãŸä¸Šã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã ã•ã„。 + */ "checkVendorBeforeInstall": string; "_plugin": { + /** + * ã“ã®ãƒ—ラグインをインストールã—ã¾ã™ã‹ï¼Ÿ + */ "title": string; + /** + * ãƒ—ãƒ©ã‚°ã‚¤ãƒ³æƒ…å ± + */ "metaTitle": string; }; "_theme": { + /** + * ã“ã®ãƒ†ãƒ¼ãƒžã‚’インストールã—ã¾ã™ã‹ï¼Ÿ + */ "title": string; + /** + * ãƒ†ãƒ¼ãƒžæƒ…å ± + */ "metaTitle": string; }; "_meta": { + /** + * 基本ã®ã‚«ãƒ©ãƒ¼ã‚¹ã‚ーム+ */ "base": string; }; "_vendorInfo": { + /** + * é…å¸ƒå…ƒæƒ…å ± + */ "title": string; + /** + * å‚ç…§ã—ãŸã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆ + */ "endpoint": string; + /** + * ファイル整åˆæ€§ã®ç¢ºèª + */ "hashVerify": string; }; "_errors": { "_invalidParams": { + /** + * パラメータãŒä¸è¶³ã—ã¦ã„ã¾ã™ + */ "title": string; + /** + * 外部サイトã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã™ã‚‹ãŸã‚ã«å¿…è¦ãªæƒ…å ±ãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚URLã‚’ãŠç¢ºã‹ã‚ãã ã•ã„。 + */ "description": string; }; "_resourceTypeNotSupported": { + /** + * ã“ã®å¤–部リソースã«ã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“ + */ "title": string; + /** + * ã“ã®å¤–部サイトã‹ã‚‰å–å¾—ã—ãŸãƒªã‚½ãƒ¼ã‚¹ã®ç¨®åˆ¥ã«ã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。サイト管ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 + */ "description": string; }; "_failedToFetch": { + /** + * データã®å–å¾—ã«å¤±æ•—ã—ã¾ã—㟠+ */ "title": string; + /** + * 外部サイトã¨ã®é€šä¿¡ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ã‚‚改善ã—ãªã„å ´åˆã€ã‚µã‚¤ãƒˆç®¡ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 + */ "fetchErrorDescription": string; + /** + * 外部サイトã‹ã‚‰å–å¾—ã—ãŸãƒ‡ãƒ¼ã‚¿ãŒèªã¿å–ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚サイト管ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 + */ "parseErrorDescription": string; }; "_hashUnmatched": { + /** + * æ£ã—ã„データãŒå–å¾—ã§ãã¾ã›ã‚“ã§ã—㟠+ */ "title": string; + /** + * æä¾›ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ã®æ•´åˆæ€§ã®ç¢ºèªã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã‚»ã‚ュリティ上ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯ç¶šè¡Œã§ãã¾ã›ã‚“。サイト管ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 + */ "description": string; }; "_pluginParseFailed": { + /** + * AiScript エラー + */ "title": string; + /** + * データã¯å–å¾—ã§ããŸã‚‚ã®ã®ã€AiScriptã®è§£æžæ™‚ã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã£ãŸãŸã‚èªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚プラグインã®ä½œè€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。エラーã®è©³ç´°ã¯Javascriptコンソールをã”確èªãã ã•ã„。 + */ "description": string; }; "_pluginInstallFailed": { + /** + * プラグインã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«å¤±æ•—ã—ã¾ã—㟠+ */ "title": string; + /** + * プラグインã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä¸ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。エラーã®è©³ç´°ã¯Javascriptコンソールをã”覧ãã ã•ã„。 + */ "description": string; }; "_themeParseFailed": { + /** + * テーマ解æžã‚¨ãƒ©ãƒ¼ + */ "title": string; + /** + * データã¯å–å¾—ã§ããŸã‚‚ã®ã®ã€ãƒ†ãƒ¼ãƒžãƒ•ã‚¡ã‚¤ãƒ«ã®è§£æžæ™‚ã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã£ãŸãŸã‚èªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚テーマã®ä½œè€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。エラーã®è©³ç´°ã¯Javascriptコンソールをã”確èªãã ã•ã„。 + */ "description": string; }; "_themeInstallFailed": { + /** + * テーマã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«å¤±æ•—ã—ã¾ã—㟠+ */ "title": string; + /** + * テーマã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä¸ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。エラーã®è©³ç´°ã¯Javascriptコンソールをã”覧ãã ã•ã„。 + */ "description": string; }; }; }; "_dataSaver": { "_media": { + /** + * メディアã®èªã¿è¾¼ã¿ + */ "title": string; + /** + * ç”»åƒãƒ»å‹•ç”»ãŒè‡ªå‹•ã§èªã¿è¾¼ã¾ã‚Œã‚‹ã®ã‚’防æ¢ã—ã¾ã™ã€‚éš ã‚Œã¦ã„ã‚‹ç”»åƒãƒ»å‹•ç”»ã¯ã‚¿ãƒƒãƒ—ã™ã‚‹ã¨èªã¿è¾¼ã¾ã‚Œã¾ã™ã€‚ + */ "description": string; }; "_avatar": { + /** + * ã‚¢ã‚¤ã‚³ãƒ³ç”»åƒ + */ "title": string; + /** + * アイコン画åƒã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãŒåœæ¢ã—ã¾ã™ã€‚アニメーション画åƒã¯é€šå¸¸ã®ç”»åƒã‚ˆã‚Šãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºãŒå¤§ãã„ã“ã¨ãŒã‚ã‚‹ã®ã§ã€ãƒ‡ãƒ¼ã‚¿é€šä¿¡é‡ã‚’ã•ã‚‰ã«å‰Šæ¸›ã§ãã¾ã™ã€‚ + */ "description": string; }; "_urlPreview": { + /** + * URLプレビューã®ã‚µãƒ ãƒã‚¤ãƒ« + */ "title": string; + /** + * URLプレビューã®ã‚µãƒ ãƒã‚¤ãƒ«ç”»åƒãŒèªã¿è¾¼ã¾ã‚Œãªããªã‚Šã¾ã™ã€‚ + */ "description": string; }; "_code": { + /** + * コードãƒã‚¤ãƒ©ã‚¤ãƒˆ + */ "title": string; + /** + * MFMãªã©ã§ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ©ã‚¤ãƒˆè¨˜æ³•ãŒä½¿ã‚ã‚Œã¦ã„ã‚‹å ´åˆã€ã‚¿ãƒƒãƒ—ã™ã‚‹ã¾ã§èªã¿è¾¼ã¾ã‚Œãªããªã‚Šã¾ã™ã€‚コードãƒã‚¤ãƒ©ã‚¤ãƒˆã§ã¯ãƒã‚¤ãƒ©ã‚¤ãƒˆã™ã‚‹è¨€èªžã”ã¨ã«ãã®å®šç¾©ãƒ•ã‚¡ã‚¤ãƒ«ã‚’èªã¿è¾¼ã‚€å¿…è¦ãŒã‚ã‚Šã¾ã™ãŒã€ãれらãŒè‡ªå‹•ã§èªã¿è¾¼ã¾ã‚Œãªããªã‚‹ãŸã‚ã€é€šä¿¡é‡ã®å‰Šæ¸›ãŒè¦‹è¾¼ã‚ã¾ã™ã€‚ + */ "description": string; }; }; "_reversi": { + /** + * リãƒãƒ¼ã‚· + */ "reversi": string; + /** + * 対局ã®è¨å®š + */ "gameSettings": string; + /** + * ボードをé¸æŠž + */ "chooseBoard": string; + /** + * 先行/後攻 + */ "blackOrWhite": string; + /** + * {name}ãŒé»’(先行) + */ "blackIs": ParameterizedString<"name">; + /** + * ルール + */ "rules": string; + /** + * 対局ã¯ã¾ã‚‚ãªã開始ã•ã‚Œã¾ã™ + */ "thisGameIsStartedSoon": string; + /** + * 相手ã®æº–å‚™ãŒå®Œäº†ã™ã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™ + */ "waitingForOther": string; + /** + * ã‚ãªãŸã®æº–å‚™ãŒå®Œäº†ã™ã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™ + */ "waitingForMe": string; + /** + * 準備ã—ã¦ãã ã•ã„ + */ "waitingBoth": string; + /** + * 準備完了 + */ "ready": string; + /** + * 準備をå†é–‹ + */ "cancelReady": string; + /** + * 相手ã®ã‚¿ãƒ¼ãƒ³ã§ã™ + */ "opponentTurn": string; + /** + * ã‚ãªãŸã®ã‚¿ãƒ¼ãƒ³ã§ã™ + */ "myTurn": string; + /** + * {name}ã®ã‚¿ãƒ¼ãƒ³ã§ã™ + */ "turnOf": ParameterizedString<"name">; + /** + * {name}ã®ã‚¿ãƒ¼ãƒ³ + */ "pastTurnOf": ParameterizedString<"name">; + /** + * 投了 + */ "surrender": string; + /** + * 投了ã«ã‚ˆã‚Š + */ "surrendered": string; + /** + * 引ã分㑠+ */ "drawn": string; + /** + * {name}ã®å‹ã¡ + */ "won": ParameterizedString<"name">; + /** + * é»’ + */ "black": string; + /** + * 白 + */ "white": string; + /** + * åˆè¨ˆ + */ "total": string; + /** + * {count}ターン目 + */ "turnCount": ParameterizedString<"count">; + /** + * 自分ã®å¯¾å±€ + */ "myGames": string; + /** + * ã¿ã‚“ãªã®å¯¾å±€ + */ "allGames": string; + /** + * 終了 + */ "ended": string; + /** + * å¯¾å±€ä¸ + */ "playing": string; + /** + * 石ã®å°‘ãªã„æ–¹ãŒå‹ã¡(ãƒã‚»ã‚ª) + */ "isLlotheo": string; + /** + * ループマップ + */ "loopedMap": string; + /** + * ã©ã“ã§ã‚‚ç½®ã‘るモード + */ "canPutEverywhere": string; + /** + * フリーマッム+ */ "freeMatch": string; + /** + * 対戦相手を探ã—ã¦ã„ã¾ã™ + */ "lookingForPlayer": string; }; } diff --git a/packages/frontend/src/boot/main-boot.ts b/packages/frontend/src/boot/main-boot.ts index bdb145b39aa641a65002c35e3fe6349e069d1214..c99118f9b23c84b1c5226b10f198f994beac9ebc 100644 --- a/packages/frontend/src/boot/main-boot.ts +++ b/packages/frontend/src/boot/main-boot.ts @@ -205,7 +205,7 @@ export async function mainBoot() { const lastUsedDate = parseInt(lastUsed, 10); // 二時間以上å‰ãªã‚‰ if (Date.now() - lastUsedDate > 1000 * 60 * 60 * 2) { - toast(i18n.t('welcomeBackWithName', { + toast(i18n.tsx.welcomeBackWithName({ name: $i.name || $i.username, })); } diff --git a/packages/frontend/src/components/MkAnnouncementDialog.vue b/packages/frontend/src/components/MkAnnouncementDialog.vue index c649e69cd0bb9bf1c0d82953f5f930ad4c89e014..54cbbe18c23f9b98419db2a7e18bd24beb9d5b07 100644 --- a/packages/frontend/src/components/MkAnnouncementDialog.vue +++ b/packages/frontend/src/components/MkAnnouncementDialog.vue @@ -44,7 +44,7 @@ async function ok() { const confirm = await os.confirm({ type: 'question', title: i18n.ts._announcement.readConfirmTitle, - text: i18n.t('_announcement.readConfirmText', { title: props.announcement.title }), + text: i18n.tsx._announcement.readConfirmText({ title: props.announcement.title }), }); if (confirm.canceled) return; } diff --git a/packages/frontend/src/components/MkCwButton.vue b/packages/frontend/src/components/MkCwButton.vue index 4a6d2dfba240ab64e44dff7b160afefaf6d97d47..ca19a2122d939d23f8a83780af205f3feb3c413f 100644 --- a/packages/frontend/src/components/MkCwButton.vue +++ b/packages/frontend/src/components/MkCwButton.vue @@ -41,9 +41,9 @@ const emit = defineEmits<{ const label = computed(() => { return concat([ - props.text ? [i18n.t('_cw.chars', { count: props.text.length })] : [], + props.text ? [i18n.tsx._cw.chars({ count: props.text.length })] : [], props.renote ? [i18n.ts.quote] : [], - props.files.length !== 0 ? [i18n.t('_cw.files', { count: props.files.length })] : [], + props.files.length !== 0 ? [i18n.tsx._cw.files({ count: props.files.length })] : [], props.poll != null ? [i18n.ts.poll] : [], ] as string[][]).join(' / '); }); diff --git a/packages/frontend/src/components/MkDateSeparatedList.vue b/packages/frontend/src/components/MkDateSeparatedList.vue index 0a71b689fed81a70ec7676342dcd81d07d7fc0ed..7b9a0528689848e6483308a05d7e5b9cae1182aa 100644 --- a/packages/frontend/src/components/MkDateSeparatedList.vue +++ b/packages/frontend/src/components/MkDateSeparatedList.vue @@ -46,7 +46,7 @@ export default defineComponent({ function getDateText(time: string) { const date = new Date(time).getDate(); const month = new Date(time).getMonth() + 1; - return i18n.t('monthAndDay', { + return i18n.tsx.monthAndDay({ month: month.toString(), day: date.toString(), }); diff --git a/packages/frontend/src/components/MkDialog.vue b/packages/frontend/src/components/MkDialog.vue index 3c1f83d33558904925c30ded3ae572d7a5903779..3fc9f0e3577bba497c47eb971c771c1ef7d51b31 100644 --- a/packages/frontend/src/components/MkDialog.vue +++ b/packages/frontend/src/components/MkDialog.vue @@ -30,8 +30,8 @@ SPDX-License-Identifier: AGPL-3.0-only <MkInput v-if="input" v-model="inputValue" autofocus :type="input.type || 'text'" :placeholder="input.placeholder || undefined" :autocomplete="input.autocomplete" @keydown="onInputKeydown"> <template v-if="input.type === 'password'" #prefix><i class="ti ti-lock"></i></template> <template #caption> - <span v-if="okButtonDisabledReason === 'charactersExceeded'" v-text="i18n.t('_dialog.charactersExceeded', { current: (inputValue as string).length, max: input.maxLength ?? 'NaN' })"/> - <span v-else-if="okButtonDisabledReason === 'charactersBelow'" v-text="i18n.t('_dialog.charactersBelow', { current: (inputValue as string).length, min: input.minLength ?? 'NaN' })"/> + <span v-if="okButtonDisabledReason === 'charactersExceeded'" v-text="i18n.tsx._dialog.charactersExceeded({ current: (inputValue as string).length, max: input.maxLength ?? 'NaN' })"/> + <span v-else-if="okButtonDisabledReason === 'charactersBelow'" v-text="i18n.tsx._dialog.charactersBelow({ current: (inputValue as string).length, min: input.minLength ?? 'NaN' })"/> </template> </MkInput> <MkSelect v-if="select" v-model="selectedValue" autofocus> diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue index dbf98cd62282a72c552fb5edc120a785394ad35d..560d5502d4e1842fef2cd34a83df1895fc8ada20 100644 --- a/packages/frontend/src/components/MkDrive.vue +++ b/packages/frontend/src/components/MkDrive.vue @@ -82,8 +82,8 @@ SPDX-License-Identifier: AGPL-3.0-only <MkButton v-show="moreFiles" ref="loadMoreFiles" @click="fetchMoreFiles">{{ i18n.ts.loadMore }}</MkButton> </div> <div v-if="files.length == 0 && folders.length == 0 && !fetching" :class="$style.empty"> - <div v-if="draghover">{{ i18n.t('empty-draghover') }}</div> - <div v-if="!draghover && folder == null"><strong>{{ i18n.ts.emptyDrive }}</strong><br/>{{ i18n.t('empty-drive-description') }}</div> + <div v-if="draghover">{{ i18n.ts['empty-draghover'] }}</div> + <div v-if="!draghover && folder == null"><strong>{{ i18n.ts.emptyDrive }}</strong><br/>{{ i18n.ts['empty-drive-description'] }}</div> <div v-if="!draghover && folder != null">{{ i18n.ts.emptyFolder }}</div> </div> </div> diff --git a/packages/frontend/src/components/MkFollowButton.vue b/packages/frontend/src/components/MkFollowButton.vue index 78c4fb3cd27ac396fe4c200f2eaa5c19cc223c2f..6bc96be1b9a18f7053142b1f83c639da0d31748e 100644 --- a/packages/frontend/src/components/MkFollowButton.vue +++ b/packages/frontend/src/components/MkFollowButton.vue @@ -84,7 +84,7 @@ async function onClick() { if (isFollowing.value) { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('unfollowConfirm', { name: props.user.name || props.user.username }), + text: i18n.tsx.unfollowConfirm({ name: props.user.name || props.user.username }), }); if (canceled) return; diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 9c4354ef5f172f7597d0ef20007beb48c854cc25..d7bb64661bf569643cedce0cc4d9c72af8cd3156 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -73,7 +73,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div v-if="translating || translation" :class="$style.translation"> <MkLoading v-if="translating" mini/> <div v-else> - <b>{{ i18n.t('translatedFrom', { x: translation.sourceLang }) }}: </b> + <b>{{ i18n.tsx.translatedFrom({ x: translation.sourceLang }) }}: </b> <Mfm :text="translation.text" :author="appearNote.user" :nyaize="'respect'" :emojiUrls="appearNote.emojis"/> </div> </div> diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index e941827d74256a3db4ae3e7f2456e3236b6201e8..1f5b283cfe39a7bbc40fb475f8ca74d9ecbce25c 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -87,7 +87,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div v-if="translating || translation" :class="$style.translation"> <MkLoading v-if="translating" mini/> <div v-else> - <b>{{ i18n.t('translatedFrom', { x: translation.sourceLang }) }}: </b> + <b>{{ i18n.tsx.translatedFrom({ x: translation.sourceLang }) }}: </b> <Mfm :text="translation.text" :author="appearNote.user" :nyaize="'respect'" :emojiUrls="appearNote.emojis"/> </div> </div> diff --git a/packages/frontend/src/components/MkNotification.vue b/packages/frontend/src/components/MkNotification.vue index ce8b054b3957f6359677f9485a233cfe35043439..92be20c6f639cfb50ddb4ebc864ef06039809ec7 100644 --- a/packages/frontend/src/components/MkNotification.vue +++ b/packages/frontend/src/components/MkNotification.vue @@ -56,8 +56,8 @@ SPDX-License-Identifier: AGPL-3.0-only <span v-else-if="notification.type === 'achievementEarned'">{{ i18n.ts._notification.achievementEarned }}</span> <span v-else-if="notification.type === 'test'">{{ i18n.ts._notification.testNotification }}</span> <MkA v-else-if="notification.user" v-user-preview="notification.user.id" :class="$style.headerName" :to="userPage(notification.user)"><MkUserName :user="notification.user"/></MkA> - <span v-else-if="notification.type === 'reaction:grouped'">{{ i18n.t('_notification.reactedBySomeUsers', { n: notification.reactions.length }) }}</span> - <span v-else-if="notification.type === 'renote:grouped'">{{ i18n.t('_notification.renotedBySomeUsers', { n: notification.users.length }) }}</span> + <span v-else-if="notification.type === 'reaction:grouped'">{{ i18n.tsx._notification.reactedBySomeUsers({ n: notification.reactions.length }) }}</span> + <span v-else-if="notification.type === 'renote:grouped'">{{ i18n.tsx._notification.renotedBySomeUsers({ n: notification.users.length }) }}</span> <span v-else>{{ notification.header }}</span> <MkTime v-if="withTime" :time="notification.createdAt" :class="$style.headerTime"/> </header> diff --git a/packages/frontend/src/components/MkNotificationSelectWindow.vue b/packages/frontend/src/components/MkNotificationSelectWindow.vue index 6725776f43c8d27ac7f54e378da5a22075c19c1d..0e77d2a6aa6f273e670a4be0e64f9a5d2d0f226c 100644 --- a/packages/frontend/src/components/MkNotificationSelectWindow.vue +++ b/packages/frontend/src/components/MkNotificationSelectWindow.vue @@ -23,7 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkButton inline @click="disableAll">{{ i18n.ts.disableAll }}</MkButton> <MkButton inline @click="enableAll">{{ i18n.ts.enableAll }}</MkButton> </div> - <MkSwitch v-for="ntype in notificationTypes" :key="ntype" v-model="typesMap[ntype].value">{{ i18n.t(`_notification._types.${ntype}`) }}</MkSwitch> + <MkSwitch v-for="ntype in notificationTypes" :key="ntype" v-model="typesMap[ntype].value">{{ i18n.ts._notification._types[ntype] }}</MkSwitch> </div> </MkSpacer> </MkModalWindow> diff --git a/packages/frontend/src/components/MkPoll.vue b/packages/frontend/src/components/MkPoll.vue index 4cac1fe9c30e27ffa67172da3f54b824e93451c6..7c58b586975d40435f2265790528821f02ee8f99 100644 --- a/packages/frontend/src/components/MkPoll.vue +++ b/packages/frontend/src/components/MkPoll.vue @@ -11,12 +11,12 @@ SPDX-License-Identifier: AGPL-3.0-only <span :class="$style.fg"> <template v-if="choice.isVoted"><i class="ti ti-check" style="margin-right: 4px; color: var(--accent);"></i></template> <Mfm :text="choice.text" :plain="true"/> - <span v-if="showResult" style="margin-left: 4px; opacity: 0.7;">({{ i18n.t('_poll.votesCount', { n: choice.votes }) }})</span> + <span v-if="showResult" style="margin-left: 4px; opacity: 0.7;">({{ i18n.tsx._poll.votesCount({ n: choice.votes }) }})</span> </span> </li> </ul> <p v-if="!readOnly" :class="$style.info"> - <span>{{ i18n.t('_poll.totalVotes', { n: total }) }}</span> + <span>{{ i18n.tsx._poll.totalVotes({ n: total }) }}</span> <span> · </span> <a v-if="!closed && !isVoted" style="color: inherit;" @click="showResult = !showResult">{{ showResult ? i18n.ts._poll.vote : i18n.ts._poll.showResult }}</a> <span v-if="isVoted">{{ i18n.ts._poll.voted }}</span> @@ -47,10 +47,11 @@ const remaining = ref(-1); const total = computed(() => sum(props.note.poll.choices.map(x => x.votes))); const closed = computed(() => remaining.value === 0); const isVoted = computed(() => !props.note.poll.multiple && props.note.poll.choices.some(c => c.isVoted)); -const timer = computed(() => i18n.t( - remaining.value >= 86400 ? '_poll.remainingDays' : - remaining.value >= 3600 ? '_poll.remainingHours' : - remaining.value >= 60 ? '_poll.remainingMinutes' : '_poll.remainingSeconds', { +const timer = computed(() => i18n.tsx._poll[ + remaining.value >= 86400 ? 'remainingDays' : + remaining.value >= 3600 ? 'remainingHours' : + remaining.value >= 60 ? 'remainingMinutes' : 'remainingSeconds' + ]({ s: Math.floor(remaining.value % 60), m: Math.floor(remaining.value / 60) % 60, h: Math.floor(remaining.value / 3600) % 24, @@ -81,7 +82,7 @@ const vote = async (id) => { const { canceled } = await os.confirm({ type: 'question', - text: i18n.t('voteConfirm', { choice: props.note.poll.choices[id].text }), + text: i18n.tsx.voteConfirm({ choice: props.note.poll.choices[id].text }), }); if (canceled) return; diff --git a/packages/frontend/src/components/MkPollEditor.vue b/packages/frontend/src/components/MkPollEditor.vue index 43e576d1ab28c28ef382e5449f51e5a408e3a20f..34f6c72b6e8b6945b1a24d96104bb1c9b652801a 100644 --- a/packages/frontend/src/components/MkPollEditor.vue +++ b/packages/frontend/src/components/MkPollEditor.vue @@ -10,7 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only </p> <ul> <li v-for="(choice, i) in choices" :key="i"> - <MkInput class="input" small :modelValue="choice" :placeholder="i18n.t('_poll.choiceN', { n: i + 1 })" @update:modelValue="onInput(i, $event)"> + <MkInput class="input" small :modelValue="choice" :placeholder="i18n.tsx._poll.choiceN({ n: i + 1 })" @update:modelValue="onInput(i, $event)"> </MkInput> <button class="_button" @click="remove(i)"> <i class="ti ti-x"></i> diff --git a/packages/frontend/src/components/MkSignupDialog.form.vue b/packages/frontend/src/components/MkSignupDialog.form.vue index 79e17c9aefac187e6d633297d12fd7ccd4f0580e..e27510fb34d74652052af7c32d61ef941380dcee 100644 --- a/packages/frontend/src/components/MkSignupDialog.form.vue +++ b/packages/frontend/src/components/MkSignupDialog.form.vue @@ -263,7 +263,7 @@ async function onSubmit(): Promise<void> { os.alert({ type: 'success', title: i18n.ts._signup.almostThere, - text: i18n.t('_signup.emailSent', { email: email.value }), + text: i18n.tsx._signup.emailSent({ email: email.value }), }); emit('signupEmailPending'); } else { diff --git a/packages/frontend/src/components/MkSignupDialog.rules.vue b/packages/frontend/src/components/MkSignupDialog.rules.vue index 8cf7ce92ada83d30637b545b8af1882f44e68860..d42b496a340558977ffe4b7ec51f5d38913d285a 100644 --- a/packages/frontend/src/components/MkSignupDialog.rules.vue +++ b/packages/frontend/src/components/MkSignupDialog.rules.vue @@ -105,7 +105,7 @@ async function updateAgreeServerRules(v: boolean) { const confirm = await os.confirm({ type: 'question', title: i18n.ts.doYouAgree, - text: i18n.t('iHaveReadXCarefullyAndAgree', { x: i18n.ts.serverRules }), + text: i18n.tsx.iHaveReadXCarefullyAndAgree({ x: i18n.ts.serverRules }), }); if (confirm.canceled) return; agreeServerRules.value = true; @@ -119,7 +119,7 @@ async function updateAgreeTosAndPrivacyPolicy(v: boolean) { const confirm = await os.confirm({ type: 'question', title: i18n.ts.doYouAgree, - text: i18n.t('iHaveReadXCarefullyAndAgree', { + text: i18n.tsx.iHaveReadXCarefullyAndAgree({ x: tosPrivacyPolicyLabel.value, }), }); @@ -135,7 +135,7 @@ async function updateAgreeNote(v: boolean) { const confirm = await os.confirm({ type: 'question', title: i18n.ts.doYouAgree, - text: i18n.t('iHaveReadXCarefullyAndAgree', { x: i18n.ts.basicNotesBeforeCreateAccount }), + text: i18n.tsx.iHaveReadXCarefullyAndAgree({ x: i18n.ts.basicNotesBeforeCreateAccount }), }); if (confirm.canceled) return; agreeNote.value = true; diff --git a/packages/frontend/src/components/MkSubNoteContent.vue b/packages/frontend/src/components/MkSubNoteContent.vue index 438140649e2d25b0beba384a819bbc2f4c0b89d4..13d0e6c2ca37e6d0d0658e9b342207368fb7ddf3 100644 --- a/packages/frontend/src/components/MkSubNoteContent.vue +++ b/packages/frontend/src/components/MkSubNoteContent.vue @@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkA v-if="note.renoteId" :class="$style.rp" :to="`/notes/${note.renoteId}`">RN: ...</MkA> </div> <details v-if="note.files.length > 0"> - <summary>({{ i18n.t('withNFiles', { n: note.files.length }) }})</summary> + <summary>({{ i18n.tsx.withNFiles({ n: note.files.length }) }})</summary> <MkMediaList :mediaList="note.files"/> </details> <details v-if="note.poll"> diff --git a/packages/frontend/src/components/MkTokenGenerateWindow.vue b/packages/frontend/src/components/MkTokenGenerateWindow.vue index a42767e1b63f548d72342efc6ea7673177a65383..28f2f29b7d941097babdf08af3a701a808c7f55e 100644 --- a/packages/frontend/src/components/MkTokenGenerateWindow.vue +++ b/packages/frontend/src/components/MkTokenGenerateWindow.vue @@ -33,12 +33,12 @@ SPDX-License-Identifier: AGPL-3.0-only <MkButton inline @click="enableAll">{{ i18n.ts.enableAll }}</MkButton> </div> <div class="_gaps_s"> - <MkSwitch v-for="kind in Object.keys(permissionSwitches)" :key="kind" v-model="permissionSwitches[kind]">{{ i18n.t(`_permissions.${kind}`) }}</MkSwitch> + <MkSwitch v-for="kind in Object.keys(permissionSwitches)" :key="kind" v-model="permissionSwitches[kind]">{{ i18n.ts._permissions[kind] }}</MkSwitch> </div> <div v-if="iAmAdmin" :class="$style.adminPermissions"> <div :class="$style.adminPermissionsHeader"><b>{{ i18n.ts.adminPermission }}</b></div> <div class="_gaps_s"> - <MkSwitch v-for="kind in Object.keys(permissionSwitchesForAdmin)" :key="kind" v-model="permissionSwitchesForAdmin[kind]">{{ i18n.t(`_permissions.${kind}`) }}</MkSwitch> + <MkSwitch v-for="kind in Object.keys(permissionSwitchesForAdmin)" :key="kind" v-model="permissionSwitchesForAdmin[kind]">{{ i18n.ts._permissions[kind] }}</MkSwitch> </div> </div> </div> diff --git a/packages/frontend/src/components/MkTutorialDialog.vue b/packages/frontend/src/components/MkTutorialDialog.vue index 963e78a1ff9f64ce31487f00586b1680a9f0507b..9c3b46e133e43b3d4743bad48285219b10cb01f4 100644 --- a/packages/frontend/src/components/MkTutorialDialog.vue +++ b/packages/frontend/src/components/MkTutorialDialog.vue @@ -133,7 +133,7 @@ SPDX-License-Identifier: AGPL-3.0-only <a href="https://misskey-hub.net/docs/for-users/" target="_blank" class="_link">{{ i18n.ts.help }}</a> </template> </I18n> - <div>{{ i18n.t('_initialAccountSetting.haveFun', { name: instance.name ?? host }) }}</div> + <div>{{ i18n.tsx._initialAccountSetting.haveFun({ name: instance.name ?? host }) }}</div> <div class="_buttonsCenter" style="margin-top: 16px;"> <MkButton v-if="initialPage !== 4" rounded @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton> <MkButton rounded primary gradate @click="close(false)">{{ i18n.ts.close }}</MkButton> diff --git a/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue b/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue index af094a8e8c9fde9cb95200b1eda4f8d42e10a0cc..9e3a78fe225c018782a12936e0ab7edb10900a33 100644 --- a/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue +++ b/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue @@ -118,7 +118,7 @@ async function done() { async function del() { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('removeAreYouSure', { x: title.value }), + text: i18n.tsx.removeAreYouSure({ x: title.value }), }); if (canceled) return; diff --git a/packages/frontend/src/components/MkUserSetupDialog.Profile.vue b/packages/frontend/src/components/MkUserSetupDialog.Profile.vue index 37aa677b440f744fdbba8330159643a2e4ca39d2..f0828338385ab38094dfa5e88babb19d14819aad 100644 --- a/packages/frontend/src/components/MkUserSetupDialog.Profile.vue +++ b/packages/frontend/src/components/MkUserSetupDialog.Profile.vue @@ -68,7 +68,7 @@ function setAvatar(ev) { const { canceled } = await os.confirm({ type: 'question', - text: i18n.t('cropImageAsk'), + text: i18n.ts.cropImageAsk, okText: i18n.ts.cropYes, cancelText: i18n.ts.cropNo, }); diff --git a/packages/frontend/src/components/MkUserSetupDialog.vue b/packages/frontend/src/components/MkUserSetupDialog.vue index 05b55f77a7559eb70308698556419ee2dbd2312e..4b0c540829df896c6511608ca84102922ecae287 100644 --- a/packages/frontend/src/components/MkUserSetupDialog.vue +++ b/packages/frontend/src/components/MkUserSetupDialog.vue @@ -93,7 +93,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div class="_gaps" style="text-align: center;"> <i class="ti ti-bell-ringing-2" style="display: block; margin: auto; font-size: 3em; color: var(--accent);"></i> <div style="font-size: 120%;">{{ i18n.ts.pushNotification }}</div> - <div style="padding: 0 16px;">{{ i18n.t('_initialAccountSetting.pushNotificationDescription', { name: instance.name ?? host }) }}</div> + <div style="padding: 0 16px;">{{ i18n.tsx._initialAccountSetting.pushNotificationDescription({ name: instance.name ?? host }) }}</div> <MkPushNotificationAllowButton primary showOnlyToRegister style="margin: 0 auto;"/> <div class="_buttonsCenter" style="margin-top: 16px;"> <MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton> @@ -110,7 +110,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div class="_gaps" style="text-align: center;"> <i class="ti ti-check" style="display: block; margin: auto; font-size: 3em; color: var(--accent);"></i> <div style="font-size: 120%;">{{ i18n.ts._initialAccountSetting.initialAccountSettingCompleted }}</div> - <div>{{ i18n.t('_initialAccountSetting.youCanContinueTutorial', { name: instance.name ?? host }) }}</div> + <div>{{ i18n.tsx._initialAccountSetting.youCanContinueTutorial({ name: instance.name ?? host }) }}</div> <div class="_buttonsCenter" style="margin-top: 16px;"> <MkButton rounded primary gradate data-cy-user-setup-continue @click="launchTutorial()">{{ i18n.ts._initialAccountSetting.startTutorial }} <i class="ti ti-arrow-right"></i></MkButton> </div> diff --git a/packages/frontend/src/components/MkWidgets.vue b/packages/frontend/src/components/MkWidgets.vue index ee4e29dd8fcfadee1c993ab109b07163c4849803..b8b253de065ccda86276dc1084cee18fa356d66e 100644 --- a/packages/frontend/src/components/MkWidgets.vue +++ b/packages/frontend/src/components/MkWidgets.vue @@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only <header :class="$style.editHeader"> <MkSelect v-model="widgetAdderSelected" style="margin-bottom: var(--margin)" data-cy-widget-select> <template #label>{{ i18n.ts.selectWidget }}</template> - <option v-for="widget in widgetDefs" :key="widget" :value="widget">{{ i18n.t(`_widgets.${widget}`) }}</option> + <option v-for="widget in widgetDefs" :key="widget" :value="widget">{{ i18n.ts._widgets[widget] }}</option> </MkSelect> <MkButton inline primary data-cy-widget-add @click="addWidget"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton> <MkButton inline @click="$emit('exit')">{{ i18n.ts.close }}</MkButton> @@ -109,7 +109,7 @@ function onContextmenu(widget: Widget, ev: MouseEvent) { os.contextMenu([{ type: 'label', - text: i18n.t(`_widgets.${widget.name}`), + text: i18n.ts._widgets[widget.name], }, { icon: 'ti ti-settings', text: i18n.ts.settings, diff --git a/packages/frontend/src/components/global/I18n.vue b/packages/frontend/src/components/global/I18n.vue new file mode 100644 index 0000000000000000000000000000000000000000..162aa2bcf8111281bdd3497c8775fc5b2fc260d5 --- /dev/null +++ b/packages/frontend/src/components/global/I18n.vue @@ -0,0 +1,46 @@ +<template> +<render/> +</template> + +<script setup lang="ts" generic="T extends string | ParameterizedString"> +import { computed, h } from 'vue'; +import type { ParameterizedString } from '../../../../../locales/index.js'; + +const props = withDefaults(defineProps<{ + src: T; + tag?: string; + // eslint-disable-next-line vue/require-default-prop + textTag?: string; +}>(), { + tag: 'span', +}); + +const slots = defineSlots<T extends ParameterizedString<infer R> ? { [K in R]: () => unknown } : NonNullable<unknown>>(); + +const parsed = computed(() => { + let str = props.src as string; + const value: (string | { arg: string; })[] = []; + for (;;) { + const nextBracketOpen = str.indexOf('{'); + const nextBracketClose = str.indexOf('}'); + + if (nextBracketOpen === -1) { + value.push(str); + break; + } else { + if (nextBracketOpen > 0) value.push(str.substring(0, nextBracketOpen)); + value.push({ + arg: str.substring(nextBracketOpen + 1, nextBracketClose), + }); + } + + str = str.substring(nextBracketClose + 1); + } + + return value; +}); + +const render = () => { + return h(props.tag, parsed.value.map(x => typeof x === 'string' ? (props.textTag ? h(props.textTag, x) : x) : slots[x.arg]())); +}; +</script> diff --git a/packages/frontend/src/components/global/MkTime.stories.impl.ts b/packages/frontend/src/components/global/MkTime.stories.impl.ts index 0eeefa48597ac59dc20c9b0f69243086dd9b6196..0e7f6a9bdf359094ae7d7053dcefcf7bb5fff5ad 100644 --- a/packages/frontend/src/components/global/MkTime.stories.impl.ts +++ b/packages/frontend/src/components/global/MkTime.stories.impl.ts @@ -123,7 +123,7 @@ export const DetailNow = { export const RelativeOneHourAgo = { ...Empty, async play({ canvasElement }) { - await expect(canvasElement).toHaveTextContent(i18n.t('_ago.hoursAgo', { n: 1 })); + await expect(canvasElement).toHaveTextContent(i18n.tsx._ago.hoursAgo({ n: 1 })); }, args: { ...Empty.args, @@ -162,7 +162,7 @@ export const DetailOneHourAgo = { export const RelativeOneDayAgo = { ...Empty, async play({ canvasElement }) { - await expect(canvasElement).toHaveTextContent(i18n.t('_ago.daysAgo', { n: 1 })); + await expect(canvasElement).toHaveTextContent(i18n.tsx._ago.daysAgo({ n: 1 })); }, args: { ...Empty.args, @@ -201,7 +201,7 @@ export const DetailOneDayAgo = { export const RelativeOneWeekAgo = { ...Empty, async play({ canvasElement }) { - await expect(canvasElement).toHaveTextContent(i18n.t('_ago.weeksAgo', { n: 1 })); + await expect(canvasElement).toHaveTextContent(i18n.tsx._ago.weeksAgo({ n: 1 })); }, args: { ...Empty.args, @@ -240,7 +240,7 @@ export const DetailOneWeekAgo = { export const RelativeOneMonthAgo = { ...Empty, async play({ canvasElement }) { - await expect(canvasElement).toHaveTextContent(i18n.t('_ago.monthsAgo', { n: 1 })); + await expect(canvasElement).toHaveTextContent(i18n.tsx._ago.monthsAgo({ n: 1 })); }, args: { ...Empty.args, @@ -279,7 +279,7 @@ export const DetailOneMonthAgo = { export const RelativeOneYearAgo = { ...Empty, async play({ canvasElement }) { - await expect(canvasElement).toHaveTextContent(i18n.t('_ago.yearsAgo', { n: 1 })); + await expect(canvasElement).toHaveTextContent(i18n.tsx._ago.yearsAgo({ n: 1 })); }, args: { ...Empty.args, diff --git a/packages/frontend/src/components/global/MkTime.vue b/packages/frontend/src/components/global/MkTime.vue index e11db9dc311b33554d1c9b903b38964ba2bb6656..2b0bf246ad3884bb1b9afae4c780da5e95213ce1 100644 --- a/packages/frontend/src/components/global/MkTime.vue +++ b/packages/frontend/src/components/global/MkTime.vue @@ -55,21 +55,21 @@ const relative = computed<string>(() => { if (invalid) return i18n.ts._ago.invalid; return ( - ago.value >= 31536000 ? i18n.t('_ago.yearsAgo', { n: Math.round(ago.value / 31536000).toString() }) : - ago.value >= 2592000 ? i18n.t('_ago.monthsAgo', { n: Math.round(ago.value / 2592000).toString() }) : - ago.value >= 604800 ? i18n.t('_ago.weeksAgo', { n: Math.round(ago.value / 604800).toString() }) : - ago.value >= 86400 ? i18n.t('_ago.daysAgo', { n: Math.round(ago.value / 86400).toString() }) : - ago.value >= 3600 ? i18n.t('_ago.hoursAgo', { n: Math.round(ago.value / 3600).toString() }) : - ago.value >= 60 ? i18n.t('_ago.minutesAgo', { n: (~~(ago.value / 60)).toString() }) : - ago.value >= 10 ? i18n.t('_ago.secondsAgo', { n: (~~(ago.value % 60)).toString() }) : + ago.value >= 31536000 ? i18n.tsx._ago.yearsAgo({ n: Math.round(ago.value / 31536000).toString() }) : + ago.value >= 2592000 ? i18n.tsx._ago.monthsAgo({ n: Math.round(ago.value / 2592000).toString() }) : + ago.value >= 604800 ? i18n.tsx._ago.weeksAgo({ n: Math.round(ago.value / 604800).toString() }) : + ago.value >= 86400 ? i18n.tsx._ago.daysAgo({ n: Math.round(ago.value / 86400).toString() }) : + ago.value >= 3600 ? i18n.tsx._ago.hoursAgo({ n: Math.round(ago.value / 3600).toString() }) : + ago.value >= 60 ? i18n.tsx._ago.minutesAgo({ n: (~~(ago.value / 60)).toString() }) : + ago.value >= 10 ? i18n.tsx._ago.secondsAgo({ n: (~~(ago.value % 60)).toString() }) : ago.value >= -3 ? i18n.ts._ago.justNow : - ago.value < -31536000 ? i18n.t('_timeIn.years', { n: Math.round(-ago.value / 31536000).toString() }) : - ago.value < -2592000 ? i18n.t('_timeIn.months', { n: Math.round(-ago.value / 2592000).toString() }) : - ago.value < -604800 ? i18n.t('_timeIn.weeks', { n: Math.round(-ago.value / 604800).toString() }) : - ago.value < -86400 ? i18n.t('_timeIn.days', { n: Math.round(-ago.value / 86400).toString() }) : - ago.value < -3600 ? i18n.t('_timeIn.hours', { n: Math.round(-ago.value / 3600).toString() }) : - ago.value < -60 ? i18n.t('_timeIn.minutes', { n: (~~(-ago.value / 60)).toString() }) : - i18n.t('_timeIn.seconds', { n: (~~(-ago.value % 60)).toString() }) + ago.value < -31536000 ? i18n.tsx._timeIn.years({ n: Math.round(-ago.value / 31536000).toString() }) : + ago.value < -2592000 ? i18n.tsx._timeIn.months({ n: Math.round(-ago.value / 2592000).toString() }) : + ago.value < -604800 ? i18n.tsx._timeIn.weeks({ n: Math.round(-ago.value / 604800).toString() }) : + ago.value < -86400 ? i18n.tsx._timeIn.days({ n: Math.round(-ago.value / 86400).toString() }) : + ago.value < -3600 ? i18n.tsx._timeIn.hours({ n: Math.round(-ago.value / 3600).toString() }) : + ago.value < -60 ? i18n.tsx._timeIn.minutes({ n: (~~(-ago.value / 60)).toString() }) : + i18n.tsx._timeIn.seconds({ n: (~~(-ago.value % 60)).toString() }) ); }); diff --git a/packages/frontend/src/components/global/i18n.ts b/packages/frontend/src/components/global/i18n.ts deleted file mode 100644 index 2f4d7edabd9600bfd15cca0b6c61829950dbef6e..0000000000000000000000000000000000000000 --- a/packages/frontend/src/components/global/i18n.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * SPDX-FileCopyrightText: syuilo and other misskey contributors - * SPDX-License-Identifier: AGPL-3.0-only - */ - -import { h } from 'vue'; - -export default function(props: { src: string; tag?: string; textTag?: string; }, { slots }) { - let str = props.src; - const parsed = [] as (string | { arg: string; })[]; - while (true) { - const nextBracketOpen = str.indexOf('{'); - const nextBracketClose = str.indexOf('}'); - - if (nextBracketOpen === -1) { - parsed.push(str); - break; - } else { - if (nextBracketOpen > 0) parsed.push(str.substring(0, nextBracketOpen)); - parsed.push({ - arg: str.substring(nextBracketOpen + 1, nextBracketClose), - }); - } - - str = str.substring(nextBracketClose + 1); - } - - return h(props.tag ?? 'span', parsed.map(x => typeof x === 'string' ? (props.textTag ? h(props.textTag, x) : x) : slots[x.arg]())); -} diff --git a/packages/frontend/src/components/index.ts b/packages/frontend/src/components/index.ts index a3e13c3a506703a0d52ab41c97c3d0663f6b11ef..f3b476b15c3c83b9ce9e48cbe3eb958de07195eb 100644 --- a/packages/frontend/src/components/index.ts +++ b/packages/frontend/src/components/index.ts @@ -16,7 +16,7 @@ import MkUserName from './global/MkUserName.vue'; import MkEllipsis from './global/MkEllipsis.vue'; import MkTime from './global/MkTime.vue'; import MkUrl from './global/MkUrl.vue'; -import I18n from './global/i18n.js'; +import I18n from './global/I18n.vue'; import RouterView from './global/RouterView.vue'; import MkLoading from './global/MkLoading.vue'; import MkError from './global/MkError.vue'; diff --git a/packages/frontend/src/pages/about.vue b/packages/frontend/src/pages/about.vue index 4ba1b6da768d97ef9383c86438391149bbf9176d..69cb6ef647cf446c5ab2dd4332de99e116711d24 100644 --- a/packages/frontend/src/pages/about.vue +++ b/packages/frontend/src/pages/about.vue @@ -29,7 +29,7 @@ SPDX-License-Identifier: AGPL-3.0-only <template #key>Misskey</template> <template #value>{{ version }}</template> </MkKeyValue> - <div v-html="i18n.t('poweredByMisskeyDescription', { name: instance.name ?? host })"> + <div v-html="i18n.tsx.poweredByMisskeyDescription({ name: instance.name ?? host })"> </div> <FormLink to="/about-misskey">{{ i18n.ts.aboutMisskey }}</FormLink> </div> diff --git a/packages/frontend/src/pages/admin-file.vue b/packages/frontend/src/pages/admin-file.vue index 4a9c659a977d81ab1dd8564617978e83d0239602..84f3d1f3f11c1aa90862e31b7d00375236f773d9 100644 --- a/packages/frontend/src/pages/admin-file.vue +++ b/packages/frontend/src/pages/admin-file.vue @@ -104,7 +104,7 @@ fetch(); async function del() { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('removeAreYouSure', { x: file.value.name }), + text: i18n.tsx.removeAreYouSure({ x: file.value.name }), }); if (canceled) return; diff --git a/packages/frontend/src/pages/admin-user.vue b/packages/frontend/src/pages/admin-user.vue index 85417f0ecb2e5b1578cbac003333a9a7667ac46c..530bcca04acb077c508b1a81c3e9b043953def38 100644 --- a/packages/frontend/src/pages/admin-user.vue +++ b/packages/frontend/src/pages/admin-user.vue @@ -182,9 +182,9 @@ SPDX-License-Identifier: AGPL-3.0-only </MkSelect> </div> <div class="charts"> - <div class="label">{{ i18n.t('recentNHours', { n: 90 }) }}</div> + <div class="label">{{ i18n.tsx.recentNHours({ n: 90 }) }}</div> <MkChart class="chart" :src="chartSrc" span="hour" :limit="90" :args="{ user, withoutAll: true }" :detailed="true"></MkChart> - <div class="label">{{ i18n.t('recentNDays', { n: 90 }) }}</div> + <div class="label">{{ i18n.tsx.recentNDays({ n: 90 }) }}</div> <MkChart class="chart" :src="chartSrc" span="day" :limit="90" :args="{ user, withoutAll: true }" :detailed="true"></MkChart> </div> </div> @@ -307,7 +307,7 @@ async function resetPassword() { }); os.alert({ type: 'success', - text: i18n.t('newPasswordIs', { password }), + text: i18n.tsx.newPasswordIs({ password }), }); } } @@ -390,7 +390,7 @@ async function deleteAccount() { if (confirm.canceled) return; const typed = await os.inputText({ - text: i18n.t('typeToConfirm', { x: user.value?.username }), + text: i18n.tsx.typeToConfirm({ x: user.value?.username }), }); if (typed.canceled) return; diff --git a/packages/frontend/src/pages/admin/ads.vue b/packages/frontend/src/pages/admin/ads.vue index eb9aef0e488ec2084432322dcc82b72fc9cd57ef..fe55fe3a023bb42656bff6352174a5173b689699 100644 --- a/packages/frontend/src/pages/admin/ads.vue +++ b/packages/frontend/src/pages/admin/ads.vue @@ -160,7 +160,7 @@ function add() { function remove(ad) { os.confirm({ type: 'warning', - text: i18n.t('removeAreYouSure', { x: ad.url }), + text: i18n.tsx.removeAreYouSure({ x: ad.url }), }).then(({ canceled }) => { if (canceled) return; ads.value = ads.value.filter(x => x !== ad); diff --git a/packages/frontend/src/pages/admin/announcements.vue b/packages/frontend/src/pages/admin/announcements.vue index f941d512b36f46659fd77ddabf532e3adae81c97..44552fb88c1eb1a8f90068aaf8e0f44e6c0b03bd 100644 --- a/packages/frontend/src/pages/admin/announcements.vue +++ b/packages/frontend/src/pages/admin/announcements.vue @@ -54,7 +54,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkSwitch v-model="announcement.needConfirmationToRead" :helpText="i18n.ts._announcement.needConfirmationToReadDescription"> {{ i18n.ts._announcement.needConfirmationToRead }} </MkSwitch> - <p v-if="announcement.reads">{{ i18n.t('nUsersRead', { n: announcement.reads }) }}</p> + <p v-if="announcement.reads">{{ i18n.tsx.nUsersRead({ n: announcement.reads }) }}</p> <div class="buttons _buttons"> <MkButton class="button" inline primary @click="save(announcement)"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton> <MkButton v-if="announcement.id != null" class="button" inline @click="archive(announcement)"><i class="ti ti-check"></i> {{ i18n.ts._announcement.end }} ({{ i18n.ts.archive }})</MkButton> @@ -109,7 +109,7 @@ function add() { function del(announcement) { os.confirm({ type: 'warning', - text: i18n.t('deleteAreYouSure', { x: announcement.title }), + text: i18n.tsx.deleteAreYouSure({ x: announcement.title }), }).then(({ canceled }) => { if (canceled) return; announcements.value = announcements.value.filter(x => x !== announcement); diff --git a/packages/frontend/src/pages/admin/branding.vue b/packages/frontend/src/pages/admin/branding.vue index 72b47949e7d832bfa900fe22674c0263b230a7c5..dbbb3941d88b36858f6f988904dc27064356b513 100644 --- a/packages/frontend/src/pages/admin/branding.vue +++ b/packages/frontend/src/pages/admin/branding.vue @@ -19,10 +19,10 @@ SPDX-License-Identifier: AGPL-3.0-only <template #prefix><i class="ti ti-link"></i></template> <template #label>{{ i18n.ts._serverSettings.iconUrl }} (App/192px)</template> <template #caption> - <div>{{ i18n.t('_serverSettings.appIconDescription', { host: instance.name ?? host }) }}</div> + <div>{{ i18n.tsx._serverSettings.appIconDescription({ host: instance.name ?? host }) }}</div> <div>({{ i18n.ts._serverSettings.appIconUsageExample }})</div> <div>{{ i18n.ts._serverSettings.appIconStyleRecommendation }}</div> - <div><strong>{{ i18n.t('_serverSettings.appIconResolutionMustBe', { resolution: '192x192px' }) }}</strong></div> + <div><strong>{{ i18n.tsx._serverSettings.appIconResolutionMustBe({ resolution: '192x192px' }) }}</strong></div> </template> </MkInput> @@ -30,10 +30,10 @@ SPDX-License-Identifier: AGPL-3.0-only <template #prefix><i class="ti ti-link"></i></template> <template #label>{{ i18n.ts._serverSettings.iconUrl }} (App/512px)</template> <template #caption> - <div>{{ i18n.t('_serverSettings.appIconDescription', { host: instance.name ?? host }) }}</div> + <div>{{ i18n.tsx._serverSettings.appIconDescription({ host: instance.name ?? host }) }}</div> <div>({{ i18n.ts._serverSettings.appIconUsageExample }})</div> <div>{{ i18n.ts._serverSettings.appIconStyleRecommendation }}</div> - <div><strong>{{ i18n.t('_serverSettings.appIconResolutionMustBe', { resolution: '512x512px' }) }}</strong></div> + <div><strong>{{ i18n.tsx._serverSettings.appIconResolutionMustBe({ resolution: '512x512px' }) }}</strong></div> </template> </MkInput> diff --git a/packages/frontend/src/pages/admin/relays.vue b/packages/frontend/src/pages/admin/relays.vue index 6811a8eba5bc5aff517b1f25f912c76504e23c87..847c8bc1d4c757e7c98e7f4b920fcf030fd7e02b 100644 --- a/packages/frontend/src/pages/admin/relays.vue +++ b/packages/frontend/src/pages/admin/relays.vue @@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only <i v-if="relay.status === 'accepted'" class="ti ti-check" :class="$style.icon" style="color: var(--success);"></i> <i v-else-if="relay.status === 'rejected'" class="ti ti-ban" :class="$style.icon" style="color: var(--error);"></i> <i v-else class="ti ti-clock" :class="$style.icon"></i> - <span>{{ i18n.t(`_relayStatus.${relay.status}`) }}</span> + <span>{{ i18n.ts._relayStatus[relay.status] }}</span> </div> <MkButton class="button" inline danger @click="remove(relay.inbox)"><i class="ti ti-trash"></i> {{ i18n.ts.remove }}</MkButton> </div> diff --git a/packages/frontend/src/pages/admin/roles.role.vue b/packages/frontend/src/pages/admin/roles.role.vue index ff29f4ec1f96de9a6665ab72a39863dbda587073..ad582555769e7842425b7a0fbfbefa3dd6881fc5 100644 --- a/packages/frontend/src/pages/admin/roles.role.vue +++ b/packages/frontend/src/pages/admin/roles.role.vue @@ -104,7 +104,7 @@ function edit() { async function del() { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('deleteAreYouSure', { x: role.name }), + text: i18n.tsx.deleteAreYouSure({ x: role.name }), }); if (canceled) return; diff --git a/packages/frontend/src/pages/announcements.vue b/packages/frontend/src/pages/announcements.vue index c31c6d09032674f579d41ce22b3c99ae331a86d8..e3c0ea574a069b03e9293e03cdedc659a8bb12b5 100644 --- a/packages/frontend/src/pages/announcements.vue +++ b/packages/frontend/src/pages/announcements.vue @@ -78,7 +78,7 @@ async function read(announcement) { const confirm = await os.confirm({ type: 'question', title: i18n.ts._announcement.readConfirmTitle, - text: i18n.t('_announcement.readConfirmText', { title: announcement.title }), + text: i18n.tsx._announcement.readConfirmText({ title: announcement.title }), }); if (confirm.canceled) return; } diff --git a/packages/frontend/src/pages/auth.form.vue b/packages/frontend/src/pages/auth.form.vue index 39a7924f946f3d7950e60af5aade9407ac55ef8c..50fd696af313a19371afe5c6c1f77b760244bb9d 100644 --- a/packages/frontend/src/pages/auth.form.vue +++ b/packages/frontend/src/pages/auth.form.vue @@ -6,12 +6,12 @@ SPDX-License-Identifier: AGPL-3.0-only <template> <section> <div v-if="app.permission.length > 0"> - <p>{{ i18n.t('_auth.permission', { name }) }}</p> + <p>{{ i18n.tsx._auth.permission({ name }) }}</p> <ul> - <li v-for="p in app.permission" :key="p">{{ i18n.t(`_permissions.${p}`) }}</li> + <li v-for="p in app.permission" :key="p">{{ i18n.ts._permissions[p] }}</li> </ul> </div> - <div>{{ i18n.t('_auth.shareAccess', { name: `${name} (${app.id})` }) }}</div> + <div>{{ i18n.tsx._auth.shareAccess({ name: `${name} (${app.id})` }) }}</div> <div :class="$style.buttons"> <MkButton inline @click="cancel">{{ i18n.ts.cancel }}</MkButton> <MkButton inline primary @click="accept">{{ i18n.ts.accept }}</MkButton> diff --git a/packages/frontend/src/pages/auth.vue b/packages/frontend/src/pages/auth.vue index fd38e22ce8cd7eb1d27d089fdbf174e46ab8688a..9b409aa4f8af2d42e9fdebda35d81b03f5c410c3 100644 --- a/packages/frontend/src/pages/auth.vue +++ b/packages/frontend/src/pages/auth.vue @@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only <h1>{{ i18n.ts._auth.denied }}</h1> </div> <div v-if="state == 'accepted' && session"> - <h1>{{ session.app.isAuthorized ? i18n.t('already-authorized') : i18n.ts.allowed }}</h1> + <h1>{{ session.app.isAuthorized ? i18n.ts['already-authorized'] : i18n.ts.allowed }}</h1> <p v-if="session.app.callbackUrl"> {{ i18n.ts._auth.callback }} <MkEllipsis/> diff --git a/packages/frontend/src/pages/avatar-decorations.vue b/packages/frontend/src/pages/avatar-decorations.vue index 376679fd17350b12e50894a2d198fea9b36a6c0d..f71a7685bdf2ba8bc3edc46f22dfbedb3307845a 100644 --- a/packages/frontend/src/pages/avatar-decorations.vue +++ b/packages/frontend/src/pages/avatar-decorations.vue @@ -60,7 +60,7 @@ function add() { function del(avatarDecoration) { os.confirm({ type: 'warning', - text: i18n.t('deleteAreYouSure', { x: avatarDecoration.name }), + text: i18n.tsx.deleteAreYouSure({ x: avatarDecoration.name }), }).then(({ canceled }) => { if (canceled) return; avatarDecorations.value = avatarDecorations.value.filter(x => x !== avatarDecoration); diff --git a/packages/frontend/src/pages/channel-editor.vue b/packages/frontend/src/pages/channel-editor.vue index 99b93444dbbb1240a6e0f17cae1b80ca4dd007c0..bbe5dc0a4e7454cef3e699c5da86792756205956 100644 --- a/packages/frontend/src/pages/channel-editor.vue +++ b/packages/frontend/src/pages/channel-editor.vue @@ -174,7 +174,7 @@ function save() { async function archive() { const { canceled } = await os.confirm({ type: 'warning', - title: i18n.t('channelArchiveConfirmTitle', { name: name.value }), + title: i18n.tsx.channelArchiveConfirmTitle({ name: name.value }), text: i18n.ts.channelArchiveConfirmDescription, }); diff --git a/packages/frontend/src/pages/clip.vue b/packages/frontend/src/pages/clip.vue index e55e99a6fa5ca4f31acda753d10f9e849a0cb60d..8640561583879dd927c05fa0da7a02bba33379fb 100644 --- a/packages/frontend/src/pages/clip.vue +++ b/packages/frontend/src/pages/clip.vue @@ -145,7 +145,7 @@ const headerActions = computed(() => clip.value && isOwned.value ? [{ handler: async (): Promise<void> => { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('deleteAreYouSure', { x: clip.value.name }), + text: i18n.tsx.deleteAreYouSure({ x: clip.value.name }), }); if (canceled) return; diff --git a/packages/frontend/src/pages/drive.file.info.vue b/packages/frontend/src/pages/drive.file.info.vue index 64c3ad70bacc13f59fe503d130547b5112ccee6e..3e45f5e88c31939b99282350f33f3628e1cb3aa0 100644 --- a/packages/frontend/src/pages/drive.file.info.vue +++ b/packages/frontend/src/pages/drive.file.info.vue @@ -180,7 +180,7 @@ async function deleteFile() { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('driveFileDeleteConfirm', { name: file.value.name }), + text: i18n.tsx.driveFileDeleteConfirm({ name: file.value.name }), }); if (canceled) return; diff --git a/packages/frontend/src/pages/drop-and-fusion.vue b/packages/frontend/src/pages/drop-and-fusion.vue index beb2e714e0a66915de17e1a68ddf9ccdbfa3a1dd..b995521dfb17adbb5ce24a5defc423b4af9042bb 100644 --- a/packages/frontend/src/pages/drop-and-fusion.vue +++ b/packages/frontend/src/pages/drop-and-fusion.vue @@ -45,7 +45,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div :class="$style.frame"> <div :class="$style.frameInner"> <div class="_gaps_s" style="padding: 16px;"> - <div><b>{{ i18n.t('lastNDays', { n: 7 }) }} {{ i18n.ts.ranking }}</b> ({{ gameMode }})</div> + <div><b>{{ i18n.tsx.lastNDays({ n: 7 }) }} {{ i18n.ts.ranking }}</b> ({{ gameMode }})</div> <div v-if="ranking" class="_gaps_s"> <div v-for="r in ranking" :key="r.id" :class="$style.rankingRecord"> <MkAvatar :link="true" style="width: 24px; height: 24px; margin-right: 4px;" :user="r.user"/> diff --git a/packages/frontend/src/pages/emoji-edit-dialog.vue b/packages/frontend/src/pages/emoji-edit-dialog.vue index 1ef150bc2dc4da6f2a2a93c9f475b84eb4ce2fb5..9dcc7bc035bc9e55c201c0f877ca07f95ce0b0a9 100644 --- a/packages/frontend/src/pages/emoji-edit-dialog.vue +++ b/packages/frontend/src/pages/emoji-edit-dialog.vue @@ -185,7 +185,7 @@ async function done() { async function del() { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('removeAreYouSure', { x: name.value }), + text: i18n.tsx.removeAreYouSure({ x: name.value }), }); if (canceled) return; diff --git a/packages/frontend/src/pages/flash/flash-edit.vue b/packages/frontend/src/pages/flash/flash-edit.vue index ba350f1c0a7cec73de73aaa19c175cd4cf911a19..8f60b83a6cf0f70e5bb5f6e32526fddf974c89a3 100644 --- a/packages/frontend/src/pages/flash/flash-edit.vue +++ b/packages/frontend/src/pages/flash/flash-edit.vue @@ -438,7 +438,7 @@ function show() { async function del() { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('deleteAreYouSure', { x: flash.value.title }), + text: i18n.tsx.deleteAreYouSure({ x: flash.value.title }), }); if (canceled) return; diff --git a/packages/frontend/src/pages/follow.vue b/packages/frontend/src/pages/follow.vue index eefef828bde2f8d7bb3355df955133d3d95bef9a..44364bb0f22103d7b95eab4aa7cf5055e8661c0d 100644 --- a/packages/frontend/src/pages/follow.vue +++ b/packages/frontend/src/pages/follow.vue @@ -20,7 +20,7 @@ import { mainRouter } from '@/global/router/main.js'; async function follow(user): Promise<void> { const { canceled } = await os.confirm({ type: 'question', - text: i18n.t('followConfirm', { name: user.name || user.username }), + text: i18n.tsx.followConfirm({ name: user.name || user.username }), }); if (canceled) { diff --git a/packages/frontend/src/pages/instance-info.vue b/packages/frontend/src/pages/instance-info.vue index 4211dc0d8734d5cac66bee979e642a466edd77fb..9519a8a3f42c873e3453aeedf10b79ada9ad6251 100644 --- a/packages/frontend/src/pages/instance-info.vue +++ b/packages/frontend/src/pages/instance-info.vue @@ -95,9 +95,9 @@ SPDX-License-Identifier: AGPL-3.0-only </MkSelect> </div> <div class="charts"> - <div class="label">{{ i18n.t('recentNHours', { n: 90 }) }}</div> + <div class="label">{{ i18n.tsx.recentNHours({ n: 90 }) }}</div> <MkChart class="chart" :src="chartSrc" span="hour" :limit="90" :args="{ host: host }" :detailed="true"></MkChart> - <div class="label">{{ i18n.t('recentNDays', { n: 90 }) }}</div> + <div class="label">{{ i18n.tsx.recentNDays({ n: 90 }) }}</div> <MkChart class="chart" :src="chartSrc" span="day" :limit="90" :args="{ host: host }" :detailed="true"></MkChart> </div> </div> diff --git a/packages/frontend/src/pages/invite.vue b/packages/frontend/src/pages/invite.vue index 61030741fab01f41127f1ba6c2862d5f1ddc492e..d8613a67d3fb8038407781ee3920952aed7ba4e1 100644 --- a/packages/frontend/src/pages/invite.vue +++ b/packages/frontend/src/pages/invite.vue @@ -19,9 +19,9 @@ SPDX-License-Identifier: AGPL-3.0-only </MKSpacer> <MkSpacer v-else :contentMax="800"> <div class="_gaps_m" style="text-align: center;"> - <div v-if="resetCycle && inviteLimit">{{ i18n.t('inviteLimitResetCycle', { time: resetCycle, limit: inviteLimit }) }}</div> + <div v-if="resetCycle && inviteLimit">{{ i18n.tsx.inviteLimitResetCycle({ time: resetCycle, limit: inviteLimit }) }}</div> <MkButton inline primary rounded :disabled="currentInviteLimit !== null && currentInviteLimit <= 0" @click="create"><i class="ti ti-user-plus"></i> {{ i18n.ts.createInviteCode }}</MkButton> - <div v-if="currentInviteLimit !== null">{{ i18n.t('createLimitRemaining', { limit: currentInviteLimit }) }}</div> + <div v-if="currentInviteLimit !== null">{{ i18n.tsx.createLimitRemaining({ limit: currentInviteLimit }) }}</div> <MkPagination ref="pagingComponent" :pagination="pagination"> <template #default="{ items }"> diff --git a/packages/frontend/src/pages/miauth.vue b/packages/frontend/src/pages/miauth.vue index 539cb462add5eb0366d1a53435a7d2917f63490c..27ae1bdbc88640536207fbd143a88e06d60ec4b6 100644 --- a/packages/frontend/src/pages/miauth.vue +++ b/packages/frontend/src/pages/miauth.vue @@ -20,13 +20,13 @@ SPDX-License-Identifier: AGPL-3.0-only </div> <div v-else> <div v-if="_permissions.length > 0"> - <p v-if="name">{{ i18n.t('_auth.permission', { name }) }}</p> + <p v-if="name">{{ i18n.tsx._auth.permission({ name }) }}</p> <p v-else>{{ i18n.ts._auth.permissionAsk }}</p> <ul> - <li v-for="p in _permissions" :key="p">{{ i18n.t(`_permissions.${p}`) }}</li> + <li v-for="p in _permissions" :key="p">{{ i18n.ts._permissions[p] }}</li> </ul> </div> - <div v-if="name">{{ i18n.t('_auth.shareAccess', { name }) }}</div> + <div v-if="name">{{ i18n.tsx._auth.shareAccess({ name }) }}</div> <div v-else>{{ i18n.ts._auth.shareAccessAsk }}</div> <div :class="$style.buttons"> <MkButton inline @click="deny">{{ i18n.ts.cancel }}</MkButton> diff --git a/packages/frontend/src/pages/my-antennas/editor.vue b/packages/frontend/src/pages/my-antennas/editor.vue index 45acbb2158be761ab381b85fc8d5a7f281e57fae..a4c6ca6f5285b4442e76c8cd1fd0f510511f0d54 100644 --- a/packages/frontend/src/pages/my-antennas/editor.vue +++ b/packages/frontend/src/pages/my-antennas/editor.vue @@ -116,7 +116,7 @@ async function saveAntenna() { async function deleteAntenna() { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('removeAreYouSure', { x: props.antenna.name }), + text: i18n.tsx.removeAreYouSure({ x: props.antenna.name }), }); if (canceled) return; diff --git a/packages/frontend/src/pages/my-lists/index.vue b/packages/frontend/src/pages/my-lists/index.vue index 14e23158436a096cec8b7f4d09dd3630ac01d3e6..295112b0baf0ae1fc24c4c34cdf9ef9c090d464a 100644 --- a/packages/frontend/src/pages/my-lists/index.vue +++ b/packages/frontend/src/pages/my-lists/index.vue @@ -19,7 +19,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div v-if="items.length > 0" class="_gaps"> <MkA v-for="list in items" :key="list.id" class="_panel" :class="$style.list" :to="`/my/lists/${ list.id }`"> - <div style="margin-bottom: 4px;">{{ list.name }} <span :class="$style.nUsers">({{ i18n.t('nUsers', { n: `${list.userIds.length}/${$i.policies['userEachUserListsLimit']}` }) }})</span></div> + <div style="margin-bottom: 4px;">{{ list.name }} <span :class="$style.nUsers">({{ i18n.tsx.nUsers({ n: `${list.userIds.length}/${$i.policies['userEachUserListsLimit']}` }) }})</span></div> <MkAvatars :userIds="list.userIds" :limit="10"/> </MkA> </div> diff --git a/packages/frontend/src/pages/my-lists/list.vue b/packages/frontend/src/pages/my-lists/list.vue index 85775a2fdde997dda6c2bb63144d09e3c13d92d2..7207e956dbf942875ac2afdd16f4fb978af36ea3 100644 --- a/packages/frontend/src/pages/my-lists/list.vue +++ b/packages/frontend/src/pages/my-lists/list.vue @@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkFolder defaultOpen> <template #label>{{ i18n.ts.members }}</template> - <template #caption>{{ i18n.t('nUsers', { n: `${list.userIds.length}/${$i.policies['userEachUserListsLimit']}` }) }}</template> + <template #caption>{{ i18n.tsx.nUsers({ n: `${list.userIds.length}/${$i.policies['userEachUserListsLimit']}` }) }}</template> <div class="_gaps_s"> <MkButton rounded primary style="margin: 0 auto;" @click="addUser()">{{ i18n.ts.addUser }}</MkButton> @@ -155,7 +155,7 @@ async function deleteList() { if (!list.value) return; const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('removeAreYouSure', { x: list.value.name }), + text: i18n.tsx.removeAreYouSure({ x: list.value.name }), }); if (canceled) return; diff --git a/packages/frontend/src/pages/note.vue b/packages/frontend/src/pages/note.vue index 4c0e9bbb980e2296667edee7631876fa2f20345e..9b72f9b2ac7521c180ae9f2cb918b623fd2e89fd 100644 --- a/packages/frontend/src/pages/note.vue +++ b/packages/frontend/src/pages/note.vue @@ -147,7 +147,7 @@ definePageMetadata(computed(() => note.value ? { avatar: note.value.user, path: `/notes/${note.value.id}`, share: { - title: i18n.t('noteOf', { user: note.value.user.name }), + title: i18n.tsx.noteOf({ user: note.value.user.name }), text: note.value.text, }, } : null)); diff --git a/packages/frontend/src/pages/notifications.vue b/packages/frontend/src/pages/notifications.vue index 8913a89adbdf9855a7128310480ffcd94166f241..e6098c90b366ccbf5257dbf5040345abc9df8629 100644 --- a/packages/frontend/src/pages/notifications.vue +++ b/packages/frontend/src/pages/notifications.vue @@ -51,7 +51,7 @@ const directNotesPagination = { function setFilter(ev) { const typeItems = notificationTypes.map(t => ({ - text: i18n.t(`_notification._types.${t}`), + text: i18n.ts._notification._types[t], active: includeTypes.value && includeTypes.value.includes(t), action: () => { includeTypes.value = [t]; diff --git a/packages/frontend/src/pages/oauth.vue b/packages/frontend/src/pages/oauth.vue index 878fa6be4eb4d2a762d90593737013413ff4560d..38b9dd60c48a6f6552842585855bfb103172b19b 100644 --- a/packages/frontend/src/pages/oauth.vue +++ b/packages/frontend/src/pages/oauth.vue @@ -9,13 +9,13 @@ SPDX-License-Identifier: AGPL-3.0-only <MkSpacer :contentMax="800"> <div v-if="$i"> <div v-if="permissions.length > 0"> - <p v-if="name">{{ i18n.t('_auth.permission', { name }) }}</p> + <p v-if="name">{{ i18n.tsx._auth.permission({ name }) }}</p> <p v-else>{{ i18n.ts._auth.permissionAsk }}</p> <ul> - <li v-for="p in permissions" :key="p">{{ i18n.t(`_permissions.${p}`) }}</li> + <li v-for="p in permissions" :key="p">{{ i18n.ts._permissions[p] }}</li> </ul> </div> - <div v-if="name">{{ i18n.t('_auth.shareAccess', { name }) }}</div> + <div v-if="name">{{ i18n.tsx._auth.shareAccess({ name }) }}</div> <div v-else>{{ i18n.ts._auth.shareAccessAsk }}</div> <form :class="$style.buttons" action="/oauth/decision" accept-charset="utf-8" method="post"> <input name="login_token" type="hidden" :value="$i.token"/> diff --git a/packages/frontend/src/pages/page-editor/page-editor.vue b/packages/frontend/src/pages/page-editor/page-editor.vue index 6db72dccba0db681404ad93db7eaa8572a5e6585..bd85b97d5978bb13b89ccdbf92af5657a59d36e6 100644 --- a/packages/frontend/src/pages/page-editor/page-editor.vue +++ b/packages/frontend/src/pages/page-editor/page-editor.vue @@ -175,7 +175,7 @@ function save() { function del() { os.confirm({ type: 'warning', - text: i18n.t('removeAreYouSure', { x: title.value.trim() }), + text: i18n.tsx.removeAreYouSure({ x: title.value.trim() }), }).then(({ canceled }) => { if (canceled) return; misskeyApi('pages/delete', { diff --git a/packages/frontend/src/pages/reversi/game.board.vue b/packages/frontend/src/pages/reversi/game.board.vue index 18fd74427c016c806b27b8c276a89fe0271c2160..582967ad2ba55ff54b5b936ab8091261d84f0496 100644 --- a/packages/frontend/src/pages/reversi/game.board.vue +++ b/packages/frontend/src/pages/reversi/game.board.vue @@ -10,17 +10,17 @@ SPDX-License-Identifier: AGPL-3.0-only <div style="overflow: clip; line-height: 28px;"> <div v-if="!iAmPlayer && !game.isEnded && turnUser" class="turn"> - <Mfm :key="'turn:' + turnUser.id" :text="i18n.t('_reversi.turnOf', { name: turnUser.name ?? turnUser.username })" :plain="true" :customEmojis="turnUser.emojis"/> + <Mfm :key="'turn:' + turnUser.id" :text="i18n.tsx._reversi.turnOf({ name: turnUser.name ?? turnUser.username })" :plain="true" :customEmojis="turnUser.emojis"/> <MkEllipsis/> </div> <div v-if="(logPos !== logs.length) && turnUser" class="turn"> - <Mfm :key="'past-turn-of:' + turnUser.id" :text="i18n.t('_reversi.pastTurnOf', { name: turnUser.name ?? turnUser.username })" :plain="true" :customEmojis="turnUser.emojis"/> + <Mfm :key="'past-turn-of:' + turnUser.id" :text="i18n.tsx._reversi.pastTurnOf({ name: turnUser.name ?? turnUser.username })" :plain="true" :customEmojis="turnUser.emojis"/> </div> <div v-if="iAmPlayer && !game.isEnded && !isMyTurn" class="turn1">{{ i18n.ts._reversi.opponentTurn }}<MkEllipsis/></div> <div v-if="iAmPlayer && !game.isEnded && isMyTurn" class="turn2" style="animation: tada 1s linear infinite both;">{{ i18n.ts._reversi.myTurn }}</div> <div v-if="game.isEnded && logPos == logs.length" class="result"> <template v-if="game.winner"> - <Mfm :key="'won'" :text="i18n.t('_reversi.won', { name: game.winner.name ?? game.winner.username })" :plain="true" :customEmojis="game.winner.emojis"/> + <Mfm :key="'won'" :text="i18n.tsx._reversi.won({ name: game.winner.name ?? game.winner.username })" :plain="true" :customEmojis="game.winner.emojis"/> <span v-if="game.surrendered != null"> ({{ i18n.ts._reversi.surrendered }})</span> </template> <template v-else>{{ i18n.ts._reversi.drawn }}</template> @@ -62,7 +62,7 @@ SPDX-License-Identifier: AGPL-3.0-only </div> </div> - <div class="status"><b>{{ i18n.t('_reversi.turnCount', { count: logPos }) }}</b> {{ i18n.ts._reversi.black }}:{{ engine.blackCount }} {{ i18n.ts._reversi.white }}:{{ engine.whiteCount }} {{ i18n.ts._reversi.total }}:{{ engine.blackCount + engine.whiteCount }}</div> + <div class="status"><b>{{ i18n.tsx._reversi.turnCount({ count: logPos }) }}</b> {{ i18n.ts._reversi.black }}:{{ engine.blackCount }} {{ i18n.ts._reversi.white }}:{{ engine.whiteCount }} {{ i18n.ts._reversi.total }}:{{ engine.blackCount + engine.whiteCount }}</div> <div v-if="!game.isEnded && iAmPlayer" class="_buttonsCenter"> <MkButton danger @click="surrender">{{ i18n.ts._reversi.surrender }}</MkButton> diff --git a/packages/frontend/src/pages/settings/2fa.vue b/packages/frontend/src/pages/settings/2fa.vue index 35331738fdfb42ff94c6c5e8136eaee358451399..dae1f03ccb89e7a8d6e953fa07af19f39887e1f0 100644 --- a/packages/frontend/src/pages/settings/2fa.vue +++ b/packages/frontend/src/pages/settings/2fa.vue @@ -141,7 +141,7 @@ async function unregisterKey(key) { const confirm = await os.confirm({ type: 'question', title: i18n.ts._2fa.removeKey, - text: i18n.t('_2fa.removeKeyConfirm', { name: key.name }), + text: i18n.tsx._2fa.removeKeyConfirm({ name: key.name }), }); if (confirm.canceled) return; diff --git a/packages/frontend/src/pages/settings/apps.vue b/packages/frontend/src/pages/settings/apps.vue index 4a778d4b380b9ab57e9e202e349fcde91dee9098..525b4e7519eec0aeee5c6cbb8767dec4778b7e6e 100644 --- a/packages/frontend/src/pages/settings/apps.vue +++ b/packages/frontend/src/pages/settings/apps.vue @@ -30,7 +30,7 @@ SPDX-License-Identifier: AGPL-3.0-only <details> <summary>{{ i18n.ts.details }}</summary> <ul> - <li v-for="p in token.permission" :key="p">{{ i18n.t(`_permissions.${p}`) }}</li> + <li v-for="p in token.permission" :key="p">{{ i18n.ts._permissions[p] }}</li> </ul> </details> <div> diff --git a/packages/frontend/src/pages/settings/avatar-decoration.vue b/packages/frontend/src/pages/settings/avatar-decoration.vue index 70565cc990c444d82237670e44ed3faf6c9f0599..ecfa1ca257516df2b1500cf8245e98d30f401765 100644 --- a/packages/frontend/src/pages/settings/avatar-decoration.vue +++ b/packages/frontend/src/pages/settings/avatar-decoration.vue @@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only <template> <div> <div v-if="!loading" class="_gaps"> - <MkInfo>{{ i18n.t('_profile.avatarDecorationMax', { max: $i.policies.avatarDecorationLimit }) }} ({{ i18n.t('remainingN', { n: $i.policies.avatarDecorationLimit - $i.avatarDecorations.length }) }})</MkInfo> + <MkInfo>{{ i18n.tsx._profile.avatarDecorationMax({ max: $i.policies.avatarDecorationLimit }) }} ({{ i18n.tsx.remainingN({ n: $i.policies.avatarDecorationLimit - $i.avatarDecorations.length }) }})</MkInfo> <MkAvatar :class="$style.avatar" :user="$i" forceShowDecoration/> diff --git a/packages/frontend/src/pages/settings/general.vue b/packages/frontend/src/pages/settings/general.vue index e52a5ee04fcadc49ff8afaa29bfbf6387ee31a49..bbc910a32a17f26bb6ff62a6a67e76c674b85a23 100644 --- a/packages/frontend/src/pages/settings/general.vue +++ b/packages/frontend/src/pages/settings/general.vue @@ -77,9 +77,9 @@ SPDX-License-Identifier: AGPL-3.0-only <MkRadios v-model="mediaListWithOneImageAppearance"> <template #label>{{ i18n.ts.mediaListWithOneImageAppearance }}</template> <option value="expand">{{ i18n.ts.default }}</option> - <option value="16_9">{{ i18n.t('limitTo', { x: '16:9' }) }}</option> - <option value="1_1">{{ i18n.t('limitTo', { x: '1:1' }) }}</option> - <option value="2_3">{{ i18n.t('limitTo', { x: '2:3' }) }}</option> + <option value="16_9">{{ i18n.tsx.limitTo({ x: '16:9' }) }}</option> + <option value="1_1">{{ i18n.tsx.limitTo({ x: '1:1' }) }}</option> + <option value="2_3">{{ i18n.tsx.limitTo({ x: '2:3' }) }}</option> </MkRadios> </div> </FormSection> diff --git a/packages/frontend/src/pages/settings/migration.vue b/packages/frontend/src/pages/settings/migration.vue index 2699f0ad638ab8f3c8cb0d8815506b710583108b..6e5de0a3335a2c76aa5f2712ca913d295a573966 100644 --- a/packages/frontend/src/pages/settings/migration.vue +++ b/packages/frontend/src/pages/settings/migration.vue @@ -21,7 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div class="_gaps"> <MkInput v-for="(_, i) in accountAliases" v-model="accountAliases[i]"> <template #prefix><i class="ti ti-plane-arrival"></i></template> - <template #label>{{ i18n.t('_accountMigration.moveFromLabel', { n: i + 1 }) }}</template> + <template #label>{{ i18n.tsx._accountMigration.moveFromLabel({ n: i + 1 }) }}</template> </MkInput> </div> </div> @@ -97,7 +97,7 @@ async function move(): Promise<void> { const account = moveToAccount.value; const confirm = await os.confirm({ type: 'warning', - text: i18n.t('_accountMigration.migrationConfirm', { account }), + text: i18n.tsx._accountMigration.migrationConfirm({ account }), }); if (confirm.canceled) return; await os.apiWithDialog('i/move', { diff --git a/packages/frontend/src/pages/settings/mute-block.word-mute.vue b/packages/frontend/src/pages/settings/mute-block.word-mute.vue index 7328967c518ad8225a35bc3385b1dbedd7b135ba..a70adaf359a50eb642fe3289ac2d404d8993d066 100644 --- a/packages/frontend/src/pages/settings/mute-block.word-mute.vue +++ b/packages/frontend/src/pages/settings/mute-block.word-mute.vue @@ -64,7 +64,7 @@ async function save() { os.alert({ type: 'error', title: i18n.ts.regexpError, - text: i18n.t('regexpErrorDescription', { tab: 'word mute', line: i + 1 }) + '\n' + err.toString(), + text: i18n.tsx.regexpErrorDescription({ tab: 'word mute', line: i + 1 }) + '\n' + err.toString(), }); // re-throw error so these invalid settings are not saved throw err; diff --git a/packages/frontend/src/pages/settings/notifications.vue b/packages/frontend/src/pages/settings/notifications.vue index 766f33ff6577bd2340d4521f55a96b72d95f49f5..b1b1e4fb0370aa47f6a38ee68b716fda43b32620 100644 --- a/packages/frontend/src/pages/settings/notifications.vue +++ b/packages/frontend/src/pages/settings/notifications.vue @@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only <template #label>{{ i18n.ts.notificationRecieveConfig }}</template> <div class="_gaps_s"> <MkFolder v-for="type in notificationTypes.filter(x => !nonConfigurableNotificationTypes.includes(x))" :key="type"> - <template #label>{{ i18n.t('_notification._types.' + type) }}</template> + <template #label>{{ i18n.ts._notification._types[type] }}</template> <template #suffix> {{ $i.notificationRecieveConfig[type]?.type === 'never' ? i18n.ts.none : diff --git a/packages/frontend/src/pages/settings/profile.vue b/packages/frontend/src/pages/settings/profile.vue index e2d98cbf29fed30c09e125f283cb2410f1379366..3e707041ebc44b86c8fe371ed6dd23ee4ebc6952 100644 --- a/packages/frontend/src/pages/settings/profile.vue +++ b/packages/frontend/src/pages/settings/profile.vue @@ -206,7 +206,7 @@ function changeAvatar(ev) { const { canceled } = await os.confirm({ type: 'question', - text: i18n.t('cropImageAsk'), + text: i18n.ts.cropImageAsk, okText: i18n.ts.cropYes, cancelText: i18n.ts.cropNo, }); @@ -232,7 +232,7 @@ function changeBanner(ev) { const { canceled } = await os.confirm({ type: 'question', - text: i18n.t('cropImageAsk'), + text: i18n.ts.cropImageAsk, okText: i18n.ts.cropYes, cancelText: i18n.ts.cropNo, }); diff --git a/packages/frontend/src/pages/settings/sounds.vue b/packages/frontend/src/pages/settings/sounds.vue index 9fbcce228656a163cd3d4e8b537d74f431f21d76..a116a0407f5923a008089c7d90e0edac7735b192 100644 --- a/packages/frontend/src/pages/settings/sounds.vue +++ b/packages/frontend/src/pages/settings/sounds.vue @@ -19,7 +19,7 @@ SPDX-License-Identifier: AGPL-3.0-only <template #label>{{ i18n.ts.sounds }}</template> <div class="_gaps_s"> <MkFolder v-for="type in operationTypes" :key="type"> - <template #label>{{ i18n.t('_sfx.' + type) }}</template> + <template #label>{{ i18n.ts._sfx[type] }}</template> <template #suffix>{{ getSoundTypeName(sounds[type].type) }}</template> <XSound :type="sounds[type].type" :volume="sounds[type].volume" :fileId="sounds[type].fileId" :fileUrl="sounds[type].fileUrl" @update="(res) => updated(type, res)"/> @@ -33,9 +33,9 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { Ref, computed, ref } from 'vue'; +import XSound from './sounds.sound.vue'; import type { SoundType, OperationType } from '@/scripts/sound.js'; import type { SoundStore } from '@/store.js'; -import XSound from './sounds.sound.vue'; import MkRange from '@/components/MkRange.vue'; import MkButton from '@/components/MkButton.vue'; import FormSection from '@/components/form/section.vue'; diff --git a/packages/frontend/src/pages/settings/theme.install.vue b/packages/frontend/src/pages/settings/theme.install.vue index 45970c88e6ce146aebb535129ea8c81423c59679..2946a43398cb43eaf937f9ba964a9e48fd647406 100644 --- a/packages/frontend/src/pages/settings/theme.install.vue +++ b/packages/frontend/src/pages/settings/theme.install.vue @@ -33,7 +33,7 @@ async function install(code: string): Promise<void> { await installTheme(code); os.alert({ type: 'success', - text: i18n.t('_theme.installed', { name: theme.name }), + text: i18n.tsx._theme.installed({ name: theme.name }), }); } catch (err) { switch (err.message.toLowerCase()) { diff --git a/packages/frontend/src/pages/settings/webhook.edit.vue b/packages/frontend/src/pages/settings/webhook.edit.vue index a122c4c819f5ee450fdb888f47ee34a3b51d5a76..d079d0f92b45ab6b51225d17eb35506cb57cbf56 100644 --- a/packages/frontend/src/pages/settings/webhook.edit.vue +++ b/packages/frontend/src/pages/settings/webhook.edit.vue @@ -99,7 +99,7 @@ async function save(): Promise<void> { async function del(): Promise<void> { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('deleteAreYouSure', { x: webhook.name }), + text: i18n.tsx.deleteAreYouSure({ x: webhook.name }), }); if (canceled) return; diff --git a/packages/frontend/src/pages/signup-complete.vue b/packages/frontend/src/pages/signup-complete.vue index 3f007b7afc9a7e2c2115b9db97e98c9d432cdf5b..4e99ef5ae74f02b477ad107c20fe9bb8e08cb626 100644 --- a/packages/frontend/src/pages/signup-complete.vue +++ b/packages/frontend/src/pages/signup-complete.vue @@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only <i class="ti ti-user-check"></i> </div> <div class="_gaps_m" style="padding: 32px;"> - <div>{{ i18n.t('clickToFinishEmailVerification', { ok: i18n.ts.gotIt }) }}</div> + <div>{{ i18n.tsx.clickToFinishEmailVerification({ ok: i18n.ts.gotIt }) }}</div> <div> <MkButton gradate large rounded type="submit" :disabled="submitting" data-cy-admin-ok style="margin: 0 auto;"> {{ submitting ? i18n.ts.processing : i18n.ts.gotIt }}<MkEllipsis v-if="submitting"/> diff --git a/packages/frontend/src/pages/theme-editor.vue b/packages/frontend/src/pages/theme-editor.vue index e14bd6d89b7874baa8d1789d69564590ab145221..738b015a99a94f9693b5454dfe903809cafc166a 100644 --- a/packages/frontend/src/pages/theme-editor.vue +++ b/packages/frontend/src/pages/theme-editor.vue @@ -208,7 +208,7 @@ async function saveAs() { changed.value = false; os.alert({ type: 'success', - text: i18n.t('_theme.installed', { name: theme.value.name }), + text: i18n.tsx._theme.installed({ name: theme.value.name }), }); } diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue index ed9722b7edf7a2562c0d032f2b21944409656b07..e8687b148b6461b694d51acc7cc75b977f98a7eb 100644 --- a/packages/frontend/src/pages/user/home.vue +++ b/packages/frontend/src/pages/user/home.vue @@ -87,7 +87,7 @@ SPDX-License-Identifier: AGPL-3.0-only </dl> <dl v-if="user.birthday" class="field"> <dt class="name"><i class="ti ti-cake ti-fw"></i> {{ i18n.ts.birthday }}</dt> - <dd class="value">{{ user.birthday.replace('-', '/').replace('-', '/') }} ({{ i18n.t('yearsOld', { age }) }})</dd> + <dd class="value">{{ user.birthday.replace('-', '/').replace('-', '/') }} ({{ i18n.tsx.yearsOld({ age }) }})</dd> </dl> <dl class="field"> <dt class="name"><i class="ti ti-calendar ti-fw"></i> {{ i18n.ts.registeredDate }}</dt> diff --git a/packages/frontend/src/scripts/get-drive-file-menu.ts b/packages/frontend/src/scripts/get-drive-file-menu.ts index 59c46c2cbc61ef360e2e29d3a27957e3fd5e335b..91b12185278ece7112a2ce262ddf6fb3159dc02b 100644 --- a/packages/frontend/src/scripts/get-drive-file-menu.ts +++ b/packages/frontend/src/scripts/get-drive-file-menu.ts @@ -66,7 +66,7 @@ function addApp() { async function deleteFile(file: Misskey.entities.DriveFile) { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('driveFileDeleteConfirm', { name: file.name }), + text: i18n.tsx.driveFileDeleteConfirm({ name: file.name }), }); if (canceled) return; diff --git a/packages/frontend/src/scripts/get-note-menu.ts b/packages/frontend/src/scripts/get-note-menu.ts index 110be244cbfac3cf758a04bd2138a77fc5e5824e..bfc3c4a8f1e6a8b9d8c8cc938d6adb4f1a94125e 100644 --- a/packages/frontend/src/scripts/get-note-menu.ts +++ b/packages/frontend/src/scripts/get-note-menu.ts @@ -47,7 +47,7 @@ export async function getNoteClipMenu(props: { if (err.id === '734806c4-542c-463a-9311-15c512803965') { const confirm = await os.confirm({ type: 'warning', - text: i18n.t('confirmToUnclipAlreadyClippedNote', { name: clip.name }), + text: i18n.tsx.confirmToUnclipAlreadyClippedNote({ name: clip.name }), }); if (!confirm.canceled) { os.apiWithDialog('clips/remove-note', { clipId: clip.id, noteId: appearNote.id }); @@ -231,7 +231,7 @@ export function getNoteMenu(props: { function share(): void { navigator.share({ - title: i18n.t('noteOf', { user: appearNote.user.name }), + title: i18n.tsx.noteOf({ user: appearNote.user.name }), text: appearNote.text, url: `${url}/notes/${appearNote.id}`, }); diff --git a/packages/frontend/src/scripts/get-note-summary.ts b/packages/frontend/src/scripts/get-note-summary.ts index 1fd9f04d4616be0fce66fdfc8d62b4087c3f7592..2007e0ea9735c9a2b46e96983aa6762f41c95d01 100644 --- a/packages/frontend/src/scripts/get-note-summary.ts +++ b/packages/frontend/src/scripts/get-note-summary.ts @@ -30,7 +30,7 @@ export const getNoteSummary = (note: Misskey.entities.Note): string => { // ファイルãŒæ·»ä»˜ã•ã‚Œã¦ã„ã‚‹ã¨ã if ((note.files || []).length !== 0) { - summary += ` (${i18n.t('withNFiles', { n: note.files.length })})`; + summary += ` (${i18n.tsx.withNFiles({ n: note.files.length })})`; } // 投票ãŒæ·»ä»˜ã•ã‚Œã¦ã„ã‚‹ã¨ã diff --git a/packages/frontend/src/scripts/i18n.ts b/packages/frontend/src/scripts/i18n.ts index 3366f3eac36b3c5b6519e5f46a5c2cceda2c3a28..6aa1468e87c19fbd89f2dcd4fa010f30d506358f 100644 --- a/packages/frontend/src/scripts/i18n.ts +++ b/packages/frontend/src/scripts/i18n.ts @@ -14,37 +14,39 @@ type FlattenKeys<T extends ILocale, TPrediction> = keyof { : never]: T[K]; }; -type ParametersOf<T extends ILocale, TKey extends FlattenKeys<T, ParameterizedString<string>>> = T extends ILocale - ? TKey extends `${infer K}.${infer C}` - // @ts-expect-error -- C ã¯æ˜Žã‚‰ã‹ã« FlattenKeys<T[K], ParameterizedString<string>> ã«ãªã‚‹ãŒã€åž‹ã‚·ã‚¹ãƒ†ãƒ ã¯ã“ã“ã§ã¯ TKey ãŒãƒ‰ãƒƒãƒˆåŒºåˆ‡ã‚Šã§ã‚ã‚‹ã“ã¨ã®ã‚³ãƒ³ãƒ†ã‚ストをæŒãŸãªã„ã®ã§ã€åž‹ã‚·ã‚¹ãƒ†ãƒ ã«åˆæ³•ã«ã¦ç¤ºã™ã“ã¨ã¯ã§ããªã„。 - ? ParametersOf<T[K], C> - : TKey extends keyof T - ? T[TKey] extends ParameterizedString<infer P> - ? P - : never +type ParametersOf<T extends ILocale, TKey extends FlattenKeys<T, ParameterizedString>> = TKey extends `${infer K}.${infer C}` + // @ts-expect-error -- C ã¯æ˜Žã‚‰ã‹ã« FlattenKeys<T[K], ParameterizedString> ã«ãªã‚‹ãŒã€åž‹ã‚·ã‚¹ãƒ†ãƒ ã¯ã“ã“ã§ã¯ TKey ãŒãƒ‰ãƒƒãƒˆåŒºåˆ‡ã‚Šã§ã‚ã‚‹ã“ã¨ã®ã‚³ãƒ³ãƒ†ã‚ストをæŒãŸãªã„ã®ã§ã€åž‹ã‚·ã‚¹ãƒ†ãƒ ã«åˆæ³•ã«ã¦ç¤ºã™ã“ã¨ã¯ã§ããªã„。 + ? ParametersOf<T[K], C> + : TKey extends keyof T + ? T[TKey] extends ParameterizedString<infer P> + ? P : never - : never; + : never; -type Ts<T extends ILocale> = { - readonly [K in keyof T as T[K] extends ParameterizedString<string> ? never : K]: T[K] extends ILocale ? Ts<T[K]> : string; +type Tsx<T extends ILocale> = { + readonly [K in keyof T as T[K] extends string ? never : K]: T[K] extends ParameterizedString<infer P> + ? (arg: { readonly [_ in P]: string | number }) => string + // @ts-expect-error -- 証明çœç•¥ + : Tsx<T[K]>; }; export class I18n<T extends ILocale> { - constructor(private locale: T) { + private tsxCache?: Tsx<T>; + + constructor(public locale: T) { //#region BIND this.t = this.t.bind(this); //#endregion } - public get ts(): Ts<T> { + public get ts(): T { if (_DEV_) { - class Handler<TTarget extends object> implements ProxyHandler<TTarget> { + class Handler<TTarget extends ILocale> implements ProxyHandler<TTarget> { get(target: TTarget, p: string | symbol): unknown { const value = target[p as keyof TTarget]; if (typeof value === 'object') { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- 実際ã«ã¯ null ãŒãã‚‹ã“ã¨ã¯ãªã„ã®ã§ã€‚ - return new Proxy(value!, new Handler<TTarget[keyof TTarget] & object>()); + return new Proxy(value, new Handler<TTarget[keyof TTarget] & ILocale>()); } if (typeof value === 'string') { @@ -63,19 +65,148 @@ export class I18n<T extends ILocale> { } } - return new Proxy(this.locale, new Handler()) as Ts<T>; + return new Proxy(this.locale, new Handler()); } - return this.locale as Ts<T>; + return this.locale; + } + + public get tsx(): Tsx<T> { + if (_DEV_) { + if (this.tsxCache) { + return this.tsxCache; + } + + class Handler<TTarget extends ILocale> implements ProxyHandler<TTarget> { + get(target: TTarget, p: string | symbol): unknown { + const value = target[p as keyof TTarget]; + + if (typeof value === 'object') { + return new Proxy(value, new Handler<TTarget[keyof TTarget] & ILocale>()); + } + + if (typeof value === 'string') { + const quasis: string[] = []; + const expressions: string[] = []; + let cursor = 0; + + while (~cursor) { + const start = value.indexOf('{', cursor); + + if (!~start) { + quasis.push(value.slice(cursor)); + break; + } + + quasis.push(value.slice(cursor, start)); + + const end = value.indexOf('}', start); + + expressions.push(value.slice(start + 1, end)); + + cursor = end + 1; + } + + if (!expressions.length) { + console.error(`Unexpected locale key: ${String(p)}`); + + return () => value; + } + + return (arg) => { + let str = quasis[0]; + + for (let i = 0; i < expressions.length; i++) { + if (!Object.hasOwn(arg, expressions[i])) { + console.error(`Missing locale parameters: ${expressions[i]} at ${String(p)}`); + } + + str += arg[expressions[i]] + quasis[i + 1]; + } + + return str; + }; + } + + console.error(`Unexpected locale key: ${String(p)}`); + + return p; + } + } + + return this.tsxCache = new Proxy(this.locale, new Handler()) as unknown as Tsx<T>; + } + + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (this.tsxCache) { + return this.tsxCache; + } + + function build(target: ILocale): Tsx<T> { + const result = {} as Tsx<T>; + + for (const k in target) { + if (!Object.hasOwn(target, k)) { + continue; + } + + const value = target[k as keyof typeof target]; + + if (typeof value === 'object') { + result[k] = build(value as ILocale); + } else if (typeof value === 'string') { + const quasis: string[] = []; + const expressions: string[] = []; + let cursor = 0; + + while (~cursor) { + const start = value.indexOf('{', cursor); + + if (!~start) { + quasis.push(value.slice(cursor)); + break; + } + + quasis.push(value.slice(cursor, start)); + + const end = value.indexOf('}', start); + + expressions.push(value.slice(start + 1, end)); + + cursor = end + 1; + } + + if (!expressions.length) { + continue; + } + + result[k] = (arg) => { + let str = quasis[0]; + + for (let i = 0; i < expressions.length; i++) { + str += arg[expressions[i]] + quasis[i + 1]; + } + + return str; + }; + } + } + return result; + } + + return this.tsxCache = build(this.locale); } /** - * @deprecated ãªã‚‹ã¹ãã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ä½¿ã†ã‚ˆã‚Šã‚‚ locale 直接å‚ç…§ã®æ–¹ãŒ vue ã®ã‚ャッシュ効ã„ã¦ãƒ‘フォーマンスãŒè‰¯ã„ã‹ã‚‚ + * @deprecated ãªã‚‹ã¹ãã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ä½¿ã†ã‚ˆã‚Šã‚‚ ts 直接å‚ç…§ã®æ–¹ãŒ vue ã®ã‚ャッシュ効ã„ã¦ãƒ‘フォーマンスãŒè‰¯ã„ã‹ã‚‚ */ public t<TKey extends FlattenKeys<T, string>>(key: TKey): string; - public t<TKey extends FlattenKeys<T, ParameterizedString<string>>>(key: TKey, args: { readonly [_ in ParametersOf<T, TKey>]: string | number }): string; + /** + * @deprecated ãªã‚‹ã¹ãã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ä½¿ã†ã‚ˆã‚Šã‚‚ tsx 直接å‚ç…§ã®æ–¹ãŒ vue ã®ã‚ャッシュ効ã„ã¦ãƒ‘フォーマンスãŒè‰¯ã„ã‹ã‚‚ + */ + public t<TKey extends FlattenKeys<T, ParameterizedString>>(key: TKey, args: { readonly [_ in ParametersOf<T, TKey>]: string | number }): string; public t(key: string, args?: { readonly [_: string]: string | number }) { - let str: string | ParameterizedString<string> | ILocale = this.locale; + let str: string | ParameterizedString | ILocale = this.locale; for (const k of key.split('.')) { str = str[k]; @@ -113,3 +244,51 @@ export class I18n<T extends ILocale> { return str; } } + +if (import.meta.vitest) { + const { describe, expect, it } = import.meta.vitest; + + describe('i18n', () => { + it('t', () => { + const i18n = new I18n({ + foo: 'foo', + bar: { + baz: 'baz', + qux: 'qux {0}' as unknown as ParameterizedString<'0'>, + quux: 'quux {0} {1}' as unknown as ParameterizedString<'0' | '1'>, + }, + }); + + expect(i18n.t('foo')).toBe('foo'); + expect(i18n.t('bar.baz')).toBe('baz'); + expect(i18n.tsx.bar.qux({ 0: 'hoge' })).toBe('qux hoge'); + expect(i18n.tsx.bar.quux({ 0: 'hoge', 1: 'fuga' })).toBe('quux hoge fuga'); + }); + it('ts', () => { + const i18n = new I18n({ + foo: 'foo', + bar: { + baz: 'baz', + qux: 'qux {0}' as unknown as ParameterizedString<'0'>, + quux: 'quux {0} {1}' as unknown as ParameterizedString<'0' | '1'>, + }, + }); + + expect(i18n.ts.foo).toBe('foo'); + expect(i18n.ts.bar.baz).toBe('baz'); + }); + it('tsx', () => { + const i18n = new I18n({ + foo: 'foo', + bar: { + baz: 'baz', + qux: 'qux {0}' as unknown as ParameterizedString<'0'>, + quux: 'quux {0} {1}' as unknown as ParameterizedString<'0' | '1'>, + }, + }); + + expect(i18n.tsx.bar.qux({ 0: 'hoge' })).toBe('qux hoge'); + expect(i18n.tsx.bar.quux({ 0: 'hoge', 1: 'fuga' })).toBe('quux hoge fuga'); + }); + }); +} diff --git a/packages/frontend/src/ui/deck.vue b/packages/frontend/src/ui/deck.vue index 304ebbf0b210fa6f0e1f0dcef91687f5cb7bddb5..f58756b284f94ea4c2f5bac077f5f06aa70ad280 100644 --- a/packages/frontend/src/ui/deck.vue +++ b/packages/frontend/src/ui/deck.vue @@ -189,7 +189,7 @@ const addColumn = async (ev) => { const { canceled, result: column } = await os.select({ title: i18n.ts._deck.addColumn, items: columns.map(column => ({ - value: column, text: i18n.t('_deck._columns.' + column), + value: column, text: i18n.ts._deck._columns[column], })), }); if (canceled) return; @@ -197,7 +197,7 @@ const addColumn = async (ev) => { addColumnToStore({ type: column, id: uuid(), - name: i18n.t('_deck._columns.' + column), + name: i18n.ts._deck._columns[column], width: 330, }); }; @@ -256,7 +256,7 @@ function changeProfile(ev: MouseEvent) { async function deleteProfile() { const { canceled } = await os.confirm({ type: 'warning', - text: i18n.t('deleteAreYouSure', { x: deckStore.state.profile }), + text: i18n.tsx.deleteAreYouSure({ x: deckStore.state.profile }), }); if (canceled) return; diff --git a/packages/frontend/src/widgets/WidgetCalendar.vue b/packages/frontend/src/widgets/WidgetCalendar.vue index c78e291a2e467f4686ef641614d90ebed744e750..5bd16584d2e30f6a3795bf7489145a20b4a703a9 100644 --- a/packages/frontend/src/widgets/WidgetCalendar.vue +++ b/packages/frontend/src/widgets/WidgetCalendar.vue @@ -7,11 +7,11 @@ SPDX-License-Identifier: AGPL-3.0-only <div :class="[$style.root, { _panel: !widgetProps.transparent }]" data-cy-mkw-calendar> <div :class="[$style.calendar, { [$style.isHoliday]: isHoliday }]"> <p :class="$style.monthAndYear"> - <span :class="$style.year">{{ i18n.t('yearX', { year }) }}</span> - <span :class="$style.month">{{ i18n.t('monthX', { month }) }}</span> + <span :class="$style.year">{{ i18n.tsx.yearX({ year }) }}</span> + <span :class="$style.month">{{ i18n.tsx.monthX({ month }) }}</span> </p> - <p v-if="month === 1 && day === 1" class="day">🎉{{ i18n.t('dayX', { day }) }}<span style="display: inline-block; transform: scaleX(-1);">🎉</span></p> - <p v-else :class="$style.day">{{ i18n.t('dayX', { day }) }}</p> + <p v-if="month === 1 && day === 1" class="day">🎉{{ i18n.tsx.dayX({ day }) }}<span style="display: inline-block; transform: scaleX(-1);">🎉</span></p> + <p v-else :class="$style.day">{{ i18n.tsx.dayX({ day }) }}</p> <p :class="$style.weekDay">{{ weekDay }}</p> </div> <div :class="$style.info"> diff --git a/packages/frontend/src/widgets/WidgetSlideshow.vue b/packages/frontend/src/widgets/WidgetSlideshow.vue index 94bf6d7eecb277dc107a491244fc537d626372a7..f2fc24ddf7492c31a623df1ea96701564eea6335 100644 --- a/packages/frontend/src/widgets/WidgetSlideshow.vue +++ b/packages/frontend/src/widgets/WidgetSlideshow.vue @@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only <p v-if="widgetProps.folderId == null"> {{ i18n.ts.folder }} </p> - <p v-if="widgetProps.folderId != null && images.length === 0 && !fetching">{{ i18n.t('no-image') }}</p> + <p v-if="widgetProps.folderId != null && images.length === 0 && !fetching">{{ i18n.ts['no-image'] }}</p> <div ref="slideA" class="slide a"></div> <div ref="slideB" class="slide b"></div> </div> diff --git a/packages/frontend/src/widgets/WidgetTimeline.vue b/packages/frontend/src/widgets/WidgetTimeline.vue index 8f46bc020615f0cebef06075803b6a6451f7d0d2..f1e489763421be0987c677f7517612d52761711b 100644 --- a/packages/frontend/src/widgets/WidgetTimeline.vue +++ b/packages/frontend/src/widgets/WidgetTimeline.vue @@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only </template> <template #header> <button class="_button" @click="choose"> - <span>{{ widgetProps.src === 'list' ? widgetProps.list.name : widgetProps.src === 'antenna' ? widgetProps.antenna.name : i18n.t('_timelines.' + widgetProps.src) }}</span> + <span>{{ widgetProps.src === 'list' ? widgetProps.list.name : widgetProps.src === 'antenna' ? widgetProps.antenna.name : i18n.ts._timelines[widgetProps.src] }}</span> <i :class="menuOpened ? 'ti ti-chevron-up' : 'ti ti-chevron-down'" style="margin-left: 8px;"></i> </button> </template> diff --git a/packages/frontend/src/widgets/WidgetTrends.vue b/packages/frontend/src/widgets/WidgetTrends.vue index 35925a9088ea7c1b224e4b779b4ee008214e1afe..65d9235565c5c7311bf7c4968642e2eb24759641 100644 --- a/packages/frontend/src/widgets/WidgetTrends.vue +++ b/packages/frontend/src/widgets/WidgetTrends.vue @@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div v-for="stat in stats" :key="stat.tag"> <div class="tag"> <MkA class="a" :to="`/tags/${ encodeURIComponent(stat.tag) }`" :title="stat.tag">#{{ stat.tag }}</MkA> - <p>{{ i18n.t('nUsersMentioned', { n: stat.usersCount }) }}</p> + <p>{{ i18n.tsx.nUsersMentioned({ n: stat.usersCount }) }}</p> </div> <MkMiniChart class="chart" :src="stat.chart"/> </div> diff --git a/packages/frontend/tsconfig.json b/packages/frontend/tsconfig.json index 5d451c878c00749486f09a3c818d3bce2008c44b..819629a9cf8aafe01b2473a2b7a5c2cb72377141 100644 --- a/packages/frontend/tsconfig.json +++ b/packages/frontend/tsconfig.json @@ -33,6 +33,7 @@ ], "types": [ "vite/client", + "vitest/importMeta", ], "lib": [ "esnext", diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index 84fe9e44df7732f02b8a4d73825270d8b8134246..df37192583ae8f6945b4cc5a21af52c85bff7625 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -155,6 +155,7 @@ export function getConfig(): UserConfig { }, }, }, + includeSource: ['src/**/*.ts'], }, }; }