Your career: say “Programming languages” where the product means programming languages, so “Languages” stays the spoken ones #690

Closed
opened 2026-10-03 01:59:03 +00:00 by tiagoagueda · 0 comments
Owner

Two different things are called “Languages” in the career record: the section for spoken languages, and the example heading the product gives for a group of skills. The maintainer's list (under Your career): "Prefer “Programming languages” over just “Languages”, might create some confusion with spoken/written languages."

What exists today

  • The spoken section is “Languages”. One msgid, Languages, is used at seven places: the career page's section and sidebar (src/postulo/resume/registry.py:77-78), the CV heading (src/postulo/documents/rendering.py:48), the candidate file's review (src/postulo/resume/candidate.py:272, src/postulo/resume/views_candidate.py:43), the Europass review (src/postulo/resume/views.py:506, src/postulo/templates/resume/europass_import.html:99) and the preview (src/postulo/templates/resume/preview.html:100). The model says "A spoken language" (src/postulo/resume/models.py:251) and the wiki “Spoken languages, rated on the CEFR scale” (Your-career-record.md:18).
  • The programming meaning is only an example and data. The skills section's help text reads “Group related skills under a heading, such as “Languages” or “Infrastructure”.” (src/postulo/resume/registry.py:53, drawn at templates/resume/overview.html:60-61); the same example is in the SkillGroup docstring (resume/models.py:125), two code comments (resume/candidate.py:255, resume/importing.py:266) and the wiki (Your-career-record.md:16). The demo data creates a skill group named “Languages” (Python, Go, SQL, TypeScript) and, on the same CVs, three spoken languages (src/postulo/core/management/commands/seed_demo.py:452, :483-487, :736), so a demo CV prints a heading “Languages” (spoken, rendering.py:48) above a skills line “Languages: Python, Go, SQL, TypeScript”.
  • A group's name is the person's own text (CharField(100), resume/models.py:127), not a catalogue string. Nothing in the product prints “Programming languages” today; no such msgid exists.
  • Fixtures use “Languages” as a group name in about fourteen places (tests/test_candidate_file.py:157,587,847,1828, tests/test_export.py:47,238, tests/test_documents.py:167, tests/test_document_formats.py:115,188, tests/test_career_ordering.py:87, tests/test_career_languages.py:411, tests/security/test_candidate_file.py:309, tests/e2e/test_candidate_file.py:94, tests/e2e/test_accessibility.py:851). They model arbitrary names; none asserts the help text.
  • Not about this: “Languages this instance offers” (core/server_forms.py:169, templates/server/defaults.html:65), “Languages this entry speaks” (templates/resume/translations.html:36), the picker classes in core/language_field.py.
  • Cost in the catalogues. The help-text msgid is in all 68 catalogues and 39 hold a translation; changing its words makes a new msgid and leaves those 39 behind (en-GB, fr-FR and pt-PT are redone with the commit; the rest wait for Weblate, #349, which is not yet a working round trip). Languages (68 catalogues, 39 translated) is untouched by the recommended reading below.

Checked against main at f09b6010b.

Proposal

  1. The example. The skills help text becomes “…such as “Programming languages” or “Infrastructure”.”; the SkillGroup docstring, the two comments and the wiki sentence (Your-career-record.md:16) follow.
  2. The demo data. seed_demo names the group “Programming languages” (both uses), so a demo CV reads “Languages” (spoken) above “Programming languages: Python, Go, SQL, TypeScript”.
  3. Fixtures. Rename the group where a fixture models the demo (tests/test_document_formats.py:115,188 asserts a rendered line); leave the rest.
  4. Nothing in anybody's record changes. A group called “Languages” keeps its name; there is no migration.
  5. Catalogues. The new help-text msgid in en-GB, fr-FR and pt-PT (as drafts) in the same commit; the rest follow through Weblate once #349 works.

Decisions

  • What “Languages” in the note refers to. (a) The programming usage only: example, help text, demo data; (b) also rename the spoken section, to “Spoken languages” or “Language skills”. The note says to prefer “Programming languages” over “Languages”, which reads as (a). Recommended: (a): afterwards “Languages” means one thing wherever the product writes it, and it is the section's conventional CV heading. (b) would change a msgid shared by seven places (39 translations to redo) to fix a confusion that ends with the example. If (b) was meant, it is one commit and SECTION_LABELS["languageskill"] follows.
  • A sentence of examples or a menu of suggested headings (“Programming languages”, “Frameworks”, “Tools”, “Infrastructure”). A menu would make “Programming languages” a string the product owns in every language and nudge people to the same names; the note did not ask for it. Recommended: the sentence; revisit if people keep typing “Languages” for code.
  • Existing groups called “Languages”. Recommended: leave them; they are the person's words, printed as written (documents/rendering.py:346-347).

Needed by

Nothing. #705 ("Kind" or "Type") is the other string sweep of this list; the two should not edit the same catalogue lines in one bunch.

Done when

  • The skills section shows the new example in en-GB, and the translated help in fr-FR and pt-PT; no source file, template or wiki page still gives “Languages” as a skill-group example (a grep of src/, the wiki and the docs, recorded in the commit message; no test can know the sense of a word).
  • manage.py seed_demo produces a CV reading “Languages” and “Programming languages: Python, Go, SQL, TypeScript”; tests/test_document_formats.py follows the demo's wording where it models it.
  • A group a person named “Languages” is unchanged after the upgrade (no migration; stated in the commit), and tests/test_candidate_file.py and tests/test_export.py, which round-trip such a group, still pass.
  • No archive, candidate, API, search or plugin-surface change. New strings in the working catalogues (en-GB, fr-FR, pt-PT as drafts) and Weblate (#349); CHANGELOG ends (#N).

From the list of improvements of 2026-10-02.

Two different things are called “Languages” in the career record: the section for spoken languages, and the example heading the product gives for a group of skills. The maintainer's list (under Your career): "Prefer “Programming languages” over just “Languages”, might create some confusion with spoken/written languages." ## What exists today - **The spoken section is “Languages”.** One msgid, `Languages`, is used at seven places: the career page's section and sidebar (`src/postulo/resume/registry.py:77-78`), the CV heading (`src/postulo/documents/rendering.py:48`), the candidate file's review (`src/postulo/resume/candidate.py:272`, `src/postulo/resume/views_candidate.py:43`), the Europass review (`src/postulo/resume/views.py:506`, `src/postulo/templates/resume/europass_import.html:99`) and the preview (`src/postulo/templates/resume/preview.html:100`). The model says "A spoken language" (`src/postulo/resume/models.py:251`) and the wiki “Spoken languages, rated on the CEFR scale” (`Your-career-record.md:18`). - **The programming meaning is only an example and data.** The skills section's help text reads “Group related skills under a heading, such as “Languages” or “Infrastructure”.” (`src/postulo/resume/registry.py:53`, drawn at `templates/resume/overview.html:60-61`); the same example is in the `SkillGroup` docstring (`resume/models.py:125`), two code comments (`resume/candidate.py:255`, `resume/importing.py:266`) and the wiki (`Your-career-record.md:16`). The demo data creates a skill group named “Languages” (Python, Go, SQL, TypeScript) and, on the same CVs, three spoken languages (`src/postulo/core/management/commands/seed_demo.py:452`, `:483-487`, `:736`), so a demo CV prints a heading “Languages” (spoken, `rendering.py:48`) above a skills line “Languages: Python, Go, SQL, TypeScript”. - **A group's name is the person's own text** (`CharField(100)`, `resume/models.py:127`), not a catalogue string. Nothing in the product prints “Programming languages” today; no such msgid exists. - **Fixtures** use “Languages” as a group name in about fourteen places (`tests/test_candidate_file.py:157,587,847,1828`, `tests/test_export.py:47,238`, `tests/test_documents.py:167`, `tests/test_document_formats.py:115,188`, `tests/test_career_ordering.py:87`, `tests/test_career_languages.py:411`, `tests/security/test_candidate_file.py:309`, `tests/e2e/test_candidate_file.py:94`, `tests/e2e/test_accessibility.py:851`). They model arbitrary names; none asserts the help text. - **Not about this**: “Languages this instance offers” (`core/server_forms.py:169`, `templates/server/defaults.html:65`), “Languages this entry speaks” (`templates/resume/translations.html:36`), the picker classes in `core/language_field.py`. - **Cost in the catalogues.** The help-text msgid is in all 68 catalogues and 39 hold a translation; changing its words makes a new msgid and leaves those 39 behind (en-GB, fr-FR and pt-PT are redone with the commit; the rest wait for Weblate, #349, which is not yet a working round trip). `Languages` (68 catalogues, 39 translated) is untouched by the recommended reading below. Checked against `main` at `f09b6010b`. ## Proposal 1. **The example.** The skills help text becomes “…such as “Programming languages” or “Infrastructure”.”; the `SkillGroup` docstring, the two comments and the wiki sentence (`Your-career-record.md:16`) follow. 2. **The demo data.** `seed_demo` names the group “Programming languages” (both uses), so a demo CV reads “Languages” (spoken) above “Programming languages: Python, Go, SQL, TypeScript”. 3. **Fixtures.** Rename the group where a fixture models the demo (`tests/test_document_formats.py:115,188` asserts a rendered line); leave the rest. 4. **Nothing in anybody's record changes.** A group called “Languages” keeps its name; there is no migration. 5. **Catalogues.** The new help-text msgid in en-GB, fr-FR and pt-PT (as drafts) in the same commit; the rest follow through Weblate once #349 works. ## Decisions - **What “Languages” in the note refers to.** (a) The programming usage only: example, help text, demo data; (b) also rename the spoken section, to “Spoken languages” or “Language skills”. The note says to prefer “Programming languages” over “Languages”, which reads as (a). **Recommended:** (a): afterwards “Languages” means one thing wherever the product writes it, and it is the section's conventional CV heading. (b) would change a msgid shared by seven places (39 translations to redo) to fix a confusion that ends with the example. If (b) was meant, it is one commit and `SECTION_LABELS["languageskill"]` follows. - **A sentence of examples or a menu of suggested headings** (“Programming languages”, “Frameworks”, “Tools”, “Infrastructure”). A menu would make “Programming languages” a string the product owns in every language and nudge people to the same names; the note did not ask for it. **Recommended:** the sentence; revisit if people keep typing “Languages” for code. - **Existing groups called “Languages”.** **Recommended:** leave them; they are the person's words, printed as written (`documents/rendering.py:346-347`). ## Needed by Nothing. #705 ("Kind" or "Type") is the other string sweep of this list; the two should not edit the same catalogue lines in one bunch. ## Done when - The skills section shows the new example in en-GB, and the translated help in fr-FR and pt-PT; no source file, template or wiki page still gives “Languages” as a skill-group example (a grep of `src/`, the wiki and the docs, recorded in the commit message; no test can know the sense of a word). - `manage.py seed_demo` produces a CV reading “Languages” and “Programming languages: Python, Go, SQL, TypeScript”; `tests/test_document_formats.py` follows the demo's wording where it models it. - A group a person named “Languages” is unchanged after the upgrade (no migration; stated in the commit), and `tests/test_candidate_file.py` and `tests/test_export.py`, which round-trip such a group, still pass. - No archive, candidate, API, search or plugin-surface change. New strings in the working catalogues (en-GB, fr-FR, pt-PT as drafts) and Weblate (#349); CHANGELOG ends `(#N)`. From the list of improvements of 2026-10-02.
tiagoagueda added this to the 0.5.0 milestone 2026-10-03 01:59:03 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Postulo/postulo#690
No description provided.