Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 58 additions & 1 deletion messages/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -1180,5 +1180,62 @@
"reports_new_download_missing_url": "Download link is unavailable.",
"reports_new_validation_devices_required": "Select at least one device for this report template.",
"reports_new_validation_cadence_required": "Choose at least one cadence (daily, weekly, or monthly) for the active schedule.",
"reports_new_validation_recipient_email_required": "Recipient {index}: an email address is required."
"reports_new_validation_recipient_email_required": "Recipient {index}: an email address is required.",
"nav_billing": "Billing",
"billing_title": "Billing & Subscriptions",
"billing_base_title": "Base subscription",
"billing_base_subtitle": "Every CropWatch account needs an active base subscription.",
"billing_base_status_active": "Active",
"billing_base_status_trialing": "Trial",
"billing_base_status_past_due": "Past due",
"billing_base_status_canceled": "Canceled",
"billing_base_status_none": "Not subscribed",
"billing_base_renews_on": "Renews on {date}",
"billing_base_ends_on": "Ends on {date}",
"billing_base_discount_applied": "Discount applied",
"billing_base_subscribe": "Subscribe",
"billing_base_manage": "Manage billing",
"billing_base_cancel": "Cancel subscription",
"billing_base_none_notice": "Subscribe to a base plan to keep using CropWatch.",
"billing_cancel_title": "Cancel base subscription?",
"billing_cancel_body": "This cancels your base subscription and all device licenses. They stay active until the end of the current billing period.",
"billing_cancel_confirm": "Cancel subscription",
"billing_devices_title": "Device licenses",
"billing_devices_subtitle": "Each device needs a license. Buy licenses and assign them to devices.",
"billing_devices_summary": "{total} licenses · {assigned} assigned · {available} available",
"billing_buy_title": "Buy device licenses",
"billing_buy_quantity": "Number of licenses",
"billing_buy_action": "Buy licenses",
"billing_seats_label": "Total licenses",
"billing_seats_update": "Update licenses",
"billing_seats_min_note": "You cannot reduce below the number of assigned licenses ({assigned}).",
"billing_licenses_title": "Your licenses",
"billing_col_license": "License",
"billing_col_device": "Device",
"billing_col_location": "Location",
"billing_license_seat": "License {seat}",
"billing_license_unassigned": "Unassigned",
"billing_license_none": "You don't own any device licenses yet.",
"billing_assign": "Assign",
"billing_move": "Move",
"billing_unassign": "Unassign",
"billing_seat_cancel": "Cancel",
"billing_seat_cancel_title": "Cancel this license?",
"billing_seat_cancel_body": "This unassigned license will be removed from your subscription and you'll stop being billed for it.",
"billing_seat_cancel_confirm": "Cancel license",
"billing_seat_cancel_keep": "Keep license",
"billing_seat_canceled_toast": "License canceled.",
"billing_assign_title": "Assign license to a device",
"billing_move_title": "Move license to another device",
"billing_assign_device_label": "Device",
"billing_assign_no_devices": "No available devices. Every device you manage already has a license.",
"billing_portal": "Manage billing & invoices",
"billing_load_error": "We couldn't load your billing details. Please try again.",
"billing_checkout_success": "Thanks! Your purchase is being processed.",
"billing_seats_updated": "License count updated.",
"billing_license_assigned": "License assigned.",
"billing_license_moved": "License moved.",
"billing_license_unassigned_toast": "License unassigned.",
"billing_canceled_toast": "Subscription cancellation scheduled.",
"billing_per_month": "/ month"
}
59 changes: 58 additions & 1 deletion messages/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -1180,5 +1180,62 @@
"reports_new_download_missing_url": "ダウンロードリンクを利用できません。",
"reports_new_validation_devices_required": "このレポートテンプレートに少なくとも1台のデバイスを選択してください。",
"reports_new_validation_cadence_required": "有効なスケジュールに少なくとも1つの頻度(毎日・毎週・毎月)を選択してください。",
"reports_new_validation_recipient_email_required": "受信者 {index}: メールアドレスが必要です。"
"reports_new_validation_recipient_email_required": "受信者 {index}: メールアドレスが必要です。",
"nav_billing": "請求",
"billing_title": "請求とサブスクリプション",
"billing_base_title": "基本サブスクリプション",
"billing_base_subtitle": "すべての CropWatch アカウントには有効な基本サブスクリプションが必要です。",
"billing_base_status_active": "有効",
"billing_base_status_trialing": "トライアル",
"billing_base_status_past_due": "支払い遅延",
"billing_base_status_canceled": "キャンセル済み",
"billing_base_status_none": "未登録",
"billing_base_renews_on": "{date} に更新",
"billing_base_ends_on": "{date} に終了",
"billing_base_discount_applied": "割引適用中",
"billing_base_subscribe": "登録する",
"billing_base_manage": "請求を管理",
"billing_base_cancel": "サブスクリプションを解約",
"billing_base_none_notice": "CropWatch を継続して利用するには基本プランに登録してください。",
"billing_cancel_title": "基本サブスクリプションを解約しますか?",
"billing_cancel_body": "基本サブスクリプションとすべてのデバイスライセンスが解約されます。現在の請求期間の終了まで有効です。",
"billing_cancel_confirm": "サブスクリプションを解約",
"billing_devices_title": "デバイスライセンス",
"billing_devices_subtitle": "各デバイスにはライセンスが必要です。ライセンスを購入してデバイスに割り当ててください。",
"billing_devices_summary": "{total} ライセンス · {assigned} 割当済み · {available} 利用可能",
"billing_buy_title": "デバイスライセンスを購入",
"billing_buy_quantity": "ライセンス数",
"billing_buy_action": "ライセンスを購入",
"billing_seats_label": "ライセンス総数",
"billing_seats_update": "ライセンスを更新",
"billing_seats_min_note": "割り当て済みのライセンス数({assigned})より少なくすることはできません。",
"billing_licenses_title": "ライセンス一覧",
"billing_col_license": "ライセンス",
"billing_col_device": "デバイス",
"billing_col_location": "ロケーション",
"billing_license_seat": "ライセンス {seat}",
"billing_license_unassigned": "未割り当て",
"billing_license_none": "まだデバイスライセンスを所有していません。",
"billing_assign": "割り当て",
"billing_move": "移動",
"billing_unassign": "割り当て解除",
"billing_seat_cancel": "解約",
"billing_seat_cancel_title": "このライセンスを解約しますか?",
"billing_seat_cancel_body": "この未割り当てライセンスはサブスクリプションから削除され、以降は請求されません。",
"billing_seat_cancel_confirm": "ライセンスを解約",
"billing_seat_cancel_keep": "ライセンスを残す",
"billing_seat_canceled_toast": "ライセンスを解約しました。",
"billing_assign_title": "ライセンスをデバイスに割り当て",
"billing_move_title": "ライセンスを別のデバイスに移動",
"billing_assign_device_label": "デバイス",
"billing_assign_no_devices": "利用可能なデバイスがありません。管理中のすべてのデバイスに既にライセンスが割り当てられています。",
"billing_portal": "請求と請求書を管理",
"billing_load_error": "請求情報を読み込めませんでした。もう一度お試しください。",
"billing_checkout_success": "ありがとうございます。購入を処理しています。",
"billing_seats_updated": "ライセンス数を更新しました。",
"billing_license_assigned": "ライセンスを割り当てました。",
"billing_license_moved": "ライセンスを移動しました。",
"billing_license_unassigned_toast": "ライセンスの割り当てを解除しました。",
"billing_canceled_toast": "サブスクリプションの解約を予約しました。",
"billing_per_month": "/ 月"
}
58 changes: 32 additions & 26 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,43 +18,49 @@
"test:e2e": "playwright test"
},
"devDependencies": {
"@eslint/compat": "^2.0.2",
"@eslint/js": "^9.39.2",
"@eslint/compat": "^2.1.0",
"@eslint/js": "^9.39.4",
"@fontsource/fira-mono": "^5.2.7",
"@inlang/paraglide-js": "^2.10.0",
"@inlang/paraglide-js": "^2.19.0",
"@neoconfetti/svelte": "^2.2.2",
"@playwright/test": "^1.58.2",
"@sveltejs/adapter-vercel": "^6.3.2",
"@sveltejs/kit": "^2.52.2",
"@playwright/test": "^1.61.0",
"@sveltejs/adapter-vercel": "^6.3.3",
"@sveltejs/kit": "^2.65.2",
"@sveltejs/vite-plugin-svelte": "^6.2.4",
"@tailwindcss/forms": "^0.5.11",
"@tailwindcss/typography": "^0.5.19",
"@tailwindcss/vite": "^4.2.0",
"@types/node": "^22.19.11",
"@vitest/browser-playwright": "^4.0.18",
"eslint": "^9.39.2",
"@tailwindcss/typography": "^0.5.20",
"@tailwindcss/vite": "^4.3.1",
"@types/node": "^22.19.21",
"@vitest/browser-playwright": "^4.1.9",
"eslint": "^9.39.4",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-svelte": "^3.15.0",
"globals": "^17.3.0",
"eslint-plugin-svelte": "^3.19.0",
"globals": "^17.6.0",
"jwt-decode": "^4.0.0",
"playwright": "^1.58.2",
"prettier": "^3.8.1",
"prettier-plugin-svelte": "^3.5.0",
"prettier-plugin-tailwindcss": "^0.7.2",
"supabase": "^2.92.0",
"svelte": "^5.53.0",
"svelte-check": "^4.4.1",
"tailwindcss": "^4.2.0",
"playwright": "^1.61.0",
"prettier": "^3.8.4",
"prettier-plugin-svelte": "^3.5.2",
"prettier-plugin-tailwindcss": "^0.7.4",
"supabase": "^2.107.0",
"svelte": "^5.56.3",
"svelte-check": "^4.6.0",
"tailwindcss": "^4.3.1",
"typescript": "^5.9.3",
"typescript-eslint": "^8.56.0",
"vite": "^7.3.1",
"typescript-eslint": "^8.61.1",
"vite": "^7.3.5",
"vite-plugin-devtools-json": "^1.0.0",
"vitest": "^4.0.18",
"vitest-browser-svelte": "^2.0.2"
"vitest": "^4.1.9",
"vitest-browser-svelte": "^2.1.1"
},
"packageManager": "pnpm@10.18.2+sha512.9fb969fa749b3ade6035e0f109f0b8a60b5d08a1a87fdf72e337da90dcc93336e2280ca4e44f2358a649b83c17959e9993e777c2080879f3801e6f0d999ad3dd",
"pnpm": {
"overrides": {
"esbuild@<0.28.1": ">=0.28.1",
"cookie@<0.7.0": "^0.7.0"
}
},
"dependencies": {
"@cropwatchdevelopment/cwui": "0.1.107",
"@supabase/supabase-js": "^2.98.0"
"@supabase/supabase-js": "^2.108.2"
}
}
Loading