Skip to content

Add plugin internationalization (i18n) support #1556

@VikaCep

Description

@VikaCep

Add plugin internationalization (i18n) support

Problem

The Synthetic Monitoring plugin currently ships English-only UI strings. Grafana’s how-to guide for plugin internationalization (https://grafana.com/developers/plugin-tools/how-to-guides/plugin-internationalization) provides a standard workflow. We should adopt that workflow so the plugin can be translated, load locale files dynamically, and give contributors a clear, supported process for adding translations. This ticket is scoped to implementing the i18n mechanism and proving the flow with a handful of translations, not translating every string.

Completion criteria

Phase 1: Implement the i18n mechanism and a small proof of concept

  • Implement the i18n mechanism: declare supported languages, initialise plugin translations, add extraction tooling and ESLint i18n rules.
  • Proof of concept translations: add src/locales/en-US/<plugin-id>.json and src/locales/es-ES/<plugin-id>.json (or another second language) with a small set of keys.
  • Verification: confirm translations load at runtime.
  • Docs: add a README/CONTRIBUTING blurb describing how to run the extraction, where translation files live, and how to test locally.

Phase 2: Crowdin support

  • Request Crowdin access (via Okta) and run the Crowdin “create project” workflow to scaffold a project and obtain the crowdin_project_id. Project name should match the repo name.
  • Add crowdin.yml pointing to the en-US source files and add the Crowdin GitHub workflows to the repo: i18n-verify, i18n-crowdin-upload, i18n-crowdin-download, and i18n-crowdin-create-tasks.
  • Verify the upload/download PRs and the i18n-verify job behave as expected; document the Crowdin project id and any repo-specific workflow changes in README/CONTRIBUTING.

The goal is to enable the translation workflow and prove it works; a follow-up ticket can expand coverage across the whole plugin.

Resources

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions