i18n(panel): migrate hardcoded panel strings to en-US and translate all locales

Surface ~400 hardcoded English labels, tooltips, placeholders, dt/divider
text, modal okText/cancelText, and Spin loading from the panel pages
(clients/groups/inbounds/nodes/settings/xray/sub/index) into
web/translation/en-US.json under existing pages.<page>.* namespaces, with
JSX swapped to t(...). Brand and protocol identifiers (TLS, MTU, SNI,
NordVPN, Cloudflare WARP, etc.) stay literal.

Sync all 12 non-English locales (ar-EG, es-ES, fa-IR, id-ID, ja-JP,
pt-BR, ru-RU, tr-TR, uk-UA, vi-VN, zh-CN, zh-TW) to match en-US's
structure and translate the 521 new key paths per locale. Every locale
file now has 1539 lines, mirroring en-US ordering.

Also remove a dead duplicate "info": "Info" key under pages.inbounds
that collided with the new pages.inbounds.info.* object.

Backend: bulk attach/detach errors in web/service/client.go now route
through logger.Warningf (so they appear under /panel/api/server/logs/)
instead of only living on the response payload.
This commit is contained in:
MHSanaei
2026-05-28 18:03:07 +02:00
parent 0829f1ecd4
commit 72b97efa8a
34 changed files with 6391 additions and 1125 deletions
+469 -52
View File
@@ -8,15 +8,22 @@
"save": "保存",
"logout": "ログアウト",
"create": "作成",
"add": "追加",
"remove": "削除",
"update": "更新",
"copy": "コピー",
"copied": "コピー済み",
"more": "もっと",
"download": "ダウンロード",
"remark": "備考",
"enable": "有効化",
"protocol": "プロトコル",
"search": "検索",
"filter": "フィルタ",
"filter": "フィルタ",
"all": "すべて",
"from": "から",
"to": "まで",
"done": "完了",
"loading": "読み込み中...",
"refresh": "更新",
"clear": "クリア",
@@ -41,7 +48,7 @@
"transmission": "伝送",
"host": "ホスト",
"path": "パス",
"camouflage": "偽装",
"camouflage": "難読化",
"status": "ステータス",
"enabled": "有効",
"disabled": "無効",
@@ -95,11 +102,12 @@
"dark": "ダーク",
"ultraDark": "ウルトラダーク",
"dashboard": "ダッシュボード",
"inbounds": "インバウンド一覧",
"inbounds": "インバウンド",
"clients": "クライアント",
"groups": "グループ",
"nodes": "ノード",
"settings": "パネル設定",
"xray": "Xray設定",
"xray": "Xray 設定",
"apiDocs": "API ドキュメント",
"logout": "ログアウト",
"link": "リンク管理",
@@ -123,7 +131,7 @@
"cpu": "CPU",
"logicalProcessors": "論理プロセッサ",
"frequency": "周波数",
"swap": "スワップ",
"swap": "Swap",
"storage": "ストレージ",
"memory": "RAM",
"threads": "スレッド",
@@ -241,7 +249,7 @@
"getConfigError": "設定ファイルの取得中にエラーが発生しました"
},
"inbounds": {
"title": "インバウンド一覧",
"title": "インバウンド",
"totalDownUp": "総アップロード / ダウンロード",
"totalUsage": "総使用量",
"inboundCount": "インバウンド数",
@@ -252,7 +260,7 @@
"deployTo": "デプロイ先",
"localPanel": "ローカルパネル",
"fallbacks": {
"title": "フォールバック",
"title": "Fallbacks",
"help": "このインバウンドへの接続がどのクライアントにも一致しない場合、別のインバウンドへルーティングします。下から子インバウンドを選ぶと、ルーティング項目(SNI / ALPN / Path / xver)はその子のトランスポートから自動的に埋められます — ほとんどの構成で追加の調整は不要です。各子インバウンドは 127.0.0.1 で security=none をリッスンする必要があります。",
"empty": "フォールバックはまだありません",
"add": "フォールバックを追加",
@@ -273,11 +281,11 @@
"portMap": "ポートマッピング",
"traffic": "トラフィック",
"details": "詳細情報",
"transportConfig": "トランスポート設定",
"transportConfig": "トランスポート",
"expireDate": "有効期限",
"createdAt": "作成",
"updatedAt": "更新",
"resetTraffic": "トラフィックリセット",
"resetTraffic": "トラフィックリセット",
"addInbound": "インバウンド追加",
"generalActions": "一般操作",
"modifyInbound": "インバウンド修正",
@@ -292,6 +300,24 @@
"delAllClients": "すべてのクライアントを削除",
"delAllClientsConfirmTitle": "「{remark}」から {count} 件のクライアントをすべて削除しますか?",
"delAllClientsConfirmContent": "このインバウンドからすべてのクライアントを削除し、トラフィックレコードも破棄します。インバウンド自体は保持されます。この操作は取り消せません。",
"attachClients": "クライアントをアタッチ…",
"addClientsToGroup": "クライアントをグループに追加…",
"attachClientsTitle": "「{remark}」のクライアントをアタッチ",
"attachClientsDesc": "同じ {count} クライアント(同じ UUID/パスワードと共有トラフィック)を選択したインバウンドにアタッチします。このインバウンドにも残ります。",
"attachClientsTargets": "ターゲットインバウンド",
"attachClientsNoTargets": "アタッチ可能な互換インバウンドがありません。",
"attachClientsResult": "アタッチ {attached}、スキップ {skipped}。",
"attachClientsResultMixed": "アタッチ {attached}、スキップ {skipped}、エラー {errors}。",
"attachClientsSelectLabel": "アタッチするクライアント",
"attachClientsSearchPlaceholder": "メールまたはコメントを検索",
"attachClientsStatusDisabled": "無効",
"attachClientsSelectedCount": "{total} 中 {selected} 選択中",
"detachClients": "クライアントをデタッチ",
"detachClientsTitle": "「{remark}」のクライアントをデタッチ",
"detachClientsDesc": "選択したクライアントをこのインバウンドのみから外します。クライアントレコードは保持されます (完全に削除するには Delete を使用)。ソースには合計 {count} クライアントがあります。",
"detachClientsResult": "デタッチ {detached}、スキップ {skipped}。",
"detachClientsResultMixed": "デタッチ {detached}、スキップ {skipped}、エラー {errors}。",
"detachClientsSelectLabel": "デタッチするクライアント",
"exportLinksTitle": "インバウンドリンクのエクスポート",
"exportSubsTitle": "サブスクリプションリンクのエクスポート",
"exportAllLinksTitle": "全インバウンドリンクのエクスポート",
@@ -306,7 +332,7 @@
"destinationPort": "宛先ポート",
"targetAddress": "宛先アドレス",
"monitorDesc": "空白にするとすべてのIPを監視",
"meansNoLimit": "= 無制限(単位:GB",
"meansNoLimit": "= 無制限。(単位: GB)",
"totalFlow": "総トラフィック",
"leaveBlankToNeverExpire": "空白にすると期限なし",
"noRecommendKeepDefault": "デフォルト値を保持することをお勧めします",
@@ -333,7 +359,7 @@
"delDepletedClients": "トラフィックが尽きたクライアントを削除",
"delDepletedClientsTitle": "トラフィックが尽きたクライアントを削除",
"delDepletedClientsContent": "トラフィックが尽きたすべてのクライアントを削除してもよろしいですか?",
"email": "メールアドレス",
"email": "メール",
"emailDesc": "メールアドレスは一意でなければなりません",
"IPLimit": "IP制限",
"IPLimitDesc": "設定値を超えるとインバウンドトラフィックが無効になります。(0 = 無効)",
@@ -341,9 +367,10 @@
"IPLimitlogDesc": "IP履歴ログ(無効なインバウンドトラフィックを有効にするには、ログをクリアしてください)",
"IPLimitlogclear": "ログをクリア",
"setDefaultCert": "パネル設定から証明書を設定",
"streamTab": "ストリーム",
"setDefaultCertEmpty": "パネル用の証明書が設定されていません。先に設定から指定してください。",
"streamTab": "Stream",
"securityTab": "セキュリティ",
"sniffingTab": "スニッフィング",
"sniffingTab": "Sniffing",
"sniffingMetadataOnly": "メタデータのみ",
"sniffingRouteOnly": "ルーティングのみ",
"sniffingIpsExcluded": "除外する IP",
@@ -361,15 +388,14 @@
"allHelp": "すべてのフィールドを含むインバウンドオブジェクト全体を 1 つのエディターで編集します。",
"settings": "設定",
"settingsHelp": "Xray settings ブロックのラッパー:",
"sniffing": "スニッフィング",
"sniffing": "Sniffing",
"sniffingHelp": "Xray sniffing ブロックのラッパー:",
"stream": "ストリーム",
"stream": "Stream",
"streamHelp": "Xray stream ブロックのラッパー:",
"jsonErrorPrefix": "高度な JSON"
},
"telegramDesc": "TelegramチャットIDを提供してください。(ボットで'/id'コマンドを使用)または({'@'}userinfobot",
"subscriptionDesc": "サブスクリプションURLを見つけるには、“詳細情報”に移動してください。また、複数のクライアントに同じ名前を使用することができます。",
"info": "情報",
"same": "同じ",
"inboundData": "インバウンドデータ",
"exportInbound": "インバウンドルールをエクスポート",
@@ -406,6 +432,139 @@
"getNewmldsa65Error": "mldsa65証明書の取得中にエラーが発生しました。",
"getNewVlessEncError": "VlessEnc証明書の取得中にエラーが発生しました。"
},
"form": {
"moveUp": "上へ",
"moveDown": "下へ",
"addAll": "すべて追加",
"addAllFallbackTooltip": "まだ接続されていないすべての対象インバウンドに対し fallback 行を追加",
"peers": "Peers",
"addPeer": "peer を追加",
"keepAlive": "Keep-alive",
"autoSystemRoutesTooltip": "Windows のみ。CIDR はシステムルーティングテーブルに自動追加され、一致するトラフィックは TUN を経由します。",
"autoOutboundsInterface": "自動アウトバウンドインターフェース",
"autoOutboundsInterfaceTooltip": "アウトバウンドトラフィック用の物理インターフェース。検出には 'auto' を使用; Auto system routes が設定されていると自動的に有効。",
"rewriteAddress": "アドレス書き換え",
"rewritePort": "ポート書き換え",
"allowedNetwork": "許可されたネットワーク",
"followRedirect": "リダイレクトに従う",
"accounts": "アカウント",
"allowTransparent": "透過を許可",
"encryptionMethod": "暗号化方式",
"visionTestseed": "Vision testseed",
"version": "バージョン",
"udpIdleTimeout": "UDP idle timeout (秒)",
"masquerade": "Masquerade",
"type": "種類",
"upstreamUrl": "Upstream URL",
"rewriteHost": "Host 書き換え",
"skipTlsVerify": "TLS 検証をスキップ",
"directory": "ディレクトリ",
"statusCode": "ステータスコード",
"body": "Body",
"headers": "ヘッダー",
"proxyProtocol": "Proxy Protocol",
"requestVersion": "リクエストバージョン",
"requestMethod": "リクエストメソッド",
"requestPath": "リクエストパス",
"requestHeaders": "リクエストヘッダー",
"responseVersion": "レスポンスバージョン",
"responseStatus": "レスポンスステータス",
"responseReason": "レスポンス理由",
"responseHeaders": "レスポンスヘッダー",
"heartbeatPeriod": "ハートビート間隔",
"serviceName": "サービス名",
"authority": "Authority",
"multiMode": "Multi Mode",
"maxBufferedUpload": "最大バッファアップロード",
"maxUploadSize": "最大アップロードサイズ (バイト)",
"streamUpServer": "Stream-Up Server",
"serverMaxHeaderBytes": "サーバー最大ヘッダーバイト",
"paddingBytes": "Padding バイト",
"uplinkHttpMethod": "Uplink HTTP メソッド",
"paddingObfsMode": "Padding 難読化モード",
"paddingKey": "Padding Key",
"paddingHeader": "Padding Header",
"paddingPlacement": "Padding 配置",
"paddingMethod": "Padding 方法",
"sessionPlacement": "Session Placement",
"sessionKey": "Session Key",
"sequencePlacement": "Sequence Placement",
"sequenceKey": "Sequence Key",
"uplinkDataPlacement": "Uplink Data Placement",
"uplinkDataKey": "Uplink Data Key",
"noSseHeader": "SSE ヘッダーなし",
"ttiMs": "TTI (ms)",
"uplinkMbps": "アップリンク (MB/s)",
"downlinkMbps": "ダウンリンク (MB/s)",
"cwndMultiplier": "CWND 倍率",
"maxSendingWindow": "最大送信ウィンドウ",
"externalProxy": "外部プロキシ",
"sniPlaceholder": "SNI (デフォルトは host)",
"fingerprint": "Fingerprint",
"defaultOption": "デフォルト",
"routeMark": "Route Mark",
"tcpKeepAliveInterval": "TCP Keep Alive Interval",
"tcpKeepAliveIdle": "TCP Keep Alive Idle",
"tcpMaxSeg": "TCP Max Seg",
"tcpUserTimeout": "TCP User Timeout",
"tcpWindowClamp": "TCP Window Clamp",
"tcpFastOpen": "TCP Fast Open",
"multipathTcp": "Multipath TCP",
"penetrate": "Penetrate",
"v6Only": "V6 のみ",
"tcpCongestion": "TCP Congestion",
"dialerProxy": "Dialer Proxy",
"trustedXForwardedFor": "信頼できる X-Forwarded-For",
"addressPortStrategy": "アドレス+ポート戦略",
"tryDelayMs": "試行遅延 (ms)",
"prioritizeIPv6": "IPv6 優先",
"interleave": "Interleave",
"maxConcurrentTry": "最大同時試行",
"customSockopt": "カスタム sockopt",
"addCustomOption": "カスタムオプション追加",
"serverNameIndication": "SNI",
"cipherSuites": "Cipher Suites",
"autoOption": "自動",
"minMaxVersion": "最小/最大バージョン",
"rejectUnknownSni": "未知の SNI を拒否",
"disableSystemRoot": "System Root を無効化",
"sessionResumption": "セッション再開",
"oneTimeLoading": "一度のみ読み込み",
"usageOption": "使用オプション",
"buildChain": "Build Chain",
"echKey": "ECH key",
"echConfig": "ECH config",
"getNewEchCert": "新しい ECH 証明書を取得",
"show": "表示",
"xver": "Xver",
"target": "ターゲット",
"maxTimeDiff": "最大時間差 (ms)",
"minClientVer": "最小クライアントバージョン",
"maxClientVer": "最大クライアントバージョン",
"shortIds": "Short IDs",
"spiderX": "SpiderX",
"getNewCert": "新しい証明書を取得",
"mldsa65Seed": "mldsa65 Seed",
"mldsa65Verify": "mldsa65 Verify",
"getNewSeed": "新しい Seed を取得"
},
"info": {
"mode": "モード",
"grpcServiceName": "grpc serviceName",
"grpcMultiMode": "grpc multiMode",
"interfaceName": "インターフェース名",
"mtu": "MTU",
"gateway": "Gateway",
"dns": "DNS",
"outboundsInterface": "アウトバウンドインターフェース",
"autoSystemRoutes": "自動システムルート",
"followRedirect": "FollowRedirect",
"auth": "Auth",
"noKernelTun": "非カーネル TUN",
"keepAlive": "Keep alive",
"peerNumber": "Peer {n}",
"peerNumberConfig": "Peer {n} 設定"
},
"stream": {
"general": {
"request": "リクエスト",
@@ -456,6 +615,20 @@
"days": "日",
"renew": "自動更新",
"renewDesc": "有効期限切れ後に自動更新します。(0 = 無効) (単位: 日)",
"searchPlaceholder": "メール、コメント、sub ID、UUID、パスワード、auth を検索…",
"filterTitle": "クライアントをフィルタ",
"clearAllFilters": "すべてクリア",
"sortOldest": "古い順",
"sortNewest": "新しい順",
"sortRecentlyUpdated": "最近更新",
"sortRecentlyOnline": "最近オンライン",
"sortEmailAZ": "メール A→Z",
"sortEmailZA": "メール Z→A",
"sortMostTraffic": "トラフィック多い順",
"sortHighestRemaining": "残量多い順",
"sortExpiringSoonest": "もうすぐ期限切れ",
"has": "あり",
"hasNot": "なし",
"title": "クライアント",
"actions": "操作",
"totalGB": "送受信合計 (GB)",
@@ -466,6 +639,9 @@
"subId": "サブスクリプション ID",
"online": "オンライン",
"email": "メール",
"group": "グループ",
"groupDesc": "関連クライアントをまとめる論理ラベル(チーム、顧客、地域など)。ツールバーからフィルタ可能。",
"groupPlaceholder": "例: customer-a",
"comment": "コメント",
"traffic": "トラフィック",
"offline": "オフライン",
@@ -489,11 +665,45 @@
"resetAllTraffics": "すべてのクライアントのトラフィックをリセット",
"resetAllTrafficsTitle": "すべてのクライアントのトラフィックをリセットしますか?",
"resetAllTrafficsContent": "すべてのクライアントの送受信カウンターがゼロにリセットされます。クォータと有効期限には影響しません。元に戻せません。",
"empty": "クライアントはまだいません — 1 つ追加して始めましょう。",
"deleteConfirmTitle": "クライアント {email} を削除しますか?",
"deleteConfirmContent": "クライアントを関連付けされたすべてのインバウンドから削除し、トラフィック記録も破棄します。元に戻せません。",
"deleteSelected": "削除 ({count})",
"adjustSelected": "調整 ({count})",
"subLinksSelected": "サブリンク ({count})",
"addToGroupTitle": "{count} クライアントをグループに追加",
"addToGroupTooltip": "既存のグループを選ぶか新しい名前を入力してください。Ungroup で現在のグループから外せます。",
"addToGroupPlaceholder": "グループ名",
"addToGroupSuccessToast": "{count} クライアントを {group} に追加しました",
"ungroupSuccessToast": "{count} クライアントのグループをクリアしました",
"ungroup": "グループ解除",
"ungroupConfirmTitle": "{count} クライアントをグループから外しますか?",
"ungroupConfirmContent": "選択したクライアントのグループラベルをクリアします。クライアント自体は保持されます (完全に削除するには Delete を使用)。",
"addToGroup": "グループに追加",
"attach": "アタッチ",
"adjust": "調整",
"subLinks": "サブリンク",
"selectedCount": "{count} 選択中",
"attachSelected": "アタッチ ({count})",
"attachToInboundsTitle": "{count} クライアントをインバウンドにアタッチ",
"attachToInboundsDesc": "選択した {count} クライアント(同じ UUID/パスワードと共有トラフィック)を選択したインバウンドにアタッチします。既存のアタッチは維持されます。",
"attachToInboundsTargets": "ターゲットインバウンド",
"attachToInboundsNoTargets": "アタッチ可能なマルチユーザーインバウンドがありません。",
"detachSelected": "デタッチ ({count})",
"detach": "デタッチ",
"detachFromInboundsTitle": "{count} クライアントをインバウンドからデタッチ",
"detachFromInboundsDesc": "選択した {count} クライアントを選択したインバウンドから外します。アタッチされていなかったペアは黙ってスキップされます。クライアントレコードは保持されます (完全に削除するには Delete を使用)。",
"detachFromInboundsTargets": "デタッチ対象のインバウンド",
"detachFromInboundsNoTargets": "マルチユーザーインバウンドがありません。",
"detachFromInboundsResult": "デタッチ {detached}、スキップ {skipped}。",
"detachFromInboundsResultMixed": "デタッチ {detached}、スキップ {skipped}、エラー {errors}。",
"subLinksTitle": "サブリンク ({count})",
"subLinkColumn": "サブスクリプション URL",
"subJsonLinkColumn": "サブスクリプション JSON URL",
"subLinksCopyAll": "すべてコピー",
"subLinksCopiedAll": "{count} リンクをコピーしました",
"subLinksEmpty": "選択したクライアントにはサブスクリプション ID がありません。",
"subLinksDisabled": "サブスクリプションサービスは無効です。",
"subLinksDisabledHint": "リンクを生成するにはパネル設定 → サブスクリプションで有効にしてください。",
"bulkDeleteConfirmTitle": "{count} 件のクライアントを削除しますか?",
"bulkDeleteConfirmContent": "選択された各クライアントを関連付けされたすべてのインバウンドから削除し、トラフィック記録も破棄します。元に戻せません。",
"bulkAdjustTitle": "{count} 件のクライアントを調整",
@@ -505,9 +715,10 @@
"delDepletedConfirmTitle": "使い切ったクライアントを削除しますか?",
"delDepletedConfirmContent": "トラフィック上限に達したか有効期限が切れたクライアントをすべて削除します。元に戻せません。",
"auth": "Auth",
"hysteriaAuth": "Auth (Hysteria)",
"hysteriaAuth": "Hysteria Auth",
"uuid": "UUID",
"flow": "Flow",
"vmessSecurity": "VMess セキュリティ",
"reverseTag": "Reverse tag",
"reverseTagPlaceholder": "任意の Reverse tag",
"telegramId": "Telegram ユーザー ID",
@@ -528,10 +739,48 @@
"delDepleted": "使い切った {count} 件のクライアントを削除しました"
}
},
"groups": {
"title": "グループ",
"name": "名前",
"clientCount": "グループ内のクライアント",
"totalGroups": "グループ合計",
"totalGroupedClients": "グループのあるクライアント",
"emptyGroups": "空のグループ",
"addGroup": "グループ追加",
"createSuccess": "グループ「{name}」を作成しました。",
"rename": "名前変更",
"renameTitle": "{name} の名前を変更",
"renameCollision": "「{name}」という名前のグループは既に存在します。",
"renameSuccess": "{count} クライアントのグループ名を変更しました。",
"deleteConfirmTitle": "グループ {name} を削除?",
"deleteConfirmContent": "これはグループを削除し、{count} クライアントのラベルをクリアします。クライアント自体は削除されません。",
"deleteSuccess": "{count} クライアントのグループをクリアしました。",
"resetTraffic": "トラフィックをリセット",
"resetConfirmTitle": "グループ {name} のトラフィックをリセット?",
"resetConfirmContent": "このグループ内のすべての {count} クライアントの up/down をゼロにします。",
"resetSuccess": "{count} クライアントのトラフィックをリセットしました。",
"adjustSuccess": "{name} 内の {count} クライアントを調整しました。",
"emptyForAction": "このグループにはまだクライアントがありません。",
"deleteGroupOnly": "グループ削除 (クライアントは保持)",
"deleteClients": "グループのクライアントを削除",
"deleteClientsConfirmTitle": "{name} 内のすべてのクライアントを削除?",
"deleteClientsConfirmContent": "これは {count} クライアントとそのトラフィック記録を永久に削除します。グループラベルもクリアされます。取り消せません。",
"deleteClientsSuccess": "{count} クライアントを削除しました。",
"deleteClientsMixed": "{ok} 削除、{failed} スキップ",
"addToGroup": "クライアントを追加…",
"addToGroupTitle": "グループ「{name}」にクライアントを追加",
"addToGroupDesc": "このグループに追加するクライアントを選択してください。既存のインバウンドアタッチは保持され、グループラベルのみ変更されます。すでにこのグループにいるクライアントは表示されません。",
"addToGroupEmpty": "追加可能な他のクライアントはありません。",
"addToGroupResult": "{count} クライアントを {name} に追加しました。",
"removeFromGroup": "クライアントを削除…",
"removeFromGroupTitle": "グループ「{name}」からクライアントを削除",
"removeFromGroupDesc": "このグループから外すメンバーを選択してください。クライアント自体は保持されます (完全に削除するには「グループのクライアントを削除」を使用)。",
"removeFromGroupResult": "{count} クライアントを {name} から外しました。"
},
"nodes": {
"title": "ノード",
"addNode": "ノードを追加",
"editNode": "ノード編集",
"editNode": "ノード編集",
"totalNodes": "ノード総数",
"onlineNodes": "オンライン",
"offlineNodes": "オフライン",
@@ -544,7 +793,7 @@
"address": "アドレス",
"port": "ポート",
"basePath": "ベースパス",
"apiToken": "APIトークン",
"apiToken": "API トークン",
"apiTokenPlaceholder": "リモートパネルの設定ページから取得したトークン",
"apiTokenHint": "リモートパネルでは、設定 → APIトークン でAPIトークンを確認できます。",
"regenerate": "トークンを再生成",
@@ -590,7 +839,7 @@
"title": "パネル設定",
"save": "保存",
"infoDesc": "ここでのすべての変更は、保存してパネルを再起動する必要があります",
"restartPanel": "パネル再起動",
"restartPanel": "パネル再起動",
"restartPanelDesc": "パネルを再起動してもよろしいですか?再起動後にパネルにアクセスできない場合は、サーバーでパネルログを確認してください",
"restartPanelSuccess": "パネルの再起動に成功しました",
"actions": "操作",
@@ -604,7 +853,7 @@
"warnDefaultBasePath": "デフォルトのベースパス \"/\" はよく知られています — ランダムなパスに変更してください。",
"warnDefaultSubPath": "デフォルトのサブスクリプションパス \"/sub/\" はよく知られています — 変更してください。",
"warnDefaultJsonPath": "デフォルトの JSON サブスクリプションパス \"/json/\" はよく知られています — 変更してください。",
"TGBotSettings": "Telegramボット設定",
"TGBotSettings": "Telegram Bot",
"panelListeningIP": "パネル監視IP",
"panelListeningIPDesc": "デフォルトではすべてのIPを監視する",
"panelListeningDomain": "パネル監視ドメイン",
@@ -615,10 +864,12 @@
"publicKeyPathDesc": "'/'で始まる絶対パスを入力",
"privateKeyPath": "パネル証明書秘密鍵ファイルパス",
"privateKeyPathDesc": "'/'で始まる絶対パスを入力",
"panelUrlPath": "パネルURLルートパス",
"panelUrlPath": "URI パス",
"panelUrlPathDesc": "'/'で始まり、'/'で終わる必要があります",
"pageSize": "ページサイズ",
"pageSizeDesc": "インバウンドテーブルのページサイズを定義します。0を設定すると無効化されます",
"panelProxy": "パネルネットワークプロキシ",
"panelProxyDesc": "パネル自体のアウトバウンドリクエスト (geo 更新、Xray/パネルバージョンチェック、Telegram) をこのプロキシ経由でルーティングし、サーバー側の GitHub/Telegram フィルタリングを回避します。socks5:// または http(s):// を受け付けます。例: ローカルの Xray SOCKS インバウンド。直接接続するには空のままにします。",
"remarkModel": "備考モデルと区切り記号",
"datepicker": "日付ピッカー",
"datepickerPlaceholder": "日付を選択",
@@ -630,11 +881,11 @@
"newPassword": "新しいパスワード",
"telegramBotEnable": "Telegramボットを有効にする",
"telegramBotEnableDesc": "Telegramボット機能を有効にする",
"telegramToken": "Telegramボットトークン",
"telegramToken": "Telegram トークン",
"telegramTokenDesc": "'{'@'}BotFather'から取得したTelegramボットトークン",
"telegramProxy": "SOCKS5プロキシ",
"telegramProxy": "SOCKS プロキシ",
"telegramProxyDesc": "SOCKS5プロキシを有効にしてTelegramに接続する(ガイドに従って設定を調整)",
"telegramAPIServer": "Telegram APIサーバー",
"telegramAPIServer": "Telegram API サーバー",
"telegramAPIServerDesc": "使用するTelegram APIサーバー。空白の場合はデフォルトサーバーを使用する",
"telegramChatId": "管理者チャットID",
"telegramChatIdDesc": "Telegram管理者チャットID(複数の場合はカンマで区切る){'@'}userinfobotで取得するか、ボットで'/id'コマンドを使用して取得する",
@@ -658,6 +909,8 @@
"subEnable": "サブスクリプションサービスを有効にする",
"subEnableDesc": "サブスクリプションサービス機能を有効にする",
"subJsonEnable": "JSON サブスクリプションのエンドポイントを個別に有効/無効にする。",
"subJsonEnableTitle": "JSON サブスクリプション",
"subClashEnableTitle": "Clash / Mihomo サブスクリプション",
"subTitle": "サブスクリプションタイトル",
"subTitleDesc": "VPNクライアントに表示されるタイトル",
"subSupportUrl": "サポートURL",
@@ -678,7 +931,7 @@
"subCertPathDesc": "サブスクリプションサービスで使用する公開鍵ファイルのパス('/'で始まる)",
"subKeyPath": "秘密鍵パス",
"subKeyPathDesc": "サブスクリプションサービスで使用する秘密鍵ファイルのパス('/'で始まる)",
"subPath": "URIパス",
"subPath": "URI パス",
"subPathDesc": "サブスクリプションサービスで使用するURIパス('/'で始まり、'/'で終わる)",
"subDomain": "監視ドメイン",
"subDomainDesc": "サブスクリプションサービスが監視するドメイン(空白にするとすべてのドメインとIPを監視)",
@@ -693,7 +946,7 @@
"subURI": "リバースプロキシURI",
"subURIDesc": "プロキシ後ろのサブスクリプションURLのURIパスに使用する",
"externalTrafficInformEnable": "外部トラフィック情報",
"externalTrafficInformEnableDesc": "トラフィック更新ごとに外部 API に通知します。",
"externalTrafficInformEnableDesc": "トラフィック更新ごとに外部 API に通知。",
"externalTrafficInformURI": "外部トラフィック通知 URI",
"externalTrafficInformURIDesc": "トラフィックの更新ごとに外部 API に通知します。",
"restartXrayOnClientDisable": "自動無効化後に Xray を再起動",
@@ -703,7 +956,55 @@
"fragmentSett": "設定",
"noisesDesc": "Noisesを有効にする",
"noisesSett": "Noises設定",
"mux": "マルチプレクサ",
"trustedProxyCidrs": "信頼できるプロキシ CIDR",
"trustedProxyCidrsDesc": "転送される host、proto、クライアント IP ヘッダーを設定可能な IP/CIDR (カンマ区切り)。",
"ldap": {
"enable": "LDAP 同期を有効化",
"host": "LDAP host",
"port": "LDAP ポート",
"useTls": "TLS (LDAPS) を使用",
"bindDn": "Bind DN",
"passwordConfigured": "設定済み;現在のパスワードを保持するには空のままにします。",
"passwordUnconfigured": "未設定。",
"passwordPlaceholder": "設定済み — 置き換えるには新しい値を入力",
"baseDn": "Base DN",
"userFilter": "ユーザーフィルター",
"userAttr": "ユーザー属性 (username/email)",
"vlessField": "VLESS flag 属性",
"flagField": "汎用 flag 属性 (任意)",
"flagFieldDesc": "設定すると VLESS flag を上書きします — 例: shadowInactive。",
"truthyValues": "Truthy 値",
"truthyValuesDesc": "カンマ区切り;デフォルト: true,1,yes,on",
"invertFlag": "flag を反転",
"invertFlagDesc": "属性が「無効」を意味する場合に有効化 (例: shadowInactive)。",
"syncSchedule": "同期スケジュール",
"syncScheduleDesc": "cron 風の文字列、例 @every 1m",
"inboundTags": "インバウンドタグ",
"inboundTagsDesc": "LDAP 同期がクライアントを自動作成/削除できるインバウンド。",
"noInbounds": "インバウンドが見つかりません。先にインバウンドで作成してください。",
"autoCreate": "クライアントを自動作成",
"autoDelete": "クライアントを自動削除",
"defaultTotalGb": "デフォルト合計 (GB)",
"defaultExpiryDays": "デフォルト有効期限 (日)",
"defaultIpLimit": "デフォルト IP 制限"
},
"subFormats": {
"packets": "パケット",
"length": "長さ",
"interval": "間隔",
"maxSplit": "最大分割",
"noises": "ノイズ",
"noiseItem": "ノイズ №{n}",
"type": "種類",
"packet": "パケット",
"delayMs": "遅延 (ms)",
"applyTo": "適用先",
"addNoise": "+ ノイズ",
"concurrency": "並行数",
"xudpConcurrency": "xudp 並行数",
"xudpUdp443": "xudp UDP 443"
},
"mux": "Mux",
"muxDesc": "確立されたストリーム内で複数の独立したストリームを伝送する",
"muxSett": "マルチプレクサ設定",
"direct": "直接接続",
@@ -756,8 +1057,11 @@
"xray": {
"title": "Xray 設定",
"save": "保存",
"restart": "Xray 再起動",
"restart": "Xray 再起動",
"restartSuccess": "Xrayの再起動に成功しました",
"restartOutputTitle": "Xray 再起動の出力",
"restartConfirmTitle": "xray を再起動?",
"restartConfirmContent": "保存された構成で xray サービスを再ロードします。",
"stopSuccess": "Xrayが正常に停止しました",
"restartError": "Xrayの再起動中にエラーが発生しました。",
"stopError": "Xrayの停止中にエラーが発生しました。",
@@ -790,10 +1094,12 @@
"outboundTestUrl": "アウトバウンドテスト URL",
"outboundTestUrlDesc": "アウトバウンド接続テストに使用する URL。既定値",
"Torrent": "BitTorrent プロトコルをブロック",
"Inbounds": "インバウンドルール",
"Inbounds": "インバウンド",
"InboundsDesc": "特定のクライアントからのトラフィックを受け入れる",
"Outbounds": "アウトバウンドルール",
"Outbounds": "アウトバウンド",
"Balancers": "負荷分散",
"balancerTagRequired": "タグは必須です",
"balancerSelectorRequired": "アウトバウンドを少なくとも1つ選んでください",
"OutboundsDesc": "アウトバウンドトラフィックの送信方法を設定する",
"Routings": "ルーティングルール",
"RoutingsDesc": "各ルールの優先順位が重要です",
@@ -832,6 +1138,73 @@
"edit": "ルール編集",
"useComma": "カンマ区切りの項目"
},
"routing": {
"dragToReorder": "ドラッグして並べ替え"
},
"ruleForm": {
"sourceIps": "送信元 IP",
"sourcePort": "送信元ポート",
"vlessRoute": "VLESS ルート",
"attributes": "属性",
"value": "値",
"user": "ユーザー",
"inboundTags": "インバウンドタグ",
"outboundTag": "アウトバウンドタグ",
"balancerTag": "バランサータグ",
"balancerTagTooltip": "設定済みのロードバランサーの1つを通じてトラフィックをルーティング"
},
"outboundForm": {
"tagDuplicate": "このタグは他のアウトバウンドで使用されています",
"tagRequired": "タグは必須です",
"tagPlaceholder": "一意のタグ",
"localIpPlaceholder": "ローカル IP",
"addressRequired": "アドレスは必須です",
"portRequired": "ポートは必須です",
"optional": "任意",
"udpOverTcp": "UDP over TCP",
"uotVersion": "UoT バージョン",
"inboundTag": "インバウンドタグ",
"inboundTagPlaceholder": "ルーティングルールで使うインバウンドタグ",
"responseType": "レスポンスタイプ",
"rewriteNetwork": "ネットワーク書き換え",
"unchanged": "(変更なし)",
"unchangedAddress": "(変更なし) 例: 1.1.1.1",
"rules": "ルール",
"ruleN": "ルール {n}",
"action": "アクション",
"redirect": "Redirect",
"fragment": "Fragment",
"finalRules": "最終ルール",
"overrideXrayPrivateIp": "Xray のデフォルトプライベート IP ブロックを上書き",
"blockDelay": "ブロック遅延 (ms)",
"reverseSniffing": "逆 sniffing",
"workers": "Workers",
"reserved": "予約",
"minUploadInterval": "最小アップロード間隔 (ms)",
"maxUploadSizeBytes": "最大アップロードサイズ (バイト)",
"uplinkChunkSize": "Uplink チャンクサイズ",
"noGrpcHeader": "gRPC ヘッダーなし",
"maxConcurrency": "最大同時実行数",
"maxConnections": "最大接続数",
"maxReuseTimes": "最大再利用回数",
"maxRequestTimes": "最大リクエスト回数",
"maxReusableSecs": "最大再利用秒数",
"keepAlivePeriod": "keep alive 周期",
"authPassword": "Auth パスワード",
"visionTestpre": "Vision testpre",
"serverNamePlaceholder": "サーバー名",
"verifyPeerName": "peer 名を検証",
"pinnedSha256": "Pinned SHA256",
"shortId": "Short ID",
"sockopts": "Sockopts",
"keepAliveInterval": "keep alive 間隔",
"markFwmark": "Mark (fwmark)",
"interface": "インターフェース",
"ipv6Only": "IPv6 のみ",
"acceptProxyProtocol": "proxy protocol を受け入れる",
"tcpUserTimeoutMs": "TCP user timeout (ms)",
"tcpKeepAliveIdleS": "TCP keep-alive idle (秒)"
},
"outbound": {
"addOutbound": "アウトバウンド追加",
"addReverse": "リバース追加",
@@ -846,8 +1219,8 @@
"reverse": "リバース",
"domain": "ドメイン",
"type": "タイプ",
"bridge": "ブリッジ",
"portal": "ポータル",
"bridge": "Bridge",
"portal": "Portal",
"link": "リンク",
"intercon": "インターコネクション",
"settings": "設定",
@@ -860,6 +1233,8 @@
"testSuccess": "テスト成功",
"testFailed": "テスト失敗",
"testError": "アウトバウンドのテストに失敗しました",
"testModeTooltip": "TCP: 高速 dial-only プローブ。HTTP: xray を経由した完全リクエスト。",
"testAll": "すべてテスト",
"nordvpn": "NordVPN",
"accessToken": "アクセストークン",
"country": "国",
@@ -876,6 +1251,16 @@
"balancerSelectors": "セレクター",
"tag": "タグ",
"tagDesc": "一意のタグ",
"tagDuplicate": "このタグは他のバランサーで使用されています",
"tagPlaceholder": "一意のバランサータグ",
"selector": "セレクター",
"fallback": "Fallback",
"expected": "期待値",
"expectedPlaceholder": "最適ノード数",
"maxRtt": "最大 RTT",
"tolerance": "許容範囲",
"baselines": "Baselines",
"costs": "Costs",
"balancerDesc": "balancerTagとoutboundTagは同時に使用できません。同時に使用された場合、outboundTagのみが有効になります。"
},
"wireguard": {
@@ -892,6 +1277,38 @@
"userLevel": "ユーザーレベル",
"userLevelDesc": "このインバウンドを通じて確立されたすべての接続は、このユーザーレベルを使用します。デフォルトは 0 です"
},
"nord": {
"accessToken": "Access token",
"privateKey": "秘密鍵",
"noServers": "選択した国のサーバーが見つかりません",
"noPublicKey": "選択したサーバーは NordLynx 公開鍵を公開していません。",
"outboundAdded": "NordVPN アウトバウンドを追加しました",
"outboundUpdated": "NordVPN アウトバウンドを更新しました"
},
"warp": {
"licenseError": "WARP ライセンスの設定に失敗しました。",
"fetchFirst": "先に WARP 構成を取得してください。",
"createAccount": "WARP アカウントを作成",
"accessToken": "Access token",
"deviceId": "デバイス ID",
"licenseKey": "ライセンスキー",
"privateKey": "秘密鍵",
"deleteAccount": "アカウントを削除",
"settings": "設定",
"licenseKeyLabel": "WARP / WARP+ ライセンスキー",
"key": "キー",
"keyPlaceholder": "26文字の WARP+ キー",
"accountInfo": "アカウント情報",
"deviceName": "デバイス名",
"deviceModel": "デバイスモデル",
"deviceEnabled": "デバイス有効",
"accountType": "アカウントタイプ",
"role": "役割",
"warpPlusData": "WARP+ データ",
"quota": "クォータ",
"usage": "使用量",
"addOutbound": "アウトバウンドを追加"
},
"dns": {
"enable": "DNSを有効にする",
"enableDesc": "組み込みDNSサーバーを有効にする",
@@ -992,35 +1409,35 @@
"2faFailed": "2FAエラー",
"report": "🕰 定期報告:{{ .RunTime }}\r\n",
"datetime": "⏰ 日時:{{ .DateTime }}\r\n",
"hostname": "💻 ホスト名:{{ .Hostname }}\r\n",
"hostname": "💻 ホスト: {{ .Hostname }}\r\n",
"version": "🚀 X-UI バージョン:{{ .Version }}\r\n",
"xrayVersion": "📡 Xray バージョン: {{ .XrayVersion }}\r\n",
"ipv6": "🌐 IPv6{{ .IPv6 }}\r\n",
"ipv4": "🌐 IPv4{{ .IPv4 }}\r\n",
"ip": "🌐 IP{{ .IP }}\r\n",
"ips": "🔢 IPアドレス:\r\n{{ .IPs }}\r\n",
"ipv6": "🌐 IPv6: {{ .IPv6 }}\r\n",
"ipv4": "🌐 IPv4: {{ .IPv4 }}\r\n",
"ip": "🌐 IP: {{ .IP }}\r\n",
"ips": "🔢 IP:\r\n{{ .IPs }}\r\n",
"serverUpTime": "⏳ サーバー稼働時間:{{ .UpTime }} {{ .Unit }}\r\n",
"serverLoad": "📈 サーバー負荷:{{ .Load1 }}, {{ .Load2 }}, {{ .Load3 }}\r\n",
"serverMemory": "📋 サーバーメモリ:{{ .Current }}/{{ .Total }}\r\n",
"tcpCount": "🔹 TCP接続数:{{ .Count }}\r\n",
"udpCount": "🔸 UDP接続数:{{ .Count }}\r\n",
"serverMemory": "📋 RAM: {{ .Current }}/{{ .Total }}\r\n",
"tcpCount": "🔹 TCP: {{ .Count }}\r\n",
"udpCount": "🔸 UDP: {{ .Count }}\r\n",
"traffic": "🚦 トラフィック:{{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n",
"xrayStatus": "Xrayステータス{{ .State }}\r\n",
"xrayStatus": "️ ステータス: {{ .State }}\r\n",
"username": "👤 ユーザー名:{{ .Username }}\r\n",
"reason": "❗️ 理由:{{ .Reason }}\r\n",
"time": "⏰ 時間:{{ .Time }}\r\n",
"inbound": "📍 インバウンド{{ .Remark }}\r\n",
"port": "🔌 ポート{{ .Port }}\r\n",
"inbound": "📍 インバウンド: {{ .Remark }}\r\n",
"port": "🔌 ポート: {{ .Port }}\r\n",
"expire": "📅 有効期限:{{ .Time }}\r\n",
"expireIn": "📅 残り時間:{{ .Time }}\r\n",
"active": "💡 有効:{{ .Enable }}\r\n",
"enabled": "🚨 有効化済み:{{ .Enable }}\r\n",
"online": "🌐 接続ステータス:{{ .Status }}\r\n",
"lastOnline": "🔙 最終オンライン: {{ .Time }}\r\n",
"email": "📧 メール{{ .Email }}\r\n",
"upload": "🔼 アップロード↑{{ .Upload }}\r\n",
"download": "🔽 ダウンロード↓{{ .Download }}\r\n",
"total": "📊 合計{{ .UpDown }} / {{ .Total }}\r\n",
"email": "📧 メール: {{ .Email }}\r\n",
"upload": "🔼 アップロード: ↑{{ .Upload }}\r\n",
"download": "🔽 ダウンロード: ↓{{ .Download }}\r\n",
"total": "📊 合計: ↑↓{{ .UpDown }} / {{ .Total }}\r\n",
"TGUser": "👤 Telegramユーザー:{{ .TelegramID }}\r\n",
"exhaustedMsg": "🚨 消耗済みの {{ .Type }}\r\n",
"exhaustedCount": "🚨 消耗済みの {{ .Type }} 数量:\r\n",
@@ -1089,9 +1506,9 @@
"use_default": "🏷️ デフォルトを使用",
"change_id": "⚙️🔑 ID",
"change_password": "⚙️🔑 パスワード",
"change_email": "⚙️📧 メールアドレス",
"change_email": "⚙️📧 メール",
"change_comment": "⚙️💬 コメント",
"change_flow": "⚙️🚦 フロー",
"change_flow": "⚙️🚦 Flow",
"ResetAllTraffics": "すべてのトラフィックをリセット",
"SortedTrafficUsageReport": "ソートされたトラフィック使用レポート"
},
@@ -1119,4 +1536,4 @@
"chooseInbound": "インバウンドを選択"
}
}
}
}