diff --git a/internal/i18n/translations/it.json b/internal/i18n/translations/it.json new file mode 100644 index 0000000..ef9aa63 --- /dev/null +++ b/internal/i18n/translations/it.json @@ -0,0 +1,187 @@ +{ + "error.invalid_request_body": "Corpo della richiesta non valido", + "error.invalid_credentials": "Credenziali non valide", + "error.account_inactive": "L'account non è attivo", + "error.username_taken": "Nome utente già in uso", + "error.email_taken": "Email già registrata", + "error.email_already_taken": "Email già in uso", + "error.registration_failed": "Registrazione fallita", + "error.not_authenticated": "Non autenticato", + "error.failed_to_get_user": "Impossibile recuperare l'utente", + "error.failed_to_update_profile": "Impossibile aggiornare il profilo", + "error.invalid_verification_code": "Codice di verifica non valido", + "error.verification_code_expired": "Il codice di verifica è scaduto", + "error.email_already_verified": "Email già verificata", + "error.verification_failed": "Verifica fallita", + "error.failed_to_resend_verification": "Impossibile reinviare la verifica", + "error.rate_limit_exceeded": "Troppe richieste di reimpostazione password. Riprova più tardi.", + "error.too_many_attempts": "Troppi tentativi. Richiedi un nuovo codice.", + "error.invalid_reset_token": "Token di reimpostazione non valido o scaduto", + "error.password_reset_failed": "Reimpostazione password fallita", + "error.apple_signin_not_configured": "L'accesso con Apple non è configurato", + "error.apple_signin_failed": "Accesso con Apple fallito", + "error.invalid_apple_token": "Token di identità Apple non valido", + + "error.invalid_task_id": "ID attività non valido", + "error.invalid_residence_id": "ID immobile non valido", + "error.invalid_contractor_id": "ID fornitore non valido", + "error.invalid_document_id": "ID documento non valido", + "error.invalid_completion_id": "ID completamento non valido", + "error.invalid_user_id": "ID utente non valido", + "error.invalid_notification_id": "ID notifica non valido", + "error.invalid_device_id": "ID dispositivo non valido", + + "error.task_not_found": "Attività non trovata", + "error.residence_not_found": "Immobile non trovato", + "error.contractor_not_found": "Fornitore non trovato", + "error.document_not_found": "Documento non trovato", + "error.completion_not_found": "Completamento attività non trovato", + "error.user_not_found": "Utente non trovato", + "error.share_code_invalid": "Codice di condivisione non valido", + "error.share_code_expired": "Il codice di condivisione è scaduto", + + "error.task_access_denied": "Non hai accesso a questa attività", + "error.residence_access_denied": "Non hai accesso a questo immobile", + "error.contractor_access_denied": "Non hai accesso a questo fornitore", + "error.document_access_denied": "Non hai accesso a questo documento", + "error.not_residence_owner": "Solo il proprietario dell'immobile può eseguire questa azione", + "error.cannot_remove_owner": "Impossibile rimuovere il proprietario dell'immobile", + "error.user_already_member": "L'utente è già membro di questo immobile", + "error.properties_limit_reached": "Hai raggiunto il numero massimo di immobili per il tuo abbonamento", + + "error.task_already_cancelled": "L'attività è già stata annullata", + "error.task_already_archived": "L'attività è già stata archiviata", + + "error.failed_to_parse_form": "Impossibile analizzare il modulo multipart", + "error.task_id_required": "task_id è obbligatorio", + "error.invalid_task_id_value": "task_id non valido", + "error.failed_to_upload_image": "Impossibile caricare l'immagine", + "error.residence_id_required": "residence_id è obbligatorio", + "error.invalid_residence_id_value": "residence_id non valido", + "error.title_required": "title è obbligatorio", + "error.failed_to_upload_file": "Impossibile caricare il file", + + "message.logged_out": "Disconnessione avvenuta con successo", + "message.email_verified": "Email verificata con successo", + "message.verification_email_sent": "Email di verifica inviata", + "message.password_reset_email_sent": "Se esiste un account con quell'email, è stato inviato un codice di reimpostazione password.", + "message.reset_code_verified": "Codice verificato con successo", + "message.password_reset_success": "Password reimpostata con successo. Accedi con la tua nuova password.", + + "message.task_deleted": "Attività eliminata con successo", + "message.task_in_progress": "Attività contrassegnata come in corso", + "message.task_cancelled": "Attività annullata", + "message.task_uncancelled": "Annullamento attività revocato", + "message.task_archived": "Attività archiviata", + "message.task_unarchived": "Attività ripristinata dall'archivio", + "message.completion_deleted": "Completamento eliminato con successo", + + "message.residence_deleted": "Immobile eliminato con successo", + "message.user_removed": "Utente rimosso dall'immobile", + "message.tasks_report_generated": "Report attività generato con successo", + "message.tasks_report_sent": "Report attività generato e inviato a {{.Email}}", + "message.tasks_report_email_failed": "Report attività generato ma l'email non è stata inviata", + + "message.contractor_deleted": "Fornitore eliminato con successo", + + "message.document_deleted": "Documento eliminato con successo", + "message.document_activated": "Documento attivato", + "message.document_deactivated": "Documento disattivato", + + "message.notification_marked_read": "Notifica contrassegnata come letta", + "message.all_notifications_marked_read": "Tutte le notifiche contrassegnate come lette", + "message.device_removed": "Dispositivo rimosso", + + "message.subscription_upgraded": "Abbonamento aggiornato con successo", + "message.subscription_cancelled": "Abbonamento annullato. Manterrai i vantaggi Pro fino alla fine del periodo di fatturazione.", + "message.subscription_restored": "Abbonamento ripristinato con successo", + + "message.file_deleted": "File eliminato con successo", + "message.static_data_refreshed": "Dati statici aggiornati", + + "error.notification_not_found": "Notifica non trovata", + "error.invalid_platform": "Piattaforma non valida", + + "error.upgrade_trigger_not_found": "Trigger di aggiornamento non trovato", + "error.receipt_data_required": "receipt_data è obbligatorio per iOS", + "error.purchase_token_required": "purchase_token è obbligatorio per Android", + + "error.no_file_provided": "Nessun file fornito", + + "error.failed_to_fetch_residence_types": "Impossibile recuperare i tipi di immobile", + "error.failed_to_fetch_task_categories": "Impossibile recuperare le categorie di attività", + "error.failed_to_fetch_task_priorities": "Impossibile recuperare le priorità delle attività", + "error.failed_to_fetch_task_frequencies": "Impossibile recuperare le frequenze delle attività", + "error.failed_to_fetch_task_statuses": "Impossibile recuperare gli stati delle attività", + "error.failed_to_fetch_contractor_specialties": "Impossibile recuperare le specializzazioni dei fornitori", + + "push.task_due_soon.title": "Attività in Scadenza", + "push.task_due_soon.body": "{{.TaskTitle}} scade {{.DueDate}}", + "push.task_overdue.title": "Attività Scaduta", + "push.task_overdue.body": "{{.TaskTitle}} è scaduta", + "push.task_completed.title": "Attività Completata", + "push.task_completed.body": "{{.UserName}} ha completato {{.TaskTitle}}", + "push.task_assigned.title": "Nuova Attività Assegnata", + "push.task_assigned.body": "Ti è stata assegnata {{.TaskTitle}}", + "push.residence_shared.title": "Immobile Condiviso", + "push.residence_shared.body": "{{.UserName}} ha condiviso {{.ResidenceName}} con te", + + "email.welcome.subject": "Benvenuto su Casera!", + "email.verification.subject": "Verifica la Tua Email", + "email.password_reset.subject": "Codice di Reimpostazione Password", + "email.tasks_report.subject": "Report Attività per {{.ResidenceName}}", + + "lookup.residence_type.house": "Casa", + "lookup.residence_type.apartment": "Appartamento", + "lookup.residence_type.condo": "Condominio", + "lookup.residence_type.townhouse": "Villetta a Schiera", + "lookup.residence_type.mobile_home": "Casa Mobile", + "lookup.residence_type.other": "Altro", + + "lookup.task_category.plumbing": "Idraulica", + "lookup.task_category.electrical": "Elettricità", + "lookup.task_category.hvac": "Climatizzazione", + "lookup.task_category.appliances": "Elettrodomestici", + "lookup.task_category.exterior": "Esterno", + "lookup.task_category.interior": "Interno", + "lookup.task_category.landscaping": "Giardinaggio", + "lookup.task_category.safety": "Sicurezza", + "lookup.task_category.cleaning": "Pulizia", + "lookup.task_category.pest_control": "Disinfestazione", + "lookup.task_category.seasonal": "Stagionale", + "lookup.task_category.other": "Altro", + + "lookup.task_priority.low": "Bassa", + "lookup.task_priority.medium": "Media", + "lookup.task_priority.high": "Alta", + "lookup.task_priority.urgent": "Urgente", + + "lookup.task_status.pending": "In Attesa", + "lookup.task_status.in_progress": "In Corso", + "lookup.task_status.completed": "Completata", + "lookup.task_status.cancelled": "Annullata", + "lookup.task_status.archived": "Archiviata", + + "lookup.task_frequency.once": "Una Volta", + "lookup.task_frequency.daily": "Giornaliera", + "lookup.task_frequency.weekly": "Settimanale", + "lookup.task_frequency.biweekly": "Ogni 2 Settimane", + "lookup.task_frequency.monthly": "Mensile", + "lookup.task_frequency.quarterly": "Trimestrale", + "lookup.task_frequency.semiannually": "Ogni 6 Mesi", + "lookup.task_frequency.annually": "Annuale", + + "lookup.contractor_specialty.plumber": "Idraulico", + "lookup.contractor_specialty.electrician": "Elettricista", + "lookup.contractor_specialty.hvac_technician": "Tecnico Climatizzazione", + "lookup.contractor_specialty.handyman": "Tuttofare", + "lookup.contractor_specialty.landscaper": "Giardiniere", + "lookup.contractor_specialty.roofer": "Lattoniere", + "lookup.contractor_specialty.painter": "Imbianchino", + "lookup.contractor_specialty.carpenter": "Falegname", + "lookup.contractor_specialty.pest_control": "Disinfestazione", + "lookup.contractor_specialty.cleaning": "Pulizia", + "lookup.contractor_specialty.pool_service": "Manutenzione Piscine", + "lookup.contractor_specialty.general_contractor": "Impresa Generale", + "lookup.contractor_specialty.other": "Altro" +} diff --git a/internal/i18n/translations/ja.json b/internal/i18n/translations/ja.json new file mode 100644 index 0000000..a95e0a2 --- /dev/null +++ b/internal/i18n/translations/ja.json @@ -0,0 +1,187 @@ +{ + "error.invalid_request_body": "無効なリクエスト本文です", + "error.invalid_credentials": "認証情報が無効です", + "error.account_inactive": "アカウントが無効です", + "error.username_taken": "このユーザー名は既に使用されています", + "error.email_taken": "このメールアドレスは既に登録されています", + "error.email_already_taken": "このメールアドレスは既に使用されています", + "error.registration_failed": "登録に失敗しました", + "error.not_authenticated": "認証されていません", + "error.failed_to_get_user": "ユーザー情報の取得に失敗しました", + "error.failed_to_update_profile": "プロフィールの更新に失敗しました", + "error.invalid_verification_code": "無効な認証コードです", + "error.verification_code_expired": "認証コードの有効期限が切れています", + "error.email_already_verified": "メールアドレスは既に認証済みです", + "error.verification_failed": "認証に失敗しました", + "error.failed_to_resend_verification": "認証メールの再送信に失敗しました", + "error.rate_limit_exceeded": "パスワードリセットのリクエストが多すぎます。後でもう一度お試しください。", + "error.too_many_attempts": "試行回数が多すぎます。新しいコードをリクエストしてください。", + "error.invalid_reset_token": "無効または期限切れのリセットトークンです", + "error.password_reset_failed": "パスワードのリセットに失敗しました", + "error.apple_signin_not_configured": "Apple サインインが設定されていません", + "error.apple_signin_failed": "Apple サインインに失敗しました", + "error.invalid_apple_token": "無効な Apple ID トークンです", + + "error.invalid_task_id": "無効なタスクIDです", + "error.invalid_residence_id": "無効な物件IDです", + "error.invalid_contractor_id": "無効な業者IDです", + "error.invalid_document_id": "無効な書類IDです", + "error.invalid_completion_id": "無効な完了記録IDです", + "error.invalid_user_id": "無効なユーザーIDです", + "error.invalid_notification_id": "無効な通知IDです", + "error.invalid_device_id": "無効なデバイスIDです", + + "error.task_not_found": "タスクが見つかりません", + "error.residence_not_found": "物件が見つかりません", + "error.contractor_not_found": "業者が見つかりません", + "error.document_not_found": "書類が見つかりません", + "error.completion_not_found": "タスクの完了記録が見つかりません", + "error.user_not_found": "ユーザーが見つかりません", + "error.share_code_invalid": "無効な共有コードです", + "error.share_code_expired": "共有コードの有効期限が切れています", + + "error.task_access_denied": "このタスクへのアクセス権がありません", + "error.residence_access_denied": "この物件へのアクセス権がありません", + "error.contractor_access_denied": "この業者へのアクセス権がありません", + "error.document_access_denied": "この書類へのアクセス権がありません", + "error.not_residence_owner": "この操作は物件のオーナーのみが実行できます", + "error.cannot_remove_owner": "物件のオーナーを削除することはできません", + "error.user_already_member": "このユーザーは既にこの物件のメンバーです", + "error.properties_limit_reached": "サブスクリプションで許可されている物件の最大数に達しました", + + "error.task_already_cancelled": "タスクは既にキャンセルされています", + "error.task_already_archived": "タスクは既にアーカイブされています", + + "error.failed_to_parse_form": "マルチパートフォームの解析に失敗しました", + "error.task_id_required": "task_id は必須です", + "error.invalid_task_id_value": "無効な task_id です", + "error.failed_to_upload_image": "画像のアップロードに失敗しました", + "error.residence_id_required": "residence_id は必須です", + "error.invalid_residence_id_value": "無効な residence_id です", + "error.title_required": "タイトルは必須です", + "error.failed_to_upload_file": "ファイルのアップロードに失敗しました", + + "message.logged_out": "ログアウトしました", + "message.email_verified": "メールアドレスの認証が完了しました", + "message.verification_email_sent": "認証メールを送信しました", + "message.password_reset_email_sent": "該当するアカウントが存在する場合、パスワードリセットコードが送信されました。", + "message.reset_code_verified": "コードの認証が完了しました", + "message.password_reset_success": "パスワードのリセットが完了しました。新しいパスワードでログインしてください。", + + "message.task_deleted": "タスクを削除しました", + "message.task_in_progress": "タスクを進行中に設定しました", + "message.task_cancelled": "タスクをキャンセルしました", + "message.task_uncancelled": "タスクのキャンセルを解除しました", + "message.task_archived": "タスクをアーカイブしました", + "message.task_unarchived": "タスクのアーカイブを解除しました", + "message.completion_deleted": "完了記録を削除しました", + + "message.residence_deleted": "物件を削除しました", + "message.user_removed": "ユーザーを物件から削除しました", + "message.tasks_report_generated": "タスクレポートを生成しました", + "message.tasks_report_sent": "タスクレポートを生成し、{{.Email}} に送信しました", + "message.tasks_report_email_failed": "タスクレポートは生成されましたが、メールの送信に失敗しました", + + "message.contractor_deleted": "業者を削除しました", + + "message.document_deleted": "書類を削除しました", + "message.document_activated": "書類を有効化しました", + "message.document_deactivated": "書類を無効化しました", + + "message.notification_marked_read": "通知を既読にしました", + "message.all_notifications_marked_read": "すべての通知を既読にしました", + "message.device_removed": "デバイスを削除しました", + + "message.subscription_upgraded": "サブスクリプションをアップグレードしました", + "message.subscription_cancelled": "サブスクリプションをキャンセルしました。請求期間終了まで Pro 機能をご利用いただけます。", + "message.subscription_restored": "サブスクリプションを復元しました", + + "message.file_deleted": "ファイルを削除しました", + "message.static_data_refreshed": "静的データを更新しました", + + "error.notification_not_found": "通知が見つかりません", + "error.invalid_platform": "無効なプラットフォームです", + + "error.upgrade_trigger_not_found": "アップグレードトリガーが見つかりません", + "error.receipt_data_required": "iOS の場合、receipt_data は必須です", + "error.purchase_token_required": "Android の場合、purchase_token は必須です", + + "error.no_file_provided": "ファイルが提供されていません", + + "error.failed_to_fetch_residence_types": "物件タイプの取得に失敗しました", + "error.failed_to_fetch_task_categories": "タスクカテゴリの取得に失敗しました", + "error.failed_to_fetch_task_priorities": "タスク優先度の取得に失敗しました", + "error.failed_to_fetch_task_frequencies": "タスク頻度の取得に失敗しました", + "error.failed_to_fetch_task_statuses": "タスクステータスの取得に失敗しました", + "error.failed_to_fetch_contractor_specialties": "業者専門分野の取得に失敗しました", + + "push.task_due_soon.title": "タスクの期限が近づいています", + "push.task_due_soon.body": "{{.TaskTitle}} の期限は {{.DueDate}} です", + "push.task_overdue.title": "期限切れのタスク", + "push.task_overdue.body": "{{.TaskTitle}} の期限が過ぎています", + "push.task_completed.title": "タスク完了", + "push.task_completed.body": "{{.UserName}} が {{.TaskTitle}} を完了しました", + "push.task_assigned.title": "新しいタスクが割り当てられました", + "push.task_assigned.body": "{{.TaskTitle}} に割り当てられました", + "push.residence_shared.title": "物件が共有されました", + "push.residence_shared.body": "{{.UserName}} が {{.ResidenceName}} を共有しました", + + "email.welcome.subject": "Casera へようこそ!", + "email.verification.subject": "メールアドレスの認証", + "email.password_reset.subject": "パスワードリセットコード", + "email.tasks_report.subject": "{{.ResidenceName}} のタスクレポート", + + "lookup.residence_type.house": "一戸建て", + "lookup.residence_type.apartment": "アパート", + "lookup.residence_type.condo": "マンション", + "lookup.residence_type.townhouse": "タウンハウス", + "lookup.residence_type.mobile_home": "移動式住宅", + "lookup.residence_type.other": "その他", + + "lookup.task_category.plumbing": "配管", + "lookup.task_category.electrical": "電気", + "lookup.task_category.hvac": "空調", + "lookup.task_category.appliances": "家電", + "lookup.task_category.exterior": "外装", + "lookup.task_category.interior": "内装", + "lookup.task_category.landscaping": "造園", + "lookup.task_category.safety": "安全", + "lookup.task_category.cleaning": "清掃", + "lookup.task_category.pest_control": "害虫駆除", + "lookup.task_category.seasonal": "季節", + "lookup.task_category.other": "その他", + + "lookup.task_priority.low": "低", + "lookup.task_priority.medium": "中", + "lookup.task_priority.high": "高", + "lookup.task_priority.urgent": "緊急", + + "lookup.task_status.pending": "保留中", + "lookup.task_status.in_progress": "進行中", + "lookup.task_status.completed": "完了", + "lookup.task_status.cancelled": "キャンセル", + "lookup.task_status.archived": "アーカイブ", + + "lookup.task_frequency.once": "一度のみ", + "lookup.task_frequency.daily": "毎日", + "lookup.task_frequency.weekly": "毎週", + "lookup.task_frequency.biweekly": "2週間ごと", + "lookup.task_frequency.monthly": "毎月", + "lookup.task_frequency.quarterly": "四半期ごと", + "lookup.task_frequency.semiannually": "半年ごと", + "lookup.task_frequency.annually": "毎年", + + "lookup.contractor_specialty.plumber": "配管工", + "lookup.contractor_specialty.electrician": "電気工事士", + "lookup.contractor_specialty.hvac_technician": "空調技術者", + "lookup.contractor_specialty.handyman": "便利屋", + "lookup.contractor_specialty.landscaper": "造園業者", + "lookup.contractor_specialty.roofer": "屋根職人", + "lookup.contractor_specialty.painter": "塗装工", + "lookup.contractor_specialty.carpenter": "大工", + "lookup.contractor_specialty.pest_control": "害虫駆除業者", + "lookup.contractor_specialty.cleaning": "清掃業者", + "lookup.contractor_specialty.pool_service": "プールサービス", + "lookup.contractor_specialty.general_contractor": "総合建設業者", + "lookup.contractor_specialty.other": "その他" +} diff --git a/internal/i18n/translations/ko.json b/internal/i18n/translations/ko.json new file mode 100644 index 0000000..06c39b6 --- /dev/null +++ b/internal/i18n/translations/ko.json @@ -0,0 +1,187 @@ +{ + "error.invalid_request_body": "유효하지 않은 요청 본문입니다", + "error.invalid_credentials": "유효하지 않은 인증 정보입니다", + "error.account_inactive": "계정이 비활성화되어 있습니다", + "error.username_taken": "이미 사용 중인 사용자 이름입니다", + "error.email_taken": "이미 등록된 이메일입니다", + "error.email_already_taken": "이미 사용 중인 이메일입니다", + "error.registration_failed": "회원가입에 실패했습니다", + "error.not_authenticated": "인증되지 않았습니다", + "error.failed_to_get_user": "사용자 정보를 가져오는데 실패했습니다", + "error.failed_to_update_profile": "프로필 업데이트에 실패했습니다", + "error.invalid_verification_code": "유효하지 않은 인증 코드입니다", + "error.verification_code_expired": "인증 코드가 만료되었습니다", + "error.email_already_verified": "이미 인증된 이메일입니다", + "error.verification_failed": "인증에 실패했습니다", + "error.failed_to_resend_verification": "인증 코드 재발송에 실패했습니다", + "error.rate_limit_exceeded": "비밀번호 재설정 요청이 너무 많습니다. 나중에 다시 시도해주세요.", + "error.too_many_attempts": "시도 횟수가 너무 많습니다. 새 코드를 요청해주세요.", + "error.invalid_reset_token": "유효하지 않거나 만료된 재설정 토큰입니다", + "error.password_reset_failed": "비밀번호 재설정에 실패했습니다", + "error.apple_signin_not_configured": "Apple 로그인이 설정되지 않았습니다", + "error.apple_signin_failed": "Apple 로그인에 실패했습니다", + "error.invalid_apple_token": "유효하지 않은 Apple 인증 토큰입니다", + + "error.invalid_task_id": "유효하지 않은 작업 ID입니다", + "error.invalid_residence_id": "유효하지 않은 주거지 ID입니다", + "error.invalid_contractor_id": "유효하지 않은 계약업체 ID입니다", + "error.invalid_document_id": "유효하지 않은 문서 ID입니다", + "error.invalid_completion_id": "유효하지 않은 완료 ID입니다", + "error.invalid_user_id": "유효하지 않은 사용자 ID입니다", + "error.invalid_notification_id": "유효하지 않은 알림 ID입니다", + "error.invalid_device_id": "유효하지 않은 기기 ID입니다", + + "error.task_not_found": "작업을 찾을 수 없습니다", + "error.residence_not_found": "주거지를 찾을 수 없습니다", + "error.contractor_not_found": "계약업체를 찾을 수 없습니다", + "error.document_not_found": "문서를 찾을 수 없습니다", + "error.completion_not_found": "작업 완료를 찾을 수 없습니다", + "error.user_not_found": "사용자를 찾을 수 없습니다", + "error.share_code_invalid": "유효하지 않은 공유 코드입니다", + "error.share_code_expired": "공유 코드가 만료되었습니다", + + "error.task_access_denied": "이 작업에 접근할 권한이 없습니다", + "error.residence_access_denied": "이 주거지에 접근할 권한이 없습니다", + "error.contractor_access_denied": "이 계약업체에 접근할 권한이 없습니다", + "error.document_access_denied": "이 문서에 접근할 권한이 없습니다", + "error.not_residence_owner": "주거지 소유자만 이 작업을 수행할 수 있습니다", + "error.cannot_remove_owner": "주거지 소유자는 삭제할 수 없습니다", + "error.user_already_member": "이미 이 주거지의 멤버입니다", + "error.properties_limit_reached": "구독 플랜의 최대 주거지 수에 도달했습니다", + + "error.task_already_cancelled": "이미 취소된 작업입니다", + "error.task_already_archived": "이미 보관된 작업입니다", + + "error.failed_to_parse_form": "멀티파트 폼 파싱에 실패했습니다", + "error.task_id_required": "task_id가 필요합니다", + "error.invalid_task_id_value": "유효하지 않은 task_id 값입니다", + "error.failed_to_upload_image": "이미지 업로드에 실패했습니다", + "error.residence_id_required": "residence_id가 필요합니다", + "error.invalid_residence_id_value": "유효하지 않은 residence_id 값입니다", + "error.title_required": "제목이 필요합니다", + "error.failed_to_upload_file": "파일 업로드에 실패했습니다", + + "message.logged_out": "로그아웃되었습니다", + "message.email_verified": "이메일이 인증되었습니다", + "message.verification_email_sent": "인증 이메일이 발송되었습니다", + "message.password_reset_email_sent": "해당 이메일로 등록된 계정이 있는 경우 비밀번호 재설정 코드가 발송되었습니다.", + "message.reset_code_verified": "코드가 인증되었습니다", + "message.password_reset_success": "비밀번호가 재설정되었습니다. 새 비밀번호로 로그인해주세요.", + + "message.task_deleted": "작업이 삭제되었습니다", + "message.task_in_progress": "작업이 진행 중으로 표시되었습니다", + "message.task_cancelled": "작업이 취소되었습니다", + "message.task_uncancelled": "작업 취소가 해제되었습니다", + "message.task_archived": "작업이 보관되었습니다", + "message.task_unarchived": "작업 보관이 해제되었습니다", + "message.completion_deleted": "완료 기록이 삭제되었습니다", + + "message.residence_deleted": "주거지가 삭제되었습니다", + "message.user_removed": "주거지에서 사용자가 제거되었습니다", + "message.tasks_report_generated": "작업 보고서가 생성되었습니다", + "message.tasks_report_sent": "작업 보고서가 생성되어 {{.Email}}로 발송되었습니다", + "message.tasks_report_email_failed": "작업 보고서가 생성되었지만 이메일 발송에 실패했습니다", + + "message.contractor_deleted": "계약업체가 삭제되었습니다", + + "message.document_deleted": "문서가 삭제되었습니다", + "message.document_activated": "문서가 활성화되었습니다", + "message.document_deactivated": "문서가 비활성화되었습니다", + + "message.notification_marked_read": "알림이 읽음으로 표시되었습니다", + "message.all_notifications_marked_read": "모든 알림이 읽음으로 표시되었습니다", + "message.device_removed": "기기가 제거되었습니다", + + "message.subscription_upgraded": "구독이 업그레이드되었습니다", + "message.subscription_cancelled": "구독이 취소되었습니다. 결제 기간이 종료될 때까지 Pro 혜택을 유지하실 수 있습니다.", + "message.subscription_restored": "구독이 복원되었습니다", + + "message.file_deleted": "파일이 삭제되었습니다", + "message.static_data_refreshed": "정적 데이터가 새로고침되었습니다", + + "error.notification_not_found": "알림을 찾을 수 없습니다", + "error.invalid_platform": "유효하지 않은 플랫폼입니다", + + "error.upgrade_trigger_not_found": "업그레이드 트리거를 찾을 수 없습니다", + "error.receipt_data_required": "iOS의 경우 receipt_data가 필요합니다", + "error.purchase_token_required": "Android의 경우 purchase_token이 필요합니다", + + "error.no_file_provided": "파일이 제공되지 않았습니다", + + "error.failed_to_fetch_residence_types": "주거지 유형을 가져오는데 실패했습니다", + "error.failed_to_fetch_task_categories": "작업 카테고리를 가져오는데 실패했습니다", + "error.failed_to_fetch_task_priorities": "작업 우선순위를 가져오는데 실패했습니다", + "error.failed_to_fetch_task_frequencies": "작업 빈도를 가져오는데 실패했습니다", + "error.failed_to_fetch_task_statuses": "작업 상태를 가져오는데 실패했습니다", + "error.failed_to_fetch_contractor_specialties": "계약업체 전문 분야를 가져오는데 실패했습니다", + + "push.task_due_soon.title": "작업 마감 임박", + "push.task_due_soon.body": "{{.TaskTitle}}의 마감일은 {{.DueDate}}입니다", + "push.task_overdue.title": "지연된 작업", + "push.task_overdue.body": "{{.TaskTitle}}이(가) 지연되었습니다", + "push.task_completed.title": "작업 완료", + "push.task_completed.body": "{{.UserName}}님이 {{.TaskTitle}}을(를) 완료했습니다", + "push.task_assigned.title": "새 작업 할당", + "push.task_assigned.body": "{{.TaskTitle}}이(가) 할당되었습니다", + "push.residence_shared.title": "주거지 공유", + "push.residence_shared.body": "{{.UserName}}님이 {{.ResidenceName}}을(를) 공유했습니다", + + "email.welcome.subject": "Casera에 오신 것을 환영합니다!", + "email.verification.subject": "이메일 인증", + "email.password_reset.subject": "비밀번호 재설정 코드", + "email.tasks_report.subject": "{{.ResidenceName}} 작업 보고서", + + "lookup.residence_type.house": "단독주택", + "lookup.residence_type.apartment": "아파트", + "lookup.residence_type.condo": "콘도", + "lookup.residence_type.townhouse": "타운하우스", + "lookup.residence_type.mobile_home": "이동식 주택", + "lookup.residence_type.other": "기타", + + "lookup.task_category.plumbing": "배관", + "lookup.task_category.electrical": "전기", + "lookup.task_category.hvac": "냉난방", + "lookup.task_category.appliances": "가전제품", + "lookup.task_category.exterior": "외부", + "lookup.task_category.interior": "내부", + "lookup.task_category.landscaping": "조경", + "lookup.task_category.safety": "안전", + "lookup.task_category.cleaning": "청소", + "lookup.task_category.pest_control": "해충 방제", + "lookup.task_category.seasonal": "계절별", + "lookup.task_category.other": "기타", + + "lookup.task_priority.low": "낮음", + "lookup.task_priority.medium": "보통", + "lookup.task_priority.high": "높음", + "lookup.task_priority.urgent": "긴급", + + "lookup.task_status.pending": "대기 중", + "lookup.task_status.in_progress": "진행 중", + "lookup.task_status.completed": "완료", + "lookup.task_status.cancelled": "취소됨", + "lookup.task_status.archived": "보관됨", + + "lookup.task_frequency.once": "한 번", + "lookup.task_frequency.daily": "매일", + "lookup.task_frequency.weekly": "매주", + "lookup.task_frequency.biweekly": "2주마다", + "lookup.task_frequency.monthly": "매월", + "lookup.task_frequency.quarterly": "분기별", + "lookup.task_frequency.semiannually": "6개월마다", + "lookup.task_frequency.annually": "매년", + + "lookup.contractor_specialty.plumber": "배관공", + "lookup.contractor_specialty.electrician": "전기 기사", + "lookup.contractor_specialty.hvac_technician": "냉난방 기사", + "lookup.contractor_specialty.handyman": "편리공", + "lookup.contractor_specialty.landscaper": "조경사", + "lookup.contractor_specialty.roofer": "지붕공", + "lookup.contractor_specialty.painter": "도배공", + "lookup.contractor_specialty.carpenter": "목수", + "lookup.contractor_specialty.pest_control": "해충 방제", + "lookup.contractor_specialty.cleaning": "청소", + "lookup.contractor_specialty.pool_service": "수영장 관리", + "lookup.contractor_specialty.general_contractor": "종합 건설업체", + "lookup.contractor_specialty.other": "기타" +} diff --git a/internal/i18n/translations/nl.json b/internal/i18n/translations/nl.json new file mode 100644 index 0000000..989bb46 --- /dev/null +++ b/internal/i18n/translations/nl.json @@ -0,0 +1,187 @@ +{ + "error.invalid_request_body": "Ongeldige aanvraaginhoud", + "error.invalid_credentials": "Ongeldige inloggegevens", + "error.account_inactive": "Account is inactief", + "error.username_taken": "Gebruikersnaam is al in gebruik", + "error.email_taken": "E-mailadres is al geregistreerd", + "error.email_already_taken": "E-mailadres is al in gebruik", + "error.registration_failed": "Registratie mislukt", + "error.not_authenticated": "Niet geauthenticeerd", + "error.failed_to_get_user": "Gebruiker ophalen mislukt", + "error.failed_to_update_profile": "Profiel bijwerken mislukt", + "error.invalid_verification_code": "Ongeldige verificatiecode", + "error.verification_code_expired": "Verificatiecode is verlopen", + "error.email_already_verified": "E-mailadres is al geverifieerd", + "error.verification_failed": "Verificatie mislukt", + "error.failed_to_resend_verification": "Verificatie opnieuw verzenden mislukt", + "error.rate_limit_exceeded": "Te veel wachtwoord reset aanvragen. Probeer het later opnieuw.", + "error.too_many_attempts": "Te veel pogingen. Vraag een nieuwe code aan.", + "error.invalid_reset_token": "Ongeldig of verlopen reset token", + "error.password_reset_failed": "Wachtwoord resetten mislukt", + "error.apple_signin_not_configured": "Apple Sign In is niet geconfigureerd", + "error.apple_signin_failed": "Apple Sign In mislukt", + "error.invalid_apple_token": "Ongeldig Apple identiteitstoken", + + "error.invalid_task_id": "Ongeldig taak-ID", + "error.invalid_residence_id": "Ongeldig woning-ID", + "error.invalid_contractor_id": "Ongeldig aannemer-ID", + "error.invalid_document_id": "Ongeldig document-ID", + "error.invalid_completion_id": "Ongeldig voltooiing-ID", + "error.invalid_user_id": "Ongeldig gebruikers-ID", + "error.invalid_notification_id": "Ongeldig notificatie-ID", + "error.invalid_device_id": "Ongeldig apparaat-ID", + + "error.task_not_found": "Taak niet gevonden", + "error.residence_not_found": "Woning niet gevonden", + "error.contractor_not_found": "Aannemer niet gevonden", + "error.document_not_found": "Document niet gevonden", + "error.completion_not_found": "Taakvoltooiing niet gevonden", + "error.user_not_found": "Gebruiker niet gevonden", + "error.share_code_invalid": "Ongeldige deelcode", + "error.share_code_expired": "Deelcode is verlopen", + + "error.task_access_denied": "U heeft geen toegang tot deze taak", + "error.residence_access_denied": "U heeft geen toegang tot deze woning", + "error.contractor_access_denied": "U heeft geen toegang tot deze aannemer", + "error.document_access_denied": "U heeft geen toegang tot dit document", + "error.not_residence_owner": "Alleen de woningeigenaar kan deze actie uitvoeren", + "error.cannot_remove_owner": "Kan de woningeigenaar niet verwijderen", + "error.user_already_member": "Gebruiker is al lid van deze woning", + "error.properties_limit_reached": "U heeft het maximale aantal woningen voor uw abonnement bereikt", + + "error.task_already_cancelled": "Taak is al geannuleerd", + "error.task_already_archived": "Taak is al gearchiveerd", + + "error.failed_to_parse_form": "Multipart formulier parsen mislukt", + "error.task_id_required": "task_id is verplicht", + "error.invalid_task_id_value": "Ongeldig task_id", + "error.failed_to_upload_image": "Afbeelding uploaden mislukt", + "error.residence_id_required": "residence_id is verplicht", + "error.invalid_residence_id_value": "Ongeldig residence_id", + "error.title_required": "titel is verplicht", + "error.failed_to_upload_file": "Bestand uploaden mislukt", + + "message.logged_out": "Succesvol uitgelogd", + "message.email_verified": "E-mailadres succesvol geverifieerd", + "message.verification_email_sent": "Verificatie e-mail verzonden", + "message.password_reset_email_sent": "Als er een account met dat e-mailadres bestaat, is er een wachtwoord resetcode verzonden.", + "message.reset_code_verified": "Code succesvol geverifieerd", + "message.password_reset_success": "Wachtwoord succesvol gereset. Log in met uw nieuwe wachtwoord.", + + "message.task_deleted": "Taak succesvol verwijderd", + "message.task_in_progress": "Taak gemarkeerd als in uitvoering", + "message.task_cancelled": "Taak geannuleerd", + "message.task_uncancelled": "Taak annulering ongedaan gemaakt", + "message.task_archived": "Taak gearchiveerd", + "message.task_unarchived": "Taak gearchiveerd ongedaan gemaakt", + "message.completion_deleted": "Voltooiing succesvol verwijderd", + + "message.residence_deleted": "Woning succesvol verwijderd", + "message.user_removed": "Gebruiker verwijderd van woning", + "message.tasks_report_generated": "Takenrapport succesvol gegenereerd", + "message.tasks_report_sent": "Takenrapport gegenereerd en verzonden naar {{.Email}}", + "message.tasks_report_email_failed": "Takenrapport gegenereerd maar e-mail kon niet worden verzonden", + + "message.contractor_deleted": "Aannemer succesvol verwijderd", + + "message.document_deleted": "Document succesvol verwijderd", + "message.document_activated": "Document geactiveerd", + "message.document_deactivated": "Document gedeactiveerd", + + "message.notification_marked_read": "Notificatie gemarkeerd als gelezen", + "message.all_notifications_marked_read": "Alle notificaties gemarkeerd als gelezen", + "message.device_removed": "Apparaat verwijderd", + + "message.subscription_upgraded": "Abonnement succesvol geüpgraded", + "message.subscription_cancelled": "Abonnement geannuleerd. U behoudt Pro voordelen tot het einde van uw factureringsperiode.", + "message.subscription_restored": "Abonnement succesvol hersteld", + + "message.file_deleted": "Bestand succesvol verwijderd", + "message.static_data_refreshed": "Statische gegevens vernieuwd", + + "error.notification_not_found": "Notificatie niet gevonden", + "error.invalid_platform": "Ongeldig platform", + + "error.upgrade_trigger_not_found": "Upgrade trigger niet gevonden", + "error.receipt_data_required": "receipt_data is verplicht voor iOS", + "error.purchase_token_required": "purchase_token is verplicht voor Android", + + "error.no_file_provided": "Geen bestand aangeleverd", + + "error.failed_to_fetch_residence_types": "Woningtypes ophalen mislukt", + "error.failed_to_fetch_task_categories": "Taakcategorieën ophalen mislukt", + "error.failed_to_fetch_task_priorities": "Taakprioriteiten ophalen mislukt", + "error.failed_to_fetch_task_frequencies": "Taakfrequenties ophalen mislukt", + "error.failed_to_fetch_task_statuses": "Taakstatussen ophalen mislukt", + "error.failed_to_fetch_contractor_specialties": "Aannemer specialiteiten ophalen mislukt", + + "push.task_due_soon.title": "Taak Vervalt Binnenkort", + "push.task_due_soon.body": "{{.TaskTitle}} vervalt {{.DueDate}}", + "push.task_overdue.title": "Verlopen Taak", + "push.task_overdue.body": "{{.TaskTitle}} is verlopen", + "push.task_completed.title": "Taak Voltooid", + "push.task_completed.body": "{{.UserName}} heeft {{.TaskTitle}} voltooid", + "push.task_assigned.title": "Nieuwe Taak Toegewezen", + "push.task_assigned.body": "U bent toegewezen aan {{.TaskTitle}}", + "push.residence_shared.title": "Woning Gedeeld", + "push.residence_shared.body": "{{.UserName}} heeft {{.ResidenceName}} met u gedeeld", + + "email.welcome.subject": "Welkom bij Casera!", + "email.verification.subject": "Verifieer Uw E-mailadres", + "email.password_reset.subject": "Wachtwoord Resetcode", + "email.tasks_report.subject": "Takenrapport voor {{.ResidenceName}}", + + "lookup.residence_type.house": "Huis", + "lookup.residence_type.apartment": "Appartement", + "lookup.residence_type.condo": "Appartement met eigen grond", + "lookup.residence_type.townhouse": "Rijtjeshuis", + "lookup.residence_type.mobile_home": "Stacaravan", + "lookup.residence_type.other": "Anders", + + "lookup.task_category.plumbing": "Loodgieterij", + "lookup.task_category.electrical": "Elektriciteit", + "lookup.task_category.hvac": "Verwarming en Ventilatie", + "lookup.task_category.appliances": "Apparaten", + "lookup.task_category.exterior": "Buitenkant", + "lookup.task_category.interior": "Binnenkant", + "lookup.task_category.landscaping": "Tuinonderhoud", + "lookup.task_category.safety": "Veiligheid", + "lookup.task_category.cleaning": "Schoonmaak", + "lookup.task_category.pest_control": "Ongediertebestrijding", + "lookup.task_category.seasonal": "Seizoensgebonden", + "lookup.task_category.other": "Anders", + + "lookup.task_priority.low": "Laag", + "lookup.task_priority.medium": "Gemiddeld", + "lookup.task_priority.high": "Hoog", + "lookup.task_priority.urgent": "Urgent", + + "lookup.task_status.pending": "In afwachting", + "lookup.task_status.in_progress": "In uitvoering", + "lookup.task_status.completed": "Voltooid", + "lookup.task_status.cancelled": "Geannuleerd", + "lookup.task_status.archived": "Gearchiveerd", + + "lookup.task_frequency.once": "Eenmalig", + "lookup.task_frequency.daily": "Dagelijks", + "lookup.task_frequency.weekly": "Wekelijks", + "lookup.task_frequency.biweekly": "Om de 2 Weken", + "lookup.task_frequency.monthly": "Maandelijks", + "lookup.task_frequency.quarterly": "Per Kwartaal", + "lookup.task_frequency.semiannually": "Om de 6 Maanden", + "lookup.task_frequency.annually": "Jaarlijks", + + "lookup.contractor_specialty.plumber": "Loodgieter", + "lookup.contractor_specialty.electrician": "Elektricien", + "lookup.contractor_specialty.hvac_technician": "HVAC Monteur", + "lookup.contractor_specialty.handyman": "Klusjesman", + "lookup.contractor_specialty.landscaper": "Hovenier", + "lookup.contractor_specialty.roofer": "Dakdekker", + "lookup.contractor_specialty.painter": "Schilder", + "lookup.contractor_specialty.carpenter": "Timmerman", + "lookup.contractor_specialty.pest_control": "Ongediertebestrijding", + "lookup.contractor_specialty.cleaning": "Schoonmaak", + "lookup.contractor_specialty.pool_service": "Zwembadonderhoud", + "lookup.contractor_specialty.general_contractor": "Algemeen Aannemer", + "lookup.contractor_specialty.other": "Anders" +} diff --git a/internal/i18n/translations/zh.json b/internal/i18n/translations/zh.json new file mode 100644 index 0000000..b61f306 --- /dev/null +++ b/internal/i18n/translations/zh.json @@ -0,0 +1,187 @@ +{ + "error.invalid_request_body": "请求正文无效", + "error.invalid_credentials": "凭据无效", + "error.account_inactive": "账户未激活", + "error.username_taken": "用户名已被占用", + "error.email_taken": "邮箱已被注册", + "error.email_already_taken": "邮箱已被占用", + "error.registration_failed": "注册失败", + "error.not_authenticated": "未认证", + "error.failed_to_get_user": "获取用户信息失败", + "error.failed_to_update_profile": "更新个人资料失败", + "error.invalid_verification_code": "验证码无效", + "error.verification_code_expired": "验证码已过期", + "error.email_already_verified": "邮箱已验证", + "error.verification_failed": "验证失败", + "error.failed_to_resend_verification": "重新发送验证失败", + "error.rate_limit_exceeded": "密码重置请求过多,请稍后再试。", + "error.too_many_attempts": "尝试次数过多,请申请新的验证码。", + "error.invalid_reset_token": "重置令牌无效或已过期", + "error.password_reset_failed": "密码重置失败", + "error.apple_signin_not_configured": "未配置 Apple 登录", + "error.apple_signin_failed": "Apple 登录失败", + "error.invalid_apple_token": "Apple 身份令牌无效", + + "error.invalid_task_id": "任务 ID 无效", + "error.invalid_residence_id": "房产 ID 无效", + "error.invalid_contractor_id": "承包商 ID 无效", + "error.invalid_document_id": "文档 ID 无效", + "error.invalid_completion_id": "完成记录 ID 无效", + "error.invalid_user_id": "用户 ID 无效", + "error.invalid_notification_id": "通知 ID 无效", + "error.invalid_device_id": "设备 ID 无效", + + "error.task_not_found": "未找到任务", + "error.residence_not_found": "未找到房产", + "error.contractor_not_found": "未找到承包商", + "error.document_not_found": "未找到文档", + "error.completion_not_found": "未找到任务完成记录", + "error.user_not_found": "未找到用户", + "error.share_code_invalid": "分享码无效", + "error.share_code_expired": "分享码已过期", + + "error.task_access_denied": "您无权访问此任务", + "error.residence_access_denied": "您无权访问此房产", + "error.contractor_access_denied": "您无权访问此承包商", + "error.document_access_denied": "您无权访问此文档", + "error.not_residence_owner": "只有房产所有者可以执行此操作", + "error.cannot_remove_owner": "无法移除房产所有者", + "error.user_already_member": "用户已是此房产的成员", + "error.properties_limit_reached": "您已达到订阅计划的房产数量上限", + + "error.task_already_cancelled": "任务已取消", + "error.task_already_archived": "任务已归档", + + "error.failed_to_parse_form": "解析多部分表单失败", + "error.task_id_required": "需要 task_id", + "error.invalid_task_id_value": "task_id 无效", + "error.failed_to_upload_image": "上传图片失败", + "error.residence_id_required": "需要 residence_id", + "error.invalid_residence_id_value": "residence_id 无效", + "error.title_required": "需要标题", + "error.failed_to_upload_file": "上传文件失败", + + "message.logged_out": "已成功退出", + "message.email_verified": "邮箱验证成功", + "message.verification_email_sent": "验证邮件已发送", + "message.password_reset_email_sent": "如果该邮箱存在账户,密码重置验证码已发送。", + "message.reset_code_verified": "验证码验证成功", + "message.password_reset_success": "密码重置成功,请使用新密码登录。", + + "message.task_deleted": "任务删除成功", + "message.task_in_progress": "任务已标记为进行中", + "message.task_cancelled": "任务已取消", + "message.task_uncancelled": "任务已恢复", + "message.task_archived": "任务已归档", + "message.task_unarchived": "任务已取消归档", + "message.completion_deleted": "完成记录删除成功", + + "message.residence_deleted": "房产删除成功", + "message.user_removed": "用户已从房产中移除", + "message.tasks_report_generated": "任务报告生成成功", + "message.tasks_report_sent": "任务报告已生成并发送至 {{.Email}}", + "message.tasks_report_email_failed": "任务报告已生成但无法发送邮件", + + "message.contractor_deleted": "承包商删除成功", + + "message.document_deleted": "文档删除成功", + "message.document_activated": "文档已激活", + "message.document_deactivated": "文档已停用", + + "message.notification_marked_read": "通知已标记为已读", + "message.all_notifications_marked_read": "所有通知已标记为已读", + "message.device_removed": "设备已移除", + + "message.subscription_upgraded": "订阅升级成功", + "message.subscription_cancelled": "订阅已取消。您将保留专业版权益至当前账单周期结束。", + "message.subscription_restored": "订阅恢复成功", + + "message.file_deleted": "文件删除成功", + "message.static_data_refreshed": "静态数据已刷新", + + "error.notification_not_found": "未找到通知", + "error.invalid_platform": "平台无效", + + "error.upgrade_trigger_not_found": "未找到升级触发器", + "error.receipt_data_required": "iOS 需要 receipt_data", + "error.purchase_token_required": "Android 需要 purchase_token", + + "error.no_file_provided": "未提供文件", + + "error.failed_to_fetch_residence_types": "获取房产类型失败", + "error.failed_to_fetch_task_categories": "获取任务分类失败", + "error.failed_to_fetch_task_priorities": "获取任务优先级失败", + "error.failed_to_fetch_task_frequencies": "获取任务频率失败", + "error.failed_to_fetch_task_statuses": "获取任务状态失败", + "error.failed_to_fetch_contractor_specialties": "获取承包商专业类别失败", + + "push.task_due_soon.title": "任务即将到期", + "push.task_due_soon.body": "{{.TaskTitle}} 将于 {{.DueDate}} 到期", + "push.task_overdue.title": "任务已逾期", + "push.task_overdue.body": "{{.TaskTitle}} 已逾期", + "push.task_completed.title": "任务已完成", + "push.task_completed.body": "{{.UserName}} 已完成 {{.TaskTitle}}", + "push.task_assigned.title": "新任务已分配", + "push.task_assigned.body": "您已被分配到 {{.TaskTitle}}", + "push.residence_shared.title": "房产已分享", + "push.residence_shared.body": "{{.UserName}} 与您分享了 {{.ResidenceName}}", + + "email.welcome.subject": "欢迎使用 Casera!", + "email.verification.subject": "验证您的邮箱", + "email.password_reset.subject": "密码重置验证码", + "email.tasks_report.subject": "{{.ResidenceName}} 的任务报告", + + "lookup.residence_type.house": "独立屋", + "lookup.residence_type.apartment": "公寓", + "lookup.residence_type.condo": "共管公寓", + "lookup.residence_type.townhouse": "联排别墅", + "lookup.residence_type.mobile_home": "移动房屋", + "lookup.residence_type.other": "其他", + + "lookup.task_category.plumbing": "管道", + "lookup.task_category.electrical": "电气", + "lookup.task_category.hvac": "暖通空调", + "lookup.task_category.appliances": "家电", + "lookup.task_category.exterior": "外部", + "lookup.task_category.interior": "内部", + "lookup.task_category.landscaping": "园林景观", + "lookup.task_category.safety": "安全", + "lookup.task_category.cleaning": "清洁", + "lookup.task_category.pest_control": "害虫防治", + "lookup.task_category.seasonal": "季节性", + "lookup.task_category.other": "其他", + + "lookup.task_priority.low": "低", + "lookup.task_priority.medium": "中", + "lookup.task_priority.high": "高", + "lookup.task_priority.urgent": "紧急", + + "lookup.task_status.pending": "待处理", + "lookup.task_status.in_progress": "进行中", + "lookup.task_status.completed": "已完成", + "lookup.task_status.cancelled": "已取消", + "lookup.task_status.archived": "已归档", + + "lookup.task_frequency.once": "一次", + "lookup.task_frequency.daily": "每天", + "lookup.task_frequency.weekly": "每周", + "lookup.task_frequency.biweekly": "每两周", + "lookup.task_frequency.monthly": "每月", + "lookup.task_frequency.quarterly": "每季度", + "lookup.task_frequency.semiannually": "每半年", + "lookup.task_frequency.annually": "每年", + + "lookup.contractor_specialty.plumber": "水管工", + "lookup.contractor_specialty.electrician": "电工", + "lookup.contractor_specialty.hvac_technician": "暖通空调技师", + "lookup.contractor_specialty.handyman": "杂工", + "lookup.contractor_specialty.landscaper": "园林工", + "lookup.contractor_specialty.roofer": "屋顶工", + "lookup.contractor_specialty.painter": "油漆工", + "lookup.contractor_specialty.carpenter": "木工", + "lookup.contractor_specialty.pest_control": "害虫防治", + "lookup.contractor_specialty.cleaning": "清洁", + "lookup.contractor_specialty.pool_service": "泳池服务", + "lookup.contractor_specialty.general_contractor": "总承包商", + "lookup.contractor_specialty.other": "其他" +}