Skip to content

feat: add project-wide i18n support#209

Draft
NAO-200 wants to merge 53 commits into
devfrom
feat-155-project-33-i18n
Draft

feat: add project-wide i18n support#209
NAO-200 wants to merge 53 commits into
devfrom
feat-155-project-33-i18n

Conversation

@NAO-200
Copy link
Copy Markdown
Collaborator

@NAO-200 NAO-200 commented May 18, 2026

Closes #155

Adapts the project to the existing i18n setup across the frontend, including dashboard views, modals, navigation, model-driven forms, validation messages, and backend-provided messages.

@NAO-200 NAO-200 self-assigned this May 18, 2026
@karimouf
Copy link
Copy Markdown
Collaborator

There were a lot of files changed, very hard to look at everything, but in general looks fine from my point of view. Don't forget to add docstrings and specify which files you said were incorrectly merged

},

async down(queryInterface, Sequelize) {
// Intentionally left as no-op because original free-text values were not uniquely preserved.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Is there any way that we can avoid breaking undoing of migrations? Once we run these migrations we cannot go back to a previous version of the app.

},

async down(queryInterface, Sequelize) {
// No-op: reverse mapping is intentionally omitted.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Same as mentioned before

},

async down(queryInterface, Sequelize) {
// No-op: reverse mapping intentionally omitted.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

and here too

@NAO-200
Copy link
Copy Markdown
Collaborator Author

NAO-200 commented May 20, 2026

There were a lot of files changed, very hard to look at everything, but in general looks fine from my point of view. Don't forget to add docstrings and specify which files you said were incorrectly merged

The commit where I adapted the first ~100 files and where old logic was accidentally merged is:

refactor: port safe frontend i18n changes
25a3edddfdbfb5c5c0fce99ee78b0e0a1ff2a1ca

This was the part where I initially tried to port changes that looked safe, but later noticed that some old logic had been brought back unintentionally. Because of that, I manually re-checked these files afterwards against the current dev version to make sure that only the i18n-related changes remained.

(caution, a lot of files)

Full list of files included in this commit
frontend/src/assets/utils.js
frontend/src/auth/ConsentModal.vue
frontend/src/auth/EmailVerificationModal.vue
frontend/src/auth/ForgotPasswordModal.vue
frontend/src/auth/NotFound.vue
frontend/src/auth/ResetPassword.vue
frontend/src/auth/TermsModal.vue
frontend/src/basic/Form.vue
frontend/src/basic/Table.vue
frontend/src/basic/dashboard/Coordinator.vue
frontend/src/basic/download/DownloadSet.vue
frontend/src/basic/download/DownloadSingle.vue
frontend/src/basic/download/ExportSingle.vue
frontend/src/basic/editor/CommandMessage.vue
frontend/src/basic/editor/JsonEditor.vue
frontend/src/basic/editor/Modal.vue
frontend/src/basic/form/DataTable.vue
frontend/src/basic/form/DatetimePicker.vue
frontend/src/basic/form/Default.vue
frontend/src/basic/form/Editor.vue
frontend/src/basic/form/Element.vue
frontend/src/basic/form/Password.vue
frontend/src/basic/form/Select.vue
frontend/src/basic/form/Slider.vue
frontend/src/basic/form/Switch.vue
frontend/src/basic/form/Textarea.vue
frontend/src/basic/icon/IconLoading.vue
frontend/src/basic/modal/ApplySkillSetupStepper.vue
frontend/src/basic/modal/ConfigurationModal.vue
frontend/src/basic/modal/ConfirmModal.vue
frontend/src/basic/modal/ConsentUpdateModal.vue
frontend/src/basic/modal/InformationModal.vue
frontend/src/basic/modal/PasswordModal.vue
frontend/src/basic/modal/PlaceholdersStep.vue
frontend/src/basic/modal/ServicesStep.vue
frontend/src/basic/modal/StepperModal.vue
frontend/src/basic/modal/skills/InputConfirm.vue
frontend/src/basic/modal/skills/InputFiles.vue
frontend/src/basic/modal/skills/InputGroup.vue
frontend/src/basic/modal/skills/InputMap.vue
frontend/src/basic/modal/skills/SkillSelector.vue
frontend/src/basic/service/NLPService.vue
frontend/src/basic/service/NlpRequest.vue
frontend/src/basic/table/Pagination.vue
frontend/src/components/StudySession.vue
frontend/src/components/annotator/pdfViewer/PDFToolbar.vue
frontend/src/components/annotator/pdfViewer/PDFViewer.vue
frontend/src/components/annotator/sidebar/Sidebar.vue
frontend/src/components/annotator/sidebar/card/AnnoCard.vue
frontend/src/components/annotator/sidebar/card/Collaboration.vue
frontend/src/components/annotator/sidebar/card/Comment.vue
frontend/src/components/annotator/sidebar/card/TagSelector.vue
frontend/src/components/annotator/sidebar/card/VoteButtons.vue
frontend/src/components/common/FloatingInfoPanel.vue
frontend/src/components/dashboard/Configurations.vue
frontend/src/components/dashboard/Documents.vue
frontend/src/components/dashboard/Log.vue
frontend/src/components/dashboard/NlpSkills.vue
frontend/src/components/dashboard/Projects.vue
frontend/src/components/dashboard/StudySession.vue
frontend/src/components/dashboard/Tags.vue
frontend/src/components/dashboard/UserStatistics.vue
frontend/src/components/dashboard/Users.vue
frontend/src/components/dashboard/coordinator/Project.vue
frontend/src/components/dashboard/coordinator/Study.vue
frontend/src/components/dashboard/coordinator/TagSet.vue
frontend/src/components/dashboard/documents/DownloadPDFModal.vue
frontend/src/components/dashboard/documents/EditModal.vue
frontend/src/components/dashboard/documents/PublishModal.vue
frontend/src/components/dashboard/documents/UploadModal.vue
frontend/src/components/dashboard/nlp_skills/NlpSkillModal.vue
frontend/src/components/dashboard/nlp_skills/SkillListing.vue
frontend/src/components/dashboard/projects/AssignProjectModal.vue
frontend/src/components/dashboard/projects/ExportModal.vue
frontend/src/components/dashboard/projects/FilterModal.vue
frontend/src/components/dashboard/settings/ChangeUserSettingsModal.vue
frontend/src/components/dashboard/settings/SettingItem.vue
frontend/src/components/dashboard/study/AddAssignmentModal.vue
frontend/src/components/dashboard/study/SavedTemplatesModal.vue
frontend/src/components/dashboard/study/StudySessionModal.vue
frontend/src/components/dashboard/submission/AssignModal.vue
frontend/src/components/dashboard/submission/ImportModal.vue
frontend/src/components/dashboard/submission/PublishModal.vue
frontend/src/components/dashboard/submission/ValidatorSelector.vue
frontend/src/components/dashboard/users/ImportModal.vue
frontend/src/components/dashboard/users/RightsModal.vue
frontend/src/components/dashboard/users/UploadModal.vue
frontend/src/components/dashboard/users/UserCreateModal.vue
frontend/src/components/editor/Editor.vue
frontend/src/components/editor/editor/Editor.vue
frontend/src/components/editor/sidebar/History.vue
frontend/src/components/stepmodal/StepModal.vue
frontend/src/components/stepmodal/placeholders/Chart.vue
frontend/src/components/stepmodal/placeholders/Comparison.vue
frontend/src/components/stepmodal/placeholders/Text.vue
frontend/src/components/study/FinishModal.vue
frontend/src/components/study/ReportItem.vue
frontend/src/components/study/ReportModal.vue
frontend/src/components/study/ReviewModal.vue
frontend/src/components/study/assessment/AssessmentCriteria.vue
utils/modules/i18n/de/dashboard.json
utils/modules/i18n/en/dashboard.json

NAO-200 added 14 commits May 26, 2026 00:32
Use arrow functions in Papa.parse and ConfirmModal handlers so $t works, and move online/offline translations to common.json.
Migrate placeholder labels and descriptions to i18n keys, add translations in templates.json, and resolve them on the frontend with translateMaybeKey while keeping help tooltips in json.
Wire tag colorCode option names to tags.tag.form.colorCode.options so Select shows translated labels.
Show translated name/description in the project list and edit form while the DB still has the English seed values. Saving persists the field text as-is. Use empty Coordinator button prop defaults so footer labels fall back to common.* i18n.
Pass users.roles.* keys to the select so Select.vue can render localized labels; show translated role name on step two.
Render description column via i18n keys in RightsManagementModal. Add templates/workflows right description keys and a follow-up migration for rights missed by the initial user_right i18n transform.
Migrate system workflow name and description to workflow.names/descriptions keys. Add en/de workflow.json strings, shared translateMaybeKey in utils, and render translated labels across workflow and assignment UIs. Fix RightsManagementModal to use the shared helper.
The description field incorrectly referenced workflow.fields.name label and placeholder, which duplicated the name field in the new workflow modal.
Localize system settings descriptions via i18n keys and migrate existing DB descriptions.
Render log messages through translateMaybeKey so i18n keys in protocol entries are shown as localized text.
Use translateMaybeKey in the rename modal summary so seed workflow i18n keys are displayed as localized labels.
Show translated skill labels in the skills table and details modal, with i18n keys for all seed skill names and descriptions.
Build edit/new modal titles via editItem and newItem i18n keys instead of concatenating verb and noun.
Add migration-i18n-utils (resolveEnText) and replace no-op downs so
migrate:undo can repopulate plain English from shared en JSON.

Wire downs for user rights, roles, placeholders, workflow seed, settings,
and workflow_step configuration keys. Restore default project UI to the
seed-localization path without DB keys.
@NAO-200 NAO-200 force-pushed the feat-155-project-33-i18n branch from 4848aba to 6468534 Compare May 26, 2026 22:52
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.

[FEATURE] Integrate internationalization (i18n) support into CARE

3 participants