mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-24 18:50:56 +08:00
Refactor WebDAV i18n and UI for improved flexibility and localization
- i18n Updates: - Refactored WebDAV-related translations into nested JSON structures for better organization. - Added support for pluralization in time intervals (minutes and hours) across all locales (en-us, ja-jp, ru-ru, zh-cn, zh-tw). - UI Enhancements: - Updated `DataSettings` and `WebDavSettings` components to use the new i18n keys for time intervals. - Improved the `Select` dropdown for sync intervals with dynamic pluralization based on locale. - Adjusted input field widths for better alignment and consistency. - Code Cleanup: - Removed redundant comments and unused code in `WebDavSettings.tsx`. - Simplified button and input styling for a cleaner layout.
This commit is contained in:
parent
14680f98e4
commit
d2139abcb9
@ -573,25 +573,29 @@
|
||||
"empty_database_id": "Database_id is not configured"
|
||||
},
|
||||
"title": "Data Settings",
|
||||
"webdav.autoSync": "Auto Backup",
|
||||
"webdav.autoSync.off": "Off",
|
||||
"webdav.backup.button": "Backup to WebDAV",
|
||||
"webdav.host": "WebDAV Host",
|
||||
"webdav.host.placeholder": "http://localhost:8080",
|
||||
"webdav.hours": "Hours",
|
||||
"webdav.lastSync": "Last Backup",
|
||||
"webdav.minutes": "Minutes",
|
||||
"webdav.noSync": "Waiting for next backup",
|
||||
"webdav.password": "WebDAV Password",
|
||||
"webdav.path": "WebDAV Path",
|
||||
"webdav.path.placeholder": "/backup",
|
||||
"webdav.restore.button": "Restore from WebDAV",
|
||||
"webdav.restore.content": "Restore from WebDAV will overwrite the current data, continue?",
|
||||
"webdav.restore.title": "Restore from WebDAV",
|
||||
"webdav.syncError": "Backup Error",
|
||||
"webdav.syncStatus": "Backup Status",
|
||||
"webdav.title": "WebDAV",
|
||||
"webdav.user": "WebDAV User"
|
||||
"webdav": {
|
||||
"autoSync": "Auto Backup",
|
||||
"autoSync.off": "Off",
|
||||
"backup.button": "Backup to WebDAV",
|
||||
"host": "WebDAV Host",
|
||||
"host.placeholder": "http://localhost:8080",
|
||||
"minute_interval_one": "{{count}} minute",
|
||||
"minute_interval_other": "{{count}} minutes",
|
||||
"hour_interval_one": "{{count}} hour",
|
||||
"hour_interval_other": "{{count}} hours",
|
||||
"lastSync": "Last Backup",
|
||||
"noSync": "Waiting for next backup",
|
||||
"password": "WebDAV Password",
|
||||
"path": "WebDAV Path",
|
||||
"path.placeholder": "/backup",
|
||||
"restore.button": "Restore from WebDAV",
|
||||
"restore.content": "Restore from WebDAV will overwrite the current data, continue?",
|
||||
"restore.title": "Restore from WebDAV",
|
||||
"syncError": "Backup Error",
|
||||
"syncStatus": "Backup Status",
|
||||
"title": "WebDAV",
|
||||
"user": "WebDAV User"
|
||||
}
|
||||
},
|
||||
"display.custom.css": "Custom CSS",
|
||||
"display.custom.css.placeholder": "/* Put custom CSS here */",
|
||||
|
||||
@ -573,6 +573,29 @@
|
||||
"empty_database_id": "Database_idが設定されていません"
|
||||
},
|
||||
"title": "データ設定",
|
||||
"webdav": {
|
||||
"autoSync": "自動バックアップ",
|
||||
"autoSync.off": "オフ",
|
||||
"backup.button": "WebDAVにバックアップ",
|
||||
"host": "WebDAVホスト",
|
||||
"host.placeholder": "http://localhost:8080",
|
||||
"minute_interval_one": "{{count}} 分",
|
||||
"minute_interval_other": "{{count}} 分",
|
||||
"hour_interval_one": "{{count}} 時間",
|
||||
"hour_interval_other": "{{count}} 時間",
|
||||
"lastSync": "最終バックアップ",
|
||||
"noSync": "次回のバックアップを待機中",
|
||||
"password": "WebDAVパスワード",
|
||||
"path": "WebDAVパス",
|
||||
"path.placeholder": "/backup",
|
||||
"restore.button": "WebDAVから復元",
|
||||
"restore.content": "WebDAVから復元すると現在のデータが上書きされます。続行しますか?",
|
||||
"restore.title": "WebDAVから復元",
|
||||
"syncError": "バックアップエラー",
|
||||
"syncStatus": "バックアップ状態",
|
||||
"title": "WebDAV",
|
||||
"user": "WebDAVユーザー"
|
||||
},
|
||||
"webdav.autoSync": "自動バックアップ",
|
||||
"webdav.autoSync.off": "オフ",
|
||||
"webdav.backup.button": "WebDAVにバックアップ",
|
||||
@ -591,7 +614,11 @@
|
||||
"webdav.syncError": "バックアップエラー",
|
||||
"webdav.syncStatus": "バックアップ状態",
|
||||
"webdav.title": "WebDAV",
|
||||
"webdav.user": "WebDAVユーザー"
|
||||
"webdav.user": "WebDAVユーザー",
|
||||
"minute_interval_one": "{{count}} 分",
|
||||
"minute_interval_other": "{{count}} 分",
|
||||
"hour_interval_one": "{{count}} 時間",
|
||||
"hour_interval_other": "{{count}} 時間"
|
||||
},
|
||||
"display.custom.css": "カスタムCSS",
|
||||
"display.custom.css.placeholder": "/* ここにカスタムCSSを入力 */",
|
||||
|
||||
@ -573,25 +573,31 @@
|
||||
"empty_database_id": "Не настроен Database_id"
|
||||
},
|
||||
"title": "Настройки данных",
|
||||
"webdav.autoSync": "Автоматическое резервное копирование",
|
||||
"webdav.autoSync.off": "Выключено",
|
||||
"webdav.backup.button": "Резервное копирование на WebDAV",
|
||||
"webdav.host": "Хост WebDAV",
|
||||
"webdav.host.placeholder": "http://localhost:8080",
|
||||
"webdav.hours": "часов",
|
||||
"webdav.lastSync": "Последняя синхронизация",
|
||||
"webdav.minutes": "минут",
|
||||
"webdav.noSync": "Ожидание следующего резервного копирования",
|
||||
"webdav.password": "Пароль WebDAV",
|
||||
"webdav.path": "Путь WebDAV",
|
||||
"webdav.path.placeholder": "/backup",
|
||||
"webdav.restore.button": "Восстановление с WebDAV",
|
||||
"webdav.restore.content": "Восстановление с WebDAV перезапишет текущие данные, продолжить?",
|
||||
"webdav.restore.title": "Восстановление с WebDAV",
|
||||
"webdav.syncError": "Ошибка резервного копирования",
|
||||
"webdav.syncStatus": "Статус резервного копирования",
|
||||
"webdav.title": "WebDAV",
|
||||
"webdav.user": "Пользователь WebDAV"
|
||||
"webdav": {
|
||||
"autoSync": "Автоматическое резервное копирование",
|
||||
"autoSync.off": "Выключено",
|
||||
"backup.button": "Резервное копирование на WebDAV",
|
||||
"host": "Хост WebDAV",
|
||||
"host.placeholder": "http://localhost:8080",
|
||||
"minute_interval_one": "{{count}} минута",
|
||||
"minute_interval_few": "{{count}} минуты",
|
||||
"minute_interval_many": "{{count}} минут",
|
||||
"hour_interval_one": "{{count}} час",
|
||||
"hour_interval_few": "{{count}} часа",
|
||||
"hour_interval_many": "{{count}} часов",
|
||||
"lastSync": "Последняя синхронизация",
|
||||
"noSync": "Ожидание следующего резервного копирования",
|
||||
"password": "Пароль WebDAV",
|
||||
"path": "Путь WebDAV",
|
||||
"path.placeholder": "/backup",
|
||||
"restore.button": "Восстановление с WebDAV",
|
||||
"restore.content": "Восстановление с WebDAV перезапишет текущие данные, продолжить?",
|
||||
"restore.title": "Восстановление с WebDAV",
|
||||
"syncError": "Ошибка резервного копирования",
|
||||
"syncStatus": "Статус резервного копирования",
|
||||
"title": "WebDAV",
|
||||
"user": "Пользователь WebDAV"
|
||||
}
|
||||
},
|
||||
"display.custom.css": "Пользовательский CSS",
|
||||
"display.custom.css.placeholder": "/* Здесь введите пользовательский CSS */",
|
||||
|
||||
@ -573,25 +573,33 @@
|
||||
"empty_database_id": "未配置Database_id"
|
||||
},
|
||||
"title": "数据设置",
|
||||
"webdav.autoSync": "自动备份",
|
||||
"webdav.autoSync.off": "关闭",
|
||||
"webdav.backup.button": "备份到 WebDAV",
|
||||
"webdav.host": "WebDAV 地址",
|
||||
"webdav.host.placeholder": "http://localhost:8080",
|
||||
"webdav.hours": "小时",
|
||||
"webdav.lastSync": "上次备份时间",
|
||||
"webdav.minutes": "分钟",
|
||||
"webdav.noSync": "等待下次备份",
|
||||
"webdav.password": "WebDAV 密码",
|
||||
"webdav.path": "WebDAV 路径",
|
||||
"webdav.path.placeholder": "/backup",
|
||||
"webdav.restore.button": "从 WebDAV 恢复",
|
||||
"webdav.restore.content": "从 WebDAV 恢复将覆盖当前数据,是否继续?",
|
||||
"webdav.restore.title": "从 WebDAV 恢复",
|
||||
"webdav.syncError": "备份错误",
|
||||
"webdav.syncStatus": "备份状态",
|
||||
"webdav.title": "WebDAV",
|
||||
"webdav.user": "WebDAV 用户名"
|
||||
"webdav": {
|
||||
"autoSync": "自动备份",
|
||||
"autoSync.off": "关闭",
|
||||
"backup.button": "备份到 WebDAV",
|
||||
"host": "WebDAV 地址",
|
||||
"host.placeholder": "http://localhost:8080",
|
||||
"minute_interval_one": "{{count}} 分钟",
|
||||
"minute_interval_other": "{{count}} 分钟",
|
||||
"hour_interval_one": "{{count}} 小时",
|
||||
"hour_interval_other": "{{count}} 小时",
|
||||
"lastSync": "上次备份时间",
|
||||
"noSync": "等待下次备份",
|
||||
"password": "WebDAV 密码",
|
||||
"path": "WebDAV 路径",
|
||||
"path.placeholder": "/backup",
|
||||
"restore.button": "从 WebDAV 恢复",
|
||||
"restore.content": "从 WebDAV 恢复将覆盖当前数据,是否继续?",
|
||||
"restore.title": "从 WebDAV 恢复",
|
||||
"syncError": "备份错误",
|
||||
"syncStatus": "备份状态",
|
||||
"title": "WebDAV",
|
||||
"user": "WebDAV 用户名"
|
||||
},
|
||||
"minute_interval_one": "{{count}} 分钟",
|
||||
"minute_interval_other": "{{count}} 分钟",
|
||||
"hour_interval_one": "{{count}} 小时",
|
||||
"hour_interval_other": "{{count}} 小时"
|
||||
},
|
||||
"display.custom.css": "自定义 CSS",
|
||||
"display.custom.css.placeholder": "/* 这里写自定义CSS */",
|
||||
|
||||
@ -571,27 +571,35 @@
|
||||
"empty_database_id": "未配置Database_id"
|
||||
},
|
||||
"title": "數據設定",
|
||||
"webdav.autoSync": "自動備份",
|
||||
"webdav.autoSync.off": "關閉",
|
||||
"webdav.backup.button": "從 WebDAV 備份",
|
||||
"webdav.host": "WebDAV 主機位址",
|
||||
"webdav.host.placeholder": "http://localhost:8080",
|
||||
"webdav.hours": "小時",
|
||||
"webdav.lastSync": "上次同步時間",
|
||||
"webdav.minutes": "分鐘",
|
||||
"webdav.noSync": "等待下次備份",
|
||||
"webdav.password": "WebDAV 密碼",
|
||||
"webdav.path": "WebDAV Path",
|
||||
"webdav.path.placeholder": "/backup",
|
||||
"webdav.restore.button": "從 WebDAV 恢復",
|
||||
"webdav.restore.content": "從 WebDAV 恢復將覆蓋當前資料,是否繼續?",
|
||||
"webdav.restore.title": "從 WebDAV 恢復",
|
||||
"webdav.syncError": "備份錯誤",
|
||||
"webdav.syncStatus": "備份狀態",
|
||||
"webdav.title": "WebDAV",
|
||||
"webdav.user": "WebDAV 使用者名稱",
|
||||
"webdav": {
|
||||
"autoSync": "自動備份",
|
||||
"autoSync.off": "關閉",
|
||||
"backup.button": "備份到 WebDAV",
|
||||
"host": "WebDAV 主機位址",
|
||||
"host.placeholder": "http://localhost:8080",
|
||||
"minute_interval_one": "{{count}} 分鐘",
|
||||
"minute_interval_other": "{{count}} 分鐘",
|
||||
"hour_interval_one": "{{count}} 小時",
|
||||
"hour_interval_other": "{{count}} 小時",
|
||||
"lastSync": "上次備份時間",
|
||||
"noSync": "等待下次備份",
|
||||
"password": "WebDAV 密碼",
|
||||
"path": "WebDAV 路徑",
|
||||
"path.placeholder": "/backup",
|
||||
"restore.button": "從 WebDAV 恢復",
|
||||
"restore.content": "從 WebDAV 恢復將覆蓋當前資料,是否繼續?",
|
||||
"restore.title": "從 WebDAV 恢復",
|
||||
"syncError": "備份錯誤",
|
||||
"syncStatus": "備份狀態",
|
||||
"title": "WebDAV",
|
||||
"user": "WebDAV 使用者名稱"
|
||||
},
|
||||
"app_data": "應用數據",
|
||||
"app_logs": "應用日誌"
|
||||
"app_logs": "應用日誌",
|
||||
"minute_interval_one": "{{count}} 分鐘",
|
||||
"minute_interval_other": "{{count}} 分鐘",
|
||||
"hour_interval_one": "{{count}} 小時",
|
||||
"hour_interval_other": "{{count}} 小時"
|
||||
},
|
||||
"display.custom.css": "自定義 CSS",
|
||||
"display.custom.css.placeholder": "/* 這裡寫自定義 CSS */",
|
||||
|
||||
@ -87,7 +87,7 @@ const NotionSettings: FC = () => {
|
||||
value={notionDatabaseID || ''}
|
||||
onChange={handleNotionDatabaseIdChange}
|
||||
onBlur={handleNotionDatabaseIdChange}
|
||||
style={{ width: 315 }}
|
||||
style={{ width: 250 }}
|
||||
placeholder={t('settings.data.notion.database_id_placeholder')}
|
||||
/>
|
||||
</HStack>
|
||||
@ -95,7 +95,7 @@ const NotionSettings: FC = () => {
|
||||
<SettingDivider />
|
||||
<SettingRow>
|
||||
<SettingRowTitle>{t('settings.data.notion.api_key')}</SettingRowTitle>
|
||||
<HStack alignItems="center" gap="5px">
|
||||
<HStack alignItems="center" gap="5px" style={{ width: 315 }}>
|
||||
<Input
|
||||
type="password"
|
||||
value={notionApiKey || ''}
|
||||
@ -104,7 +104,7 @@ const NotionSettings: FC = () => {
|
||||
style={{ width: 250 }}
|
||||
placeholder={t('settings.data.notion.api_key_placeholder')}
|
||||
/>
|
||||
<Button onClick={handleNotionConnectionCheck} style={{ width: 60 }}>
|
||||
<Button onClick={handleNotionConnectionCheck}>
|
||||
{t('settings.data.notion.check.button')}
|
||||
</Button>
|
||||
</HStack>
|
||||
|
||||
@ -163,7 +163,6 @@ const WebDavSettings: FC = () => {
|
||||
<SettingRow>
|
||||
<SettingRowTitle>{t('settings.general.backup.title')}</SettingRowTitle>
|
||||
<HStack gap="5px" justifyContent="space-between">
|
||||
{/* 添加 在线备份 在线还原 按钮 */}
|
||||
<Button onClick={onBackup} icon={<SaveOutlined />} loading={backuping}>
|
||||
{t('settings.data.webdav.backup.button')}
|
||||
</Button>
|
||||
@ -178,18 +177,32 @@ const WebDavSettings: FC = () => {
|
||||
<Select value={syncInterval} onChange={onSyncIntervalChange} disabled={!webdavHost} style={{ width: 120 }}>
|
||||
<Select.Option value={0}>{t('settings.data.webdav.autoSync.off')}</Select.Option>
|
||||
<Select.Option value={1}>
|
||||
1 {i18n.language === 'en-US' ? t('settings.data.webdav.minute') : t('settings.data.webdav.minutes')}
|
||||
{t('settings.data.webdav.minute_interval', { count: 1 })}
|
||||
</Select.Option>
|
||||
<Select.Option value={5}>
|
||||
{t('settings.data.webdav.minute_interval', { count: 5 })}
|
||||
</Select.Option>
|
||||
<Select.Option value={15}>
|
||||
{t('settings.data.webdav.minute_interval', { count: 15 })}
|
||||
</Select.Option>
|
||||
<Select.Option value={30}>
|
||||
{t('settings.data.webdav.minute_interval', { count: 30 })}
|
||||
</Select.Option>
|
||||
<Select.Option value={5}>5 {t('settings.data.webdav.minutes')}</Select.Option>
|
||||
<Select.Option value={15}>15 {t('settings.data.webdav.minutes')}</Select.Option>
|
||||
<Select.Option value={30}>30 {t('settings.data.webdav.minutes')}</Select.Option>
|
||||
<Select.Option value={60}>
|
||||
1 {i18n.language === 'en-US' ? t('settings.data.webdav.hour') : t('settings.data.webdav.hours')}
|
||||
{t('settings.data.webdav.hour_interval', { count: 1 })}
|
||||
</Select.Option>
|
||||
<Select.Option value={120}>
|
||||
{t('settings.data.webdav.hour_interval', { count: 2 })}
|
||||
</Select.Option>
|
||||
<Select.Option value={360}>
|
||||
{t('settings.data.webdav.hour_interval', { count: 6 })}
|
||||
</Select.Option>
|
||||
<Select.Option value={720}>
|
||||
{t('settings.data.webdav.hour_interval', { count: 12 })}
|
||||
</Select.Option>
|
||||
<Select.Option value={1440}>
|
||||
{t('settings.data.webdav.hour_interval', { count: 24 })}
|
||||
</Select.Option>
|
||||
<Select.Option value={120}>2 {t('settings.data.webdav.hours')}</Select.Option>
|
||||
<Select.Option value={360}>6 {t('settings.data.webdav.hours')}</Select.Option>
|
||||
<Select.Option value={720}>12 {t('settings.data.webdav.hours')}</Select.Option>
|
||||
<Select.Option value={1440}>24 {t('settings.data.webdav.hours')}</Select.Option>
|
||||
</Select>
|
||||
</SettingRow>
|
||||
{webdavSync && syncInterval > 0 && (
|
||||
|
||||
Loading…
Reference in New Issue
Block a user