Skip to content

Generate one ICS/RSS file per language for multi-language feeds #49

Description

@hhkaos

OTE events/feeds can carry per-field translations (name/description, keyed by BCP 47 tag), but feed.ics and feed.xml are only ever generated from the primary textLanguage content — build-feed reads translations but never feeds it to the exporters (see packages/build-feed/src/index.ts, around the FEED_CONFIG_FIELDS comment). JSON consumers (e.g. apps/embed) can use translations directly, but ICS/RSS subscribers only ever see one language.

Idea: generate one ICS/RSS file per language present in the feed's translations, so subscribers can pick e.g. feed.en.ics instead of only the primary-language feed.ics.

Open design questions to resolve before implementation:

  • Fallback semantics: a given event may have a translation for some languages but not others — does the per-language feed fall back to the primary text for that event, or omit/flag it?
  • Which languages to generate: the union of every event's + the feed's own translations keys? Configurable allow-list in ote.config.json?
  • Naming/URL convention: feed.en.ics vs en/feed.ics — needs to work with build-pages.yml (currently assumes one fixed feed.json/feed.ics/feed.xml) and with apps/preview's URL guessing (pagesUrl/rawUrl/sibling-file logic in apps/preview/src/main.ts), which also assumes fixed filenames.

Scope: this lives entirely in ote-tools (packages/build-feed, the two exporters, build-pages.yml, possibly apps/preview). Consuming repos (forks of ote-template) wouldn't need any changes beyond linking the new files.

Intentionally split out from the Markdown→HTML description rendering work (RSS <description> + ICS X-ALT-DESC) — independent, larger design decision.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesttool:build-feedFeed builder (packages/build-feed)tool:export-icsOTE -> iCalendar (packages/export-ics)tool:export-rssOTE -> RSS/JSON Feed (packages/export-rss)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions