|
|
@@ -0,0 +1,448 @@
|
|
|
+/* AppBrand.name ("Meetings") is intentionally omitted — the app name stays fixed in code. */
|
|
|
+
|
|
|
+/* MARK: - Common */
|
|
|
+"OK" = "OK";
|
|
|
+"Cancel" = "Cancel";
|
|
|
+"Continue" = "Continue";
|
|
|
+"Apply" = "Apply";
|
|
|
+"Reset" = "Reset";
|
|
|
+"Save" = "Save";
|
|
|
+"Copy" = "Copy";
|
|
|
+"Copied" = "Copied";
|
|
|
+"Close" = "Close";
|
|
|
+"Join" = "Join";
|
|
|
+"None" = "None";
|
|
|
+"Link" = "Link";
|
|
|
+"Stop" = "Stop";
|
|
|
+"Address" = "Address";
|
|
|
+"Title" = "Title";
|
|
|
+"Notes" = "Notes";
|
|
|
+"Start" = "Start";
|
|
|
+"Premium" = "Premium";
|
|
|
+"Popular" = "Popular";
|
|
|
+"Browser" = "Browser";
|
|
|
+"Meeting" = "Meeting";
|
|
|
+"Error" = "Error";
|
|
|
+"Success" = "Success";
|
|
|
+
|
|
|
+/* MARK: - Status bar */
|
|
|
+"Meetings status menu" = "Meetings status menu";
|
|
|
+"Open App" = "Open App";
|
|
|
+"Join Meetings" = "Join Meetings";
|
|
|
+"Schedule" = "Schedule";
|
|
|
+"Calendar" = "Calendar";
|
|
|
+"Widgets" = "Widgets";
|
|
|
+"AI Companion" = "AI Companion";
|
|
|
+"Settings" = "Settings";
|
|
|
+"Top meetings" = "Top meetings";
|
|
|
+"No upcoming meetings" = "No upcoming meetings";
|
|
|
+"Sign Out" = "Sign Out";
|
|
|
+"Sign In" = "Sign In";
|
|
|
+"Quit" = "Quit";
|
|
|
+
|
|
|
+/* MARK: - Launch splash */
|
|
|
+"Preparing your meetings workspace" = "Preparing your meetings workspace";
|
|
|
+"CONNECTING SERVICES" = "CONNECTING SERVICES";
|
|
|
+"READY" = "READY";
|
|
|
+"Plan smart, achieve more" = "Plan smart, achieve more";
|
|
|
+
|
|
|
+/* MARK: - Widgets */
|
|
|
+"Add Widget to Desktop" = "Add Widget to Desktop";
|
|
|
+"Choose a size and add your Google Meet widget." = "Choose a size and add your Google Meet widget.";
|
|
|
+"Tip: Right-click a desktop widget to remove it." = "Tip: Right-click a desktop widget to remove it.";
|
|
|
+"Removed %@ widget from desktop." = "Removed %@ widget from desktop.";
|
|
|
+"Added %@ widget from desktop." = "Added %@ widget from desktop.";
|
|
|
+"Widgets are Premium only. Upgrade to add widgets." = "Widgets are Premium only. Upgrade to add widgets.";
|
|
|
+"Remove Widget" = "Remove Widget";
|
|
|
+"Small" = "Small";
|
|
|
+"Medium" = "Medium";
|
|
|
+"Quick actions" = "Quick actions";
|
|
|
+"Open Meet" = "Open Meet";
|
|
|
+"Upcoming meetings" = "Upcoming meetings";
|
|
|
+"Sign in to see upcoming meetings" = "Sign in to see upcoming meetings";
|
|
|
+"Sign in with Google" = "Sign in with Google";
|
|
|
+"Google Meet" = "Google Meet";
|
|
|
+"Open and join quickly" = "Open and join quickly";
|
|
|
+"Refresh" = "Refresh";
|
|
|
+
|
|
|
+/* MARK: - Sidebar & navigation */
|
|
|
+"Planning" = "Planning";
|
|
|
+"Additional" = "Additional";
|
|
|
+"Get Premium" = "Get Premium";
|
|
|
+"Manage Subscription" = "Manage Subscription";
|
|
|
+"App for Google Meet" = "App for Google Meet";
|
|
|
+
|
|
|
+/* MARK: - Join meetings */
|
|
|
+"New Instant Meet" = "New Instant Meet";
|
|
|
+"Start instant Meet in more section with\nGoogle Meet meet." = "Start instant Meet in more section with\nGoogle Meet meet.";
|
|
|
+"Join with Link" = "Join with Link";
|
|
|
+"Code or meet.google.com/…" = "Code or meet.google.com/…";
|
|
|
+"Join with ID" = "Join with ID";
|
|
|
+"Join with URL" = "Join with URL";
|
|
|
+"Meeting URL" = "Meeting URL";
|
|
|
+"Enter meeting URL..." = "Enter meeting URL...";
|
|
|
+"Quick Join Meeting" = "Quick Join Meeting";
|
|
|
+"Invalid Meet link" = "Invalid Meet link";
|
|
|
+"Enter a valid Google Meet link or meeting code (for example nkd-grps-duv, meet.google.com/nkd-grps-duv, or https://meet.google.com/nkd-grps-duv)." = "Enter a valid Google Meet link or meeting code (for example nkd-grps-duv, meet.google.com/nkd-grps-duv, or https://meet.google.com/nkd-grps-duv).";
|
|
|
+"Instant Meeting" = "Instant Meeting";
|
|
|
+"Connect Google to start Instant Meeting" = "Connect Google to start Instant Meeting";
|
|
|
+"To auto-stop recording when the meeting ends, connect your Google account first." = "To auto-stop recording when the meeting ends, connect your Google account first.";
|
|
|
+"Could not create Instant Meeting" = "Could not create Instant Meeting";
|
|
|
+"Free trial used. Upgrade to continue." = "Free trial used. Upgrade to continue.";
|
|
|
+
|
|
|
+/* MARK: - Browse web */
|
|
|
+"Browse the web" = "Browse the web";
|
|
|
+"Enter a web address (for example meet.google.com)." = "Enter a web address (for example meet.google.com).";
|
|
|
+"Invalid address" = "Invalid address";
|
|
|
+"Enter a valid http or https URL." = "Enter a valid http or https URL.";
|
|
|
+"Browse" = "Browse";
|
|
|
+"Quick links" = "Quick links";
|
|
|
+"Zoom help" = "Zoom help";
|
|
|
+"https://example.com or example.com" = "https://example.com or example.com";
|
|
|
+"Enter a valid web address, for example https://example.com" = "Enter a valid web address, for example https://example.com";
|
|
|
+"Address not allowed" = "Address not allowed";
|
|
|
+"This URL is not permitted with the current in-app browser policy (whitelist)." = "This URL is not permitted with the current in-app browser policy (whitelist).";
|
|
|
+"Unable to load page" = "Unable to load page";
|
|
|
+"Could not load this page in the in-app browser.\n\n%@" = "Could not load this page in the in-app browser.\n\n%@";
|
|
|
+"Page stopped loading" = "Page stopped loading";
|
|
|
+"Unable to open browser" = "Unable to open browser";
|
|
|
+"Unable to Open Safari" = "Unable to Open Safari";
|
|
|
+
|
|
|
+/* MARK: - Schedule & calendar */
|
|
|
+"All" = "All";
|
|
|
+"Today" = "Today";
|
|
|
+"This week" = "This week";
|
|
|
+"This month" = "This month";
|
|
|
+"Previous week" = "Previous week";
|
|
|
+"Previous month" = "Previous month";
|
|
|
+"Custom range" = "Custom range";
|
|
|
+"No meetings match the selected filters." = "No meetings match the selected filters.";
|
|
|
+"Adjust the date range and tap Apply." = "Adjust the date range and tap Apply.";
|
|
|
+"Premium required. Get Premium now to unlock Calendar." = "Premium required. Get Premium now to unlock Calendar.";
|
|
|
+"Premium required. Click to open paywall." = "Premium required. Click to open paywall.";
|
|
|
+"Get Premium to see events" = "Get Premium to see events";
|
|
|
+"Connect Google" = "Connect Google";
|
|
|
+"Sign in with Google first to schedule a meeting from Calendar." = "Sign in with Google first to schedule a meeting from Calendar.";
|
|
|
+"Select date" = "Select date";
|
|
|
+"Choose a date to schedule your meeting." = "Choose a date to schedule your meeting.";
|
|
|
+"Google schedule" = "Google schedule";
|
|
|
+"To show scheduled meetings, connect your Google account. You’ll need a Google OAuth client ID (Desktop) and a redirect URI matching the app’s callback scheme." = "To show scheduled meetings, connect your Google account. You’ll need a Google OAuth client ID (Desktop) and a redirect URI matching the app’s callback scheme.";
|
|
|
+"Actions" = "Actions";
|
|
|
+"Schedule meeting" = "Schedule meeting";
|
|
|
+"Team sync" = "Team sync";
|
|
|
+"Duration (min)" = "Duration (min)";
|
|
|
+"Refresh saved meetings" = "Refresh saved meetings";
|
|
|
+
|
|
|
+/* MARK: - Settings */
|
|
|
+"Manage appearance, account, and app options." = "Manage appearance, account, and app options.";
|
|
|
+"Appearance" = "Appearance";
|
|
|
+"Account" = "Account";
|
|
|
+"App" = "App";
|
|
|
+"Notifications" = "Notifications";
|
|
|
+"Help & Legal" = "Help & Legal";
|
|
|
+"Dark Mode" = "Dark Mode";
|
|
|
+"Rate Us" = "Rate Us";
|
|
|
+"Share App" = "Share App";
|
|
|
+"Upgrade" = "Upgrade";
|
|
|
+"Privacy Policy" = "Privacy Policy";
|
|
|
+"Support" = "Support";
|
|
|
+"Terms of Services" = "Terms of Services";
|
|
|
+"AI Language 1" = "AI Language 1";
|
|
|
+"AI Language 2" = "AI Language 2";
|
|
|
+"Google account connected" = "Google account connected";
|
|
|
+"Google account not connected" = "Google account not connected";
|
|
|
+"Signed in" = "Signed in";
|
|
|
+"Sign in to sync your meetings and calendar." = "Sign in to sync your meetings and calendar.";
|
|
|
+"Log out" = "Log out";
|
|
|
+"Check out %@ for managing and joining meetings." = "Check out %@ for managing and joining meetings.";
|
|
|
+"Meetings App" = "Meetings App";
|
|
|
+
|
|
|
+/* MARK: - Recording consent */
|
|
|
+"Record this meeting locally?" = "Record this meeting locally?";
|
|
|
+"With your consent, the app will record meeting audio on this Mac and show it in AI Companion after the meeting." = "With your consent, the app will record meeting audio on this Mac and show it in AI Companion after the meeting.";
|
|
|
+"Allow and Continue" = "Allow and Continue";
|
|
|
+"Continue Without Recording" = "Continue Without Recording";
|
|
|
+"Transcription Languages" = "Transcription Languages";
|
|
|
+"Preferred Language 1" = "Preferred Language 1";
|
|
|
+"Preferred Language 2" = "Preferred Language 2";
|
|
|
+"Microphone permission denied" = "Microphone permission denied";
|
|
|
+"Microphone permission required" = "Microphone permission required";
|
|
|
+"Enable microphone access in System Settings to record meetings locally." = "Enable microphone access in System Settings to record meetings locally.";
|
|
|
+"Could not start recording" = "Could not start recording";
|
|
|
+"Recording will start when the meeting starts" = "Recording will start when the meeting starts";
|
|
|
+"Meeting recording started (meeting + microphone)" = "Meeting recording started (meeting + microphone)";
|
|
|
+"System audio unavailable. Recording microphone only." = "System audio unavailable. Recording microphone only.";
|
|
|
+"Meeting recording started (microphone only)" = "Meeting recording started (microphone only)";
|
|
|
+"Meeting recording saved" = "Meeting recording saved";
|
|
|
+
|
|
|
+/* MARK: - AI Companion */
|
|
|
+"Get notes from your previous meetings" = "Get notes from your previous meetings";
|
|
|
+"Connect your Google account to see your AI Companion meeting history." = "Connect your Google account to see your AI Companion meeting history.";
|
|
|
+"No previous meetings yet for %@. End a meeting to save it here and generate notes." = "No previous meetings yet for %@. End a meeting to save it here and generate notes.";
|
|
|
+"this account" = "this account";
|
|
|
+"Previous meetings" = "Previous meetings";
|
|
|
+"Recording in progress: %@" = "Recording in progress: %@";
|
|
|
+"Started: %@" = "Started: %@";
|
|
|
+"Stop Recording" = "Stop Recording";
|
|
|
+"Date: %@" = "Date: %@";
|
|
|
+"Saved time: %@" = "Saved time: %@";
|
|
|
+"Get Notes" = "Get Notes";
|
|
|
+"Premium required. Click to unlock AI Companion notes." = "Premium required. Click to unlock AI Companion notes.";
|
|
|
+"Play Audio" = "Play Audio";
|
|
|
+"Pause Audio" = "Pause Audio";
|
|
|
+"Stopped" = "Stopped";
|
|
|
+"Speaking..." = "Speaking...";
|
|
|
+"Paused" = "Paused";
|
|
|
+"Playing..." = "Playing...";
|
|
|
+"Not playing" = "Not playing";
|
|
|
+"Checking audio..." = "Checking audio...";
|
|
|
+"Audio file missing" = "Audio file missing";
|
|
|
+"Could not play recording" = "Could not play recording";
|
|
|
+"Failed: %@" = "Failed: %@";
|
|
|
+"Failed to play audio" = "Failed to play audio";
|
|
|
+"decode error" = "decode error";
|
|
|
+"Loading..." = "Loading...";
|
|
|
+"Buffering..." = "Buffering...";
|
|
|
+"Finished" = "Finished";
|
|
|
+"Transcript not requested" = "Transcript not requested";
|
|
|
+"Transcript processing..." = "Transcript processing...";
|
|
|
+"Transcript ready" = "Transcript ready";
|
|
|
+"Transcript unavailable (tap to retry)" = "Transcript unavailable (tap to retry)";
|
|
|
+"Notes not requested" = "Notes not requested";
|
|
|
+"Preparing notes, please wait..." = "Preparing notes, please wait...";
|
|
|
+"Notes ready" = "Notes ready";
|
|
|
+"Notes unavailable (tap to retry)" = "Notes unavailable (tap to retry)";
|
|
|
+"Transcript unavailable" = "Transcript unavailable";
|
|
|
+"Notes unavailable" = "Notes unavailable";
|
|
|
+"Could not find recording details for this meeting." = "Could not find recording details for this meeting.";
|
|
|
+"Transcript - %@" = "Transcript - %@";
|
|
|
+"Notes - %@" = "Notes - %@";
|
|
|
+"Meeting Notes" = "Meeting Notes";
|
|
|
+"Transcript processing..." = "Transcript processing...";
|
|
|
+
|
|
|
+/* MARK: - Paywall & StoreKit */
|
|
|
+"Meetings Pro" = "Meetings Pro";
|
|
|
+"PREMIUM EXPERIENCE" = "PREMIUM EXPERIENCE";
|
|
|
+"Elevate your meetings workflow" = "Elevate your meetings workflow";
|
|
|
+"Unlock automation, premium meeting tools, and priority support for every session." = "Unlock automation, premium meeting tools, and priority support for every session.";
|
|
|
+"Manage meetings" = "Manage meetings";
|
|
|
+"Smart scheduling" = "Smart scheduling";
|
|
|
+"Faster workflow" = "Faster workflow";
|
|
|
+"Reminder notifications" = "Reminder notifications";
|
|
|
+"Monthly" = "Monthly";
|
|
|
+"Bi Yearly" = "Bi Yearly";
|
|
|
+"Yearly" = "Yearly";
|
|
|
+"Most Popular" = "Most Popular";
|
|
|
+"%@ • Most Popular" = "%@ • Most Popular";
|
|
|
+"3 days free trial" = "3 days free trial";
|
|
|
+"Cancel anytime" = "Cancel anytime";
|
|
|
+"No lock-in" = "No lock-in";
|
|
|
+"Instant access" = "Instant access";
|
|
|
+"Unlock all tools" = "Unlock all tools";
|
|
|
+"Secure billing" = "Secure billing";
|
|
|
+"Handled by Apple" = "Handled by Apple";
|
|
|
+"Secured by Apple. Cancel anytime." = "Secured by Apple. Cancel anytime.";
|
|
|
+"Restore Purchase" = "Restore Purchase";
|
|
|
+"Continue with free plan" = "Continue with free plan";
|
|
|
+"Already Premium" = "Already Premium";
|
|
|
+"You are already premium. Do you want to continue with this purchase?" = "You are already premium. Do you want to continue with this purchase?";
|
|
|
+"Current plan: %@. Choose a different package to switch." = "Current plan: %@. Choose a different package to switch.";
|
|
|
+"Premium is active on this Apple ID." = "Premium is active on this Apple ID.";
|
|
|
+"Free for %@, then %@" = "Free for %@, then %@";
|
|
|
+"Billed via App Store" = "Billed via App Store";
|
|
|
+"%@ • %@" = "%@ • %@";
|
|
|
+"Save 0%" = "Save 0%";
|
|
|
+"Save %@%%" = "Save %@%%";
|
|
|
+"month" = "month";
|
|
|
+"year" = "year";
|
|
|
+"%@ free trial" = "%@ free trial";
|
|
|
+"Processing..." = "Processing...";
|
|
|
+"Premium Active" = "Premium Active";
|
|
|
+"Continue with 3 day trail" = "Continue with 3 day trail";
|
|
|
+"Please Wait" = "Please Wait";
|
|
|
+"A purchase is already being processed." = "A purchase is already being processed.";
|
|
|
+"This Apple ID already has premium access." = "This Apple ID already has premium access.";
|
|
|
+"Purchase Complete" = "Purchase Complete";
|
|
|
+"Premium has been unlocked successfully." = "Premium has been unlocked successfully.";
|
|
|
+"Purchase Pending" = "Purchase Pending";
|
|
|
+"Your purchase is pending approval. You can continue once it completes." = "Your purchase is pending approval. You can continue once it completes.";
|
|
|
+"Product Not Available" = "Product Not Available";
|
|
|
+"Unable to load this product. Check your StoreKit configuration and product IDs." = "Unable to load this product. Check your StoreKit configuration and product IDs.";
|
|
|
+"Already Purchased" = "Already Purchased";
|
|
|
+"This plan is already active on your Apple ID." = "This plan is already active on your Apple ID.";
|
|
|
+"Purchase Failed" = "Purchase Failed";
|
|
|
+"Restore Purchases" = "Restore Purchases";
|
|
|
+"Purchases restored successfully." = "Purchases restored successfully.";
|
|
|
+"No previous premium purchase was found for this Apple ID." = "No previous premium purchase was found for this Apple ID.";
|
|
|
+"Restore failed: %@" = "Restore failed: %@";
|
|
|
+"Unable to Open Subscriptions" = "Unable to Open Subscriptions";
|
|
|
+"The subscriptions URL is invalid." = "The subscriptions URL is invalid.";
|
|
|
+"%@ tapped." = "%@ tapped.";
|
|
|
+
|
|
|
+/* MARK: - Auth */
|
|
|
+"Google Sign-In" = "Google Sign-In";
|
|
|
+
|
|
|
+/* MARK: - Speech / transcript errors */
|
|
|
+"Speech recognition permission denied. Enable it in System Settings and try again." = "Speech recognition permission denied. Enable it in System Settings and try again.";
|
|
|
+"Speech recognition is restricted on this Mac." = "Speech recognition is restricted on this Mac.";
|
|
|
+"Speech recognition authorization is unavailable." = "Speech recognition authorization is unavailable.";
|
|
|
+"Speech recognizer is unavailable for the current locale." = "Speech recognizer is unavailable for the current locale.";
|
|
|
+"Speech recognizer is unavailable for %@." = "Speech recognizer is unavailable for %@.";
|
|
|
+"No audio was available to transcribe." = "No audio was available to transcribe.";
|
|
|
+
|
|
|
+/* MARK: - StoreKit transaction errors */
|
|
|
+"Unable to load products: %@" = "Unable to load products: %@";
|
|
|
+"Product ID not found in StoreKit response. Requested: %@. Loaded IDs: %@" = "Product ID not found in StoreKit response. Requested: %@. Loaded IDs: %@";
|
|
|
+"Purchase verification failed." = "Purchase verification failed.";
|
|
|
+"Unknown purchase state." = "Unknown purchase state.";
|
|
|
+"none" = "none";
|
|
|
+
|
|
|
+/* MARK: - Paywall pricing copy */
|
|
|
+"%@ one-time purchase" = "%@ one-time purchase";
|
|
|
+"%@/month" = "%@/month";
|
|
|
+"%@/6 months" = "%@/6 months";
|
|
|
+"%@/year (3 days free trial)" = "%@/year (3 days free trial)";
|
|
|
+"day" = "day";
|
|
|
+"week" = "week";
|
|
|
+"period" = "period";
|
|
|
+"1 %@" = "1 %@";
|
|
|
+"%d %@s" = "%d %@s";
|
|
|
+
|
|
|
+/* MARK: - Toasts & quick feedback */
|
|
|
+"Meeting added successfully." = "Meeting added successfully.";
|
|
|
+"An issue occurred. Please try again." = "An issue occurred. Please try again.";
|
|
|
+"Failed to load transcript." = "Failed to load transcript.";
|
|
|
+"Failed to generate notes." = "Failed to generate notes.";
|
|
|
+
|
|
|
+/* MARK: - Browser alerts */
|
|
|
+"Try Again" = "Try Again";
|
|
|
+"The in-app browser closed this page unexpectedly. You can try loading it again in this same window." = "The in-app browser closed this page unexpectedly. You can try loading it again in this same window.";
|
|
|
+
|
|
|
+/* MARK: - Schedule & calendar errors */
|
|
|
+"Couldn't load schedule." = "Couldn't load schedule.";
|
|
|
+"Couldn't refresh schedule." = "Couldn't refresh schedule.";
|
|
|
+"Couldn't connect Google account." = "Couldn't connect Google account.";
|
|
|
+"Couldn't logout Google account." = "Couldn't logout Google account.";
|
|
|
+"Couldn't load schedule" = "Couldn't load schedule";
|
|
|
+"Couldn't determine Meet meeting code from URL." = "Couldn't determine Meet meeting code from URL.";
|
|
|
+"Refreshing…" = "Refreshing…";
|
|
|
+"Connect Google to see meetings" = "Connect Google to see meetings";
|
|
|
+"Connect to load schedule" = "Connect to load schedule";
|
|
|
+"Loading…" = "Loading…";
|
|
|
+"Loading schedule…" = "Loading schedule…";
|
|
|
+"Start date must be on or before end date." = "Start date must be on or before end date.";
|
|
|
+"Invalid custom date range" = "Invalid custom date range";
|
|
|
+"No meetings" = "No meetings";
|
|
|
+"No meetings for selected filters" = "No meetings for selected filters";
|
|
|
+"No meetings on %@" = "No meetings on %@";
|
|
|
+"1 meeting on %@" = "1 meeting on %@";
|
|
|
+"%d meetings on %@" = "%d meetings on %@";
|
|
|
+"All day" = "All day";
|
|
|
+"Duration: all day" = "Duration: all day";
|
|
|
+"Duration: %dh %dm" = "Duration: %dh %dm";
|
|
|
+"Duration: %dh" = "Duration: %dh";
|
|
|
+"Duration: %dm" = "Duration: %dm";
|
|
|
+"%@ - %@" = "%@ - %@";
|
|
|
+"Scheduled Meeting" = "Scheduled Meeting";
|
|
|
+
|
|
|
+/* MARK: - Create meeting popover */
|
|
|
+"Please enter a title." = "Please enter a title.";
|
|
|
+"Duration must be a positive number of minutes." = "Duration must be a positive number of minutes.";
|
|
|
+"Invalid start time." = "Invalid start time.";
|
|
|
+
|
|
|
+/* MARK: - Reminders & notifications */
|
|
|
+"Reminders" = "Reminders";
|
|
|
+"1 Day Before" = "1 Day Before";
|
|
|
+"12 Hours Before" = "12 Hours Before";
|
|
|
+"1 Hour Before" = "1 Hour Before";
|
|
|
+"Starts in 1 day" = "Starts in 1 day";
|
|
|
+"Starts in 12 hours" = "Starts in 12 hours";
|
|
|
+"Starts in 1 hour" = "Starts in 1 hour";
|
|
|
+
|
|
|
+/* MARK: - Google OAuth errors */
|
|
|
+"Missing Google OAuth Client ID." = "Missing Google OAuth Client ID.";
|
|
|
+"Missing Google OAuth Client Secret." = "Missing Google OAuth Client Secret.";
|
|
|
+"Invalid OAuth callback URL." = "Invalid OAuth callback URL.";
|
|
|
+"Google did not return an authorization code." = "Google did not return an authorization code.";
|
|
|
+"Token exchange failed: %@" = "Token exchange failed: %@";
|
|
|
+"Could not open browser for Google sign-in." = "Could not open browser for Google sign-in.";
|
|
|
+"Google sign-in timed out." = "Google sign-in timed out.";
|
|
|
+"No stored Google tokens found." = "No stored Google tokens found.";
|
|
|
+
|
|
|
+/* MARK: - AI Companion / transcript errors */
|
|
|
+"Recording not found." = "Recording not found.";
|
|
|
+"Local meeting audio is missing." = "Local meeting audio is missing.";
|
|
|
+"Generated transcript was empty." = "Generated transcript was empty.";
|
|
|
+"(No transcript entries found.)" = "(No transcript entries found.)";
|
|
|
+"No conference record found for this meeting." = "No conference record found for this meeting.";
|
|
|
+"No transcript found for this meeting." = "No transcript found for this meeting.";
|
|
|
+"Unable to create audio composition tracks." = "Unable to create audio composition tracks.";
|
|
|
+"Unable to create audio export session." = "Unable to create audio export session.";
|
|
|
+"Audio mix export failed." = "Audio mix export failed.";
|
|
|
+"No display available for system audio capture." = "No display available for system audio capture.";
|
|
|
+"Cannot add audio writer input." = "Cannot add audio writer input.";
|
|
|
+
|
|
|
+/* MARK: - Google API errors */
|
|
|
+"Google Meet returned an invalid response." = "Google Meet returned an invalid response.";
|
|
|
+"Google Meet API error (%d): %@" = "Google Meet API error (%d): %@";
|
|
|
+"Failed to parse Google Meet response: %@" = "Failed to parse Google Meet response: %@";
|
|
|
+"Google Calendar returned an invalid response." = "Google Calendar returned an invalid response.";
|
|
|
+"Google Calendar API error (%d): %@" = "Google Calendar API error (%d): %@";
|
|
|
+"Failed to parse Google Calendar events: %@" = "Failed to parse Google Calendar events: %@";
|
|
|
+
|
|
|
+/* MARK: - OpenAI errors */
|
|
|
+"OpenAI API key is missing. Set OPENAI_API_KEY in the environment or app key vault." = "OpenAI API key is missing. Set OPENAI_API_KEY in the environment or app key vault.";
|
|
|
+"Notes generation returned an invalid response." = "Notes generation returned an invalid response.";
|
|
|
+"Notes generation failed (%d): %@" = "Notes generation failed (%d): %@";
|
|
|
+"Notes generation returned empty text." = "Notes generation returned empty text.";
|
|
|
+"OpenAI transcription returned an invalid response." = "OpenAI transcription returned an invalid response.";
|
|
|
+"OpenAI transcription failed (%d): %@" = "OpenAI transcription failed (%d): %@";
|
|
|
+"OpenAI transcription returned no text." = "OpenAI transcription returned no text.";
|
|
|
+
|
|
|
+/* MARK: - Browse & in-app browser */
|
|
|
+"Open sites in the in-app browser (back, forward, reload, address bar). OAuth and “Continue in browser” flows stay inside the app." = "Open sites in the in-app browser (back, forward, reload, address bar). OAuth and “Continue in browser” flows stay inside the app.";
|
|
|
+"Open in app browser" = "Open in app browser";
|
|
|
+"Meet help" = "Meet help";
|
|
|
+"Go" = "Go";
|
|
|
+"Back" = "Back";
|
|
|
+"Forward" = "Forward";
|
|
|
+"Reload" = "Reload";
|
|
|
+
|
|
|
+/* MARK: - Schedule & calendar labels */
|
|
|
+"Google Calendar" = "Google Calendar";
|
|
|
+"Untitled meeting" = "Untitled meeting";
|
|
|
+"Created event missing start/end." = "Created event missing start/end.";
|
|
|
+"Created event missing Meet/HTML link." = "Created event missing Meet/HTML link.";
|
|
|
+
|
|
|
+/* MARK: - Google account */
|
|
|
+"Google account" = "Google account";
|
|
|
+"%@, Google account" = "%@, Google account";
|
|
|
+
|
|
|
+/* MARK: - Zoom join (unused section) */
|
|
|
+"Meeting ID" = "Meeting ID";
|
|
|
+"Enter meeting ID..." = "Enter meeting ID...";
|
|
|
+"Meeting Passcode" = "Meeting Passcode";
|
|
|
+"Enter meeting passcode..." = "Enter meeting passcode...";
|
|
|
+
|
|
|
+/* MARK: - Paywall (alternate benefits) */
|
|
|
+"Virtual backgrounds" = "Virtual backgrounds";
|
|
|
+"Tools for productivity" = "Tools for productivity";
|
|
|
+"24/7 support" = "24/7 support";
|
|
|
+
|
|
|
+/* MARK: - Transcription speakers */
|
|
|
+"You" = "You";
|
|
|
+
|
|
|
+/* MARK: - Keychain errors */
|
|
|
+"Failed to read OAuth tokens from Keychain." = "Failed to read OAuth tokens from Keychain.";
|
|
|
+"Keychain returned an invalid token payload." = "Keychain returned an invalid token payload.";
|
|
|
+"Failed to update OAuth tokens in Keychain." = "Failed to update OAuth tokens in Keychain.";
|
|
|
+"Failed to save OAuth tokens to Keychain." = "Failed to save OAuth tokens to Keychain.";
|
|
|
+"Failed to delete OAuth tokens from Keychain." = "Failed to delete OAuth tokens from Keychain.";
|
|
|
+"Unable to allocate audio buffer." = "Unable to allocate audio buffer.";
|
|
|
+"Invalid revoke response." = "Invalid revoke response.";
|
|
|
+"Token revoke failed with status %d." = "Token revoke failed with status %d.";
|
|
|
+
|
|
|
+/* MARK: - Error alert diagnostics */
|
|
|
+"Keychain: %d (%@)" = "Keychain: %d (%@)";
|
|
|
+"OSStatus: %d" = "OSStatus: %d";
|
|
|
+"Item: service=%@, account=%@" = "Item: service=%@, account=%@";
|