Skip to content

feat(i18n): add Greek translation - #781

Open
zoispag wants to merge 1 commit into
cooklang:mainfrom
zoispag:add-greek-translation
Open

zoispag wants to merge 1 commit into
cooklang:mainfrom
zoispag:add-greek-translation

Conversation

@zoispag

@zoispag zoispag commented Oct 25, 2026

Copy link
Copy Markdown

Adds Greek (el-GR) to the web UI. It's wired up the same way Japanese was: the locale files, SUPPORTED_LANGUAGES, the button on the preferences page, the --lang help and the docs lists.

I'm Greek and keep my recipes in cookcli, so I'd like the UI in my own language.

The translation was drafted with AI assistance. I'm a native speaker and happy to adjust any wording, and if other Greek speakers have suggestions, please chime in.

A few terminology choices that might not be obvious:

  • Pantry is "Αποθέματα" (supplies/stock) for the feature and the nav, because it covers the fridge and freezer as well. The pantry section is "Ντουλάπι" (cupboard), since that's what you'd call the shelf where dry goods live.
  • Instructions is "Εκτέλεση", which is how Greek recipe books and sites head the method section, rather than the more literal "Οδηγίες".
  • Aisles is "Διάδρομοι", as in supermarket aisles.
  • Scale is "Αναλογία" (proportion). A literal "Κλίμακα" sounds odd next to a recipe.
  • Cooklang syntax inside messages (servings:, yield:, the quantity/bought/expire/low keys in the pantry help, "other") stays in English because it has to match the file format. The placeholder words ([name], [section]) are translated, as the other locales do. "in food we trust" also stays in English, same as every other locale.

Weeks in the meal plan start on Monday by default, which is right for Greece, so nothing changes there.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@LeMyst

LeMyst commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator

Thanks for this, it's a careful translation and the terminology notes in the description help a lot. The keys match en-US exactly (also after merging current main), every { $var }, %s and %n placeholder is kept, the plurals use Greek's one/other, and all six places that list the languages are updated.

Blocking: 8 lines are double-encoded

These lines were saved as UTF-8 that had been read as Latin-1, so the UI would show ÎξανÏλημένα instead of Greek. Fluent parses them fine, so tests/locales_test.rs doesn't catch it. Reversing the encoding gives back the intended text with nothing lost:

locales/el-GR/pantry.ftl

pantry-filter-out = Εξαντλημένα
pantry-item-low = Χαμηλό απόθεμα:
pantry-remove-confirm = Να αφαιρεθεί το { $name } από την ενότητα { $section };
pantry-confirm-remove-template = Να αφαιρεθεί το %s από την ενότητα %s;
pantry-mark-low = Σήμανση ως χαμηλό
pantry-item-exists = Το %s υπάρχει ήδη στην ενότητα %s

locales/el-GR/shopping.ftl

shopping-added = { $itemName }: προστέθηκε στη λίστα αγορών
shopping-removed = { $itemName }: αφαιρέθηκε από τη λίστα αγορών

Wording suggestions (non-blocking, your call as a native speaker)

  • aria-dismiss = Απόρριψη: this labels the × that closes an error banner. "Απόρριψη" reads as "reject", while fr/de use "Close". Κλείσιμο (already used for aria-close) fits better.
  • signed-in-as = Συνδεδεμένος ως: this is masculine, and it's shown next to every user's name. Έχετε συνδεθεί ως is gender-neutral.
  • shopping-warning-no-yield: "γραμμένη αριθμός%μονάδα" follows the English "written number%unit" word for word. fr and de say "in the format", so στη μορφή αριθμός%μονάδα might read more naturally. The same applies to "γραμμένο όνομα = …" in pantry-text-intro.
  • picture-heif: worth checking «Μέγιστη συμβατότητα» against the label a Greek-language iPhone actually shows under Ρυθμίσεις > Κάμερα > Μορφές, since users will look for that exact text.
  • Quotes: picture-heif uses «…» and the rest use "…". Either works, but one style throughout would be tidier.

Also, the branch is behind main. It merges cleanly and no new keys are missing, so no rebase is needed for the translation itself.


Analysis and recommendations by Claude, posted on behalf of @LeMyst.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants