Skip to content

ADFA-4795: Localize the K2Go redesign across 33 locales#237

Open
luisguzman-adfa wants to merge 22 commits into
mainfrom
feat/ADFA-4795-redesign-l10n
Open

ADFA-4795: Localize the K2Go redesign across 33 locales#237
luisguzman-adfa wants to merge 22 commits into
mainfrom
feat/ADFA-4795-redesign-l10n

Conversation

@luisguzman-adfa

Copy link
Copy Markdown
Collaborator

What this PR changes

Localizes the redesigned UI, which previously shipped English-only.

  • Extraction — moves the redesign's remaining hardcoded literals to @string resources: WizardActivity, SettingsFragment/SettingsSubFragment, CloneFragment/ConnectFragment, and fragment_k2go_clone.xml. Glyph-only labels (arrows, checkmarks, chevrons) are intentionally left inline.
  • Translation — flips every redesign k2go_* string to translatable and populates all 33 locales. Result: 184 keys, 0 translatable="false" remaining, each key present in every locale.

Covers Wizard + bottom nav, Settings, Clone (send spine, receive/confirm System·Content·Total, incompatibility guardrail, send-the-app path), Connect, and the Wizard content step (editions, sources, Wikipedia version picker), plus language names and the brand tagline.

Why

Needed for the upcoming Wizard and Settings (language) work, and to stop the redesign from being English-only.

Verification

  • xmllint clean on every touched resource file.
  • Each of the 33 locales has exactly 184 k2go_* keys, so MissingTranslation (which lint treats as an error here) is satisfied.

Notes

Translations are machine-generated. English and Spanish are the reviewed pair; the other 31 locales are best-effort and tagged in-file for human review (sr/az/sw/yo/ta/gu/bn marked lower-confidence). Built in batches — intermediate commits may not each pass l10n lint, but the final branch state is complete.

WizardActivity used 8 setText("...") literals. Point them at @string
(reusing k2go_get_started/k2go_next/k2go_setup_library_title; adds
k2go_wiz_choose_language, k2go_wiz_language_sub, k2go_wiz_permissions_title,
k2go_continue, k2go_wiz_setup_sub). Prep for the 33-locale pass.
Flip the 31 Wizard/nav keys (tabs, Next/Back/Skip/Add, welcome, language,
permissions, setup options) to translatable and add them to all 33 locales.
es reviewed alongside en; other locales are machine translation pending
human review (sr/az/sw/yo/ta/gu/bn flagged in-file). Keeps lint
MissingTranslation satisfied (every flipped key exists in all locales).
SettingsFragment/SettingsSubFragment used setText literals (Language,
About, Advanced, Turn off K2Go, background-running note; Settings title
reuses k2go_tab_settings). Extract to @string and add all 33 locales.
es reviewed with en; others machine translation pending review.
CloneFragment/ConnectFragment used setText literals for step titles,
notes and actions. Map them to new @string keys (glyph-only labels like
arrows/checks left as-is). English only here; locales follow.
fragment_k2go_clone.xml carried its labels inline. Move them to @string
(reusing k2go_back_link and k2go_clone_stop_sharing; glyph-only labels
like arrows/checks left inline). English only; locales follow.
Step titles, join/Wi-Fi notes, start/stop service, sharing states and
the nothing-to-share guard. es reviewed with en; others machine
translation pending review.
Intent fork, receive breakdown (System/Content/Total), replace notices,
scan/enter-code affordances, camera fallbacks and the copy action. es
reviewed with en; others machine translation pending review.
…33 locales

Incompatibility guardrail (title/body/why), send-the-app + download path,
one-Android-step note, and the Connect tab strings. Completes Clone/Connect
localization. es reviewed with en; others machine translation pending review.
Wizard content step (editions, coverage/detail, sources, Wikipedia version
picker) plus language names and brand tagline. Completes the redesign l10n:
all K2Go redesign strings are now translatable and present in all 33 locales.
Machine translation; es/en reviewed, others pending human review.
…ources

These rows were passed as literals to SettingsUi.row/preview/caption/
toggle/sectionHeader and the theme/turn-off dialogs, so the earlier
setText-only sweep missed them (menu 'Advanced' stayed English while the
sub-screen title was translated). Extract to @string; ADB and
'Terminal (Debian)' left as-is. English only; locales follow.
…ales

Theme + options, Help, Send feedback, Advanced subtitle, turn-off dialog,
language caption, About rows (version/permissions/usage stats/licenses/
privacy) and the Advanced power-user section. es reviewed with en; others
machine translation pending review.
…weep 2)

Second sweep beyond setText: Clone AlertDialogs (swap, no-library,
copy result, stop sharing) and Toasts, the technical arch line
(format string), plus setText in Step2OptionA, LibraryActivity and
LibraryHomeFragment. OK reuses android.R.string.ok; Cancel reuses
k2go_cancel. English only; locales follow.
Point CloneFragment dialogs+toasts, the technical arch line (format
string), and Step2OptionA/LibraryActivity/LibraryHomeFragment setText
at the new @string keys.
…cales

Clone dialogs (switch/no-library/copy-result/stop-sharing) and toasts,
the technical arch format line, and Step2/Library setText. es reviewed
with en; others machine translation pending review.
Ternary/toggle labels, badges, chooser+scanner prompts, hotspot/Wi-Fi
states, card labels, edition names/descriptions, Step2 formats and the
Step2B name/info arrays (now @string id arrays). Toggle open-states reuse
the closed-state keys. English only; locales follow.
Card labels + statuses, edition names/descriptions, Connect hotspot/Wi-Fi
states, Wi-Fi/password fallback labels, Step2 download format + Step2B
info, Clone ternary/toggle labels, badges, chooser/scanner prompts, and
setup status. es reviewed with en; others machine translation pending review.
Step1/Step2 built the Used/System/(Your )Picks/Free legend via
String.format literals. Extract to positional format strings
(%1$.1f …) and translate. es reviewed with en; others machine.
The per-permission action used literal "Granted"/"Allow". Add
k2go_perm_granted, reuse k2go_perm_allow, and translate across 33 locales.
…Soon badge

backHeader (‹ Send/‹ Receive), the ready-to-scan caption, the receive
step-of-2 subtitle, the paste-code EditText hint (android:hint was missed
by the android:text sweep) and the SettingsUi 'Soon' badge. English only;
locales follow.
…orce-crash

Translate the ‹ Send/‹ Receive back-header, ready-to-scan caption, receive
step-of-2 subtitle, paste-code hint and the SettingsUi Soon badge across 33
locales; also make feedback_force_crash translatable and localize it.
bitsLabel() returned hardcoded '64-bit (arm64-v8a)'/'32-bit
(armeabi-v7a)'/'unknown' shown under Technical details. Move to @string
(bitsLabel is now an instance method); ABI identifiers kept verbatim, the
human part translated across 33 locales. The ABI strings that build the
APK filename and the Log line stay as-is (not user-facing).
Switch the sign's FontAssetDelegate to the system typeface (Noto-based,
global script fallback) so localized words render in any language; add a
TextDelegate mapping OPEN/CLOSED to k2go_sign_open/closed (33 locales).
Widen SIGN_BOARD (246->380 / 216->350) and drop the label font 44->32,
tracking 12->8 so longer translations fit. es reviewed with en; others
machine, CJK/others flagged for review.
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.

1 participant