Skip to content

Localize Android workout start UI - #499

Closed
kavemang wants to merge 1 commit into
ryanbr:mainfrom
kavemang:agent/localize-workout-start
Closed

kavemang wants to merge 1 commit into
ryanbr:mainfrom
kavemang:agent/localize-workout-start

Conversation

@kavemang

Copy link
Copy Markdown

Summary

Progresses #453 by localizing the Android workout-start sheet and active-workout banner.

Why

WorkoutStart.kt passed its labels directly to Compose as English string literals, so Android could never translate that flow. This moves the screen's UI text through stringResource() and adds matching German resources.

Changes

  • Localize the workout picker title, search field, section labels, GPS control, and buttons.
  • Localize the selected-sport start action and active-workout banner with formatted resources.
  • Reuse the existing localized Start workout action where it already matches.
  • Add German translations for every new key.

Sport names come from the shared WorkoutSport catalog and remain part of the wider #453 backlog; this PR covers the UI owned by WorkoutStart.kt without changing stored sport identifiers.

Validation

  • git diff --check
  • xmllint --noout android/app/src/main/res/values/strings.xml android/app/src/main/res/values-de/strings.xml
  • python3 Tools/i18n_audit.py --platform android --ci upstream/main
  • cd android && ./gradlew :app:testFullDebugUnitTest --tests 'com.noop.ui.GermanLocalizationTest' :app:compileFullDebugKotlin

@kavemang
kavemang marked this pull request as ready for review July 16, 2026 02:35
@ryanbr

ryanbr commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Thanks for this, and for the steady localization work — but I'm going to close this one as superseded by #501, which merged a short while ago and already covers exactly this flow. Wanted to leave the details so it's clear it's a timing collision, not a problem with the change itself.

WorkoutStart.kt is already fully localized on main. #501 closed the whole #453 Android backlog, including the workout-start sheet and active-workout banner — the i18n audit now reports 0 hardcoded literals across ui/ + widget/, and every key has de / es / fr (this PR is German-only).

The two efforts just took different key conventions, which is why GitHub flags this CONFLICTING — both rewrite WorkoutStart.kt + strings.xml:

main (via #501) this PR
keys auto-generated l10n_workout_start_cancel_77dfd213 semantic action_cancel
languages de + es + fr de only

Merging on top of #501 would either fight the conflict or leave duplicate parallel keys for the same buttons, and the semantic names would be inconsistent with the ~1,500 l10n_* keys #501 standardized app-wide.

For what it's worth, your action_cancel / workout_start_title names read nicer than the hashed ones — if we ever decide to move to human-readable keys, that's a worthwhile app-wide cleanup, just not something to land for a single screen here.

Net: no action needed on your side — #501 got there first. Really appreciate the contribution, and please keep them coming.

@kavemang kavemang closed this Jul 16, 2026
@kavemang
kavemang deleted the agent/localize-workout-start branch July 16, 2026 07:16
DX23876 added a commit to DX23876/noop that referenced this pull request Oct 16, 2026
…from the strap trace

A workout recorded while the strap link was down is saved without average,
peak or Effort, though the strap hands its own trace over at the next sync.
Average and peak already followed that trace at read time (ryanbr#77/ryanbr#499); the
Effort stayed empty. The analysis pass now stores all three for recorded or
entered workouts saved without heart rate, through the same resolver and
fill table as the Apple Health fill, in their own namespace, laid over the
row at read time. Recorded in docs/fork/decisions.md.

Analysis migration required: no. New fills for rows that had no heart rate;
nothing already scored changes.
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.

2 participants