New Crowdin updates#497
Conversation
📝 WalkthroughWalkthroughAdded and updated localization strings across many frontend locale JSON files: introduced an authorization/consent keyset ( Changes
Sequence Diagram(s)(omitted) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #497 +/- ##
==========================================
- Coverage 23.62% 19.12% -4.50%
==========================================
Files 36 39 +3
Lines 2239 2295 +56
==========================================
- Hits 529 439 -90
- Misses 1673 1828 +155
+ Partials 37 28 -9 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Actionable comments posted: 2
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
frontend/src/lib/i18n/locales/hu-HU.json(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Analyze (go)
| "loginTitle": "Welcome back, login with", | ||
| "loginTitleSimple": "Welcome back, please login", | ||
| "loginDivider": "Or", | ||
| "loginUsername": "Username", | ||
| "loginPassword": "Password", | ||
| "loginSubmit": "Login", | ||
| "loginFailTitle": "Failed to log in", | ||
| "loginFailSubtitle": "Please check your username and password", | ||
| "loginFailRateLimit": "You failed to login too many times. Please try again later", | ||
| "loginSuccessTitle": "Logged in", | ||
| "loginSuccessSubtitle": "Welcome back!", | ||
| "loginTitleSimple": "Üdvözöljük, kérem jelentkezzen be", | ||
| "loginDivider": "Vagy", |
There was a problem hiding this comment.
Hungarian locale is still partially English (mixed-language UX)
loginTitle is still English while adjacent login strings are Hungarian; same pattern appears elsewhere (OAuth/continue/logout/not-found/TOTP/unauthorized sections). If this locale is intended to be fully localized, please translate the remaining English values or confirm this is an intentional incremental Crowdin sync.
🤖 Prompt for AI Agents
In frontend/src/lib/i18n/locales/hu-HU.json around lines 2–4, the "loginTitle"
value is still English while adjacent keys are Hungarian; update "loginTitle" to
the correct Hungarian translation, then scan the rest of hu-HU.json for other
remaining English strings (OAuth/continue/logout/not-found/TOTP/unauthorized
sections mentioned) and replace them with proper Hungarian translations or mark
them as intentionally untranslated; after changes, validate the JSON, run the
i18n/localization checks (or linter) and add a short commit message indicating
the translation fixes or that the mixed-language state is intentional for a
Crowdin sync.
| "loginFailTitle": "Sikertelen bejelentkezés", | ||
| "loginFailSubtitle": "Kérjük, ellenőrizze a felhasználónevét és jelszavát", | ||
| "loginFailRateLimit": "Túl sokszor próbálkoztál bejelentkezni. Próbáld újra később", | ||
| "loginSuccessTitle": "Bejelentkezve", | ||
| "loginSuccessSubtitle": "Üdvözöljük!", |
There was a problem hiding this comment.
Inconsistent formality (“tegezés” vs “magázás”) across translations
Examples: loginFailRateLimit uses informal (“próbálkoztál / próbáld”), while logoutFailSubtitle / unauthorizedButton use formal (“Próbálja”), and logoutSuccessSubtitle is informal (“Kijelentkeztél”). Please standardize tone (either consistently informal or formal) for Hungarian UI strings.
Also applies to: 28-32, 49-56
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
frontend/src/lib/i18n/locales/de-DE.json(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Analyze (go)
🔇 Additional comments (3)
frontend/src/lib/i18n/locales/de-DE.json (3)
17-19: LGTM!The OAuth auto-redirect translations are grammatically correct and maintain consistent formal address ("Sie" form).
23-27: LGTM!The redirect-related translations are properly localized and grammatically correct.
56-61: LGTM!The field validation and domain warning translations are accurate and grammatically correct.
| "loginSubmit": "Anmelden", | ||
| "loginFailTitle": "Login fehlgeschlagen", | ||
| "loginFailSubtitle": "Bitte überprüfe deinen Benutzernamen und Passwort", | ||
| "loginFailSubtitle": "Bitte überprüfe Sie Ihren Benutzernamen und Passwort", |
There was a problem hiding this comment.
Grammatical error: verb conjugation mismatch.
"überprüfe Sie" incorrectly mixes the informal verb form ("überprüfe") with the formal pronoun ("Sie"). For consistency with the formal address used elsewhere, it should be "überprüfen Sie".
🔎 Apply this diff to fix the grammar:
- "loginFailSubtitle": "Bitte überprüfe Sie Ihren Benutzernamen und Passwort",
+ "loginFailSubtitle": "Bitte überprüfen Sie Ihren Benutzernamen und Ihr Passwort",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "loginFailSubtitle": "Bitte überprüfe Sie Ihren Benutzernamen und Passwort", | |
| "loginFailSubtitle": "Bitte überprüfen Sie Ihren Benutzernamen und Ihr Passwort", |
🤖 Prompt for AI Agents
In frontend/src/lib/i18n/locales/de-DE.json around line 9, the German string
uses incorrect verb conjugation "überprüfe Sie"; replace that phrase with the
formal imperative "überprüfen Sie" so the entry becomes grammatically correct
(i.e., change "Bitte überprüfe Sie Ihren Benutzernamen und Passwort" to "Bitte
überprüfen Sie Ihren Benutzernamen und Passwort").
There was a problem hiding this comment.
Actionable comments posted: 20
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
frontend/src/lib/i18n/locales/ja-JP.json (1)
1-81:⚠️ Potential issue | 🟡 MinorAll strings in the
ja-JPlocale file are in English — no Japanese translations present.Every key in this file, including all 22 newly added ones, contains English text rather than Japanese. This effectively means Japanese users will see the same text as the English locale, defeating the purpose of the
ja-JPfile.If this is an intentional step in the Crowdin workflow (adding keys now, translating later), please confirm. Otherwise, this file should contain actual Japanese translations before merging.
frontend/src/lib/i18n/locales/ko-KR.json (1)
1-81:⚠️ Potential issue | 🟡 MinorAll strings in
ko-KR.jsonare in English — no Korean translations present.Every value in this Korean locale file, both existing and newly added, is in English. If this is intentional (e.g., Crowdin syncing untranslated source strings as placeholders), this is fine as a starting point. However, if this file is expected to contain actual Korean translations, then the Crowdin sync may not be working correctly for this locale.
Please verify whether Korean translations are pending or if there's a configuration issue with Crowdin for this language.
frontend/src/lib/i18n/locales/he-IL.json (1)
1-81:⚠️ Potential issue | 🟡 MinorAll strings in the Hebrew (he-IL) locale are in English — translations missing.
Every value in this file, including both the pre-existing and newly added keys, is in English rather than Hebrew. Since this is a Crowdin-generated PR, these are likely source-language placeholders awaiting translation. If the intent is to merge now and translate later, this is fine as a fallback, but users with Hebrew selected will see English text for the entire UI.
🤖 Fix all issues with AI agents
In `@frontend/src/lib/i18n/locales/ca-ES.json`:
- Around line 54-80: The locale file ca-ES.json currently contains English text
for keys such as "errorSubtitleInfo", "errorSubtitle", "forgotPasswordMessage",
"fieldRequired", "invalidInput", "domainWarningTitle", "domainWarningSubtitle",
"ignoreTitle", "goToCorrectDomainTitle", "authorizeTitle", "authorizeCardTitle",
"authorizeSubtitle", "authorizeSubtitleOAuth", "authorizeLoadingTitle",
"authorizeLoadingSubtitle", "authorizeSuccessTitle", "authorizeSuccessSubtitle",
"authorizeErrorClientInfo", "authorizeErrorMissingParams", "openidScopeName",
"openidScopeDescription", "emailScopeName", "emailScopeDescription",
"profileScopeName", "profileScopeDescription", and
"groupsScopeName"/"groupsScopeDescription"; replace each English string with the
correct Catalan translation for those keys (or, if these are intended
placeholders for later translation, add a clear comment/marker or use Crowdin
placeholder values to indicate they are untranslated) so the ca-ES.json file
contains proper Catalan entries before release.
In `@frontend/src/lib/i18n/locales/cs-CZ.json`:
- Around line 54-80: The Czech locale file left many values in English; update
the keys errorSubtitleInfo, domainWarningTitle/subtitle if needed, ignoreTitle,
goToCorrectDomainTitle, authorizeTitle, authorizeCardTitle, authorizeSubtitle,
authorizeSubtitleOAuth, authorizeLoadingTitle, authorizeLoadingSubtitle,
authorizeSuccessTitle, authorizeSuccessSubtitle, authorizeErrorClientInfo,
authorizeErrorMissingParams, openidScopeName, openidScopeDescription,
emailScopeName, emailScopeDescription, profileScopeName,
profileScopeDescription, groupsScopeName, and groupsScopeDescription with proper
Czech translations; preserve interpolation tokens like {{app}} and
{{missingParams}} and any HTML markup such as <code> exactly as-is, keep JSON
string escaping valid, and ensure you update the values in the cs-CZ.json object
(e.g., keys authorizeCardTitle, authorizeErrorMissingParams) rather than adding
new keys or changing key names.
In `@frontend/src/lib/i18n/locales/da-DK.json`:
- Around line 54-80: Several newly added i18n keys in the Danish locale are
still in English; update the values for errorSubtitleInfo, errorSubtitle,
forgotPasswordMessage, fieldRequired, invalidInput, domainWarningTitle,
domainWarningSubtitle, ignoreTitle, goToCorrectDomainTitle, authorizeTitle,
authorizeCardTitle, authorizeSubtitle, authorizeSubtitleOAuth,
authorizeLoadingTitle, authorizeLoadingSubtitle, authorizeSuccessTitle,
authorizeSuccessSubtitle, authorizeErrorClientInfo, authorizeErrorMissingParams,
openidScopeName, openidScopeDescription, emailScopeName, emailScopeDescription,
profileScopeName, profileScopeDescription, groupsScopeName, and
groupsScopeDescription with proper Danish translations, preserving all
placeholders (e.g., {{appUrl}}, {{currentUrl}}, {{app}}, {{missingParams}}) and
inline markup/backticks exactly as in the originals so templates continue to
render correctly.
In `@frontend/src/lib/i18n/locales/es-ES.json`:
- Line 54: Several keys in the Spanish locale file are still in English (e.g.,
"errorSubtitleInfo" and keys from "authorizeTitle" through
"groupsScopeDescription"); update their values to proper Spanish translations or
mark them as intentionally pending translation. Open
frontend/src/lib/i18n/locales/es-ES.json, locate the keys errorSubtitleInfo and
authorizeTitle ... groupsScopeDescription, and replace the English strings with
accurate Spanish translations (or add a clear TODO comment/metadata indicating
they are queued for Crowdin) so the es-ES locale contains Spanish text or an
explicit fallback note.
In `@frontend/src/lib/i18n/locales/it-IT.json`:
- Around line 54-55: The listed keys are still in English and need Italian
translations: replace the values for "errorSubtitleInfo", "errorSubtitle" and
the block from "authorizeTitle" through "groupsScopeDescription" with proper
Italian text; locate these keys (errorSubtitleInfo, errorSubtitle,
authorizeTitle, authorizeDescription, authorizeConfirm, authorizeCancel,
authorizeScopesTitle, emailScopeDescription, profileScopeDescription,
groupsScopeDescription) in the it-IT locale and provide accurate Italian
translations, preserving punctuation, capitalization and any
interpolation/placeholders exactly as in the originals.
In `@frontend/src/lib/i18n/locales/nl-NL.json`:
- Line 55: The Dutch locale contains an untranslated English value for the key
"errorSubtitle" in nl-NL.json; replace the English string with an appropriate
Dutch translation (for example: "Er is een fout opgetreden bij het uitvoeren van
deze actie. Controleer de console voor meer informatie.") by updating the
"errorSubtitle" value so it matches the surrounding translated keys.
In `@frontend/src/lib/i18n/locales/no-NO.json`:
- Around line 62-80: The no-NO locale file currently contains English values for
keys such as "goToCorrectDomainTitle", "authorizeTitle", "authorizeCardTitle",
"authorizeSubtitle", "authorizeSubtitleOAuth", "authorizeLoadingTitle",
"authorizeLoadingSubtitle", "authorizeSuccessTitle", "authorizeSuccessSubtitle",
"authorizeErrorClientInfo", "authorizeErrorMissingParams", "openidScopeName",
"openidScopeDescription", "emailScopeName", "emailScopeDescription",
"profileScopeName", "profileScopeDescription", and
"groupsScopeName"/"groupsScopeDescription"; replace each English string with
proper Norwegian Bokmål translations for these keys (or, if you intend this to
be a placeholder until Crowdin provides translations, add a clear comment/flag
in the file indicating it is a placeholder and should not be treated as a
complete translation set) so the no-NO.json contains real Norwegian values or an
explicit placeholder marker.
In `@frontend/src/lib/i18n/locales/pt-BR.json`:
- Line 54: The pt-BR locale key "errorSubtitleInfo" currently contains an
English string; update its value to a proper Brazilian Portuguese translation
(e.g., "Ocorreu o seguinte erro ao processar sua solicitação:"), replacing the
English text so the pt-BR.json entry for errorSubtitleInfo is fully translated.
- Around line 63-80: Translate the untranslated English strings in the pt-BR
locale for the authorization and scope block: replace values for keys
authorizeTitle, authorizeCardTitle, authorizeSubtitle, authorizeSubtitleOAuth,
authorizeLoadingTitle, authorizeLoadingSubtitle, authorizeSuccessTitle,
authorizeSuccessSubtitle, authorizeErrorClientInfo, authorizeErrorMissingParams,
openidScopeName, openidScopeDescription, emailScopeName, emailScopeDescription,
profileScopeName, profileScopeDescription, groupsScopeName, and
groupsScopeDescription with accurate Brazilian Portuguese translations
preserving interpolation tokens like {{app}} and {{missingParams}} and keeping
punctuation and capitalization consistent with the rest of the file.
In `@frontend/src/lib/i18n/locales/ro-RO.json`:
- Around line 54-80: The ro-RO locale file currently contains English text for
every key (e.g., "errorSubtitleInfo", "forgotPasswordMessage",
"authorizeSubtitleOAuth", "openidScopeDescription", "groupsScopeDescription");
replace each English value with the correct Romanian translation for those keys
(or mark them explicitly as TODO/untranslated if you intend to keep
scaffolding), ensuring translations cover all keys in the diff
(errorSubtitleInfo, errorSubtitle, forgotPasswordMessage, fieldRequired,
invalidInput, domainWarningTitle, domainWarningSubtitle, ignoreTitle,
goToCorrectDomainTitle, authorizeTitle, authorizeCardTitle, authorizeSubtitle,
authorizeSubtitleOAuth, authorizeLoadingTitle, authorizeLoadingSubtitle,
authorizeSuccessTitle, authorizeSuccessSubtitle, authorizeErrorClientInfo,
authorizeErrorMissingParams, openidScopeName, openidScopeDescription,
emailScopeName, emailScopeDescription, profileScopeName,
profileScopeDescription, groupsScopeName, groupsScopeDescription) so Romanian
users see localized UI or the file clearly indicates it’s intentionally
untranslated.
In `@frontend/src/lib/i18n/locales/ru-RU.json`:
- Around line 54-80: The Russian locale contains several untranslated English
strings; replace them with Russian translations for keys errorSubtitleInfo,
authorizeTitle, authorizeCardTitle (preserve {{app}}), authorizeSubtitle,
authorizeSubtitleOAuth, authorizeLoadingTitle, authorizeLoadingSubtitle,
authorizeSuccessTitle, authorizeSuccessSubtitle, authorizeErrorClientInfo,
authorizeErrorMissingParams (preserve {{missingParams}}), and the scope keys
openidScopeName, openidScopeDescription, emailScopeName, emailScopeDescription,
profileScopeName, profileScopeDescription, groupsScopeName,
groupsScopeDescription so the UI is fully localized for ru-RU; ensure
placeholders like {{app}} and {{missingParams}} are kept intact and phrasing
matches existing Russian tone.
In `@frontend/src/lib/i18n/locales/sr-SP.json`:
- Around line 54-80: The new localization keys (errorSubtitleInfo,
goToCorrectDomainTitle, authorizeTitle, authorizeCardTitle, authorizeSubtitle,
authorizeSubtitleOAuth, authorizeLoadingTitle, authorizeLoadingSubtitle,
authorizeSuccessTitle, authorizeSuccessSubtitle, authorizeErrorClientInfo,
authorizeErrorMissingParams, openidScopeName, openidScopeDescription,
emailScopeName, emailScopeDescription, profileScopeName,
profileScopeDescription, groupsScopeName, groupsScopeDescription) are still in
English; update their values to Serbian or add them to the Crowdin translation
queue so translators can provide Serbian strings—ensure you modify the JSON
entries (e.g., "errorSubtitleInfo": "...") with the translated text or mark them
for translation in the i18n workflow.
In `@frontend/src/lib/i18n/locales/sv-SE.json`:
- Around line 54-80: The Swedish locale file contains many untranslated English
strings (e.g., "errorSubtitleInfo", "errorSubtitle", "forgotPasswordMessage",
"fieldRequired", "invalidInput", "domainWarningTitle", "domainWarningSubtitle",
"ignoreTitle", "goToCorrectDomainTitle", "authorizeTitle", "authorizeCardTitle",
"authorizeSubtitle", "authorizeSubtitleOAuth", "authorizeLoadingTitle",
"authorizeLoadingSubtitle", "authorizeSuccessTitle", "authorizeSuccessSubtitle",
"authorizeErrorClientInfo", "authorizeErrorMissingParams", "openidScopeName",
"openidScopeDescription", "emailScopeName", "emailScopeDescription",
"profileScopeName", "profileScopeDescription", "groupsScopeName",
"groupsScopeDescription") that need Swedish translations; replace the English
values with proper Swedish translations for each key or confirm they are
submitted to the translation pipeline (Crowdin) and add placeholder markers if
necessary so the app can detect untranslated entries, then commit the updated
sv-SE.json with translated strings or translation-status markers.
In `@frontend/src/lib/i18n/locales/tr-TR.json`:
- Around line 54-55: The two keys errorSubtitleInfo and errorSubtitle in the
Turkish locale still contain English text; update their values to proper Turkish
translations so the tr-TR.json is consistent (replace the English strings for
errorSubtitleInfo and errorSubtitle with appropriate Turkish sentences conveying
"The following error occurred while processing your request:" and "An error
occurred while trying to perform this action. Please check the console for more
information.").
- Around line 63-80: The Turkish locale file contains untranslated English
strings for the authorize and scope entries; replace the values for keys
authorizeTitle, authorizeCardTitle, authorizeSubtitle, authorizeSubtitleOAuth,
authorizeLoadingTitle, authorizeLoadingSubtitle, authorizeSuccessTitle,
authorizeSuccessSubtitle, authorizeErrorClientInfo, authorizeErrorMissingParams,
openidScopeName, openidScopeDescription, emailScopeName, emailScopeDescription,
profileScopeName, profileScopeDescription, groupsScopeName, and
groupsScopeDescription with proper Turkish translations, preserving any
placeholders like {{app}} and {{missingParams}} exactly as-is and keeping
punctuation and capitalization consistent with the rest of the file.
- Line 25: The translation string continueInsecureRedirectSubtitle currently
reads "from <code>http</code> to <code>http</code>" which is incorrect; update
the value for continueInsecureRedirectSubtitle in tr-TR.json so the source
protocol is <code>https</code> (i.e., change the first <code>http</code> to
<code>https</code>) to match the English source and other locales.
In `@frontend/src/lib/i18n/locales/uk-UA.json`:
- Around line 54-55: The Ukrainian locale file has untranslated English values
for keys errorSubtitleInfo, errorSubtitle, authorizeTitle, authorizeSubtitle,
authorizeConfirm, authorizeCancel, authorizeCheckbox, scopesTitle, scopeMessages
(and the specific scope keys docsScope, filesScope, tokensScope, groupsScope,
groupsScopeDescription); replace the English strings for these keys with
accurate Ukrainian translations, preserving the JSON key names and punctuation,
ensuring proper UTF-8 encoding/escaping and trailing commas remain valid JSON,
and run the i18n/locale lint or build to verify no syntax or missing-key errors.
In `@frontend/src/lib/i18n/locales/vi-VN.json`:
- Around line 54-80: Most new keys in vi-VN.json (e.g., "errorSubtitleInfo",
"authorizeTitle", "authorizeCardTitle", "authorizeSubtitle",
"authorizeSubtitleOAuth", "authorizeLoadingTitle", "authorizeLoadingSubtitle",
"authorizeSuccessTitle", "authorizeSuccessSubtitle", "authorizeErrorClientInfo",
"authorizeErrorMissingParams", "openidScopeName", "openidScopeDescription",
"emailScopeName", "emailScopeDescription", "profileScopeName",
"profileScopeDescription", "groupsScopeName", "groupsScopeDescription") are
still in English; replace those values with proper Vietnamese translations or
explicitly mark them for translation in Crowdin so they don't ship untranslated,
and confirm the Crowdin config will ingest this vi-VN.json path (or add the keys
to the Crowdin source) so translators see them.
In `@frontend/src/lib/i18n/locales/zh-CN.json`:
- Line 54: The zh-CN locale file contains untranslated English values for keys
like "errorSubtitleInfo", "authorizeTitle", "authorizeCardTitle" and the
scope-related keys (lines ~63-80); update each of these keys in
frontend/src/lib/i18n/locales/zh-CN.json with appropriate Simplified Chinese
translations (or replace with a clear TODO/placeholder marker if you
intentionally defer translation) and ensure you add them to your translation
tracking (e.g., Crowdin) so they don’t ship untranslated.
In `@frontend/src/lib/i18n/locales/zh-TW.json`:
- Around line 54-80: Several keys in zh-TW are still English (e.g.,
"errorSubtitleInfo" and the
authorize*/openidScope*/emailScope*/profileScope*/groupsScope* keys); either
provide Traditional Chinese translations for those keys ("errorSubtitleInfo",
"authorizeTitle", "authorizeCardTitle", "authorizeSubtitle",
"authorizeSubtitleOAuth", "authorizeLoadingTitle", "authorizeLoadingSubtitle",
"authorizeSuccessTitle", "authorizeSuccessSubtitle", "authorizeErrorClientInfo",
"authorizeErrorMissingParams", "openidScopeName", "openidScopeDescription",
"emailScopeName", "emailScopeDescription", "profileScopeName",
"profileScopeDescription", "groupsScopeName", "groupsScopeDescription") or
remove those entries from the zh-TW JSON so i18next can fall back to the default
locale until proper translations are available. Ensure any replacements use
correct Traditional Chinese phrasing and keep interpolation tokens like {{app}}
and {{missingParams}} intact.
| "errorSubtitleInfo": "The following error occurred while processing your request:", | ||
| "errorSubtitle": "An error occurred while trying to perform this action. Please check the console for more information.", | ||
| "forgotPasswordMessage": "You can reset your password by changing the `USERS` environment variable.", | ||
| "fieldRequired": "This field is required", | ||
| "invalidInput": "Invalid input", | ||
| "domainWarningTitle": "Invalid Domain", | ||
| "domainWarningSubtitle": "This instance is configured to be accessed from <code>{{appUrl}}</code>, but <code>{{currentUrl}}</code> is being used. If you proceed, you may encounter issues with authentication.", | ||
| "ignoreTitle": "Ignore", | ||
| "goToCorrectDomainTitle": "Go to correct domain" | ||
| } No newline at end of file | ||
| "goToCorrectDomainTitle": "Go to correct domain", | ||
| "authorizeTitle": "Authorize", | ||
| "authorizeCardTitle": "Continue to {{app}}?", | ||
| "authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.", | ||
| "authorizeSubtitleOAuth": "Would you like to continue to this app?", | ||
| "authorizeLoadingTitle": "Loading...", | ||
| "authorizeLoadingSubtitle": "Please wait while we load the client information.", | ||
| "authorizeSuccessTitle": "Authorized", | ||
| "authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.", | ||
| "authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.", | ||
| "authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}", | ||
| "openidScopeName": "OpenID Connect", | ||
| "openidScopeDescription": "Allows the app to access your OpenID Connect information.", | ||
| "emailScopeName": "Email", | ||
| "emailScopeDescription": "Allows the app to access your email address.", | ||
| "profileScopeName": "Profile", | ||
| "profileScopeDescription": "Allows the app to access your profile information.", | ||
| "groupsScopeName": "Groups", | ||
| "groupsScopeDescription": "Allows the app to access your group information." |
There was a problem hiding this comment.
All new strings are in English — Catalan translations pending.
Every string in this ca-ES.json file (both existing and newly added) is in English rather than Catalan. If this is intentional as a Crowdin placeholder awaiting translation, no action is needed. Otherwise, ensure the Catalan translations are provided before release.
🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/ca-ES.json` around lines 54 - 80, The locale
file ca-ES.json currently contains English text for keys such as
"errorSubtitleInfo", "errorSubtitle", "forgotPasswordMessage", "fieldRequired",
"invalidInput", "domainWarningTitle", "domainWarningSubtitle", "ignoreTitle",
"goToCorrectDomainTitle", "authorizeTitle", "authorizeCardTitle",
"authorizeSubtitle", "authorizeSubtitleOAuth", "authorizeLoadingTitle",
"authorizeLoadingSubtitle", "authorizeSuccessTitle", "authorizeSuccessSubtitle",
"authorizeErrorClientInfo", "authorizeErrorMissingParams", "openidScopeName",
"openidScopeDescription", "emailScopeName", "emailScopeDescription",
"profileScopeName", "profileScopeDescription", and
"groupsScopeName"/"groupsScopeDescription"; replace each English string with the
correct Catalan translation for those keys (or, if these are intended
placeholders for later translation, add a clear comment/marker or use Crowdin
placeholder values to indicate they are untranslated) so the ca-ES.json file
contains proper Catalan entries before release.
| "errorSubtitleInfo": "The following error occurred while processing your request:", | ||
| "errorSubtitle": "Nastala chyba při pokusu o provedení této akce. Pro více informací prosím zkontrolujte konzolu.", | ||
| "forgotPasswordMessage": "Heslo můžete obnovit změnou proměnné `USERS`.", | ||
| "fieldRequired": "Toto pole je povinné", | ||
| "invalidInput": "Neplatný údaj", | ||
| "domainWarningTitle": "Invalid Domain", | ||
| "domainWarningSubtitle": "This instance is configured to be accessed from <code>{{appUrl}}</code>, but <code>{{currentUrl}}</code> is being used. If you proceed, you may encounter issues with authentication.", | ||
| "ignoreTitle": "Ignore", | ||
| "goToCorrectDomainTitle": "Go to correct domain" | ||
| } No newline at end of file | ||
| "goToCorrectDomainTitle": "Go to correct domain", | ||
| "authorizeTitle": "Authorize", | ||
| "authorizeCardTitle": "Continue to {{app}}?", | ||
| "authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.", | ||
| "authorizeSubtitleOAuth": "Would you like to continue to this app?", | ||
| "authorizeLoadingTitle": "Loading...", | ||
| "authorizeLoadingSubtitle": "Please wait while we load the client information.", | ||
| "authorizeSuccessTitle": "Authorized", | ||
| "authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.", | ||
| "authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.", | ||
| "authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}", | ||
| "openidScopeName": "OpenID Connect", | ||
| "openidScopeDescription": "Allows the app to access your OpenID Connect information.", | ||
| "emailScopeName": "Email", | ||
| "emailScopeDescription": "Allows the app to access your email address.", | ||
| "profileScopeName": "Profile", | ||
| "profileScopeDescription": "Allows the app to access your profile information.", | ||
| "groupsScopeName": "Groups", | ||
| "groupsScopeDescription": "Allows the app to access your group information." |
There was a problem hiding this comment.
Nearly all new keys are untranslated (English) in the Czech locale.
errorSubtitleInfo (Line 54) and all authorize*/scope keys (Lines 63–80) remain in English. Only loginOauthAutoRedirectTitle (Line 17) received an actual Czech translation in this update. These should be localized to Czech.
🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/cs-CZ.json` around lines 54 - 80, The Czech
locale file left many values in English; update the keys errorSubtitleInfo,
domainWarningTitle/subtitle if needed, ignoreTitle, goToCorrectDomainTitle,
authorizeTitle, authorizeCardTitle, authorizeSubtitle, authorizeSubtitleOAuth,
authorizeLoadingTitle, authorizeLoadingSubtitle, authorizeSuccessTitle,
authorizeSuccessSubtitle, authorizeErrorClientInfo, authorizeErrorMissingParams,
openidScopeName, openidScopeDescription, emailScopeName, emailScopeDescription,
profileScopeName, profileScopeDescription, groupsScopeName, and
groupsScopeDescription with proper Czech translations; preserve interpolation
tokens like {{app}} and {{missingParams}} and any HTML markup such as <code>
exactly as-is, keep JSON string escaping valid, and ensure you update the values
in the cs-CZ.json object (e.g., keys authorizeCardTitle,
authorizeErrorMissingParams) rather than adding new keys or changing key names.
| "errorSubtitleInfo": "The following error occurred while processing your request:", | ||
| "errorSubtitle": "Der opstod en fejl under forsøget på at udføre denne handling. Tjek venligst konsollen for mere information.", | ||
| "forgotPasswordMessage": "You can reset your password by changing the `USERS` environment variable.", | ||
| "fieldRequired": "This field is required", | ||
| "invalidInput": "Invalid input", | ||
| "domainWarningTitle": "Invalid Domain", | ||
| "domainWarningSubtitle": "This instance is configured to be accessed from <code>{{appUrl}}</code>, but <code>{{currentUrl}}</code> is being used. If you proceed, you may encounter issues with authentication.", | ||
| "ignoreTitle": "Ignore", | ||
| "goToCorrectDomainTitle": "Go to correct domain" | ||
| } No newline at end of file | ||
| "goToCorrectDomainTitle": "Go to correct domain", | ||
| "authorizeTitle": "Authorize", | ||
| "authorizeCardTitle": "Continue to {{app}}?", | ||
| "authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.", | ||
| "authorizeSubtitleOAuth": "Would you like to continue to this app?", | ||
| "authorizeLoadingTitle": "Loading...", | ||
| "authorizeLoadingSubtitle": "Please wait while we load the client information.", | ||
| "authorizeSuccessTitle": "Authorized", | ||
| "authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.", | ||
| "authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.", | ||
| "authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}", | ||
| "openidScopeName": "OpenID Connect", | ||
| "openidScopeDescription": "Allows the app to access your OpenID Connect information.", | ||
| "emailScopeName": "Email", | ||
| "emailScopeDescription": "Allows the app to access your email address.", | ||
| "profileScopeName": "Profile", | ||
| "profileScopeDescription": "Allows the app to access your profile information.", | ||
| "groupsScopeName": "Groups", | ||
| "groupsScopeDescription": "Allows the app to access your group information." |
There was a problem hiding this comment.
Newly added keys are untranslated (English in a Danish locale file).
All new keys (errorSubtitleInfo, authorizeTitle, authorizeCardTitle, … through groupsScopeDescription) still contain English text. This is consistent with several other pre-existing untranslated keys in this file (e.g., lines 17–19, 23, 26–27, 56–62), so it appears to be a known pattern for this Crowdin-managed locale. Just flagging for visibility — these should eventually receive proper Danish translations.
🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/da-DK.json` around lines 54 - 80, Several newly
added i18n keys in the Danish locale are still in English; update the values for
errorSubtitleInfo, errorSubtitle, forgotPasswordMessage, fieldRequired,
invalidInput, domainWarningTitle, domainWarningSubtitle, ignoreTitle,
goToCorrectDomainTitle, authorizeTitle, authorizeCardTitle, authorizeSubtitle,
authorizeSubtitleOAuth, authorizeLoadingTitle, authorizeLoadingSubtitle,
authorizeSuccessTitle, authorizeSuccessSubtitle, authorizeErrorClientInfo,
authorizeErrorMissingParams, openidScopeName, openidScopeDescription,
emailScopeName, emailScopeDescription, profileScopeName,
profileScopeDescription, groupsScopeName, and groupsScopeDescription with proper
Danish translations, preserving all placeholders (e.g., {{appUrl}},
{{currentUrl}}, {{app}}, {{missingParams}}) and inline markup/backticks exactly
as in the originals so templates continue to render correctly.
| "forgotPasswordTitle": "¿Olvidó su contraseña?", | ||
| "failedToFetchProvidersTitle": "Error al cargar los proveedores de autenticación. Por favor revise su configuración.", | ||
| "errorTitle": "Ha ocurrido un error", | ||
| "errorSubtitleInfo": "The following error occurred while processing your request:", |
There was a problem hiding this comment.
All newly added strings are untranslated (English in es-ES locale).
errorSubtitleInfo (Line 54) and every key from authorizeTitle through groupsScopeDescription (Lines 63–80) contain English text in the Spanish locale file. If Crowdin is expected to populate these asynchronously via translator contributions, this is fine as a temporary state — but worth confirming that the fallback-to-English behavior is intentional and that these keys are queued for translation.
Also applies to: 63-80
🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/es-ES.json` at line 54, Several keys in the
Spanish locale file are still in English (e.g., "errorSubtitleInfo" and keys
from "authorizeTitle" through "groupsScopeDescription"); update their values to
proper Spanish translations or mark them as intentionally pending translation.
Open frontend/src/lib/i18n/locales/es-ES.json, locate the keys errorSubtitleInfo
and authorizeTitle ... groupsScopeDescription, and replace the English strings
with accurate Spanish translations (or add a clear TODO comment/metadata
indicating they are queued for Crowdin) so the es-ES locale contains Spanish
text or an explicit fallback note.
| "errorSubtitleInfo": "The following error occurred while processing your request:", | ||
| "errorSubtitle": "An error occurred while trying to perform this action. Please check the console for more information.", |
There was a problem hiding this comment.
New keys errorSubtitleInfo and the entire authorize*/scope block are untranslated (English).
errorSubtitleInfo (Line 54), errorSubtitle (Line 55), and all keys from authorizeTitle through groupsScopeDescription (Lines 63–80) are in English. These should be translated to Italian to match the rest of the locale's progress.
Also applies to: 63-80
🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/it-IT.json` around lines 54 - 55, The listed
keys are still in English and need Italian translations: replace the values for
"errorSubtitleInfo", "errorSubtitle" and the block from "authorizeTitle" through
"groupsScopeDescription" with proper Italian text; locate these keys
(errorSubtitleInfo, errorSubtitle, authorizeTitle, authorizeDescription,
authorizeConfirm, authorizeCancel, authorizeScopesTitle, emailScopeDescription,
profileScopeDescription, groupsScopeDescription) in the it-IT locale and provide
accurate Italian translations, preserving punctuation, capitalization and any
interpolation/placeholders exactly as in the originals.
| "authorizeTitle": "Authorize", | ||
| "authorizeCardTitle": "Continue to {{app}}?", | ||
| "authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.", | ||
| "authorizeSubtitleOAuth": "Would you like to continue to this app?", | ||
| "authorizeLoadingTitle": "Loading...", | ||
| "authorizeLoadingSubtitle": "Please wait while we load the client information.", | ||
| "authorizeSuccessTitle": "Authorized", | ||
| "authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.", | ||
| "authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.", | ||
| "authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}", | ||
| "openidScopeName": "OpenID Connect", | ||
| "openidScopeDescription": "Allows the app to access your OpenID Connect information.", | ||
| "emailScopeName": "Email", | ||
| "emailScopeDescription": "Allows the app to access your email address.", | ||
| "profileScopeName": "Profile", | ||
| "profileScopeDescription": "Allows the app to access your profile information.", | ||
| "groupsScopeName": "Groups", | ||
| "groupsScopeDescription": "Allows the app to access your group information." |
There was a problem hiding this comment.
All authorize and scope strings are untranslated.
The entire block of authorize*, openid*, email*, profile*, and groups* keys (18 strings) remains in English. These need Turkish translations to match the rest of the locale file.
🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/tr-TR.json` around lines 63 - 80, The Turkish
locale file contains untranslated English strings for the authorize and scope
entries; replace the values for keys authorizeTitle, authorizeCardTitle,
authorizeSubtitle, authorizeSubtitleOAuth, authorizeLoadingTitle,
authorizeLoadingSubtitle, authorizeSuccessTitle, authorizeSuccessSubtitle,
authorizeErrorClientInfo, authorizeErrorMissingParams, openidScopeName,
openidScopeDescription, emailScopeName, emailScopeDescription, profileScopeName,
profileScopeDescription, groupsScopeName, and groupsScopeDescription with proper
Turkish translations, preserving any placeholders like {{app}} and
{{missingParams}} exactly as-is and keeping punctuation and capitalization
consistent with the rest of the file.
| "errorSubtitleInfo": "The following error occurred while processing your request:", | ||
| "errorSubtitle": "An error occurred while trying to perform this action. Please check the console for more information.", |
There was a problem hiding this comment.
Untranslated English strings in Ukrainian locale file.
Lines 54–55 (errorSubtitleInfo, errorSubtitle) and lines 63–80 (authorizeTitle through groupsScopeDescription) contain English text instead of Ukrainian translations. Since this is the uk-UA locale, these should all be localized.
Also applies to: 63-80
🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/uk-UA.json` around lines 54 - 55, The Ukrainian
locale file has untranslated English values for keys errorSubtitleInfo,
errorSubtitle, authorizeTitle, authorizeSubtitle, authorizeConfirm,
authorizeCancel, authorizeCheckbox, scopesTitle, scopeMessages (and the specific
scope keys docsScope, filesScope, tokensScope, groupsScope,
groupsScopeDescription); replace the English strings for these keys with
accurate Ukrainian translations, preserving the JSON key names and punctuation,
ensuring proper UTF-8 encoding/escaping and trailing commas remain valid JSON,
and run the i18n/locale lint or build to verify no syntax or missing-key errors.
| "errorSubtitleInfo": "The following error occurred while processing your request:", | ||
| "errorSubtitle": "Đã xảy ra lỗi khi thực hiện thao tác này. Vui lòng kiểm tra bảng điều khiển để biết thêm thông tin.", | ||
| "forgotPasswordMessage": "You can reset your password by changing the `USERS` environment variable.", | ||
| "fieldRequired": "This field is required", | ||
| "invalidInput": "Invalid input", | ||
| "domainWarningTitle": "Invalid Domain", | ||
| "domainWarningSubtitle": "This instance is configured to be accessed from <code>{{appUrl}}</code>, but <code>{{currentUrl}}</code> is being used. If you proceed, you may encounter issues with authentication.", | ||
| "ignoreTitle": "Ignore", | ||
| "goToCorrectDomainTitle": "Go to correct domain" | ||
| } No newline at end of file | ||
| "goToCorrectDomainTitle": "Go to correct domain", | ||
| "authorizeTitle": "Authorize", | ||
| "authorizeCardTitle": "Continue to {{app}}?", | ||
| "authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.", | ||
| "authorizeSubtitleOAuth": "Would you like to continue to this app?", | ||
| "authorizeLoadingTitle": "Loading...", | ||
| "authorizeLoadingSubtitle": "Please wait while we load the client information.", | ||
| "authorizeSuccessTitle": "Authorized", | ||
| "authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.", | ||
| "authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.", | ||
| "authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}", | ||
| "openidScopeName": "OpenID Connect", | ||
| "openidScopeDescription": "Allows the app to access your OpenID Connect information.", | ||
| "emailScopeName": "Email", | ||
| "emailScopeDescription": "Allows the app to access your email address.", | ||
| "profileScopeName": "Profile", | ||
| "profileScopeDescription": "Allows the app to access your profile information.", | ||
| "groupsScopeName": "Groups", | ||
| "groupsScopeDescription": "Allows the app to access your group information." |
There was a problem hiding this comment.
Most new strings are untranslated (still in English) for the vi-VN locale.
All newly added keys (errorSubtitleInfo, authorizeTitle through groupsScopeDescription, etc.) contain English text rather than Vietnamese translations. Since this is a Crowdin-managed PR, this may be intentional as placeholders awaiting translation — but it's worth confirming that Crowdin will pick these up for translator action so they don't ship untranslated indefinitely.
🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/vi-VN.json` around lines 54 - 80, Most new keys
in vi-VN.json (e.g., "errorSubtitleInfo", "authorizeTitle",
"authorizeCardTitle", "authorizeSubtitle", "authorizeSubtitleOAuth",
"authorizeLoadingTitle", "authorizeLoadingSubtitle", "authorizeSuccessTitle",
"authorizeSuccessSubtitle", "authorizeErrorClientInfo",
"authorizeErrorMissingParams", "openidScopeName", "openidScopeDescription",
"emailScopeName", "emailScopeDescription", "profileScopeName",
"profileScopeDescription", "groupsScopeName", "groupsScopeDescription") are
still in English; replace those values with proper Vietnamese translations or
explicitly mark them for translation in Crowdin so they don't ship untranslated,
and confirm the Crowdin config will ingest this vi-VN.json path (or add the keys
to the Crowdin source) so translators see them.
| "forgotPasswordTitle": "忘记密码?", | ||
| "failedToFetchProvidersTitle": "加载身份验证提供程序失败,请检查您的配置。", | ||
| "errorTitle": "发生了错误", | ||
| "errorSubtitleInfo": "The following error occurred while processing your request:", |
There was a problem hiding this comment.
Untranslated strings in zh-CN locale.
All newly added keys (errorSubtitleInfo, authorizeTitle, authorizeCardTitle, etc., and all scope-related keys) contain English text instead of Simplified Chinese translations. Chinese users will see English UI text for these strings.
If these are intentionally added as fallback placeholders pending Crowdin translation, consider tracking them so they don't ship untranslated for long.
Also applies to: 63-80
🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/zh-CN.json` at line 54, The zh-CN locale file
contains untranslated English values for keys like "errorSubtitleInfo",
"authorizeTitle", "authorizeCardTitle" and the scope-related keys (lines
~63-80); update each of these keys in frontend/src/lib/i18n/locales/zh-CN.json
with appropriate Simplified Chinese translations (or replace with a clear
TODO/placeholder marker if you intentionally defer translation) and ensure you
add them to your translation tracking (e.g., Crowdin) so they don’t ship
untranslated.
| "errorSubtitleInfo": "The following error occurred while processing your request:", | ||
| "errorSubtitle": "執行此操作時發生錯誤。請檢查主控台以獲取更多資訊。", | ||
| "forgotPasswordMessage": "透過修改 `USERS` 環境變數,你可以重設你的密碼。", | ||
| "fieldRequired": "此為必填欄位", | ||
| "invalidInput": "無效的輸入", | ||
| "domainWarningTitle": "無效的網域", | ||
| "domainWarningSubtitle": "此服務設定為透過 <code>{{appUrl}}</code> 存取,但目前使用的是 <code>{{currentUrl}}</code>。若繼續操作,可能會遇到驗證問題。", | ||
| "ignoreTitle": "忽略", | ||
| "goToCorrectDomainTitle": "前往正確域名" | ||
| } No newline at end of file | ||
| "goToCorrectDomainTitle": "前往正確域名", | ||
| "authorizeTitle": "Authorize", | ||
| "authorizeCardTitle": "Continue to {{app}}?", | ||
| "authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.", | ||
| "authorizeSubtitleOAuth": "Would you like to continue to this app?", | ||
| "authorizeLoadingTitle": "Loading...", | ||
| "authorizeLoadingSubtitle": "Please wait while we load the client information.", | ||
| "authorizeSuccessTitle": "Authorized", | ||
| "authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.", | ||
| "authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.", | ||
| "authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}", | ||
| "openidScopeName": "OpenID Connect", | ||
| "openidScopeDescription": "Allows the app to access your OpenID Connect information.", | ||
| "emailScopeName": "Email", | ||
| "emailScopeDescription": "Allows the app to access your email address.", | ||
| "profileScopeName": "Profile", | ||
| "profileScopeDescription": "Allows the app to access your profile information.", | ||
| "groupsScopeName": "Groups", | ||
| "groupsScopeDescription": "Allows the app to access your group information." |
There was a problem hiding this comment.
Untranslated English strings in zh-TW locale.
Lines 54 and 63–80 contain English text instead of Traditional Chinese translations. Since these keys have values (albeit in English), i18next will serve the English strings directly to zh-TW users rather than falling back to a default locale. This degrades the localized experience.
If these strings are pending Crowdin translation, consider omitting them from the zh-TW file until translations are available, so the i18next fallback mechanism can display the default language consistently.
🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/zh-TW.json` around lines 54 - 80, Several keys
in zh-TW are still English (e.g., "errorSubtitleInfo" and the
authorize*/openidScope*/emailScope*/profileScope*/groupsScope* keys); either
provide Traditional Chinese translations for those keys ("errorSubtitleInfo",
"authorizeTitle", "authorizeCardTitle", "authorizeSubtitle",
"authorizeSubtitleOAuth", "authorizeLoadingTitle", "authorizeLoadingSubtitle",
"authorizeSuccessTitle", "authorizeSuccessSubtitle", "authorizeErrorClientInfo",
"authorizeErrorMissingParams", "openidScopeName", "openidScopeDescription",
"emailScopeName", "emailScopeDescription", "profileScopeName",
"profileScopeDescription", "groupsScopeName", "groupsScopeDescription") or
remove those entries from the zh-TW JSON so i18next can fall back to the default
locale until proper translations are available. Ensure any replacements use
correct Traditional Chinese phrasing and keep interpolation tokens like {{app}}
and {{missingParams}} intact.
Summary by CodeRabbit