Skip to content

Incorrect handling for msgctxt in msgfmt.py #85012

Closed

Description

@da1910
mannequin
BPO 40835
Nosy @da1910
Files
  • test.po
  • 40835.patch
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = None
    closed_at = None
    created_at = <Date 2020-05-31.20:56:52.559>
    labels = ['type-bug', '3.8']
    title = 'Incorrect handling for msgctxt in msgfmt.py'
    updated_at = <Date 2020-05-31.21:16:05.371>
    user = 'https://github.com/da1910'

    bugs.python.org fields:

    activity = <Date 2020-05-31.21:16:05.371>
    actor = 'da1910'
    assignee = 'none'
    closed = False
    closed_date = None
    closer = None
    components = ['Demos and Tools']
    creation = <Date 2020-05-31.20:56:52.559>
    creator = 'da1910'
    dependencies = []
    files = ['49205', '49206']
    hgrepos = []
    issue_num = 40835
    keywords = ['patch']
    message_count = 3.0
    messages = ['370502', '370504', '370507']
    nosy_count = 1.0
    nosy_names = ['da1910']
    pr_nums = []
    priority = 'normal'
    resolution = None
    stage = None
    status = 'open'
    superseder = None
    type = 'behavior'
    url = 'https://bugs.python.org/issue40835'
    versions = ['Python 3.8']

    Linked PRs

    Activity

    1. da1910 commented on May 31, 2020

      da1910mannequin
      MannequinAuthor

      Running msgfmt.py with the attached po file will produce an incorrect context for the entry "test".

      Looking at the script, we require a comment to follow a contexted section for the context to be cleared. The gettext documentation makes clear that all comments are optional, so this is not desired behaviour.

      My reading of the gettext documentation has a "msgctxt" line applying only to the current entry, so it should be cleared once the last msgstr has been written for that entry.

      I will endeavour to provide a patch within the next day or two.

    2. da1910 commented on May 31, 2020

      da1910mannequin
      MannequinAuthor

      Test po file included

    3. da1910 commented on May 31, 2020

      da1910mannequin
      MannequinAuthor

      And a patch:

      After the end of a message entry the options for the next line are:

      1. A comment - we already reset msgctxt to None here
      2. A blank line - we can have empty lines anywhere we want, so do nothing
      3. A new msgctxt line - Set msgctxt to the new context
      4. A msgid - This is the current failing behaviour. Fix sets msgctxt back to None.
    4. transferred this issue fromon Apr 10, 2022
    5. m-aciek commented on Dec 8, 2023

      @m-aciek
      Contributor

      Does msgfmt.py have its test suite? It would be worth to add also a regression test there.

    6. tomasr8 commented on Dec 8, 2023

      @tomasr8
      Member

      There is Lib/test/test_tools/test_i18n.py for pygettext but no tests for msgfmt as far as I'm aware

    7. self-assigned this
      on Feb 16, 2025
    8. added
      triagedThe issue has been accepted as valid by a triager.
      and removed on Feb 16, 2025
    9. added 3 commits that reference this issue on Mar 13, 2025
    10. added
      3.12only security fixes
      3.13only security fixes
      3.14bugs and security fixes
      on Mar 13, 2025
    11. added 2 commits that reference this issue on Mar 13, 2025
    12. added a commit that references this issue on Mar 14, 2025
    13. added a commit that references this issue on Mar 17, 2025
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    Labels

    3.12only security fixes3.13only security fixes3.14bugs and security fixestriagedThe issue has been accepted as valid by a triager.type-bugAn unexpected behavior, bug, or error

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions