From 56fc9ea428fdd180b4f6961ef81216b4519ed631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=98=AD?= <81747598+lan-yonghui@users.noreply.github.com> Date: Tue, 7 Jan 2025 12:19:33 +0800 Subject: [PATCH] feat: Improve international language proficiency (#7656) --- frontend/src/lang/modules/en.ts | 4 +- frontend/src/lang/modules/ja.ts | 162 +++++++++--------- frontend/src/lang/modules/ms.ts | 6 +- frontend/src/lang/modules/pt-br.ts | 6 +- frontend/src/lang/modules/ru.ts | 9 +- frontend/src/lang/modules/tw.ts | 4 +- frontend/src/lang/modules/zh.ts | 4 +- .../src/views/host/file-management/index.vue | 2 +- .../src/views/login/components/login-form.vue | 2 +- frontend/src/views/setting/panel/index.vue | 2 +- 10 files changed, 101 insertions(+), 100 deletions(-) diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 83bf682de..aebd20a88 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -1273,7 +1273,7 @@ const message = { unsupportedType: 'Unsupported file type', deleteHelper: 'Are you sure you want to delete the following files? By default, it will enter the recycle bin after deletion', - fileHeper: `Note:\n1. Search results can't be sorted.\n2. Folders can't be sorted by size.`, + fileHelper: `Note:\n1. Search results can't be sorted.\n2. Folders can't be sorted by size.`, forceDeleteHelper: 'Permanently delete the file (without entering the recycle bin, delete it directly)', recycleBin: 'Recycle bin', sourcePath: 'Original path', @@ -1392,7 +1392,7 @@ const message = { title: 'Panel alias', panelPort: 'Panel port', titleHelper: - 'Supports non-special character starting, English, Chinese, numbers, spaces, .- and _, length 3-30', + 'Supports a length of 3 to 30 characters, including English letters, Chinese characters, numbers, spaces, and common special characters', portHelper: 'The recommended port range is 8888 to 65535. Note: If the server has a security group, permit the new port from the security group in advance', portChange: 'Port change', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 4e4424c5b..3ad20de41 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -1,4 +1,4 @@ -import fit2cloudEnLocale from 'fit2cloud-ui-plus/src/locale/lang/en'; +import fit2cloudEnLocale from 'fit2cloud-ui-plus/src/locale/lang/ja'; let xpackJpLocale = {}; const xpackModules = import.meta.glob('../../xpack/lang/ja.ts', { eager: true }); if (xpackModules['../../xpack/lang/ja.ts']) { @@ -9,7 +9,7 @@ const message = { commons: { true: '真実', false: '間違い', - colon: ':', + colon: ':', example: '例えば、', fit2cloud: 'FIT2CLOUD', lingxia: 'Lingxia', @@ -163,7 +163,7 @@ const message = { errorCaptcha: 'Captchaコードエラー!', notSafe: 'アクセスが拒否されました', safeEntrance1: '安全なログインは現在の環境で有効になっています', - safeEntrance2: 'SSH端末に次のコマンドを入力して、パネルエントリを表示します:1PCTLユーザー-INFO', + safeEntrance2: 'SSH端末に次のコマンドを入力して、パネルエントリを表示します:1PCTLユーザー-INFO', errIP1: '現在の環境で認定されたIPアドレスアクセスが有効になっています', errDomain1: 'アクセスドメイン名のバインディングが現在の環境で有効になっています', errHelper: 'バインディング情報をリセットするには、SSH端末で次のコマンドを実行します。', @@ -194,7 +194,7 @@ const message = { simplePassword: `このフィールドは、アンダースコアキャラクターから始めてはなりません。長さ1〜30の英語、数字、「_」文字で構成されている必要があります。`, dbName: `このフィールドは、アンダースコアキャラクターから始めてはなりません。長さ1〜64の英語、数字、「_」文字で構成されている必要があります。`, imageName: - 'このフィールドは、英語、数字、 ":"、 "@"、 "/"、 "、"、 "、および" _ "文字で構成されている必要があります。', + 'このフィールドは、英語、数字、 ":"、 "@"、 "/"、 "、"、 "、および" _ "文字で構成されている必要があります。', composeName: '最初の特別な文字、小文字、数字、_、長さ1-256をサポートします', volumeName: 'このフィールドは、英語、数字、「。」、「 - 」、および「_」文字で構成されている必要があります。', @@ -212,25 +212,25 @@ const message = { hostHelper: 'IPアドレスまたはドメイン名の入力をサポートします', port: 'このフィールドは有効なポート番号でなければなりません。', selectHelper: '正しい{0}ファイルを選択してください', - domain: 'このフィールドは、example.comまたはexample.com:8080のようなものでなければなりません。', + domain: 'このフィールドは、example.comまたはexample.com:8080のようなものでなければなりません。', databaseName: 'このフィールドは、長さ1〜30の英語、数字、「_」文字で構成されている必要があります。', ipErr: 'このフィールドは有効なIPアドレスでなければなりません。', numberRange: 'このフィールドは、{0}と{1}の間の数字でなければなりません。', paramName: 'このフィールドは、英語、数字、「。」、「 - 」、および「_」文字で構成されている必要があります。', paramComplexity: `このフィールドは、特殊文字で開始および終了する必要はなく、英語、数字「{0}」文字で構成されている必要があります。`, paramUrlAndPort: - 'このフィールドは、「http(s)://(domain name/ip):(ポート)」の形式でなければなりません。', + 'このフィールドは、「http(s)://(domain name/ip):(ポート)」の形式でなければなりません。', nginxDoc: 'このフィールドは、英語、数字、「」で構成されている必要があります。文字。', appName: `このフィールドは、「 - 」と「_」文字で開始および終了してはなりません。英語、数字、 "、および「_」文字で2〜30の文字で構成されている必要があります。`, - containerName: '文字、数字、 - 、_および。;- _または。で始めることはできません。長さ:2-128', - mirror: 'ミラーアクセラレーションアドレスは、http(s)://、英語の文字(大文字と小文字の両方)、数字をサポートする必要があります。/および - 、そして空白の行を含めてはなりません。', + containerName: '文字、数字、 - 、_および。;- _または。で始めることはできません。長さ:2-128', + mirror: 'ミラーアクセラレーションアドレスは、http(s)://、英語の文字(大文字と小文字の両方)、数字をサポートする必要があります。/および - 、そして空白の行を含めてはなりません。', disableFunction: 'サポートレター、アンダースコア、および', leechExts: 'サポートレター、数字、および', paramSimple: '小文字と数字をサポート、長さ1〜128', filePermission: 'ファイル許可エラー', formatErr: 'フォーマットエラー、チェックして再試行してください', phpExtension: '_小文字の英語と数字のみをサポートします', - paramHttp: 'http://またはhttps://で始める必要があります', + paramHttp: 'http://またはhttps://で始める必要があります', phone: '電話番号の形式は正しくありません', }, res: { @@ -427,7 +427,7 @@ const message = { backupList: 'バックアップ', loadBackup: '輸入', remoteAccess: 'リモートアクセス', - remoteHelper: '複数のIP Comma delimited、例:172.16.10.111、172.16.10.112', + remoteHelper: '複数のIP Comma delimited、例:172.16.10.111、172.16.10.112', remoteConnHelper: 'ユーザールートとしてのMySQLへのリモート接続には、セキュリティリスクがある場合があります。したがって、この操作を慎重に実行します。', changePassword: 'パスワード', @@ -451,8 +451,8 @@ const message = { remote: 'リモート', remoteDB: 'リモートサーバー|リモートサーバー', manageRemoteDB: 'リモートDB', - createRemoteDB: 'bind @.lower:database.remotedb', - unBindRemoteDB: 'unbind @.lower:database.remotedb', + createRemoteDB: 'bind @.lower:database.remotedb', + unBindRemoteDB: 'unbind @.lower:database.remotedb', unBindForce: '強制バインド', unBindForceHelper: '結合プロセス中にすべてのエラーを無視して、最終操作が成功するようにします', unBindRemoteHelper: @@ -476,7 +476,7 @@ const message = { dropHelper: 'ここでアップロードされたファイルをドラッグアンドドロップするか、', clickHelper: 'クリックしてアップロードします', supportUpType: 'SQL、SQL.GZ、およびTAR.GZファイルのみがサポートされています', - zipFormat: 'tar.gz圧縮パッケージ構造:test.tar.gz圧縮パッケージにはtest.sqlが含まれている必要があります', + zipFormat: 'tar.gz圧縮パッケージ構造:test.tar.gz圧縮パッケージにはtest.sqlが含まれている必要があります', currentStatus: '現在の状態', baseParam: '基本パラメーター', @@ -590,7 +590,7 @@ const message = { container: { create: 'コンテナを作成します', edit: 'コンテナを編集します', - updateHelper1: 'このコンテナがアプリストアから取得されたことを検出しました。以下の2点にご注意ください:', + updateHelper1: 'このコンテナがアプリストアから取得されたことを検出しました。以下の2点にご注意ください:', updateHelper2: '1.現在の変更内容は、アプリストアにインストールされているアプリケーションには同期されません。', updateHelper3: '2.インストールされているページでアプリケーションを変更すると、現在編集されているコンテンツが無効になります。', @@ -624,7 +624,7 @@ const message = { networkPruneHelper: 'これにより、すべての未使用ネットワークが削除されます。続けたいですか?', volumePrune: 'プルーン', volumePruneHelper: 'これにより、未使用のすべてのローカルボリュームが削除されます。続けたいですか?', - cleanSuccess: '操作は成功しました。このクリーンアップの数:{0}!', + cleanSuccess: '操作は成功しました。このクリーンアップの数:{0}!', cleanSuccessWithSpace: '操作は成功しています。今回クリーニングされたディスクの数は{0}です。解放されたディスクスペースは{1}です!', container: 'コンテナ|コンテナ', @@ -654,8 +654,8 @@ const message = { cpuShare: 'CPU共有', cpuShareHelper: 'コンテナエンジンは、CPU株に1024の基本値を使用します。それを増やして、コンテナにCPU時間を増やすことができます。', - inputIpv4: '例:192.168.1.1', - inputIpv6: '例:2001:0DB8:85A3:0000:0000:8A2E:0370:7334', + inputIpv4: '例:192.168.1.1', + inputIpv6: '例:2001:0DB8:85A3:0000:0000:8A2E:0370:7334', containerFromAppHelper: 'このコンテナがアプリストアから取得されたことが検出されました。アプリの操作により、現在の編集が無効になる可能性があります。', @@ -671,9 +671,9 @@ const message = { privileged: '特権', privilegedHelper: 'コンテナがホストに特定の特権操作を実行できるようにします。これにより、コンテナのリスクが増加する可能性があります。注意して使用してください!', - editComposeHelper: '注:環境変数セットは、デフォルトで1Panel.ENVファイルに書き込まれます。', + editComposeHelper: '注:環境変数セットは、デフォルトで1Panel.ENVファイルに書き込まれます。', - upgradeHelper: 'リポジトリ名/画像名:画像バージョン', + upgradeHelper: 'リポジトリ名/画像名:画像バージョン', upgradeWarning2: 'アップグレード操作では、コンテナを再構築する必要があります。続けたいですか?', oldImage: '現在の画像', targetImage: 'ターゲット画像', @@ -684,12 +684,12 @@ const message = { forcePull: '常に画像を引っ張ってください', forcePullHelper: 'これにより、サーバー上の既存の画像が無視され、レジストリから最新の画像が引き出されます。', server: 'ホスト', - serverExample: '80、80-88、IP:80またはIP:80-88', + serverExample: '80、80-88、IP:80またはIP:80-88', containerExample: '80または80-88', exposePort: 'ポートを公開します', exposeAll: 'すべてを公開します', - cmdHelper: '例:nginx -g "daemon off;"', - entrypointHelper: '例:docker-entrypoint.sh', + cmdHelper: '例:nginx -g "daemon off;"', + entrypointHelper: '例:docker-entrypoint.sh', autoRemove: '自動削除', cpuQuota: 'CPUコアの数', memoryLimit: 'メモリ', @@ -739,10 +739,10 @@ const message = { from: 'から', tag: 'タグ', tagHelper: '1行に1つ。たとえば、 nkey1 = value1 nkey2 = value2', - imageNameHelper: '画像名とタグ、例:nginx:最新', + imageNameHelper: '画像名とタグ、例:nginx:最新', cleanBuildCache: 'クリーンビルドキャッシュ', delBuildCacheHelper: `これにより、ビルド中に生成され、元に戻すことができないすべてのキャッシュされたアーティファクトが削除されます。続けたいですか?`, - urlWarning: 'URLプレフィックスには、http://またはhttps://を含める必要はありません。変更してください。', + urlWarning: 'URLプレフィックスには、http://またはhttps://を含める必要はありません。変更してください。', network: 'ネットワーク|ネットワーク', networkHelper: @@ -777,12 +777,12 @@ const message = { repoHelper: 'ミラーリポジトリ/組織/プロジェクトが含まれていますか?', auth: '認証が必要です', mirrorHelper: - '複数のミラーがある場合、たとえばnewlinesを表示する必要があります:Nhttp://xxxxxxMDaocloudIo Nhttps://xxxxxxMirrorAliyuncsCom', + '複数のミラーがある場合、たとえばnewlinesを表示する必要があります:Nhttp://xxxxxxMDaocloudIo Nhttps://xxxxxxMirrorAliyuncsCom', registrieHelper: '複数のプライベートリポジトリが存在する場合、たとえばnewlinesを表示する必要があります。', compose: '構成|作曲', fromChangeHelper: 'ソースを切り替えると、現在の編集されたコンテンツがきれいになります。続けたいですか?', - composePathHelper: '構成ファイル保存パス:{0}', + composePathHelper: '構成ファイル保存パス:{0}', composeHelper: '1パネルの編集者またはテンプレートを介して作成された構成は、{0}/docker/composeディレクトリに保存されます。', deleteFile: 'ファイルを削除します', @@ -842,7 +842,7 @@ const message = { startIn: '開始する', sockPath: 'UNIXドメインソケット', sockPathHelper: 'Dockerデーモンとクライアントの間のコミュニケーションチャネル。', - sockPathHelper1: 'デフォルトパス:/var/run/docker-x.sock', + sockPathHelper1: 'デフォルトパス:/var/run/docker-x.sock', sockPathMsg: 'ソケットパスの設定を保存すると、Dockerサービスが利用できなくなる可能性があります。続けたいですか?', sockPathErr: '正しいDockerソックファイルパスを選択または入力してください', @@ -944,7 +944,7 @@ const message = { cutWebsiteLogHelper: '回転したログファイルは、1パネルのバックアップディレクトリにバックアップされます。', requestExpirationTime: 'リクエストの有効期限(時間)のアップロード', - unitHours: 'ユニット:時間', + unitHours: 'ユニット:時間', alertTitle: '計画タスク - {0}「{1}」タスク障害アラート', }, monitor: { @@ -1133,9 +1133,9 @@ const message = { infectedFiles: '感染したファイル', log: '詳細', clamConf: 'クラマブデーモン', - clamLog: '@:toolbox.clam.clamconfログ', + clamLog: '@:toolbox.clam.clamconfログ', freshClam: 'フレッシュクラム', - freshClamLog: '@:toolbox.clam.freshclamログ', + freshClamLog: '@:toolbox.clam.freshclamログ', alertHelper: 'Professionalバージョンは、スケジュールされたスキャンとSMSアラートをサポートしています', alertTitle: 'ウイルススキャンタスク({0}」感染したファイルアラートが検出されました', }, @@ -1174,13 +1174,13 @@ const message = { file: { dir: 'フォルダ', upload: 'アップロード', - uploadFile: '@:file.upload @.lower:file.file', - uploadDirectory: '@:file.upload @.lower:file.dir', + uploadFile: '@:file.upload@.lower:file.file', + uploadDirectory: '@:file.upload@.lower:file.dir', download: 'ダウンロード', fileName: 'ファイル名', search: '検索', mode: '権限', - editPermissions: '@:file.mode', + editPermissions: '編集@:file.mode', owner: '所有者', file: 'ファイル', remoteFile: 'リモコンからダウンロードしてください', @@ -1244,14 +1244,14 @@ const message = { changeOwner: 'ユーザーグループとユーザーグループを変更します', containSub: '許可変更を再帰的に適用します', ownerHelper: - 'PHP運用環境のデフォルトユーザー:ユーザーグループは1000:1000です。コンテナの内側と外側のユーザーが矛盾を示すのは普通です', + 'PHP運用環境のデフォルトユーザー:ユーザーグループは1000:1000です。コンテナの内側と外側のユーザーが矛盾を示すのは普通です', searchHelper: '*などのワイルドカードをサポート', uploadFailed: '[{0}]ファイルアップロードファイル', fileUploadStart: 'アップロード[{0}] ....', - currentSelect: '現在の選択:', + currentSelect: '現在の選択:', unsupportedType: 'サポートされていないファイルタイプ', deleteHelper: '次のファイルを削除したいですか?デフォルトでは、削除後にリサイクルビンに入ります', - fileHeper: `note:\n1.SearchResultsCan'tはソートされます。\n2.フォルダーはできます'tBeSortedBySize`, + fileHelper: `注意:1. 検索結果は並べ替え機能をサポートしていません 2. フォルダはサイズで並べ替えできません。`, forceDeleteHelper: 'ファイルを永久に削除します(リサイクルビンを入力せずに、直接削除します)', recycleBin: 'ビンをリサイクルします', sourcePath: 'オリジナルパス', @@ -1367,9 +1367,9 @@ const message = { emailHelper: 'パスワード取得用', title: 'パネルエイリアス', panelPort: 'パネルポート', - titleHelper: '特別なキャラクターの開始、英語、中国語、数字、スペース、.-および_、長さ3-30をサポートします', + titleHelper: '英語、漢字、数字、スペース、および一般的な特殊文字を含む3~30文字の長さをサポートします', portHelper: - '推奨されるポート範囲は8888〜65535です。注:サーバーにセキュリティグループがある場合は、事前にセキュリティグループから新しいポートを許可します', + '推奨されるポート範囲は8888〜65535です。注:サーバーにセキュリティグループがある場合は、事前にセキュリティグループから新しいポートを許可します', portChange: 'ポート変更', portChangeHelper: 'サービスポートを変更し、サービスを再起動します。続けたいですか?', theme: 'テーマ', @@ -1475,7 +1475,7 @@ const message = { ap_guangzhou: '広州', ap_chengdu: '成都', ap_chongqing: '唐辛子', - ap_shenzhen_fsi: '深Shenzhen Financial', + ap_shenzhen_fsi: '深圳金融', ap_shanghai_fsi: '上海金融', ap_beijing_fsi: '北京金融', ap_hongkong: '香港、中国', @@ -1492,20 +1492,21 @@ const message = { eu_frankfurt: 'フランクフルト', KODO: 'Qiniコード', scType: 'ストレージタイプ', - typeStandard: '標準', - typeStandard_IA: 'Standard_ia', - typeArchive: 'アーカイブ', - typeDeep_Archive: 'deep_archive', + typeStandard: '標準ストレージ', + typeStandard_IA: '低頻度ストレージ', + typeArchive: 'アーカイブストレージ', + typeDeep_Archive: '深層アーカイブストレージ', scStandard: - '標準ストレージは、リアルタイムアクセス、頻繁なデータ相互作用などを必要とする多数のホットファイルを備えたビジネスシナリオに適しています。', + '標準ストレージは、リアルタイムアクセスが多いホットファイルや頻繁なデータ交換などの業務シナリオに適しています。', scStandard_IA: - '低周波ストレージは、アクセス頻度が比較的低いビジネスシナリオに適しており、少なくとも30日間データを保存します。', - scArchive: 'アーカイブストレージは、アクセス頻度が非常に低いビジネスシナリオに適しています。', - scDeep_Archive: '耐久性のあるコールドストレージは、アクセス頻度が非常に低いビジネスシナリオに適しています。', + '低頻度ストレージは、アクセス頻度が低い業務シナリオ(例:月に1〜2回程度のアクセス)に適しており、最低30日間の保存が必要です。', + scArchive: 'アーカイブストレージは、極めて低いアクセス頻度(例:半年に1回程度)の業務シナリオに適しています。', + scDeep_Archive: + '深層アーカイブストレージは、極めて低いアクセス頻度(例:年に1〜2回程度)の業務シナリオに適しています。', archiveHelper: - 'アーカイブストレージファイルは直接ダウンロードすることはできず、最初に対応するクラウドサービスプロバイダーのWebサイトから復元する必要があります。注意して使用してください!', + 'アーカイブストレージのファイルは直接ダウンロードできず、対応するクラウドサービスプロバイダーのサイトで復元操作を行う必要があります。慎重に使用してください。', backupAlert: - 'クラウドプロバイダーがS3プロトコルと互換性がある場合、Amazon S3をバックアップに直接使用できます。', + '理論的には、クラウドプロバイダーがS3プロトコルに対応していれば、現行のAmazon S3クラウドストレージを使ってバックアップできます。具体的な設定については、', domain: 'ドメインを加速します', backupAccount: 'バックアップアカウント|バックアップアカウント', loadBucket: 'バケツを入手してください', @@ -1519,7 +1520,7 @@ const message = { bindAll: 'すべてを聞いてください', bindInfoHelper: 'サービスリスニングアドレスまたはプロトコルを変更すると、サービスが利用できない場合があります。続けたいですか?', - ipv6: '緑', + ipv6: 'IPv6をリッスン', bindAddress: '住所を聞いてください', entrance: '入り口', showEntrance: '「概要」ページで無効なアラートを表示します', @@ -1558,7 +1559,7 @@ const message = { allowIPsWarning: '承認されたIPアドレスリストを設定した後、リスト内のIPアドレスのみがパネルサービスにアクセスできます。続けたいですか?', allowIPsHelper1: `IPアドレスの制限を無効にするために空白のままにします。`, - allowIPEgs: '1行に1つ。たとえば、 n172.16.10.111 n172.16.10.0/24', + allowIPEgs: '1行に1つ。たとえば、 \n172.16.10.111 \n172.16.10.0/24', mfa: '二因子認証(2FA)', mfaClose: 'MFAを無効にすると、サービスのセキュリティが減少します。続けたいですか?', secret: '秘密', @@ -1579,7 +1580,8 @@ const message = { sslDisableHelper: 'HTTPSサービスが無効になっている場合は、有効にするためにパネルを再起動する必要があります。続けたいですか?', noAuthSetting: '不正な設定', - noAuthSettingHelper: `whenUsersDon'指定されたセキュリティの入り口でログイン、またはドン'tAccessThePanelFromSpecifiedIpOrDomainName,ThisResponseCanHidPanelCharacteristic`, + noAuthSettingHelper: + 'ユーザーが未ログインで、セキュリティ入口、認証IP、またはバインドされたドメイン名を正しく入力していない場合、このレスポンスでパネルの特徴を非表示にできます。', responseSetting: '応答設定', help200: 'ヘルプページ', error400: '要求の形式が正しくありません', @@ -1596,7 +1598,7 @@ const message = { selfSigned: '自己署名', selfSignedHelper: `ブラウザは、自己署名の証明書を信頼していない場合があり、セキュリティ警告を表示する場合があります。`, select: '選択します', - domainOrIP: 'ドメインまたはIP:', + domainOrIP: 'ドメインまたはIP:', timeOut: 'タイムアウト', rootCrtDownload: 'ルート証明書のダウンロード', primaryKey: '主キー', @@ -1609,7 +1611,7 @@ const message = { 'サードパーティのバックアップアカウントにあるものを含むすべてのスナップショットファイルが削除されます。続けたいですか?', status: 'スナップショットステータス', ignoreRule: 'ルールを無視します', - editIgnoreRule: '@:commons.button.edit @.lower:setting.ignorerule', + editIgnoreRule: '@:commons.button.edit @.lower:setting.ignorerule', ignoreHelper: 'このルールは、スナップショットの作成中に1パネルデータディレクトリを圧縮およびバックアップするために使用されます。デフォルトでは、ソケットファイルは無視されます。', ignoreHelper1: '1行に1つ。たとえば、 n*.log n/opt/1panel/cache', @@ -1624,7 +1626,7 @@ const message = { recoverDetail: '詳細を回復します', createSnapshot: 'スナップショットを作成します', importSnapshot: 'スナップショットを同期します', - importHelper: 'スナップショットディレクトリ:', + importHelper: 'スナップショットディレクトリ:', recover: '回復する', lastRecoverAt: '最後の回復時間', lastRollbackAt: '最後のロールバック時間', @@ -1637,9 +1639,9 @@ const message = { recoverHelper: 'Snapshot {0}からの回復を開始して、先に進む前に次の情報を確認してください。', recoverHelper1: '回復には、Dockerサービスと1パネルサービスを再起動する必要があります', recoverHelper2: - 'サーバーに十分なディスクスペースがあることを確認してください(スナップショットファイルサイズ:{0}、利用可能なスペース:{1})', + 'サーバーに十分なディスクスペースがあることを確認してください(スナップショットファイルサイズ:{0}、利用可能なスペース:{1})', recoverHelper3: - 'サーバーアーキテクチャが、スナップショットが作成されたサーバーのアーキテクチャと一致していることを確認してください(現在のサーバーアーキテクチャ:{0})', + 'サーバーアーキテクチャが、スナップショットが作成されたサーバーのアーキテクチャと一致していることを確認してください(現在のサーバーアーキテクチャ:{0})', rollback: 'ロールバック', rollbackHelper: 'この回復をロールバックすると、この回復からすべてのファイルを置き換え、Dockerサービスと1パネルサービスを再起動する必要がある場合があります。続けたいですか?', @@ -1651,7 +1653,7 @@ const message = { source: 'ソースをダウンロードします', about: 'について', - project: 'ギルブ', + project: 'GitHub', issue: '問題', doc: '公式文書', star: '星', @@ -1674,7 +1676,7 @@ const message = { }, license: { community: '無料', - pro: 'プロ', + pro: 'Pro', trial: 'トライアル', office: '正式', trialInfo: 'バージョン', @@ -1724,13 +1726,13 @@ const message = { statusClean: '(とてもきれい)', statusEmpty: 'とてもきれいで、掃除は必要ありません!', statusWarning: '(注意して進めます)', - lastCleanTime: '最後にクリーニング:{0}', - lastCleanHelper: 'ファイルとディレクトリのクリーニング:{0}、合計クリーニング:{1}', + lastCleanTime: '最後にクリーニング:{0}', + lastCleanHelper: 'ファイルとディレクトリのクリーニング:{0}、合計クリーニング:{1}', cleanSuccessful: '正常に掃除', - currentCleanHelper: 'このセッションでクリーニングされたファイルとディレクトリ:{0}、合計クリーニング:{1}', + currentCleanHelper: 'このセッションでクリーニングされたファイルとディレクトリ:{0}、合計クリーニング:{1}', suggest: '(推奨)', - totalScan: 'クリーニングするジャンクファイルの合計:', - selectScan: '選択したジャンクファイルの合計:', + totalScan: 'クリーニングするジャンクファイルの合計:', + selectScan: '選択したジャンクファイルの合計:', system: 'システムジャンクファイル', systemHelper: @@ -1827,7 +1829,7 @@ const message = { syncAppList: '同期', less1Minute: '1分未満', appOfficeWebsite: 'オフィスのウェブサイト', - github: 'ギルブ', + github: 'Github', document: '書類', updatePrompt: '更新はありません', installPrompt: 'まだインストールされていません', @@ -1893,7 +1895,7 @@ const message = { static: '静的', deployment: '展開', supportUpType: '.tar.gzファイルのみがサポートされています', - zipFormat: '.tar.gz圧縮パッケージ構造:test.tar.gz圧縮パッケージは{0}ファイルを含める必要があります', + zipFormat: '.tar.gz圧縮パッケージ構造:test.tar.gz圧縮パッケージは{0}ファイルを含める必要があります', proxy: '逆プロキシ', alias: 'エイリアス', enableFtp: 'ftp', @@ -1924,7 +1926,7 @@ const message = { perip: '単一のIP', peripHelper: '単一のIPへの同時アクセスの最大数を制限する', rate: '交通制限', - rateHelper: '各リクエストのフローを制限する(ユニット:KB)', + rateHelper: '各リクエストのフローを制限する(ユニット:KB)', limitHelper: 'フロー制御を有効にします', other: '他の', currentSSL: '現在の証明書', @@ -1977,13 +1979,13 @@ const message = { value: '価値', enable: '有効にする', proxyAddress: 'プロキシアドレス', - proxyHelper: '例:127.0.0.1:8080', + proxyHelper: '例:127.0.0.1:8080', forceDelete: 'フォース削除', forceDeleteHelper: 'フォース削除は、削除プロセス中のエラーを無視し、最終的にメタデータを削除します。', deleteAppHelper: '関連するアプリケーションとアプリケーションのバックアップを同時に削除する', deleteBackupHelper: 'また、Webサイトのバックアップを削除します。', deleteConfirmHelper: - '削除操作を元に戻すことはできません。 "{0}" を入力して、削除を確認します。', + '削除操作を元に戻すことはできません。 "{0}" を入力して、削除を確認します。', staticPath: '対応するメインディレクトリはです', limit: 'スキーム', blog: 'フォーラム/ブログ', @@ -2021,7 +2023,7 @@ const message = { disableHTTPS: 'httpsを無効にします', disableHTTPSHelper: 'HTTPSを無効にすると、証明書関連の構成が削除されますが、続行しますか?', SSLHelper: - '注:違法なWebサイトにSSL証明書を使用しないでください。 nif httpsアクセスを開いた後に使用できません。.', + '注:違法なWebサイトにSSL証明書を使用しないでください。 nif httpsアクセスを開いた後に使用できません。.', SSLConfig: '証明書設定', SSLProConfig: 'プロトコル設定', supportProtocol: 'プロトコルバージョン', @@ -2083,7 +2085,7 @@ const message = { proxyHostHelper: 'リクエストヘッダーのドメイン名をプロキシサーバーに渡します。', replacementHelper: '最大5つの交換を追加できます。交換が不要な場合は、空白のままにしてください。', modifier: '一致するルール', - modifierHelper: '例: "="は正確な一致、 "〜"は通常の一致、^〜」はパスの始まりなどと一致します。', + modifierHelper: '例: "="は正確な一致、 "〜"は通常の一致、^〜」はパスの始まりなどと一致します。', replace: 'テキスト置換', addReplace: '追加', replaced: '検索文字列(空にすることはできません)', @@ -2112,7 +2114,7 @@ const message = { localSSL: 'サーバーファイルを選択します', privateKeyPath: '秘密キーファイル', certificatePath: '証明書ファイル', - ipWhiteListHelper: 'IP AllowListの役割:すべてのルールはIP AllowListに対して無効です', + ipWhiteListHelper: 'IP AllowListの役割:すべてのルールはIP AllowListに対して無効です', redirect: 'リダイレクト', sourceDomain: 'ソースドメイン', targetURL: 'ターゲットURLアドレス', @@ -2129,8 +2131,8 @@ const message = { changeVersion: 'スイッチバージョン', retainConfig: 'php-fpm.confとphp.iniファイルを保持するかどうか', runDirHelper2: 'セカンダリランニングディレクトリがインデックスディレクトリの下にあることを確認してください', - openrestyHelper: 'OpenRestyデフォルトのHTTPポート:{0} HTTPSポート:{1}。', - primaryDomainHelper: '例:example.comまたはexample.com:8080', + openrestyHelper: 'OpenRestyデフォルトのHTTPポート:{0} HTTPSポート:{1}。', + primaryDomainHelper: '例:example.comまたはexample.com:8080', acmeAccountType: 'アカウントタイプ', keyType: 'キーアルゴリズム', tencentCloud: 'テンセントクラウド', @@ -2331,11 +2333,11 @@ const message = { addressHelper2: '複数のIPアドレスの場合、コンマと分離します。たとえば、「172.16.10.11、172.16.0.0/24」。', allIP: 'すべてのIP', portRule: 'ルール|ルール', - createPortRule: '@:commons.button.create @.lower:firewall.portrule', + createPortRule: '@:commons.button.create @.lower:firewall.portrule', forwardRule: 'ポートフォワードルール|ポートフォワードルール', - createForwardRule: '@:commons.button.create @:firewall.forwardrule', + createForwardRule: '@:commons.button.create @:firewall.forwardrule', ipRule: 'IPルール|IPルール', - createIpRule: '@:commons.button.create @:firewall.iprule', + createIpRule: '@:commons.button.create @:firewall.iprule', userAgent: 'ユーザーエージェントフィルター', sourcePort: 'ソースポート', targetIP: '宛先IP', @@ -2384,7 +2386,7 @@ const message = { close: '近い', operatorHelper: '{0}操作は、選択した動作環境で実行されます。続けたいですか?', statusHelper: - 'ステータスの説明:開始 - コンテナが開始されましたが、アプリケーションが開始されています。異常 - 容器が開始されましたが、アプリケーションステータスは異常です', + 'ステータスの説明:開始 - コンテナが開始されましたが、アプリケーションが開始されています。異常 - 容器が開始されましたが、アプリケーションステータスは異常です', taobao: 'タオバオ', tencent: 'テンセント', imageSource: '画像ソース', @@ -2395,7 +2397,7 @@ const message = { customScript: 'カスタムスタートアップコマンド', customScriptHelper: '完全な起動コマンドを提供します。たとえば、「NPM Run Start」。', portError: `同じポートを繰り返さないでください。`, - systemRestartHelper: 'ステータスの説明:中断 - システムの再起動によりステータスの取得が失敗しました', + systemRestartHelper: 'ステータスの説明:中断 - システムの再起動によりステータスの取得が失敗しました', javaScriptHelper: '完全な起動コマンドを提供します。たとえば、「Java -Jar Halo.Jar -XMX1024M -XMS256M」。', javaDirHelper: 'ディレクトリにはjarファイルが含まれている必要があり、サブディレクトリも受け入れられます', goHelper: '完全な起動コマンドを提供します。たとえば、「Go Run Main.go」または「./Main」。', @@ -2437,7 +2439,7 @@ const message = { raddr: '宛先アドレス/ポート', stopProcess: '終わり', viewDetails: '詳細', - stopProcessWarn: 'このプロセスを終了したいですか(PID:{0})?', + stopProcessWarn: 'このプロセスを終了したいですか(PID:{0})?', processName: 'プロセス名', }, tool: { diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index f2185ec03..d3ca6530c 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -1,4 +1,4 @@ -import fit2cloudEnLocale from 'fit2cloud-ui-plus/src/locale/lang/en'; +import fit2cloudEnLocale from 'fit2cloud-ui-plus/src/locale/lang/ms'; let xpackEnLocale = {}; const xpackModules = import.meta.glob('../../xpack/lang/ms.ts', { eager: true }); @@ -1294,7 +1294,7 @@ const message = { unsupportedType: 'Jenis fail tidak disokong', deleteHelper: 'Adakah anda pasti mahu memadam fail berikut? Secara lalai, ia akan masuk ke tong kitar semula selepas dipadamkan', - fileHeper: 'Nota:\n1. Keputusan carian tidak boleh diisih.\n2. Folder tidak boleh diisih mengikut saiz.', + fileHelper: 'Nota:\n1. Keputusan carian tidak boleh diisih.\n2. Folder tidak boleh diisih mengikut saiz.', forceDeleteHelper: 'Padamkan fail secara kekal (tanpa masuk ke tong kitar semula, padam terus)', recycleBin: 'Tong kitar semula', sourcePath: 'Laluan asal', @@ -1412,7 +1412,7 @@ const message = { title: 'Alias panel', panelPort: 'Port panel', titleHelper: - 'Menyokong permulaan bukan aksara khas, bahasa Inggeris, Cina, nombor, ruang, .- dan _, panjang 3-30', + 'Menyokong panjang 3 hingga 30 aksara dengan huruf Inggeris, huruf Cina, nombor, ruang kosong dan aksara khas yang biasa', portHelper: 'Julat port yang disarankan ialah 8888 hingga 65535. Nota: Jika pelayan mempunyai kumpulan keselamatan, benarkan port baru dari kumpulan keselamatan terlebih dahulu', portChange: 'Tukar port', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 5980ec9f6..1e40a743b 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -1,4 +1,4 @@ -import fit2cloudPtBrLocale from 'fit2cloud-ui-plus/src/locale/lang/en'; +import fit2cloudPtBrLocale from 'fit2cloud-ui-plus/src/locale/lang/pt-br'; let xpackPtBrLocale = {}; const xpackModules = import.meta.glob('../../xpack/lang/pt-br.ts', { eager: true }); @@ -1278,7 +1278,7 @@ const message = { unsupportedType: 'Tipo de arquivo não suportado', deleteHelper: 'Tem certeza de que deseja excluir os seguintes arquivos? Por padrão, eles irão para a lixeira após a exclusão', - fileHeper: `Nota:\n1. Os resultados da pesquisa não podem ser ordenados.\n2. Pastas não podem ser ordenadas por tamanho.`, + fileHelper: `Nota:\n1. Os resultados da pesquisa não podem ser ordenados.\n2. Pastas não podem ser ordenadas por tamanho.`, forceDeleteHelper: 'Excluir permanentemente o arquivo (sem entrar na lixeira, excluí-lo diretamente)', recycleBin: 'Lixeira', sourcePath: 'Caminho original', @@ -1398,7 +1398,7 @@ const message = { title: 'Alias do painel', panelPort: 'Porta do painel', titleHelper: - 'Suporta caracteres não especiais no início, inglês, chinês, números, espaços, .- e _, comprimento de 3 a 30', + 'Suporta nomes com comprimento de 3 a 30 caracteres, incluindo letras, caracteres chineses, números, espaços e caracteres especiais comuns', portHelper: 'O intervalo recomendado de portas é de 8888 a 65535. Nota: Se o servidor tiver um grupo de segurança, permita a nova porta do grupo de segurança antecipadamente', portChange: 'Alteração de porta', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 7742b8452..cfd8d3d54 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -1,4 +1,4 @@ -import fit2cloudEnLocale from 'fit2cloud-ui-plus/src/locale/lang/en'; +import fit2cloudEnLocale from 'fit2cloud-ui-plus/src/locale/lang/ru'; let xpackEnLocale = {}; const xpackModules = import.meta.glob('../../xpack/lang/ru.ts', { eager: true }); @@ -1282,7 +1282,7 @@ const message = { currentSelect: 'Текущий выбор: ', unsupportedType: 'Неподдерживаемый тип файла', deleteHelper: 'Вы уверены, что хотите удалить следующие файлы? По умолчанию они будут помещены в корзину', - fileHeper: 'Примечание:\n1. Результаты поиска нельзя сортировать.\n2. Папки нельзя сортировать по размеру.', + fileHelper: 'Примечание:\n1. Результаты поиска нельзя сортировать.\n2. Папки нельзя сортировать по размеру.', forceDeleteHelper: 'Удалить файл навсегда (без помещения в корзину, удалить напрямую)', recycleBin: 'Корзина', sourcePath: 'Исходный путь', @@ -1398,7 +1398,8 @@ const message = { emailHelper: 'Для восстановления пароля', title: 'Псевдоним панели', panelPort: 'Порт панели', - titleHelper: 'Поддерживает начало без спецсимволов, английский, китайский, цифры, пробелы, .- и _, длина 3-30', + titleHelper: + 'Поддерживаются строки длиной от 3 до 30 символов, включающие буквы, китайские иероглифы, цифры, пробелы и распространённые специальные символы', portHelper: 'Рекомендуемый диапазон портов от 8888 до 65535. Примечание: Если на сервере есть группа безопасности, заранее разрешите новый порт в группе безопасности', portChange: 'Изменение порта', @@ -1685,13 +1686,11 @@ const message = { rollback: 'Откатить', rollbackHelper: 'Откат этого восстановления заменит все файлы из этого восстановления и может потребовать перезапуска служб Docker и 1Panel. Хотите продолжить?', - upgradeHelper: 'Обновление требует перезапуска службы 1Panel. Хотите продолжить?', noUpgrade: 'В настоящее время это последняя версия', upgradeNotes: 'Примечания к выпуску', upgradeNow: 'Обновить сейчас', source: 'Источник загрузки', - about: 'О программе', project: 'GitHub', issue: 'Проблема', diff --git a/frontend/src/lang/modules/tw.ts b/frontend/src/lang/modules/tw.ts index 3eae39a45..aa9b5c5f3 100644 --- a/frontend/src/lang/modules/tw.ts +++ b/frontend/src/lang/modules/tw.ts @@ -1212,7 +1212,7 @@ const message = { currentSelect: '目前選中: ', unsupportedType: '不支援的文件類型', deleteHelper: '確定刪除所選檔案? 預設刪除之後將進入回收站?', - fileHeper: '注意:1. 搜尋結果不支援排序功能 2. 資料夾無法依大小排序。', + fileHelper: '注意:1. 搜尋結果不支援排序功能 2. 資料夾無法依大小排序。', forceDeleteHelper: '永久刪除檔案(不進入回收站,直接刪除)', recycleBin: '回收站', sourcePath: '原路徑', @@ -1322,7 +1322,7 @@ const message = { emailHelper: '用於密碼找回', title: '面板別名', panelPort: '面板埠', - titleHelper: '支援非特殊字元開頭,英文、中文、數字、空格、.-和_, 長度3-30', + titleHelper: '支援長度 3 至 30 的英文字母、中文、數字、空格和常見的特殊符號。', portHelper: '建議埠範圍8888 - 65535,注意:有安全組的伺服器請提前在安全組放行新埠', portChange: '埠修改', portChangeHelper: '服務埠修改需要重啟服務,是否繼續?', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 0c2185414..4c4aaf7f1 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -1213,7 +1213,7 @@ const message = { currentSelect: '当前选中: ', unsupportedType: '不支持的文件类型', deleteHelper: '确定删除所选文件? 默认删除之后将进入回收站', - fileHeper: '注意:1. 搜索结果不支持排序功能 2. 文件夹无法按大小排序。', + fileHelper: '注意:1. 搜索结果不支持排序功能 2. 文件夹无法按大小排序。', forceDeleteHelper: '永久删除文件(不进入回收站,直接删除)', recycleBin: '回收站', sourcePath: '原路径', @@ -1322,7 +1322,7 @@ const message = { passwd: '面板密码', emailHelper: '用于密码找回', title: '面板别名', - titleHelper: '支持非特殊字符开头,英文、中文、数字、空格、.-和_,长度3-30', + titleHelper: '支持长度3-30的英文、中文、数字、空格和常见的特殊字符', panelPort: '面板端口', portHelper: '建议端口范围8888 - 65535,注意:有安全组的服务器请提前在安全组放行新端口', portChange: '端口修改', diff --git a/frontend/src/views/host/file-management/index.vue b/frontend/src/views/host/file-management/index.vue index e9bac0c1b..2b3afee91 100644 --- a/frontend/src/views/host/file-management/index.vue +++ b/frontend/src/views/host/file-management/index.vue @@ -54,7 +54,7 @@ diff --git a/frontend/src/views/login/components/login-form.vue b/frontend/src/views/login/components/login-form.vue index 86c712f12..6d824d252 100644 --- a/frontend/src/views/login/components/login-form.vue +++ b/frontend/src/views/login/components/login-form.vue @@ -60,7 +60,7 @@ English - Portugês (Brasil) + Português (Brasil) 日本語 Русский Bahasa Melayu diff --git a/frontend/src/views/setting/panel/index.vue b/frontend/src/views/setting/panel/index.vue index c4060a0f3..8520abeee 100644 --- a/frontend/src/views/setting/panel/index.vue +++ b/frontend/src/views/setting/panel/index.vue @@ -319,7 +319,7 @@ const languageOptions = ref([ { value: 'tw', label: '中文(繁體)' }, ...(!globalStore.isIntl ? [{ value: 'en', label: 'English' }] : []), { value: 'pt-BR', label: 'Português (Brasil)' }, - { value: 'jp', label: '日本語' }, + { value: 'ja', label: '日本語' }, { value: 'ru', label: 'Русский' }, { value: 'ms', label: 'Bahasa Melayu' }, ]);