Adopt Lingui and author the Eciperay voice object (i18n foundation)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- react-native, typescript
- Domain
- internationalization
Research direction
Start by reading the Lingui setup and validating its Plural macro with React Native 0.88/Metro and the web transform pipeline; the issue names no files or tests to start from. Then review the locale precedence and strict catalog extraction/compile requirements, plus the voice chart scope. Done means the spike and fallback decision are recorded, CI and locale handling are wired, and the voice work is completed when the design-system slot types/provider are available.
Written by the indexing model from the issue text.
Description
The app-side half of the i18n program decided 2026-11-07 (architecture: spudly/design-system#539 — voice-as-theme: the DS defines the typed voice/copy slot system and ships no strings; this app authors every word).
Decisions already made (2026-11-07):
- Library: Lingui (compiler-driven extraction, native ICU, PO catalogs in this repo).
- Locales: en-US only for now; other languages later — build the full machinery from day one so adding a language is a translation job, not an engineering project.
- Web SSR is planned (see #304): the setup must be SSR-ready — compiled catalogs load isomorphically, locale negotiation is server-aware (stored user choice >
Accept-Language/device > en-US), no browser-only singleton assumptions. - Hermes: ship
@formatjs/intl-locale+@formatjs/intl-pluralrulespolyfills (Hermes lacksIntl.PluralRules/Intl.Locale).
Scope:
0. Spike first: validate Lingui on React Native 0.88 / Metro — including the Plural macro — and in the web build's transform pipeline. If the spike fails, fall back to i18next and note it here.
- Lingui setup, web + native: PO catalogs in-repo,
lingui extract/compilewired into CI in strict mode (missing keys fail the build), locale detection via expo-localization / react-native-localize with the precedence above. - Author the Eciperay voice: the voice chart lives in this repo next to the catalogs — the capable kitchen companion: warm and welcoming, capable and unflappable, dry wit with a hint of sarcasm aimed at situations (never at the cook), encouraging and never guilt-y; errors and safety copy stay plain. Build the app's voice object filling the DS slot types from design-system #539.
- Page-unique copy flows through catalogs into page
copyprops; shared-component text comes from the voice object. Add theen-XApseudo-locale to the test matrix — it is the standing second locale until real translations arrive.
Sequencing: steps 0–1 and the voice chart are independent and can start now; the voice-object wiring waits on design-system #539 shipping its slot types/provider.
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 8h 48m
- Merged PRs (30d)
- 209
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from spudly/eciperay
-
blocked needs_human priority-p2
Difficulty 2/5 Half a day Newbie friendliness 68/100
spudly/eciperay#31 · 1 comment ·
Maintainers usually reply within 1 day
-
Android release build fails applying expo-autolinking plugin (expo-constants libraryVariants) — regression from #464Possibly taken @spudly claimed this today. Openblocker bug priority-p1 scale-md
Difficulty 4/5 3-5 days Newbie friendliness 25/100
spudly/eciperay#466 · 2 comments ·
Maintainers usually reply within 1 day
-
bug priority-p2
Difficulty 3/5 1-2 days Newbie friendliness 66/100
spudly/eciperay#461 · 3 comments ·
Maintainers usually reply within 1 day
-
enhancement priority-p2
Difficulty 5/5 Over a week Newbie friendliness 35/100
spudly/eciperay#460 · 4 comments ·
Maintainers usually reply within 1 day
-
blocked enhancement priority-p2
Difficulty 4/5 3-5 days Newbie friendliness 35/100
spudly/eciperay#451 · 3 comments ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
backnotprop/plannotator#2914 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
microsoft/vscode-containers#655 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
dsh-tauri-desk/deepseek-harness-desktop#1477 · 1 comment ·