Infrastructure Sync: Initial migration to custom self-hosted Gitea
This commit is contained in:
+112
-6
@@ -43,6 +43,14 @@ export const translations = {
|
||||
tickTickExportHint: "TickTick: Settings → Export → Export as CSV or iCalendar",
|
||||
importBtn: "Import",
|
||||
importing: "Importing...",
|
||||
exportTasks: "Export Tasks",
|
||||
exportModalTitle: "Export Tasks",
|
||||
exportFormat: "Format",
|
||||
exportScope: "Target List",
|
||||
allLists: "All Lists (Entire Tasks)",
|
||||
includeCompleted: "Include Completed Tasks",
|
||||
exportBtn: "Export & Download",
|
||||
exportSuccess: "Tasks exported successfully!",
|
||||
theme: "Theme",
|
||||
themeSystem: "System",
|
||||
themeLight: "Light",
|
||||
@@ -67,6 +75,32 @@ export const translations = {
|
||||
days30: "30 Days (Recommended)",
|
||||
neverDelete: "Never Auto-Delete",
|
||||
|
||||
// CalDAV & Sync
|
||||
syncTitle: "Galaxy & External Sync (CalDAV)",
|
||||
syncDesc: "CheckFlow supports native two-way synchronization with Samsung Galaxy Reminder, Apple Reminders, and Thunderbird via CalDAV.",
|
||||
syncBaseUrl: "CalDAV Server Base URL",
|
||||
syncCopyUrl: "Copy URL",
|
||||
syncCopied: "Copied!",
|
||||
syncDownloadIcs: "Download .ICS Feed",
|
||||
syncTestConnection: "Test Endpoint",
|
||||
syncTesting: "Testing...",
|
||||
syncTestSuccess: "✓ CalDAV endpoint responded successfully (200 OK)",
|
||||
syncTabAndroid: "Galaxy / Android (DAVx⁵)",
|
||||
syncTabApple: "Apple Reminders (iOS / macOS)",
|
||||
syncTabThunderbird: "Thunderbird (Desktop)",
|
||||
syncAndroidStep1: "Install DAVx⁵ from Google Play Store or F-Droid.",
|
||||
syncAndroidStep2: "Open DAVx⁵ → Add Account → Select 'Login with URL and user name'.",
|
||||
syncAndroidStep3: "Paste the Base URL above, then enter your CheckFlow email & password.",
|
||||
syncAndroidStep4: "Enable 'VTODO (Tasks)' collection to sync with Samsung Reminder or OpenTasks.",
|
||||
syncAppleStep1: "Open Settings → Reminders → Accounts → Add Account.",
|
||||
syncAppleStep2: "Select 'Other' → Add CalDAV Account.",
|
||||
syncAppleStep3: "Server: paste base URL without protocol, User/Pass: CheckFlow credentials.",
|
||||
syncAppleStep4: "Toggle 'Reminders' ON and tap Save.",
|
||||
syncThunderbirdStep1: "Open Thunderbird → Switch to Calendar view → New Calendar.",
|
||||
syncThunderbirdStep2: "Select 'On the Network' → Format: CalDAV.",
|
||||
syncThunderbirdStep3: "Location: paste the Base URL, Username: CheckFlow email.",
|
||||
syncThunderbirdStep4: "Enter your password when prompted to finalize sync.",
|
||||
|
||||
// Task List
|
||||
tasks: "Tasks",
|
||||
hideDone: "Hide done",
|
||||
@@ -189,6 +223,14 @@ export const translations = {
|
||||
tickTickExportHint: "TickTick: 설정 → 데이터 내보내기 → CSV 또는 iCalendar",
|
||||
importBtn: "가져오기",
|
||||
importing: "가져오는 중이에요...",
|
||||
exportTasks: "내보내기",
|
||||
exportModalTitle: "할 일 내보내기",
|
||||
exportFormat: "내보내기 형식",
|
||||
exportScope: "내보낼 목록",
|
||||
allLists: "모든 목록 (전체 할 일)",
|
||||
includeCompleted: "완료된 항목 포함",
|
||||
exportBtn: "내보내기 및 다운로드",
|
||||
exportSuccess: "할 일을 성공적으로 내보냈어요!",
|
||||
theme: "테마",
|
||||
themeSystem: "시스템",
|
||||
themeLight: "라이트",
|
||||
@@ -204,7 +246,7 @@ export const translations = {
|
||||
settingsModalTitle: "설정",
|
||||
profile: "프로필",
|
||||
preferences: "환경설정",
|
||||
syncIntegrations: "외부 연동",
|
||||
syncIntegrations: "외부 연동 (CalDAV)",
|
||||
admin: "관리자",
|
||||
trashRetention: "휴지통 자동 비우기",
|
||||
trashRetentionHint: "설정한 기간이 지나면 휴지통이 자동으로 비워져요.",
|
||||
@@ -213,6 +255,32 @@ export const translations = {
|
||||
days30: "30일 후 자동 삭제 (권장)",
|
||||
neverDelete: "자동 삭제 안 함",
|
||||
|
||||
// CalDAV & Sync
|
||||
syncTitle: "갤럭시 및 외부 캘린더 연동 (CalDAV)",
|
||||
syncDesc: "삼성 갤럭시 리마인더, 애플 미리알림, Thunderbird 등 CalDAV 표준을 지원하는 모든 기기와 양방향으로 동기화됩니다.",
|
||||
syncBaseUrl: "CalDAV 기본 주소 (Base URL)",
|
||||
syncCopyUrl: "URL 복사",
|
||||
syncCopied: "복사 완료!",
|
||||
syncDownloadIcs: ".ICS 피드 다운로드",
|
||||
syncTestConnection: "엔드포인트 점검",
|
||||
syncTesting: "점검 중...",
|
||||
syncTestSuccess: "✓ CalDAV 엔드포인트가 정상적으로 응답합니다 (200 OK)",
|
||||
syncTabAndroid: "갤럭시 / 안드로이드 (DAVx⁵)",
|
||||
syncTabApple: "애플 미리알림 (iOS / macOS)",
|
||||
syncTabThunderbird: "Thunderbird (PC)",
|
||||
syncAndroidStep1: "구글 플레이 스토어 또는 F-Droid에서 'DAVx⁵' 앱을 설치합니다.",
|
||||
syncAndroidStep2: "DAVx⁵ 실행 → 계정 추가(+) → 'URL 및 사용자 이름으로 로그인'을 선택합니다.",
|
||||
syncAndroidStep3: "위 기본 주소를 붙여넣고, CheckFlow 로그인 이메일과 비밀번호를 입력합니다.",
|
||||
syncAndroidStep4: "'VTODO (할 일)'을 켜면 삼성 리마인더 또는 OpenTasks와 자동으로 실시간 동기화됩니다.",
|
||||
syncAppleStep1: "기기 설정 → 미리알림(또는 캘린더) → 계정 → '계정 추가'를 탭합니다.",
|
||||
syncAppleStep2: "'기타' 선택 → 'CalDAV 계정 추가'를 누릅니다.",
|
||||
syncAppleStep3: "서버에 위 주소를 입력하고, 사용자 이름/비밀번호에 CheckFlow 계정 정보를 입력합니다.",
|
||||
syncAppleStep4: "'미리알림' 항목을 활성화하고 저장합니다.",
|
||||
syncThunderbirdStep1: "Thunderbird 실행 → 캘린더 탭으로 이동 → '새 캘린더'를 클릭합니다.",
|
||||
syncThunderbirdStep2: "'네트워크에 저장' 선택 → 형식: 'CalDAV'를 선택합니다.",
|
||||
syncThunderbirdStep3: "위치에 위 기본 주소를 붙여넣고, 사용자 이름에 CheckFlow 이메일을 입력합니다.",
|
||||
syncThunderbirdStep4: "인증 팝업이 뜨면 비밀번호를 입력하여 완료합니다.",
|
||||
|
||||
// Task List
|
||||
tasks: "할 일",
|
||||
hideDone: "완료 숨기기",
|
||||
@@ -335,6 +403,14 @@ export const translations = {
|
||||
tickTickExportHint: "TickTick: 設定 → エクスポート → CSV または iCalendar",
|
||||
importBtn: "インポートする",
|
||||
importing: "インポート中...",
|
||||
exportTasks: "エクスポート",
|
||||
exportModalTitle: "タスクをエクスポート",
|
||||
exportFormat: "エクスポート形式",
|
||||
exportScope: "対象リスト",
|
||||
allLists: "すべてのリスト(全体)",
|
||||
includeCompleted: "完了したタスクを含める",
|
||||
exportBtn: "エクスポートして保存",
|
||||
exportSuccess: "タスクをエクスポートしました!",
|
||||
theme: "テーマ",
|
||||
themeSystem: "システム",
|
||||
themeLight: "ライト",
|
||||
@@ -350,7 +426,7 @@ export const translations = {
|
||||
settingsModalTitle: "設定",
|
||||
profile: "プロフィール",
|
||||
preferences: "環境設定",
|
||||
syncIntegrations: "外部連携",
|
||||
syncIntegrations: "外部連携 (CalDAV)",
|
||||
admin: "管理者",
|
||||
trashRetention: "ゴミ箱の自動削除",
|
||||
trashRetentionHint: "設定した期間が過ぎると、ゴミ箱が自動的に空になります。",
|
||||
@@ -359,6 +435,32 @@ export const translations = {
|
||||
days30: "30日後に自動削除(推奨)",
|
||||
neverDelete: "自動削除しない",
|
||||
|
||||
// CalDAV & Sync
|
||||
syncTitle: "Galaxy & 外部カレンダー連携 (CalDAV)",
|
||||
syncDesc: "Samsung Galaxy リマインダー、Apple リマインダー、Thunderbird など CalDAV 対応アプリと双方向同期できます。",
|
||||
syncBaseUrl: "CalDAV サーバー基本 URL",
|
||||
syncCopyUrl: "URL をコピー",
|
||||
syncCopied: "コピーしました!",
|
||||
syncDownloadIcs: ".ICS フィードをダウンロード",
|
||||
syncTestConnection: "接続テスト",
|
||||
syncTesting: "テスト中...",
|
||||
syncTestSuccess: "✓ CalDAV エンドポイントは正常に応答しています (200 OK)",
|
||||
syncTabAndroid: "Galaxy / Android (DAVx⁵)",
|
||||
syncTabApple: "Apple リマインダー (iOS / macOS)",
|
||||
syncTabThunderbird: "Thunderbird (PC)",
|
||||
syncAndroidStep1: "Google Play または F-Droid から「DAVx⁵」アプリをインストールします。",
|
||||
syncAndroidStep2: "DAVx⁵ を起動 → アカウント追加 →「URL とユーザー名でログイン」を選択します。",
|
||||
syncAndroidStep3: "上記の基本 URL を貼り付け、CheckFlow のメールアドレスとパスワードを入力します。",
|
||||
syncAndroidStep4: "「VTODO (タスク)」を有効にすると、Samsung リマインダーや OpenTasks と連携されます。",
|
||||
syncAppleStep1: "設定 → リマインダー → アカウント →「アカウントを追加」を開きます。",
|
||||
syncAppleStep2: "「その他」を選択 →「CalDAV アカウントを追加」を選択します。",
|
||||
syncAppleStep3: "サーバーに上記の URL、ユーザー名/パスワードに CheckFlow のアカウント情報を入力します。",
|
||||
syncAppleStep4: "「リマインダー」を有効にして保存します。",
|
||||
syncThunderbirdStep1: "Thunderbird を起動 → カレンダータブ → 新しいカレンダーを作成します。",
|
||||
syncThunderbirdStep2: "「ネットワーク上」を選択 → 形式: CalDAV を選択します。",
|
||||
syncThunderbirdStep3: "場所に上記の URL、ユーザー名に CheckFlow のメールアドレスを入力します。",
|
||||
syncThunderbirdStep4: "ログイン画面でパスワードを入力して完了します。",
|
||||
|
||||
// Task List
|
||||
tasks: "タスク",
|
||||
hideDone: "完了を非表示",
|
||||
@@ -468,19 +570,23 @@ export function I18nProvider({ children }: { children: React.ReactNode }) {
|
||||
if (saved && (saved === "en" || saved === "ko" || saved === "ja")) {
|
||||
setLangState(saved);
|
||||
}
|
||||
} catch {}
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
}, []);
|
||||
|
||||
const setLang = (l: Language) => {
|
||||
setLangState(l);
|
||||
try {
|
||||
localStorage.setItem(LANG_STORAGE_KEY, l);
|
||||
} catch {}
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
};
|
||||
|
||||
const t = (key: TranslationKeys): string => {
|
||||
const dict = translations[lang] || translations.en;
|
||||
return (dict as any)[key] || translations.en[key] || key;
|
||||
const dict = (translations[lang] || translations.en) as Record<string, string>;
|
||||
return dict[key] || translations.en[key] || key;
|
||||
};
|
||||
|
||||
return <I18nContext.Provider value={{ lang, setLang, t }}>{children}</I18nContext.Provider>;
|
||||
|
||||
Reference in New Issue
Block a user