italia / italia/publiccode-editor
add Greek localisation
- Dominant language
- TypeScript
- Stars
- 32
- Forks
- 33
- Avg merge
- 3d 15h
- Merged PRs (30d)
- 16
Description
## Context
Derived from requirement **RF-PCE-002**. Part of #647.
## Scope
Add the Greek (`el`) UI localisation: translate every string the editor exposes, using
`en.json` as the reference for the key structure.
Greek is the first locale in the editor that does not use the Latin alphabet, so this
one carries some work the other translations do not: the design system's typography has
to render the script correctly, and nothing in the layout may assume Latin-script string
widths.
## Affected areas
- `src/i18n/locales/el.json` — new file, mirroring the keys of `en.json` (~23 KB)
- `src/i18n/index.ts` — register the locale so it appears in the language picker
- `formatLanguageLabel()` in `src/i18n/index.ts` — it uppercases the `Intl.DisplayNames`
output, and uppercasing Greek removes accents (Ελληνικά → ΕΛΛΗΝΙΚΑ). That is correct
Greek orthography, but the result should be checked rather than assumed.
## Non-functional constraints
- **RNF-PCE-006 — Long-term sustainability**: the translation has to stay complete after
merge, so it must pass the completeness check introduced in #647.
## Acceptance criteria
- [ ] `el.json` covers every key present in `en.json`
- [ ] The locale is selectable in the language picker
- [ ] The translation is reviewed by a Greek speaker
- [ ] Terminology is consistent with the `publiccode.yml` specification: field names and
standard terms keep their meaning rather than being translated ad hoc
- [ ] Greek text renders correctly in the Bootstrap Italia / Design React Kit
typography, with no missing glyphs or fallback fonts
- [ ] No layout breakage in the form, warnings panel or language picker from non-Latin
script
Contributor guide
Research direction
Start with src/i18n/locales/en.json and the completeness check introduced in #647, then inspect src/i18n/index.ts, including formatLanguageLabel(). Add the Greek locale with matching keys, register it in the language picker, and verify Greek typography and layout in the form, warnings panel, and picker. Done means the completeness check passes, terminology is reviewed by a Greek speaker, and no missing glyphs or layout breakage remain.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- bootstrap, react, typescript
- Domain
- frontend, localization
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100