Skip to content

Commit

Permalink
Merge branch 'master' of github.com:mitsuhiko/babel
Browse files Browse the repository at this point in the history
  • Loading branch information
mitsuhiko committed Apr 7, 2014
2 parents 7edfab9 + 514d41c commit 246996b
Show file tree
Hide file tree
Showing 17 changed files with 190 additions and 152 deletions.
158 changes: 82 additions & 76 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Version 1.3
- Fixed a bug in likely-subtag resolving for some common locales.
This primarily makes ``zh_CN`` work again which was broken
due to how it was defined in the likely subtags combined with
our broken resolving. This fixes #37.
our broken resolving. This fixes :gh:`37`.
- Fixed a bug that caused pybabel to break when writing to stdout
on Python 3.
- Removed a stray print that was causing issues when writing to
Expand Down Expand Up @@ -65,61 +65,65 @@ Version 1.0
- use tox for testing on different pythons
- Added support for the locale plural rules defined by the CLDR.
- Added `format_timedelta` function to support localized formatting of
relative times with strings such as "2 days" or "1 month" (ticket #126).
- Fixed negative offset handling of Catalog._set_mime_headers (ticket #165).
relative times with strings such as "2 days" or "1 month" (:trac:`126`).
- Fixed negative offset handling of Catalog._set_mime_headers (:trac:`165`).
- Fixed the case where messages containing square brackets would break with
an unpack error.
- updated to CLDR 23
- Make the CLDR import script work with Python 2.7.
- Fix various typos.
- Sort output of list-locales.
- Make the POT-Creation-Date of the catalog being updated equal to
POT-Creation-Date of the template used to update (ticket #148).
POT-Creation-Date of the template used to update (:trac:`148`).
- Use a more explicit error message if no option or argument (command) is
passed to pybabel (ticket #81).
- Keep the PO-Revision-Date if it is not the default value (ticket #148).
passed to pybabel (:trac:`81`).
- Keep the PO-Revision-Date if it is not the default value (:trac:`148`).
- Make --no-wrap work by reworking --width's default and mimic xgettext's
behaviour of always wrapping comments (ticket #145).
- Add --project and --version options for commandline (ticket #173).
behaviour of always wrapping comments (:trac:`145`).
- Add --project and --version options for commandline (:trac:`173`).
- Add a __ne__() method to the Local class.
- Explicitly sort instead of using sorted() and don't assume ordering
(Jython compatibility).
- Removed ValueError raising for string formatting message checkers if the
string does not contain any string formattings (ticket #150).
- Fix Serbian plural forms (ticket #213).
- Small speed improvement in format_date() (ticket #216).
string does not contain any string formattings (:trac:`150`).
- Fix Serbian plural forms (:trac:`213`).
- Small speed improvement in format_date() (:trac:`216`).
- Fix so frontend.CommandLineInterface.run does not accumulate logging
handlers (#227, reported with initial patch by dfraser)
- Fix exception if environment contains an invalid locale setting (#200)
- use cPickle instead of pickle for better performance (#225)
handlers (:trac:`227`, reported with initial patch by dfraser)
- Fix exception if environment contains an invalid locale setting
(:trac:`200`)
- use cPickle instead of pickle for better performance (:trac:`225`)
- Only use bankers round algorithm as a tie breaker if there are two nearest
numbers, round as usual if there is only one nearest number (#267, patch by
Martin)
- Allow disabling cache behaviour in LazyProxy (#208, initial patch from Pedro
Algarvio)
- Support for context-aware methods during message extraction (#229, patch
from David Rios)
- "init" and "update" commands support "--no-wrap" option (#289)
numbers, round as usual if there is only one nearest number (:trac:`267`,
patch by Martin)
- Allow disabling cache behaviour in LazyProxy (:trac:`208`, initial patch
from Pedro Algarvio)
- Support for context-aware methods during message extraction (:trac:`229`,
patch from David Rios)
- "init" and "update" commands support "--no-wrap" option (:trac:`289`)
- fix formatting of fraction in format_decimal() if the input value is a float
with more than 7 significant digits (#183)
- fix format_date() with datetime parameter (#282, patch from Xavier Morel)
- fix format_decimal() with small Decimal values (#214, patch from George Lund)
- fix handling of messages containing '\\n' (#198)
- handle irregular multi-line msgstr (no "" as first line) gracefully (#171)
- parse_decimal() now returns Decimals not floats, API change (#178)
- no warnings when running setup.py without installed setuptools (#262)
with more than 7 significant digits (:trac:`183`)
- fix format_date() with datetime parameter (:trac:`282`, patch from Xavier
Morel)
- fix format_decimal() with small Decimal values (:trac:`214`, patch from
George Lund)
- fix handling of messages containing '\\n' (:trac:`198`)
- handle irregular multi-line msgstr (no "" as first line) gracefully
(:trac:`171`)
- parse_decimal() now returns Decimals not floats, API change (:trac:`178`)
- no warnings when running setup.py without installed setuptools (:trac:`262`)
- modified Locale.__eq__ method so Locales are only equal if all of their
attributes (language, territory, script, variant) are equal
- resort to hard-coded message extractors/checkers if pkg_resources is
installed but no egg-info was found (#230)
- format_time() and format_datetime() now accept also floats (#242)
- resort to hard-coded message extractors/checkers if pkg_resources is
installed but no egg-info was found (:trac:`230`)
- format_time() and format_datetime() now accept also floats (:trac:`242`)
- add babel.support.NullTranslations class similar to gettext.NullTranslations
but with all of Babel's new gettext methods (#277)
- "init" and "update" commands support "--width" option (#284)
- fix 'input_dirs' option for setuptools integration (#232, initial patch by
Étienne Bersac)
- ensure .mo file header contains the same information as the source .po file
(#199)
but with all of Babel's new gettext methods (:trac:`277`)
- "init" and "update" commands support "--width" option (:trac:`284`)
- fix 'input_dirs' option for setuptools integration (:trac:`232`, initial
patch by Étienne Bersac)
- ensure .mo file header contains the same information as the source .po file
(:trac:`199`)
- added support for get_language_name() on the locale objects.
- added support for get_territory_name() on the locale objects.
- added support for get_script_name() on the locale objects.
Expand All @@ -143,31 +147,32 @@ Version 0.9.6
- Backport r493-494: documentation typo fixes.
- Make the CLDR import script work with Python 2.7.
- Fix various typos.
- Fixed Python 2.3 compatibility (ticket #146, #233).
- Fixed Python 2.3 compatibility (:trac:`146`, :trac:`233`).
- Sort output of list-locales.
- Make the POT-Creation-Date of the catalog being updated equal to
POT-Creation-Date of the template used to update (ticket #148).
POT-Creation-Date of the template used to update (:trac:`148`).
- Use a more explicit error message if no option or argument (command) is
passed to pybabel (ticket #81).
- Keep the PO-Revision-Date if it is not the default value (ticket #148).
passed to pybabel (:trac:`81`).
- Keep the PO-Revision-Date if it is not the default value (:trac:`148`).
- Make --no-wrap work by reworking --width's default and mimic xgettext's
behaviour of always wrapping comments (ticket #145).
- Fixed negative offset handling of Catalog._set_mime_headers (ticket #165).
- Add --project and --version options for commandline (ticket #173).
behaviour of always wrapping comments (:trac:`145`).
- Fixed negative offset handling of Catalog._set_mime_headers (:trac:`165`).
- Add --project and --version options for commandline (:trac:`173`).
- Add a __ne__() method to the Local class.
- Explicitly sort instead of using sorted() and don't assume ordering
(Python 2.3 and Jython compatibility).
- Removed ValueError raising for string formatting message checkers if the
string does not contain any string formattings (ticket #150).
- Fix Serbian plural forms (ticket #213).
- Small speed improvement in format_date() (ticket #216).
string does not contain any string formattings (:trac:`150`).
- Fix Serbian plural forms (:trac:`213`).
- Small speed improvement in format_date() (:trac:`216`).
- Fix number formatting for locales where CLDR specifies alt or draft
items (ticket #217)
- Fix bad check in format_time (ticket #257, reported with patch and tests by
items (:trac:`217`)
- Fix bad check in format_time (:trac:`257`, reported with patch and tests by
jomae)
- Fix so frontend.CommandLineInterface.run does not accumulate logging
handlers (#227, reported with initial patch by dfraser)
- Fix exception if environment contains an invalid locale setting (#200)
handlers (:trac:`227`, reported with initial patch by dfraser)
- Fix exception if environment contains an invalid locale setting
(:trac:`200`)


Version 0.9.5
Expand All @@ -179,7 +184,7 @@ Version 0.9.5
an unpack error.
- Backport of r467: Fuzzy matching regarding plurals should *NOT* be checked
against len(message.id) because this is always 2, instead, it's should be
checked against catalog.num_plurals (ticket #212).
checked against catalog.num_plurals (:trac:`212`).


Version 0.9.4
Expand All @@ -191,17 +196,17 @@ Version 0.9.4
CLDR data are no longer imported, so the symbol code will be used instead.
- Fixed quarter support in date formatting.
- Fixed a serious memory leak that was introduces by the support for CLDR
aliases in 0.9.3 (ticket #128).
aliases in 0.9.3 (:trac:`128`).
- Locale modifiers such as "@euro" are now stripped from locale identifiers
when parsing (ticket #136).
when parsing (:trac:`136`).
- The system locales "C" and "POSIX" are now treated as aliases for
"en_US_POSIX", for which the CLDR provides the appropriate data. Thanks to
Manlio Perillo for the suggestion.
- Fixed JavaScript extraction for regular expression literals (ticket #138)
- Fixed JavaScript extraction for regular expression literals (:trac:`138`)
and concatenated strings.
- The `Translation` class in `babel.support` can now manage catalogs with
different message domains, and exposes the family of `d*gettext` functions
(ticket #137).
(:trac:`137`).


Version 0.9.3
Expand All @@ -211,11 +216,11 @@ Version 0.9.3

- Fixed invalid message extraction methods causing an UnboundLocalError.
- Extraction method specification can now use a dot instead of the colon to
separate module and function name (ticket #105).
separate module and function name (:trac:`105`).
- Fixed message catalog compilation for locales with more than two plural
forms (ticket #95).
forms (:trac:`95`).
- Fixed compilation of message catalogs for locales with more than two plural
forms where the translations were empty (ticket #97).
forms where the translations were empty (:trac:`97`).
- The stripping of the comment tags in comments is optional now and
is done for each line in a comment.
- Added a JavaScript message extractor.
Expand All @@ -225,23 +230,23 @@ Version 0.9.3
correct plural forms for a locale as tuple.
- Added support for alias definitions in the CLDR data files, meaning that
the chance for items missing in certain locales should be greatly reduced
(ticket #68).
(:trac:`68`).


Version 0.9.2
-------------

(released on February 4th 2008)

- Fixed catalogs' charset values not being recognized (ticket #66).
- Fixed catalogs' charset values not being recognized (:trac:`66`).
- Numerous improvements to the default plural forms.
- Fixed fuzzy matching when updating message catalogs (ticket #82).
- Fixed fuzzy matching when updating message catalogs (:trac:`82`).
- Fixed bug in catalog updating, that in some cases pulled in translations
from different catalogs based on the same template.
- Location lines in PO files do no longer get wrapped at hyphens in file
names (ticket #79).
names (:trac:`79`).
- Fixed division by zero error in catalog compilation on empty catalogs
(ticket #60).
(:trac:`60`).


Version 0.9.1
Expand All @@ -254,7 +259,7 @@ Version 0.9.1
`ngettext`, or vice versa.
- Fixed time formatting for 12 am and 12 pm.
- Fixed output encoding of the `pybabel --list-locales` command.
- MO files are now written in binary mode on windows (ticket #61).
- MO files are now written in binary mode on windows (:trac:`61`).


Version 0.9
Expand All @@ -264,23 +269,24 @@ Version 0.9

- The `new_catalog` distutils command has been renamed to `init_catalog` for
consistency with the command-line frontend.
- Added compilation of message catalogs to MO files (ticket #21).
- Added updating of message catalogs from POT files (ticket #22).
- Added compilation of message catalogs to MO files (:trac:`21`).
- Added updating of message catalogs from POT files (:trac:`22`).
- Support for significant digits in number formatting.
- Apply proper "banker's rounding" in number formatting in a cross-platform
manner.
- The number formatting functions now also work with numbers represented by
Python `Decimal` objects (ticket #53).
Python `Decimal` objects (:trac:`53`).
- Added extensible infrastructure for validating translation catalogs.
- Fixed the extractor not filtering out messages that didn't validate against
the keyword's specification (ticket #39).
the keyword's specification (:trac:`39`).
- Fixed the extractor raising an exception when encountering an empty string
msgid. It now emits a warning to stderr.
- Numerous Python message extractor fixes: it now handles nested function
calls within a gettext function call correctly, uses the correct line number
for multi-line function calls, and other small fixes (tickets #38 and #39).
for multi-line function calls, and other small fixes (tickets :trac:`38` and
:trac:`39`).
- Improved support for detecting Python string formatting fields in message
strings (ticket #57).
strings (:trac:`57`).
- CLDR upgraded to the 1.5 release.
- Improved timezone formatting.
- Implemented scientific number formatting.
Expand All @@ -302,21 +308,21 @@ Version 0.8.1
that way.
- The character set specified in PO template files is now respected when
creating new catalog files based on that template. This allows the use of
characters outside the ASCII range in POT files (ticket #17).
characters outside the ASCII range in POT files (:trac:`17`).
- The default ordering of messages in generated POT files, which is based on
the order those messages are found when walking the source tree, is no
longer subject to differences between platforms; directory and file names
are now always sorted alphabetically.
- The Python message extractor now respects the special encoding comment to be
able to handle files containing non-ASCII characters (ticket #23).
able to handle files containing non-ASCII characters (:trac:`23`).
- Added ``N_`` (gettext noop) to the extractor's default keywords.
- Made locale string parsing more robust, and also take the script part into
account (ticket #27).
account (:trac:`27`).
- Added a function to list all locales for which locale data is available.
- Added a command-line option to the `pybabel` command which prints out all
available locales (ticket #24).
available locales (:trac:`24`).
- The name of the command-line script has been changed from just `babel` to
`pybabel` to avoid a conflict with the OpenBabel project (ticket #34).
`pybabel` to avoid a conflict with the OpenBabel project (:trac:`34`).


Version 0.8
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
test: import-cldr
@py.test tests
@PYTHONWARNINGS=default py.test

test-env:
@virtualenv test-env
Expand Down
5 changes: 5 additions & 0 deletions babel/_compat.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import sys
import array

PY2 = sys.version_info[0] == 2

Expand Down Expand Up @@ -26,6 +27,8 @@

cmp = lambda a, b: (a > b) - (a < b)

array_tobytes = array.array.tobytes

else:
text_type = unicode
string_types = (str, unicode)
Expand All @@ -47,5 +50,7 @@

cmp = cmp

array_tobytes = array.array.tostring


number_types = integer_types + (float,)
6 changes: 4 additions & 2 deletions babel/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@

from babel import localedata
from babel._compat import pickle, string_types
from babel.plural import PluralRule

__all__ = ['UnknownLocaleError', 'Locale', 'default_locale', 'negotiate_locale',
'parse_locale']


_global_data = None
_default_plural_rule = PluralRule({})


def _raise_no_data_error():
Expand Down Expand Up @@ -737,7 +739,7 @@ def plural_form(self):
>>> Locale('ru').plural_form(100)
'many'
"""
return self._data['plural_form']
return self._data.get('plural_form', _default_plural_rule)


def default_locale(category=None, aliases=LOCALE_ALIASES):
Expand Down Expand Up @@ -775,7 +777,7 @@ def default_locale(category=None, aliases=LOCALE_ALIASES):
# the LANGUAGE variable may contain a colon-separated list of
# language codes; we just pick the language on the list
locale = locale.split(':')[0]
if locale in ('C', 'POSIX'):
if locale.split('.')[0] in ('C', 'POSIX'):
locale = 'en_US_POSIX'
elif aliases and locale in aliases:
locale = aliases[locale]
Expand Down
4 changes: 2 additions & 2 deletions babel/dates.py
Original file line number Diff line number Diff line change
Expand Up @@ -733,9 +733,9 @@ def format_timedelta(delta, granularity='second', threshold=.85,
In addition directional information can be provided that informs
the user if the date is in the past or in the future:
>>> format_timedelta(timedelta(hours=1), add_direction=True)
>>> format_timedelta(timedelta(hours=1), add_direction=True, locale='en')
u'In 1 hour'
>>> format_timedelta(timedelta(hours=-1), add_direction=True)
>>> format_timedelta(timedelta(hours=-1), add_direction=True, locale='en')
u'1 hour ago'
:param delta: a ``timedelta`` object representing the time difference to
Expand Down
Loading

0 comments on commit 246996b

Please sign in to comment.