[PR #195] feat(i18n): Comprehensive platform localization (Flows, Templates, Enrichers) #3873

Open
opened 2026-07-14 19:51:02 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/reconurge/flowsint/pull/195
Author: @sevasdron
Created: 7/14/2026
Status: 🔄 Open

Base: mainHead: Localization


📝 Commits (10+)

  • ef66e4d feat(i18n): setup i18next and translate core navigation and dashboard
  • 3f27c4e Enricher tab translation
  • 1687d4b Translation of the Flows tab
  • 142469e Custom types tab translation
  • 1c9de90 Vault tab translation
  • 0f86bc1 Enricher templates tab translation
  • 4d26c37 Profile page translation
  • b6a2078 General fixes
  • 893c61c Auto-generate French and Italian translations
  • b5bcde8 Auto load languages

📊 Changes

69 files changed (+32894 additions, -2447 deletions)

View changed files

📝 .env.example (+3 -3)
📝 .gitignore (+3 -0)
cleanup_ru.py (+44 -0)
📝 flowsint-app/package.json (+2 -0)
📝 flowsint-app/src/components/analyses/analysis-editor.tsx (+20 -18)
flowsint-app/src/components/analyses/default_content.json (+0 -235)
📝 flowsint-app/src/components/analyses/new-analysis.tsx (+12 -10)
📝 flowsint-app/src/components/command.tsx (+9 -7)
📝 flowsint-app/src/components/custom-types/type-preview.tsx (+10 -8)
📝 flowsint-app/src/components/dashboard/empty-states.tsx (+11 -6)
📝 flowsint-app/src/components/dashboard/investigation/analyses-section.tsx (+9 -3)
📝 flowsint-app/src/components/dashboard/investigation/case-header.tsx (+20 -15)
📝 flowsint-app/src/components/dashboard/investigation/investigations-list.tsx (+23 -10)
📝 flowsint-app/src/components/dashboard/investigation/share-dialog.tsx (+35 -37)
📝 flowsint-app/src/components/dashboard/investigation/sketches-section.tsx (+10 -5)
📝 flowsint-app/src/components/dashboard/overview/dashboard-header.tsx (+7 -4)
📝 flowsint-app/src/components/flows/context-menu.tsx (+9 -3)
📝 flowsint-app/src/components/flows/controls.tsx (+8 -6)
📝 flowsint-app/src/components/flows/editor.tsx (+23 -21)
📝 flowsint-app/src/components/flows/enricher-list-item.tsx (+45 -21)

...and 49 more files

📄 Description

Description

This PR introduces a comprehensive internationalization (i18n) layer for the Flowsint platform, transitioning the dashboard from hardcoded English strings to a fully dynamic localization system.

Key implementations include:

  • String Extraction & Refactoring: Extracted hardcoded UI strings from React components (Flows, Enricher Items, Custom Types, Vault, Settings) and replaced them with dynamic react-i18next hooks.
  • Dynamic Entities Localization: Automated translation mapping for 40+ Base Types (Organization, Domain, IP, Phrase, etc.) and their specific properties. The localization architecture preserves technical IDs for backend serialization while displaying localized labels in the UI.
  • Enricher Modules: Added descriptions and UI property translations for 45+ built-in enricher plugins.
  • Templates Editor: Full localization of the YAML Enricher Templates editor, including validation messages, IDE actions, and toast notifications.
  • Locale Synchronization: Updated en.json, ru.json, fr.json, and it.json to share identical key structures. Original English text was preserved in en.json, ensuring stable behavior for English users while enabling full support for Russian and serving as a foundation for other languages.

Motivation and Context

To support a global user base and make the platform accessible to analysts in multiple languages. By decoupling display text from component logic and backend docstrings, we enable easier maintenance and community-driven translations.

Type of change

  • New feature (non-breaking change which adds functionality)
  • Refactoring / UI Improvements

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/reconurge/flowsint/pull/195 **Author:** [@sevasdron](https://github.com/sevasdron) **Created:** 7/14/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `Localization` --- ### 📝 Commits (10+) - [`ef66e4d`](https://github.com/reconurge/flowsint/commit/ef66e4d5be7403fbb49491e316d98d287680c182) feat(i18n): setup i18next and translate core navigation and dashboard - [`3f27c4e`](https://github.com/reconurge/flowsint/commit/3f27c4e334441d1abaf61600a887a80d7b7d28a5) Enricher tab translation - [`1687d4b`](https://github.com/reconurge/flowsint/commit/1687d4bd6e3164aa87b23b038a8abcd58a2c5ede) Translation of the Flows tab - [`142469e`](https://github.com/reconurge/flowsint/commit/142469ecc0746c78eb69a802da6d27943ff12daa) Custom types tab translation - [`1c9de90`](https://github.com/reconurge/flowsint/commit/1c9de905a283aa9830349090b4092e0bfc677811) Vault tab translation - [`0f86bc1`](https://github.com/reconurge/flowsint/commit/0f86bc14b8fe985e8d5d9071e8ea65929b059a1f) Enricher templates tab translation - [`4d26c37`](https://github.com/reconurge/flowsint/commit/4d26c371f3d93ad28daebf9952aa91b94fc326fb) Profile page translation - [`b6a2078`](https://github.com/reconurge/flowsint/commit/b6a20784b05206c78066e0448166923c73200f82) General fixes - [`893c61c`](https://github.com/reconurge/flowsint/commit/893c61c21a68b76cdedce750c588c1c1072713ca) Auto-generate French and Italian translations - [`b5bcde8`](https://github.com/reconurge/flowsint/commit/b5bcde80b9ca159924d1b5e5b5625c733d916755) Auto load languages ### 📊 Changes **69 files changed** (+32894 additions, -2447 deletions) <details> <summary>View changed files</summary> 📝 `.env.example` (+3 -3) 📝 `.gitignore` (+3 -0) ➕ `cleanup_ru.py` (+44 -0) 📝 `flowsint-app/package.json` (+2 -0) 📝 `flowsint-app/src/components/analyses/analysis-editor.tsx` (+20 -18) ➖ `flowsint-app/src/components/analyses/default_content.json` (+0 -235) 📝 `flowsint-app/src/components/analyses/new-analysis.tsx` (+12 -10) 📝 `flowsint-app/src/components/command.tsx` (+9 -7) 📝 `flowsint-app/src/components/custom-types/type-preview.tsx` (+10 -8) 📝 `flowsint-app/src/components/dashboard/empty-states.tsx` (+11 -6) 📝 `flowsint-app/src/components/dashboard/investigation/analyses-section.tsx` (+9 -3) 📝 `flowsint-app/src/components/dashboard/investigation/case-header.tsx` (+20 -15) 📝 `flowsint-app/src/components/dashboard/investigation/investigations-list.tsx` (+23 -10) 📝 `flowsint-app/src/components/dashboard/investigation/share-dialog.tsx` (+35 -37) 📝 `flowsint-app/src/components/dashboard/investigation/sketches-section.tsx` (+10 -5) 📝 `flowsint-app/src/components/dashboard/overview/dashboard-header.tsx` (+7 -4) 📝 `flowsint-app/src/components/flows/context-menu.tsx` (+9 -3) 📝 `flowsint-app/src/components/flows/controls.tsx` (+8 -6) 📝 `flowsint-app/src/components/flows/editor.tsx` (+23 -21) 📝 `flowsint-app/src/components/flows/enricher-list-item.tsx` (+45 -21) _...and 49 more files_ </details> ### 📄 Description ## Description This PR introduces a comprehensive internationalization (i18n) layer for the Flowsint platform, transitioning the dashboard from hardcoded English strings to a fully dynamic localization system. Key implementations include: - **String Extraction & Refactoring**: Extracted hardcoded UI strings from React components (Flows, Enricher Items, Custom Types, Vault, Settings) and replaced them with dynamic `react-i18next` hooks. - **Dynamic Entities Localization**: Automated translation mapping for 40+ Base Types (Organization, Domain, IP, Phrase, etc.) and their specific properties. The localization architecture preserves technical IDs for backend serialization while displaying localized labels in the UI. - **Enricher Modules**: Added descriptions and UI property translations for 45+ built-in enricher plugins. - **Templates Editor**: Full localization of the YAML Enricher Templates editor, including validation messages, IDE actions, and toast notifications. - **Locale Synchronization**: Updated `en.json`, `ru.json`, `fr.json`, and `it.json` to share identical key structures. Original English text was preserved in `en.json`, ensuring stable behavior for English users while enabling full support for Russian and serving as a foundation for other languages. ## Motivation and Context To support a global user base and make the platform accessible to analysts in multiple languages. By decoupling display text from component logic and backend docstrings, we enable easier maintenance and community-driven translations. ## Type of change - [x] New feature (non-breaking change which adds functionality) - [x] Refactoring / UI Improvements --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-07-14 19:51:02 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/flowsint#3873