Const resources
resources: { cs: { annotations: { add-note: string; confirm-destroy: string; default-style-neutral: string; default-style-okay: string; default-style-omg: string; default-style-red-flag: string; edit-note: string; highlights: string; no-annotations-in-chapter: string; no-notes-in-chapter: string; notes: string; show-all: string; update-note: string; work-desk: string }; common: { note: string; toggle-full-screen: string }; controls: { annotations: string; options: string; show-annotations: string; show-options: string; show-toc: string; toc: string }; navigation: { about: string; chapter: string; continue: string; continueReading: string; go: string; minutes-left: string; minutes-left-long: string; next-chapter: string; nthChapterNthSentence: string; nthSentence: string; prev-chapter: string; progress: string; progress-long: string; return: string; sentence: string; seqReturnAnotherChapter: string; seqReturnThisChapter: string; show-tips: string; start: string; title-page: string; turn-to: string }; offline: { cache-available: string; cacheUpdateRequested: string; nosw: string; problem: string; unsecure: string; updateCache: string }; onboarding: { annotations: string; annotations-heading: string; close: string; intro: string; intro-head: string; intro-hide: string; intro-show: string; next: string; pagination: string; pagination-heading: string; read-offline: string; remember: string; remember-heading: string }; options: { about-this-book: string; annotation-styles: string; basic-style: string; basic-style-label: string; change-does-overwrite-existing: string; color-scheme: string; color-scheme-auto: string; color-scheme-auto-explanation: string; color-scheme-dark: string; color-scheme-light: string; color-scheme-sepia: string; create-quick-note: string; font-size: string; generated-at: string; invisible-nav-label: string; offline-mode: string; revision: string }; research: { agree: string; decline: string; plea-title: string; researcher: string } }; en: { annotations: { add-note: string; confirm-destroy: string; default-style-neutral: string; default-style-okay: string; default-style-omg: string; default-style-red-flag: string; edit-note: string; highlights: string; no-annotations-in-chapter: string; no-notes-in-chapter: string; notes: string; show-all: string; update-note: string; work-desk: string }; common: { note: string; toggle-full-screen: string }; controls: { annotations: string; options: string; show-annotations: string; show-options: string; show-toc: string; toc: string }; navigation: { about: string; chapter: string; continue: string; continueReading: string; go: string; minutes-left: string; minutes-left-long: string; next-chapter: string; nthChapterNthSentence: string; nthSentence: string; prev-chapter: string; progress: string; progress-long: string; return: string; sentence: string; seqReturnAnotherChapter: string; seqReturnThisChapter: string; show-tips: string; start: string; title-page: string; turn-to: string }; offline: { cache-available: string; cacheUpdateRequested: string; nosw: string; problem: string; unsecure: string; updateCache: string }; onboarding: { annotations: string; annotations-heading: string; close: string; intro: string; intro-head: string; intro-hide: string; intro-show: string; next: string; pagination: string; pagination-heading: string; read-offline: string; remember: string; remember-heading: string }; options: { about-this-book: string; annotation-styles: string; basic-style: string; basic-style-label: string; change-does-overwrite-existing: string; color-scheme: string; color-scheme-auto: string; color-scheme-auto-explanation: string; color-scheme-dark: string; color-scheme-light: string; color-scheme-sepia: string; create-quick-note: string; font-size: string; generated-at: string; invisible-nav-label: string; offline-mode: string; revision: string }; research: { agree: string; decline: string; plea-title: string; researcher: string } } } = ...
Type safe translation function
Check only the keys of fallback language. Type checking may be slow given huge number of translation strings in configs.