Adding gender to the config
build / build (push) Successful in 19s

This commit is contained in:
ml
2026-07-16 22:49:06 +02:00
parent 1ebbfebe31
commit 7a77c4a07d
26 changed files with 470 additions and 109 deletions
+31 -3
View File
@@ -200,6 +200,23 @@ more common (but less original) ordering; don't use it as a reference for
the position enum order. Card and position text in `tarot_data.c` is
condensed from Waite's own wording in Part III §3 (public domain).
**Gender** (`Gender` in `tarot.h`: `GENDER_UNSPECIFIED`/`GENDER_MALE`/
`GENDER_FEMALE`) is who the reading is for — it only affects the
pronouns in the 9 Celtic Cross position names/descriptions that have one
(Waite addresses the querent as "him" throughout; every other position
text in this codebase — card meanings, narrative, guidance — is already
pronoun-neutral or direct "you" address, so nothing else varies with
it). `DailyReading.gender` is set by `reading_generate()` the same way
`utc_moment` is, `deck-engine`'s `--gender male|female|unspecified`
flag/`dist/user.properties`' `gender=` field/the watch config page's
Gender field all feed it, and `reading_print_json`/`reading_load_json`
carry it across the `deck-engine``interpreter-cli` JSON boundary
(`tarot_gender_slug()`) the same way `date` does. `GENDER_UNSPECIFIED`
is the default and renders pronoun-neutral phrasing (singular "they" in
English; German rephrases around a noun like "die fragende Person"
rather than a pronoun, since German has no equivalent singular-they
construction in common use).
### Translations (`i18n.c`, `engine/i18n/*.lang`)
All display text (planet/sign/moon-phase/aspect names, tarot card names
@@ -217,7 +234,12 @@ Keys are namespaced by the *slug* tables in `tarot_data.c`/`astro.c`
`moonphase.<slug>`, `aspect.<slug>`), plus `ui.*` keys for `reading.c`'s
own labels — deliberately keyed off separate slug strings rather than
the C enum names, so renaming an enumerator can never silently break a
`.lang` file. **To add a language**: copy `engine/i18n/en.lang` to
`.lang` file. `position.<slug>.name/desc` additionally take an optional
`.male`/`.female` suffix (e.g. `position.attitude.name.male`) for the
`Gender`-varying wording (see "Tarot" above); the unsuffixed key is
looked up first as the fallback for a missing gendered key, so a
position whose wording doesn't vary by gender only needs the one
unsuffixed key. **To add a language**: copy `engine/i18n/en.lang` to
`<code>.lang` in the same directory (keys must match exactly) and
translate the values — no source changes needed, `make` picks up any
`*.lang` file there automatically.
@@ -444,10 +466,16 @@ built once and linked into *both* binaries.
`VENDORED.md` for the pinned upstream commit.
- Card/spread text in `tarot_data.c`/`engine/i18n/en.lang`: condensed
from A. E. Waite's *The Pictorial Key to the Tarot* (1911), public
domain.
domain. The `GENDER_MALE` variant of the Celtic Cross position text
keeps Waite's own "him"/"his" wording verbatim; the
`GENDER_UNSPECIFIED`/`GENDER_FEMALE` variants are original paraphrases
written for this project, not Waite's own text (see "Tarot" above).
- `engine/i18n/de.lang`'s card/spread text is an original translation of
that same public-domain English text, made for this project — not
taken from any specific published German edition.
taken from any specific published German edition. Its `Gender`-varying
position text follows the same policy as the English original: `.male`
is a direct translation of Waite's own wording, `.female`/unsuffixed
are original paraphrases for this project.
- Transit narrative text in `interpreter/src/narrative.c`: condensed from
Sepharial's *Transits and Planetary Periods* (1920, public domain —
`res/Transits_and_Planetary_Periods.pdf`), except the Moon and Pluto