././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.8384347 humanize-1.0.0/0000755000076500000240000000000000000000000013416 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7119482 humanize-1.0.0/.github/0000755000076500000240000000000000000000000014756 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7430298 humanize-1.0.0/.github/workflows/0000755000076500000240000000000000000000000017013 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581061752.0 humanize-1.0.0/.github/workflows/lint.yml0000644000076500000240000000173200000000000020507 0ustar00hugostaff00000000000000name: Lint on: [push, pull_request] jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: [3.8] steps: - uses: actions/checkout@v1 - name: pip cache uses: actions/cache@v1 with: path: ~/.cache/pip key: lint-pip-${{ hashFiles('**/setup.py') }} restore-keys: | lint-pip- - name: pre-commit cache uses: actions/cache@v1 with: path: ~/.cache/pre-commit key: lint-pre-commit-${{ hashFiles('**/.pre-commit-config.yaml') }} restore-keys: | lint-pre-commit- - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install --upgrade tox - name: Lint run: tox -e lint ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581190262.0 humanize-1.0.0/.github/workflows/release.yml0000644000076500000240000000130100000000000021151 0ustar00hugostaff00000000000000on: push: # Sequence of patterns matched against refs/tags tags: - '[0-9]+\.[0-9]+\.[0-9]+' name: Create release jobs: build: name: Create release runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@master - name: Create release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} body: | * TODO draft: false prerelease: false ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581017850.0 humanize-1.0.0/.github/workflows/test.yml0000644000076500000240000000331000000000000020512 0ustar00hugostaff00000000000000name: Test on: [push, pull_request] jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: python-version: [3.5, 3.6, 3.7, 3.8] os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v1 - name: Ubuntu cache uses: actions/cache@v1 if: startsWith(matrix.os, 'ubuntu') with: path: ~/.cache/pip key: ${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/setup.py') }} restore-keys: | ${{ matrix.os }}-${{ matrix.python-version }}- - name: macOS cache uses: actions/cache@v1 if: startsWith(matrix.os, 'macOS') with: path: ~/Library/Caches/pip key: ${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/setup.py') }} restore-keys: | ${{ matrix.os }}-${{ matrix.python-version }}- - name: Windows cache uses: actions/cache@v1 if: startsWith(matrix.os, 'windows') with: path: ~\AppData\Local\pip\Cache key: ${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/setup.py') }} restore-keys: | ${{ matrix.os }}-${{ matrix.python-version }}- - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install --upgrade tox - name: Tox tests shell: bash run: | tox -e py ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581017850.0 humanize-1.0.0/.gitignore0000644000076500000240000000013600000000000015406 0ustar00hugostaff00000000000000*.egg-info* *.pot *.py[co] *.sw[po] .coverage .eggs .tox build dist docs/_build* htmlcov tags ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581061752.0 humanize-1.0.0/.pre-commit-config.yaml0000644000076500000240000000132500000000000017700 0ustar00hugostaff00000000000000repos: - repo: https://github.com/psf/black rev: 19.10b0 hooks: - id: black - repo: https://gitlab.com/pycqa/flake8 rev: 3.7.9 hooks: - id: flake8 additional_dependencies: [flake8-2020, flake8-implicit-str-concat] - repo: https://github.com/asottile/seed-isort-config rev: v1.9.4 hooks: - id: seed-isort-config - repo: https://github.com/timothycrosley/isort rev: 4.3.21 hooks: - id: isort - repo: https://github.com/pre-commit/pygrep-hooks rev: v1.4.4 hooks: - id: python-check-blanket-noqa - repo: https://github.com/pre-commit/pre-commit-hooks rev: v2.5.0 hooks: - id: check-merge-conflict - id: check-yaml ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581017850.0 humanize-1.0.0/.travis.yml0000644000076500000240000000035200000000000015527 0ustar00hugostaff00000000000000language: python cache: pip python: - 2.7 - 3.5 - 3.6 - 3.7 - 3.8 - 3.9-dev - pypy - pypy3 install: - pip install -U pip - pip install -U tox-travis script: - tox after_success: - pip install -U codecov && codecov ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1580981854.0 humanize-1.0.0/LICENCE0000644000076500000240000000206100000000000014402 0ustar00hugostaff00000000000000Copyright (c) 2010 Jason Moiron and Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.8392904 humanize-1.0.0/PKG-INFO0000644000076500000240000001411300000000000014513 0ustar00hugostaff00000000000000Metadata-Version: 2.1 Name: humanize Version: 1.0.0 Summary: Python humanize utilities Home-page: https://github.com/jmoiron/humanize Author: Jason Moiron Author-email: jmoiron@jmoiron.net Maintainer: Hugo van Kemenade License: MIT Description: # humanize [![PyPI version](https://img.shields.io/pypi/v/humanize.svg?logo=pypi&logoColor=FFE873)](https://pypi.org/project/humanize/) [![Supported Python versions](https://img.shields.io/pypi/pyversions/humanize.svg?logo=python&logoColor=FFE873)](https://pypi.org/project/humanize/) [![PyPI downloads](https://img.shields.io/pypi/dm/humanize.svg)](https://pypistats.org/packages/humanize) [![Travis CI Status](https://travis-ci.com/hugovk/humanize.svg?branch=master)](https://travis-ci.com/hugovk/humanize) [![GitHub Actions status](https://github.com/jmoiron/humanize/workflows/Test/badge.svg)](https://github.com/jmoiron/humanize/actions) [![codecov](https://codecov.io/gh/hugovk/humanize/branch/master/graph/badge.svg)](https://codecov.io/gh/hugovk/humanize) [![MIT License](https://img.shields.io/github/license/jmoiron/humanize.svg)](LICENSE) This modest package contains various common humanization utilities, like turning a number into a fuzzy human readable duration ('3 minutes ago') or into a human readable size or throughput. It works with Python 2.7 and 3.5+ and is localized to: * Dutch * Finnish * French * German * Indonesian * Italian * Japanese * Korean * Persian * Portuguese Brazilian * Russian * Simplified Chinese * Slovak * Turkish * Vietnamese ## Usage Integer humanization: ```pycon >>> import humanize >>> humanize.intcomma(12345) '12,345' >>> humanize.intword(123455913) '123.5 million' >>> humanize.intword(12345591313) '12.3 billion' >>> humanize.apnumber(4) 'four' >>> humanize.apnumber(41) '41' ``` Date & time humanization: ```pycon >>> import datetime >>> humanize.naturalday(datetime.datetime.now()) 'today' >>> humanize.naturaldelta(datetime.timedelta(seconds=1001)) '16 minutes' >>> humanize.naturalday(datetime.datetime.now() - datetime.timedelta(days=1)) 'yesterday' >>> humanize.naturalday(datetime.date(2007, 6, 5)) 'Jun 05' >>> humanize.naturaldate(datetime.date(2007, 6, 5)) 'Jun 05 2007' >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=1)) 'a second ago' >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=3600)) 'an hour ago' ``` File size humanization: ```pycon >>> humanize.naturalsize(1000000) '1.0 MB' >>> humanize.naturalsize(1000000, binary=True) '976.6 KiB' >>> humanize.naturalsize(1000000, gnu=True) '976.6K' ``` Human readable floating point numbers: ```pycon >>> humanize.fractional(1/3) '1/3' >>> humanize.fractional(1.5) '1 1/2' >>> humanize.fractional(0.3) '3/10' >>> humanize.fractional(0.333) '1/3' >>> humanize.fractional(1) '1' ``` ## Localization How to change locale at runtime: ```pycon >>> print(humanize.naturaltime(datetime.timedelta(seconds=3))) 3 seconds ago >>> _t = humanize.i18n.activate('ru_RU') >>> print(humanize.naturaltime(datetime.timedelta(seconds=3))) 3 секунды назад >>> humanize.i18n.deactivate() >>> print(humanize.naturaltime(datetime.timedelta(seconds=3))) 3 seconds ago ``` You can pass additional parameter `path` to `activate` to specify a path to search locales in. ```pycon >>> humanize.i18n.activate("pt_BR") IOError: [Errno 2] No translation file found for domain: 'humanize' >>> humanize.i18n.activate("pt_BR", path="path/to/my/portuguese/translation/") ``` How to add new phrases to existing locale files: ```console $ xgettext -o humanize.pot -k'_' -k'N_' -k'P_:1c,2' -l python src/humanize/*.py # extract new phrases $ msgmerge -U src/humanize/locale/ru_RU/LC_MESSAGES/humanize.po humanize.pot # add them to locale files $ msgfmt --check -o src/humanize/locale/ru_RU/LC_MESSAGES/humanize{.mo,.po} # compile to binary .mo ``` How to add a new locale: ```console $ msginit -i humanize.pot -o humanize/locale//LC_MESSAGES/humanize.po --locale ``` Where `` is a locale abbreviation, eg. `en_GB`, `pt_BR` or just `ru`, `fr` etc. Keywords: humanize time size Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Text Processing Classifier: Topic :: Text Processing :: General Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* Description-Content-Type: text/markdown Provides-Extra: tests ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/README.md0000644000076500000240000000746700000000000014713 0ustar00hugostaff00000000000000# humanize [![PyPI version](https://img.shields.io/pypi/v/humanize.svg?logo=pypi&logoColor=FFE873)](https://pypi.org/project/humanize/) [![Supported Python versions](https://img.shields.io/pypi/pyversions/humanize.svg?logo=python&logoColor=FFE873)](https://pypi.org/project/humanize/) [![PyPI downloads](https://img.shields.io/pypi/dm/humanize.svg)](https://pypistats.org/packages/humanize) [![Travis CI Status](https://travis-ci.com/hugovk/humanize.svg?branch=master)](https://travis-ci.com/hugovk/humanize) [![GitHub Actions status](https://github.com/jmoiron/humanize/workflows/Test/badge.svg)](https://github.com/jmoiron/humanize/actions) [![codecov](https://codecov.io/gh/hugovk/humanize/branch/master/graph/badge.svg)](https://codecov.io/gh/hugovk/humanize) [![MIT License](https://img.shields.io/github/license/jmoiron/humanize.svg)](LICENSE) This modest package contains various common humanization utilities, like turning a number into a fuzzy human readable duration ('3 minutes ago') or into a human readable size or throughput. It works with Python 2.7 and 3.5+ and is localized to: * Dutch * Finnish * French * German * Indonesian * Italian * Japanese * Korean * Persian * Portuguese Brazilian * Russian * Simplified Chinese * Slovak * Turkish * Vietnamese ## Usage Integer humanization: ```pycon >>> import humanize >>> humanize.intcomma(12345) '12,345' >>> humanize.intword(123455913) '123.5 million' >>> humanize.intword(12345591313) '12.3 billion' >>> humanize.apnumber(4) 'four' >>> humanize.apnumber(41) '41' ``` Date & time humanization: ```pycon >>> import datetime >>> humanize.naturalday(datetime.datetime.now()) 'today' >>> humanize.naturaldelta(datetime.timedelta(seconds=1001)) '16 minutes' >>> humanize.naturalday(datetime.datetime.now() - datetime.timedelta(days=1)) 'yesterday' >>> humanize.naturalday(datetime.date(2007, 6, 5)) 'Jun 05' >>> humanize.naturaldate(datetime.date(2007, 6, 5)) 'Jun 05 2007' >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=1)) 'a second ago' >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=3600)) 'an hour ago' ``` File size humanization: ```pycon >>> humanize.naturalsize(1000000) '1.0 MB' >>> humanize.naturalsize(1000000, binary=True) '976.6 KiB' >>> humanize.naturalsize(1000000, gnu=True) '976.6K' ``` Human readable floating point numbers: ```pycon >>> humanize.fractional(1/3) '1/3' >>> humanize.fractional(1.5) '1 1/2' >>> humanize.fractional(0.3) '3/10' >>> humanize.fractional(0.333) '1/3' >>> humanize.fractional(1) '1' ``` ## Localization How to change locale at runtime: ```pycon >>> print(humanize.naturaltime(datetime.timedelta(seconds=3))) 3 seconds ago >>> _t = humanize.i18n.activate('ru_RU') >>> print(humanize.naturaltime(datetime.timedelta(seconds=3))) 3 секунды назад >>> humanize.i18n.deactivate() >>> print(humanize.naturaltime(datetime.timedelta(seconds=3))) 3 seconds ago ``` You can pass additional parameter `path` to `activate` to specify a path to search locales in. ```pycon >>> humanize.i18n.activate("pt_BR") IOError: [Errno 2] No translation file found for domain: 'humanize' >>> humanize.i18n.activate("pt_BR", path="path/to/my/portuguese/translation/") ``` How to add new phrases to existing locale files: ```console $ xgettext -o humanize.pot -k'_' -k'N_' -k'P_:1c,2' -l python src/humanize/*.py # extract new phrases $ msgmerge -U src/humanize/locale/ru_RU/LC_MESSAGES/humanize.po humanize.pot # add them to locale files $ msgfmt --check -o src/humanize/locale/ru_RU/LC_MESSAGES/humanize{.mo,.po} # compile to binary .mo ``` How to add a new locale: ```console $ msginit -i humanize.pot -o humanize/locale//LC_MESSAGES/humanize.po --locale ``` Where `` is a locale abbreviation, eg. `en_GB`, `pt_BR` or just `ru`, `fr` etc. ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.8421438 humanize-1.0.0/setup.cfg0000644000076500000240000000044000000000000015235 0ustar00hugostaff00000000000000[bdist_wheel] universal = 1 [flake8] max_line_length = 88 [tool:isort] known_third_party = freezegun,humanize,pkg_resources,setuptools force_grid_wrap = 0 include_trailing_comma = True line_length = 88 multi_line_output = 3 use_parentheses = True [egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581072183.0 humanize-1.0.0/setup.py0000644000076500000240000000366300000000000015140 0ustar00hugostaff00000000000000import io from setuptools import find_packages, setup with io.open("README.md", encoding="UTF-8") as f: long_description = f.read() def local_scheme(version): """Skip the local version (eg. +xyz of 0.6.1.dev4+gdf99fe2) to be able to upload to Test PyPI""" return "" setup( name="humanize", description="Python humanize utilities", long_description=long_description, long_description_content_type="text/markdown", author="Jason Moiron", author_email="jmoiron@jmoiron.net", maintainer="Hugo van Kemenade", url="https://github.com/jmoiron/humanize", license="MIT", keywords="humanize time size", packages=find_packages(where="src"), package_dir={"": "src"}, include_package_data=True, zip_safe=False, use_scm_version={"local_scheme": local_scheme}, setup_requires=["setuptools_scm"], extras_require={ "tests": ["freezegun", "pytest", "pytest-cov"], "tests:python_version < '3.4'": ["mock"], }, python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", # Get strings from https://pypi.org/pypi?%3Aaction=list_classifiers classifiers=[ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Text Processing", "Topic :: Text Processing :: General", ], ) ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7124932 humanize-1.0.0/src/0000755000076500000240000000000000000000000014205 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7520928 humanize-1.0.0/src/humanize/0000755000076500000240000000000000000000000016025 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186041.0 humanize-1.0.0/src/humanize/__init__.py0000644000076500000240000000112500000000000020135 0ustar00hugostaff00000000000000import pkg_resources from humanize.filesize import naturalsize from humanize.i18n import activate, deactivate from humanize.number import apnumber, fractional, intcomma, intword, ordinal from humanize.time import naturaldate, naturalday, naturaldelta, naturaltime __version__ = VERSION = pkg_resources.get_distribution(__name__).version __all__ = [ "__version__", "activate", "apnumber", "deactivate", "fractional", "intcomma", "intword", "naturaldate", "naturalday", "naturaldelta", "naturalsize", "naturaltime", "ordinal", "VERSION", ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581061752.0 humanize-1.0.0/src/humanize/compat.py0000644000076500000240000000016700000000000017666 0ustar00hugostaff00000000000000import sys if sys.version_info < (3,): string_types = (basestring,) # noqa: F821 else: string_types = (str,) ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581064624.0 humanize-1.0.0/src/humanize/filesize.py0000644000076500000240000000306500000000000020215 0ustar00hugostaff00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Bits & Bytes related humanization.""" suffixes = { "decimal": ("kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"), "binary": ("KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"), "gnu": "KMGTPEZY", } def naturalsize(value, binary=False, gnu=False, format="%.1f"): """Format a number of byteslike a human readable filesize (eg. 10 kB). By default, decimal suffixes (kB, MB) are used. Passing binary=true will use binary suffixes (KiB, MiB) are used and the base will be 2**10 instead of 10**3. If ``gnu`` is True, the binary argument is ignored and GNU-style (ls -sh style) prefixes are used (K, M) with the 2**10 definition. Non-gnu modes are compatible with jinja2's ``filesizeformat`` filter.""" if gnu: suffix = suffixes["gnu"] elif binary: suffix = suffixes["binary"] else: suffix = suffixes["decimal"] base = 1024 if (gnu or binary) else 1000 bytes = float(value) if bytes == 1 and not gnu: return "1 Byte" elif bytes < base and not gnu: return "%d Bytes" % bytes elif bytes < base and gnu: return "%dB" % bytes for i, s in enumerate(suffix): unit = base ** (i + 2) if bytes < unit and not gnu: return (format + " %s") % ((base * bytes / unit), s) elif bytes < unit and gnu: return (format + "%s") % ((base * bytes / unit), s) if gnu: return (format + "%s") % ((base * bytes / unit), s) return (format + " %s") % ((base * bytes / unit), s) ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581061752.0 humanize-1.0.0/src/humanize/i18n.py0000644000076500000240000000335300000000000017162 0ustar00hugostaff00000000000000# -*- coding: utf-8 -*- import gettext as gettext_module import os.path from threading import local __all__ = ["activate", "deactivate", "gettext", "ngettext"] _TRANSLATIONS = {None: gettext_module.NullTranslations()} _CURRENT = local() _DEFAULT_LOCALE_PATH = os.path.join(os.path.dirname(__file__), "locale") def get_translation(): try: return _TRANSLATIONS[_CURRENT.locale] except (AttributeError, KeyError): return _TRANSLATIONS[None] def activate(locale, path=None): """Set 'locale' as current locale. Search for locale in directory 'path' @param locale: language name, eg 'en_GB'""" if path is None: path = _DEFAULT_LOCALE_PATH if locale not in _TRANSLATIONS: translation = gettext_module.translation("humanize", path, [locale]) _TRANSLATIONS[locale] = translation _CURRENT.locale = locale return _TRANSLATIONS[locale] def deactivate(): _CURRENT.locale = None def gettext(message): return get_translation().gettext(message) def pgettext(msgctxt, message): """'Particular gettext' function. It works with 'msgctxt' .po modifiers and allow duplicate keys with different translations. Python 2 don't have support for this GNU gettext function, so we reimplement it. It works by joining msgctx and msgid by '4' byte.""" key = msgctxt + "\x04" + message translation = get_translation().gettext(key) return message if translation == key else translation def ngettext(message, plural, num): return get_translation().ngettext(message, plural, num) def gettext_noop(message): """Example usage: CONSTANTS = [gettext_noop('first'), gettext_noop('second')] def num_name(n): return gettext(CONSTANTS[n])""" return message ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7191627 humanize-1.0.0/src/humanize/locale/0000755000076500000240000000000000000000000017264 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.712993 humanize-1.0.0/src/humanize/locale/de_DE/0000755000076500000240000000000000000000000020224 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.770082 humanize-1.0.0/src/humanize/locale/de_DE/LC_MESSAGES/0000755000076500000240000000000000000000000022011 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/de_DE/LC_MESSAGES/humanize.mo0000644000076500000240000000476100000000000024176 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en rp|&9Pa htv(x,       ' 3 = K P V [ b j o {           *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2016-12-18 11:50+0100 Last-Translator: Christian Klein Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Generated-By: Christian Klein X-Generator: Sublime Text 3 %d Tag%d Tage%d Stunde%d Stunden%d Minute%d Minuten%d Monat%d Monate%d Sekunde%d Sekunden%d Jahr%d Jahrevor %s%s ab jetzt..ein Jahr und %d Tagein Jahr und %d Tageein Jahr und %d Monatein Jahr und %d Monateein Monat........ein Tageine Minuteein Momentein Monateine Sekundeein Jahreine StundeMilliardeQuintilliardeachtfünfvierGoogolMillionneunQuintillionjetztQuadrillardeeinsBilliardeTrillionQuadrillionsiebenTrilliardesechsdreiheutemorgenBillionzweigestern././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/de_DE/LC_MESSAGES/humanize.po0000644000076500000240000001113700000000000024174 0ustar00hugostaff00000000000000# German translation for humanize. # Copyright (C) 2016 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the humanize package. # Christian Klein , 2016. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2016-12-18 11:50+0100\n" "Last-Translator: Christian Klein \n" "Language-Team: German\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Christian Klein\n" "X-Generator: Sublime Text 3\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "." #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "." #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "." #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "." #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "." #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "." #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "." #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "." #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "." #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "." #: src/humanize/number.py:62 msgid "million" msgstr "Million" #: src/humanize/number.py:63 msgid "billion" msgstr "Milliarde" #: src/humanize/number.py:64 msgid "trillion" msgstr "Billion" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "Billiarde" #: src/humanize/number.py:66 msgid "quintillion" msgstr "Trillion" #: src/humanize/number.py:67 msgid "sextillion" msgstr "Trilliarde" #: src/humanize/number.py:68 msgid "septillion" msgstr "Quadrillion" #: src/humanize/number.py:69 msgid "octillion" msgstr "Quadrillarde" #: src/humanize/number.py:70 msgid "nonillion" msgstr "Quintillion" #: src/humanize/number.py:71 msgid "decillion" msgstr "Quintilliarde" #: src/humanize/number.py:72 msgid "googol" msgstr "Googol" #: src/humanize/number.py:108 msgid "one" msgstr "eins" #: src/humanize/number.py:109 msgid "two" msgstr "zwei" #: src/humanize/number.py:110 msgid "three" msgstr "drei" #: src/humanize/number.py:111 msgid "four" msgstr "vier" #: src/humanize/number.py:112 msgid "five" msgstr "fünf" #: src/humanize/number.py:113 msgid "six" msgstr "sechs" #: src/humanize/number.py:114 msgid "seven" msgstr "sieben" #: src/humanize/number.py:115 msgid "eight" msgstr "acht" #: src/humanize/number.py:116 msgid "nine" msgstr "neun" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "ein Moment" #: src/humanize/time.py:70 msgid "a second" msgstr "eine Sekunde" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d Sekunde" msgstr[1] "%d Sekunden" #: src/humanize/time.py:74 msgid "a minute" msgstr "eine Minute" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d Minute" msgstr[1] "%d Minuten" #: src/humanize/time.py:79 msgid "an hour" msgstr "eine Stunde" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d Stunde" msgstr[1] "%d Stunden" #: src/humanize/time.py:85 msgid "a day" msgstr "ein Tag" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d Tag" msgstr[1] "%d Tage" #: src/humanize/time.py:92 msgid "a month" msgstr "ein Monat" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d Monat" msgstr[1] "%d Monate" #: src/humanize/time.py:97 msgid "a year" msgstr "ein Jahr" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "ein Jahr und %d Tag" msgstr[1] "ein Jahr und %d Tage" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "ein Monat" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "ein Jahr und %d Monat" msgstr[1] "ein Jahr und %d Monate" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d Jahr" msgstr[1] "%d Jahre" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "%s ab jetzt" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "vor %s" #: src/humanize/time.py:132 msgid "now" msgstr "jetzt" #: src/humanize/time.py:151 msgid "today" msgstr "heute" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "morgen" #: src/humanize/time.py:155 msgid "yesterday" msgstr "gestern" ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7133267 humanize-1.0.0/src/humanize/locale/fa_IR/0000755000076500000240000000000000000000000020244 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.774799 humanize-1.0.0/src/humanize/locale/fa_IR/LC_MESSAGES/0000755000076500000240000000000000000000000022031 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/fa_IR/LC_MESSAGES/humanize.mo0000644000076500000240000000536100000000000024213 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en rn|3Gc w --  $ / > K V c p {          ( - > I \ a v        *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2017-01-10 02:44+0330 Last-Translator: Christian Klein Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Generated-By: Christian Klein X-Generator: Poedit 1.5.4 %d روز%d روز%d ساعت%d ساعت%d دقیقه%d دقیقه%d ماه%d ماه%d ثانیه%d ثانیه%d سال%d سال%s پیش%s تا به اکنون.اولین۱ سال و %d روز۱ سال و %d روز۱ سال و %d ماه۱ سال و %d ماه۱ سال و ۱ ماهدومینسومینچهارمینپنجمینششمینهفتمینهشتمیننهمینیک روزیک دقیقهیک لحظهیک ماهیک ثانیهیک سالیک ساعتمیلیارددسیلیونهشتپنجچهارگوگولمیلیوننهنونیلیوناکنوناوکتیلیونیککوادریلیونکوانتیلیونسپتیلیونهفتسکستیلیونششسهامروزفرداترلیوندودیروز././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/fa_IR/LC_MESSAGES/humanize.po0000644000076500000240000001153700000000000024220 0ustar00hugostaff00000000000000# German translation for humanize. # Copyright (C) 2016 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the humanize package. # Christian Klein , 2016. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:21+0200\n" "PO-Revision-Date: 2017-01-10 02:44+0330\n" "Last-Translator: Christian Klein \n" "Language-Team: German\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Christian Klein\n" "X-Generator: Poedit 1.5.4\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "." #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "اولین" #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "دومین" #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "سومین" #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "چهارمین" #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "پنجمین" #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "ششمین" #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "هفتمین" #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "هشتمین" #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "نهمین" #: src/humanize/number.py:62 msgid "million" msgstr "میلیون" #: src/humanize/number.py:63 msgid "billion" msgstr "میلیارد" #: src/humanize/number.py:64 msgid "trillion" msgstr "ترلیون" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "کوادریلیون" #: src/humanize/number.py:66 msgid "quintillion" msgstr "کوانتیلیون" #: src/humanize/number.py:67 msgid "sextillion" msgstr "سکستیلیون" #: src/humanize/number.py:68 msgid "septillion" msgstr "سپتیلیون" #: src/humanize/number.py:69 msgid "octillion" msgstr "اوکتیلیون" #: src/humanize/number.py:70 msgid "nonillion" msgstr "نونیلیون" #: src/humanize/number.py:71 msgid "decillion" msgstr "دسیلیون" #: src/humanize/number.py:72 msgid "googol" msgstr "گوگول" #: src/humanize/number.py:108 msgid "one" msgstr "یک" #: src/humanize/number.py:109 msgid "two" msgstr "دو" #: src/humanize/number.py:110 msgid "three" msgstr "سه" #: src/humanize/number.py:111 msgid "four" msgstr "چهار" #: src/humanize/number.py:112 msgid "five" msgstr "پنج" #: src/humanize/number.py:113 msgid "six" msgstr "شش" #: src/humanize/number.py:114 msgid "seven" msgstr "هفت" #: src/humanize/number.py:115 msgid "eight" msgstr "هشت" #: src/humanize/number.py:116 msgid "nine" msgstr "نه" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "یک لحظه" #: src/humanize/time.py:70 msgid "a second" msgstr "یک ثانیه" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d ثانیه" msgstr[1] "%d ثانیه" #: src/humanize/time.py:74 msgid "a minute" msgstr "یک دقیقه" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d دقیقه" msgstr[1] "%d دقیقه" #: src/humanize/time.py:79 msgid "an hour" msgstr "یک ساعت" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ساعت" msgstr[1] "%d ساعت" #: src/humanize/time.py:85 msgid "a day" msgstr "یک روز" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d روز" msgstr[1] "%d روز" #: src/humanize/time.py:92 msgid "a month" msgstr "یک ماه" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d ماه" msgstr[1] "%d ماه" #: src/humanize/time.py:97 msgid "a year" msgstr "یک سال" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "۱ سال و %d روز" msgstr[1] "۱ سال و %d روز" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "۱ سال و ۱ ماه" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "۱ سال و %d ماه" msgstr[1] "۱ سال و %d ماه" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d سال" msgstr[1] "%d سال" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "%s تا به اکنون" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s پیش" #: src/humanize/time.py:132 msgid "now" msgstr "اکنون" #: src/humanize/time.py:151 msgid "today" msgstr "امروز" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "فردا" #: src/humanize/time.py:155 msgid "yesterday" msgstr "دیروز" ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.713654 humanize-1.0.0/src/humanize/locale/fi_FI/0000755000076500000240000000000000000000000020240 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.778038 humanize-1.0.0/src/humanize/locale/fi_FI/LC_MESSAGES/0000755000076500000240000000000000000000000022025 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/fi_FI/LC_MESSAGES/humanize.mo0000644000076500000240000000477700000000000024221 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en rU|/F Y cnp)r*     ) 5 ? E L S ] g s w       *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2017-03-02 11:26+0200 Last-Translator: Ville Skyttä Language-Team: Finnish Language: fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 1.8.12 %d päivä%d päivää%d tunti%d tuntia%d minuutti%d minuuttia%d kuukausi%d kuukautta%d sekunti%d sekuntia%d vuosi%d vuotta%s sitten%s tästä..1 vuosi, %d päivä1 vuosi, %d päivää1 vuosi, %d kuukausi1 vuosi, %d kuukautta1 vuosi, 1 kuukausi........päiväminuuttihetkikuukausisekuntivuosituntimiljardiadekiljoonaakahdeksanviisineljägoogolmiljoonaayhdeksännoniljoonaanytoktiljoonaayksikvadriljoonaakvintiljoonaaseptiljoonaaseitsemänsekstiljoonaakuusikolmetänäänhuomennabiljoonaakaksieilen././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/fi_FI/LC_MESSAGES/humanize.po0000644000076500000240000001116500000000000024211 0ustar00hugostaff00000000000000# Finnish translations for humanize package # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the humanize package. # Ville Skyttä , 2017. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2017-03-02 11:26+0200\n" "Last-Translator: Ville Skyttä \n" "Language-Team: Finnish\n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.12\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "." #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "." #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "." #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "." #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "." #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "." #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "." #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "." #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "." #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "." #: src/humanize/number.py:62 msgid "million" msgstr "miljoonaa" #: src/humanize/number.py:63 msgid "billion" msgstr "miljardia" #: src/humanize/number.py:64 msgid "trillion" msgstr "biljoonaa" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "kvadriljoonaa" #: src/humanize/number.py:66 msgid "quintillion" msgstr "kvintiljoonaa" #: src/humanize/number.py:67 msgid "sextillion" msgstr "sekstiljoonaa" #: src/humanize/number.py:68 msgid "septillion" msgstr "septiljoonaa" #: src/humanize/number.py:69 msgid "octillion" msgstr "oktiljoonaa" #: src/humanize/number.py:70 msgid "nonillion" msgstr "noniljoonaa" #: src/humanize/number.py:71 msgid "decillion" msgstr "dekiljoonaa" #: src/humanize/number.py:72 msgid "googol" msgstr "googol" #: src/humanize/number.py:108 msgid "one" msgstr "yksi" #: src/humanize/number.py:109 msgid "two" msgstr "kaksi" #: src/humanize/number.py:110 msgid "three" msgstr "kolme" #: src/humanize/number.py:111 msgid "four" msgstr "neljä" #: src/humanize/number.py:112 msgid "five" msgstr "viisi" #: src/humanize/number.py:113 msgid "six" msgstr "kuusi" #: src/humanize/number.py:114 msgid "seven" msgstr "seitsemän" #: src/humanize/number.py:115 msgid "eight" msgstr "kahdeksan" #: src/humanize/number.py:116 msgid "nine" msgstr "yhdeksän" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "hetki" #: src/humanize/time.py:70 msgid "a second" msgstr "sekunti" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekunti" msgstr[1] "%d sekuntia" #: src/humanize/time.py:74 msgid "a minute" msgstr "minuutti" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuutti" msgstr[1] "%d minuuttia" #: src/humanize/time.py:79 msgid "an hour" msgstr "tunti" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d tunti" msgstr[1] "%d tuntia" #: src/humanize/time.py:85 msgid "a day" msgstr "päivä" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d päivä" msgstr[1] "%d päivää" #: src/humanize/time.py:92 msgid "a month" msgstr "kuukausi" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d kuukausi" msgstr[1] "%d kuukautta" #: src/humanize/time.py:97 msgid "a year" msgstr "vuosi" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 vuosi, %d päivä" msgstr[1] "1 vuosi, %d päivää" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1 vuosi, 1 kuukausi" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 vuosi, %d kuukausi" msgstr[1] "1 vuosi, %d kuukautta" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d vuosi" msgstr[1] "%d vuotta" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "%s tästä" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s sitten" #: src/humanize/time.py:132 msgid "now" msgstr "nyt" #: src/humanize/time.py:151 msgid "today" msgstr "tänään" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "huomenna" #: src/humanize/time.py:155 msgid "yesterday" msgstr "eilen" ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.713977 humanize-1.0.0/src/humanize/locale/fr_FR/0000755000076500000240000000000000000000000020262 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.781627 humanize-1.0.0/src/humanize/locale/fr_FR/LC_MESSAGES/0000755000076500000240000000000000000000000022047 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/fr_FR/LC_MESSAGES/humanize.mo0000644000076500000240000000345600000000000024234 0ustar00hugostaff00000000000000!$/, 1FW ^j" #)/8 <xF  ,6">!a       $) !     %d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 montha daya minutea momenta montha seconda yearan hourbillioneightfivefourninenowonesevensixthreetodaytomorrowtwoyesterdayProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: 2013-06-22 08:52+0100 Last-Translator: Olivier Cortès Language-Team: fr_FR Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Generated-By: Babel 0.9.6 X-Generator: Poedit 1.5.5 %d jour%d jours%d heure%d heures%d minute%d minutes%d mois%d mois%d seconde%d secondes%d an%d ansil y a %sdans %sun an et %d jourun an et %d joursun an et %d moisun an et %d moisun an et un moisun jourune minuteun momentun moisune secondeun anune heuremilliardhuitcinqquatreneufmaintenantunseptsixtroisaujourd'huidemaindeuxhier././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/fr_FR/LC_MESSAGES/humanize.po0000644000076500000240000001152700000000000024235 0ustar00hugostaff00000000000000# French (France) translations for PROJECT. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2013-06-22 08:52+0100\n" "Last-Translator: Olivier Cortès \n" "Language-Team: fr_FR \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "Generated-By: Babel 0.9.6\n" "X-Generator: Poedit 1.5.5\n" #: src/humanize/number.py:24 #, fuzzy msgctxt "0" msgid "th" msgstr "e" #: src/humanize/number.py:25 #, fuzzy msgctxt "1" msgid "st" msgstr "er" #: src/humanize/number.py:26 #, fuzzy msgctxt "2" msgid "nd" msgstr "e" #: src/humanize/number.py:27 #, fuzzy msgctxt "3" msgid "rd" msgstr "e" #: src/humanize/number.py:28 #, fuzzy msgctxt "4" msgid "th" msgstr "e" #: src/humanize/number.py:29 #, fuzzy msgctxt "5" msgid "th" msgstr "e" #: src/humanize/number.py:30 #, fuzzy msgctxt "6" msgid "th" msgstr "e" #: src/humanize/number.py:31 #, fuzzy msgctxt "7" msgid "th" msgstr "e" #: src/humanize/number.py:32 #, fuzzy msgctxt "8" msgid "th" msgstr "e" #: src/humanize/number.py:33 #, fuzzy msgctxt "9" msgid "th" msgstr "e" #: src/humanize/number.py:62 #, fuzzy msgid "million" msgstr "%(value)s million" #: src/humanize/number.py:63 msgid "billion" msgstr "milliard" #: src/humanize/number.py:64 #, fuzzy msgid "trillion" msgstr "%(value)s billion" #: src/humanize/number.py:65 #, fuzzy msgid "quadrillion" msgstr "%(value)s billiard" #: src/humanize/number.py:66 #, fuzzy msgid "quintillion" msgstr "%(value)s trillion" #: src/humanize/number.py:67 #, fuzzy msgid "sextillion" msgstr "%(value)s trilliard" #: src/humanize/number.py:68 #, fuzzy msgid "septillion" msgstr "%(value)s quatrillion" #: src/humanize/number.py:69 #, fuzzy msgid "octillion" msgstr "%(value)s quadrilliard" #: src/humanize/number.py:70 #, fuzzy msgid "nonillion" msgstr "%(value)s quintillion" #: src/humanize/number.py:71 #, fuzzy msgid "decillion" msgstr "%(value)s quintilliard" #: src/humanize/number.py:72 #, fuzzy msgid "googol" msgstr "%(value)s gogol" #: src/humanize/number.py:108 msgid "one" msgstr "un" #: src/humanize/number.py:109 msgid "two" msgstr "deux" #: src/humanize/number.py:110 msgid "three" msgstr "trois" #: src/humanize/number.py:111 msgid "four" msgstr "quatre" #: src/humanize/number.py:112 msgid "five" msgstr "cinq" #: src/humanize/number.py:113 msgid "six" msgstr "six" #: src/humanize/number.py:114 msgid "seven" msgstr "sept" #: src/humanize/number.py:115 msgid "eight" msgstr "huit" #: src/humanize/number.py:116 msgid "nine" msgstr "neuf" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "un moment" #: src/humanize/time.py:70 msgid "a second" msgstr "une seconde" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d seconde" msgstr[1] "%d secondes" #: src/humanize/time.py:74 msgid "a minute" msgstr "une minute" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minute" msgstr[1] "%d minutes" #: src/humanize/time.py:79 msgid "an hour" msgstr "une heure" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d heure" msgstr[1] "%d heures" #: src/humanize/time.py:85 msgid "a day" msgstr "un jour" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d jour" msgstr[1] "%d jours" #: src/humanize/time.py:92 msgid "a month" msgstr "un mois" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mois" msgstr[1] "%d mois" #: src/humanize/time.py:97 msgid "a year" msgstr "un an" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "un an et %d jour" msgstr[1] "un an et %d jours" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "un an et un mois" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "un an et %d mois" msgstr[1] "un an et %d mois" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d an" msgstr[1] "%d ans" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "dans %s" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "il y a %s" #: src/humanize/time.py:132 msgid "now" msgstr "maintenant" #: src/humanize/time.py:151 msgid "today" msgstr "aujourd'hui" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "demain" #: src/humanize/time.py:155 msgid "yesterday" msgstr "hier" ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7143033 humanize-1.0.0/src/humanize/locale/id_ID/0000755000076500000240000000000000000000000020234 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7849436 humanize-1.0.0/src/humanize/locale/id_ID/LC_MESSAGES/0000755000076500000240000000000000000000000022021 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/id_ID/LC_MESSAGES/humanize.mo0000644000076500000240000000450700000000000024204 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en r:|   /@BDFHJLNPW _mu}          $ - 3 ; ? *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: Report-Msgid-Bugs-To: PO-Revision-Date: 2017-03-18 15:41+0700 Last-Translator: adie.rebel@gmail.com Language-Team: Indonesian Language: id MIME-Version: 1.0 Content-Type: text/plain; charset=ASCII Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Poedit 1.8.11 %d hari%d jam%d menit%d bulan%d detik%d tahun%s yang lalu%s dari sekarang..1 tahun, %d hari1 tahun, %d bulan1 tahun, 1 bulan........seharisemenitbeberapa saatsebulansedetiksetahunsejammiliardecilliondelapanlimaempatgoogoljutasembilannonillionsekarangoctillionsatuquadrillionquintillionseptilliontujuhsextillionenamtigahari inibesoktriliunduakemarin././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/id_ID/LC_MESSAGES/humanize.po0000644000076500000240000001052300000000000024202 0ustar00hugostaff00000000000000# Indonesian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # , 2017. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2017-03-18 15:41+0700\n" "Last-Translator: adie.rebel@gmail.com\n" "Language-Team: Indonesian\n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.8.11\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "." #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "." #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "." #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "." #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "." #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "." #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "." #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "." #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "." #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "." #: src/humanize/number.py:62 msgid "million" msgstr "juta" #: src/humanize/number.py:63 msgid "billion" msgstr "miliar" #: src/humanize/number.py:64 msgid "trillion" msgstr "triliun" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "quadrillion" #: src/humanize/number.py:66 msgid "quintillion" msgstr "quintillion" #: src/humanize/number.py:67 msgid "sextillion" msgstr "sextillion" #: src/humanize/number.py:68 msgid "septillion" msgstr "septillion" #: src/humanize/number.py:69 msgid "octillion" msgstr "octillion" #: src/humanize/number.py:70 msgid "nonillion" msgstr "nonillion" #: src/humanize/number.py:71 msgid "decillion" msgstr "decillion" #: src/humanize/number.py:72 msgid "googol" msgstr "googol" #: src/humanize/number.py:108 msgid "one" msgstr "satu" #: src/humanize/number.py:109 msgid "two" msgstr "dua" #: src/humanize/number.py:110 msgid "three" msgstr "tiga" #: src/humanize/number.py:111 msgid "four" msgstr "empat" #: src/humanize/number.py:112 msgid "five" msgstr "lima" #: src/humanize/number.py:113 msgid "six" msgstr "enam" #: src/humanize/number.py:114 msgid "seven" msgstr "tujuh" #: src/humanize/number.py:115 msgid "eight" msgstr "delapan" #: src/humanize/number.py:116 msgid "nine" msgstr "sembilan" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "beberapa saat" #: src/humanize/time.py:70 msgid "a second" msgstr "sedetik" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d detik" #: src/humanize/time.py:74 msgid "a minute" msgstr "semenit" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d menit" #: src/humanize/time.py:79 msgid "an hour" msgstr "sejam" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d jam" #: src/humanize/time.py:85 msgid "a day" msgstr "sehari" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d hari" #: src/humanize/time.py:92 msgid "a month" msgstr "sebulan" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d bulan" #: src/humanize/time.py:97 msgid "a year" msgstr "setahun" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 tahun, %d hari" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1 tahun, 1 bulan" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 tahun, %d bulan" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d tahun" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "%s dari sekarang" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s yang lalu" #: src/humanize/time.py:132 msgid "now" msgstr "sekarang" #: src/humanize/time.py:151 msgid "today" msgstr "hari ini" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "besok" #: src/humanize/time.py:155 msgid "yesterday" msgstr "kemarin" ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.715183 humanize-1.0.0/src/humanize/locale/it_IT/0000755000076500000240000000000000000000000020274 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7885828 humanize-1.0.0/src/humanize/locale/it_IT/LC_MESSAGES/0000755000076500000240000000000000000000000022061 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186095.0 humanize-1.0.0/src/humanize/locale/it_IT/LC_MESSAGES/humanize.mo0000644000076500000240000000465000000000000024243 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en r?| (.58';#c         $ , 1 = D Q U ^ g s y        *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: Report-Msgid-Bugs-To: PO-Revision-Date: 2018-10-27 22:52+0200 Last-Translator: derfel Language-Team: Italian Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 2.2 %d giorno%d giorni%d ora%d ore%d minuto%d minuti%d mese%d mesi%d secondo%d secondi%d anno%d anni%s fafra %sººun anno e %d giornoun anno e %d giorniun anno e %d meseun anno e %d mesiun anno ed un meseººººººººun giornoun minutoun momentoun meseun secondoun announ'oramiliardiquintiliardiottocinquequattrogoogolmilioninovequintilioniadessoquadriliardiunobiliarditrilioniquadrilionisettetriliardiseitreoggidomanibilionidueieri././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/it_IT/LC_MESSAGES/humanize.po0000644000076500000240000001102200000000000024235 0ustar00hugostaff00000000000000# Italian translations for PACKAGE package. # Copyright (C) 2018 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # derfel , 2018. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2018-10-27 22:52+0200\n" "Last-Translator: derfel \n" "Language-Team: Italian\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.2\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "º" #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "º" #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "º" #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "º" #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "º" #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "º" #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "º" #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "º" #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "º" #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "º" #: src/humanize/number.py:62 msgid "million" msgstr "milioni" #: src/humanize/number.py:63 msgid "billion" msgstr "miliardi" #: src/humanize/number.py:64 msgid "trillion" msgstr "bilioni" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "biliardi" #: src/humanize/number.py:66 msgid "quintillion" msgstr "trilioni" #: src/humanize/number.py:67 msgid "sextillion" msgstr "triliardi" #: src/humanize/number.py:68 msgid "septillion" msgstr "quadrilioni" #: src/humanize/number.py:69 msgid "octillion" msgstr "quadriliardi" #: src/humanize/number.py:70 msgid "nonillion" msgstr "quintilioni" #: src/humanize/number.py:71 msgid "decillion" msgstr "quintiliardi" #: src/humanize/number.py:72 msgid "googol" msgstr "googol" #: src/humanize/number.py:108 msgid "one" msgstr "uno" #: src/humanize/number.py:109 msgid "two" msgstr "due" #: src/humanize/number.py:110 msgid "three" msgstr "tre" #: src/humanize/number.py:111 msgid "four" msgstr "quattro" #: src/humanize/number.py:112 msgid "five" msgstr "cinque" #: src/humanize/number.py:113 msgid "six" msgstr "sei" #: src/humanize/number.py:114 msgid "seven" msgstr "sette" #: src/humanize/number.py:115 msgid "eight" msgstr "otto" #: src/humanize/number.py:116 msgid "nine" msgstr "nove" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "un momento" #: src/humanize/time.py:70 msgid "a second" msgstr "un secondo" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d secondo" msgstr[1] "%d secondi" #: src/humanize/time.py:74 msgid "a minute" msgstr "un minuto" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minuti" #: src/humanize/time.py:79 msgid "an hour" msgstr "un'ora" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ora" msgstr[1] "%d ore" #: src/humanize/time.py:85 msgid "a day" msgstr "un giorno" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d giorno" msgstr[1] "%d giorni" #: src/humanize/time.py:92 msgid "a month" msgstr "un mese" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mese" msgstr[1] "%d mesi" #: src/humanize/time.py:97 msgid "a year" msgstr "un anno" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "un anno e %d giorno" msgstr[1] "un anno e %d giorni" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "un anno ed un mese" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "un anno e %d mese" msgstr[1] "un anno e %d mesi" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d anno" msgstr[1] "%d anni" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "fra %s" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s fa" #: src/humanize/time.py:132 msgid "now" msgstr "adesso" #: src/humanize/time.py:151 msgid "today" msgstr "oggi" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "domani" #: src/humanize/time.py:155 msgid "yesterday" msgstr "ieri" ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7156565 humanize-1.0.0/src/humanize/locale/ja_JP/0000755000076500000240000000000000000000000020247 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7924895 humanize-1.0.0/src/humanize/locale/ja_JP/LC_MESSAGES/0000755000076500000240000000000000000000000022034 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/ja_JP/LC_MESSAGES/humanize.mo0000644000076500000240000000364000000000000024214 0ustar00hugostaff00000000000000*l; */4"Sv& *a4   #*18=BJOT\`dhosw{'&#" %($*  ! )  %d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea montha seconda yearan houreightfivefourmillionnineonesevensixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2018-01-22 10:48+0900 Last-Translator: Kan Torii Language-Team: Japanese Language: ja MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; Generated-By: Babel 0.9.6 X-Generator: Poedit 2.0.6 %d日%d時間%d分%dヶ月%d秒%d年%s前%s後番目番目1年 %d日1年 %dヶ月1年 1ヶ月番目番目番目番目番目番目番目番目1日1分1ヶ月1秒1年1時間八五四百万九一七六三本日明日兆二昨日././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/ja_JP/LC_MESSAGES/humanize.po0000644000076500000240000001060700000000000024220 0ustar00hugostaff00000000000000# Japanese (Japan) translations for humanize. # Copyright (C) 2018 # This file is distributed under the same license as the humanize project. # @qoolloop, 2018. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2018-01-22 10:48+0900\n" "Last-Translator: Kan Torii \n" "Language-Team: Japanese\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Babel 0.9.6\n" "X-Generator: Poedit 2.0.6\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "番目" #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "番目" #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "番目" #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "番目" #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "番目" #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "番目" #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "番目" #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "番目" #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "番目" #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "番目" #: src/humanize/number.py:62 msgid "million" msgstr "百万" #: src/humanize/number.py:63 #, fuzzy msgid "billion" msgstr "十億" #: src/humanize/number.py:64 msgid "trillion" msgstr "兆" #: src/humanize/number.py:65 #, fuzzy msgid "quadrillion" msgstr "千兆" #: src/humanize/number.py:66 #, fuzzy msgid "quintillion" msgstr "百京" #: src/humanize/number.py:67 #, fuzzy msgid "sextillion" msgstr "十垓" #: src/humanize/number.py:68 #, fuzzy msgid "septillion" msgstr "じょ" #: src/humanize/number.py:69 #, fuzzy msgid "octillion" msgstr "千じょ" #: src/humanize/number.py:70 #, fuzzy msgid "nonillion" msgstr "百穣" #: src/humanize/number.py:71 #, fuzzy msgid "decillion" msgstr "十溝" #: src/humanize/number.py:72 #, fuzzy msgid "googol" msgstr "溝無量大数" #: src/humanize/number.py:108 msgid "one" msgstr "一" #: src/humanize/number.py:109 msgid "two" msgstr "二" #: src/humanize/number.py:110 msgid "three" msgstr "三" #: src/humanize/number.py:111 msgid "four" msgstr "四" #: src/humanize/number.py:112 msgid "five" msgstr "五" #: src/humanize/number.py:113 msgid "six" msgstr "六" #: src/humanize/number.py:114 msgid "seven" msgstr "七" #: src/humanize/number.py:115 msgid "eight" msgstr "八" #: src/humanize/number.py:116 msgid "nine" msgstr "九" #: src/humanize/time.py:68 src/humanize/time.py:131 #, fuzzy msgid "a moment" msgstr "短時間" #: src/humanize/time.py:70 msgid "a second" msgstr "1秒" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d秒" #: src/humanize/time.py:74 msgid "a minute" msgstr "1分" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d分" #: src/humanize/time.py:79 msgid "an hour" msgstr "1時間" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d時間" #: src/humanize/time.py:85 msgid "a day" msgstr "1日" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d日" #: src/humanize/time.py:92 msgid "a month" msgstr "1ヶ月" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%dヶ月" #: src/humanize/time.py:97 msgid "a year" msgstr "1年" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1年 %d日" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1年 1ヶ月" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1年 %dヶ月" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d年" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "%s後" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s前" #: src/humanize/time.py:132 #, fuzzy msgid "now" msgstr "今" #: src/humanize/time.py:151 msgid "today" msgstr "本日" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "明日" #: src/humanize/time.py:155 msgid "yesterday" msgstr "昨日" ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.716145 humanize-1.0.0/src/humanize/locale/ko_KR/0000755000076500000240000000000000000000000020271 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7962277 humanize-1.0.0/src/humanize/locale/ko_KR/LC_MESSAGES/0000755000076500000240000000000000000000000022056 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/ko_KR/LC_MESSAGES/humanize.mo0000644000076500000240000000340300000000000024233 0ustar00hugostaff00000000000000",/<.AVg nz" $)-17;AGP Td^    !(> \jqv}!  "    %d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 montha daya minutea momenta montha seconda yearan hourbillioneightfivefourmillionninenowonesevensixthreetodaytomorrowtwoyesterdayProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: 2013-07-10 11:38+0900 Last-Translator: @youngrok Language-Team: ko_KR Language: ko MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Generated-By: Babel 0.9.6 X-Generator: Poedit 1.5.7 %d jour%d일%d heure%d시간%d분%d분%d mois%d개월%d초%d초%d 년%d ans%s 전%s 후1년 %d일1년 %d일1년, %d개월1년, %d개월1년, 1개월하루1분잠깐한달1초1년1시간milliard여덟다섯넷%(value)s million아홉방금하나일곱여섯셋오늘내일둘어제././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/ko_KR/LC_MESSAGES/humanize.po0000644000076500000240000001141100000000000024234 0ustar00hugostaff00000000000000# Korean (Korea) translations for humanize. # Copyright (C) 2013 # This file is distributed under the same license as the humanize project. # @youngrok, 2013. # msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2013-07-10 11:38+0900\n" "Last-Translator: @youngrok\n" "Language-Team: ko_KR \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "Generated-By: Babel 0.9.6\n" "X-Generator: Poedit 1.5.7\n" #: src/humanize/number.py:24 #, fuzzy msgctxt "0" msgid "th" msgstr "번째" #: src/humanize/number.py:25 #, fuzzy msgctxt "1" msgid "st" msgstr "번째" #: src/humanize/number.py:26 #, fuzzy msgctxt "2" msgid "nd" msgstr "번째" #: src/humanize/number.py:27 #, fuzzy msgctxt "3" msgid "rd" msgstr "번째" #: src/humanize/number.py:28 #, fuzzy msgctxt "4" msgid "th" msgstr "번째" #: src/humanize/number.py:29 #, fuzzy msgctxt "5" msgid "th" msgstr "번째" #: src/humanize/number.py:30 #, fuzzy msgctxt "6" msgid "th" msgstr "번째" #: src/humanize/number.py:31 #, fuzzy msgctxt "7" msgid "th" msgstr "번째" #: src/humanize/number.py:32 #, fuzzy msgctxt "8" msgid "th" msgstr "번째" #: src/humanize/number.py:33 #, fuzzy msgctxt "9" msgid "th" msgstr "번째" #: src/humanize/number.py:62 msgid "million" msgstr "%(value)s million" #: src/humanize/number.py:63 msgid "billion" msgstr "milliard" #: src/humanize/number.py:64 #, fuzzy msgid "trillion" msgstr "%(value)s billion" #: src/humanize/number.py:65 #, fuzzy msgid "quadrillion" msgstr "%(value)s quadrillion" #: src/humanize/number.py:66 #, fuzzy msgid "quintillion" msgstr "%(value)s quintillion" #: src/humanize/number.py:67 #, fuzzy msgid "sextillion" msgstr "%(value)s sextillion" #: src/humanize/number.py:68 #, fuzzy msgid "septillion" msgstr "%(value)s septillion" #: src/humanize/number.py:69 #, fuzzy msgid "octillion" msgstr "%(value)s octillion" #: src/humanize/number.py:70 #, fuzzy msgid "nonillion" msgstr "%(value)s nonillion" #: src/humanize/number.py:71 #, fuzzy msgid "decillion" msgstr "%(value)s décillion" #: src/humanize/number.py:72 #, fuzzy msgid "googol" msgstr "%(value)s gogol" #: src/humanize/number.py:108 msgid "one" msgstr "하나" #: src/humanize/number.py:109 msgid "two" msgstr "둘" #: src/humanize/number.py:110 msgid "three" msgstr "셋" #: src/humanize/number.py:111 msgid "four" msgstr "넷" #: src/humanize/number.py:112 msgid "five" msgstr "다섯" #: src/humanize/number.py:113 msgid "six" msgstr "여섯" #: src/humanize/number.py:114 msgid "seven" msgstr "일곱" #: src/humanize/number.py:115 msgid "eight" msgstr "여덟" #: src/humanize/number.py:116 msgid "nine" msgstr "아홉" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "잠깐" #: src/humanize/time.py:70 msgid "a second" msgstr "1초" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d초" msgstr[1] "%d초" #: src/humanize/time.py:74 msgid "a minute" msgstr "1분" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d분" msgstr[1] "%d분" #: src/humanize/time.py:79 msgid "an hour" msgstr "1시간" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d heure" msgstr[1] "%d시간" #: src/humanize/time.py:85 msgid "a day" msgstr "하루" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d jour" msgstr[1] "%d일" #: src/humanize/time.py:92 msgid "a month" msgstr "한달" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mois" msgstr[1] "%d개월" #: src/humanize/time.py:97 msgid "a year" msgstr "1년" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1년 %d일" msgstr[1] "1년 %d일" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1년, 1개월" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1년, %d개월" msgstr[1] "1년, %d개월" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d 년" msgstr[1] "%d ans" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "%s 후" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s 전" #: src/humanize/time.py:132 msgid "now" msgstr "방금" #: src/humanize/time.py:151 msgid "today" msgstr "오늘" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "내일" #: src/humanize/time.py:155 msgid "yesterday" msgstr "어제" ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7166061 humanize-1.0.0/src/humanize/locale/nl_NL/0000755000076500000240000000000000000000000020266 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7999969 humanize-1.0.0/src/humanize/locale/nl_NL/LC_MESSAGES/0000755000076500000240000000000000000000000022053 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/nl_NL/LC_MESSAGES/humanize.mo0000644000076500000240000000472100000000000024234 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en rg|,C S^fim#        & 2 7 < A H P V b e q w           *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: 2015-03-25 21:08+0100 Last-Translator: Martin van Wingerden Language-Team: nl_NL Language: nl_NL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Generated-By: Babel 0.9.6 X-Generator: Poedit 1.7.5 %d dag%d dagen%d uur%d uren%d minuut%d minuten%d maand%d maanden%d seconde%d seconden%d jaar%d jaar%s geledenover %sdeste1 jaar, %d dag1 jaar, %d dagen1 jaar, %d maand1 jaar, %d maanden1 jaar, 1 maanddedededededededeeen dageen minuuteen momenteen maandeen secondeeen jaareen uurmiljardquintiljardachtvijfviergoogolmiljoennegenquintiljoennuquadriljardéénbiljardtriljoenquadriljoenzeventriljardzesdrievandaagmorgenbiljoentweegisteren././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/nl_NL/LC_MESSAGES/humanize.po0000644000076500000240000001106100000000000024232 0ustar00hugostaff00000000000000# French (France) translations for PROJECT. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2015-03-25 21:08+0100\n" "Last-Translator: Martin van Wingerden\n" "Language-Team: nl_NL\n" "Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 0.9.6\n" "X-Generator: Poedit 1.7.5\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "de" #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "ste" #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "de" #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "de" #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "de" #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "de" #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "de" #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "de" #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "de" #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "de" #: src/humanize/number.py:62 msgid "million" msgstr "miljoen" #: src/humanize/number.py:63 msgid "billion" msgstr "miljard" #: src/humanize/number.py:64 msgid "trillion" msgstr "biljoen" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "biljard" #: src/humanize/number.py:66 msgid "quintillion" msgstr "triljoen" #: src/humanize/number.py:67 msgid "sextillion" msgstr "triljard" #: src/humanize/number.py:68 msgid "septillion" msgstr "quadriljoen" #: src/humanize/number.py:69 msgid "octillion" msgstr "quadriljard" #: src/humanize/number.py:70 msgid "nonillion" msgstr "quintiljoen" #: src/humanize/number.py:71 msgid "decillion" msgstr "quintiljard" #: src/humanize/number.py:72 msgid "googol" msgstr "googol" #: src/humanize/number.py:108 msgid "one" msgstr "één" #: src/humanize/number.py:109 msgid "two" msgstr "twee" #: src/humanize/number.py:110 msgid "three" msgstr "drie" #: src/humanize/number.py:111 msgid "four" msgstr "vier" #: src/humanize/number.py:112 msgid "five" msgstr "vijf" #: src/humanize/number.py:113 msgid "six" msgstr "zes" #: src/humanize/number.py:114 msgid "seven" msgstr "zeven" #: src/humanize/number.py:115 msgid "eight" msgstr "acht" #: src/humanize/number.py:116 msgid "nine" msgstr "negen" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "een moment" #: src/humanize/time.py:70 msgid "a second" msgstr "een seconde" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d seconde" msgstr[1] "%d seconden" #: src/humanize/time.py:74 msgid "a minute" msgstr "een minuut" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuut" msgstr[1] "%d minuten" #: src/humanize/time.py:79 msgid "an hour" msgstr "een uur" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d uur" msgstr[1] "%d uren" #: src/humanize/time.py:85 msgid "a day" msgstr "een dag" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dag" msgstr[1] "%d dagen" #: src/humanize/time.py:92 msgid "a month" msgstr "een maand" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d maand" msgstr[1] "%d maanden" #: src/humanize/time.py:97 msgid "a year" msgstr "een jaar" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 jaar, %d dag" msgstr[1] "1 jaar, %d dagen" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1 jaar, 1 maand" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 jaar, %d maand" msgstr[1] "1 jaar, %d maanden" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d jaar" msgstr[1] "%d jaar" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "over %s" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s geleden" #: src/humanize/time.py:132 msgid "now" msgstr "nu" #: src/humanize/time.py:151 msgid "today" msgstr "vandaag" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "morgen" #: src/humanize/time.py:155 msgid "yesterday" msgstr "gisteren" ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7169938 humanize-1.0.0/src/humanize/locale/pt_BR/0000755000076500000240000000000000000000000020272 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.8038301 humanize-1.0.0/src/humanize/locale/pt_BR/LC_MESSAGES/0000755000076500000240000000000000000000000022057 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/pt_BR/LC_MESSAGES/humanize.mo0000644000076500000240000000457500000000000024247 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en r$|  =^mpsvy|           * 6 A F Q V \ a i r w *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: Report-Msgid-Bugs-To: PO-Revision-Date: 2016-06-15 15:58-0300 Last-Translator: Language-Team: Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Poedit 1.8.5 %d dia%d dias%d hora%d horas%d minuto%d minutos%d mês%d meses%d segundo%d segundos%d ano%d anosa %sem %sºº1 ano e %d dia1 ano e %d dias1 ano e %d mês1 ano e %d meses1 ano e 1 mêsººººººººum diaum minutoum momentoum mêsum segundoum anouma horabilhãodecilhãooitocincoquatroundecilhãomilhãonovenonilhãoagoraoctilhãoumquatrilhãoquintilhãoseptilhãosetesextilhãoseistrêshojeamanhãtrilhãodoisontem././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/pt_BR/LC_MESSAGES/humanize.po0000644000076500000240000001073100000000000024241 0ustar00hugostaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2016-06-15 15:58-0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 1.8.5\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "º" #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "º" #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "º" #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "º" #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "º" #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "º" #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "º" #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "º" #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "º" #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "º" #: src/humanize/number.py:62 msgid "million" msgstr "milhão" #: src/humanize/number.py:63 msgid "billion" msgstr "bilhão" #: src/humanize/number.py:64 msgid "trillion" msgstr "trilhão" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "quatrilhão" #: src/humanize/number.py:66 msgid "quintillion" msgstr "quintilhão" #: src/humanize/number.py:67 msgid "sextillion" msgstr "sextilhão" #: src/humanize/number.py:68 msgid "septillion" msgstr "septilhão" #: src/humanize/number.py:69 msgid "octillion" msgstr "octilhão" #: src/humanize/number.py:70 msgid "nonillion" msgstr "nonilhão" #: src/humanize/number.py:71 msgid "decillion" msgstr "decilhão" #: src/humanize/number.py:72 msgid "googol" msgstr "undecilhão" #: src/humanize/number.py:108 msgid "one" msgstr "um" #: src/humanize/number.py:109 msgid "two" msgstr "dois" #: src/humanize/number.py:110 msgid "three" msgstr "três" #: src/humanize/number.py:111 msgid "four" msgstr "quatro" #: src/humanize/number.py:112 msgid "five" msgstr "cinco" #: src/humanize/number.py:113 msgid "six" msgstr "seis" #: src/humanize/number.py:114 msgid "seven" msgstr "sete" #: src/humanize/number.py:115 msgid "eight" msgstr "oito" #: src/humanize/number.py:116 msgid "nine" msgstr "nove" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "um momento" #: src/humanize/time.py:70 msgid "a second" msgstr "um segundo" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: src/humanize/time.py:74 msgid "a minute" msgstr "um minuto" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: src/humanize/time.py:79 msgid "an hour" msgstr "uma hora" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: src/humanize/time.py:85 msgid "a day" msgstr "um dia" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dia" msgstr[1] "%d dias" #: src/humanize/time.py:92 msgid "a month" msgstr "um mês" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mês" msgstr[1] "%d meses" #: src/humanize/time.py:97 msgid "a year" msgstr "um ano" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 ano e %d dia" msgstr[1] "1 ano e %d dias" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1 ano e 1 mês" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 ano e %d mês" msgstr[1] "1 ano e %d meses" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d ano" msgstr[1] "%d anos" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "em %s" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "a %s" #: src/humanize/time.py:132 msgid "now" msgstr "agora" #: src/humanize/time.py:151 msgid "today" msgstr "hoje" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "amanhã" #: src/humanize/time.py:155 msgid "yesterday" msgstr "ontem" ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7173843 humanize-1.0.0/src/humanize/locale/ru_RU/0000755000076500000240000000000000000000000020320 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.808063 humanize-1.0.0/src/humanize/locale/ru_RU/LC_MESSAGES/0000755000076500000240000000000000000000000022105 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/ru_RU/LC_MESSAGES/humanize.mo0000644000076500000240000000576200000000000024274 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en r|!C#e-/3 ; I W \ ?a M        $ ) . 7 D X c r y       + 4 M f }      *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: 2014-03-24 20:32+0300 Last-Translator: Sergey Prokhorov Language-Team: ru_RU Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Generated-By: Babel 0.9.6 X-Generator: Poedit 1.5.4 %d день%d дня%d дней%d час%d часа%d часов%d минута%d минуты%d минут%d месяц%d месяца%d месяцев%d секунда%d секунды%d секунд%d год%d года%d лет%s назадчерез %sойый1 год, %d день1 год, %d дня1 год, %d дней1 год, %d месяц1 год, %d месяца1 год, %d месяцев1 год, 1 месяцойийыйыйойойойыйденьминутутолько чтомесяцсекундугодчасмиллиардадецилионавосемьпятьчетырегоголамиллионадевятьнониллионасейчасоктиллионаодинквадриллионаквинтиллионасептиллионасемьсикстиллионашестьтрисегоднязавтратриллионадвавчера././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/ru_RU/LC_MESSAGES/humanize.po0000644000076500000240000001365200000000000024274 0ustar00hugostaff00000000000000# Russian (Russia) translations for PROJECT. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 19:58+0200\n" "PO-Revision-Date: 2014-03-24 20:32+0300\n" "Last-Translator: Sergey Prokhorov \n" "Language-Team: ru_RU \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "Generated-By: Babel 0.9.6\n" "X-Generator: Poedit 1.5.4\n" # в Django тут "ий" но на самом деле оба варианта работают плохо #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "ой" #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "ый" #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "ой" #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "ий" # в Django тут "ий" но на самом деле оба варианта работают плохо #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "ый" # в Django тут "ий" но на самом деле оба варианта работают плохо #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "ый" # в Django тут "ий" но на самом деле оба варианта работают плохо #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "ой" # в Django тут "ий" но на самом деле оба варианта работают плохо #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "ой" # в Django тут "ий" но на самом деле оба варианта работают плохо #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "ой" # в Django тут "ий" но на самом деле оба варианта работают плохо #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "ый" #: src/humanize/number.py:62 msgid "million" msgstr "миллиона" #: src/humanize/number.py:63 msgid "billion" msgstr "миллиарда" #: src/humanize/number.py:64 msgid "trillion" msgstr "триллиона" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "квадриллиона" #: src/humanize/number.py:66 msgid "quintillion" msgstr "квинтиллиона" #: src/humanize/number.py:67 msgid "sextillion" msgstr "сикстиллиона" #: src/humanize/number.py:68 msgid "septillion" msgstr "септиллиона" #: src/humanize/number.py:69 msgid "octillion" msgstr "октиллиона" #: src/humanize/number.py:70 msgid "nonillion" msgstr "нониллиона" #: src/humanize/number.py:71 msgid "decillion" msgstr "децилиона" #: src/humanize/number.py:72 msgid "googol" msgstr "гогола" #: src/humanize/number.py:108 msgid "one" msgstr "один" #: src/humanize/number.py:109 msgid "two" msgstr "два" #: src/humanize/number.py:110 msgid "three" msgstr "три" #: src/humanize/number.py:111 msgid "four" msgstr "четыре" #: src/humanize/number.py:112 msgid "five" msgstr "пять" #: src/humanize/number.py:113 msgid "six" msgstr "шесть" #: src/humanize/number.py:114 msgid "seven" msgstr "семь" #: src/humanize/number.py:115 msgid "eight" msgstr "восемь" #: src/humanize/number.py:116 msgid "nine" msgstr "девять" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "только что" #: src/humanize/time.py:70 msgid "a second" msgstr "секунду" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d секунда" msgstr[1] "%d секунды" msgstr[2] "%d секунд" #: src/humanize/time.py:74 msgid "a minute" msgstr "минуту" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d минута" msgstr[1] "%d минуты" msgstr[2] "%d минут" #: src/humanize/time.py:79 msgid "an hour" msgstr "час" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d час" msgstr[1] "%d часа" msgstr[2] "%d часов" #: src/humanize/time.py:85 msgid "a day" msgstr "день" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d день" msgstr[1] "%d дня" msgstr[2] "%d дней" #: src/humanize/time.py:92 msgid "a month" msgstr "месяц" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d месяц" msgstr[1] "%d месяца" msgstr[2] "%d месяцев" #: src/humanize/time.py:97 msgid "a year" msgstr "год" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 год, %d день" msgstr[1] "1 год, %d дня" msgstr[2] "1 год, %d дней" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1 год, 1 месяц" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 год, %d месяц" msgstr[1] "1 год, %d месяца" msgstr[2] "1 год, %d месяцев" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d год" msgstr[1] "%d года" msgstr[2] "%d лет" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "через %s" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s назад" #: src/humanize/time.py:132 msgid "now" msgstr "сейчас" #: src/humanize/time.py:151 msgid "today" msgstr "сегодня" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "завтра" #: src/humanize/time.py:155 msgid "yesterday" msgstr "вчера" ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7178073 humanize-1.0.0/src/humanize/locale/sk_SK/0000755000076500000240000000000000000000000020276 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.811455 humanize-1.0.0/src/humanize/locale/sk_SK/LC_MESSAGES/0000755000076500000240000000000000000000000022063 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/sk_SK/LC_MESSAGES/humanize.mo0000644000076500000240000000510500000000000024241 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en rb| 4 Uv +5       ! # % * 2 < C K O V d v {             " ' . : > *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: Jose Riha Language-Team: sk Language: Slovak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; %d deň%d dni%d dní%d hodina%d hodiny%d hodín%d minútu%d minúty%d minút%d mesiac%d mesiace%d mesiacov%d sekundu%d sekundy%d sekúnd%d rok%d roky%d rokov%s naspäťo %s..1 rok, %d deň1 rok, %d dni1 rok, %d dní1 rok, %d mesiac1 rok, %d mesiace1 rok, %d mesiacov1 rok, 1 mesiac........deňminútuchvíľkumesiacsekundurokhodinumiliardy/árdkvintiliardy/árdosempäťštyrigoogola/ovmilióna/ovdeväťkvintilióna/ovterazkvadriliardy/árdjednabiliardy/árdtrilióna/árdkvadrilióna/ovsedemtriliardy/árdšesťtridneszajtrabilióna/ovdvevčera././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/sk_SK/LC_MESSAGES/humanize.po0000644000076500000240000001136000000000000024244 0ustar00hugostaff00000000000000# Slovak translation of humanize # Copyright (C) 2016 # This file is distributed under the same license as the PACKAGE package. # Jose Riha , 2016. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Jose Riha \n" "Language-Team: sk \n" "Language: Slovak\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "." #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "." #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "." #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "." #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "." #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "." #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "." #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "." #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "." #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "." #: src/humanize/number.py:62 msgid "million" msgstr "milióna/ov" #: src/humanize/number.py:63 msgid "billion" msgstr "miliardy/árd" #: src/humanize/number.py:64 msgid "trillion" msgstr "bilióna/ov" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "biliardy/árd" #: src/humanize/number.py:66 msgid "quintillion" msgstr "trilióna/árd" #: src/humanize/number.py:67 msgid "sextillion" msgstr "triliardy/árd" #: src/humanize/number.py:68 msgid "septillion" msgstr "kvadrilióna/ov" #: src/humanize/number.py:69 msgid "octillion" msgstr "kvadriliardy/árd" #: src/humanize/number.py:70 msgid "nonillion" msgstr "kvintilióna/ov" #: src/humanize/number.py:71 msgid "decillion" msgstr "kvintiliardy/árd" #: src/humanize/number.py:72 msgid "googol" msgstr "googola/ov" #: src/humanize/number.py:108 msgid "one" msgstr "jedna" #: src/humanize/number.py:109 msgid "two" msgstr "dve" #: src/humanize/number.py:110 msgid "three" msgstr "tri" #: src/humanize/number.py:111 msgid "four" msgstr "štyri" #: src/humanize/number.py:112 msgid "five" msgstr "päť" #: src/humanize/number.py:113 msgid "six" msgstr "šesť" #: src/humanize/number.py:114 msgid "seven" msgstr "sedem" #: src/humanize/number.py:115 msgid "eight" msgstr "osem" #: src/humanize/number.py:116 msgid "nine" msgstr "deväť" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "chvíľku" #: src/humanize/time.py:70 msgid "a second" msgstr "sekundu" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekundu" msgstr[1] "%d sekundy" msgstr[2] "%d sekúnd" #: src/humanize/time.py:74 msgid "a minute" msgstr "minútu" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minútu" msgstr[1] "%d minúty" msgstr[2] "%d minút" #: src/humanize/time.py:79 msgid "an hour" msgstr "hodinu" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hodina" msgstr[1] "%d hodiny" msgstr[2] "%d hodín" #: src/humanize/time.py:85 msgid "a day" msgstr "deň" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d deň" msgstr[1] "%d dni" msgstr[2] "%d dní" #: src/humanize/time.py:92 msgid "a month" msgstr "mesiac" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mesiac" msgstr[1] "%d mesiace" msgstr[2] "%d mesiacov" #: src/humanize/time.py:97 msgid "a year" msgstr "rok" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 rok, %d deň" msgstr[1] "1 rok, %d dni" msgstr[2] "1 rok, %d dní" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1 rok, 1 mesiac" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 rok, %d mesiac" msgstr[1] "1 rok, %d mesiace" msgstr[2] "1 rok, %d mesiacov" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d rok" msgstr[1] "%d roky" msgstr[2] "%d rokov" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "o %s" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s naspäť" #: src/humanize/time.py:132 msgid "now" msgstr "teraz" #: src/humanize/time.py:151 msgid "today" msgstr "dnes" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "zajtra" #: src/humanize/time.py:155 msgid "yesterday" msgstr "včera" ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7182262 humanize-1.0.0/src/humanize/locale/tr_TR/0000755000076500000240000000000000000000000020316 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.814934 humanize-1.0.0/src/humanize/locale/tr_TR/LC_MESSAGES/0000755000076500000240000000000000000000000022103 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/tr_TR/LC_MESSAGES/humanize.mo0000644000076500000240000000466400000000000024272 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en ro|  ,@PYoqs        % + 2 9 ? H O X \ f p z         *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2017-02-23 20:00+0300 Last-Translator: Emre Çintay Language-Team: Turkish Language: tr_TR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 1.8.7.1 Generated-By: Emre Çintay %d gün%d gün%d saat%d saat%d dakika%d dakika%d ay%d ay%d saniye%d saniye%d yıl%d yıl%s önceşu andan itibaren %s..1 yıl, %d gün1 yıl, %d gün1 yıl, %d ay1 yıl, %d ay1 yıl, 1 ay........bir günbir dakikabirazbir aybir saniyebir yılbir saatmilyardesilyonsekizbeşdörtgoogolmilyondokuznonilyonşimdioktilyonbirkatrilyonkentilyonseptilyonyedisekstilyonaltıüçbugünyarıntrilyonikidün././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/tr_TR/LC_MESSAGES/humanize.po0000644000076500000240000001104100000000000024260 0ustar00hugostaff00000000000000# Turkish translation for humanize. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the humanize package. # Emre Çintay , 2017. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2017-02-23 20:00+0300\n" "Last-Translator: Emre Çintay \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.7.1\n" "Generated-By: Emre Çintay\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "." #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "." #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "." #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "." #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "." #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "." #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "." #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "." #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "." #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "." #: src/humanize/number.py:62 msgid "million" msgstr "milyon" #: src/humanize/number.py:63 msgid "billion" msgstr "milyar" #: src/humanize/number.py:64 msgid "trillion" msgstr "trilyon" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "katrilyon" #: src/humanize/number.py:66 msgid "quintillion" msgstr "kentilyon" #: src/humanize/number.py:67 msgid "sextillion" msgstr "sekstilyon" #: src/humanize/number.py:68 msgid "septillion" msgstr "septilyon" #: src/humanize/number.py:69 msgid "octillion" msgstr "oktilyon" #: src/humanize/number.py:70 msgid "nonillion" msgstr "nonilyon" #: src/humanize/number.py:71 msgid "decillion" msgstr "desilyon" #: src/humanize/number.py:72 msgid "googol" msgstr "googol" #: src/humanize/number.py:108 msgid "one" msgstr "bir" #: src/humanize/number.py:109 msgid "two" msgstr "iki" #: src/humanize/number.py:110 msgid "three" msgstr "üç" #: src/humanize/number.py:111 msgid "four" msgstr "dört" #: src/humanize/number.py:112 msgid "five" msgstr "beş" #: src/humanize/number.py:113 msgid "six" msgstr "altı" #: src/humanize/number.py:114 msgid "seven" msgstr "yedi" #: src/humanize/number.py:115 msgid "eight" msgstr "sekiz" #: src/humanize/number.py:116 msgid "nine" msgstr "dokuz" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "biraz" #: src/humanize/time.py:70 msgid "a second" msgstr "bir saniye" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d saniye" msgstr[1] "%d saniye" #: src/humanize/time.py:74 msgid "a minute" msgstr "bir dakika" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d dakika" msgstr[1] "%d dakika" #: src/humanize/time.py:79 msgid "an hour" msgstr "bir saat" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d saat" msgstr[1] "%d saat" #: src/humanize/time.py:85 msgid "a day" msgstr "bir gün" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d gün" msgstr[1] "%d gün" #: src/humanize/time.py:92 msgid "a month" msgstr "bir ay" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d ay" msgstr[1] "%d ay" #: src/humanize/time.py:97 msgid "a year" msgstr "bir yıl" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 yıl, %d gün" msgstr[1] "1 yıl, %d gün" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1 yıl, 1 ay" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 yıl, %d ay" msgstr[1] "1 yıl, %d ay" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d yıl" msgstr[1] "%d yıl" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "şu andan itibaren %s" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s önce" #: src/humanize/time.py:132 msgid "now" msgstr "şimdi" #: src/humanize/time.py:151 msgid "today" msgstr "bugün" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "yarın" #: src/humanize/time.py:155 msgid "yesterday" msgstr "dün" ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7186527 humanize-1.0.0/src/humanize/locale/vi_VI/0000755000076500000240000000000000000000000020300 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.818084 humanize-1.0.0/src/humanize/locale/vi_VI/LC_MESSAGES/0000755000076500000240000000000000000000000022065 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/vi_VI/LC_MESSAGES/humanize.mo0000644000076500000240000000441300000000000024244 0ustar00hugostaff00000000000000.=&9N_ frw|"&.6<AFNSW [gmqw} !3EWk} !    & 5 B N Yejotz % (#+-)' " !* .$ , &%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbillioneightfivefourmillionninenowonequadrillionsevensixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: 2017-05-30 11:51+0700 Last-Translator: Olivier Cortès Language-Team: vi_VI Language: vi_VN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Generated-By: Babel 0.9.6 X-Generator: Poedit 1.8.7.1 %d ngày%d ngày%d giờ%d giờ%d phút%d phút%d tháng%d tháng%d giây%d giây%d năm%d năm%s trước%s ngày tới..1 năm %d ngày1 năm %d ngày1 năm %d thángun an et %d mois1 năm 1 tháng........một ngàymột phútngay lúc nàymột thángmột giâymột nămmột giờtỷtámnămbốn%(value)s triệuchínngay bây giờmột%(value)s triệu tỷbảysáubahôm nayngày mai%(value)s nghìn tỷhaingày hôm qua././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/vi_VI/LC_MESSAGES/humanize.po0000644000076500000240000001142600000000000024251 0ustar00hugostaff00000000000000# French (France) translations for PROJECT. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2017-05-30 11:51+0700\n" "Last-Translator: Olivier Cortès \n" "Language-Team: vi_VI \n" "Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "Generated-By: Babel 0.9.6\n" "X-Generator: Poedit 1.8.7.1\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "." #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "." #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "." #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "." #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "." #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "." #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "." #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "." #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "." #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "." #: src/humanize/number.py:62 msgid "million" msgstr "%(value)s triệu" #: src/humanize/number.py:63 msgid "billion" msgstr "tỷ" #: src/humanize/number.py:64 msgid "trillion" msgstr "%(value)s nghìn tỷ" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "%(value)s triệu tỷ" #: src/humanize/number.py:66 #, fuzzy msgid "quintillion" msgstr "%(value)s quintillion" #: src/humanize/number.py:67 #, fuzzy msgid "sextillion" msgstr "%(value)s sextillion" #: src/humanize/number.py:68 #, fuzzy msgid "septillion" msgstr "%(value)s septillion" #: src/humanize/number.py:69 #, fuzzy msgid "octillion" msgstr "%(value)s octillion" #: src/humanize/number.py:70 #, fuzzy msgid "nonillion" msgstr "%(value)s nonillion" #: src/humanize/number.py:71 #, fuzzy msgid "decillion" msgstr "%(value)s décillion" #: src/humanize/number.py:72 #, fuzzy msgid "googol" msgstr "%(value)s gogol" #: src/humanize/number.py:108 msgid "one" msgstr "một" #: src/humanize/number.py:109 msgid "two" msgstr "hai" #: src/humanize/number.py:110 msgid "three" msgstr "ba" #: src/humanize/number.py:111 msgid "four" msgstr "bốn" #: src/humanize/number.py:112 msgid "five" msgstr "năm" #: src/humanize/number.py:113 msgid "six" msgstr "sáu" #: src/humanize/number.py:114 msgid "seven" msgstr "bảy" #: src/humanize/number.py:115 msgid "eight" msgstr "tám" #: src/humanize/number.py:116 msgid "nine" msgstr "chín" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "ngay lúc này" #: src/humanize/time.py:70 msgid "a second" msgstr "một giây" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d giây" msgstr[1] "%d giây" #: src/humanize/time.py:74 msgid "a minute" msgstr "một phút" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d phút" msgstr[1] "%d phút" #: src/humanize/time.py:79 msgid "an hour" msgstr "một giờ" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d giờ" msgstr[1] "%d giờ" #: src/humanize/time.py:85 msgid "a day" msgstr "một ngày" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d ngày" msgstr[1] "%d ngày" #: src/humanize/time.py:92 msgid "a month" msgstr "một tháng" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d tháng" msgstr[1] "%d tháng" #: src/humanize/time.py:97 msgid "a year" msgstr "một năm" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 năm %d ngày" msgstr[1] "1 năm %d ngày" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1 năm 1 tháng" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 năm %d tháng" msgstr[1] "un an et %d mois" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d năm" msgstr[1] "%d năm" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "%s ngày tới" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s trước" #: src/humanize/time.py:132 msgid "now" msgstr "ngay bây giờ" #: src/humanize/time.py:151 msgid "today" msgstr "hôm nay" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "ngày mai" #: src/humanize/time.py:155 msgid "yesterday" msgstr "ngày hôm qua" ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1581190826.719514 humanize-1.0.0/src/humanize/locale/zh_CN/0000755000076500000240000000000000000000000020265 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.8213809 humanize-1.0.0/src/humanize/locale/zh_CN/LC_MESSAGES/0000755000076500000240000000000000000000000022052 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/zh_CN/LC_MESSAGES/humanize.mo0000644000076500000240000000445300000000000024235 0ustar00hugostaff000000000000005Gl  "3Vfkpuz     $ 0; ALPV\en r?|        $0 JVZ^bfjnrv{        $ *  &45! )$%2+1"3./- (#0',%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0th1st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2nd3rd4th5th6th7th8th9tha daya minutea momenta montha seconda yearan hourbilliondecillioneightfivefourgoogolmillionninenonillionnowoctilliononequadrillionquintillionseptillionsevensextillionsixthreetodaytomorrowtrilliontwoyesterdayProject-Id-Version: 1.0 Report-Msgid-Bugs-To: PO-Revision-Date: 2016-11-14 23:02+0000 Last-Translator: Liwen SUN Language-Team: Chinese (simplified) Language: zh_CN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); %d天%d天%d小时%d小时%d分%d分%d月%d月%d秒%d秒%d年%d年%s之前%s之后第第%d年%d年1年又%d月1年又%d月1年又1月第第第第第第第第1天1分一会儿1月1秒1年1小时十亿十沟八五四古高尔百万九百穰现在千秭一万亿百京秭七十垓六三今天明天兆二昨天././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186513.0 humanize-1.0.0/src/humanize/locale/zh_CN/LC_MESSAGES/humanize.po0000644000076500000240000001065400000000000024240 0ustar00hugostaff00000000000000# Simplified Chinese (China) translation for the project # Copyright (C) 2016 # This file is distributed under the same license as the PACKAGE package. # AZLisme , 2016. # Liwen SUN , 2019. # msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-08 20:05+0200\n" "PO-Revision-Date: 2016-11-14 23:02+0000\n" "Last-Translator: Liwen SUN \n" "Language-Team: Chinese (simplified)\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/humanize/number.py:24 msgctxt "0" msgid "th" msgstr "第" #: src/humanize/number.py:25 msgctxt "1" msgid "st" msgstr "第" #: src/humanize/number.py:26 msgctxt "2" msgid "nd" msgstr "第" #: src/humanize/number.py:27 msgctxt "3" msgid "rd" msgstr "第" #: src/humanize/number.py:28 msgctxt "4" msgid "th" msgstr "第" #: src/humanize/number.py:29 msgctxt "5" msgid "th" msgstr "第" #: src/humanize/number.py:30 msgctxt "6" msgid "th" msgstr "第" #: src/humanize/number.py:31 msgctxt "7" msgid "th" msgstr "第" #: src/humanize/number.py:32 msgctxt "8" msgid "th" msgstr "第" #: src/humanize/number.py:33 msgctxt "9" msgid "th" msgstr "第" #: src/humanize/number.py:62 msgid "million" msgstr "百万" #: src/humanize/number.py:63 msgid "billion" msgstr "十亿" #: src/humanize/number.py:64 msgid "trillion" msgstr "兆" #: src/humanize/number.py:65 msgid "quadrillion" msgstr "万亿" #: src/humanize/number.py:66 msgid "quintillion" msgstr "百京" #: src/humanize/number.py:67 msgid "sextillion" msgstr "十垓" #: src/humanize/number.py:68 msgid "septillion" msgstr "秭" #: src/humanize/number.py:69 msgid "octillion" msgstr "千秭" #: src/humanize/number.py:70 msgid "nonillion" msgstr "百穰" #: src/humanize/number.py:71 msgid "decillion" msgstr "十沟" #: src/humanize/number.py:72 msgid "googol" msgstr "古高尔" #: src/humanize/number.py:108 msgid "one" msgstr "一" #: src/humanize/number.py:109 msgid "two" msgstr "二" #: src/humanize/number.py:110 msgid "three" msgstr "三" #: src/humanize/number.py:111 msgid "four" msgstr "四" #: src/humanize/number.py:112 msgid "five" msgstr "五" #: src/humanize/number.py:113 msgid "six" msgstr "六" #: src/humanize/number.py:114 msgid "seven" msgstr "七" #: src/humanize/number.py:115 msgid "eight" msgstr "八" #: src/humanize/number.py:116 msgid "nine" msgstr "九" #: src/humanize/time.py:68 src/humanize/time.py:131 msgid "a moment" msgstr "一会儿" #: src/humanize/time.py:70 msgid "a second" msgstr "1秒" #: src/humanize/time.py:72 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d秒" msgstr[1] "%d秒" #: src/humanize/time.py:74 msgid "a minute" msgstr "1分" #: src/humanize/time.py:77 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d分" msgstr[1] "%d分" #: src/humanize/time.py:79 msgid "an hour" msgstr "1小时" #: src/humanize/time.py:82 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d小时" msgstr[1] "%d小时" #: src/humanize/time.py:85 msgid "a day" msgstr "1天" #: src/humanize/time.py:87 src/humanize/time.py:90 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d天" msgstr[1] "%d天" #: src/humanize/time.py:92 msgid "a month" msgstr "1月" #: src/humanize/time.py:94 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d月" msgstr[1] "%d月" #: src/humanize/time.py:97 msgid "a year" msgstr "1年" #: src/humanize/time.py:99 src/humanize/time.py:108 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "%d年" msgstr[1] "%d年" #: src/humanize/time.py:102 msgid "1 year, 1 month" msgstr "1年又1月" #: src/humanize/time.py:105 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1年又%d月" msgstr[1] "1年又%d月" #: src/humanize/time.py:110 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d年" msgstr[1] "%d年" #: src/humanize/time.py:128 #, python-format msgid "%s from now" msgstr "%s之后" #: src/humanize/time.py:128 #, python-format msgid "%s ago" msgstr "%s之前" #: src/humanize/time.py:132 msgid "now" msgstr "现在" #: src/humanize/time.py:151 msgid "today" msgstr "今天" #: src/humanize/time.py:153 msgid "tomorrow" msgstr "明天" #: src/humanize/time.py:155 msgid "yesterday" msgstr "昨天" ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581061752.0 humanize-1.0.0/src/humanize/number.py0000644000076500000240000001114700000000000017673 0ustar00hugostaff00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Humanizing functions for numbers.""" import re from fractions import Fraction from . import compat from .i18n import gettext as _ from .i18n import gettext_noop as N_ from .i18n import pgettext as P_ def ordinal(value): """Converts an integer to its ordinal as a string. 1 is '1st', 2 is '2nd', 3 is '3rd', etc. Works for any integer or anything int() will turn into an integer. Anything other value will have nothing done to it.""" try: value = int(value) except (TypeError, ValueError): return value t = ( P_("0", "th"), P_("1", "st"), P_("2", "nd"), P_("3", "rd"), P_("4", "th"), P_("5", "th"), P_("6", "th"), P_("7", "th"), P_("8", "th"), P_("9", "th"), ) if value % 100 in (11, 12, 13): # special case return "%d%s" % (value, t[0]) return "%d%s" % (value, t[value % 10]) def intcomma(value): """Converts an integer to a string containing commas every three digits. For example, 3000 becomes '3,000' and 45000 becomes '45,000'. To maintain some compatibility with Django's intcomma, this function also accepts floats.""" try: if isinstance(value, compat.string_types): float(value.replace(",", "")) else: float(value) except (TypeError, ValueError): return value orig = str(value) new = re.sub(r"^(-?\d+)(\d{3})", r"\g<1>,\g<2>", orig) if orig == new: return new else: return intcomma(new) powers = [10 ** x for x in (6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 100)] human_powers = ( N_("million"), N_("billion"), N_("trillion"), N_("quadrillion"), N_("quintillion"), N_("sextillion"), N_("septillion"), N_("octillion"), N_("nonillion"), N_("decillion"), N_("googol"), ) def intword(value, format="%.1f"): """Converts a large integer to a friendly text representation. Works best for numbers over 1 million. For example, 1000000 becomes '1.0 million', 1200000 becomes '1.2 million' and '1200000000' becomes '1.2 billion'. Supports up to decillion (33 digits) and googol (100 digits). You can pass format to change the number of decimal or general format of the number portion. This function returns a string unless the value passed was unable to be coaxed into an int.""" try: value = int(value) except (TypeError, ValueError): return value if value < powers[0]: return str(value) for ordinal, power in enumerate(powers[1:], 1): if value < power: chopped = value / float(powers[ordinal - 1]) return (" ".join([format, _(human_powers[ordinal - 1])])) % chopped return str(value) def apnumber(value): """For numbers 1-9, returns the number spelled out. Otherwise, returns the number. This follows Associated Press style. This always returns a string unless the value was not int-able, unlike the Django filter.""" try: value = int(value) except (TypeError, ValueError): return value if not 0 < value < 10: return str(value) return ( _("one"), _("two"), _("three"), _("four"), _("five"), _("six"), _("seven"), _("eight"), _("nine"), )[value - 1] def fractional(value): """ There will be some cases where one might not want to show ugly decimal places for floats and decimals. This function returns a human readable fractional number in form of fractions and mixed fractions. Pass in a string, or a number or a float, and this function returns a string representation of a fraction or whole number or a mixed fraction Examples: fractional(0.3) will return '1/3' fractional(1.3) will return '1 3/10' fractional(float(1/3)) will return '1/3' fractional(1) will return '1' This will always return a string. """ try: number = float(value) except (TypeError, ValueError): return value wholeNumber = int(number) frac = Fraction(number - wholeNumber).limit_denominator(1000) numerator = frac._numerator denominator = frac._denominator if wholeNumber and not numerator and denominator == 1: # this means that an integer was passed in # (or variants of that integer like 1.0000) return "%.0f" % wholeNumber elif not wholeNumber: return "%.0f/%.0f" % (numerator, denominator) else: return "%.0f %.0f/%.0f" % (wholeNumber, numerator, denominator) ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581061752.0 humanize-1.0.0/src/humanize/time.py0000644000076500000240000001275600000000000017350 0ustar00hugostaff00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Time humanizing functions. These are largely borrowed from Django's ``contrib.humanize``.""" from datetime import date, datetime, timedelta from .i18n import gettext as _ from .i18n import ngettext __all__ = ["naturaldelta", "naturaltime", "naturalday", "naturaldate"] def _now(): return datetime.now() def abs_timedelta(delta): """Returns an "absolute" value for a timedelta, always representing a time distance.""" if delta.days < 0: now = _now() return now - (now + delta) return delta def date_and_delta(value): """Turn a value into a date and a timedelta which represents how long ago it was. If that's not possible, return (None, value).""" now = _now() if isinstance(value, datetime): date = value delta = now - value elif isinstance(value, timedelta): date = now - value delta = value else: try: value = int(value) delta = timedelta(seconds=value) date = now - delta except (ValueError, TypeError): return (None, value) return date, abs_timedelta(delta) def naturaldelta(value, months=True): """Given a timedelta or a number of seconds, return a natural representation of the amount of time elapsed. This is similar to ``naturaltime``, but does not add tense to the result. If ``months`` is True, then a number of months (based on 30.5 days) will be used for fuzziness between years.""" date, delta = date_and_delta(value) if date is None: return value use_months = months seconds = abs(delta.seconds) days = abs(delta.days) years = days // 365 days = days % 365 months = int(days // 30.5) if not years and days < 1: if seconds == 0: return _("a moment") elif seconds == 1: return _("a second") elif seconds < 60: return ngettext("%d second", "%d seconds", seconds) % seconds elif 60 <= seconds < 120: return _("a minute") elif 120 <= seconds < 3600: minutes = seconds // 60 return ngettext("%d minute", "%d minutes", minutes) % minutes elif 3600 <= seconds < 3600 * 2: return _("an hour") elif 3600 < seconds: hours = seconds // 3600 return ngettext("%d hour", "%d hours", hours) % hours elif years == 0: if days == 1: return _("a day") if not use_months: return ngettext("%d day", "%d days", days) % days else: if not months: return ngettext("%d day", "%d days", days) % days elif months == 1: return _("a month") else: return ngettext("%d month", "%d months", months) % months elif years == 1: if not months and not days: return _("a year") elif not months: return ngettext("1 year, %d day", "1 year, %d days", days) % days elif use_months: if months == 1: return _("1 year, 1 month") else: return ( ngettext("1 year, %d month", "1 year, %d months", months) % months ) else: return ngettext("1 year, %d day", "1 year, %d days", days) % days else: return ngettext("%d year", "%d years", years) % years def naturaltime(value, future=False, months=True): """Given a datetime or a number of seconds, return a natural representation of that time in a resolution that makes sense. This is more or less compatible with Django's ``naturaltime`` filter. ``future`` is ignored for datetimes, where the tense is always figured out based on the current time. If an integer is passed, the return value will be past tense by default, unless ``future`` is set to True.""" now = _now() date, delta = date_and_delta(value) if date is None: return value # determine tense by value only if datetime/timedelta were passed if isinstance(value, (datetime, timedelta)): future = date > now ago = _("%s from now") if future else _("%s ago") delta = naturaldelta(delta, months) if delta == _("a moment"): return _("now") return ago % delta def naturalday(value, format="%b %d"): """For date values that are tomorrow, today or yesterday compared to present day returns representing string. Otherwise, returns a string formatted according to ``format``.""" try: value = date(value.year, value.month, value.day) except AttributeError: # Passed value wasn't date-ish return value except (OverflowError, ValueError): # Date arguments out of range return value delta = value - date.today() if delta.days == 0: return _("today") elif delta.days == 1: return _("tomorrow") elif delta.days == -1: return _("yesterday") return value.strftime(format) def naturaldate(value): """Like naturalday, but will append a year for dates that are a year ago or more.""" try: value = date(value.year, value.month, value.day) except AttributeError: # Passed value wasn't date-ish return value except (OverflowError, ValueError): # Date arguments out of range return value delta = abs_timedelta(value - date.today()) if delta.days >= 365: return naturalday(value, "%b %d %Y") return naturalday(value) ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.7666059 humanize-1.0.0/src/humanize.egg-info/0000755000076500000240000000000000000000000017517 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581190825.0 humanize-1.0.0/src/humanize.egg-info/PKG-INFO0000644000076500000240000001411300000000000020614 0ustar00hugostaff00000000000000Metadata-Version: 2.1 Name: humanize Version: 1.0.0 Summary: Python humanize utilities Home-page: https://github.com/jmoiron/humanize Author: Jason Moiron Author-email: jmoiron@jmoiron.net Maintainer: Hugo van Kemenade License: MIT Description: # humanize [![PyPI version](https://img.shields.io/pypi/v/humanize.svg?logo=pypi&logoColor=FFE873)](https://pypi.org/project/humanize/) [![Supported Python versions](https://img.shields.io/pypi/pyversions/humanize.svg?logo=python&logoColor=FFE873)](https://pypi.org/project/humanize/) [![PyPI downloads](https://img.shields.io/pypi/dm/humanize.svg)](https://pypistats.org/packages/humanize) [![Travis CI Status](https://travis-ci.com/hugovk/humanize.svg?branch=master)](https://travis-ci.com/hugovk/humanize) [![GitHub Actions status](https://github.com/jmoiron/humanize/workflows/Test/badge.svg)](https://github.com/jmoiron/humanize/actions) [![codecov](https://codecov.io/gh/hugovk/humanize/branch/master/graph/badge.svg)](https://codecov.io/gh/hugovk/humanize) [![MIT License](https://img.shields.io/github/license/jmoiron/humanize.svg)](LICENSE) This modest package contains various common humanization utilities, like turning a number into a fuzzy human readable duration ('3 minutes ago') or into a human readable size or throughput. It works with Python 2.7 and 3.5+ and is localized to: * Dutch * Finnish * French * German * Indonesian * Italian * Japanese * Korean * Persian * Portuguese Brazilian * Russian * Simplified Chinese * Slovak * Turkish * Vietnamese ## Usage Integer humanization: ```pycon >>> import humanize >>> humanize.intcomma(12345) '12,345' >>> humanize.intword(123455913) '123.5 million' >>> humanize.intword(12345591313) '12.3 billion' >>> humanize.apnumber(4) 'four' >>> humanize.apnumber(41) '41' ``` Date & time humanization: ```pycon >>> import datetime >>> humanize.naturalday(datetime.datetime.now()) 'today' >>> humanize.naturaldelta(datetime.timedelta(seconds=1001)) '16 minutes' >>> humanize.naturalday(datetime.datetime.now() - datetime.timedelta(days=1)) 'yesterday' >>> humanize.naturalday(datetime.date(2007, 6, 5)) 'Jun 05' >>> humanize.naturaldate(datetime.date(2007, 6, 5)) 'Jun 05 2007' >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=1)) 'a second ago' >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=3600)) 'an hour ago' ``` File size humanization: ```pycon >>> humanize.naturalsize(1000000) '1.0 MB' >>> humanize.naturalsize(1000000, binary=True) '976.6 KiB' >>> humanize.naturalsize(1000000, gnu=True) '976.6K' ``` Human readable floating point numbers: ```pycon >>> humanize.fractional(1/3) '1/3' >>> humanize.fractional(1.5) '1 1/2' >>> humanize.fractional(0.3) '3/10' >>> humanize.fractional(0.333) '1/3' >>> humanize.fractional(1) '1' ``` ## Localization How to change locale at runtime: ```pycon >>> print(humanize.naturaltime(datetime.timedelta(seconds=3))) 3 seconds ago >>> _t = humanize.i18n.activate('ru_RU') >>> print(humanize.naturaltime(datetime.timedelta(seconds=3))) 3 секунды назад >>> humanize.i18n.deactivate() >>> print(humanize.naturaltime(datetime.timedelta(seconds=3))) 3 seconds ago ``` You can pass additional parameter `path` to `activate` to specify a path to search locales in. ```pycon >>> humanize.i18n.activate("pt_BR") IOError: [Errno 2] No translation file found for domain: 'humanize' >>> humanize.i18n.activate("pt_BR", path="path/to/my/portuguese/translation/") ``` How to add new phrases to existing locale files: ```console $ xgettext -o humanize.pot -k'_' -k'N_' -k'P_:1c,2' -l python src/humanize/*.py # extract new phrases $ msgmerge -U src/humanize/locale/ru_RU/LC_MESSAGES/humanize.po humanize.pot # add them to locale files $ msgfmt --check -o src/humanize/locale/ru_RU/LC_MESSAGES/humanize{.mo,.po} # compile to binary .mo ``` How to add a new locale: ```console $ msginit -i humanize.pot -o humanize/locale//LC_MESSAGES/humanize.po --locale ``` Where `` is a locale abbreviation, eg. `en_GB`, `pt_BR` or just `ru`, `fr` etc. Keywords: humanize time size Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Text Processing Classifier: Topic :: Text Processing :: General Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* Description-Content-Type: text/markdown Provides-Extra: tests ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581190826.0 humanize-1.0.0/src/humanize.egg-info/SOURCES.txt0000644000076500000240000000413500000000000021406 0ustar00hugostaff00000000000000.gitignore .pre-commit-config.yaml .travis.yml LICENCE README.md setup.cfg setup.py tox.ini .github/workflows/lint.yml .github/workflows/release.yml .github/workflows/test.yml src/humanize/__init__.py src/humanize/compat.py src/humanize/filesize.py src/humanize/i18n.py src/humanize/number.py src/humanize/time.py src/humanize.egg-info/PKG-INFO src/humanize.egg-info/SOURCES.txt src/humanize.egg-info/dependency_links.txt src/humanize.egg-info/not-zip-safe src/humanize.egg-info/requires.txt src/humanize.egg-info/top_level.txt src/humanize/locale/de_DE/LC_MESSAGES/humanize.mo src/humanize/locale/de_DE/LC_MESSAGES/humanize.po src/humanize/locale/fa_IR/LC_MESSAGES/humanize.mo src/humanize/locale/fa_IR/LC_MESSAGES/humanize.po src/humanize/locale/fi_FI/LC_MESSAGES/humanize.mo src/humanize/locale/fi_FI/LC_MESSAGES/humanize.po src/humanize/locale/fr_FR/LC_MESSAGES/humanize.mo src/humanize/locale/fr_FR/LC_MESSAGES/humanize.po src/humanize/locale/id_ID/LC_MESSAGES/humanize.mo src/humanize/locale/id_ID/LC_MESSAGES/humanize.po src/humanize/locale/it_IT/LC_MESSAGES/humanize.mo src/humanize/locale/it_IT/LC_MESSAGES/humanize.po src/humanize/locale/ja_JP/LC_MESSAGES/humanize.mo src/humanize/locale/ja_JP/LC_MESSAGES/humanize.po src/humanize/locale/ko_KR/LC_MESSAGES/humanize.mo src/humanize/locale/ko_KR/LC_MESSAGES/humanize.po src/humanize/locale/nl_NL/LC_MESSAGES/humanize.mo src/humanize/locale/nl_NL/LC_MESSAGES/humanize.po src/humanize/locale/pt_BR/LC_MESSAGES/humanize.mo src/humanize/locale/pt_BR/LC_MESSAGES/humanize.po src/humanize/locale/ru_RU/LC_MESSAGES/humanize.mo src/humanize/locale/ru_RU/LC_MESSAGES/humanize.po src/humanize/locale/sk_SK/LC_MESSAGES/humanize.mo src/humanize/locale/sk_SK/LC_MESSAGES/humanize.po src/humanize/locale/tr_TR/LC_MESSAGES/humanize.mo src/humanize/locale/tr_TR/LC_MESSAGES/humanize.po src/humanize/locale/vi_VI/LC_MESSAGES/humanize.mo src/humanize/locale/vi_VI/LC_MESSAGES/humanize.po src/humanize/locale/zh_CN/LC_MESSAGES/humanize.mo src/humanize/locale/zh_CN/LC_MESSAGES/humanize.po tests/__init__.py tests/base.py tests/test_filesize.py tests/test_i18n.py tests/test_number.py tests/test_time.py././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581190825.0 humanize-1.0.0/src/humanize.egg-info/dependency_links.txt0000644000076500000240000000000100000000000023565 0ustar00hugostaff00000000000000 ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581018557.0 humanize-1.0.0/src/humanize.egg-info/not-zip-safe0000644000076500000240000000000100000000000021745 0ustar00hugostaff00000000000000 ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581190825.0 humanize-1.0.0/src/humanize.egg-info/requires.txt0000644000076500000240000000011200000000000022111 0ustar00hugostaff00000000000000 [tests] freezegun pytest pytest-cov [tests:python_version < '3.4'] mock ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581190825.0 humanize-1.0.0/src/humanize.egg-info/top_level.txt0000644000076500000240000000001100000000000022241 0ustar00hugostaff00000000000000humanize ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1581190826.8372703 humanize-1.0.0/tests/0000755000076500000240000000000000000000000014560 5ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581017850.0 humanize-1.0.0/tests/__init__.py0000644000076500000240000000000000000000000016657 0ustar00hugostaff00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581178599.0 humanize-1.0.0/tests/base.py0000644000076500000240000000156300000000000016051 0ustar00hugostaff00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Tests base classes.""" from unittest import TestCase class HumanizeTestCase(TestCase): def assertManyResults(self, function, args, results): """Goes through a list of arguments and makes sure that function called upon them lists a similarly ordered list of results. If more than one argument is required, each position in args may be a tuple.""" for arg, result in zip(args, results): if isinstance(arg, tuple): self.assertEqual(function(*arg), result) else: self.assertEqual(function(arg), result) def assertEqualDatetime(self, dt1, dt2): self.assertEqual((dt1 - dt2).seconds, 0) def assertEqualTimedelta(self, td1, td2): self.assertEqual(td1.days, td2.days) self.assertEqual(td1.seconds, td2.seconds) ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581061752.0 humanize-1.0.0/tests/test_filesize.py0000644000076500000240000000264400000000000020011 0ustar00hugostaff00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Tests for filesize humanizing.""" from humanize import filesize from .base import HumanizeTestCase class FilesizeTestCase(HumanizeTestCase): def test_naturalsize(self): tests = ( 300, 3000, 3000000, 3000000000, 3000000000000, (300, True), (3000, True), (3000000, True), (300, False, True), (3000, False, True), (3000000, False, True), (1024, False, True), (10 ** 26 * 30, False, True), (10 ** 26 * 30, True), 10 ** 26 * 30, (1, False, False), (3141592, False, False, "%.2f"), (3000, False, True, "%.3f"), (3000000000, False, True, "%.0f"), (10 ** 26 * 30, True, False, "%.3f"), ) results = ( "300 Bytes", "3.0 kB", "3.0 MB", "3.0 GB", "3.0 TB", "300 Bytes", "2.9 KiB", "2.9 MiB", "300B", "2.9K", "2.9M", "1.0K", "2481.5Y", "2481.5 YiB", "3000.0 YB", "1 Byte", "3.14 MB", "2.930K", "3G", "2481.542 YiB", ) self.assertManyResults(filesize.naturalsize, tests, results) ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581017850.0 humanize-1.0.0/tests/test_i18n.py0000644000076500000240000000063000000000000016747 0ustar00hugostaff00000000000000# -*- coding: utf-8 -*- import datetime as dt import humanize def test_i18n(): three_seconds = dt.timedelta(seconds=3) assert humanize.naturaltime(three_seconds) == "3 seconds ago" humanize.i18n.activate("ru_RU") assert humanize.naturaltime(three_seconds) == "3 секунды назад" humanize.i18n.deactivate() assert humanize.naturaltime(three_seconds) == "3 seconds ago" ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581061752.0 humanize-1.0.0/tests/test_number.py0000644000076500000240000000611500000000000017464 0ustar00hugostaff00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Number tests.""" from humanize import number from .base import HumanizeTestCase class NumberTestCase(HumanizeTestCase): def test_ordinal(self): test_list = ( "1", "2", "3", "4", "11", "12", "13", "101", "102", "103", "111", "something else", None, ) result_list = ( "1st", "2nd", "3rd", "4th", "11th", "12th", "13th", "101st", "102nd", "103rd", "111th", "something else", None, ) self.assertManyResults(number.ordinal, test_list, result_list) def test_intcomma(self): test_list = ( 100, 1000, 10123, 10311, 1000000, 1234567.25, "100", "1000", "10123", "10311", "1000000", "1234567.1234567", None, ) result_list = ( "100", "1,000", "10,123", "10,311", "1,000,000", "1,234,567.25", "100", "1,000", "10,123", "10,311", "1,000,000", "1,234,567.1234567", None, ) self.assertManyResults(number.intcomma, test_list, result_list) def test_intword(self): # make sure that powers & human_powers have the same number of items self.assertEqual(len(number.powers), len(number.human_powers)) # test the result of intword test_list = ( "100", "1000000", "1200000", "1290000", "1000000000", "2000000000", "6000000000000", "1300000000000000", "3500000000000000000000", "8100000000000000000000000000000000", None, ("1230000", "%0.2f"), 10 ** 101, ) result_list = ( "100", "1.0 million", "1.2 million", "1.3 million", "1.0 billion", "2.0 billion", "6.0 trillion", "1.3 quadrillion", "3.5 sextillion", "8.1 decillion", None, "1.23 million", "1" + "0" * 101, ) self.assertManyResults(number.intword, test_list, result_list) def test_apnumber(self): test_list = (1, 2, 4, 5, 9, 10, "7", None) result_list = ("one", "two", "four", "five", "nine", "10", "seven", None) self.assertManyResults(number.apnumber, test_list, result_list) def test_fractional(self): test_list = (1, 2.0, (4.0 / 3.0), (5.0 / 6.0), "7", "8.9", "ten", None) result_list = ("1", "2", "1 1/3", "5/6", "7", "8 9/10", "ten", None) self.assertManyResults(number.fractional, test_list, result_list) ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581186041.0 humanize-1.0.0/tests/test_time.py0000644000076500000240000002475100000000000017140 0ustar00hugostaff00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Tests for time humanizing.""" try: from unittest.mock import patch except (ImportError, AttributeError): from mock import patch from datetime import date, datetime, timedelta from freezegun import freeze_time from humanize import time from .base import HumanizeTestCase ONE_DAY = timedelta(days=1) class fakedate(object): def __init__(self, year, month, day): self.year, self.month, self.day = year, month, day VALUE_ERROR_TEST = fakedate(290149024, 2, 2) OVERFLOW_ERROR_TEST = fakedate(120390192341, 2, 2) class TimeUtilitiesTestCase(HumanizeTestCase): """These are not considered "public" interfaces, but require tests anyway.""" def test_date_and_delta(self): now = datetime.now() td = timedelta int_tests = (3, 29, 86399, 86400, 86401 * 30) date_tests = [now - td(seconds=x) for x in int_tests] td_tests = [td(seconds=x) for x in int_tests] results = [(now - td(seconds=x), td(seconds=x)) for x in int_tests] for t in (int_tests, date_tests, td_tests): for arg, result in zip(t, results): dt, d = time.date_and_delta(arg) self.assertEqualDatetime(dt, result[0]) self.assertEqualTimedelta(d, result[1]) self.assertEqual(time.date_and_delta("NaN"), (None, "NaN")) class TimeTestCase(HumanizeTestCase): """Tests for the public interface of humanize.time""" def test_naturaldelta_nomonths(self): now = datetime.now() test_list = [ timedelta(days=7), timedelta(days=31), timedelta(days=230), timedelta(days=400), ] result_list = [ "7 days", "31 days", "230 days", "1 year, 35 days", ] with patch("humanize.time._now") as mocked: mocked.return_value = now def nd_nomonths(d): return time.naturaldelta(d, months=False) self.assertManyResults(nd_nomonths, test_list, result_list) def test_naturaldelta(self): now = datetime.now() test_list = [ 0, 1, 30, timedelta(minutes=1, seconds=30), timedelta(minutes=2), timedelta(hours=1, minutes=30, seconds=30), timedelta(hours=23, minutes=50, seconds=50), timedelta(days=1), timedelta(days=500), timedelta(days=365 * 2 + 35), timedelta(seconds=1), timedelta(seconds=30), timedelta(minutes=1, seconds=30), timedelta(minutes=2), timedelta(hours=1, minutes=30, seconds=30), timedelta(hours=23, minutes=50, seconds=50), timedelta(days=1), timedelta(days=500), timedelta(days=365 * 2 + 35), # regression tests for bugs in post-release humanize timedelta(days=10000), timedelta(days=365 + 35), 30, timedelta(days=365 * 2 + 65), timedelta(days=365 + 4), timedelta(days=35), timedelta(days=65), timedelta(days=9), timedelta(days=365), "NaN", ] result_list = [ "a moment", "a second", "30 seconds", "a minute", "2 minutes", "an hour", "23 hours", "a day", "1 year, 4 months", "2 years", "a second", "30 seconds", "a minute", "2 minutes", "an hour", "23 hours", "a day", "1 year, 4 months", "2 years", "27 years", "1 year, 1 month", "30 seconds", "2 years", "1 year, 4 days", "a month", "2 months", "9 days", "a year", "NaN", ] with patch("humanize.time._now") as mocked: mocked.return_value = now self.assertManyResults(time.naturaldelta, test_list, result_list) def test_naturaltime(self): now = datetime.now() test_list = [ now, now - timedelta(seconds=1), now - timedelta(seconds=30), now - timedelta(minutes=1, seconds=30), now - timedelta(minutes=2), now - timedelta(hours=1, minutes=30, seconds=30), now - timedelta(hours=23, minutes=50, seconds=50), now - timedelta(days=1), now - timedelta(days=500), now - timedelta(days=365 * 2 + 35), now + timedelta(seconds=1), now + timedelta(seconds=30), now + timedelta(minutes=1, seconds=30), now + timedelta(minutes=2), now + timedelta(hours=1, minutes=30, seconds=30), now + timedelta(hours=23, minutes=50, seconds=50), now + timedelta(days=1), now + timedelta(days=500), now + timedelta(days=365 * 2 + 35), # regression tests for bugs in post-release humanize now + timedelta(days=10000), now - timedelta(days=365 + 35), 30, now - timedelta(days=365 * 2 + 65), now - timedelta(days=365 + 4), "NaN", ] result_list = [ "now", "a second ago", "30 seconds ago", "a minute ago", "2 minutes ago", "an hour ago", "23 hours ago", "a day ago", "1 year, 4 months ago", "2 years ago", "a second from now", "30 seconds from now", "a minute from now", "2 minutes from now", "an hour from now", "23 hours from now", "a day from now", "1 year, 4 months from now", "2 years from now", "27 years from now", "1 year, 1 month ago", "30 seconds ago", "2 years ago", "1 year, 4 days ago", "NaN", ] with patch("humanize.time._now") as mocked: mocked.return_value = now self.assertManyResults(time.naturaltime, test_list, result_list) def test_naturaltime_nomonths(self): now = datetime.now() test_list = [ now, now - timedelta(seconds=1), now - timedelta(seconds=30), now - timedelta(minutes=1, seconds=30), now - timedelta(minutes=2), now - timedelta(hours=1, minutes=30, seconds=30), now - timedelta(hours=23, minutes=50, seconds=50), now - timedelta(days=1), now - timedelta(days=17), now - timedelta(days=47), now - timedelta(days=500), now - timedelta(days=365 * 2 + 35), now + timedelta(seconds=1), now + timedelta(seconds=30), now + timedelta(minutes=1, seconds=30), now + timedelta(minutes=2), now + timedelta(hours=1, minutes=30, seconds=30), now + timedelta(hours=23, minutes=50, seconds=50), now + timedelta(days=1), now + timedelta(days=500), now + timedelta(days=365 * 2 + 35), # regression tests for bugs in post-release humanize now + timedelta(days=10000), now - timedelta(days=365 + 35), 30, now - timedelta(days=365 * 2 + 65), now - timedelta(days=365 + 4), "NaN", ] result_list = [ "now", "a second ago", "30 seconds ago", "a minute ago", "2 minutes ago", "an hour ago", "23 hours ago", "a day ago", "17 days ago", "47 days ago", "1 year, 135 days ago", "2 years ago", "a second from now", "30 seconds from now", "a minute from now", "2 minutes from now", "an hour from now", "23 hours from now", "a day from now", "1 year, 135 days from now", "2 years from now", "27 years from now", "1 year, 35 days ago", "30 seconds ago", "2 years ago", "1 year, 4 days ago", "NaN", ] with patch("humanize.time._now") as mocked: mocked.return_value = now def nt_nomonths(d): return time.naturaltime(d, months=False) self.assertManyResults(nt_nomonths, test_list, result_list) @freeze_time("2020-02-02") def test_naturalday(self): # Arrange today = date.today() tomorrow = today + ONE_DAY yesterday = today - ONE_DAY someday = date(today.year, 3, 5) someday_result = "Mar 05" valerrtest = fakedate(290149024, 2, 2) overflowtest = fakedate(120390192341, 2, 2) test_list = ( today, tomorrow, yesterday, someday, "02/26/1984", (date(1982, 6, 27), "%Y.%m.%d"), None, "Not a date at all.", valerrtest, overflowtest, ) result_list = ( "today", "tomorrow", "yesterday", someday_result, "02/26/1984", "1982.06.27", None, "Not a date at all.", valerrtest, overflowtest, ) # Act / Assert self.assertManyResults(time.naturalday, test_list, result_list) @freeze_time("2020-02-02") def test_naturaldate(self): # Arrange today = date.today() tomorrow = today + ONE_DAY yesterday = today - ONE_DAY someday = date(today.year, 3, 5) someday_result = "Mar 05" test_list = ( today, tomorrow, yesterday, someday, date(1982, 6, 27), None, "Not a date at all.", VALUE_ERROR_TEST, OVERFLOW_ERROR_TEST, ) result_list = ( "today", "tomorrow", "yesterday", someday_result, "Jun 27 1982", None, "Not a date at all.", VALUE_ERROR_TEST, OVERFLOW_ERROR_TEST, ) # Act / Assert self.assertManyResults(time.naturaldate, test_list, result_list) ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1581061752.0 humanize-1.0.0/tox.ini0000644000076500000240000000037000000000000014731 0ustar00hugostaff00000000000000[tox] envlist = py{27, 35, 36, 37, 38, py, py3} [testenv] extras = tests commands = {envpython} -m pytest --cov humanize --cov tests {posargs} [testenv:lint] deps = pre-commit commands = pre-commit run --all-files skip_install = true