Archived
feat: uv config other feats
- add uv configuration for the backend - update frontend to make auth work - add new auth endpoints - add bookmars feat - add reader feat
This commit is contained in:
@@ -0,0 +1,240 @@
|
||||
const enUS = {
|
||||
common: {
|
||||
loading: "Loading...",
|
||||
back: "Back",
|
||||
save: "Save",
|
||||
saving: "Saving...",
|
||||
retry: "Retry",
|
||||
dismiss: "Dismiss",
|
||||
cancel: "Cancel",
|
||||
delete: "Delete",
|
||||
deleting: "Deleting...",
|
||||
edit: "Edit",
|
||||
unknownError: "Something went wrong",
|
||||
unknownAuthor: "Unknown Author",
|
||||
appName: "Cloud Reader",
|
||||
},
|
||||
auth: {
|
||||
signIn: "Sign In",
|
||||
createAccount: "Create Account",
|
||||
email: "Email",
|
||||
password: "Password",
|
||||
confirmPassword: "Confirm Password",
|
||||
emailPlaceholder: "you@example.com",
|
||||
passwordPlaceholder: "At least 8 characters",
|
||||
confirmPasswordPlaceholder: "Repeat your password",
|
||||
signingIn: "Signing in...",
|
||||
creatingAccount: "Creating account...",
|
||||
noAccount: "Don't have an account?",
|
||||
hasAccount: "Already have an account?",
|
||||
register: "Register",
|
||||
passwordsMismatch: "Passwords do not match.",
|
||||
loginFailed: "Login failed",
|
||||
registrationFailed: "Registration failed",
|
||||
},
|
||||
library: {
|
||||
title: "Library",
|
||||
bookCountOne: "{{count}} book",
|
||||
bookCountMany: "{{count}} books",
|
||||
addBook: "Add Book",
|
||||
bookmarks: "Bookmarks",
|
||||
settings: "Settings",
|
||||
logout: "Logout",
|
||||
searchPlaceholder: "Search by title, author, or genre...",
|
||||
voiceSearchTitle: "Search with voice",
|
||||
voiceSearchStopTitle: "Stop listening",
|
||||
filtersShow: "Filters",
|
||||
filtersHide: "Filters",
|
||||
filtersLabel: "Filters",
|
||||
genre: "Genre",
|
||||
author: "Author",
|
||||
status: "Status",
|
||||
allGenres: "All Genres",
|
||||
allAuthors: "All Authors",
|
||||
allStatuses: "All Statuses",
|
||||
clearFilters: "Clear",
|
||||
loadFailed: "Failed to load books",
|
||||
listening: "Listening... speak now",
|
||||
stop: "Stop",
|
||||
voiceNoSpeech: "No speech detected. Try again.",
|
||||
voiceError: "Voice search: {{message}}",
|
||||
pdfNotice: "PDF reading is not supported in the web reader. Upload an EPUB to read here.",
|
||||
emptyTitle: "Your library is empty",
|
||||
emptyFilteredTitle: "No books found",
|
||||
emptyDescription: "Add a book to get started building your collection.",
|
||||
emptyFilteredDescription: "Try adjusting your search query or filters to discover more books.",
|
||||
clearAllFilters: "Clear All Filters",
|
||||
addFirstBook: "Add Your First Book",
|
||||
readingStatus: {
|
||||
wantToRead: "Want to Read",
|
||||
reading: "Reading",
|
||||
readingWithProgress: "Reading · {{percent}}%",
|
||||
finished: "Finished",
|
||||
dnf: "Did Not Finish",
|
||||
uploaded: "Uploaded",
|
||||
},
|
||||
finishedSection: "Finished",
|
||||
finishedCount: "{{count}} finished",
|
||||
finishedCountShort: "{{count}} finished",
|
||||
allInFinishedShelf: "Your finished books are in the panel below. Tap to expand.",
|
||||
},
|
||||
contextMenu: {
|
||||
syncMetadata: "Sync metadata",
|
||||
syncingMetadata: "Syncing metadata…",
|
||||
remove: "Remove",
|
||||
removing: "Removing…",
|
||||
confirmRemove: 'Remove "{{title}}" from your library?',
|
||||
},
|
||||
toast: {
|
||||
metadataSynced: 'Metadata synced for "{{title}}"',
|
||||
noMatch: "No Open Library match found",
|
||||
refreshDone: "Metadata refresh completed",
|
||||
removed: '"{{title}}" removed from your library',
|
||||
},
|
||||
settings: {
|
||||
title: "Reading Settings",
|
||||
loading: "Loading settings...",
|
||||
loadFailed: "Failed to load settings",
|
||||
saveFailed: "Failed to save settings",
|
||||
saved: "Settings saved!",
|
||||
uiLanguage: "UI Language",
|
||||
uiLanguageEn: "English",
|
||||
uiLanguageEs: "Español",
|
||||
fontSize: "Font Size ({{size}}px)",
|
||||
fontStyle: "Font Style",
|
||||
backgroundColor: "Background Color",
|
||||
fontSans: "Sans Serif",
|
||||
fontSerif: "Serif",
|
||||
fontMonospace: "Monospace",
|
||||
bgWhite: "White",
|
||||
bgSepia: "Sepia",
|
||||
bgDark: "Dark",
|
||||
bgGreen: "Green",
|
||||
saveSettings: "Save Settings",
|
||||
},
|
||||
reader: {
|
||||
loading: "Loading reader...",
|
||||
reading: "Reading",
|
||||
loadBookFailed: "Failed to load book details",
|
||||
epubOnly: "PDF reading is not supported in the web reader. EPUB only.",
|
||||
unableToOpen: "Unable to open this book.",
|
||||
backToLibrary: "Back to library",
|
||||
prevPage: "Previous page",
|
||||
nextPage: "Next page",
|
||||
resumeReading: "Back to reading",
|
||||
resumeReadingAria: "Return to where you were reading",
|
||||
backToLibraryAria: "Back to library",
|
||||
tocAria: "Table of contents",
|
||||
settingsAria: "Reading settings",
|
||||
settingsTitle: "Reading Settings",
|
||||
closeSettingsAria: "Close settings",
|
||||
theme: "Theme",
|
||||
font: "Font",
|
||||
fontSize: "Font Size: {{size}}px",
|
||||
lineHeight: "Line Height: {{value}}",
|
||||
margins: "Margins: {{value}}px",
|
||||
brightness: "Brightness: {{value}}%",
|
||||
orientation: "Orientation",
|
||||
themeSepia: "Sepia",
|
||||
themeDark: "Dark",
|
||||
themeLight: "Light",
|
||||
themePaper: "Paper",
|
||||
fontSans: "Sans-serif",
|
||||
fontSerif: "Serif",
|
||||
fontMonospace: "Monospace",
|
||||
orientationAuto: "Auto",
|
||||
orientationPortrait: "Portrait",
|
||||
orientationLandscape: "Landscape",
|
||||
fontSizeAria: "Font size",
|
||||
lineHeightAria: "Line height",
|
||||
marginWidthAria: "Margin width",
|
||||
brightnessAria: "Brightness",
|
||||
tocTitle: "Contents",
|
||||
closeTocAria: "Close table of contents",
|
||||
tocEmpty: "No chapters available.",
|
||||
},
|
||||
addBook: {
|
||||
title: "Add Book",
|
||||
fileLabel: "File (EPUB or PDF) *",
|
||||
selected: "Selected: {{name}}",
|
||||
titleLabel: "Title *",
|
||||
titlePlaceholder: "Book title",
|
||||
authorLabel: "Author",
|
||||
authorPlaceholder: "Author name",
|
||||
uploading: "Uploading...",
|
||||
upload: "Upload Book",
|
||||
fileTypeError: "Only EPUB and PDF files are supported.",
|
||||
requiredError: "Title and file are required.",
|
||||
uploadFailed: "Upload failed.",
|
||||
},
|
||||
bookDetail: {
|
||||
backToLibrary: "Back to Library",
|
||||
back: "Back",
|
||||
notFound: "Book not found",
|
||||
notFoundDescription: "The book you're looking for doesn't exist or has been removed.",
|
||||
invalidId: "Invalid book ID",
|
||||
loadFailed: "Failed to load book details",
|
||||
byAuthor: "by {{author}}",
|
||||
pages: "{{count}} pages",
|
||||
description: "Description",
|
||||
added: "Added {{date}}",
|
||||
updated: "Updated {{date}}",
|
||||
},
|
||||
search: {
|
||||
searching: "Searching...",
|
||||
noSuggestions: "No quick suggestions",
|
||||
},
|
||||
annotations: {
|
||||
title: "Bookmarks & Notes",
|
||||
loading: "Loading markers...",
|
||||
empty: "No bookmarks or notes yet.",
|
||||
bookmarkCount: "{{count}} bookmarks",
|
||||
noteCount: "{{count}} notes",
|
||||
markerCount: "{{count}} markers",
|
||||
bookmark: "Bookmark",
|
||||
note: "Note",
|
||||
bookmarkOnly: "Bookmark",
|
||||
saveMarker: "Save",
|
||||
markerSaved: "Bookmark saved",
|
||||
markerSavedWithNote: "Note saved",
|
||||
thoughtPlaceholder: "Your thought about this passage (optional)",
|
||||
highlightColor: "Highlight color",
|
||||
highlightCustom: "Custom color",
|
||||
highlightYellow: "Yellow",
|
||||
highlightGreen: "Green",
|
||||
highlightPink: "Pink",
|
||||
highlightBlue: "Blue",
|
||||
highlightPurple: "Purple",
|
||||
selectTextHint: "Select text in the reader to add a bookmark or note.",
|
||||
showMore: "Show more",
|
||||
showLess: "Show less",
|
||||
goToPassage: "Go to passage",
|
||||
goToPage: "Go to page",
|
||||
inBookPanel: "Bookmarks in this book",
|
||||
chapterIndex: "Chapter {{index}}",
|
||||
page: "Page {{page}}",
|
||||
pageShort: "p.{{page}}",
|
||||
loadingBookmarks: "Loading bookmarks...",
|
||||
bookmarksEmpty: "No bookmarks yet. Select a passage and add a bookmark while reading.",
|
||||
loadingNotes: "Loading notes...",
|
||||
notesEmpty: "No notes yet. Select a passage and add a note while reading.",
|
||||
addToPage: "Add to Page {{page}}",
|
||||
addBookmark: "Add Bookmark",
|
||||
addNote: "Add Note",
|
||||
noteLabel: "Note:",
|
||||
notePlaceholder: "Write your note here...",
|
||||
noteEmpty: "Note content cannot be empty.",
|
||||
saveFailed: "Failed to save annotation.",
|
||||
close: "Close",
|
||||
home: "Home",
|
||||
bookmarksNotes: "Bookmarks & Notes",
|
||||
},
|
||||
} as const;
|
||||
|
||||
export default enUS;
|
||||
|
||||
type LocaleStrings<T> = {
|
||||
[K in keyof T]: T[K] extends string ? string : LocaleStrings<T[K]>;
|
||||
};
|
||||
|
||||
export type Locale = LocaleStrings<typeof enUS>;
|
||||
Reference in New Issue
Block a user