Skip to content

Feature/missing i18n 2026 02#42

Merged
ottonomy merged 20 commits intomainfrom
feature/missing-i18n-2026-02
Feb 12, 2026
Merged

Feature/missing i18n 2026 02#42
ottonomy merged 20 commits intomainfrom
feature/missing-i18n-2026-02

Conversation

@ottonomy
Copy link
Copy Markdown
Contributor

@ottonomy ottonomy commented Feb 12, 2026

Updates to latest paraglide and fixes #37 . These strings happened to require both pluralization and a little bit more complex approach.


Note

Medium Risk
Touches i18n runtime wiring and the global handle request pipeline, so locale selection and server rendering could regress if Paraglide v2 behavior differs or cookies/org config are malformed; changes are mostly configuration and string-key migration otherwise.

Overview
Upgrades i18n tooling to @inlang/paraglide-js@2 and updates runtime/server integration, including wrapping handle with paraglideMiddleware, switching APIs to setLocale/locales, and injecting the selected locale into src/app.html via %lang%.

Introduces a deterministic locale selection helper (getLanguageForRequest) and adds org-level language defaults via OrganizationConfig.defaultLanguage, so requests resolve locale by cookie → org default → base locale.

Migrates many UI/server strings to new generated Paraglide message keys, adds helper scripts to generate/update key mappings, and updates repo tooling/config (ESLint to TypeScript + eslint-plugin-svelte, Prettier Svelte plugin, Node LTS iron, build now runs prisma generate, plus minor config/formatting ignore tweaks).

Written by Cursor Bugbot for commit 90d189e. This will update automatically on new commits. Configure here.

ottonomy and others added 18 commits February 11, 2026 14:43
… paraglide-js to 2.11.0

Co-authored-by: Cursor <cursoragent@cursor.com>
…aultLanguage to OrganizationConfig type

Co-authored-by: Cursor <cursoragent@cursor.com>
…language selection pure function and tests

Co-authored-by: Cursor <cursoragent@cursor.com>
…hooks to use org default language

Co-authored-by: Cursor <cursoragent@cursor.com>
…nslation keys for endorsements and language names

Co-authored-by: Cursor <cursoragent@cursor.com>
…claims page to use endorsements translation

Co-authored-by: Cursor <cursoragent@cursor.com>
… logInCTA to random pattern key bright_swift_eagle_login

Co-authored-by: Cursor <cursoragent@cursor.com>
Migrate 16 high-frequency CTA button keys from camelCase to random pattern:
- cancelCTA → calm_steady_lynx_cancel
- editCTA → sharp_clear_fox_edit
- submitCTA → bold_swift_eagle_submit
- deleteCTA → firm_steady_boar_delete
- saveCTA → quick_safe_deer_save
- createNewCTA → fresh_bright_sparrow_create
- downloadCTA → swift_steady_falcon_download
- copyCTA → quick_clear_owl_copy
- previewCTA → sharp_quiet_panther_preview
- logOutCTA → calm_steady_lynx_logout
- claimCTA → bold_swift_eagle_claim
- awardCTA → bright_happy_sparrow_award
- awardBadgeCTA → gentle_brave_falcon_award
- endorseFormCTA → warm_tangy_deer_endorseform
- removeCTA → firm_clear_fox_remove
- chooseCTA → bright_swift_eagle_choose

Fixes SSR issues with Paraglide 2.11.0 quoted exports for camelCase keys.

Co-authored-by: Cursor <cursoragent@cursor.com>
Migrate 22 claimConfiguration keys from camelCase to random pattern keys.
Fixes SSR issues with Paraglide 2.11.0 quoted exports.

Co-authored-by: Cursor <cursoragent@cursor.com>
Migrate 9 achievementConfig keys from camelCase to random pattern keys.
Fixes SSR issues with Paraglide 2.11.0 quoted exports.

Co-authored-by: Cursor <cursoragent@cursor.com>
Migrate 13 remaining CTA and description keys from camelCase to random pattern.
Fixes SSR issues with Paraglide 2.11.0 quoted exports.

Co-authored-by: Cursor <cursoragent@cursor.com>
Migrate 25 remaining standalone keys from camelCase to random pattern keys.
Fixes SSR issues with Paraglide 2.11.0 quoted exports.

Co-authored-by: Cursor <cursoragent@cursor.com>
Migrate 193 message keys that didn't match the adjective_adjective_animal_verb pattern to random pattern keys.

- Generated unique random keys for all 193 old keys
- Added new keys to all 4 language files (en-US, en-AU, fr, it)
- Updated 250 code references across 59 files
- Removed all old keys from language files
- All keys now follow consistent random pattern

Fixes SSR compatibility with Paraglide 2.11.0 and ensures consistency.

Co-authored-by: Cursor <cursoragent@cursor.com>
* Use random format for steady namespace complexity level and paraglide 2.0 compatibility
…guage selector to about/edit page

Co-authored-by: Cursor <cursoragent@cursor.com>
…_eagle_rest for Default

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
ottonomy and others added 2 commits February 11, 2026 16:49
Update Node.js version from lts/krypton (22.x) to lts/iron (20.x) for Vercel adapter compatibility until SvelteKit 2.x upgrade.

- Update .nvmrc to lts/iron
- Update GitHub Actions workflow to use lts/iron
- Update README.md prerequisites section

Verified: build, check, and test:unit all pass with Node.js 20.x
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

}

// Output mapping as JSON (only JSON, no other output)
console.log(JSON.stringify(mapping, null, 2));
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One-time migration scripts committed to repository

Low Severity

scripts/generate-key-mapping.cjs and scripts/update-code-references.cjs appear to be one-time migration utilities for the key rename process. They reference a hardcoded /tmp/key-mapping.json path, use a fixed random seed, and aren't referenced in package.json. Unlike the operational scripts in src/scripts/, these serve no ongoing purpose and could confuse future contributors.

Additional Locations (1)

Fix in Cursor Fix in Web

@ottonomy ottonomy merged commit 209be4e into main Feb 12, 2026
3 checks passed
@ottonomy ottonomy deleted the feature/missing-i18n-2026-02 branch February 12, 2026 01:47
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.

Some strings may need internationalization

1 participant