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
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
src/locales/en-US/<plugin-id>.jsonandsrc/locales/es-ES/<plugin-id>.json(or another second language) with a small set of keys.README/CONTRIBUTINGblurb describing how to run the extraction, where translation files live, and how to test locally.Phase 2: Crowdin support
crowdin_project_id. Project name should match the repo name.crowdin.ymlpointing to theen-USsource files and add the Crowdin GitHub workflows to the repo:i18n-verify,i18n-crowdin-upload,i18n-crowdin-download, andi18n-crowdin-create-tasks.i18n-verifyjob 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