Skip to content

babel.lists.format_list with style="unit" errors on non-English languages #1098

@Vexed01

Description

@Vexed01

Overview Description

babel.lists.format_list does not work with non-English locales, when style is set to "unit".

Steps to Reproduce

Install latest babel 2.15.0

from babel.lists import format_list
print(format_list([1, 2, 3, 4], style="unit", locale="zh_CN"))

Actual Results

Traceback (most recent call last):
  File "<eval command - snippet #20>", line 4, in func
    print(format_list([1, 2, 3, 4], style="unit", locale="zh_CN"))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ubuntu/redenv/lib/python3.11/site-packages/babel/lists.py", line 89, in format_list
    result = patterns['start'].format(lst[0], lst[1])
             ~~~~~~~~^^^^^^^^^
  File "/home/ubuntu/redenv/lib/python3.11/site-packages/babel/localedata.py", line 234, in __getitem__
    orig = val = self._data[key]
                 ~~~~~~~~~~^^^^^
KeyError: 'start'

Expected Results

Something like 1, 2, 3, 4 but locale dependent of course!

Reproducibility

I can reproduce this in every non-Engilsh language I've tried, es_ES zh_CN fr_FR
Various EN locales en_GB en_US en_CN produce the expected result 1, 2, 3, 4

Additional Information

Similar to #781 but this error occurs with supported styleunit and has a wider language scope

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions