type LocaleValue = string; // | LocaleValue[] | { [key: string]: LocaleValue }; export interface LocaleDictionary { [key: string]: | LocaleDictionary | string | Array | null; } export interface Locale { navigation: { home: LocaleValue; completed: LocaleValue; subtitleSchedule: LocaleValue; newReleases: LocaleValue; tools: LocaleValue; settings: LocaleValue; profile: LocaleValue; logIn: LocaleValue; logOut: LocaleValue; schedule: LocaleValue; hololive: LocaleValue; myProfile: LocaleValue; myBadgeWall: LocaleValue; menu?: LocaleValue; avatar?: LocaleValue; }; settings: { fields: { notice: LocaleValue; }; tooltips: { author: LocaleValue; }; rssFeeds: { title: LocaleValue; buttons: { copyToClipboard: LocaleValue; }; tooltips: { rss: LocaleValue; }; feedUrlLabel?: LocaleValue; }; display: { title: LocaleValue; categories: { media: { title: LocaleValue; fields: { outboundLinks: { title: LocaleValue; hint: LocaleValue; }; mediaTitleFormat: { title: LocaleValue; options: { english: LocaleValue; romaji: LocaleValue; native: LocaleValue; }; fields: { showFurigana: LocaleValue; }; }; sortBy: { title: LocaleValue; hint: LocaleValue; }; hoverCover?: LocaleValue; socialButton?: LocaleValue; blurAdult?: LocaleValue; copyTitleNotLink?: LocaleValue; totalDueEpisodes?: LocaleValue; totalEpisodes?: LocaleValue; scheduleFilterList?: LocaleValue; }; }; dateAndTime: { title: LocaleValue; fields: { disableLastActivityWarning: LocaleValue; rightAlignCountdown: LocaleValue; use24HourTime: LocaleValue; nativeEpisodeCountdown: LocaleValue; abbreviateCountdown: LocaleValue; lastActivityWarningHint?: LocaleValue; }; }; motionAndAccessibility: { title: LocaleValue; fields: { reduceMotion: LocaleValue; disableNotifications: LocaleValue; enableAniListNotifications: LocaleValue; limitPanelAreaToScreenHeight: LocaleValue; interfaceLanguage: LocaleValue; aniListNotificationsHint?: LocaleValue; aniListNotificationsHint1?: LocaleValue; aniListNotificationsHint2?: LocaleValue; }; }; dataSaver: LocaleValue; collapsePanelsByDefault: LocaleValue; hidePanels: LocaleValue; includeAdditionalMedia: LocaleValue; helper: { title: LocaleValue; options: { kaede: LocaleValue; mai: LocaleValue; nodoka: LocaleValue; rio: LocaleValue; sakuta: LocaleValue; shouko: LocaleValue; tomoe: LocaleValue; random: LocaleValue; none: LocaleValue; }; hint: LocaleValue; }; filtersIncludeCompleted: LocaleValue; includeAdditionalMediaHint1?: LocaleValue; includeAdditionalMediaHint2?: LocaleValue; coverModeTitle?: LocaleValue; coverWidthLabel?: LocaleValue; listSortFilterTitle?: LocaleValue; animeSortOrder?: LocaleValue; sortOptions?: { timeRemaining?: LocaleValue; difference?: LocaleValue; startDate?: LocaleValue; endDate?: LocaleValue; }; reverseSortOrder?: LocaleValue; mediaListFilter?: LocaleValue; mediaRoulette?: LocaleValue; mediaRouletteHint?: LocaleValue; }; tooltips: { beta: LocaleValue; dataSaver: LocaleValue; }; }; debug: { title: LocaleValue; tooltips: { version: LocaleValue; }; customCSS?: LocaleValue; }; calculation: { title: LocaleValue; fields: { roundDownChapters: { title: LocaleValue; hint: LocaleValue; }; showMediaWithZeroProgress: { title: LocaleValue; hint: LocaleValue; }; hideOutOfDateVolumeWarning: { title: LocaleValue; hint?: LocaleValue; hint1?: LocaleValue; hint2?: LocaleValue; speedupHint?: LocaleValue; }; smartChapterCountEstimation: { title: LocaleValue; hint?: LocaleValue; hint1?: LocaleValue; hint2?: LocaleValue; }; preferNativeChapterCount: { title: LocaleValue; hint: LocaleValue; }; smartChapterMethod?: { label?: LocaleValue; accuracyDisclaimer?: LocaleValue; options?: { mode?: LocaleValue; median?: LocaleValue; iqrMedian?: LocaleValue; iqrMode?: LocaleValue; }; }; }; }; cache: { title: LocaleValue; clearingNote?: LocaleValue; recacheAnimeLabel?: LocaleValue; recacheMangaLabel?: LocaleValue; minutes?: LocaleValue; }; attributions: { title: LocaleValue; generalData?: LocaleValue; nonNativeChapter?: LocaleValue; nativeChapter?: LocaleValue; girlsBandCryIcons?: LocaleValue; outboundDisclaimerTitle?: LocaleValue; outboundDisclaimerLine1?: LocaleValue; outboundDisclaimerLine2?: LocaleValue; outboundDisclaimerLine3?: LocaleValue; }; media: { anime: LocaleValue; manga: LocaleValue; upcomingAnime: LocaleValue; pausedMedia: LocaleValue; unresolvedMedia: LocaleValue; plannedAnime: LocaleValue; }; languages: { english: LocaleValue; japanese: LocaleValue; }; settingsSync: { title: LocaleValue; buttons: { pull: { title: LocaleValue; hint: LocaleValue; }; push: { title: LocaleValue; hint: LocaleValue; }; disable: LocaleValue; delete: LocaleValue; }; lastPush?: LocaleValue; lastPull?: LocaleValue; }; verbiage?: { upcomingEpisodes?: LocaleValue; notYetReleased?: LocaleValue; dueEpisodes?: LocaleValue; dueManga?: LocaleValue; completedAnime?: LocaleValue; completedManga?: LocaleValue; }; }; user: { badges: { backToProfile: LocaleValue; editMode: { enable: LocaleValue; disable: LocaleValue; imageURL: LocaleValue; activityURL: LocaleValue; description: LocaleValue; category: LocaleValue; add: LocaleValue; update: LocaleValue; or: LocaleValue; delete: LocaleValue; source: LocaleValue; designer: LocaleValue; }; importMode: { enable: LocaleValue; disable: LocaleValue; cancel: LocaleValue; import: LocaleValue; fetch: LocaleValue; deleteAll: { title: LocaleValue; hint: LocaleValue; }; dangerous: LocaleValue; importLinks: { title: LocaleValue; hint: LocaleValue; }; importReplies: LocaleValue; title: LocaleValue; importWait: LocaleValue; importConfirm: LocaleValue; }; }; profile: { statistics: LocaleValue; badges: LocaleValue; notLoaded?: LocaleValue; loadingProfile?: LocaleValue; owner?: LocaleValue; badgeWallLink?: LocaleValue; pinnedCategories?: LocaleValue; categoryPlaceholder?: LocaleValue; biography?: LocaleValue; markdownPlaceholder?: LocaleValue; badgeWallCustomCss?: LocaleValue; customCssPlaceholder?: LocaleValue; }; preferences: { title: LocaleValue; hideMissingBadges: { title: LocaleValue; hint: LocaleValue; }; hideAWCBadges: { title: LocaleValue; }; }; }; lists: { upcoming: { episodes: { title: LocaleValue; hint: LocaleValue; }; notYetReleased: { title: LocaleValue; hint: LocaleValue; }; }; due: { episodes: { title: LocaleValue; hint: LocaleValue; }; mangaAndLightNovels: { title: LocaleValue; hint: LocaleValue; }; }; completed: { anime: { title: LocaleValue; hint: LocaleValue; }; mangaAndLightNovels: { title: LocaleValue; hint: LocaleValue; }; }; empty?: { anime?: LocaleValue; manga?: LocaleValue; }; actions?: { pickRandomAnime?: LocaleValue; pickRandomManga?: LocaleValue; forceRefresh?: LocaleValue; forceFullRefresh?: LocaleValue; all?: LocaleValue; }; errors?: { mangaDataDown?: LocaleValue; mangaDataUnavailable?: LocaleValue; mangaDataUnreachable?: LocaleValue; }; dontReadMangaPrompt?: LocaleValue; dontReadMangaPrefix?: LocaleValue; hideMangaPanel?: LocaleValue; reenableInSettings?: LocaleValue; roulette?: { closeAriaLabel?: LocaleValue; watchTitle?: LocaleValue; readTitle?: LocaleValue; noMedia?: LocaleValue; viewOn?: LocaleValue; spin?: LocaleValue; spinAgain?: LocaleValue; spinning?: LocaleValue; }; }; tools: { tool: { characterBirthdays: { short: LocaleValue; long: LocaleValue; }; }; picker?: { placeholder?: LocaleValue; }; input?: { pressEnter?: LocaleValue; }; episodeDiscussion?: { rateLimit?: LocaleValue; contactSupport?: LocaleValue; enterUsername?: LocaleValue; }; likes?: { invalidUrl?: LocaleValue; }; tracker?: { urlTitleRequired?: LocaleValue; entryExists?: LocaleValue; confirmDelete?: LocaleValue; urlPlaceholder?: LocaleValue; titlePlaceholder?: LocaleValue; progressPlaceholder?: LocaleValue; }; followFix?: { toggleFor?: LocaleValue; }; sequelSpy?: { winter?: LocaleValue; spring?: LocaleValue; summer?: LocaleValue; fall?: LocaleValue; countRatio?: LocaleValue; }; sequelCatcher?: { credit?: LocaleValue; includeCurrent?: LocaleValue; includeSideStories?: LocaleValue; }; activityHistory?: { daysAtRisk?: LocaleValue; daysAtRiskHint?: LocaleValue; dateLabel?: LocaleValue; amountLabel?: LocaleValue; }; wrapped?: { highestRated?: LocaleValue; mostWatched?: LocaleValue; mostRead?: LocaleValue; mostCommon?: LocaleValue; loadingActivityHistory?: LocaleValue; loadingUserData?: LocaleValue; loadingUser?: LocaleValue; errorFetchingMedia?: LocaleValue; multiAttempt?: LocaleValue; multiAttemptPrefix?: LocaleValue; multiAttemptSuffix?: LocaleValue; clickLoadData?: LocaleValue; saveImageInstruction?: LocaleValue; generateImage?: LocaleValue; loadData?: LocaleValue; reloadData?: LocaleValue; display?: LocaleValue; calculation?: LocaleValue; advanced?: LocaleValue; showWatermark?: LocaleValue; bgTransparency?: LocaleValue; lightMode?: LocaleValue; showGenresTags?: LocaleValue; hideActivityHistory?: LocaleValue; showRatedPercentages?: LocaleValue; showGenreTagPercentages?: LocaleValue; showOngoingPrevious?: LocaleValue; aboveTopRow?: LocaleValue; belowTopRow?: LocaleValue; bottom?: LocaleValue; activityHistoryPosition?: LocaleValue; highestRatedCount?: LocaleValue; highestGenreTagCount?: LocaleValue; findBestFit?: LocaleValue; widthAdjustment?: LocaleValue; enableFullYear?: LocaleValue; refreshData?: LocaleValue; calculateForYear?: LocaleValue; startDateFilter?: LocaleValue; endDateFilter?: LocaleValue; animeMangaSort?: LocaleValue; genreTagSort?: LocaleValue; includeMusic?: LocaleValue; includeRewatches?: LocaleValue; includeSpecials?: LocaleValue; includeOvas?: LocaleValue; includeMovies?: LocaleValue; excludeUnrated?: LocaleValue; excludedKeywords?: LocaleValue; submit?: LocaleValue; excludedHint?: LocaleValue; disableDetailedActivity?: LocaleValue; }; }; debug: { clearCaches: LocaleValue; showListTimings: LocaleValue; resetAllSettings: { title: LocaleValue; hint: LocaleValue; }; clearLocalStorage: { title: LocaleValue; hint1: LocaleValue; hint2: LocaleValue; }; dummyLists: LocaleValue; dryRunMutations: { title: LocaleValue; hint: LocaleValue; }; }; hololive: { live: LocaleValue; upcoming: LocaleValue; with: LocaleValue; comma: LocaleValue; commaNoSpace: LocaleValue; ampersand: LocaleValue; ended: LocaleValue; dateFormatter: (date?: number | Date | undefined) => string; loadError: LocaleValue; parseError: LocaleValue; noUpcomingStreams?: LocaleValue; loadingSchedule?: LocaleValue; parsingSchedule?: LocaleValue; tryAgainQuestion?: LocaleValue; pleasePrefix?: LocaleValue; laterSuffix?: LocaleValue; }; dateFormatter: (date?: number | Date | undefined) => string; dayFormatter: (date?: number | Date | undefined) => string; common?: { save?: LocaleValue; add?: LocaleValue; remove?: LocaleValue; submit?: LocaleValue; cancel?: LocaleValue; previous?: LocaleValue; next?: LocaleValue; search?: LocaleValue; notFound?: LocaleValue; tryAgain?: LocaleValue; failedToLoad?: LocaleValue; minutes?: LocaleValue; hours?: LocaleValue; loading?: LocaleValue; }; errors?: { routeNotFound?: LocaleValue; didYouMean?: LocaleValue; somethingWentWrong?: LocaleValue; toolNotFound?: LocaleValue; toolNotFoundPrefix?: LocaleValue; toolNotFoundSuffix?: LocaleValue; profileCouldNotBeLoaded?: LocaleValue; completedLoginPrompt?: LocaleValue; rateLimited?: { notLoaded?: LocaleValue; notLoadedMight?: LocaleValue; notLoadedDefinitely?: LocaleValue; tryAgainOneMinute?: LocaleValue; sessionExpired?: LocaleValue; contactSupport?: LocaleValue; }; animeRateLimited?: LocaleValue; loginRequiredPrefix?: LocaleValue; loginRequiredLink?: LocaleValue; loginRequiredSuffix?: LocaleValue; }; commandPalette?: { ariaLabel?: LocaleValue; placeholder?: LocaleValue; searchCommands?: LocaleValue; commands?: LocaleValue; noResults?: LocaleValue; refreshCaches?: LocaleValue; logIn?: LocaleValue; logOut?: LocaleValue; toggles?: { time24On?: LocaleValue; time24Off?: LocaleValue; animationsOff?: LocaleValue; animationsOn?: LocaleValue; blurAdultOn?: LocaleValue; blurAdultOff?: LocaleValue; showAnimeCovers?: LocaleValue; hideAnimeCovers?: LocaleValue; showMangaCovers?: LocaleValue; hideMangaCovers?: LocaleValue; hoverCoverOn?: LocaleValue; hoverCoverOff?: LocaleValue; scheduleListMode?: LocaleValue; scheduleGridMode?: LocaleValue; reverseSort?: LocaleValue; restoreSort?: LocaleValue; dataSaverOn?: LocaleValue; dataSaverOff?: LocaleValue; notificationsOff?: LocaleValue; notificationsOn?: LocaleValue; switchLanguageJa?: LocaleValue; switchLanguageEn?: LocaleValue; titleFormat?: LocaleValue; outboundLinks?: LocaleValue; }; sync?: { pushNow?: LocaleValue; pullNow?: LocaleValue; disable?: LocaleValue; pushedDescription?: LocaleValue; pulledDescription?: LocaleValue; noRemoteFound?: LocaleValue; disabledHeading?: LocaleValue; }; }; headTitle?: { settings?: LocaleValue; completed?: LocaleValue; schedule?: LocaleValue; tools?: LocaleValue; profile?: LocaleValue; updates?: LocaleValue; girls?: LocaleValue; hololiveSchedule?: LocaleValue; userProfile?: LocaleValue; userBadgeWall?: LocaleValue; }; notifications?: { cacheInvalidated?: LocaleValue; mangaHeading?: LocaleValue; mangaRefreshing?: LocaleValue; recachedFromAniList?: LocaleValue; settingsReset?: LocaleValue; localDatabaseCleared?: LocaleValue; rssCopied?: LocaleValue; pulledRemote?: LocaleValue; createdRemote?: LocaleValue; pushedRemote?: LocaleValue; syncDisabled?: LocaleValue; remoteDeleted?: LocaleValue; }; schedule?: { comingSoon?: LocaleValue; continuingFromPreviousSeason?: LocaleValue; loadingSubtitle?: LocaleValue; loadingSchedule?: LocaleValue; }; events?: { summary?: LocaleValue; loadingGroups?: LocaleValue; parsingGroups?: LocaleValue; errorLoadingGroups?: LocaleValue; errorParsingGroups?: LocaleValue; loadingGroup?: LocaleValue; parsingGroup?: LocaleValue; errorLoadingGroup?: LocaleValue; errorParsingGroup?: LocaleValue; groupNotExistPrefix?: LocaleValue; groupNotExistSuffix?: LocaleValue; loadingEvents?: LocaleValue; parsingEvents?: LocaleValue; errorParsingEvents?: LocaleValue; }; home?: { lastActivity?: { warning?: LocaleValue; hoursUnit?: LocaleValue; minutesUnit?: LocaleValue; }; }; reader?: { mangaUrl?: LocaleValue; read?: LocaleValue; loadingChapters?: LocaleValue; fetchFailed?: LocaleValue; unknownError?: LocaleValue; invalidUrl?: LocaleValue; vol?: LocaleValue; ch?: LocaleValue; readFallback?: LocaleValue; }; routes?: { settingsFeedbackPrefix?: LocaleValue; settingsFeedbackSuffix?: LocaleValue; toolsFeedbackPrefix?: LocaleValue; toolsFeedbackSuffix?: LocaleValue; girlsTitle?: LocaleValue; girlsIntro?: LocaleValue; girlsIntroLeft?: LocaleValue; girlsIntroRight?: LocaleValue; girlsRandomAlt?: LocaleValue; girlsSingleAlt?: LocaleValue; girlsLanguages?: LocaleValue; girlsLoadingImage?: LocaleValue; girlsLoadingImages?: LocaleValue; girlsLoadingLanguages?: LocaleValue; updatesManga?: LocaleValue; updatesNovels?: LocaleValue; updatesFailedToLoad?: LocaleValue; }; badgePreview?: { designer?: LocaleValue; forum?: LocaleValue; activity?: LocaleValue; source?: LocaleValue; category?: LocaleValue; sauceNAO?: LocaleValue; search?: LocaleValue; previous?: LocaleValue; next?: LocaleValue; }; badgeWall?: { noRegistered?: LocaleValue; notFound?: LocaleValue; awcGroup?: LocaleValue; page?: { somethingWentWrong?: LocaleValue; notice?: LocaleValue; shadowHide?: LocaleValue; unshadowHide?: LocaleValue; migrateCategory?: LocaleValue; hideCategory?: LocaleValue; toggleVisibility?: LocaleValue; hidden?: LocaleValue; shown?: LocaleValue; dateTimeHint?: LocaleValue; migrateAllHint?: LocaleValue; hideVisibilityHint?: LocaleValue; hideAllHint?: LocaleValue; loadingBadges?: LocaleValue; noBadgesYet?: LocaleValue; shadowHideNotice1?: LocaleValue; shadowHideNotice2?: LocaleValue; aiNotice1?: LocaleValue; aiNotice2?: LocaleValue; dismiss?: LocaleValue; loadNoneNoticeBody?: LocaleValue; loadNoneNoticePrefix?: LocaleValue; loadNoneNoticeSuffix?: LocaleValue; shadowHideBadge?: LocaleValue; unshadowHideBadge?: LocaleValue; migrateAction?: LocaleValue; originalCategoryPlaceholder?: LocaleValue; newCategoryPlaceholder?: LocaleValue; categoryPlaceholder?: LocaleValue; }; }; }