diff --git a/webapp/src/components/backup-center/BackupDestinationDetail.tsx b/webapp/src/components/backup-center/BackupDestinationDetail.tsx index 615e749..c05a345 100644 --- a/webapp/src/components/backup-center/BackupDestinationDetail.tsx +++ b/webapp/src/components/backup-center/BackupDestinationDetail.tsx @@ -54,21 +54,18 @@ function renderRecommendedProviderDetails(provider: RecommendedProvider) { <>
- 1. {t('txt_backup_recommend_koofr_step_1')} -
-
- 2. {t('txt_backup_recommend_koofr_step_2_prefix')}{' '} + 1. {t('txt_backup_recommend_koofr_step_2_prefix')}{' '} {t('txt_backup_recommend_koofr_password_link')} {t('txt_backup_recommend_koofr_step_2_suffix')}
- 3. {t('txt_backup_recommend_koofr_step_3')} + 2. {t('txt_backup_recommend_koofr_step_3')}
- 4. {t('txt_backup_recommend_koofr_step_4')} + 3. {t('txt_backup_recommend_koofr_step_4')}
- 5. {t('txt_backup_recommend_koofr_step_5_prefix')}{' '} + 4. {t('txt_backup_recommend_koofr_step_5_prefix')}{' '} {t('txt_backup_recommend_koofr_storage_link')} {t('txt_backup_recommend_koofr_step_5_suffix')}
@@ -98,13 +95,10 @@ function renderRecommendedProviderDetails(provider: RecommendedProvider) { return (
- 1. {t('txt_backup_recommend_pcloud_step_1')} + 1. {t('txt_backup_recommend_pcloud_step_2')}
- 2. {t('txt_backup_recommend_pcloud_step_2')} -
-
- 3. {t('txt_backup_recommend_pcloud_step_3')} + 2. {t('txt_backup_recommend_pcloud_step_3')}
); @@ -112,18 +106,15 @@ function renderRecommendedProviderDetails(provider: RecommendedProvider) { return (
- 1. {t('txt_backup_recommend_infinicloud_step_1')} -
-
- 2. {t('txt_backup_recommend_infinicloud_step_2_prefix')}{' '} + 1. {t('txt_backup_recommend_infinicloud_step_2_prefix')}{' '} My Page {t('txt_backup_recommend_infinicloud_step_2_suffix')}
- 3. {t('txt_backup_recommend_infinicloud_step_3')} + 2. {t('txt_backup_recommend_infinicloud_step_3')}
- 4. {t('txt_backup_recommend_infinicloud_step_4')} + 3. {t('txt_backup_recommend_infinicloud_step_4')}
); @@ -131,23 +122,23 @@ function renderRecommendedProviderDetails(provider: RecommendedProvider) { return (
- 1. {t('txt_backup_recommend_backblaze_step_1')} -
-
- 2. {t('txt_backup_recommend_backblaze_step_2_prefix')}{' '} + 1. {t('txt_backup_recommend_backblaze_step_2_prefix')}{' '} Buckets {t('txt_backup_recommend_backblaze_step_2_suffix')}
- 3. {t('txt_backup_recommend_backblaze_step_3')} + 2. {t('txt_backup_recommend_backblaze_step_3')}
- 4. {t('txt_backup_recommend_backblaze_step_4_prefix')}{' '} + 3. {t('txt_backup_recommend_backblaze_step_4_prefix')}{' '} Application Keys {t('txt_backup_recommend_backblaze_step_4_suffix')}
- 5. {t('txt_backup_recommend_backblaze_step_5')} + 4. {t('txt_backup_recommend_backblaze_step_5')} +
+
+ 5. {t('txt_backup_recommend_s3_path_prefix_step')}
); @@ -175,6 +166,30 @@ function renderRecommendedProviderDetails(provider: RecommendedProvider) {
); + case 'tigris': + return ( +
+
+ 1. {t('txt_backup_recommend_tigris_step_2_prefix')}{' '} + Create Bucket + {t('txt_backup_recommend_tigris_step_2_suffix')} +
+
+ 2. {t('txt_backup_recommend_tigris_step_3_prefix')}{' '} + {t('txt_backup_recommend_tigris_access_key_link')} + {t('txt_backup_recommend_tigris_step_3_suffix')} +
+
+ 3. {t('txt_backup_recommend_tigris_step_4')} +
+
+ 4. {t('txt_backup_recommend_tigris_step_5')} +
+
+ 5. {t('txt_backup_recommend_s3_path_prefix_step')} +
+
+ ); } } @@ -197,6 +212,7 @@ export function BackupDestinationDetail(props: BackupDestinationDetailProps) { : props.selectedRecommendedProvider.id === 'koofr' ? t('txt_backup_recommend_koofr_summary') : props.selectedRecommendedProvider.id === 'backblaze-b2' ? t('txt_backup_recommend_backblaze_summary') : props.selectedRecommendedProvider.id === 'cloudflare-r2' ? t('txt_backup_recommend_cloudflare_r2_summary') + : props.selectedRecommendedProvider.id === 'tigris' ? t('txt_backup_recommend_tigris_summary') : t('txt_backup_recommend_pcloud_summary')} diff --git a/webapp/src/lib/backup-recommendations.ts b/webapp/src/lib/backup-recommendations.ts index a2be712..c285585 100644 --- a/webapp/src/lib/backup-recommendations.ts +++ b/webapp/src/lib/backup-recommendations.ts @@ -4,7 +4,7 @@ export interface RecommendedStorageLink { } export interface RecommendedProviderBase { - id: 'infinicloud' | 'koofr' | 'pcloud' | 'backblaze-b2' | 'cloudflare-r2'; + id: 'infinicloud' | 'koofr' | 'pcloud' | 'backblaze-b2' | 'cloudflare-r2' | 'tigris'; name: string; capacity: string; protocol: 'webdav' | 's3'; @@ -40,7 +40,13 @@ export interface CloudflareR2Provider extends RecommendedProviderBase { apiTokenUrl: string; } -export type RecommendedProvider = InfinicloudProvider | KoofrProvider | PcloudProvider | BackblazeB2Provider | CloudflareR2Provider; +export interface TigrisProvider extends RecommendedProviderBase { + id: 'tigris'; + bucketUrl: string; + accessKeyUrl: string; +} + +export type RecommendedProvider = InfinicloudProvider | KoofrProvider | PcloudProvider | BackblazeB2Provider | CloudflareR2Provider | TigrisProvider; export const RECOMMENDED_PROVIDERS: RecommendedProvider[] = [ { @@ -91,6 +97,15 @@ export const RECOMMENDED_PROVIDERS: RecommendedProvider[] = [ bucketUrl: 'https://dash.cloudflare.com/?to=/:account/r2/new', apiTokenUrl: 'https://dash.cloudflare.com/?to=/:account/r2/api-tokens/create?type=user', }, + { + id: 'tigris', + name: 'Tigris', + capacity: '5G', + protocol: 's3', + signupUrl: 'https://console.storage.dev/signup', + bucketUrl: 'https://console.storage.dev/createbucket', + accessKeyUrl: 'https://console.storage.dev/createaccesskey', + }, ]; export function hasLinkedStorages(provider: RecommendedProvider): provider is KoofrProvider { diff --git a/webapp/src/lib/i18n/locales/en.ts b/webapp/src/lib/i18n/locales/en.ts index dce58ee..c0c97a4 100644 --- a/webapp/src/lib/i18n/locales/en.ts +++ b/webapp/src/lib/i18n/locales/en.ts @@ -85,15 +85,15 @@ const en: Record = { "txt_backup_recommend_pcloud_step_1": "Register a pCloud account with just your email address.", "txt_backup_recommend_pcloud_step_2": "Use https://webdav.pcloud.com/ as the WebDAV server URL.", "txt_backup_recommend_pcloud_step_3": "Use your registration email as the WebDAV username and your account password as the WebDAV password.", - "txt_backup_recommend_backblaze_summary": "S3-compatible object storage with a 10 GB free allowance. Use the B2 S3 endpoint, bucket name, region, keyID, and applicationKey.", + "txt_backup_recommend_backblaze_summary": "S3-compatible object storage with 10 GB free and no credit card required.", "txt_backup_recommend_backblaze_step_1": "Register or sign in to a Backblaze account.", "txt_backup_recommend_backblaze_step_2_prefix": "Open", "txt_backup_recommend_backblaze_step_2_suffix": ", click Create a Bucket, enter only the bucket name, leave the other settings unchanged, and create it.", - "txt_backup_recommend_backblaze_step_3": "After creation, use the displayed Endpoint as the S3 endpoint, the bucket name as the bucket, and the middle part of the endpoint such as us-west-004 as the region.", + "txt_backup_recommend_backblaze_step_3": "After creation, put the displayed Endpoint into S3 Endpoint URL, use the bucket name for Bucket Name, and use the middle segment of the endpoint, such as us-west-004, for Region.", "txt_backup_recommend_backblaze_step_4_prefix": "Open", "txt_backup_recommend_backblaze_step_4_suffix": ", click Add a New Application Key, enter any Name of Key, leave the other settings unchanged, and create it.", "txt_backup_recommend_backblaze_step_5": "Use keyID as the access key and applicationKey as the secret key.", - "txt_backup_recommend_cloudflare_r2_summary": "S3-compatible object storage with a 10 GB-month monthly free tier. Keep the region set to auto.", + "txt_backup_recommend_cloudflare_r2_summary": "S3-compatible object storage with 10 GB free, but it requires credit card verification.", "txt_backup_recommend_cloudflare_r2_bucket_link": "Create bucket page", "txt_backup_recommend_cloudflare_r2_api_link": "API token page", "txt_backup_recommend_cloudflare_r2_step_1_prefix": "Open the", @@ -101,8 +101,21 @@ const en: Record = { "txt_backup_recommend_cloudflare_r2_step_2_prefix": "Open the", "txt_backup_recommend_cloudflare_r2_step_2_suffix": ", select Object Read & Write for permissions, and create it directly.", "txt_backup_recommend_cloudflare_r2_step_3": "Ignore the token value after creation. Fill Access Key ID into Access ID, and Secret Access Key into Access Password.", - "txt_backup_recommend_cloudflare_r2_step_4": "Set S3 Endpoint URL to https://.r2.cloudflarestorage.com, fill the bucket name as shown, and keep the region as auto.", - "txt_backup_recommend_cloudflare_r2_step_5": "Set Path Prefix as needed, for example nodewarden/backups, or leave it empty if you do not want a folder prefix.", + "txt_backup_recommend_cloudflare_r2_step_4": "Copy the address shown below into S3 Endpoint URL, fill Bucket Name exactly as shown, and leave Region as auto.", + "txt_backup_recommend_cloudflare_r2_step_5": "Set Path Prefix as needed, for example nodewarden, or leave it empty if you do not want a folder prefix.", + "txt_backup_recommend_s3_path_prefix_step": "Set Path Prefix as needed, for example nodewarden, or leave it empty if you do not want a folder prefix.", + "txt_backup_recommend_tigris_summary": "S3-compatible object storage with 5 GB free and no credit card required.", + "txt_backup_recommend_tigris_signup_link": "signup page", + "txt_backup_recommend_tigris_bucket_link": "Create Bucket page", + "txt_backup_recommend_tigris_access_key_link": "Create Access Key page", + "txt_backup_recommend_tigris_step_1_prefix": "Open the", + "txt_backup_recommend_tigris_step_1_suffix": ", sign up, and log in to Tigris.", + "txt_backup_recommend_tigris_step_2_prefix": "Open", + "txt_backup_recommend_tigris_step_2_suffix": ", enter only the bucket name, leave everything else unchanged, and create it.", + "txt_backup_recommend_tigris_step_3_prefix": "Then open the", + "txt_backup_recommend_tigris_step_3_suffix": ", use any name you like, and create it.", + "txt_backup_recommend_tigris_step_4": "Ignore Endpoint URL IAM after creation. Fill the other displayed values into the backup page using the matching field names.", + "txt_backup_recommend_tigris_step_5": "Finally, click Manage Key Permissions and turn on Admin Access, otherwise writing backups will fail.", "txt_backup_add_destination": "Add Destination", "txt_backup_schedule_panel_title": "Automatic Schedule", "txt_backup_schedule_panel_note": "Each destination can keep its own daily backup schedule.", diff --git a/webapp/src/lib/i18n/locales/es.ts b/webapp/src/lib/i18n/locales/es.ts index 245e70c..cc2f910 100644 --- a/webapp/src/lib/i18n/locales/es.ts +++ b/webapp/src/lib/i18n/locales/es.ts @@ -85,15 +85,15 @@ const es: Record = { "txt_backup_recommend_pcloud_step_1": "Registre una cuenta pCloud solo con su dirección de correo.", "txt_backup_recommend_pcloud_step_2": "Use https://webdav.pcloud.com/ como URL del servidor WebDAV.", "txt_backup_recommend_pcloud_step_3": "Use su correo de registro como nombre de usuario WebDAV y su contraseña de cuenta como contraseña WebDAV.", - "txt_backup_recommend_backblaze_summary": "Almacenamiento de objetos compatible con S3 con 10 GB gratis. Use el endpoint S3 de B2, el nombre del bucket, la región, keyID y applicationKey.", + "txt_backup_recommend_backblaze_summary": "Almacenamiento de objetos compatible con S3 con 10 GB gratis y sin tarjeta de crédito.", "txt_backup_recommend_backblaze_step_1": "Registre o inicie sesión en una cuenta de Backblaze.", "txt_backup_recommend_backblaze_step_2_prefix": "Abra", "txt_backup_recommend_backblaze_step_2_suffix": ", haga clic en Create a Bucket, introduzca solo el nombre del bucket, deje lo demás sin cambios y créelo.", - "txt_backup_recommend_backblaze_step_3": "Después de crearlo, use el Endpoint mostrado como endpoint S3, el nombre del bucket como bucket y la parte central del endpoint, como us-west-004, como región.", + "txt_backup_recommend_backblaze_step_3": "Después de crearlo, ponga el Endpoint mostrado en S3 Endpoint URL, use el nombre del bucket en Bucket Name y la parte central del endpoint, como us-west-004, en Region.", "txt_backup_recommend_backblaze_step_4_prefix": "Abra", "txt_backup_recommend_backblaze_step_4_suffix": ", haga clic en Add a New Application Key, introduzca cualquier Name of Key, deje lo demás sin cambios y créelo.", "txt_backup_recommend_backblaze_step_5": "Use keyID como clave de acceso y applicationKey como clave secreta.", - "txt_backup_recommend_cloudflare_r2_summary": "Almacenamiento de objetos compatible con S3 con 10 GB-month gratis al mes. Mantenga la región en auto.", + "txt_backup_recommend_cloudflare_r2_summary": "Almacenamiento de objetos compatible con S3 con 10 GB gratis, pero requiere verificación con tarjeta de crédito.", "txt_backup_recommend_cloudflare_r2_bucket_link": "página para crear bucket", "txt_backup_recommend_cloudflare_r2_api_link": "página de token API", "txt_backup_recommend_cloudflare_r2_step_1_prefix": "Abra la", @@ -101,8 +101,21 @@ const es: Record = { "txt_backup_recommend_cloudflare_r2_step_2_prefix": "Abra la", "txt_backup_recommend_cloudflare_r2_step_2_suffix": ", seleccione Object Read & Write en permisos y créelo directamente.", "txt_backup_recommend_cloudflare_r2_step_3": "Ignore el valor del token después de crearlo. Use Access Key ID como ID de acceso y Secret Access Key como contraseña de acceso.", - "txt_backup_recommend_cloudflare_r2_step_4": "Use https://.r2.cloudflarestorage.com como URL del endpoint S3, rellene el nombre del bucket tal como aparece y mantenga la región en auto.", - "txt_backup_recommend_cloudflare_r2_step_5": "Configure el prefijo de ruta si lo necesita, por ejemplo nodewarden/backups, o déjelo vacío si no quiere un prefijo de carpeta.", + "txt_backup_recommend_cloudflare_r2_step_4": "Copie la dirección mostrada abajo en S3 Endpoint URL, rellene Bucket Name tal como aparece y deje Region en auto.", + "txt_backup_recommend_cloudflare_r2_step_5": "Configure Path Prefix si lo necesita, por ejemplo nodewarden, o déjelo vacío si no quiere un prefijo de carpeta.", + "txt_backup_recommend_s3_path_prefix_step": "Configure Path Prefix si lo necesita, por ejemplo nodewarden, o déjelo vacío si no quiere un prefijo de carpeta.", + "txt_backup_recommend_tigris_summary": "Almacenamiento de objetos compatible con S3 con 5 GB gratis y sin tarjeta de crédito.", + "txt_backup_recommend_tigris_signup_link": "página de registro", + "txt_backup_recommend_tigris_bucket_link": "página Create Bucket", + "txt_backup_recommend_tigris_access_key_link": "página Create Access Key", + "txt_backup_recommend_tigris_step_1_prefix": "Abra la", + "txt_backup_recommend_tigris_step_1_suffix": ", regístrese e inicie sesión en Tigris.", + "txt_backup_recommend_tigris_step_2_prefix": "Abra", + "txt_backup_recommend_tigris_step_2_suffix": ", introduzca solo el nombre del bucket, deje todo lo demás sin cambios y créelo.", + "txt_backup_recommend_tigris_step_3_prefix": "Luego abra la", + "txt_backup_recommend_tigris_step_3_suffix": ", use cualquier nombre y créela.", + "txt_backup_recommend_tigris_step_4": "Ignore Endpoint URL IAM después de crearla. Rellene los demás valores mostrados en la página de copia de seguridad usando los nombres correspondientes.", + "txt_backup_recommend_tigris_step_5": "Por último, haga clic en Manage Key Permissions y active Admin Access; de lo contrario, no podrá escribir copias de seguridad.", "txt_backup_add_destination": "Añadir destino", "txt_backup_schedule_panel_title": "Programación automática", "txt_backup_schedule_panel_note": "Cada destino puede mantener su propia programación de copia de seguridad diaria.", diff --git a/webapp/src/lib/i18n/locales/ru.ts b/webapp/src/lib/i18n/locales/ru.ts index 028d9df..20b21d1 100644 --- a/webapp/src/lib/i18n/locales/ru.ts +++ b/webapp/src/lib/i18n/locales/ru.ts @@ -86,15 +86,15 @@ const ru: Record = { "txt_backup_recommend_pcloud_step_1": "Зарегистрируйте учетную запись pCloud, используя только свой адрес электронной почты.", "txt_backup_recommend_pcloud_step_2": "Используйте https://webdav.ploud.com/ в качестве URL-адреса сервера WebDAV.", "txt_backup_recommend_pcloud_step_3": "Используйте свой регистрационный адрес электронной почты в качестве имени пользователя WebDAV и пароль своей учетной записи в качестве пароля WebDAV.", - "txt_backup_recommend_backblaze_summary": "S3-совместимое объектное хранилище с бесплатными 10 ГБ. Используйте S3 endpoint B2, имя bucket, регион, keyID и applicationKey.", + "txt_backup_recommend_backblaze_summary": "S3-совместимое объектное хранилище с бесплатными 10 ГБ и без кредитной карты.", "txt_backup_recommend_backblaze_step_1": "Зарегистрируйте учетную запись Backblaze или войдите в нее.", "txt_backup_recommend_backblaze_step_2_prefix": "Откройте", "txt_backup_recommend_backblaze_step_2_suffix": ", нажмите Create a Bucket, введите только имя bucket, оставьте остальные настройки без изменений и создайте его.", - "txt_backup_recommend_backblaze_step_3": "После создания используйте показанный Endpoint как S3 endpoint, имя bucket как bucket, а среднюю часть endpoint, например us-west-004, как регион.", + "txt_backup_recommend_backblaze_step_3": "После создания вставьте показанный Endpoint в S3 Endpoint URL, имя bucket укажите в Bucket Name, а среднюю часть endpoint, например us-west-004, используйте как Region.", "txt_backup_recommend_backblaze_step_4_prefix": "Откройте", "txt_backup_recommend_backblaze_step_4_suffix": ", нажмите Add a New Application Key, введите любое Name of Key, оставьте остальные настройки без изменений и создайте ключ.", "txt_backup_recommend_backblaze_step_5": "Используйте keyID как ключ доступа, а applicationKey как секретный ключ.", - "txt_backup_recommend_cloudflare_r2_summary": "S3-совместимое объектное хранилище с бесплатным уровнем 10 GB-month в месяц. Оставьте регион auto.", + "txt_backup_recommend_cloudflare_r2_summary": "S3-совместимое объектное хранилище с бесплатными 10 ГБ, но с обязательной проверкой кредитной карты.", "txt_backup_recommend_cloudflare_r2_bucket_link": "страницу создания bucket", "txt_backup_recommend_cloudflare_r2_api_link": "страницу API token", "txt_backup_recommend_cloudflare_r2_step_1_prefix": "Откройте", @@ -102,8 +102,21 @@ const ru: Record = { "txt_backup_recommend_cloudflare_r2_step_2_prefix": "Откройте", "txt_backup_recommend_cloudflare_r2_step_2_suffix": ", выберите Object Read & Write в разрешениях и сразу создайте токен.", "txt_backup_recommend_cloudflare_r2_step_3": "После создания игнорируйте token value. Введите Access Key ID как ID доступа, а Secret Access Key как пароль доступа.", - "txt_backup_recommend_cloudflare_r2_step_4": "Укажите https://.r2.cloudflarestorage.com как URL S3 endpoint, заполните имя bucket как есть и оставьте регион auto.", - "txt_backup_recommend_cloudflare_r2_step_5": "Укажите префикс пути при необходимости, например nodewarden/backups, или оставьте пустым, если префикс папки не нужен.", + "txt_backup_recommend_cloudflare_r2_step_4": "Вставьте показанный ниже адрес в S3 Endpoint URL, заполните Bucket Name как показано и оставьте Region в значении auto.", + "txt_backup_recommend_cloudflare_r2_step_5": "Укажите Path Prefix при необходимости, например nodewarden, или оставьте пустым, если префикс папки не нужен.", + "txt_backup_recommend_s3_path_prefix_step": "Укажите Path Prefix при необходимости, например nodewarden, или оставьте пустым, если префикс папки не нужен.", + "txt_backup_recommend_tigris_summary": "S3-совместимое объектное хранилище с бесплатными 5 ГБ и без кредитной карты.", + "txt_backup_recommend_tigris_signup_link": "страницу регистрации", + "txt_backup_recommend_tigris_bucket_link": "страницу Create Bucket", + "txt_backup_recommend_tigris_access_key_link": "страницу Create Access Key", + "txt_backup_recommend_tigris_step_1_prefix": "Откройте", + "txt_backup_recommend_tigris_step_1_suffix": ", зарегистрируйтесь и войдите в Tigris.", + "txt_backup_recommend_tigris_step_2_prefix": "Откройте", + "txt_backup_recommend_tigris_step_2_suffix": ", введите только имя bucket, ничего больше не меняйте и создайте его.", + "txt_backup_recommend_tigris_step_3_prefix": "Затем откройте", + "txt_backup_recommend_tigris_step_3_suffix": ", введите любое имя и создайте ключ.", + "txt_backup_recommend_tigris_step_4": "После создания игнорируйте Endpoint URL IAM. Остальные показанные значения заполните на странице резервного копирования по совпадающим названиям полей.", + "txt_backup_recommend_tigris_step_5": "В конце нажмите Manage Key Permissions и включите Admin Access, иначе запись резервных копий не будет работать.", "txt_backup_add_destination": "Добавить пункт назначения", "txt_backup_schedule_panel_title": "Автоматическое расписание", "txt_backup_schedule_panel_note": "Каждый пункт назначения может иметь собственный ежедневный график резервного копирования.", diff --git a/webapp/src/lib/i18n/locales/zh-CN.ts b/webapp/src/lib/i18n/locales/zh-CN.ts index 185ce53..bfa794f 100644 --- a/webapp/src/lib/i18n/locales/zh-CN.ts +++ b/webapp/src/lib/i18n/locales/zh-CN.ts @@ -93,7 +93,7 @@ const zhCN: Record = { "txt_backup_recommend_backblaze_step_4_prefix": "打开", "txt_backup_recommend_backblaze_step_4_suffix": ",点击 Add a New Application Key,随便输入 Name of Key,其他地方不动,然后创建。", "txt_backup_recommend_backblaze_step_5": "生成结果里的 keyID 填到 访问 ID,applicationKey 填到 访问密码。", - "txt_backup_recommend_cloudflare_r2_summary": "兼容 S3 的对象存储,免费层每月 10 GB-month,区域保持 auto 不改。", + "txt_backup_recommend_cloudflare_r2_summary": "兼容 S3 的对象存储,免费容量 10 GB,需要信用卡认证。", "txt_backup_recommend_cloudflare_r2_bucket_link": "创建储存桶页面", "txt_backup_recommend_cloudflare_r2_api_link": "API 创建页面", "txt_backup_recommend_cloudflare_r2_step_1_prefix": "打开", @@ -103,6 +103,19 @@ const zhCN: Record = { "txt_backup_recommend_cloudflare_r2_step_3": "创建后令牌值不用管;Access Key ID 填到 访问 ID,Secret Access Key 填到 访问密码。", "txt_backup_recommend_cloudflare_r2_step_4": "把下面显示的地址填到 S3 端点 URL;存储桶名称如实填写;区域保持 auto 不改。", "txt_backup_recommend_cloudflare_r2_step_5": "路径前缀按需要填写,例如 nodewarden;不想分目录可以留空。", + "txt_backup_recommend_s3_path_prefix_step": "路径前缀按需要填写,例如 nodewarden;不想分目录可以留空。", + "txt_backup_recommend_tigris_summary": "兼容 S3 的对象存储。免费容量 5 GB,无需信用卡。", + "txt_backup_recommend_tigris_signup_link": "注册页面", + "txt_backup_recommend_tigris_bucket_link": "Create Bucket 页面", + "txt_backup_recommend_tigris_access_key_link": "Create Access Key 页面", + "txt_backup_recommend_tigris_step_1_prefix": "打开", + "txt_backup_recommend_tigris_step_1_suffix": ",注册并登录 Tigris。", + "txt_backup_recommend_tigris_step_2_prefix": "打开", + "txt_backup_recommend_tigris_step_2_suffix": ",只输入桶的名字,其他地方不动,直接创建。", + "txt_backup_recommend_tigris_step_3_prefix": "然后打开", + "txt_backup_recommend_tigris_step_3_suffix": ",名字随意,直接创建。", + "txt_backup_recommend_tigris_step_4": "创建后显示的 Endpoint URL IAM 不用管;其余显示出来的内容按名称填写到备份页面里。", + "txt_backup_recommend_tigris_step_5": "最后点击 Manage Key Permissions,把 Admin Access 打开,否则无法写入。", "txt_backup_add_destination": "新增地点", "txt_backup_schedule_panel_title": "自动备份计划", "txt_backup_schedule_panel_note": "每个备份地点都可以单独配置自己的每日自动备份计划。", diff --git a/webapp/src/lib/i18n/locales/zh-TW.ts b/webapp/src/lib/i18n/locales/zh-TW.ts index 0226d25..c4ac751 100644 --- a/webapp/src/lib/i18n/locales/zh-TW.ts +++ b/webapp/src/lib/i18n/locales/zh-TW.ts @@ -85,15 +85,15 @@ const zhTW: Record = { "txt_backup_recommend_pcloud_step_1": "先用郵箱註冊一個 pCloud 賬號。", "txt_backup_recommend_pcloud_step_2": "WebDAV 地址填寫 https://webdav.pcloud.com/ 。", "txt_backup_recommend_pcloud_step_3": "註冊郵箱用作 WebDAV 用戶名,註冊密碼用作 WebDAV 密碼。", - "txt_backup_recommend_backblaze_summary": "兼容 S3 的對象儲存,免費容量 10 GB。需要填寫 B2 的 S3 端點、桶名、區域、keyID 和 applicationKey。", + "txt_backup_recommend_backblaze_summary": "兼容 S3 的對象儲存,免費容量 10 GB,無需信用卡。", "txt_backup_recommend_backblaze_step_1": "先註冊或登入 Backblaze 賬號。", "txt_backup_recommend_backblaze_step_2_prefix": "打開", "txt_backup_recommend_backblaze_step_2_suffix": ",點擊創建一個桶,只輸入桶名字,其他地方不修改,然後創建。", - "txt_backup_recommend_backblaze_step_3": "創建後顯示的 Endpoint 就是 S3 端點;桶名字就是儲存桶;區域填寫 Endpoint 中間的區域值,例如 us-west-004。", + "txt_backup_recommend_backblaze_step_3": "創建後顯示的 Endpoint 填到 S3 端點 URL;桶名字填到儲存桶名稱;區域填 Endpoint 中間那段,例如 us-west-004。", "txt_backup_recommend_backblaze_step_4_prefix": "打開", "txt_backup_recommend_backblaze_step_4_suffix": ",點擊 Add a New Application Key,隨便輸入 Name of Key,其他地方不動,然後創建。", "txt_backup_recommend_backblaze_step_5": "生成結果裡的 keyID 填存取金鑰,applicationKey 填秘密金鑰。", - "txt_backup_recommend_cloudflare_r2_summary": "兼容 S3 的對象儲存,免費層每月 10 GB-month,區域保持 auto 不改。", + "txt_backup_recommend_cloudflare_r2_summary": "兼容 S3 的對象儲存,免費容量 10 GB,需要信用卡驗證。", "txt_backup_recommend_cloudflare_r2_bucket_link": "創建儲存桶頁面", "txt_backup_recommend_cloudflare_r2_api_link": "API 創建頁面", "txt_backup_recommend_cloudflare_r2_step_1_prefix": "打開", @@ -101,8 +101,21 @@ const zhTW: Record = { "txt_backup_recommend_cloudflare_r2_step_2_prefix": "打開", "txt_backup_recommend_cloudflare_r2_step_2_suffix": ",權限全選「對象讀和寫」,直接創建。", "txt_backup_recommend_cloudflare_r2_step_3": "創建後令牌值不用管;Access Key ID 填到存取 ID,Secret Access Key 填到存取密碼。", - "txt_backup_recommend_cloudflare_r2_step_4": "S3 端點 URL 填 https://<賬戶 ID>.r2.cloudflarestorage.com;儲存桶名稱如實填寫;區域保持 auto 不改。", - "txt_backup_recommend_cloudflare_r2_step_5": "路徑前綴按需要填寫,例如 nodewarden/backups;不想分目錄可以留空。", + "txt_backup_recommend_cloudflare_r2_step_4": "把下面顯示的地址填到 S3 端點 URL;儲存桶名稱如實填寫;區域保持 auto 不改。", + "txt_backup_recommend_cloudflare_r2_step_5": "路徑前綴按需要填寫,例如 nodewarden;不想分目錄可以留空。", + "txt_backup_recommend_s3_path_prefix_step": "路徑前綴按需要填寫,例如 nodewarden;不想分目錄可以留空。", + "txt_backup_recommend_tigris_summary": "兼容 S3 的對象儲存。免費容量 5 GB,無需信用卡。", + "txt_backup_recommend_tigris_signup_link": "註冊頁面", + "txt_backup_recommend_tigris_bucket_link": "Create Bucket 頁面", + "txt_backup_recommend_tigris_access_key_link": "Create Access Key 頁面", + "txt_backup_recommend_tigris_step_1_prefix": "打開", + "txt_backup_recommend_tigris_step_1_suffix": ",註冊並登入 Tigris。", + "txt_backup_recommend_tigris_step_2_prefix": "打開", + "txt_backup_recommend_tigris_step_2_suffix": ",只輸入桶的名字,其他地方不動,直接創建。", + "txt_backup_recommend_tigris_step_3_prefix": "然後打開", + "txt_backup_recommend_tigris_step_3_suffix": ",名字隨意,直接創建。", + "txt_backup_recommend_tigris_step_4": "創建後顯示的 Endpoint URL IAM 不用管;其餘顯示出來的內容按名稱填寫到備份頁面裡。", + "txt_backup_recommend_tigris_step_5": "最後點擊 Manage Key Permissions,把 Admin Access 打開,否則無法寫入。", "txt_backup_add_destination": "新增地點", "txt_backup_schedule_panel_title": "自動備份計劃", "txt_backup_schedule_panel_note": "每個備份地點都可以單獨配置自己的每日自動備份計劃。",