|
| 1 | +# Translation Label Proposal |
| 2 | + |
| 3 | +## Executive Summary |
| 4 | + |
| 5 | +Proposal to add a `kind/translation` label to better categorize localization and internationalization work in monthly reports and issue tracking. |
| 6 | + |
| 7 | +## Problem Statement |
| 8 | + |
| 9 | +Currently, translation/localization PRs are categorized as `kind/enhancement` and end up in the "Other" section of monthly reports because they don't fit existing categories. This makes it harder to: |
| 10 | + |
| 11 | +1. Track localization efforts across the project |
| 12 | +2. Recognize community contributions in translation work |
| 13 | +3. Identify i18n gaps in monthly reports |
| 14 | + |
| 15 | +## Evidence from January 2026 Report |
| 16 | + |
| 17 | +**Current State:** |
| 18 | + |
| 19 | +- 2 translation PRs found in "Other" section |
| 20 | +- Both labeled as `kind/enhancement` (not specific enough) |
| 21 | +- No dedicated category for i18n/l10n work |
| 22 | + |
| 23 | +**Examples:** |
| 24 | + |
| 25 | +1. **#175** - Add Polish translation to curated.yaml |
| 26 | + - Author: @Micro856 |
| 27 | + - Current label: `kind/enhancement` |
| 28 | + - Location: Other section |
| 29 | + |
| 30 | +2. **#143** - Adds french translation to the desktop files |
| 31 | + - Author: @theMimolet |
| 32 | + - Current labels: `kind/enhancement`, `size/XS` |
| 33 | + - Location: Other section |
| 34 | + |
| 35 | +## Proposed Solution |
| 36 | + |
| 37 | +### Label Specification |
| 38 | + |
| 39 | +**Name:** `kind/translation` |
| 40 | + |
| 41 | +**Color:** `8B5CF6` (purple - distinct from existing colors, represents internationalization) |
| 42 | + |
| 43 | +**Description:** "Translation and localization work (i18n/l10n)" |
| 44 | + |
| 45 | +**Category:** New section in reports: "🌍 Localization" |
| 46 | + |
| 47 | +### Color Rationale |
| 48 | + |
| 49 | +Purple (`8B5CF6`) was chosen because: |
| 50 | + |
| 51 | +- Visually distinct from existing `kind/` labels |
| 52 | +- Not used elsewhere in current label scheme |
| 53 | +- Purple commonly associated with internationalization in UI design |
| 54 | +- Good contrast in both light and dark modes |
| 55 | +- Similar saturation to other kind/ labels |
| 56 | + |
| 57 | +**Color Comparison:** |
| 58 | + |
| 59 | +``` |
| 60 | +kind/bug: E8590C (orange-red) |
| 61 | +kind/enhancement: 17A2B8 (teal) |
| 62 | +kind/documentation: 0066FF (blue) |
| 63 | +kind/tech-debt: D4A259 (tan) |
| 64 | +kind/automation: 5B8BC1 (light blue) |
| 65 | +kind/translation: 8B5CF6 (purple) ← NEW |
| 66 | +``` |
| 67 | + |
| 68 | +## Implementation Plan |
| 69 | + |
| 70 | +### Phase 1: Label Creation (5 minutes) |
| 71 | + |
| 72 | +Create label in projectbluefin/common repository: |
| 73 | + |
| 74 | +```bash |
| 75 | +gh api repos/projectbluefin/common/labels \ |
| 76 | + -f name="kind/translation" \ |
| 77 | + -f color="8B5CF6" \ |
| 78 | + -f description="Translation and localization work (i18n/l10n)" |
| 79 | +``` |
| 80 | + |
| 81 | +### Phase 2: Update Label Mapping Configuration (5 minutes) |
| 82 | + |
| 83 | +Edit `scripts/lib/label-mapping.mjs`: |
| 84 | + |
| 85 | +```javascript |
| 86 | +export const LABEL_COLORS = { |
| 87 | + // ... existing colors ... |
| 88 | + "kind/translation": "8B5CF6", |
| 89 | +}; |
| 90 | + |
| 91 | +export const LABEL_CATEGORIES = { |
| 92 | + // ... existing categories ... |
| 93 | + "🌍 Localization": ["kind/translation"], |
| 94 | +}; |
| 95 | +``` |
| 96 | + |
| 97 | +### Phase 3: Retroactive Labeling (10 minutes) |
| 98 | + |
| 99 | +Apply label to existing January 2026 translation PRs: |
| 100 | + |
| 101 | +```bash |
| 102 | +gh pr edit 175 --repo projectbluefin/common --add-label "kind/translation" |
| 103 | +gh pr edit 143 --repo projectbluefin/common --add-label "kind/translation" |
| 104 | +``` |
| 105 | + |
| 106 | +**Note:** Keep `kind/enhancement` label as well (PRs can have multiple kind/ labels). |
| 107 | + |
| 108 | +### Phase 4: Regenerate Reports (5 minutes) |
| 109 | + |
| 110 | +```bash |
| 111 | +npm run generate-report -- --month=2026-01 |
| 112 | +``` |
| 113 | + |
| 114 | +Verify new "🌍 Localization" section appears with 2 PRs. |
| 115 | + |
| 116 | +### Phase 5: Documentation (5 minutes) |
| 117 | + |
| 118 | +Update relevant documentation: |
| 119 | + |
| 120 | +- `AGENTS.md` - Add translation label to Monthly Reports section |
| 121 | +- `.planning/unlabelled-pr-analysis-2026-01.md` - Mark as implemented |
| 122 | + |
| 123 | +## Expected Impact |
| 124 | + |
| 125 | +### Monthly Reports |
| 126 | + |
| 127 | +- **Before:** 2 translation PRs in "Other" section |
| 128 | +- **After:** 2 translation PRs in new "🌍 Localization" section |
| 129 | +- **Reduction:** 2.4% reduction in "Other" category (2 of 83 items) |
| 130 | + |
| 131 | +### Long-term Benefits |
| 132 | + |
| 133 | +- Better visibility for i18n/l10n contributions |
| 134 | +- Easier tracking of localization progress |
| 135 | +- Encourages more translation contributions |
| 136 | +- Clearer categorization in project board |
| 137 | + |
| 138 | +## Scope and Applicability |
| 139 | + |
| 140 | +### What Gets This Label |
| 141 | + |
| 142 | +- ✅ Adding/updating .po/.pot translation files |
| 143 | +- ✅ Desktop file translations (Name[locale]=) |
| 144 | +- ✅ Curated app translations in YAML |
| 145 | +- ✅ Documentation translations |
| 146 | +- ✅ UI string translations |
| 147 | + |
| 148 | +### What Doesn't Get This Label |
| 149 | + |
| 150 | +- ❌ Adding English-only documentation (use `kind/documentation`) |
| 151 | +- ❌ Internationalization infrastructure (use `kind/enhancement` + `area/buildstream`) |
| 152 | +- ❌ Font additions for non-Latin scripts (use `area/gnome` or `area/aurora`) |
| 153 | + |
| 154 | +## Alternative Options Considered |
| 155 | + |
| 156 | +### Option 1: Use `kind/enhancement` (Current State) |
| 157 | + |
| 158 | +- **Pros:** No changes needed |
| 159 | +- **Cons:** Translation work gets lost in noise, no visibility |
| 160 | + |
| 161 | +### Option 2: Use `kind/documentation` |
| 162 | + |
| 163 | +- **Pros:** Reuses existing label |
| 164 | +- **Cons:** Translation is distinct from documentation writing |
| 165 | + |
| 166 | +### Option 3: Create `area/i18n` label |
| 167 | + |
| 168 | +- **Pros:** Groups infrastructure + translations |
| 169 | +- **Cons:** Mixes two different concerns (infrastructure vs. content) |
| 170 | + |
| 171 | +### Option 4: New label `kind/translation` (RECOMMENDED) |
| 172 | + |
| 173 | +- **Pros:** Clear categorization, dedicated section in reports, encourages contributions |
| 174 | +- **Cons:** Adds one more label to maintain |
| 175 | + |
| 176 | +## Risk Assessment |
| 177 | + |
| 178 | +**Low Risk:** |
| 179 | + |
| 180 | +- Single label addition |
| 181 | +- Backward compatible (doesn't break existing workflows) |
| 182 | +- Easy to revert if not useful |
| 183 | +- No infrastructure dependencies |
| 184 | + |
| 185 | +**Testing:** |
| 186 | + |
| 187 | +- Create label in test environment |
| 188 | +- Apply to test PRs |
| 189 | +- Regenerate report |
| 190 | +- Verify rendering |
| 191 | + |
| 192 | +## Timeline |
| 193 | + |
| 194 | +**Total Time:** ~30 minutes |
| 195 | + |
| 196 | +1. **Label Creation:** 5 minutes |
| 197 | +2. **Config Update:** 5 minutes |
| 198 | +3. **Retroactive Labeling:** 10 minutes |
| 199 | +4. **Report Regeneration:** 5 minutes |
| 200 | +5. **Documentation:** 5 minutes |
| 201 | + |
| 202 | +## Success Metrics |
| 203 | + |
| 204 | +### Immediate (Week 1) |
| 205 | + |
| 206 | +- ✅ Label created in GitHub |
| 207 | +- ✅ Config updated in docs repo |
| 208 | +- ✅ January 2026 report shows "🌍 Localization" section |
| 209 | +- ✅ 2 PRs properly categorized |
| 210 | + |
| 211 | +### Short-term (Month 1) |
| 212 | + |
| 213 | +- All new translation PRs receive `kind/translation` label |
| 214 | +- Contributors aware of label (via CONTRIBUTING.md or issue templates) |
| 215 | + |
| 216 | +### Long-term (6 Months) |
| 217 | + |
| 218 | +- Track translation coverage across supported languages |
| 219 | +- Measure increase in translation contributions |
| 220 | +- Evaluate if label should expand to cover i18n infrastructure |
| 221 | + |
| 222 | +## Next Steps |
| 223 | + |
| 224 | +1. **Decision:** Get approval from maintainers |
| 225 | +2. **Create:** Add label to projectbluefin/common |
| 226 | +3. **Configure:** Update label mapping |
| 227 | +4. **Apply:** Label existing PRs |
| 228 | +5. **Regenerate:** Update January 2026 report |
| 229 | +6. **Document:** Update AGENTS.md |
| 230 | +7. **Commit:** Push all changes |
| 231 | +8. **Monitor:** Track usage over next month |
| 232 | + |
| 233 | +## Questions for Maintainers |
| 234 | + |
| 235 | +1. **Approve color choice?** Purple (`8B5CF6`) or prefer different color? |
| 236 | +2. **Approve label name?** `kind/translation` or prefer `kind/i18n`, `kind/localization`, etc.? |
| 237 | +3. **Should we keep `kind/enhancement` on translation PRs?** (Dual labeling vs. single label) |
| 238 | +4. **Any existing translation guidelines** that should be referenced in label description? |
| 239 | + |
| 240 | +## Related Documents |
| 241 | + |
| 242 | +- `.planning/unlabelled-pr-analysis-2026-01.md` - Original analysis identifying need |
| 243 | +- `scripts/lib/label-mapping.mjs` - Configuration file to update |
| 244 | +- `AGENTS.md` - Documentation file to update |
| 245 | +- `reports/2026-01-31-report.mdx` - Report that will be updated |
| 246 | + |
| 247 | +--- |
| 248 | + |
| 249 | +**Author:** OpenCode (Claude Sonnet 4.5 via GitHub Copilot) |
| 250 | +**Date:** January 28, 2026 |
| 251 | +**Status:** DRAFT - Awaiting maintainer approval |
0 commit comments