Skip to content

EMI: feat: reword the reminder screen and notification in three languages - #367

Merged
juliantellez merged 2 commits into
mainfrom
emi-feat-reminder-words-three-languages
Oct 21, 2026
Merged

juliantellez merged 2 commits into
mainfrom
emi-feat-reminder-words-three-languages

Conversation

@juliantellez

Copy link
Copy Markdown
Contributor

What. The reminder screen and the reminder notification get new words in English, Spanish and Russian, from Polina's Russian meaning. The lock screen now says only "A reminder from Emi".

Why. In the beta, "when it is near" read like a pregnancy due date, and "Your forecast starts" was unclear. She asked for a direct question and a neutral notification.

flowchart LR
  A["She picks a moment"] --> B["Screen line: the hour and when her period may start"]
  A --> C["Turn on reminders"]
  C --> D["Phone schedules one notification at 9 in the morning"]
  D --> E["Lock screen: A reminder from Emi"]
Loading

Stack. 1. #361 (step 23, the base). 2. This pull request (step 29). Steps 26 (#364), 27 (#365) and 28 (#366) sit on the same base and touch other keys. Merge 361 first.

Reminder screen, English, iPhone SE. Before, then after.

Reminder screen, Russian, iPhone SE. Before, then after.

The pictures are observed on the iPhone SE simulator, with "2 days before" pressed. Before: branch emi-fix-russian-first-run-wording at f229f90. After: this branch, the code of commit b27e6a8, served by Metro from this checkout. The after pictures are scrolled down by about 60 points, because on the iPhone SE the screen scrolls once the line under the question shows. No real notification was scheduled.

Issue. Closes #322 (#322). This is the last step for 322. The issue closes together with #361, #364, #365 and #366.

Draft text for review

Each line: key, then English, Russian and Spanish, old and new.

onboarding.reminder.title
English: "Shall Emi tell you when it is near?" becomes "Would you like a reminder before your period?"
Russian: "Напомнить о приближении месячных?" (no change, step 23 set it)
Spanish: "¿Quieres que Emi te avise cuando esté cerca?" becomes "¿Quieres un recordatorio antes de tu regla?"

onboarding.reminder.question (new key, a line under the title)
English: "When would you like to be reminded?"
Russian: "Когда вам напомнить о месячных?"
Spanish: "¿Cuándo quieres que te lo recordemos?"

onboarding.reminder.choice.twoDaysBefore / .oneDayBefore / .onTheDay
English: "Two days before" / "One day before" / "On the day" become "2 days before" / "1 day before" / "On the expected start date"
Russian: "За 2 дня" / "За 1 день" / "В день предполагаемого начала" (no change)
Spanish: "Dos días antes" / "Un día antes" / "El mismo día" become "2 días antes" / "1 día antes" / "El día previsto de inicio"

onboarding.reminder.line.twoDaysBefore (shows after she picks)
English: "Two days before the range starts." becomes "The reminder comes at 9 in the morning. Your period may start about 2 days later."
Russian: "За два дня до начала диапазона." becomes "Напоминание придёт в 9 утра. Месячные могут начаться примерно через 2 дня."
Spanish: "Dos días antes de que empiece el rango." becomes "El recordatorio llega a las 9 de la mañana. Tu regla puede empezar unos 2 días después."

onboarding.reminder.line.oneDayBefore
English: "One day before the range starts." becomes "The reminder comes at 9 in the morning. Your period may start the next day."
Russian: "За один день до начала диапазона." becomes "Напоминание придёт в 9 утра. Месячные могут начаться на следующий день."
Spanish: "Un día antes de que empiece el rango." becomes "El recordatorio llega a las 9 de la mañana. Tu regla puede empezar al día siguiente."

