Closed
Description
(Originally, reported in https://trac.edgewall.org/ticket/12445)
This issue doesn't occur on Babel 2.2.0.
>>> import babel
>>> babel.__version__
'2.3.1'
>>> from datetime import datetime
>>> from babel.dates import format_time
>>> format_time(datetime(2016, 4, 8, 12, 34, 56), locale='zh_TW')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/dev/shm/babel231/local/lib/python2.7/site-packages/babel/dates.py", line 787, in format_time
return parse_pattern(format).apply(time, locale)
File "/dev/shm/babel231/local/lib/python2.7/site-packages/babel/dates.py", line 1208, in apply
return self % DateTimeFormat(datetime, locale)
File "/dev/shm/babel231/local/lib/python2.7/site-packages/babel/dates.py", line 1205, in __mod__
return self.format % other
File "/dev/shm/babel231/local/lib/python2.7/site-packages/babel/dates.py", line 1242, in __getitem__
return self.format_period(char)
File "/dev/shm/babel231/local/lib/python2.7/site-packages/babel/dates.py", line 1384, in format_period
return get_period_names(locale=self.locale)[period]
File "/dev/shm/babel231/local/lib/python2.7/site-packages/babel/localedata.py", line 207, in __getitem__
orig = val = self._data[key]
KeyError: 'pm'
I guess that format_period()
should pass context='format'
to get_period_names()
.
diff --git a/babel/dates.py b/babel/dates.py
index 3c75b38..64e7b01 100644
--- a/babel/dates.py
+++ b/babel/dates.py
@@ -1381,7 +1381,7 @@ class DateTimeFormat(object):
def format_period(self, char):
period = {0: 'am', 1: 'pm'}[int(self.value.hour >= 12)]
- return get_period_names(locale=self.locale)[period]
+ return get_period_names(context='format', locale=self.locale)[period]
def format_frac_seconds(self, num):
""" Return fractional seconds.