diff --git a/ui/src/lib/paraglide/messages/feed_browse_cta.js b/ui/src/lib/paraglide/messages/feed_browse_cta.js new file mode 100644 index 0000000..a600d5c --- /dev/null +++ b/ui/src/lib/paraglide/messages/feed_browse_cta.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{}} Feed_Browse_CtaInputs */ + +const en_feed_browse_cta = /** @type {(inputs: Feed_Browse_CtaInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Browse catalogue`) +}; + +const ru_feed_browse_cta = /** @type {(inputs: Feed_Browse_CtaInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Каталог`) +}; + +const id_feed_browse_cta = /** @type {(inputs: Feed_Browse_CtaInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Jelajahi katalog`) +}; + +const pt_feed_browse_cta = /** @type {(inputs: Feed_Browse_CtaInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Ver catálogo`) +}; + +const fr_feed_browse_cta = /** @type {(inputs: Feed_Browse_CtaInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Parcourir le catalogue`) +}; + +/** +* | output | +* | --- | +* | "Browse catalogue" | +* +* @param {Feed_Browse_CtaInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const feed_browse_cta = /** @type {((inputs?: Feed_Browse_CtaInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs = {}, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_feed_browse_cta(inputs) + if (locale === "ru") return ru_feed_browse_cta(inputs) + if (locale === "id") return id_feed_browse_cta(inputs) + if (locale === "pt") return pt_feed_browse_cta(inputs) + return fr_feed_browse_cta(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/paraglide/messages/feed_chapters_label.js b/ui/src/lib/paraglide/messages/feed_chapters_label.js new file mode 100644 index 0000000..f84611f --- /dev/null +++ b/ui/src/lib/paraglide/messages/feed_chapters_label.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{ n: NonNullable }} Feed_Chapters_LabelInputs */ + +const en_feed_chapters_label = /** @type {(inputs: Feed_Chapters_LabelInputs) => LocalizedString} */ (i) => { + return /** @type {LocalizedString} */ (`${i?.n} chapters`) +}; + +const ru_feed_chapters_label = /** @type {(inputs: Feed_Chapters_LabelInputs) => LocalizedString} */ (i) => { + return /** @type {LocalizedString} */ (`${i?.n} глав`) +}; + +const id_feed_chapters_label = /** @type {(inputs: Feed_Chapters_LabelInputs) => LocalizedString} */ (i) => { + return /** @type {LocalizedString} */ (`${i?.n} bab`) +}; + +const pt_feed_chapters_label = /** @type {(inputs: Feed_Chapters_LabelInputs) => LocalizedString} */ (i) => { + return /** @type {LocalizedString} */ (`${i?.n} capítulos`) +}; + +const fr_feed_chapters_label = /** @type {(inputs: Feed_Chapters_LabelInputs) => LocalizedString} */ (i) => { + return /** @type {LocalizedString} */ (`${i?.n} chapitres`) +}; + +/** +* | output | +* | --- | +* | "{n} chapters" | +* +* @param {Feed_Chapters_LabelInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const feed_chapters_label = /** @type {((inputs: Feed_Chapters_LabelInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_feed_chapters_label(inputs) + if (locale === "ru") return ru_feed_chapters_label(inputs) + if (locale === "id") return id_feed_chapters_label(inputs) + if (locale === "pt") return pt_feed_chapters_label(inputs) + return fr_feed_chapters_label(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/paraglide/messages/feed_empty_body.js b/ui/src/lib/paraglide/messages/feed_empty_body.js new file mode 100644 index 0000000..5c5ad4b --- /dev/null +++ b/ui/src/lib/paraglide/messages/feed_empty_body.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{}} Feed_Empty_BodyInputs */ + +const en_feed_empty_body = /** @type {(inputs: Feed_Empty_BodyInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Follow other readers to see what they're reading.`) +}; + +const ru_feed_empty_body = /** @type {(inputs: Feed_Empty_BodyInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Подпишитесь на других читателей, чтобы видеть, что они читают.`) +}; + +const id_feed_empty_body = /** @type {(inputs: Feed_Empty_BodyInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Ikuti pembaca lain untuk melihat apa yang mereka baca.`) +}; + +const pt_feed_empty_body = /** @type {(inputs: Feed_Empty_BodyInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Siga outros leitores para ver o que estão lendo.`) +}; + +const fr_feed_empty_body = /** @type {(inputs: Feed_Empty_BodyInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Suivez d'autres lecteurs pour voir ce qu'ils lisent.`) +}; + +/** +* | output | +* | --- | +* | "Follow other readers to see what they're reading." | +* +* @param {Feed_Empty_BodyInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const feed_empty_body = /** @type {((inputs?: Feed_Empty_BodyInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs = {}, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_feed_empty_body(inputs) + if (locale === "ru") return ru_feed_empty_body(inputs) + if (locale === "id") return id_feed_empty_body(inputs) + if (locale === "pt") return pt_feed_empty_body(inputs) + return fr_feed_empty_body(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/paraglide/messages/feed_empty_heading.js b/ui/src/lib/paraglide/messages/feed_empty_heading.js new file mode 100644 index 0000000..a2418fe --- /dev/null +++ b/ui/src/lib/paraglide/messages/feed_empty_heading.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{}} Feed_Empty_HeadingInputs */ + +const en_feed_empty_heading = /** @type {(inputs: Feed_Empty_HeadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Nothing here yet`) +}; + +const ru_feed_empty_heading = /** @type {(inputs: Feed_Empty_HeadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Пока ничего нет`) +}; + +const id_feed_empty_heading = /** @type {(inputs: Feed_Empty_HeadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Belum ada apa-apa`) +}; + +const pt_feed_empty_heading = /** @type {(inputs: Feed_Empty_HeadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Nada aqui ainda`) +}; + +const fr_feed_empty_heading = /** @type {(inputs: Feed_Empty_HeadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Rien encore`) +}; + +/** +* | output | +* | --- | +* | "Nothing here yet" | +* +* @param {Feed_Empty_HeadingInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const feed_empty_heading = /** @type {((inputs?: Feed_Empty_HeadingInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs = {}, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_feed_empty_heading(inputs) + if (locale === "ru") return ru_feed_empty_heading(inputs) + if (locale === "id") return id_feed_empty_heading(inputs) + if (locale === "pt") return pt_feed_empty_heading(inputs) + return fr_feed_empty_heading(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/paraglide/messages/feed_find_users_cta.js b/ui/src/lib/paraglide/messages/feed_find_users_cta.js new file mode 100644 index 0000000..02cd69b --- /dev/null +++ b/ui/src/lib/paraglide/messages/feed_find_users_cta.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{}} Feed_Find_Users_CtaInputs */ + +const en_feed_find_users_cta = /** @type {(inputs: Feed_Find_Users_CtaInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Discover readers`) +}; + +const ru_feed_find_users_cta = /** @type {(inputs: Feed_Find_Users_CtaInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Найти читателей`) +}; + +const id_feed_find_users_cta = /** @type {(inputs: Feed_Find_Users_CtaInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Temukan pembaca`) +}; + +const pt_feed_find_users_cta = /** @type {(inputs: Feed_Find_Users_CtaInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Encontrar leitores`) +}; + +const fr_feed_find_users_cta = /** @type {(inputs: Feed_Find_Users_CtaInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Trouver des lecteurs`) +}; + +/** +* | output | +* | --- | +* | "Discover readers" | +* +* @param {Feed_Find_Users_CtaInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const feed_find_users_cta = /** @type {((inputs?: Feed_Find_Users_CtaInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs = {}, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_feed_find_users_cta(inputs) + if (locale === "ru") return ru_feed_find_users_cta(inputs) + if (locale === "id") return id_feed_find_users_cta(inputs) + if (locale === "pt") return pt_feed_find_users_cta(inputs) + return fr_feed_find_users_cta(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/paraglide/messages/feed_heading.js b/ui/src/lib/paraglide/messages/feed_heading.js new file mode 100644 index 0000000..62f4ae9 --- /dev/null +++ b/ui/src/lib/paraglide/messages/feed_heading.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{}} Feed_HeadingInputs */ + +const en_feed_heading = /** @type {(inputs: Feed_HeadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Following Feed`) +}; + +const ru_feed_heading = /** @type {(inputs: Feed_HeadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Лента подписок`) +}; + +const id_feed_heading = /** @type {(inputs: Feed_HeadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Umpan Ikutan`) +}; + +const pt_feed_heading = /** @type {(inputs: Feed_HeadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Feed de seguidos`) +}; + +const fr_feed_heading = /** @type {(inputs: Feed_HeadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Fil d'abonnements`) +}; + +/** +* | output | +* | --- | +* | "Following Feed" | +* +* @param {Feed_HeadingInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const feed_heading = /** @type {((inputs?: Feed_HeadingInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs = {}, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_feed_heading(inputs) + if (locale === "ru") return ru_feed_heading(inputs) + if (locale === "id") return id_feed_heading(inputs) + if (locale === "pt") return pt_feed_heading(inputs) + return fr_feed_heading(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/paraglide/messages/feed_not_logged_in.js b/ui/src/lib/paraglide/messages/feed_not_logged_in.js new file mode 100644 index 0000000..0d894b1 --- /dev/null +++ b/ui/src/lib/paraglide/messages/feed_not_logged_in.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{}} Feed_Not_Logged_InInputs */ + +const en_feed_not_logged_in = /** @type {(inputs: Feed_Not_Logged_InInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Sign in to see your feed.`) +}; + +const ru_feed_not_logged_in = /** @type {(inputs: Feed_Not_Logged_InInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Войдите, чтобы видеть свою ленту.`) +}; + +const id_feed_not_logged_in = /** @type {(inputs: Feed_Not_Logged_InInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Masuk untuk melihat umpan Anda.`) +}; + +const pt_feed_not_logged_in = /** @type {(inputs: Feed_Not_Logged_InInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Faça login para ver seu feed.`) +}; + +const fr_feed_not_logged_in = /** @type {(inputs: Feed_Not_Logged_InInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Connectez-vous pour voir votre fil.`) +}; + +/** +* | output | +* | --- | +* | "Sign in to see your feed." | +* +* @param {Feed_Not_Logged_InInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const feed_not_logged_in = /** @type {((inputs?: Feed_Not_Logged_InInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs = {}, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_feed_not_logged_in(inputs) + if (locale === "ru") return ru_feed_not_logged_in(inputs) + if (locale === "id") return id_feed_not_logged_in(inputs) + if (locale === "pt") return pt_feed_not_logged_in(inputs) + return fr_feed_not_logged_in(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/paraglide/messages/feed_page_title.js b/ui/src/lib/paraglide/messages/feed_page_title.js new file mode 100644 index 0000000..ae07a8d --- /dev/null +++ b/ui/src/lib/paraglide/messages/feed_page_title.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{}} Feed_Page_TitleInputs */ + +const en_feed_page_title = /** @type {(inputs: Feed_Page_TitleInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Feed — LibNovel`) +}; + +const ru_feed_page_title = /** @type {(inputs: Feed_Page_TitleInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Лента — LibNovel`) +}; + +const id_feed_page_title = /** @type {(inputs: Feed_Page_TitleInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Umpan — LibNovel`) +}; + +const pt_feed_page_title = /** @type {(inputs: Feed_Page_TitleInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Feed — LibNovel`) +}; + +const fr_feed_page_title = /** @type {(inputs: Feed_Page_TitleInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Fil — LibNovel`) +}; + +/** +* | output | +* | --- | +* | "Feed — LibNovel" | +* +* @param {Feed_Page_TitleInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const feed_page_title = /** @type {((inputs?: Feed_Page_TitleInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs = {}, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_feed_page_title(inputs) + if (locale === "ru") return ru_feed_page_title(inputs) + if (locale === "id") return id_feed_page_title(inputs) + if (locale === "pt") return pt_feed_page_title(inputs) + return fr_feed_page_title(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/paraglide/messages/feed_reader_label.js b/ui/src/lib/paraglide/messages/feed_reader_label.js new file mode 100644 index 0000000..43bf4fd --- /dev/null +++ b/ui/src/lib/paraglide/messages/feed_reader_label.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{}} Feed_Reader_LabelInputs */ + +const en_feed_reader_label = /** @type {(inputs: Feed_Reader_LabelInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`reading`) +}; + +const ru_feed_reader_label = /** @type {(inputs: Feed_Reader_LabelInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`читает`) +}; + +const id_feed_reader_label = /** @type {(inputs: Feed_Reader_LabelInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`membaca`) +}; + +const pt_feed_reader_label = /** @type {(inputs: Feed_Reader_LabelInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`lendo`) +}; + +const fr_feed_reader_label = /** @type {(inputs: Feed_Reader_LabelInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`lit`) +}; + +/** +* | output | +* | --- | +* | "reading" | +* +* @param {Feed_Reader_LabelInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const feed_reader_label = /** @type {((inputs?: Feed_Reader_LabelInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs = {}, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_feed_reader_label(inputs) + if (locale === "ru") return ru_feed_reader_label(inputs) + if (locale === "id") return id_feed_reader_label(inputs) + if (locale === "pt") return pt_feed_reader_label(inputs) + return fr_feed_reader_label(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/paraglide/messages/feed_subheading.js b/ui/src/lib/paraglide/messages/feed_subheading.js new file mode 100644 index 0000000..d934e0f --- /dev/null +++ b/ui/src/lib/paraglide/messages/feed_subheading.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{}} Feed_SubheadingInputs */ + +const en_feed_subheading = /** @type {(inputs: Feed_SubheadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Books your followed users are reading`) +}; + +const ru_feed_subheading = /** @type {(inputs: Feed_SubheadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Книги, которые читают ваши подписки`) +}; + +const id_feed_subheading = /** @type {(inputs: Feed_SubheadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Buku yang sedang dibaca oleh pengguna yang Anda ikuti`) +}; + +const pt_feed_subheading = /** @type {(inputs: Feed_SubheadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Livros que seus seguidos estão lendo`) +}; + +const fr_feed_subheading = /** @type {(inputs: Feed_SubheadingInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Livres lus par vos abonnements`) +}; + +/** +* | output | +* | --- | +* | "Books your followed users are reading" | +* +* @param {Feed_SubheadingInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const feed_subheading = /** @type {((inputs?: Feed_SubheadingInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs = {}, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_feed_subheading(inputs) + if (locale === "ru") return ru_feed_subheading(inputs) + if (locale === "id") return id_feed_subheading(inputs) + if (locale === "pt") return pt_feed_subheading(inputs) + return fr_feed_subheading(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/paraglide/messages/nav_feed.js b/ui/src/lib/paraglide/messages/nav_feed.js new file mode 100644 index 0000000..b5ce336 --- /dev/null +++ b/ui/src/lib/paraglide/messages/nav_feed.js @@ -0,0 +1,44 @@ +/* eslint-disable */ +import { getLocale, experimentalStaticLocale } from '../runtime.js'; + +/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */ + +/** @typedef {{}} Nav_FeedInputs */ + +const en_nav_feed = /** @type {(inputs: Nav_FeedInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Feed`) +}; + +const ru_nav_feed = /** @type {(inputs: Nav_FeedInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Лента`) +}; + +const id_nav_feed = /** @type {(inputs: Nav_FeedInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Umpan`) +}; + +const pt_nav_feed = /** @type {(inputs: Nav_FeedInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Feed`) +}; + +const fr_nav_feed = /** @type {(inputs: Nav_FeedInputs) => LocalizedString} */ () => { + return /** @type {LocalizedString} */ (`Fil`) +}; + +/** +* | output | +* | --- | +* | "Feed" | +* +* @param {Nav_FeedInputs} inputs +* @param {{ locale?: "en" | "ru" | "id" | "pt" | "fr" }} options +* @returns {LocalizedString} +*/ +export const nav_feed = /** @type {((inputs?: Nav_FeedInputs, options?: { locale?: "en" | "ru" | "id" | "pt" | "fr" }) => LocalizedString) & import('../runtime.js').MessageMetadata} */ ((inputs = {}, options = {}) => { + const locale = experimentalStaticLocale ?? options.locale ?? getLocale() + if (locale === "en") return en_nav_feed(inputs) + if (locale === "ru") return ru_nav_feed(inputs) + if (locale === "id") return id_nav_feed(inputs) + if (locale === "pt") return pt_nav_feed(inputs) + return fr_nav_feed(inputs) +}); \ No newline at end of file diff --git a/ui/src/lib/server/pocketbase.ts b/ui/src/lib/server/pocketbase.ts index ae310b6..1b473ca 100644 --- a/ui/src/lib/server/pocketbase.ts +++ b/ui/src/lib/server/pocketbase.ts @@ -327,30 +327,35 @@ export async function recentlyUpdatedBooks(limit = 8): Promise { const cached = await cache.get(key); if (cached) return cached; - // Fetch enough recent chapter rows to find `limit` distinct books - const rows = await listN<{ slug: string; created: string }>( - 'chapters_idx', limit * 25, '', '-created' - ); + try { + // Fetch enough recent chapter rows to find `limit` distinct books + const rows = await listN<{ slug: string; created: string }>( + 'chapters_idx', limit * 25, '', '-created' + ); - const seen = new Set(); - const slugs: string[] = []; - for (const row of rows) { - if (!seen.has(row.slug)) { - seen.add(row.slug); - slugs.push(row.slug); - if (slugs.length >= limit) break; + const seen = new Set(); + const slugs: string[] = []; + for (const row of rows) { + if (!seen.has(row.slug)) { + seen.add(row.slug); + slugs.push(row.slug); + if (slugs.length >= limit) break; + } } + + if (!slugs.length) return recentlyAddedBooks(limit); + + const books = await getBooksBySlugs(new Set(slugs)); + // Restore recency order (getBooksBySlugs returns in title sort order) + const bookMap = new Map(books.map((b) => [b.slug, b])); + const ordered = slugs.flatMap((s) => (bookMap.has(s) ? [bookMap.get(s)!] : [])); + + await cache.set(key, ordered, 5 * 60); + return ordered; + } catch { + // Fall back to meta_updated sort if chapters_idx query fails + return recentlyAddedBooks(limit); } - - if (!slugs.length) return []; - - const books = await getBooksBySlugs(new Set(slugs)); - // Restore recency order (getBooksBySlugs returns in title sort order) - const bookMap = new Map(books.map((b) => [b.slug, b])); - const ordered = slugs.flatMap((s) => (bookMap.has(s) ? [bookMap.get(s)!] : [])); - - await cache.set(key, ordered, 5 * 60); - return ordered; } export interface HomeStats { diff --git a/ui/src/routes/+page.server.ts b/ui/src/routes/+page.server.ts index 99aa8c3..f680382 100644 --- a/ui/src/routes/+page.server.ts +++ b/ui/src/routes/+page.server.ts @@ -19,7 +19,7 @@ export const load: PageServerLoad = async ({ locals }) => { try { [recentBooks, progressList, stats] = await Promise.all([ - recentlyUpdatedBooks(8), + recentlyUpdatedBooks(8).catch(() => [] as Book[]), allProgress(locals.sessionId, locals.user?.id), getHomeStats() ]);