onboarding.reminder.line.onTheDay
English: "On the day the range starts." becomes "The reminder comes at 9 in the morning. Your period may start that day."
Russian: "В день, когда начинается диапазон." becomes "Напоминание придёт в 9 утра. Месячные могут начаться в этот же день."
Spanish: "El día en que empieza el rango." becomes "El recordatorio llega a las 9 de la mañana. Tu regla puede empezar ese mismo día."

onboarding.reminder.action
English: "Remind me" becomes "Turn on reminders"
Russian: "Включить напоминания" (no change)
Spanish: "Avísame" becomes "Activar recordatorios"

reminder.notification (one new key in place of three; this is the lock screen text)
English: "Your forecast starts in two days." / "tomorrow." / "today." becomes "A reminder from Emi"
Russian: "Ваш прогноз начинается через два дня." / "завтра." / "сегодня." becomes "Напоминание от Emi"
Spanish: "Tu previsión empieza en dos días." / "mañana." / "hoy." becomes "Un recordatorio de Emi"

onboarding.reminder.notNow stays "Not now", "Не сейчас", "Ahora no".

Decisions

  1. No board. The canvas has no board for the reminder, so the screen keeps its present look (the dark lock screen sample, the chips, the button). The only layout change is the new question line under the title, through the frame's existing question slot.
  2. Polina's example line goes on the screen, not on the lock screen. The reminder test refuses месячн, period and the other stems in the notification. So the notification is the neutral "A reminder from Emi", the same for every moment, as she asked. Her example "Месячные могут начаться примерно через 2 дня." becomes the second sentence of the line under the question.
  3. The first sentence makes the line true. Alone, "Your period may start in about 2 days" reads as a forecast for today, which is false on this screen. "The reminder comes at 9 in the morning" anchors it to the reminder.
  4. Claims checked against the code. whenToRemindHer in apps/mobile/src/features/reminder/reminder.ts raises the reminder at reminderHour (9, local time) on the first day of the forecast range minus 2, 1 or 0 days. So at that moment the period may start 2 days later, the next day or that day. The hour in the copy is the {hour} placeholder, filled from reminderHour, so the text cannot drift from the code. rescheduleHerReminder now schedules reminderNotificationWords as the body.
  5. Changed test contracts. The scenario step "the sample on the screen names a forecast and a day, and nothing about her body" becomes "the sample lock screen says only that it is a reminder from Emi". The old check that no text on the screen says "period" now applies to the lock screen sample only, because the title names the period by design. The unit test "says when, in words that change with the moment she chose" becomes "says only that it is a reminder from Emi, the same words for every moment", with a test that the three old reminder.notification.* keys are gone. "Remind me" becomes "Turn on reminders" in the scenario names.
  6. Small screen. On the iPhone SE, after she picks a moment, the line pushes the third chip below the fold, and the screen scrolls to it. Before a pick, all three chips fit.

Checks

make check: format, lint (0 errors, 2 warnings in exportScreen.picture.tsx, not this change), typecheck, documents, brand, features, story, pictures and mockups pass. Workspace tests 124 of 124. Mobile tests 3591 of 3592: the one failure is test 10.7, the known local noise from the "always-auth" and "email" warnings of ~/.npmrc. npm run test:behaviour: 92 of 92. The claims gate and the naming tests 23.2 to 23.6 pass. grep -c itvrepos package-lock.json prints 0.

Mutation check: the onTheDay line in copy.ts was pointed at the oneDayBefore key. The new test "says the hour the reminder comes at and what it means" went red. With the file restored, it went green.

@juliantellez juliantellez self-assigned this Oct 20, 2026
Base automatically changed from emi-fix-russian-first-run-wording to main October 20, 2026 03:36
# Conflicts:
#	brand/screens/onboarding.html
#	brand/screens/onboarding.png
#	features/2-she-logs-her-first-period.feature
@juliantellez
juliantellez merged commit 07d94f5 into main Oct 21, 2026
1 check passed
@juliantellez
juliantellez deleted the emi-feat-reminder-words-three-languages branch October 21, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rewrite the Russian onboarding copy

1 participant