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
102 changes: 1 addition & 101 deletions apps/mobile/src/lib/__fixtures__/shared-catalog.golden.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,7 @@
"about.techStackLabel": "Stack",
"about.techStackValue": "ASP.NET Core 10 · PostgreSQL 16 · React 19 · React Native (Expo) · Ollama (Gemma 4) · OpenAI gpt-4.1-nano · Docker · Cloudflare Tunnel",
"about.title": "About",
"addMenu.ariaLabel": "Add content menu",
"addMenu.browseAll": "Browse all books",
"addMenu.browserExtension": "Browser extension",
"addMenu.comingSoon": "Coming in a future update",
"addMenu.emailBook": "Email a book",
"addMenu.mobileApps": "Mobile apps",
"addMenu.pasteUrl": "Paste URL",
"addMenu.title": "Add to library",
"addMenu.uploadFile": "Upload file",
"authors.bioAndBooks": "{name} - Biography and books",
Expand All @@ -45,7 +39,6 @@
"bookDetail.backToBooks": "Back to Books",
"bookDetail.backToHome": "Back to Home",
"bookDetail.browseAll": "Browse all books",
"bookDetail.chaptersHeading": "Chapters",
"bookDetail.continueReading": "Continue Reading",
"bookDetail.downloadForOffline": "Download for offline",
"bookDetail.downloading": "Downloading {progress}%...",
Expand Down Expand Up @@ -133,11 +126,8 @@
"guest.signOutTitle": "Sign out and lose everything?",
"highlights.emptySubtitle": "Select text while reading to highlight it",
"highlights.emptyTitle": "No highlights yet",
"home.hero.cta": "Browse catalog",
"home.hero.subtitle": "Read classic literature. Build vocabulary. Track your progress.",
"home.recentAuthors.title": "Recently Added Authors",
"home.recentAuthors.viewAll": "View all authors",
"home.recentBooks.read": "Read",
"home.recentBooks.title": "Recently Added Books",
"home.recentBooks.viewAll": "View all books",
"librarian.ask": "Ask",
Expand Down Expand Up @@ -174,12 +164,10 @@
"library.actions.confirmDeleteTitle": "Delete this book?",
"library.actions.delete": "Delete",
"library.actions.deleting": "Deleting…",
"library.actions.downloadOriginal": "Download original",
"library.actions.editMetadata": "Edit metadata",
"library.actions.markFinished": "Mark as finished",
"library.actions.markUnfinished": "Mark as unfinished",
"library.actions.menu": "Options",
"library.actions.open": "Open",
"library.actions.removeFromLibrary": "Remove from library",
"library.actions.retry": "Re-process",
"library.actions.retrying": "Retrying…",
Expand All @@ -201,14 +189,9 @@
"library.discuss.label": "Talk this book over",
"library.emptyLibrary": "Your library is empty.",
"library.failed": "Failed",
"library.failedToProcess": "Failed to process",
"library.filter.all": "All",
"library.filter.clear": "Clear filter",
"library.filter.empty": "No books match this filter",
"library.filter.failed": "Failed",
"library.filter.finished": "Finished",
"library.filter.notStarted": "Not started",
"library.filter.reading": "Reading",
"library.firstBook.browse": "Or browse free classics",
"library.firstBook.copy": "Add a book you already want to finish. Tap any word while you read to translate it and save it to your vocabulary.",
"library.firstBook.guestBrowse": "Browse free books",
Expand All @@ -223,7 +206,6 @@
"library.loadFailed.body": "Something went wrong on our side. Your books are safe.",
"library.loadFailed.title": "Couldn't load your library",
"library.loading": "Loading...",
"library.noUploads": "No uploaded books yet.",
"library.offline.body": "Your library will be here as soon as you reconnect.",
"library.offline.partial": "You're offline — showing downloaded books only.",
"library.offline.title": "You're offline",
Expand All @@ -234,11 +216,9 @@
"library.resume.continue": "Continue",
"library.resume.percentComplete": "{percent}% complete",
"library.resume.start": "Start reading",
"library.saved": "Saved",
"library.search.clear": "Clear search",
"library.search.empty": "No books match \"{query}\"",
"library.search.placeholder": "Search your library…",
"library.search.shortcut": "Cmd+F to focus",
"library.shelves.continueReading.subtitle": "Pick up where you left off",
"library.shelves.continueReading.title": "Continue reading",
"library.shelves.empty.browseCatalog": "Browse catalog",
Expand Down Expand Up @@ -266,17 +246,8 @@
"library.sort.progress": "Most read",
"library.sort.recent": "Last read",
"library.sort.title": "Title (A→Z)",
"library.sortBy": "Sort by",
"library.sortProgress": "Progress",
"library.sortRecent": "Recently Added",
"library.sortTitle": "Title",
"library.status.all": "All",
"library.status.ariaLabel": "Filter by status",
"library.status.empty.all": "No books match this filter",
"library.status.empty.failed": "These uploads need attention",
"library.status.empty.finished": "Finish your first book this month",
"library.status.empty.notStarted": "Looking good — you're on top of your library",
"library.status.empty.reading": "Open a book to start reading",
"library.status.failed": "Failed",
"library.status.finished": "Finished",
"library.status.notStarted": "Not started",
Expand All @@ -289,8 +260,6 @@
"library.timeMinAgo": "min ago",
"library.timeYesterday": "yesterday",
"library.title": "My Library",
"library.uploadHint": "Click the + button to upload EPUB or PDF files.",
"library.uploads": "Uploads",
"library.view.done": "Done",
"library.view.grid": "Grid",
"library.view.layout": "Layout",
Expand All @@ -301,27 +270,13 @@
"library.view.source": "Show",
"library.view.title": "View",
"nav.about": "About",
"nav.browseBooks": "Browse all books",
"nav.catalog": "Catalog",
"nav.discover": "Discover",
"nav.library": "Library",
"nav.profile": "Profile",
"nav.read": "Read",
"nav.stats": "Stats",
"nav.vocabulary": "Vocabulary",
"onboarding.chooseLanguage": "Choose your language",
"onboarding.chooseLanguageSubtitle": "You can change this later in settings",
"onboarding.gotIt": "Got it",
"onboarding.learnByReading": "Learn by reading",
"onboarding.nativeLanguageSubtitle": "We'll translate into it while you read. You can change it any time in Profile.",
"onboarding.nativeLanguageTitle": "What language do you know best?",
"onboarding.next": "Next",
"onboarding.ready": "You're ready!",
"onboarding.readySubtitle": "Saved words appear in your vocabulary\nfor spaced repetition review",
"onboarding.save": "Save",
"onboarding.saveWords": "Save words to build your vocabulary",
"onboarding.skip": "Skip",
"onboarding.tapToTranslate": "Tap any word to see its translation",
"privacy.aiBody1": "They are optional. If you do not use Book Chat, the tutor, the librarian, Explain or translation, nothing is sent to OpenAI.",
"privacy.aiBody2": "AI output can be wrong. Explanations, translations and answers about a book are generated by a language model and should not be relied on as fact.",
"privacy.aiBody3": "We do not train models on your content, and under OpenAI's API terms neither do they. We do keep a sample of prompts and responses, as described above, for quality and cost monitoring.",
Expand Down Expand Up @@ -387,7 +342,6 @@
"profile.vocabReminder.permissionDeniedTitle": "Notifications off",
"profile.vocabReminder.unavailableBody": "Reminders aren't available in this build. Install the latest app version to enable them.",
"profile.vocabReminder.unavailableTitle": "Not available",
"reader.ask.askAboutThis": "Ask about this",
"reader.ask.clearChat": "Clear chat",
"reader.ask.clearConfirm": "Clear this chat? This can't be undone.",
"reader.ask.detachQuote": "Remove quoted passage",
Expand Down Expand Up @@ -415,7 +369,6 @@
"reader.coachmarkDismiss": "Got it",
"reader.coachmarkSubtitle": "Press and hold a word to see its translation, then tap Save to add it to your vocabulary. Tap the page to show or hide the toolbars.",
"reader.coachmarkTitle": "Press and hold a word",
"reader.later": "Later",
"reader.ownBookAsk.body": "Long-press, translate, save, review — it all works the same on an EPUB or PDF of your own. Those are the books you'll actually finish.",
"reader.ownBookAsk.cta": "Add my own book",
"reader.ownBookAsk.dismiss": "Not now",
Expand All @@ -424,11 +377,8 @@
"reader.rareWordNotice.cta": "Add to SRS anyway",
"reader.rareWordNotice.ctaBusy": "Adding…",
"reader.rareWordNotice.title": "Rare word — saved to reference",
"reader.reviewNow": "Review Now",
"reader.timeLeft.hours": "{hours} hr left",
"reader.timeLeft.hoursMinutes": "{hours} hr {minutes} min left",
"reader.timeLeft.inBook": "left in book",
"reader.timeLeft.inChapter": "left in chapter",
"reader.timeLeft.minutes": "{minutes} min left",
"reader.timeLeft.under": "Less than a minute left",
"reader.toastTapToReview": "Tap to review",
Expand All @@ -438,18 +388,11 @@
"reader.vocab.addedToSrs": "Added to your vocabulary",
"reader.vocab.queuedForTomorrow": "Daily cap reached — queued for tomorrow",
"reader.vocab.saveNeedsAccount": "Saving words needs an account — this one wasn't kept. Sign in from Profile.",
"reader.vocab.savedToReference": "Saved to reference (rare word)",
"reader.vocab.tapAgainToStudy": "Tap again to study ({n} left)",
"reader.wordsSaved": "{count} word(s) saved",
"review.dayStreak": "{count} day streak",
"review.excellent": "Excellent!",
"review.greatWork": "Great work!",
"review.keepPracticing": "Keep practicing!",
"search.chapter": "Chapter",
"search.clearAll": "Clear all",
"search.enterQuery": "Enter a search query",
"search.foundEditions": "Found {total} books",
"search.foundResults": "Found {total} results",
"search.hideChapters": "Hide chapters",
"search.moreChapters": "+{count} more chapters",
"search.next": "Next →",
Expand All @@ -467,7 +410,6 @@
"stats.achievements": "Achievements",
"stats.allTime": "All Time",
"stats.authors": "Most Read Authors",
"stats.avgDaily": "Avg Daily",
"stats.avgTimeToFinish": "Avg Days to Finish",
"stats.avgWpm": "Avg Words/Min",
"stats.bookLength": "Book Length",
Expand All @@ -482,26 +424,19 @@
"stats.details": "Details",
"stats.emptySubtitle": "Start reading a book to track your progress",
"stats.emptyTitle": "No reading stats yet",
"stats.fast": "Fast",
"stats.genres": "Genres",
"stats.goalMet": "Goal met!",
"stats.goalSettings": "Goal Settings",
"stats.hours": "Hours",
"stats.languages": "Languages",
"stats.long": "Long",
"stats.longestStreak": "Longest Streak",
"stats.medium": "Medium",
"stats.noBookStats": "No book stats yet",
"stats.noData": "No data yet",
"stats.pace": "Pace",
"stats.pages": "Pages",
"stats.readingTimeByAuthor": "Reading Time by Author",
"stats.readingTimeByGenre": "Reading Time by Genre",
"stats.saveGoal": "Save",
"stats.short": "Short",
"stats.signInPrompt": "Sign in to track your reading and unlock achievements.",
"stats.slow": "Slow",
"stats.streakCalendar": "Reading Activity",
"stats.streakThreshold": "Min minutes for streak",
"stats.streaks": "Streaks",
"stats.summary": "Summary",
Expand Down Expand Up @@ -572,47 +507,26 @@
"tutor.summary.done": "Session complete",
"tutor.summary.studied": "Studied",
"tutor.title": "Smart session",
"vocabulary.alreadySaved": "Already saved",
"vocabulary.banner.budgetReached": "Weekly goal reached. See you next week!",
"vocabulary.clusters.bonusCta": "Bonus: {n} related words",
"vocabulary.clusters.fromBook": "from {book}",
"vocabulary.clusters.start": "Start bonus",
"vocabulary.definition": "Definition",
"vocabulary.dueDate": "Due",
"vocabulary.dueToday": "Due today",
"vocabulary.editTranslation": "Edit translation",
"vocabulary.empty": "No words saved yet. Select words while reading to add them.",
"vocabulary.filters.all": "All",
"vocabulary.filters.learning": "Learning",
"vocabulary.filters.mastered": "Mastered",
"vocabulary.filters.new": "New",
"vocabulary.filters.search": "Search words...",
"vocabulary.learning": "Learning",
"vocabulary.mastered": "Mastered",
"vocabulary.noReviewDue": "No words due for review!",
"vocabulary.offline.body": "Your saved words will be here as soon as you reconnect.",
"vocabulary.practice.cta": "Practice anyway",
"vocabulary.practice.subtitle": "Doesn't affect your SRS schedule",
"vocabulary.practice.title": "Practice",
"vocabulary.retired.subtitle": "Graduated from review. Tap to bring back.",
"vocabulary.retired.title": "Mastered — retired",
"vocabulary.retired.unretire": "Bring back to review",
"vocabulary.review.backToVocab": "Back to Vocabulary",
"vocabulary.review.check": "Check",
"vocabulary.review.chooseTranslation": "Choose the correct translation",
"vocabulary.review.closeEnough": "Close enough!",
"vocabulary.review.correct": "Correct!",
"vocabulary.review.correctAnswer": "Correct answer",
"vocabulary.review.correctRate": "Correct rate",
"vocabulary.review.fillBlank": "What word fills the blank?",
"vocabulary.review.fromBook": "from \"{title}\"",
"vocabulary.review.next": "Next",
"vocabulary.review.promoted": "Level up!",
"vocabulary.review.reviewed": "Reviewed",
"vocabulary.review.sessionComplete": "Session complete!",
"vocabulary.review.title": "Vocabulary Review",
"vocabulary.review.wrong": "Not quite",
"vocabulary.saveWord": "Save word",
"vocabulary.settings.autoRetire": "Auto-retire mastered words",
"vocabulary.settings.autoRetireHint": "Stop reviewing words you've answered correctly 3× at long intervals.",
"vocabulary.settings.autoSpeak": "Say the word on a card",
Expand All @@ -634,25 +548,11 @@
"vocabulary.sort.due": "Due date",
"vocabulary.sort.recent": "Recent",
"vocabulary.sort.stage": "Stage",
"vocabulary.source": "Source",
"vocabulary.stage": "Stage",
"vocabulary.stages.0": "New",
"vocabulary.stages.1": "Recognition",
"vocabulary.stages.2": "Recall",
"vocabulary.stages.3": "Context",
"vocabulary.stages.4": "Mastered",
"vocabulary.startReview": "Start Review",
"vocabulary.stats.correctRate": "Correct rate",
"vocabulary.stats.reviewedToday": "Reviewed today",
"vocabulary.stats.streak": "Review streak",
"vocabulary.title": "Vocabulary",
"vocabulary.totalWords": "Total words",
"vocabulary.translation": "Translation",
"vocabulary.weeklyBudget.backToReading": "Back to reading",
"vocabulary.weeklyBudget.emptyStateSubtitle": "You've hit your weekly review target. Read — new reviews unlock as old ones age out.",
"vocabulary.weeklyBudget.label": "This week",
"vocabulary.weeklyBudget.progress": "{used} / {budget}",
"vocabulary.weeklyBudget.remaining": "{n} left this week",
"vocabulary.word": "Word",
"vocabulary.wordSaved": "Word saved"
"vocabulary.weeklyBudget.progress": "{used} / {budget}"
}
Loading
Loading