Commit Graph

107 Commits

Author SHA1 Message Date
Mohamad Tarbin
2c82f3f4c0 New translations settings.json (Dutch)
[ci skip]
2026-08-14 01:04:42 -04:00
Mohamad Tarbin
98b2692d07 New translations common.json (Dutch)
[ci skip]
2026-08-14 01:04:41 -04:00
Mohamad Tarbin
e1725e92d4 New translations settings.json (Japanese)
[ci skip]
2026-08-14 01:04:39 -04:00
Mohamad Tarbin
2d8cb79053 New translations common.json (Japanese)
[ci skip]
2026-08-14 01:04:38 -04:00
Mohamad Tarbin
b42c5101b4 New translations settings.json (German)
[ci skip]
2026-08-14 01:04:37 -04:00
Mohamad Tarbin
c73423a5d1 New translations common.json (German)
[ci skip]
2026-08-14 01:04:35 -04:00
Mohamad Tarbin
1eb36ed8e9 New translations auth.json (Arabic)
[ci skip]
2026-08-14 01:04:34 -04:00
Mohamad Tarbin
de1034278e New translations timer.json (Spanish)
[ci skip]
2026-08-14 01:04:33 -04:00
Mohamad Tarbin
a88418fa36 New translations things.json (Spanish)
[ci skip]
2026-08-14 01:04:32 -04:00
Mohamad Tarbin
83ecc89bc5 New translations projects.json (Spanish)
[ci skip]
2026-08-14 01:04:31 -04:00
Mohamad Tarbin
1c89549b01 New translations points.json (Spanish)
[ci skip]
2026-08-14 01:04:30 -04:00
Mohamad Tarbin
62e401e215 New translations labels.json (Spanish)
[ci skip]
2026-08-14 01:04:29 -04:00
Mohamad Tarbin
b75527fe6c New translations history.json (Spanish)
[ci skip]
2026-08-14 01:04:28 -04:00
Mohamad Tarbin
8d6874072e New translations filters.json (Spanish)
[ci skip]
2026-08-14 01:04:26 -04:00
Mohamad Tarbin
0b6f9b581b New translations auth.json (Spanish)
[ci skip]
2026-08-14 01:04:25 -04:00
Mohamad Tarbin
9848adf8c8 New translations timer.json (French)
[ci skip]
2026-08-14 01:04:24 -04:00
Mohamad Tarbin
44647c4e38 New translations things.json (French)
[ci skip]
2026-08-14 01:04:23 -04:00
Mohamad Tarbin
36d33bba48 New translations projects.json (French)
[ci skip]
2026-08-14 01:04:22 -04:00
Mohamad Tarbin
9d9b4a37fb New translations points.json (French)
[ci skip]
2026-08-14 01:04:21 -04:00
Mohamad Tarbin
e0949a9c33 New translations labels.json (French)
[ci skip]
2026-08-14 01:04:20 -04:00
Mohamad Tarbin
a2fd65234b New translations history.json (French)
[ci skip]
2026-08-14 01:04:19 -04:00
Mohamad Tarbin
98693961d4 New translations filters.json (French)
[ci skip]
2026-08-14 01:04:18 -04:00
Mohamad Tarbin
b4512a6cbc New translations auth.json (French)
[ci skip]
2026-08-14 01:04:17 -04:00
Mohamad Tarbin
b98c097b34 New translations chores.json (Arabic)
[ci skip]
2026-08-14 01:04:15 -04:00
Mohamad Tarbin
fa4c11b2ee New translations chores.json (Spanish)
[ci skip]
2026-08-14 01:04:14 -04:00
Mohamad Tarbin
4f0f9e25c5 New translations settings.json (French)
[ci skip]
2026-08-14 01:04:13 -04:00
Mohamad Tarbin
328dcac0e4 New translations chores.json (French)
[ci skip]
2026-08-14 01:04:12 -04:00
Mohamad Tarbin
56a5b49fca New translations settings.json (Arabic)
[ci skip]
2026-08-14 01:04:11 -04:00
Mohamad Tarbin
0669ee9499 New translations common.json (Arabic)
[ci skip]
2026-08-14 01:04:09 -04:00
Mohamad Tarbin
64cd0baa5e New translations settings.json (Spanish)
[ci skip]
2026-08-14 01:04:08 -04:00
Mohamad Tarbin
9860e9d25a New translations common.json (Spanish)
[ci skip]
2026-08-14 01:04:06 -04:00
Mohamad Tarbin
f9c2539fbb New translations common.json (French)
[ci skip]
2026-08-14 01:04:05 -04:00
Mohamad Tarbin
677376983b Merge pull request #207 from donetick/l10n_develop
New Crowdin updates
2026-08-13 19:44:42 -04:00
Mohamad Tarbin
2918eda784 Merge pull request #211 from everysingletear/i18n/settings-remainder
i18n: extract the settings screens not covered by 8c9bf0d (Part of #145)
2026-08-13 19:40:49 -04:00
Mohamad Tarbin
da1c8f1068 Merge branch 'develop' into i18n/new-namespaces 2026-08-13 19:35:17 -04:00
Mohamad Tarbin
8b33ba7c5d Merge pull request #209 from everysingletear/i18n/common
i18n: extract shared strings into the existing `common` namespace (Part of #145)
2026-08-13 19:32:47 -04:00
Mohamad Tarbin
323ffe72a0 Merge pull request #208 from everysingletear/i18n/auth-v2
i18n: extract Authorization screens into a new `auth` namespace (Part of #145)
2026-08-13 19:31:56 -04:00
Mohamad Tarbin
081942a6cd Merge branch 'develop' into 0811-fixes 2026-08-13 19:28:48 -04:00
Mohamad Tarbin
2c31919533 New translations common.json (French)
[ci skip]
2026-08-13 12:57:37 -04:00
everysingletear
72aa57f018 i18n: extract things, history, projects, labels, filters, timer and points
Part of #145.

Fourteen files across seven feature areas that had no namespace yet: the
things create/edit modals and their history, the chore history detail and
edit modals, the activity feed, the points view and its redemption modal,
the project view with its selector and icon picker, the label view, the
advanced filter builder and the timer edit modal.

Seven new namespaces registered in `src/i18n/config.js` in one change
rather than one per PR, so the `ns:` array is touched once and my other
extraction PRs cannot conflict with this one. Namespaces stay
feature-scoped as described in #145; if you'd rather fold any of these
into `common` or `chores`, say which and I'll rework it.

Dictionaries: `history` 57 keys, `points` 50, `timer` 25, `projects` 16,
`things` 14, `filters` 13, `labels` 5.

English only — no translations, no behaviour change. Every t() value is
checked against this branch's base: the string must appear
character-for-character in the code it replaces (226 call sites).

Three values in `UserPoints` are matched loosely and worth naming. The
base builds the leaderboard heading and subtitle around a ternary —
`{mode === 'points' ? 'Points' : 'Tasks'} Leaderboard` and `Rankings based
on {…} during the selected time period` — so neither full sentence exists
contiguously in the source. Each key holds exactly what one branch
renders. The sentences are kept whole rather than split around the
ternary, since a sentence assembled from fragments cannot be reordered by
a translator.
2026-08-13 10:21:57 +08:00
everysingletear
0e98a556da i18n: extract the settings screens your pass didn't reach (settings)
Part of #145.

`8c9bf0d` localized the settings views themselves; these eight files sit
in the same zone but were not in that pass: the subscription modal, the
child-user creation and password-change modals, both payment result
views, developer settings, and the backup/restore and account-deletion
modals.

Extends the `settings` namespace you established, following its key
naming — 59 keys added to `en/settings.json`. `src/i18n/config.js` is
untouched.

English only — no translations, no behaviour change. Every t() value is
checked against this branch's base: the string must appear
character-for-character in the code it replaces (71 call sites).

One deliberate structural detail: in `BackupRestoreModal` the warning
reads `<strong>Warning:</strong> Restoring a backup will…`. The label and
the sentence are separate keys and the `<strong>` stays in the JSX, so the
emphasis survives and no markup ends up in the dictionary.

If you'd rather keep developer settings hardcoded, say so and I'll drop
that file — it is the one screen here an end user never sees.
2026-08-13 10:18:10 +08:00
everysingletear
bdac10ac57 i18n: extract shared strings into the existing common namespace
Part of #145.

Fourteen files whose user-facing strings are generic enough to belong in
`common` — loading and empty states, the confirmation modal, the shared
input modals (text/date/user/attachment viewer), the mobile nav bar, the
autocomplete input, the error screen and the file-upload error paths.

Extends the namespace that already exists, so `src/i18n/config.js` is
untouched and this cannot collide with any other extraction PR over the
`ns:` array. 28 keys added to `public/locales/en/common.json`.

English only — no translations, no behaviour change. Every t() value is
checked against this branch's base: the string must appear
character-for-character in the code it replaces (36 call sites).

One value is matched loosely and worth naming: `errorScreen.hideDetails`.
The base renders `{showDetails ? 'Hide' : 'Show'} error details`, so
neither full phrase exists contiguously in the source — only one branch of
the ternary can. Both keys hold exactly what each branch renders. The
sentence is kept whole rather than split around the ternary, because a
split sentence cannot be reordered by a translator.
2026-08-13 10:16:14 +08:00
everysingletear
6dc7c3d370 i18n: extract Authorization screens into a new auth namespace
Every user-facing string under src/views/Authorization/ moves to i18next.
English only — no translations in this PR, so it is language-agnostic and
reviewable as a pure refactor.

Covered:
- LoginView — primary/sub-account tabs, credential form, social and
  Authentik buttons, welcome-back state, every auth error toast
- Signup — account creation form and each field-validation message
- ForgotPasswordView / UpdatePasswordView — reset flow and its toasts
- Authenticating — the OAuth landing screen, including its MFA branches
- MFAVerificationModal — code entry, backup codes, error states
- AuthFields / LoginSettings — shared field labels and server settings

`auth` is registered in src/i18n/config.js; public/locales/en/auth.json
holds the 103 keys. The Crowdin config picks up /public/locales/en/*.json
by glob, so the namespace flows into the pipeline with no change to
crowdin.yml.

No behaviour change: every t() value is the string that rendered before,
character for character — checked mechanically against this branch's base.
The e2e suite selects auth controls by visible text ('Create account',
'Username must be at least 4 characters'), so a green run is the proof.

Two fixes fell out of the extraction:
- AuthPasswordField had label='Password' as a prop default, so neither
  LoginView nor Signup passed one. A default cannot be translated at module
  scope, so the label moves to the call sites and both now pass it.
- AuthDivider defaulted children to 'or' for the same reason; it now falls
  back to t('or').
2026-08-12 20:03:02 +08:00
Mohamad Tarbin
0de0d3ebc0 New translations settings.json (Chinese Simplified)
[ci skip]
2026-08-11 23:05:23 -04:00
Mohamad Tarbin
41c58505fa Merge branch 'develop' into l10n_develop 2026-08-11 21:45:30 -04:00
Mo Tarbin
fb4d4efe66 Add report bug functionality and settings sections refactor 2026-08-11 17:42:23 -04:00
Mohamad Tarbin
5c9afa0b6e New translations settings.json (French)
[ci skip]
2026-08-11 10:50:28 -04:00
Mohamad Tarbin
e2816bc54d New translations settings.json (Portuguese, Brazilian)
[ci skip]
2026-08-11 10:50:26 -04:00
Mohamad Tarbin
9b71ce910b New translations common.json (Portuguese, Brazilian)
[ci skip]
2026-08-11 10:50:24 -04:00
Mohamad Tarbin
946190c9e0 New translations settings.json (Chinese Simplified)
[ci skip]
2026-08-11 10:50:23 -04:00