Archived
257 lines
8.7 KiB
TypeScript
257 lines
8.7 KiB
TypeScript
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.",
|
|
unsupportedFormat: "This file format cannot be opened in the reader.",
|
|
pdfPassword: "This PDF is password-protected and cannot be opened.",
|
|
pdfPageLabel: "Page {{page}}",
|
|
pdfZoom: "Zoom: {{value}}%",
|
|
pdfZoomAria: "PDF zoom level",
|
|
pdfLimitationsTitle: "PDF reading",
|
|
pdfLimitationsBody:
|
|
"PDF reading uses page bookmarks (filled bookmark icon in the toolbar). Passage highlights need selectable text and are not available on scanned pages. The table of contents lists pages, not EPUB-style chapters.",
|
|
pdfLimitationsDismissAria: "Dismiss PDF limitations notice",
|
|
bookmarkPage: "Bookmark this page",
|
|
bookmarkPageAria: "Bookmark current page",
|
|
pageBookmarked: "Page bookmarked",
|
|
pageAlreadyBookmarked: "This page is already bookmarked",
|
|
backToLibrary: "Back to library",
|
|
prevPage: "Previous page",
|
|
nextPage: "Next page",
|
|
resumeReading: "Back to reading",
|
|
resumeReadingAria: "Return to where you were reading",
|
|
bookmarkRailGoTo: "Go to bookmark",
|
|
bookmarkRailPreview: "Bookmark: {{text}}",
|
|
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.",
|
|
pdfPageBookmarkHint: "Use the filled bookmark button in the toolbar to save the current page.",
|
|
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>;
|