Hi,
I've been running xyOps for a while and needed it in Italian for my team. Ended up translating the whole thing — about 1600 strings across the UI, email templates, and docs.
Rather than just keeping it for myself, I figured it might be useful as a starting point for i18n support in xyOps. Especially since a lot of the infrastructure is already there (conf/locale/en-US.json, internal/intl.json, the language/region picker in user preferences).
I put together three things:
conf/locale/it-IT.json — all translations in a structured JSON file, organized by page and component. Could plug into a getString(key, fallback) function without touching existing behavior.
conf/emails/it/ — all 17 email templates translated. If email folders were organized by language (emails/en/, emails/it/), the right one could be picked at send time based on user prefs.
I18N-PROPOSAL.md — a short write-up on how this could fit into the codebase with minimal changes. Incremental migration, English fallbacks, nothing breaks.
Everything is in a branch on my fork:
https://github.com/111blackeagle111/xyops/tree/i18n-italian
I also have a working Docker overlay that applies the translations on top of the official image — tested all 25 pages, JS syntax clean, JSON valid. Happy to share that too if it helps.
Couldn't open a PR (collaborator restriction), so dropping this here instead. Let me know if any of this is useful or if you'd prefer a different format.
Thanks for building xyOps — it's a great tool.
Hi,
I've been running xyOps for a while and needed it in Italian for my team. Ended up translating the whole thing — about 1600 strings across the UI, email templates, and docs.
Rather than just keeping it for myself, I figured it might be useful as a starting point for i18n support in xyOps. Especially since a lot of the infrastructure is already there (
conf/locale/en-US.json,internal/intl.json, the language/region picker in user preferences).I put together three things:
conf/locale/it-IT.json— all translations in a structured JSON file, organized by page and component. Could plug into agetString(key, fallback)function without touching existing behavior.conf/emails/it/— all 17 email templates translated. If email folders were organized by language (emails/en/,emails/it/), the right one could be picked at send time based on user prefs.I18N-PROPOSAL.md— a short write-up on how this could fit into the codebase with minimal changes. Incremental migration, English fallbacks, nothing breaks.Everything is in a branch on my fork:
https://github.com/111blackeagle111/xyops/tree/i18n-italian
I also have a working Docker overlay that applies the translations on top of the official image — tested all 25 pages, JS syntax clean, JSON valid. Happy to share that too if it helps.
Couldn't open a PR (collaborator restriction), so dropping this here instead. Let me know if any of this is useful or if you'd prefer a different format.
Thanks for building xyOps — it's a great tool.