././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2493875 humanize-4.0.0/0000755000076500000000000000000000000000000012154 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1721413 humanize-4.0.0/.github/0000755000076500000000000000000000000000000013514 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/CONTRIBUTING.md0000644000076500000000000000077200000000000015753 0ustar00hugowheel# Contributing ## Linting Linting is run on the CI using [pre-commit](https://pre-commit.com/), and can be run locally: ```sh pip install pre-commit pre-commit install # optional: to run when you commit, on just the staged changes pre-commit run --all-files # to run on all files now ``` ## Docstrings Follow [Google style](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings) for docstrings. ## Localization See [README](https://github.com/jmoiron/humanize#localization). ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/FUNDING.md0000644000076500000000000000003200000000000015123 0ustar00hugowheeltidelift: "pypi/humanize" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/ISSUE_TEMPLATE.md0000644000076500000000000000067200000000000016226 0ustar00hugowheel### What did you do? ### What did you expect to happen? ### What actually happened? ### What versions are you using? * OS: * Python: * Humanize: Please include **code** that reproduces the issue. The [best reproductions](https://stackoverflow.com/help/minimal-reproducible-example) are [self-contained scripts](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) with minimal dependencies. ```python code goes here ``` ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/PULL_REQUEST_TEMPLATE.md0000644000076500000000000000007200000000000017314 0ustar00hugowheelFixes # Changes proposed in this pull request: * * * ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/SECURITY.md0000644000076500000000000000022000000000000015277 0ustar00hugowheel# Security policy Security reports can be made via [Tidelift](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/labels.yml0000644000076500000000000000342300000000000015503 0ustar00hugowheel# Default GitHub labels - color: d73a4a description: "Something isn't working" name: bug - color: cfd3d7 description: "This issue or pull request already exists" name: duplicate - color: a2eeef description: "New feature or request" name: enhancement - color: 7057ff description: "Good for newcomers" name: good first issue - color: 008672 description: "Extra attention is needed" name: help wanted - color: e4e669 description: "This doesn't seem right" name: invalid - color: d876e3 description: "Further information is requested" name: question - color: ffffff description: "This will not be worked on" name: wontfix # Keep a Changelog labels # https://keepachangelog.com/en/1.0.0/ - color: 0e8a16 description: "For new features" name: "changelog: Added" - color: af99e5 description: "For changes in existing functionality" name: "changelog: Changed" - color: FFA500 description: "For soon-to-be removed features" name: "changelog: Deprecated" - color: 00A800 description: "For any bug fixes" name: "changelog: Fixed" - color: ff0000 description: "For now removed features" name: "changelog: Removed" - color: 045aa0 description: "In case of vulnerabilities" name: "changelog: Security" - color: fbca04 description: "Exclude PR from release draft" name: "changelog: skip" # Other labels - color: 0075ca description: "Improvements or additions to documentation" name: documentation - color: d0c1ff description: "Translations need updating" name: "needs localisation" - color: eb6123 description: "" name: Hacktoberfest - color: eb6123 description: "To credit accepted Hacktoberfest PRs" name: hacktoberfest-accepted - color: e29673 name: "needs tests" - color: fbca04 description: "Unit tests, linting, CI, etc." name: testing ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/release-drafter.yml0000644000076500000000000000143500000000000017307 0ustar00hugowheelname-template: "$RESOLVED_VERSION" tag-template: "$RESOLVED_VERSION" categories: - title: "Added" labels: - "changelog: Added" - "enhancement" - title: "Changed" label: "changelog: Changed" - title: "Deprecated" label: "changelog: Deprecated" - title: "Removed" label: "changelog: Removed" - title: "Fixed" labels: - "changelog: Fixed" - "bug" - title: "Security" label: "changelog: Security" exclude-labels: - "changelog: skip" template: | $CHANGES version-resolver: major: labels: - "changelog: Removed" minor: labels: - "changelog: Added" - "changelog: Changed" - "changelog: Deprecated" - "enhancement" patch: labels: - "changelog: Fixed" - "bug" default: minor ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.177111 humanize-4.0.0/.github/workflows/0000755000076500000000000000000000000000000015551 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/workflows/docs.yml0000644000076500000000000000075400000000000017232 0ustar00hugowheelname: Docs on: [push, pull_request, workflow_dispatch] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: "3.x" pip: cache pip-dependency-path: tox.ini - name: Install dependencies run: | python -m pip install -U pip python -m pip install -U tox - name: Docs run: tox -e docs ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/workflows/labels.yml0000644000076500000000000000054100000000000017536 0ustar00hugowheelname: Sync labels on: push: branches: - master paths: - .github/labels.yml workflow_dispatch: jobs: sync: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: micnncim/action-label-syncer@v1 with: prune: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/workflows/lint.yml0000644000076500000000000000033500000000000017243 0ustar00hugowheelname: Lint on: [push, pull_request, workflow_dispatch] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - uses: pre-commit/action@v2.0.3 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/workflows/release-drafter.yml0000644000076500000000000000071500000000000021344 0ustar00hugowheelname: Release drafter on: push: # branches to consider in the event; optional, defaults to all branches: - master workflow_dispatch: jobs: update_release_draft: if: github.repository_owner == 'jmoiron' runs-on: ubuntu-latest steps: # Drafts your next release notes as pull requests are merged into "master" - uses: release-drafter/release-drafter@v5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.github/workflows/test.yml0000644000076500000000000000312700000000000017256 0ustar00hugowheelname: Test on: [push, pull_request, workflow_dispatch] env: FORCE_COLOR: 1 jobs: test: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: python-version: ["pypy-3.8", "3.7", "3.8", "3.9", "3.10"] os: [ubuntu-latest, macos-latest, windows-latest] include: # Include new variables for Codecov - { codecov-flag: GHA_Ubuntu, os: ubuntu-latest } - { codecov-flag: GHA_macOS, os: macos-latest } - { codecov-flag: GHA_Windows, os: windows-latest } steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} cache: pip cache-dependency-path: setup.cfg - name: Install Linux dependencies if: startsWith(matrix.os, 'ubuntu') run: | sudo apt install gettext - name: Install macOS dependencies if: startsWith(matrix.os, 'macos') run: | brew install gettext - name: Install dependencies run: | python -m pip install -U pip python -m pip install -U wheel python -m pip install -U tox - name: Generate translation binaries run: | scripts/generate-translation-binaries.sh - name: Tox tests run: | tox -e py - name: Upload coverage uses: codecov/codecov-action@v2 with: flags: ${{ matrix.codecov-flag }} name: ${{ matrix.os }} Python ${{ matrix.python-version }} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.gitignore0000644000076500000000000000017700000000000014151 0ustar00hugowheel.coverage .DS_Store .eggs .testmondata .tox *.egg-info* *.mo *.pot *.py[co] *.sw[po] build dist docs/_build* htmlcov site tags ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.pre-commit-config.yaml0000644000076500000000000000277600000000000016451 0ustar00hugowheelrepos: - repo: https://github.com/asottile/pyupgrade rev: v2.31.0 hooks: - id: pyupgrade args: [--py37-plus] - repo: https://github.com/psf/black rev: 22.1.0 hooks: - id: black args: [--target-version=py37] - repo: https://github.com/PyCQA/isort rev: 5.10.1 hooks: - id: isort - repo: https://github.com/myint/autoflake rev: v1.4 hooks: - id: autoflake name: autoflake args: [ "--in-place", "--remove-unused-variables", "--remove-all-unused-imports", ] language: python files: \.py$ - repo: https://github.com/PyCQA/flake8 rev: 4.0.1 hooks: - id: flake8 additional_dependencies: [flake8-2020, flake8-implicit-str-concat] - repo: https://github.com/pre-commit/pygrep-hooks rev: v1.9.0 hooks: - id: python-check-blanket-noqa - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.1.0 hooks: - id: check-merge-conflict - id: check-toml - id: check-yaml - id: end-of-file-fixer - repo: https://github.com/PyCQA/pydocstyle rev: 6.1.1 hooks: - id: pydocstyle args: ["--convention", "google"] files: "src/" - repo: https://github.com/tox-dev/tox-ini-fmt rev: 0.5.2 hooks: - id: tox-ini-fmt - repo: https://github.com/asottile/setup-cfg-fmt rev: v1.20.0 hooks: - id: setup-cfg-fmt ci: autoupdate_schedule: quarterly ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/.readthedocs.yml0000644000076500000000000000003600000000000015241 0ustar00hugowheelpython: pip_install: true ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/LICENCE0000644000076500000000000000206600000000000013145 0ustar00hugowheelCopyright (c) 2010-2020 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. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/MANIFEST.in0000644000076500000000000000005300000000000013710 0ustar00hugowheelrecursive-include src/humanize/locale *.mo ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2496195 humanize-4.0.0/PKG-INFO0000644000076500000000000001623700000000000013262 0ustar00hugowheelMetadata-Version: 2.1 Name: humanize Version: 4.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 Project-URL: Source, https://github.com/jmoiron/humanize Project-URL: Issue tracker, https://github.com/jmoiron/humanize/issues Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-humanize?utm_source=pypi-humanize&utm_medium=pypi Project-URL: Documentation, https://python-humanize.readthedocs.io/ Project-URL: Release notes, https://github.com/jmoiron/humanize/releases 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 :: 3 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Text Processing Classifier: Topic :: Text Processing :: General Requires-Python: >=3.7 Description-Content-Type: text/markdown Provides-Extra: tests License-File: LICENCE # 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/) [![Documentation Status](https://readthedocs.org/projects/python-humanize/badge/?version=latest)](https://python-humanize.readthedocs.io/en/latest/?badge=latest) [![PyPI downloads](https://img.shields.io/pypi/dm/humanize.svg)](https://pypistats.org/packages/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)](LICENCE) [![Tidelift](https://tidelift.com/badges/package/pypi/humanize)](https://tidelift.com/subscription/pkg/pypi-humanize?utm_source=pypi-humanize&utm_medium=badge) 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 is localized to: * Bengali * Brazilian Portuguese * Catalan * Danish * Dutch * European Portuguese * Finnish * French * German * Indonesian * Italian * Japanese * Korean * Persian * Polish * Russian * Simplified Chinese * Slovak * Slovenian * Spanish * Swedish * Turkish * Ukrainian * Vietnamese ## API reference [https://python-humanize.readthedocs.io](https://python-humanize.readthedocs.io) ## 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 humanize >>> import datetime as dt >>> humanize.naturalday(dt.datetime.now()) 'today' >>> humanize.naturaldelta(dt.timedelta(seconds=1001)) '16 minutes' >>> humanize.naturalday(dt.datetime.now() - dt.timedelta(days=1)) 'yesterday' >>> humanize.naturalday(dt.date(2007, 6, 5)) 'Jun 05' >>> humanize.naturaldate(dt.date(2007, 6, 5)) 'Jun 05 2007' >>> humanize.naturaltime(dt.datetime.now() - dt.timedelta(seconds=1)) 'a second ago' >>> humanize.naturaltime(dt.datetime.now() - dt.timedelta(seconds=3600)) 'an hour ago' ``` ### Precise time delta ```pycon >>> import humanize >>> import datetime as dt >>> delta = dt.timedelta(seconds=3633, days=2, microseconds=123000) >>> humanize.precisedelta(delta) '2 days, 1 hour and 33.12 seconds' >>> humanize.precisedelta(delta, minimum_unit="microseconds") '2 days, 1 hour, 33 seconds and 123 milliseconds' >>> humanize.precisedelta(delta, suppress=["days"], format="%0.4f") '49 hours and 33.1230 seconds' ``` #### Smaller units If seconds are too large, set `minimum_unit` to milliseconds or microseconds: ```pycon >>> import humanize >>> import datetime as dt >>> humanize.naturaldelta(dt.timedelta(seconds=2)) '2 seconds' ``` ```pycon >>> delta = dt.timedelta(milliseconds=4) >>> humanize.naturaldelta(delta) 'a moment' >>> humanize.naturaldelta(delta, minimum_unit="milliseconds") '4 milliseconds' >>> humanize.naturaldelta(delta, minimum_unit="microseconds") '4 milliseconds' ``` ```pycon >>> humanize.naturaltime(delta) 'now' >>> humanize.naturaltime(delta, minimum_unit="milliseconds") '4 milliseconds ago' >>> humanize.naturaltime(delta, minimum_unit="microseconds") '4 milliseconds ago' ``` ### File size humanization ```pycon >>> import humanize >>> humanize.naturalsize(1_000_000) '1.0 MB' >>> humanize.naturalsize(1_000_000, binary=True) '976.6 KiB' >>> humanize.naturalsize(1_000_000, gnu=True) '976.6K' ``` ### Human-readable floating point numbers ```pycon >>> import humanize >>> humanize.fractional(1/3) '1/3' >>> humanize.fractional(1.5) '1 1/2' >>> humanize.fractional(0.3) '3/10' >>> humanize.fractional(0.333) '333/1000' >>> humanize.fractional(1) '1' ``` ### Scientific notation ```pycon >>> import humanize >>> humanize.scientific(0.3) '3.00 x 10⁻¹' >>> humanize.scientific(500) '5.00 x 10²' >>> humanize.scientific("20000") '2.00 x 10⁴' >>> humanize.scientific(1**10) '1.00 x 10⁰' >>> humanize.scientific(1**10, precision=1) '1.0 x 10⁰' >>> humanize.scientific(1**10, precision=0) '1 x 10⁰' ``` ## Localization How to change locale at runtime: ```pycon >>> import humanize >>> import datetime as dt >>> humanize.naturaltime(dt.timedelta(seconds=3)) '3 seconds ago' >>> _t = humanize.i18n.activate("ru_RU") >>> humanize.naturaltime(dt.timedelta(seconds=3)) '3 секунды назад' >>> humanize.i18n.deactivate() >>> humanize.naturaltime(dt.timedelta(seconds=3)) '3 seconds ago' ``` You can pass additional parameter `path` to `activate` to specify a path to search locales in. ```pycon >>> import humanize >>> humanize.i18n.activate("xx_XX") <...> FileNotFoundError: [Errno 2] No translation file found for domain: 'humanize' >>> humanize.i18n.activate("pt_BR", path="path/to/my/own/translation/") ``` How to add new phrases to existing locale files: ```console $ xgettext --from-code=UTF-8 -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 ``` 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. List the language at the top of this README. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/README.md0000644000076500000000000001322600000000000013437 0ustar00hugowheel# 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/) [![Documentation Status](https://readthedocs.org/projects/python-humanize/badge/?version=latest)](https://python-humanize.readthedocs.io/en/latest/?badge=latest) [![PyPI downloads](https://img.shields.io/pypi/dm/humanize.svg)](https://pypistats.org/packages/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)](LICENCE) [![Tidelift](https://tidelift.com/badges/package/pypi/humanize)](https://tidelift.com/subscription/pkg/pypi-humanize?utm_source=pypi-humanize&utm_medium=badge) 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 is localized to: * Bengali * Brazilian Portuguese * Catalan * Danish * Dutch * European Portuguese * Finnish * French * German * Indonesian * Italian * Japanese * Korean * Persian * Polish * Russian * Simplified Chinese * Slovak * Slovenian * Spanish * Swedish * Turkish * Ukrainian * Vietnamese ## API reference [https://python-humanize.readthedocs.io](https://python-humanize.readthedocs.io) ## 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 humanize >>> import datetime as dt >>> humanize.naturalday(dt.datetime.now()) 'today' >>> humanize.naturaldelta(dt.timedelta(seconds=1001)) '16 minutes' >>> humanize.naturalday(dt.datetime.now() - dt.timedelta(days=1)) 'yesterday' >>> humanize.naturalday(dt.date(2007, 6, 5)) 'Jun 05' >>> humanize.naturaldate(dt.date(2007, 6, 5)) 'Jun 05 2007' >>> humanize.naturaltime(dt.datetime.now() - dt.timedelta(seconds=1)) 'a second ago' >>> humanize.naturaltime(dt.datetime.now() - dt.timedelta(seconds=3600)) 'an hour ago' ``` ### Precise time delta ```pycon >>> import humanize >>> import datetime as dt >>> delta = dt.timedelta(seconds=3633, days=2, microseconds=123000) >>> humanize.precisedelta(delta) '2 days, 1 hour and 33.12 seconds' >>> humanize.precisedelta(delta, minimum_unit="microseconds") '2 days, 1 hour, 33 seconds and 123 milliseconds' >>> humanize.precisedelta(delta, suppress=["days"], format="%0.4f") '49 hours and 33.1230 seconds' ``` #### Smaller units If seconds are too large, set `minimum_unit` to milliseconds or microseconds: ```pycon >>> import humanize >>> import datetime as dt >>> humanize.naturaldelta(dt.timedelta(seconds=2)) '2 seconds' ``` ```pycon >>> delta = dt.timedelta(milliseconds=4) >>> humanize.naturaldelta(delta) 'a moment' >>> humanize.naturaldelta(delta, minimum_unit="milliseconds") '4 milliseconds' >>> humanize.naturaldelta(delta, minimum_unit="microseconds") '4 milliseconds' ``` ```pycon >>> humanize.naturaltime(delta) 'now' >>> humanize.naturaltime(delta, minimum_unit="milliseconds") '4 milliseconds ago' >>> humanize.naturaltime(delta, minimum_unit="microseconds") '4 milliseconds ago' ``` ### File size humanization ```pycon >>> import humanize >>> humanize.naturalsize(1_000_000) '1.0 MB' >>> humanize.naturalsize(1_000_000, binary=True) '976.6 KiB' >>> humanize.naturalsize(1_000_000, gnu=True) '976.6K' ``` ### Human-readable floating point numbers ```pycon >>> import humanize >>> humanize.fractional(1/3) '1/3' >>> humanize.fractional(1.5) '1 1/2' >>> humanize.fractional(0.3) '3/10' >>> humanize.fractional(0.333) '333/1000' >>> humanize.fractional(1) '1' ``` ### Scientific notation ```pycon >>> import humanize >>> humanize.scientific(0.3) '3.00 x 10⁻¹' >>> humanize.scientific(500) '5.00 x 10²' >>> humanize.scientific("20000") '2.00 x 10⁴' >>> humanize.scientific(1**10) '1.00 x 10⁰' >>> humanize.scientific(1**10, precision=1) '1.0 x 10⁰' >>> humanize.scientific(1**10, precision=0) '1 x 10⁰' ``` ## Localization How to change locale at runtime: ```pycon >>> import humanize >>> import datetime as dt >>> humanize.naturaltime(dt.timedelta(seconds=3)) '3 seconds ago' >>> _t = humanize.i18n.activate("ru_RU") >>> humanize.naturaltime(dt.timedelta(seconds=3)) '3 секунды назад' >>> humanize.i18n.deactivate() >>> humanize.naturaltime(dt.timedelta(seconds=3)) '3 seconds ago' ``` You can pass additional parameter `path` to `activate` to specify a path to search locales in. ```pycon >>> import humanize >>> humanize.i18n.activate("xx_XX") <...> FileNotFoundError: [Errno 2] No translation file found for domain: 'humanize' >>> humanize.i18n.activate("pt_BR", path="path/to/my/own/translation/") ``` How to add new phrases to existing locale files: ```console $ xgettext --from-code=UTF-8 -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 ``` 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. List the language at the top of this README. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/RELEASING.md0000644000076500000000000000317300000000000014013 0ustar00hugowheel# Release Checklist - [ ] Get master to the appropriate code release state. [GitHub Actions](https://github.com/jmoiron/humanize/actions) should be running cleanly for all merges to master. [![GitHub Actions status](https://github.com/jmoiron/humanize/workflows/Test/badge.svg)](https://github.com/jmoiron/humanize/actions) * [ ] Start from a freshly cloned repo: ```bash cd /tmp rm -rf humanize git clone https://github.com/jmoiron/humanize cd humanize # Generate translation binaries scripts/generate-translation-binaries.sh ``` * [ ] (Optional) Create a distribution and release on **TestPyPI**: ```bash pip install -U pip build keyring twine rm -rf build dist python -m build twine check --strict dist/* && twine upload --repository-url https://test.pypi.org/legacy/ dist/* ``` - [ ] (Optional) Check **test** installation: ```bash pip3 uninstall -y humanize pip3 install -U -i https://test.pypi.org/simple/ humanize python3 -c "import humanize; print(humanize.__version__)" ``` * [ ] Tag with the version number: ```bash git tag -a 2.1.0 -m "Release 2.1.0" ``` * [ ] Create a distribution and release on **live PyPI**: ```bash pip install -U pip build keyring twine rm -rf build dist python -m build twine check --strict dist/* && twine upload -r pypi dist/* ``` * [ ] Check installation: ```bash pip uninstall -y humanize pip install -U humanize python3 -c "import humanize; print(humanize.__version__)" ``` * [ ] Push tag: ```bash git push --tags ``` * [ ] Edit release draft, adjust text if needed: https://github.com/jmoiron/humanize/releases * [ ] Check next tag is correct, amend if needed * [ ] Publish release ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1906962 humanize-4.0.0/docs/0000755000076500000000000000000000000000000013104 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/docs/filesize.md0000644000076500000000000000004200000000000015234 0ustar00hugowheel# Filesize ::: humanize.filesize ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/docs/i18n.md0000644000076500000000000000005200000000000014202 0ustar00hugowheel# Internationalisation ::: humanize.i18n ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/docs/index.md0000644000076500000000000000033400000000000014535 0ustar00hugowheel# humanize Welcome to the humanize API reference. * [Number](number) * [Time](time) * [Filesize](filesize) * [I18n](i18n) For usage examples see [README.md](https://github.com/jmoiron/humanize/blob/master/README.md). ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/docs/number.md0000644000076500000000000000003600000000000014715 0ustar00hugowheel# Number ::: humanize.number ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/docs/requirements.txt0000644000076500000000000000005100000000000016364 0ustar00hugowheelmkdocs>=1.1 mkdocs-material mkdocstrings ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/docs/time.md0000644000076500000000000000003200000000000014357 0ustar00hugowheel# Time ::: humanize.time ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/mkdocs.yml0000644000076500000000000000052500000000000014161 0ustar00hugowheelsite_name: humanize site_url: https://python-humanize.readthedocs.io repo_url: https://github.com/jmoiron/humanize theme: name: "material" nav: - Home: index.md - Number: number.md - Time: time.md - Filesize: filesize.md - Internationalisation: i18n.md plugins: - search - mkdocstrings: watch: - src/humanize ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/pyproject.toml0000644000076500000000000000033400000000000015070 0ustar00hugowheel[build-system] requires = ["setuptools>=42", "wheel", "setuptools_scm[toml]>=3.4"] build-backend = "setuptools.build_meta" [tool.black] target_version = ["py37"] [tool.setuptools_scm] local_scheme = "no-local-version" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1937482 humanize-4.0.0/scripts/0000755000076500000000000000000000000000000013643 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/scripts/generate-translation-binaries.sh0000755000076500000000000000031400000000000022120 0ustar00hugowheelset -e for d in src/humanize/locale/*/; do locale="$(basename $d)" echo "$locale" # compile to binary .mo msgfmt --check -o src/humanize/locale/$locale/LC_MESSAGES/humanize{.mo,.po} done ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/scripts/update-translations.sh0000755000076500000000000000102000000000000020174 0ustar00hugowheelset -e # extract new phrases /usr/local/opt/gettext/bin/xgettext --from-code=UTF-8 -o humanize.pot -k'_' -k'N_' -k'P_:1c,2' -k'NS_:1,2' -l python src/humanize/*.py for d in src/humanize/locale/*/; do locale="$(basename $d)" echo "$locale" # add them to locale files /usr/local/opt/gettext/bin/msgmerge -U src/humanize/locale/$locale/LC_MESSAGES/humanize.po humanize.pot # compile to binary .mo /usr/local/opt/gettext/bin/msgfmt --check -o src/humanize/locale/$locale/LC_MESSAGES/humanize{.mo,.po} done ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2507124 humanize-4.0.0/setup.cfg0000644000076500000000000000333300000000000013777 0ustar00hugowheel[metadata] name = humanize description = Python humanize utilities long_description = file: README.md long_description_content_type = text/markdown url = https://github.com/jmoiron/humanize author = Jason Moiron author_email = jmoiron@jmoiron.net maintainer = Hugo van Kemenade license = MIT license_file = LICENCE classifiers = Development Status :: 5 - Production/Stable Intended Audience :: Developers License :: OSI Approved :: MIT License Operating System :: OS Independent Programming Language :: Python Programming Language :: Python :: 3 Programming Language :: Python :: 3 :: Only Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 Programming Language :: Python :: Implementation :: CPython Programming Language :: Python :: Implementation :: PyPy Topic :: Text Processing Topic :: Text Processing :: General keywords = humanize time size project_urls = Source=https://github.com/jmoiron/humanize Issue tracker=https://github.com/jmoiron/humanize/issues Funding=https://tidelift.com/subscription/pkg/pypi-humanize?utm_source=pypi-humanize&utm_medium=pypi Documentation=https://python-humanize.readthedocs.io/ Release notes=https://github.com/jmoiron/humanize/releases [options] packages = find: install_requires = importlib-metadata;python_version < '3.8' python_requires = >=3.7 include_package_data = True package_dir = =src zip_safe = False [options.packages.find] where = src [options.extras_require] tests = freezegun pytest pytest-cov [flake8] max_line_length = 88 [pydocstyle] convention = google [tool:isort] profile = black [tool:pytest] addopts = --color=yes [egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/setup.py0000644000076500000000000000004600000000000013666 0ustar00hugowheelfrom setuptools import setup setup() ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1444502 humanize-4.0.0/src/0000755000076500000000000000000000000000000012743 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1973977 humanize-4.0.0/src/humanize/0000755000076500000000000000000000000000000014563 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/__init__.py0000644000076500000000000000164400000000000016701 0ustar00hugowheel"""Main package for humanize.""" from humanize.filesize import naturalsize from humanize.i18n import activate, deactivate, thousands_separator from humanize.number import ( apnumber, clamp, fractional, intcomma, intword, ordinal, scientific, ) from humanize.time import ( naturaldate, naturalday, naturaldelta, naturaltime, precisedelta, ) try: # Python 3.8+ import importlib.metadata as importlib_metadata except ImportError: # >> naturalsize(3000000) '3.0 MB' >>> naturalsize(300, False, True) '300B' >>> naturalsize(3000, False, True) '2.9K' >>> naturalsize(3000, False, True, "%.3f") '2.930K' >>> naturalsize(3000, True) '2.9 KiB' ``` Args: value (int, float, str): Integer to convert. binary (bool): If `True`, uses binary suffixes (KiB, MiB) with base 210 instead of 103. gnu (bool): If `True`, the binary argument is ignored and GNU-style (`ls -sh` style) prefixes are used (K, M) with the 2**10 definition. format (str): Custom formatter. Returns: str: Human readable representation of a filesize. """ 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) abs_bytes = abs(bytes) if abs_bytes == 1 and not gnu: return "%d Byte" % bytes elif abs_bytes < base and not gnu: return "%d Bytes" % bytes elif abs_bytes < base and gnu: return "%dB" % bytes for i, s in enumerate(suffix): unit = base ** (i + 2) if abs_bytes < unit and not gnu: return (format + " %s") % ((base * bytes / unit), s) elif abs_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) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/i18n.py0000644000076500000000000001035300000000000015716 0ustar00hugowheel"""Activate, get and deactivate translations.""" import gettext as gettext_module import os.path from threading import local __all__ = ["activate", "deactivate", "thousands_separator"] _TRANSLATIONS = {None: gettext_module.NullTranslations()} _CURRENT = local() # Mapping of locale to thousands separator _THOUSANDS_SEPARATOR = { "fr_FR": " ", } def _get_default_locale_path(): try: if __file__ is None: return None return os.path.join(os.path.dirname(__file__), "locale") except NameError: return None def get_translation(): try: return _TRANSLATIONS[_CURRENT.locale] except (AttributeError, KeyError): return _TRANSLATIONS[None] def activate(locale, path=None): """Activate internationalisation. Set `locale` as current locale. Search for locale in directory `path`. Args: locale (str): Language name, e.g. `en_GB`. path (str): Path to search for locales. Returns: dict: Translations. Raises: Exception: If humanize cannot find the locale folder. """ if path is None: path = _get_default_locale_path() if path is None: raise Exception( "Humanize cannot determinate the default location of the 'locale' folder. " "You need to pass the path explicitly." ) if locale not in _TRANSLATIONS: translation = gettext_module.translation("humanize", path, [locale]) _TRANSLATIONS[locale] = translation _CURRENT.locale = locale return _TRANSLATIONS[locale] def deactivate(): """Deactivate internationalisation.""" _CURRENT.locale = None def _gettext(message): """Get translation. Args: message (str): Text to translate. Returns: str: Translated text. """ return get_translation().gettext(message) def _pgettext(msgctxt, message): """Fetches a particular translation. It works with `msgctxt` .po modifiers and allows duplicate keys with different translations. Args: msgctxt (str): Context of the translation. message (str): Text to translate. Returns: str: Translated text. """ # This GNU gettext function was added in Python 3.8, so for older versions we # reimplement it. It works by joining `msgctx` and `message` by '4' byte. try: # Python 3.8+ return get_translation().pgettext(msgctxt, message) except AttributeError: # Python 3.7 and older key = msgctxt + "\x04" + message translation = get_translation().gettext(key) return message if translation == key else translation def _ngettext(message, plural, num): """Plural version of _gettext. Args: message (str): Singular text to translate. plural (str): Plural text to translate. num (str): The number (e.g. item count) to determine translation for the respective grammatical number. Returns: str: Translated text. """ return get_translation().ngettext(message, plural, num) def _gettext_noop(message): """Mark a string as a translation string without translating it. Example usage: ```python CONSTANTS = [_gettext_noop('first'), _gettext_noop('second')] def num_name(n): return _gettext(CONSTANTS[n]) ``` Args: message (str): Text to translate in the future. Returns: str: Original text, unchanged. """ return message def _ngettext_noop(singular, plural): """Mark two strings as pluralized translations without translating them. Example usage: ```python CONSTANTS = [ngettext_noop('first', 'firsts'), ngettext_noop('second', 'seconds')] def num_name(n): return _ngettext(*CONSTANTS[n]) ``` Args: singular (str): Singular text to translate in the future. plural (str): Plural text to translate in the future. Returns: tuple: Original text, unchanged. """ return (singular, plural) def thousands_separator() -> str: """Return the thousands separator for a locale, default to comma. Returns: str: Thousands separator. """ try: sep = _THOUSANDS_SEPARATOR[_CURRENT.locale] except (AttributeError, KeyError): sep = "," return sep ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1532028 humanize-4.0.0/src/humanize/locale/0000755000076500000000000000000000000000000016022 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1453855 humanize-4.0.0/src/humanize/locale/bn_BD/0000755000076500000000000000000000000000000016766 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.202421 humanize-4.0.0/src/humanize/locale/bn_BD/LC_MESSAGES/0000755000076500000000000000000000000000000020553 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/bn_BD/LC_MESSAGES/humanize.mo0000644000076500000000000000453700000000000022741 0ustar00hugowheel$<5\01@Qp  "<LR[dlu| J%8U^C%+8d ~  7 ):Qn        5 ? O # $"   !  %d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 montha daya minutea momenta montha seconda yearan houreightfivefourninenowonesevensixthreetodaytomorrowtwoyesterdayzeroProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2021-07-29 22:07+0600 Last-Translator: U-WASI-PC\Wasi Master Language-Team: Bengali Language: bn_BD 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 মাস%d সেকন্ড%d সেকন্ড%d বছর%d বছর%s আগে%s আর %sআজ থেকে %s পরে%d বছর%d বছর১ বছর, %d মাস১ বছর, %d মাস১ বছর, ১ মাসএক দিনএক মিনিটএক মুহুর্তএক মাসএক সেকন্ডএক বছরএক ঘন্টাআটপাচচারনয়এখনএকসাতছয়তিনআজকেআগামীকালদুইগতকালশুন্য././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/bn_BD/LC_MESSAGES/humanize.po0000644000076500000000000001266200000000000022742 0ustar00hugowheel# Bengali translations for humanize package. # Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the humanize package. # Wasi Master , 2021. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-07-29 21:59+0600\n" "PO-Revision-Date: 2021-07-29 22:07+0600\n" "Last-Translator: U-WASI-PC\\Wasi Master \n" "Language-Team: Bengali\n" "Language: bn_BD\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:58 msgctxt "0 (male)" msgid "th" msgstr "" #: src/humanize/number.py:59 msgctxt "1 (male)" msgid "st" msgstr "" #: src/humanize/number.py:60 msgctxt "2 (male)" msgid "nd" msgstr "" #: src/humanize/number.py:61 msgctxt "3 (male)" msgid "rd" msgstr "" #: src/humanize/number.py:62 msgctxt "4 (male)" msgid "th" msgstr "" #: src/humanize/number.py:63 msgctxt "5 (male)" msgid "th" msgstr "" #: src/humanize/number.py:64 msgctxt "6 (male)" msgid "th" msgstr "" #: src/humanize/number.py:65 msgctxt "7 (male)" msgid "th" msgstr "" #: src/humanize/number.py:66 msgctxt "8 (male)" msgid "th" msgstr "" #: src/humanize/number.py:67 msgctxt "9 (male)" msgid "th" msgstr "" #: src/humanize/number.py:71 msgctxt "0 (female)" msgid "th" msgstr "" #: src/humanize/number.py:72 msgctxt "1 (female)" msgid "st" msgstr "" #: src/humanize/number.py:73 msgctxt "2 (female)" msgid "nd" msgstr "" #: src/humanize/number.py:74 msgctxt "3 (female)" msgid "rd" msgstr "" #: src/humanize/number.py:75 msgctxt "4 (female)" msgid "th" msgstr "" #: src/humanize/number.py:76 msgctxt "5 (female)" msgid "th" msgstr "" #: src/humanize/number.py:77 msgctxt "6 (female)" msgid "th" msgstr "" #: src/humanize/number.py:78 msgctxt "7 (female)" msgid "th" msgstr "" #: src/humanize/number.py:79 msgctxt "8 (female)" msgid "th" msgstr "" #: src/humanize/number.py:80 msgctxt "9 (female)" msgid "th" msgstr "" #: src/humanize/number.py:247 msgid "zero" msgstr "শুন্য" #: src/humanize/number.py:248 msgid "one" msgstr "এক" #: src/humanize/number.py:249 msgid "two" msgstr "দুই" #: src/humanize/number.py:250 msgid "three" msgstr "তিন" #: src/humanize/number.py:251 msgid "four" msgstr "চার" #: src/humanize/number.py:252 msgid "five" msgstr "পাচ" #: src/humanize/number.py:253 msgid "six" msgstr "ছয়" #: src/humanize/number.py:254 msgid "seven" msgstr "সাত" #: src/humanize/number.py:255 msgid "eight" msgstr "আট" #: src/humanize/number.py:256 msgid "nine" msgstr "নয়" #: src/humanize/time.py:138 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d মাইক্রোসেকন্ড" msgstr[1] "%d মাইক্রোসেকন্ড" #: src/humanize/time.py:147 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d মিলিসেকন্ড" msgstr[1] "%d মিলিসেকন্ড" #: src/humanize/time.py:150 src/humanize/time.py:231 msgid "a moment" msgstr "এক মুহুর্ত" #: src/humanize/time.py:152 msgid "a second" msgstr "এক সেকন্ড" #: src/humanize/time.py:154 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d সেকন্ড" msgstr[1] "%d সেকন্ড" #: src/humanize/time.py:156 msgid "a minute" msgstr "এক মিনিট" #: src/humanize/time.py:159 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d মিনিট" msgstr[1] "%d মিনিট" #: src/humanize/time.py:161 msgid "an hour" msgstr "এক ঘন্টা" #: src/humanize/time.py:164 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ঘন্টা" msgstr[1] "%d ঘন্টা" #: src/humanize/time.py:167 msgid "a day" msgstr "এক দিন" #: src/humanize/time.py:169 src/humanize/time.py:172 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d দিন" msgstr[1] "%d দিন" #: src/humanize/time.py:174 msgid "a month" msgstr "এক মাস" #: src/humanize/time.py:176 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d মাস" msgstr[1] "%d মাস" #: src/humanize/time.py:179 msgid "a year" msgstr "এক বছর" #: src/humanize/time.py:181 src/humanize/time.py:190 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "%d বছর" msgstr[1] "%d বছর" #: src/humanize/time.py:184 msgid "1 year, 1 month" msgstr "১ বছর, ১ মাস" #: src/humanize/time.py:187 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "১ বছর, %d মাস" msgstr[1] "১ বছর, %d মাস" #: src/humanize/time.py:192 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d বছর" msgstr[1] "%d বছর" #: src/humanize/time.py:228 #, python-format msgid "%s from now" msgstr "আজ থেকে %s পরে" #: src/humanize/time.py:228 #, python-format msgid "%s ago" msgstr "%s আগে" #: src/humanize/time.py:232 msgid "now" msgstr "এখন" #: src/humanize/time.py:255 msgid "today" msgstr "আজকে" #: src/humanize/time.py:257 msgid "tomorrow" msgstr "আগামীকাল" #: src/humanize/time.py:259 msgid "yesterday" msgstr "গতকাল" #: src/humanize/time.py:545 #, python-format msgid "%s and %s" msgstr "%s আর %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1459105 humanize-4.0.0/src/humanize/locale/ca_ES/0000755000076500000000000000000000000000000016774 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2041996 humanize-4.0.0/src/humanize/locale/ca_ES/LC_MESSAGES/0000755000076500000000000000000000000000000020561 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/ca_ES/LC_MESSAGES/humanize.mo0000644000076500000000000000642100000000000022741 0ustar00hugowheelC4YL$7L] d n z   "    ( 4 B N \ h v      ,27 <JZ_sw   * Y/    !     - 3 ; A D G J M j                         ) . 3 : H V Z l p               <$?@'9456)C >;0 B(! /= 82 .# +,A*17%:3&"-%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2021-04-09 19:57+0200 Last-Translator: Jordi Mas i Hernàndez Language-Team: Catalan Language: ca 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.4.1 %d dia%d dies%d hora%d hores%d microsegon%d microsegons%d mil·lisegons%d mil·lisegons%d minut%d minuts%d mes%d mesos%d segon%d segons%d any%d anysfa %s%s i %sen %sºººº1 any, %d dia1 any, %d dies1 any, %d mes1 any, %d mesos1 any, 1 mesººººººººººººººººun diaun minutun momentun mesun segonun anyuna horamil milionsmil milionsdeciliódecilióvuitcincquatregoogolgoogolmiliómiliónounoniliónonilióaraoctilióoctilióunquadrilióquadrilióquintillióquintillióseptilióseptiliósetsextiliósextiliósistresavuidemàbilionsbilionsdosahirzero././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/ca_ES/LC_MESSAGES/humanize.po0000644000076500000000000001453100000000000022745 0ustar00hugowheel# Catalan translations for PACKAGE package # This file is distributed under the same license as the PACKAGE package. # Jordi Mas i Hernàndez , 2021 # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-05-04 23:15+0200\n" "PO-Revision-Date: 2021-04-09 19:57+0200\n" "Last-Translator: Jordi Mas i Hernàndez \n" "Language-Team: Catalan\n" "Language: ca\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.4.1\n" #: src/humanize/number.py:57 msgctxt "0 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "º" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "º" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "º" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "º" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "º" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "º" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "milió" msgstr[1] "milió" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "mil milions" msgstr[1] "mil milions" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilions" msgstr[1] "bilions" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "quadrilió" msgstr[1] "quadrilió" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintillió" msgstr[1] "quintillió" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextilió" msgstr[1] "sextilió" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "septilió" msgstr[1] "septilió" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "octilió" msgstr[1] "octilió" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonilió" msgstr[1] "nonilió" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "decilió" msgstr[1] "decilió" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:246 msgid "zero" msgstr "zero" #: src/humanize/number.py:247 msgid "one" msgstr "un" #: src/humanize/number.py:248 msgid "two" msgstr "dos" #: src/humanize/number.py:249 msgid "three" msgstr "tres" #: src/humanize/number.py:250 msgid "four" msgstr "quatre" #: src/humanize/number.py:251 msgid "five" msgstr "cinc" #: src/humanize/number.py:252 msgid "six" msgstr "sis" #: src/humanize/number.py:253 msgid "seven" msgstr "set" #: src/humanize/number.py:254 msgid "eight" msgstr "vuit" #: src/humanize/number.py:255 msgid "nine" msgstr "nou" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microsegon" msgstr[1] "%d microsegons" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d mil·lisegons" msgstr[1] "%d mil·lisegons" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "un moment" #: src/humanize/time.py:147 msgid "a second" msgstr "un segon" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segon" msgstr[1] "%d segons" #: src/humanize/time.py:151 msgid "a minute" msgstr "un minut" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minut" msgstr[1] "%d minuts" #: src/humanize/time.py:156 msgid "an hour" msgstr "una hora" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d hores" #: src/humanize/time.py:162 msgid "a day" msgstr "un dia" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dia" msgstr[1] "%d dies" #: src/humanize/time.py:169 msgid "a month" msgstr "un mes" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mes" msgstr[1] "%d mesos" #: src/humanize/time.py:174 msgid "a year" msgstr "un any" #: src/humanize/time.py:176 src/humanize/time.py:185 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 any, %d dia" msgstr[1] "1 any, %d dies" #: src/humanize/time.py:179 msgid "1 year, 1 month" msgstr "1 any, 1 mes" #: src/humanize/time.py:182 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 any, %d mes" msgstr[1] "1 any, %d mesos" #: src/humanize/time.py:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d any" msgstr[1] "%d anys" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "en %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "fa %s" #: src/humanize/time.py:221 msgid "now" msgstr "ara" #: src/humanize/time.py:244 msgid "today" msgstr "avui" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "demà" #: src/humanize/time.py:248 msgid "yesterday" msgstr "ahir" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s i %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1462076 humanize-4.0.0/src/humanize/locale/da_DK/0000755000076500000000000000000000000000000016764 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.205694 humanize-4.0.0/src/humanize/locale/da_DK/LC_MESSAGES/0000755000076500000000000000000000000000000020551 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/da_DK/LC_MESSAGES/humanize.mo0000644000076500000000000000667400000000000022743 0ustar00hugowheelD<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l {q    - K ` v        #       " % ( + . 1 4 7 : = @ C J S _ i r y             & @ X \ t y        5<>+=6D94%2#)" !, 3:A 1*-;'/&0(@8B. C7 $ ?%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: humanize Report-Msgid-Bugs-To: https://github.com/jmoiron/humanize/issues PO-Revision-Date: 2021-11-24 22:25+0200 Last-Translator: YURII DEREVYCH Language-Team: Da Language: da 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 3.0 %d dag%d dage%d time%d timer%d mikrosekund%d mikrosekunder%d millsekund%d millsekunder%d minut%d minutter%d måned%d måneder%d sekund%d sekunder%d år%d år%s siden%s og %s%s fra nu:e:e:e:e1 år, %d dag1 år, %d dage1 år, %d måned1 år, %d måneder1 år, 1 måned:t:t:e:e:e:e:e:e:e:e:e:e:e:e:e:een dagen minutet øjebliken måneden andenet åren timebillionbillionerdecilliondecillionerottefemfiregoogolgoogolmillionmillionerninonillionnonillionernuoctillionoctillionerenquadrillionquadrillionerquintillionquintillionerseptillionseptillionersyvsextillionsextillionersekstusindthousandtrei dagi morgenbillionbillionertoi gårnul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/da_DK/LC_MESSAGES/humanize.po0000644000076500000000000001472300000000000022740 0ustar00hugowheel# Danish translations for humanize package. # Copyright (C) 2021 # This file is distributed under the same license as the humanize project. # YURII DEREVYCH , 2021. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: https://github.com/jmoiron/humanize/issues\n" "POT-Creation-Date: 2021-07-05 09:49+0200\n" "PO-Revision-Date: 2021-11-24 22:25+0200\n" "Last-Translator: YURII DEREVYCH \n" "Language-Team: Da\n" "Language: da\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 3.0\n" #: src/humanize/number.py:58 msgctxt "0 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:59 msgctxt "1 (male)" msgid "st" msgstr ":e" #: src/humanize/number.py:60 msgctxt "2 (male)" msgid "nd" msgstr ":t" #: src/humanize/number.py:61 msgctxt "3 (male)" msgid "rd" msgstr ":e" #: src/humanize/number.py:62 msgctxt "4 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:63 msgctxt "5 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:64 msgctxt "6 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:65 msgctxt "7 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:66 msgctxt "8 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:67 msgctxt "9 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:71 msgctxt "0 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:72 msgctxt "1 (female)" msgid "st" msgstr ":e" #: src/humanize/number.py:73 msgctxt "2 (female)" msgid "nd" msgstr ":t" #: src/humanize/number.py:74 msgctxt "3 (female)" msgid "rd" msgstr ":e" #: src/humanize/number.py:75 msgctxt "4 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:76 msgctxt "5 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:77 msgctxt "6 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:78 msgctxt "7 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:79 msgctxt "8 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:80 msgctxt "9 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:141 msgid "thousand" msgid_plural "thousand" msgstr[0] "tusind" msgstr[1] "thousand" #: src/humanize/number.py:142 msgid "million" msgid_plural "million" msgstr[0] "million" msgstr[1] "millioner" #: src/humanize/number.py:143 msgid "billion" msgid_plural "billion" msgstr[0] "billion" msgstr[1] "billioner" #: src/humanize/number.py:144 msgid "trillion" msgid_plural "trillion" msgstr[0] "billion" msgstr[1] "billioner" #: src/humanize/number.py:145 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "quadrillion" msgstr[1] "quadrillioner" #: src/humanize/number.py:146 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintillion" msgstr[1] "quintillioner" #: src/humanize/number.py:147 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextillion" msgstr[1] "sextillioner" #: src/humanize/number.py:148 msgid "septillion" msgid_plural "septillion" msgstr[0] "septillion" msgstr[1] "septillioner" #: src/humanize/number.py:149 msgid "octillion" msgid_plural "octillion" msgstr[0] "octillion" msgstr[1] "octillioner" #: src/humanize/number.py:150 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonillion" msgstr[1] "nonillioner" #: src/humanize/number.py:151 msgid "decillion" msgid_plural "decillion" msgstr[0] "decillion" msgstr[1] "decillioner" #: src/humanize/number.py:152 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:247 msgid "zero" msgstr "nul" #: src/humanize/number.py:248 msgid "one" msgstr "en" #: src/humanize/number.py:249 msgid "two" msgstr "to" #: src/humanize/number.py:250 msgid "three" msgstr "tre" #: src/humanize/number.py:251 msgid "four" msgstr "fire" #: src/humanize/number.py:252 msgid "five" msgstr "fem" #: src/humanize/number.py:253 msgid "six" msgstr "seks" #: src/humanize/number.py:254 msgid "seven" msgstr "syv" #: src/humanize/number.py:255 msgid "eight" msgstr "otte" #: src/humanize/number.py:256 msgid "nine" msgstr "ni" #: src/humanize/time.py:138 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekund" msgstr[1] "%d mikrosekunder" #: src/humanize/time.py:147 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d millsekund" msgstr[1] "%d millsekunder" #: src/humanize/time.py:150 src/humanize/time.py:231 msgid "a moment" msgstr "et øjeblik" #: src/humanize/time.py:152 msgid "a second" msgstr "en anden" #: src/humanize/time.py:154 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekund" msgstr[1] "%d sekunder" #: src/humanize/time.py:156 msgid "a minute" msgstr "en minut" #: src/humanize/time.py:159 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minut" msgstr[1] "%d minutter" #: src/humanize/time.py:161 msgid "an hour" msgstr "en time" #: src/humanize/time.py:164 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d time" msgstr[1] "%d timer" #: src/humanize/time.py:167 msgid "a day" msgstr "en dag" #: src/humanize/time.py:169 src/humanize/time.py:172 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dag" msgstr[1] "%d dage" #: src/humanize/time.py:174 msgid "a month" msgstr "en måned" #: src/humanize/time.py:176 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d måned" msgstr[1] "%d måneder" #: src/humanize/time.py:179 msgid "a year" msgstr "et år" #: src/humanize/time.py:181 src/humanize/time.py:190 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 år, %d dag" msgstr[1] "1 år, %d dage" #: src/humanize/time.py:184 msgid "1 year, 1 month" msgstr "1 år, 1 måned" #: src/humanize/time.py:187 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 år, %d måned" msgstr[1] "1 år, %d måneder" #: src/humanize/time.py:192 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d år" msgstr[1] "%d år" #: src/humanize/time.py:228 #, python-format msgid "%s from now" msgstr "%s fra nu" #: src/humanize/time.py:228 #, python-format msgid "%s ago" msgstr "%s siden" #: src/humanize/time.py:232 msgid "now" msgstr "nu" #: src/humanize/time.py:255 msgid "today" msgstr "i dag" #: src/humanize/time.py:257 msgid "tomorrow" msgstr "i morgen" #: src/humanize/time.py:259 msgid "yesterday" msgstr "i går" #: src/humanize/time.py:545 #, python-format msgid "%s and %s" msgstr "%s og %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1464655 humanize-4.0.0/src/humanize/locale/de_DE/0000755000076500000000000000000000000000000016762 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2080734 humanize-4.0.0/src/humanize/locale/de_DE/LC_MESSAGES/0000755000076500000000000000000000000000000020547 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/de_DE/LC_MESSAGES/humanize.mo0000644000076500000000000000633300000000000022731 0ustar00hugowheelA$Y,    * 6 DP"o           $ 2 > L X frx -1Iaw} pB Q f {        ( , 1 ; = ? A C E G I K M O Q S U W Y [ c o z          ! ' A F Z l           :">%7234'A<9 .@& - ; 60,= )*?(/5#!81$ +%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 and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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 und %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 StundeMilliardeMilliardeQuintilliardeQuintilliardeachtfünfvierGoogolGoogolMillionMillionneunQuintillionQuintillionjetztQuadrillardeQuadrillardeeinsBilliardeBilliardeTrillionTrillionQuadrillionQuadrillionsiebenTrilliardeTrilliardesechsdreiheutemorgenBillionBillionzweigesternnull././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/de_DE/LC_MESSAGES/humanize.po0000644000076500000000000001476700000000000022746 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "Million" msgstr[1] "Million" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "Milliarde" msgstr[1] "Milliarde" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "Billion" msgstr[1] "Billion" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "Billiarde" msgstr[1] "Billiarde" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "Trillion" msgstr[1] "Trillion" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "Trilliarde" msgstr[1] "Trilliarde" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "Quadrillion" msgstr[1] "Quadrillion" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "Quadrillarde" msgstr[1] "Quadrillarde" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "Quintillion" msgstr[1] "Quintillion" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "Quintilliarde" msgstr[1] "Quintilliarde" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "Googol" msgstr[1] "Googol" #: src/humanize/number.py:246 msgid "zero" msgstr "null" #: src/humanize/number.py:247 msgid "one" msgstr "eins" #: src/humanize/number.py:248 msgid "two" msgstr "zwei" #: src/humanize/number.py:249 msgid "three" msgstr "drei" #: src/humanize/number.py:250 msgid "four" msgstr "vier" #: src/humanize/number.py:251 msgid "five" msgstr "fünf" #: src/humanize/number.py:252 msgid "six" msgstr "sechs" #: src/humanize/number.py:253 msgid "seven" msgstr "sieben" #: src/humanize/number.py:254 msgid "eight" msgstr "acht" #: src/humanize/number.py:255 msgid "nine" msgstr "neun" #: src/humanize/time.py:133 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d Mikrosekunde" msgstr[1] "%d Mikrosekunden" #: src/humanize/time.py:142 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d Millisekunde" msgstr[1] "%d Millisekunden" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "ein Moment" #: src/humanize/time.py:147 msgid "a second" msgstr "eine Sekunde" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d Sekunde" msgstr[1] "%d Sekunden" #: src/humanize/time.py:151 msgid "a minute" msgstr "eine Minute" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d Minute" msgstr[1] "%d Minuten" #: src/humanize/time.py:156 msgid "an hour" msgstr "eine Stunde" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d Stunde" msgstr[1] "%d Stunden" #: src/humanize/time.py:162 msgid "a day" msgstr "ein Tag" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d Tag" msgstr[1] "%d Tage" #: src/humanize/time.py:169 msgid "a month" msgstr "ein Monat" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d Monat" msgstr[1] "%d Monate" #: src/humanize/time.py:174 msgid "a year" msgstr "ein Jahr" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "ein Monat" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d Jahr" msgstr[1] "%d Jahre" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "%s ab jetzt" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "vor %s" #: src/humanize/time.py:221 msgid "now" msgstr "jetzt" #: src/humanize/time.py:244 msgid "today" msgstr "heute" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "morgen" #: src/humanize/time.py:248 msgid "yesterday" msgstr "gestern" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s und %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1467204 humanize-4.0.0/src/humanize/locale/es_ES/0000755000076500000000000000000000000000000017020 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2106586 humanize-4.0.0/src/humanize/locale/es_ES/LC_MESSAGES/0000755000076500000000000000000000000000000020605 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/es_ES/LC_MESSAGES/humanize.mo0000644000076500000000000000661200000000000022767 0ustar00hugowheelD<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l Mq    ! 6 F ] n v ~     " !                    & 1 8 C K T e z            . 4 K P X ] a i |   5<>+=6D94%2#)" !, 3:A 1*-;'/&0(@8B. C7 $ ?%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: Report-Msgid-Bugs-To: PO-Revision-Date: 2020-03-31 21:08+0200 Last-Translator: Álvaro Mondéjar Language-Team: Language: es_ES 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.3 %d día%d días%d hora%d horas%d microsegundo%d microsegundos%d milisegundo%d milisegundos%d minuto%d minutos%d mes%d meses%d segundo%d segundos%d año%d añoshace %s%s y %sen %sªºªº1 año y %d día1 año y %d días1 año y %d mes1 año y %d meses1 año y 1 mesªºªºªºªºªºªºªºªºun díaun minutoun momentoun mesun segundoun añouna horabillónbillonesdecillóndecillonesochocincocuatrogúgolgúgolmillónmillonesnuevenonillónnonillonesahoraoctillónoctillonesunoquatrillónquatrillonesquintillónquintillonesseptillónseptillonessietesextillónsextillonesseismilmiltreshoymañanatrillóntrillonesdosayercero././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/es_ES/LC_MESSAGES/humanize.po0000644000076500000000000001470200000000000022771 0ustar00hugowheel# Spanish (Spain) translations for PROJECT. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Álvaro Mondéjar , 2020. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-05-04 23:15+0200\n" "PO-Revision-Date: 2020-03-31 21:08+0200\n" "Last-Translator: Álvaro Mondéjar \n" "Language-Team: \n" "Language: es_ES\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.3\n" #: src/humanize/number.py:57 msgctxt "0 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "º" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "º" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "º" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "ª" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "ª" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "ª" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "mil" msgstr[1] "mil" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "millón" msgstr[1] "millones" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "billón" msgstr[1] "billones" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "trillón" msgstr[1] "trillones" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "quatrillón" msgstr[1] "quatrillones" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintillón" msgstr[1] "quintillones" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextillón" msgstr[1] "sextillones" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "septillón" msgstr[1] "septillones" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "octillón" msgstr[1] "octillones" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonillón" msgstr[1] "nonillones" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "decillón" msgstr[1] "decillones" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "gúgol" msgstr[1] "gúgol" #: src/humanize/number.py:246 msgid "zero" msgstr "cero" #: src/humanize/number.py:247 msgid "one" msgstr "uno" #: src/humanize/number.py:248 msgid "two" msgstr "dos" #: src/humanize/number.py:249 msgid "three" msgstr "tres" #: src/humanize/number.py:250 msgid "four" msgstr "cuatro" #: src/humanize/number.py:251 msgid "five" msgstr "cinco" #: src/humanize/number.py:252 msgid "six" msgstr "seis" #: src/humanize/number.py:253 msgid "seven" msgstr "siete" #: src/humanize/number.py:254 msgid "eight" msgstr "ocho" #: src/humanize/number.py:255 msgid "nine" msgstr "nueve" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microsegundo" msgstr[1] "%d microsegundos" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milisegundo" msgstr[1] "%d milisegundos" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "un momento" #: src/humanize/time.py:147 msgid "a second" msgstr "un segundo" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: src/humanize/time.py:151 msgid "a minute" msgstr "un minuto" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: src/humanize/time.py:156 msgid "an hour" msgstr "una hora" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: src/humanize/time.py:162 msgid "a day" msgstr "un día" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d día" msgstr[1] "%d días" #: src/humanize/time.py:169 msgid "a month" msgstr "un mes" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mes" msgstr[1] "%d meses" #: src/humanize/time.py:174 msgid "a year" msgstr "un año" #: src/humanize/time.py:176 src/humanize/time.py:185 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 año y %d día" msgstr[1] "1 año y %d días" #: src/humanize/time.py:179 msgid "1 year, 1 month" msgstr "1 año y 1 mes" #: src/humanize/time.py:182 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 año y %d mes" msgstr[1] "1 año y %d meses" #: src/humanize/time.py:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d año" msgstr[1] "%d años" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "en %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "hace %s" #: src/humanize/time.py:221 msgid "now" msgstr "ahora" #: src/humanize/time.py:244 msgid "today" msgstr "hoy" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "mañana" #: src/humanize/time.py:248 msgid "yesterday" msgstr "ayer" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s y %s" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.147545 humanize-4.0.0/src/humanize/locale/fa_IR/0000755000076500000000000000000000000000000017002 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2124634 humanize-4.0.0/src/humanize/locale/fa_IR/LC_MESSAGES/0000755000076500000000000000000000000000000020567 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/fa_IR/LC_MESSAGES/humanize.mo0000644000076500000000000000765200000000000022756 0ustar00hugowheelD<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l nq   5 1B t       $ -/ -]       ) 6 C P [ f r     /I!N p%{))!%#IN` epy 5<>+=6D94%2#)" !, 3:A 1*-;'/&0(@8B. C7 $ ?%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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 ماه%d ثانیه%d ثانیه%d سال%d سال%s پیش%s و %s%s تا به اکنونصفرمینصفرمیناولیناولین۱ سال و %d روز۱ سال و %d روز۱ سال و %d ماه۱ سال و %d ماه۱ سال و ۱ ماهدومیندومینسومینسومینچهارمینچهارمینپنجمینپنجمینششمینششمینهفتمینهفتمینهشتمینهشتمیننهمیننهمینیک روزیک دقیقهیک لحظهیک ماهیک ثانیهیک سالیک ساعتمیلیاردمیلیارددسیلیوندسیلیونهشتپنجچهارگوگولگوگولمیلیونمیلیوننهنونیلیوننونیلیوناکنوناوکتیلیوناوکتیلیونیککوادریلیونکوادریلیونکوانتیلیونکوانتیلیونسپتیلیونسپتیلیونهفتسکستیلیونسکستیلیونششهزارهزارسهامروزفرداترلیونترلیوندودیروزصفر././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/fa_IR/LC_MESSAGES/humanize.po0000644000076500000000000001572400000000000022760 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "صفرمین" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "اولین" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "دومین" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "سومین" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "چهارمین" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "پنجمین" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "ششمین" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "هفتمین" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "هشتمین" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "نهمین" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "صفرمین" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "اولین" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "دومین" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "سومین" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "چهارمین" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "پنجمین" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "ششمین" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "هفتمین" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "هشتمین" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "نهمین" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "هزار" msgstr[1] "هزار" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "میلیون" msgstr[1] "میلیون" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "میلیارد" msgstr[1] "میلیارد" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "ترلیون" msgstr[1] "ترلیون" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "کوادریلیون" msgstr[1] "کوادریلیون" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "کوانتیلیون" msgstr[1] "کوانتیلیون" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "سکستیلیون" msgstr[1] "سکستیلیون" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "سپتیلیون" msgstr[1] "سپتیلیون" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "اوکتیلیون" msgstr[1] "اوکتیلیون" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "نونیلیون" msgstr[1] "نونیلیون" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "دسیلیون" msgstr[1] "دسیلیون" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "گوگول" msgstr[1] "گوگول" #: src/humanize/number.py:246 msgid "zero" msgstr "صفر" #: src/humanize/number.py:247 msgid "one" msgstr "یک" #: src/humanize/number.py:248 msgid "two" msgstr "دو" #: src/humanize/number.py:249 msgid "three" msgstr "سه" #: src/humanize/number.py:250 msgid "four" msgstr "چهار" #: src/humanize/number.py:251 msgid "five" msgstr "پنج" #: src/humanize/number.py:252 msgid "six" msgstr "شش" #: src/humanize/number.py:253 msgid "seven" msgstr "هفت" #: src/humanize/number.py:254 msgid "eight" msgstr "هشت" #: src/humanize/number.py:255 msgid "nine" msgstr "نه" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d میکرو‌ثانیه" msgstr[1] "%d میکرو‌ثانیه" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d میلی‌ثانیه" msgstr[1] "%d میلی‌ثانیه" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "یک لحظه" #: src/humanize/time.py:147 msgid "a second" msgstr "یک ثانیه" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d ثانیه" msgstr[1] "%d ثانیه" #: src/humanize/time.py:151 msgid "a minute" msgstr "یک دقیقه" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d دقیقه" msgstr[1] "%d دقیقه" #: src/humanize/time.py:156 msgid "an hour" msgstr "یک ساعت" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ساعت" msgstr[1] "%d ساعت" #: src/humanize/time.py:162 msgid "a day" msgstr "یک روز" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d روز" msgstr[1] "%d روز" #: src/humanize/time.py:169 msgid "a month" msgstr "یک ماه" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d ماه" msgstr[1] "%d ماه" #: src/humanize/time.py:174 msgid "a year" msgstr "یک سال" #: src/humanize/time.py:176 src/humanize/time.py:185 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "۱ سال و %d روز" msgstr[1] "۱ سال و %d روز" #: src/humanize/time.py:179 msgid "1 year, 1 month" msgstr "۱ سال و ۱ ماه" #: src/humanize/time.py:182 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "۱ سال و %d ماه" msgstr[1] "۱ سال و %d ماه" #: src/humanize/time.py:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d سال" msgstr[1] "%d سال" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "%s تا به اکنون" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s پیش" #: src/humanize/time.py:221 msgid "now" msgstr "اکنون" #: src/humanize/time.py:244 msgid "today" msgstr "امروز" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "فردا" #: src/humanize/time.py:248 msgid "yesterday" msgstr "دیروز" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s و %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1480708 humanize-4.0.0/src/humanize/locale/fi_FI/0000755000076500000000000000000000000000000016776 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.214084 humanize-4.0.0/src/humanize/locale/fi_FI/LC_MESSAGES/0000755000076500000000000000000000000000000020563 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/fi_FI/LC_MESSAGES/humanize.mo0000644000076500000000000000645100000000000022746 0ustar00hugowheelB,Y<   , : F T`"          ( 4 B N \ h v  %)=AYq UI a t         ) * K _ a c e g i k m o q s u w y { }              " : > V [ w          # :"?%7234'B=9 .A& - < 60,> )*@(/5#!8;1$ +%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 and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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 ja %s%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äminuuttihetkikuukausisekuntivuosituntimiljardiamiljardiadekiljoonaadekiljoonaakahdeksanviisineljägoogolgoogolmiljoonaamiljoonaayhdeksännoniljoonaanoniljoonaanytoktiljoonaaoktiljoonaayksikvadriljoonaakvadriljoonaakvintiljoonaakvintiljoonaaseptiljoonaaseptiljoonaaseitsemänsekstiljoonaasekstiljoonaakuusituhattatuhattakolmetänäänhuomennabiljoonaabiljoonaakaksieilennolla././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/fi_FI/LC_MESSAGES/humanize.po0000644000076500000000000001505100000000000022745 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "tuhatta" msgstr[1] "tuhatta" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "miljoonaa" msgstr[1] "miljoonaa" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "miljardia" msgstr[1] "miljardia" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "biljoonaa" msgstr[1] "biljoonaa" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "kvadriljoonaa" msgstr[1] "kvadriljoonaa" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "kvintiljoonaa" msgstr[1] "kvintiljoonaa" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sekstiljoonaa" msgstr[1] "sekstiljoonaa" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "septiljoonaa" msgstr[1] "septiljoonaa" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "oktiljoonaa" msgstr[1] "oktiljoonaa" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "noniljoonaa" msgstr[1] "noniljoonaa" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "dekiljoonaa" msgstr[1] "dekiljoonaa" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:246 msgid "zero" msgstr "nolla" #: src/humanize/number.py:247 msgid "one" msgstr "yksi" #: src/humanize/number.py:248 msgid "two" msgstr "kaksi" #: src/humanize/number.py:249 msgid "three" msgstr "kolme" #: src/humanize/number.py:250 msgid "four" msgstr "neljä" #: src/humanize/number.py:251 msgid "five" msgstr "viisi" #: src/humanize/number.py:252 msgid "six" msgstr "kuusi" #: src/humanize/number.py:253 msgid "seven" msgstr "seitsemän" #: src/humanize/number.py:254 msgid "eight" msgstr "kahdeksan" #: src/humanize/number.py:255 msgid "nine" msgstr "yhdeksän" #: src/humanize/time.py:133 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekunti" msgstr[1] "%d mikrosekuntia" #: src/humanize/time.py:142 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d millisekunti" msgstr[1] "%d millisekuntia" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "hetki" #: src/humanize/time.py:147 msgid "a second" msgstr "sekunti" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekunti" msgstr[1] "%d sekuntia" #: src/humanize/time.py:151 msgid "a minute" msgstr "minuutti" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuutti" msgstr[1] "%d minuuttia" #: src/humanize/time.py:156 msgid "an hour" msgstr "tunti" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d tunti" msgstr[1] "%d tuntia" #: src/humanize/time.py:162 msgid "a day" msgstr "päivä" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d päivä" msgstr[1] "%d päivää" #: src/humanize/time.py:169 msgid "a month" msgstr "kuukausi" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d kuukausi" msgstr[1] "%d kuukautta" #: src/humanize/time.py:174 msgid "a year" msgstr "vuosi" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "1 vuosi, 1 kuukausi" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d vuosi" msgstr[1] "%d vuotta" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "%s tästä" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s sitten" #: src/humanize/time.py:221 msgid "now" msgstr "nyt" #: src/humanize/time.py:244 msgid "today" msgstr "tänään" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "huomenna" #: src/humanize/time.py:248 msgid "yesterday" msgstr "eilen" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s ja %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1483924 humanize-4.0.0/src/humanize/locale/fr_FR/0000755000076500000000000000000000000000000017020 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2157779 humanize-4.0.0/src/humanize/locale/fr_FR/LC_MESSAGES/0000755000076500000000000000000000000000000020605 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/fr_FR/LC_MESSAGES/humanize.mo0000644000076500000000000000512500000000000022765 0ustar00hugowheel7I & 0 < J V dp"         * 8 D R ^ l x   $x)    " * , . 3 "6 !Y {                           # ( , 2 > E J O .4/# 6, 57! * &(+$ )" 30'-1%2%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 and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbillioneightfivefourninenowonesevensixthreetodaytomorrowtwoyesterdayzeroProject-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 %s%s et %sdans %seeèreerun an et %d jourun an et %d joursun an et %d moisun an et %d moisun an et un moiseeeeeeeeeeeeeeeeun jourune minuteun momentun moisune secondeun anune heuremilliardmilliardhuitcinqquatreneufmaintenantunseptsixtroisaujourd'huidemaindeuxhierzéro././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/fr_FR/LC_MESSAGES/humanize.po0000644000076500000000000001537100000000000022774 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "er" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "e" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "e" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "ère" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "e" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "e" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:141 #, fuzzy msgid "million" msgid_plural "million" msgstr[0] "%(value)s million" msgstr[1] "%(value)s million" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "milliard" msgstr[1] "milliard" #: src/humanize/number.py:143 #, fuzzy msgid "trillion" msgid_plural "trillion" msgstr[0] "%(value)s billion" msgstr[1] "%(value)s billion" #: src/humanize/number.py:144 #, fuzzy msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "%(value)s billiard" msgstr[1] "%(value)s billiard" #: src/humanize/number.py:145 #, fuzzy msgid "quintillion" msgid_plural "quintillion" msgstr[0] "%(value)s trillion" msgstr[1] "%(value)s trillion" #: src/humanize/number.py:146 #, fuzzy msgid "sextillion" msgid_plural "sextillion" msgstr[0] "%(value)s trilliard" msgstr[1] "%(value)s trilliard" #: src/humanize/number.py:147 #, fuzzy msgid "septillion" msgid_plural "septillion" msgstr[0] "%(value)s quatrillion" msgstr[1] "%(value)s quatrillion" #: src/humanize/number.py:148 #, fuzzy msgid "octillion" msgid_plural "octillion" msgstr[0] "%(value)s quadrilliard" msgstr[1] "%(value)s quadrilliard" #: src/humanize/number.py:149 #, fuzzy msgid "nonillion" msgid_plural "nonillion" msgstr[0] "%(value)s quintillion" msgstr[1] "%(value)s quintillion" #: src/humanize/number.py:150 #, fuzzy msgid "decillion" msgid_plural "decillion" msgstr[0] "%(value)s quintilliard" msgstr[1] "%(value)s quintilliard" #: src/humanize/number.py:151 #, fuzzy msgid "googol" msgid_plural "googol" msgstr[0] "%(value)s gogol" msgstr[1] "%(value)s gogol" #: src/humanize/number.py:246 msgid "zero" msgstr "zéro" #: src/humanize/number.py:247 msgid "one" msgstr "un" #: src/humanize/number.py:248 msgid "two" msgstr "deux" #: src/humanize/number.py:249 msgid "three" msgstr "trois" #: src/humanize/number.py:250 msgid "four" msgstr "quatre" #: src/humanize/number.py:251 msgid "five" msgstr "cinq" #: src/humanize/number.py:252 msgid "six" msgstr "six" #: src/humanize/number.py:253 msgid "seven" msgstr "sept" #: src/humanize/number.py:254 msgid "eight" msgstr "huit" #: src/humanize/number.py:255 msgid "nine" msgstr "neuf" #: src/humanize/time.py:133 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microseconde" msgstr[1] "%d microsecondes" #: src/humanize/time.py:142 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milliseconde" msgstr[1] "%d millisecondes" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "un moment" #: src/humanize/time.py:147 msgid "a second" msgstr "une seconde" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d seconde" msgstr[1] "%d secondes" #: src/humanize/time.py:151 msgid "a minute" msgstr "une minute" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minute" msgstr[1] "%d minutes" #: src/humanize/time.py:156 msgid "an hour" msgstr "une heure" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d heure" msgstr[1] "%d heures" #: src/humanize/time.py:162 msgid "a day" msgstr "un jour" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d jour" msgstr[1] "%d jours" #: src/humanize/time.py:169 msgid "a month" msgstr "un mois" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mois" msgstr[1] "%d mois" #: src/humanize/time.py:174 msgid "a year" msgstr "un an" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "un an et un mois" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d an" msgstr[1] "%d ans" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "dans %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "il y a %s" #: src/humanize/time.py:221 msgid "now" msgstr "maintenant" #: src/humanize/time.py:244 msgid "today" msgstr "aujourd'hui" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "demain" #: src/humanize/time.py:248 msgid "yesterday" msgstr "hier" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s et %s" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.148667 humanize-4.0.0/src/humanize/locale/id_ID/0000755000076500000000000000000000000000000016772 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2174075 humanize-4.0.0/src/humanize/locale/id_ID/LC_MESSAGES/0000755000076500000000000000000000000000000020557 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/id_ID/LC_MESSAGES/humanize.mo0000644000076500000000000000567500000000000022751 0ustar00hugowheelA$Y,    * 6 DP"o           $ 2 > L X frx -1Iaw} :   $ - 6 ? L V g i k m o                              " ) . 7 A J T Y d p {         :">%7234'A<9 .@& - ; 60,= )*?(/5#!81$ +%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 and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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 dan %s%s dari sekarang....1 tahun, %d hari1 tahun, %d bulan1 tahun, 1 bulan................seharisemenitbeberapa saatsebulansedetiksetahunsejammiliardecilliondelapanlimaempatgoogoljutasembilannonillionsekarangoctillionsatukuadriliunquintillionseptilliontujuhsextillionenamtigahari inibesoktriliunduakemarinnol././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/id_ID/LC_MESSAGES/humanize.po0000644000076500000000000001365100000000000022745 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "juta" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "miliar" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "triliun" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "kuadriliun" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintillion" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextillion" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "septillion" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "octillion" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonillion" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "decillion" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "googol" #: src/humanize/number.py:246 msgid "zero" msgstr "nol" #: src/humanize/number.py:247 msgid "one" msgstr "satu" #: src/humanize/number.py:248 msgid "two" msgstr "dua" #: src/humanize/number.py:249 msgid "three" msgstr "tiga" #: src/humanize/number.py:250 msgid "four" msgstr "empat" #: src/humanize/number.py:251 msgid "five" msgstr "lima" #: src/humanize/number.py:252 msgid "six" msgstr "enam" #: src/humanize/number.py:253 msgid "seven" msgstr "tujuh" #: src/humanize/number.py:254 msgid "eight" msgstr "delapan" #: src/humanize/number.py:255 msgid "nine" msgstr "sembilan" #: src/humanize/time.py:133 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikro detik" #: src/humanize/time.py:142 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d mili detik" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "beberapa saat" #: src/humanize/time.py:147 msgid "a second" msgstr "sedetik" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d detik" #: src/humanize/time.py:151 msgid "a minute" msgstr "semenit" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d menit" #: src/humanize/time.py:156 msgid "an hour" msgstr "sejam" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d jam" #: src/humanize/time.py:162 msgid "a day" msgstr "sehari" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d hari" #: src/humanize/time.py:169 msgid "a month" msgstr "sebulan" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d bulan" #: src/humanize/time.py:174 msgid "a year" msgstr "setahun" #: src/humanize/time.py:176 src/humanize/time.py:185 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 tahun, %d hari" #: src/humanize/time.py:179 msgid "1 year, 1 month" msgstr "1 tahun, 1 bulan" #: src/humanize/time.py:182 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 tahun, %d bulan" #: src/humanize/time.py:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d tahun" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "%s dari sekarang" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s yang lalu" #: src/humanize/time.py:221 msgid "now" msgstr "sekarang" #: src/humanize/time.py:244 msgid "today" msgstr "hari ini" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "besok" #: src/humanize/time.py:248 msgid "yesterday" msgstr "kemarin" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s dan %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1492038 humanize-4.0.0/src/humanize/locale/it_IT/0000755000076500000000000000000000000000000017032 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2191143 humanize-4.0.0/src/humanize/locale/it_IT/LC_MESSAGES/0000755000076500000000000000000000000000000020617 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/it_IT/LC_MESSAGES/humanize.mo0000644000076500000000000000616400000000000023003 0ustar00hugowheel@Y     *6"Ux             $ 2 > LX^gpx /G]cy} ?  - = S c i p s v y '| #                    * 2 = E L ^ x }           ( . B F J O V f j o 9!=$6123/@;8 -?% , : 5+<&()>'.4" 70#*%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 now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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'oramiliardimiliardiquintiliardiquintiliardiottocinquequattrogoogolgoogolmilionimilioninovequintilioniquintilioniadessoquadriliardiquadriliardiunobiliardibiliarditrilionitrilioniquadrilioniquadrilionisettetriliarditriliardiseitreoggidomanibilionibilionidueierizero././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/it_IT/LC_MESSAGES/humanize.po0000644000076500000000000001464500000000000023011 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "º" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "º" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "º" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "ª" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "ª" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "ª" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "milioni" msgstr[1] "milioni" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "miliardi" msgstr[1] "miliardi" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilioni" msgstr[1] "bilioni" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "biliardi" msgstr[1] "biliardi" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trilioni" msgstr[1] "trilioni" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "triliardi" msgstr[1] "triliardi" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "quadrilioni" msgstr[1] "quadrilioni" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "quadriliardi" msgstr[1] "quadriliardi" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "quintilioni" msgstr[1] "quintilioni" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "quintiliardi" msgstr[1] "quintiliardi" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:246 msgid "zero" msgstr "zero" #: src/humanize/number.py:247 msgid "one" msgstr "uno" #: src/humanize/number.py:248 msgid "two" msgstr "due" #: src/humanize/number.py:249 msgid "three" msgstr "tre" #: src/humanize/number.py:250 msgid "four" msgstr "quattro" #: src/humanize/number.py:251 msgid "five" msgstr "cinque" #: src/humanize/number.py:252 msgid "six" msgstr "sei" #: src/humanize/number.py:253 msgid "seven" msgstr "sette" #: src/humanize/number.py:254 msgid "eight" msgstr "otto" #: src/humanize/number.py:255 msgid "nine" msgstr "nove" #: src/humanize/time.py:133 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microsecondo" msgstr[1] "%d microsecondi" #: src/humanize/time.py:142 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d millisecondo" msgstr[1] "%d millisecondi" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "un momento" #: src/humanize/time.py:147 msgid "a second" msgstr "un secondo" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d secondo" msgstr[1] "%d secondi" #: src/humanize/time.py:151 msgid "a minute" msgstr "un minuto" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minuti" #: src/humanize/time.py:156 msgid "an hour" msgstr "un'ora" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ora" msgstr[1] "%d ore" #: src/humanize/time.py:162 msgid "a day" msgstr "un giorno" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d giorno" msgstr[1] "%d giorni" #: src/humanize/time.py:169 msgid "a month" msgstr "un mese" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mese" msgstr[1] "%d mesi" #: src/humanize/time.py:174 msgid "a year" msgstr "un anno" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "un anno ed un mese" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d anno" msgstr[1] "%d anni" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "fra %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s fa" #: src/humanize/time.py:221 msgid "now" msgstr "adesso" #: src/humanize/time.py:244 msgid "today" msgstr "oggi" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "domani" #: src/humanize/time.py:248 msgid "yesterday" msgstr "ieri" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1494985 humanize-4.0.0/src/humanize/locale/ja_JP/0000755000076500000000000000000000000000000017005 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.220964 humanize-4.0.0/src/humanize/locale/ja_JP/LC_MESSAGES/0000755000076500000000000000000000000000000020572 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/ja_JP/LC_MESSAGES/humanize.mo0000644000076500000000000000463100000000000022753 0ustar00hugowheel4G\xy     "."Mp              * 6 DPV_gpw aIOX^gmsy        # * 1 6 ; C H M U Y ] a h l p t x |     " 2'$4! & %-,*0 )# (+.1 /3%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 now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea montha seconda yearan houreightfivefourmillionmillionnineonesevensixthreetodaytomorrowtrilliontrilliontwoyesterdayProject-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時間八五四百万九一七六三本日明日兆二昨日././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/ja_JP/LC_MESSAGES/humanize.po0000644000076500000000000001373300000000000022761 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "番目" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "番目" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "番目" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "番目" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "番目" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "番目" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "百万" #: src/humanize/number.py:142 #, fuzzy msgid "billion" msgid_plural "billion" msgstr[0] "十億" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "兆" #: src/humanize/number.py:144 #, fuzzy msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "千兆" #: src/humanize/number.py:145 #, fuzzy msgid "quintillion" msgid_plural "quintillion" msgstr[0] "百京" #: src/humanize/number.py:146 #, fuzzy msgid "sextillion" msgid_plural "sextillion" msgstr[0] "十垓" #: src/humanize/number.py:147 #, fuzzy msgid "septillion" msgid_plural "septillion" msgstr[0] "じょ" #: src/humanize/number.py:148 #, fuzzy msgid "octillion" msgid_plural "octillion" msgstr[0] "千じょ" #: src/humanize/number.py:149 #, fuzzy msgid "nonillion" msgid_plural "nonillion" msgstr[0] "百穣" #: src/humanize/number.py:150 #, fuzzy msgid "decillion" msgid_plural "decillion" msgstr[0] "十溝" #: src/humanize/number.py:151 #, fuzzy msgid "googol" msgid_plural "googol" msgstr[0] "溝無量大数" #: src/humanize/number.py:246 msgid "zero" msgstr "" #: src/humanize/number.py:247 msgid "one" msgstr "一" #: src/humanize/number.py:248 msgid "two" msgstr "二" #: src/humanize/number.py:249 msgid "three" msgstr "三" #: src/humanize/number.py:250 msgid "four" msgstr "四" #: src/humanize/number.py:251 msgid "five" msgstr "五" #: src/humanize/number.py:252 msgid "six" msgstr "六" #: src/humanize/number.py:253 msgid "seven" msgstr "七" #: src/humanize/number.py:254 msgid "eight" msgstr "八" #: src/humanize/number.py:255 msgid "nine" msgstr "九" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "" #: src/humanize/time.py:145 src/humanize/time.py:220 #, fuzzy msgid "a moment" msgstr "短時間" #: src/humanize/time.py:147 msgid "a second" msgstr "1秒" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d秒" #: src/humanize/time.py:151 msgid "a minute" msgstr "1分" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d分" #: src/humanize/time.py:156 msgid "an hour" msgstr "1時間" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d時間" #: src/humanize/time.py:162 msgid "a day" msgstr "1日" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d日" #: src/humanize/time.py:169 msgid "a month" msgstr "1ヶ月" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%dヶ月" #: src/humanize/time.py:174 msgid "a year" msgstr "1年" #: src/humanize/time.py:176 src/humanize/time.py:185 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1年 %d日" #: src/humanize/time.py:179 msgid "1 year, 1 month" msgstr "1年 1ヶ月" #: src/humanize/time.py:182 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1年 %dヶ月" #: src/humanize/time.py:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d年" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "%s後" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s前" #: src/humanize/time.py:221 #, fuzzy msgid "now" msgstr "今" #: src/humanize/time.py:244 msgid "today" msgstr "本日" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "明日" #: src/humanize/time.py:248 msgid "yesterday" msgstr "昨日" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1497626 humanize-4.0.0/src/humanize/locale/ko_KR/0000755000076500000000000000000000000000000017027 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2223508 humanize-4.0.0/src/humanize/locale/ko_KR/LC_MESSAGES/0000755000076500000000000000000000000000000020614 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/ko_KR/LC_MESSAGES/humanize.mo0000644000076500000000000000374000000000000022775 0ustar00hugowheel$<5\01@Qp "2BHQZbkrz d IU#g    +27>FKPXjqx#|$ #   " ! %d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%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 hourbillionbillioneightfivefourmillionmillionninenowonesevensixthreetodaytomorrowtwoyesterdayProject-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일%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년, 1개월하루1분잠깐1개월1초1년1시간milliardmilliard여덟다섯넷%(value)s million%(value)s million아홉방금하나일곱여섯셋오늘내일둘어제././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/ko_KR/LC_MESSAGES/humanize.po0000644000076500000000000001555300000000000023005 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 #, fuzzy msgctxt "0 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:58 #, fuzzy msgctxt "1 (male)" msgid "st" msgstr "번째" #: src/humanize/number.py:59 #, fuzzy msgctxt "2 (male)" msgid "nd" msgstr "번째" #: src/humanize/number.py:60 #, fuzzy msgctxt "3 (male)" msgid "rd" msgstr "번째" #: src/humanize/number.py:61 #, fuzzy msgctxt "4 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:62 #, fuzzy msgctxt "5 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:63 #, fuzzy msgctxt "6 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:64 #, fuzzy msgctxt "7 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:65 #, fuzzy msgctxt "8 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:66 #, fuzzy msgctxt "9 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:70 #, fuzzy msgctxt "0 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:71 #, fuzzy msgctxt "1 (female)" msgid "st" msgstr "번째" #: src/humanize/number.py:72 #, fuzzy msgctxt "2 (female)" msgid "nd" msgstr "번째" #: src/humanize/number.py:73 #, fuzzy msgctxt "3 (female)" msgid "rd" msgstr "번째" #: src/humanize/number.py:74 #, fuzzy msgctxt "4 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:75 #, fuzzy msgctxt "5 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:76 #, fuzzy msgctxt "6 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:77 #, fuzzy msgctxt "7 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:78 #, fuzzy msgctxt "8 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:79 #, fuzzy msgctxt "9 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "%(value)s million" msgstr[1] "%(value)s million" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "milliard" msgstr[1] "milliard" #: src/humanize/number.py:143 #, fuzzy msgid "trillion" msgid_plural "trillion" msgstr[0] "%(value)s billion" msgstr[1] "%(value)s billion" #: src/humanize/number.py:144 #, fuzzy msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "%(value)s quadrillion" msgstr[1] "%(value)s quadrillion" #: src/humanize/number.py:145 #, fuzzy msgid "quintillion" msgid_plural "quintillion" msgstr[0] "%(value)s quintillion" msgstr[1] "%(value)s quintillion" #: src/humanize/number.py:146 #, fuzzy msgid "sextillion" msgid_plural "sextillion" msgstr[0] "%(value)s sextillion" msgstr[1] "%(value)s sextillion" #: src/humanize/number.py:147 #, fuzzy msgid "septillion" msgid_plural "septillion" msgstr[0] "%(value)s septillion" msgstr[1] "%(value)s septillion" #: src/humanize/number.py:148 #, fuzzy msgid "octillion" msgid_plural "octillion" msgstr[0] "%(value)s octillion" msgstr[1] "%(value)s octillion" #: src/humanize/number.py:149 #, fuzzy msgid "nonillion" msgid_plural "nonillion" msgstr[0] "%(value)s nonillion" msgstr[1] "%(value)s nonillion" #: src/humanize/number.py:150 #, fuzzy msgid "decillion" msgid_plural "decillion" msgstr[0] "%(value)s décillion" msgstr[1] "%(value)s décillion" #: src/humanize/number.py:151 #, fuzzy msgid "googol" msgid_plural "googol" msgstr[0] "%(value)s gogol" msgstr[1] "%(value)s gogol" #: src/humanize/number.py:246 msgid "zero" msgstr "" #: src/humanize/number.py:247 msgid "one" msgstr "하나" #: src/humanize/number.py:248 msgid "two" msgstr "둘" #: src/humanize/number.py:249 msgid "three" msgstr "셋" #: src/humanize/number.py:250 msgid "four" msgstr "넷" #: src/humanize/number.py:251 msgid "five" msgstr "다섯" #: src/humanize/number.py:252 msgid "six" msgstr "여섯" #: src/humanize/number.py:253 msgid "seven" msgstr "일곱" #: src/humanize/number.py:254 msgid "eight" msgstr "여덟" #: src/humanize/number.py:255 msgid "nine" msgstr "아홉" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d마이크로초" msgstr[1] "%d마이크로초" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d밀리초" msgstr[1] "%d밀리초" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "잠깐" #: src/humanize/time.py:147 msgid "a second" msgstr "1초" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d초" msgstr[1] "%d초" #: src/humanize/time.py:151 msgid "a minute" msgstr "1분" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d분" msgstr[1] "%d분" #: src/humanize/time.py:156 msgid "an hour" msgstr "1시간" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d시간" msgstr[1] "%d시간" #: src/humanize/time.py:162 msgid "a day" msgstr "하루" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d일" msgstr[1] "%d일" #: src/humanize/time.py:169 msgid "a month" msgstr "1개월" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d개월" msgstr[1] "%d개월" #: src/humanize/time.py:174 msgid "a year" msgstr "1년" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "1년, 1개월" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d년" msgstr[1] "%d년" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "%s 후" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s 전" #: src/humanize/time.py:221 msgid "now" msgstr "방금" #: src/humanize/time.py:244 msgid "today" msgstr "오늘" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "내일" #: src/humanize/time.py:248 msgid "yesterday" msgstr "어제" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.150034 humanize-4.0.0/src/humanize/locale/nl_NL/0000755000076500000000000000000000000000000017024 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2251012 humanize-4.0.0/src/humanize/locale/nl_NL/LC_MESSAGES/0000755000076500000000000000000000000000000020611 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/nl_NL/LC_MESSAGES/humanize.mo0000644000076500000000000000627200000000000022775 0ustar00hugowheelA$Y,    * 6 DP"o           $ 2 > L X frx -1Iaw} g9 I W l          #  % ( + . 1 4 7 : = @ C F I L O R U ] h s }             ( . > P h n         :">%7234'A<9 .@& - ; 60,= )*?(/5#!81$ +%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 and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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 uur%d minuut%d minuten%d maand%d maanden%d seconde%d seconden%d jaar%d jaar%s geleden%s en %sover %sdedesteste1 jaar, %d dag1 jaar, %d dagen1 jaar, %d maand1 jaar, %d maanden1 jaar, 1 maanddedededededededededededededededeeen dageen minuuteen momenteen maandeen secondeeen jaareen uurmiljardmiljardquintiljardquintiljardachtvijfviergoogolgoogolmiljoenmiljoennegenquintiljoenquintiljoennuquadriljardquadriljardéénbiljardbiljardtriljoentriljoenquadriljoenquadriljoenzeventriljardtriljardzesdrievandaagmorgenbiljoenbiljoentweegisterennul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/nl_NL/LC_MESSAGES/humanize.po0000644000076500000000000001471400000000000023000 0ustar00hugowheel# Dutch (Netherlands) translations for PROJECT. # Copyright (C) 2020 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "ste" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "de" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "de" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "ste" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "de" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "de" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "miljoen" msgstr[1] "miljoen" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "miljard" msgstr[1] "miljard" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "biljoen" msgstr[1] "biljoen" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "biljard" msgstr[1] "biljard" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "triljoen" msgstr[1] "triljoen" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "triljard" msgstr[1] "triljard" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "quadriljoen" msgstr[1] "quadriljoen" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "quadriljard" msgstr[1] "quadriljard" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "quintiljoen" msgstr[1] "quintiljoen" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "quintiljard" msgstr[1] "quintiljard" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:246 msgid "zero" msgstr "nul" #: src/humanize/number.py:247 msgid "one" msgstr "één" #: src/humanize/number.py:248 msgid "two" msgstr "twee" #: src/humanize/number.py:249 msgid "three" msgstr "drie" #: src/humanize/number.py:250 msgid "four" msgstr "vier" #: src/humanize/number.py:251 msgid "five" msgstr "vijf" #: src/humanize/number.py:252 msgid "six" msgstr "zes" #: src/humanize/number.py:253 msgid "seven" msgstr "zeven" #: src/humanize/number.py:254 msgid "eight" msgstr "acht" #: src/humanize/number.py:255 msgid "nine" msgstr "negen" #: src/humanize/time.py:133 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microseconde" msgstr[1] "%d microseconden" #: src/humanize/time.py:142 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milliseconde" msgstr[1] "%d milliseconden" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "een moment" #: src/humanize/time.py:147 msgid "a second" msgstr "een seconde" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d seconde" msgstr[1] "%d seconden" #: src/humanize/time.py:151 msgid "a minute" msgstr "een minuut" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuut" msgstr[1] "%d minuten" #: src/humanize/time.py:156 msgid "an hour" msgstr "een uur" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d uur" msgstr[1] "%d uur" #: src/humanize/time.py:162 msgid "a day" msgstr "een dag" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dag" msgstr[1] "%d dagen" #: src/humanize/time.py:169 msgid "a month" msgstr "een maand" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d maand" msgstr[1] "%d maanden" #: src/humanize/time.py:174 msgid "a year" msgstr "een jaar" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "1 jaar, 1 maand" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d jaar" msgstr[1] "%d jaar" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "over %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s geleden" #: src/humanize/time.py:221 msgid "now" msgstr "nu" #: src/humanize/time.py:244 msgid "today" msgstr "vandaag" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "morgen" #: src/humanize/time.py:248 msgid "yesterday" msgstr "gisteren" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s en %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1502864 humanize-4.0.0/src/humanize/locale/pl_PL/0000755000076500000000000000000000000000000017030 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.227391 humanize-4.0.0/src/humanize/locale/pl_PL/LC_MESSAGES/0000755000076500000000000000000000000000000020615 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/pl_PL/LC_MESSAGES/humanize.mo0000644000076500000000000000704500000000000023000 0ustar00hugowheelC4YL$7L] d n z   "    ( 4 B N \ h v      ,27 <JZ_sw   * t/   . + 7 %T z        , : < N P R T V X Z \ ^ ` b d f h j l n u |              4 : U [ |         <$?@'9456)C >;0 B(! /= 82 .# +,A*17%:3&"-%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: 0.0.1 Report-Msgid-Bugs-To: PO-Revision-Date: 2020-04-22 10:02+0200 Last-Translator: Bartosz Bubak Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); %d dzień%d dni%d dni%d godzina%d godziny%d godzin%d mikrosekunda%d mikrosekundy%d mikrosekund%d milisekunda%d milisekundy%d milisekund%d minuta%d minuty%d minut%d miesiąc%d miesiące%d miesięcy%d sekunda%d sekundy%d sekund%d rok%d lat%d lata%s temu%s i %s%s od teraz....1 rok, %d dzień1 rok, %d dni1 rok, %d dni1 rok, %d miesiąc1 rok, %d miesiące1 rok, %d miesięcy1 rok, 1 miesiąc................dzieńminutachwilamiesiącsekundarokgodzinabilionbilionbiliondecyliondecyliondecylionosiempięćczterygoogolgoogolgoogolmilionmilionmiliondziewięćnonilionnonilionnonilionterazoktylionoktylionoktylionjedenkwadrylionkwadrylionkwadrylionkwintylionkwintylionkwintylionseptylionseptylionseptylionsiedemsekstylionsekstylionsekstylionsześćtrzydziśjutrotryliontryliontryliondwawczorajzero././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/pl_PL/LC_MESSAGES/humanize.po0000644000076500000000000001575400000000000023011 0ustar00hugowheel# Polish translations for PACKAGE package. # Copyright (C) 2020 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Bartosz Bubak , 2020. # Added missing strings by Krystian Postek , 2020. # msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-05-04 23:15+0200\n" "PO-Revision-Date: 2020-04-22 10:02+0200\n" "Last-Translator: Bartosz Bubak \n" "Language-Team: Polish\n" "Language: pl\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%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: src/humanize/number.py:57 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "milion" msgstr[1] "milion" msgstr[2] "milion" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "bilion" msgstr[1] "bilion" msgstr[2] "bilion" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "trylion" msgstr[1] "trylion" msgstr[2] "trylion" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "kwadrylion" msgstr[1] "kwadrylion" msgstr[2] "kwadrylion" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "kwintylion" msgstr[1] "kwintylion" msgstr[2] "kwintylion" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sekstylion" msgstr[1] "sekstylion" msgstr[2] "sekstylion" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "septylion" msgstr[1] "septylion" msgstr[2] "septylion" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "oktylion" msgstr[1] "oktylion" msgstr[2] "oktylion" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonilion" msgstr[1] "nonilion" msgstr[2] "nonilion" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "decylion" msgstr[1] "decylion" msgstr[2] "decylion" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" msgstr[2] "googol" #: src/humanize/number.py:246 msgid "zero" msgstr "zero" #: src/humanize/number.py:247 msgid "one" msgstr "jeden" #: src/humanize/number.py:248 msgid "two" msgstr "dwa" #: src/humanize/number.py:249 msgid "three" msgstr "trzy" #: src/humanize/number.py:250 msgid "four" msgstr "cztery" #: src/humanize/number.py:251 msgid "five" msgstr "pięć" #: src/humanize/number.py:252 msgid "six" msgstr "sześć" #: src/humanize/number.py:253 msgid "seven" msgstr "siedem" #: src/humanize/number.py:254 msgid "eight" msgstr "osiem" #: src/humanize/number.py:255 msgid "nine" msgstr "dziewięć" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekunda" msgstr[1] "%d mikrosekundy" msgstr[2] "%d mikrosekund" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milisekunda" msgstr[1] "%d milisekundy" msgstr[2] "%d milisekund" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "chwila" #: src/humanize/time.py:147 msgid "a second" msgstr "sekunda" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekunda" msgstr[1] "%d sekundy" msgstr[2] "%d sekund" #: src/humanize/time.py:151 msgid "a minute" msgstr "minuta" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuta" msgstr[1] "%d minuty" msgstr[2] "%d minut" #: src/humanize/time.py:156 msgid "an hour" msgstr "godzina" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d godzina" msgstr[1] "%d godziny" msgstr[2] "%d godzin" #: src/humanize/time.py:162 msgid "a day" msgstr "dzień" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dzień" msgstr[1] "%d dni" msgstr[2] "%d dni" #: src/humanize/time.py:169 msgid "a month" msgstr "miesiąc" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d miesiąc" msgstr[1] "%d miesiące" msgstr[2] "%d miesięcy" #: src/humanize/time.py:174 msgid "a year" msgstr "rok" #: src/humanize/time.py:176 src/humanize/time.py:185 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 rok, %d dzień" msgstr[1] "1 rok, %d dni" msgstr[2] "1 rok, %d dni" #: src/humanize/time.py:179 msgid "1 year, 1 month" msgstr "1 rok, 1 miesiąc" #: src/humanize/time.py:182 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 rok, %d miesiąc" msgstr[1] "1 rok, %d miesiące" msgstr[2] "1 rok, %d miesięcy" #: src/humanize/time.py:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d rok" msgstr[1] "%d lat" msgstr[2] "%d lata" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "%s od teraz" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s temu" #: src/humanize/time.py:221 msgid "now" msgstr "teraz" #: src/humanize/time.py:244 msgid "today" msgstr "dziś" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "jutro" #: src/humanize/time.py:248 msgid "yesterday" msgstr "wczoraj" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s i %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1505408 humanize-4.0.0/src/humanize/locale/pt_BR/0000755000076500000000000000000000000000000017030 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2288156 humanize-4.0.0/src/humanize/locale/pt_BR/LC_MESSAGES/0000755000076500000000000000000000000000000020615 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/pt_BR/LC_MESSAGES/humanize.mo0000644000076500000000000000616000000000000022775 0ustar00hugowheelA$Y,    * 6 DP"o           $ 2 > L X frx -1Iaw} $   + < S b i q w z }                       & 1 8 A Q e j p w            6 ; A F N ` e k :">%7234'A<9 .@& - ; 60,= )*?(/5#!81$ +%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 and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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 anoshá %s%s e %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ãobilhãodecilhãodecilhãooitocincoquatroundecilhãoundecilhãomilhãomilhãonovenonilhãononilhãoagoraoctilhãooctilhãoumquatrilhãoquatrilhãoquintilhãoquintilhãoseptilhãoseptilhãosetesextilhãosextilhãoseistrêshojeamanhãtrilhãotrilhãodoisontemzero././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/pt_BR/LC_MESSAGES/humanize.po0000644000076500000000000001457400000000000023010 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "º" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "º" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "º" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "ª" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "ª" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "ª" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "milhão" msgstr[1] "milhão" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "bilhão" msgstr[1] "bilhão" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "trilhão" msgstr[1] "trilhão" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "quatrilhão" msgstr[1] "quatrilhão" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintilhão" msgstr[1] "quintilhão" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextilhão" msgstr[1] "sextilhão" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "septilhão" msgstr[1] "septilhão" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "octilhão" msgstr[1] "octilhão" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonilhão" msgstr[1] "nonilhão" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "decilhão" msgstr[1] "decilhão" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "undecilhão" msgstr[1] "undecilhão" #: src/humanize/number.py:246 msgid "zero" msgstr "zero" #: src/humanize/number.py:247 msgid "one" msgstr "um" #: src/humanize/number.py:248 msgid "two" msgstr "dois" #: src/humanize/number.py:249 msgid "three" msgstr "três" #: src/humanize/number.py:250 msgid "four" msgstr "quatro" #: src/humanize/number.py:251 msgid "five" msgstr "cinco" #: src/humanize/number.py:252 msgid "six" msgstr "seis" #: src/humanize/number.py:253 msgid "seven" msgstr "sete" #: src/humanize/number.py:254 msgid "eight" msgstr "oito" #: src/humanize/number.py:255 msgid "nine" msgstr "nove" #: src/humanize/time.py:133 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microssegundo" msgstr[1] "%d microssegundos" #: src/humanize/time.py:142 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milissegundo" msgstr[1] "%d milissegundos" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "um momento" #: src/humanize/time.py:147 msgid "a second" msgstr "um segundo" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: src/humanize/time.py:151 msgid "a minute" msgstr "um minuto" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: src/humanize/time.py:156 msgid "an hour" msgstr "uma hora" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: src/humanize/time.py:162 msgid "a day" msgstr "um dia" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dia" msgstr[1] "%d dias" #: src/humanize/time.py:169 msgid "a month" msgstr "um mês" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mês" msgstr[1] "%d meses" #: src/humanize/time.py:174 msgid "a year" msgstr "um ano" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "1 ano e 1 mês" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d ano" msgstr[1] "%d anos" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "em %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "há %s" #: src/humanize/time.py:221 msgid "now" msgstr "agora" #: src/humanize/time.py:244 msgid "today" msgstr "hoje" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "amanhã" #: src/humanize/time.py:248 msgid "yesterday" msgstr "ontem" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s e %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1507936 humanize-4.0.0/src/humanize/locale/pt_PT/0000755000076500000000000000000000000000000017050 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.230334 humanize-4.0.0/src/humanize/locale/pt_PT/LC_MESSAGES/0000755000076500000000000000000000000000000020635 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/pt_PT/LC_MESSAGES/humanize.mo0000644000076500000000000000651300000000000023017 0ustar00hugowheelC4YL$7L] d n z   "    ( 4 B N \ h v      ,27 <JZ_sw   * $/ T c "t         ! $ ' * I j y |                   # ! . 3 9 @ V f k  !          # + ; @ F <$?@'9456)C >;0 B(! /= 82 .# +,A*17%:3&"-%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: Report-Msgid-Bugs-To: PO-Revision-Date: 2020-07-05 18:17+0100 Last-Translator: Language-Team: Language: pt_PT 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.3.1 %d dia%d dias%d hora%d horas%d microssegundo%d microssegundos%d milissegundo%d milissegundos%d minuto%d minutos%d mês%d meses%d segundo%d segundos%d ano%d anoshá %s%s e %sdaqui a %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 horamilhar de milhãomilhar de milhãomil quintilhõesmil quintilhõesoitocincoquatrosextilhãosextilhãomilhãomilhãonovequintilhãoquintilhãoagoramil quatriliõesmil quatriliõesummil biliõesmil biliõestriliãotriliãoquatriliãoquatriliãosetemil triliõesmil triliõesseistrêshojeamanhãbiliãobiliãodoisontemzero././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/pt_PT/LC_MESSAGES/humanize.po0000644000076500000000000001464700000000000023031 0ustar00hugowheel# 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: 2021-05-04 23:15+0200\n" "PO-Revision-Date: 2020-07-05 18:17+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: pt_PT\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.3.1\n" #: src/humanize/number.py:57 msgctxt "0 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "º" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "º" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "º" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "ª" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "ª" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "ª" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "milhão" msgstr[1] "milhão" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "milhar de milhão" msgstr[1] "milhar de milhão" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilião" msgstr[1] "bilião" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "mil biliões" msgstr[1] "mil biliões" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trilião" msgstr[1] "trilião" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "mil triliões" msgstr[1] "mil triliões" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "quatrilião" msgstr[1] "quatrilião" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "mil quatriliões" msgstr[1] "mil quatriliões" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "quintilhão" msgstr[1] "quintilhão" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "mil quintilhões" msgstr[1] "mil quintilhões" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "sextilhão" msgstr[1] "sextilhão" #: src/humanize/number.py:246 msgid "zero" msgstr "zero" #: src/humanize/number.py:247 msgid "one" msgstr "um" #: src/humanize/number.py:248 msgid "two" msgstr "dois" #: src/humanize/number.py:249 msgid "three" msgstr "três" #: src/humanize/number.py:250 msgid "four" msgstr "quatro" #: src/humanize/number.py:251 msgid "five" msgstr "cinco" #: src/humanize/number.py:252 msgid "six" msgstr "seis" #: src/humanize/number.py:253 msgid "seven" msgstr "sete" #: src/humanize/number.py:254 msgid "eight" msgstr "oito" #: src/humanize/number.py:255 msgid "nine" msgstr "nove" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microssegundo" msgstr[1] "%d microssegundos" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milissegundo" msgstr[1] "%d milissegundos" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "um momento" #: src/humanize/time.py:147 msgid "a second" msgstr "um segundo" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: src/humanize/time.py:151 msgid "a minute" msgstr "um minuto" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: src/humanize/time.py:156 msgid "an hour" msgstr "uma hora" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: src/humanize/time.py:162 msgid "a day" msgstr "um dia" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dia" msgstr[1] "%d dias" #: src/humanize/time.py:169 msgid "a month" msgstr "um mês" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mês" msgstr[1] "%d meses" #: src/humanize/time.py:174 msgid "a year" msgstr "um ano" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "1 ano e 1 mês" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d ano" msgstr[1] "%d anos" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "daqui a %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "há %s" #: src/humanize/time.py:221 msgid "now" msgstr "agora" #: src/humanize/time.py:244 msgid "today" msgstr "hoje" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "amanhã" #: src/humanize/time.py:248 msgid "yesterday" msgstr "ontem" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s e %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1510537 humanize-4.0.0/src/humanize/locale/ru_RU/0000755000076500000000000000000000000000000017056 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2316434 humanize-4.0.0/src/humanize/locale/ru_RU/LC_MESSAGES/0000755000076500000000000000000000000000000020643 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/ru_RU/LC_MESSAGES/humanize.mo0000644000076500000000000001067200000000000023026 0ustar00hugowheelD<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l q !8 #Z Q~ Q -" /P 3       ? MM                    ,7FM8T8  &2 C>P >JJ/DzJ $CJ Y8f 5<>+=6D94%2#)" !, 3:A 1*-;'/&0(@8B. C7 $ ?%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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 месяцев%d секунда%d секунды%d секунд%d год%d года%d лет%s назад%s и %sчерез %sойойыйый1 год, %d день1 год, %d дня1 год, %d дней1 год, %d месяц1 год, %d месяца1 год, %d месяцев1 год, 1 месяцойойийийыйыйыйыйойойойойойойыйыйденьминутутолько чтомесяцсекундугодчасмиллиардмиллиардамиллиардовдецилиондецилионадецилионоввосемьпятьчетырегоголгоголагоголовмиллионмиллионамиллионовдевятьнониллионнониллионанониллионовсейчасоктиллионоктиллионаоктиллионоводинквадриллионквадриллионаквадриллионовквинтиллионквинтиллионаквинтиллионовсептиллионсептиллионасептиллионовсемьсикстиллионсикстиллионасикстиллионовшестьтысячатысячитысячтрисегоднязавтратриллионтриллионатриллионовдвавчераноль././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/ru_RU/LC_MESSAGES/humanize.po0000644000076500000000000001734200000000000023032 0ustar00hugowheel# 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: 2021-05-04 23:15+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" #: src/humanize/number.py:57 msgctxt "0 (male)" msgid "th" msgstr "ой" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "ый" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "ой" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "ий" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "ый" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "ый" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "ой" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "ой" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "ой" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "ый" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "ой" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "ый" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "ой" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "ий" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "ый" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "ый" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "ой" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "ой" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "ой" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "ый" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "тысяча" msgstr[1] "тысячи" msgstr[2] "тысяч" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "миллион" msgstr[1] "миллиона" msgstr[2] "миллионов" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "миллиард" msgstr[1] "миллиарда" msgstr[2] "миллиардов" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "триллион" msgstr[1] "триллиона" msgstr[2] "триллионов" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "квадриллион" msgstr[1] "квадриллиона" msgstr[2] "квадриллионов" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "квинтиллион" msgstr[1] "квинтиллиона" msgstr[2] "квинтиллионов" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "сикстиллион" msgstr[1] "сикстиллиона" msgstr[2] "сикстиллионов" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "септиллион" msgstr[1] "септиллиона" msgstr[2] "септиллионов" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "октиллион" msgstr[1] "октиллиона" msgstr[2] "октиллионов" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "нониллион" msgstr[1] "нониллиона" msgstr[2] "нониллионов" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "децилион" msgstr[1] "децилиона" msgstr[2] "децилионов" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "гогол" msgstr[1] "гогола" msgstr[2] "гоголов" #: src/humanize/number.py:246 msgid "zero" msgstr "ноль" #: src/humanize/number.py:247 msgid "one" msgstr "один" #: src/humanize/number.py:248 msgid "two" msgstr "два" #: src/humanize/number.py:249 msgid "three" msgstr "три" #: src/humanize/number.py:250 msgid "four" msgstr "четыре" #: src/humanize/number.py:251 msgid "five" msgstr "пять" #: src/humanize/number.py:252 msgid "six" msgstr "шесть" #: src/humanize/number.py:253 msgid "seven" msgstr "семь" #: src/humanize/number.py:254 msgid "eight" msgstr "восемь" #: src/humanize/number.py:255 msgid "nine" msgstr "девять" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d микросекунда" msgstr[1] "%d микросекунды" msgstr[2] "%d микросекунд" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d миллисекунда" msgstr[1] "%d миллисекунды" msgstr[2] "%d миллисекунд" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "только что" #: src/humanize/time.py:147 msgid "a second" msgstr "секунду" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d секунда" msgstr[1] "%d секунды" msgstr[2] "%d секунд" #: src/humanize/time.py:151 msgid "a minute" msgstr "минуту" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d минута" msgstr[1] "%d минуты" msgstr[2] "%d минут" #: src/humanize/time.py:156 msgid "an hour" msgstr "час" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d час" msgstr[1] "%d часа" msgstr[2] "%d часов" #: src/humanize/time.py:162 msgid "a day" msgstr "день" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d день" msgstr[1] "%d дня" msgstr[2] "%d дней" #: src/humanize/time.py:169 msgid "a month" msgstr "месяц" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d месяц" msgstr[1] "%d месяца" msgstr[2] "%d месяцев" #: src/humanize/time.py:174 msgid "a year" msgstr "год" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "1 год, 1 месяц" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d год" msgstr[1] "%d года" msgstr[2] "%d лет" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "через %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s назад" #: src/humanize/time.py:221 msgid "now" msgstr "сейчас" #: src/humanize/time.py:244 msgid "today" msgstr "сегодня" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "завтра" #: src/humanize/time.py:248 msgid "yesterday" msgstr "вчера" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s и %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1513107 humanize-4.0.0/src/humanize/locale/sk_SK/0000755000076500000000000000000000000000000017034 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2334168 humanize-4.0.0/src/humanize/locale/sk_SK/LC_MESSAGES/0000755000076500000000000000000000000000000020621 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/sk_SK/LC_MESSAGES/humanize.mo0000644000076500000000000000672400000000000023007 0ustar00hugowheel@Y     *6"Ux             $ 2 > LX^gpx /G]cy} [ * H h       + 5 = M O Q S U W Y [ ] _ a c e g i k m r z     ) 5     #1 U /]  5  ) , /& V ,\     #    9!=$6123/@;8 -?% , : 5+<&()>'.4" 70#*%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 now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2020-09-29 22:43+0300 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/árdmiliardy/árdmiliardy/árdkvintiliardy/árdkvintiliardy/árdkvintiliardy/árdosempäťštyrigoogola/ovgoogola/ovgoogola/ovmilióna/ovmilióna/ovmilióna/ovdeväťkvintilióna/ovkvintilióna/ovkvintilióna/ovterazkvadriliardy/árdkvadriliardy/árdkvadriliardy/árdjednabiliardy/árdbiliardy/árdbiliardy/árdtrilióna/árdtrilióna/árdtrilióna/árdkvadrilióna/ovkvadrilióna/ovkvadrilióna/ovsedemtriliardy/árdtriliardy/árdtriliardy/árdšesťtridneszajtrabilióna/ovbilióna/ovbilióna/ovdvevčeranula././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/sk_SK/LC_MESSAGES/humanize.po0000644000076500000000000001601400000000000023003 0ustar00hugowheel# 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: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-05-04 23:15+0200\n" "PO-Revision-Date: 2020-09-29 22:43+0300\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:57 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "milióna/ov" msgstr[1] "milióna/ov" msgstr[2] "milióna/ov" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "miliardy/árd" msgstr[1] "miliardy/árd" msgstr[2] "miliardy/árd" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilióna/ov" msgstr[1] "bilióna/ov" msgstr[2] "bilióna/ov" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "biliardy/árd" msgstr[1] "biliardy/árd" msgstr[2] "biliardy/árd" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trilióna/árd" msgstr[1] "trilióna/árd" msgstr[2] "trilióna/árd" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "triliardy/árd" msgstr[1] "triliardy/árd" msgstr[2] "triliardy/árd" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "kvadrilióna/ov" msgstr[1] "kvadrilióna/ov" msgstr[2] "kvadrilióna/ov" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "kvadriliardy/árd" msgstr[1] "kvadriliardy/árd" msgstr[2] "kvadriliardy/árd" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "kvintilióna/ov" msgstr[1] "kvintilióna/ov" msgstr[2] "kvintilióna/ov" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "kvintiliardy/árd" msgstr[1] "kvintiliardy/árd" msgstr[2] "kvintiliardy/árd" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "googola/ov" msgstr[1] "googola/ov" msgstr[2] "googola/ov" #: src/humanize/number.py:246 msgid "zero" msgstr "nula" #: src/humanize/number.py:247 msgid "one" msgstr "jedna" #: src/humanize/number.py:248 msgid "two" msgstr "dve" #: src/humanize/number.py:249 msgid "three" msgstr "tri" #: src/humanize/number.py:250 msgid "four" msgstr "štyri" #: src/humanize/number.py:251 msgid "five" msgstr "päť" #: src/humanize/number.py:252 msgid "six" msgstr "šesť" #: src/humanize/number.py:253 msgid "seven" msgstr "sedem" #: src/humanize/number.py:254 msgid "eight" msgstr "osem" #: src/humanize/number.py:255 msgid "nine" msgstr "deväť" #: src/humanize/time.py:133 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekundu" msgstr[1] "%d mikrosekundy" msgstr[2] "%d mikrosekúnd" #: src/humanize/time.py:142 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milisekundu" msgstr[1] "%d milisekundy" msgstr[2] "%d milisekúnd" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "chvíľku" #: src/humanize/time.py:147 msgid "a second" msgstr "sekundu" #: src/humanize/time.py:149 #, 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:151 msgid "a minute" msgstr "minútu" #: src/humanize/time.py:154 #, 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:156 msgid "an hour" msgstr "hodinu" #: src/humanize/time.py:159 #, 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:162 msgid "a day" msgstr "deň" #: src/humanize/time.py:164 src/humanize/time.py:167 #, 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:169 msgid "a month" msgstr "mesiac" #: src/humanize/time.py:171 #, 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:174 msgid "a year" msgstr "rok" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "1 rok, 1 mesiac" #: src/humanize/time.py:182 #, 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:187 #, 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:217 #, python-format msgid "%s from now" msgstr "o %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s naspäť" #: src/humanize/time.py:221 msgid "now" msgstr "teraz" #: src/humanize/time.py:244 msgid "today" msgstr "dnes" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "zajtra" #: src/humanize/time.py:248 msgid "yesterday" msgstr "včera" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1517222 humanize-4.0.0/src/humanize/locale/sl_SI/0000755000076500000000000000000000000000000017033 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2347243 humanize-4.0.0/src/humanize/locale/sl_SI/LC_MESSAGES/0000755000076500000000000000000000000000000020620 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/sl_SI/LC_MESSAGES/humanize.mo0000644000076500000000000000761300000000000023004 0ustar00hugowheelD<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l q   >- :l & ' * ! @ I R ] _ a c ?e G                   ! ( 1 7 ? D &H 6o     #  3 065l&p'3*$*FJP#Vz~5<>+=6D94%2#)" !, 3:A 1*-;'/&0(@8B. C7 $ ?%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2021-06-11 23:39+0200 Last-Translator: dkrat7 Language-Team: Slovenian Language: sl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3); X-Generator: Poedit 2.3 %d dan%d dneva%d dnevi%d dni%d ura%d uri%d ure%d ur%d mikrosekunda%d mikrosekundi%d mikrosekunde%d mikrosekund%d milisekunda%d milisekundi%d milisekunde%d milisekund%d minuta%d minuti%d minute%d minut%d mesec%d meseca%d meseci%d mesecev%d sekunda%d sekundi%d sekunde%d sekund%d leto%d leti%d leta%d let%s nazaj%s in %s%s od zdaj....1 leto, %d dan1 leto, %d dneva1 leto, %d dnevi1 leto, %d dni1 leto, %d mesec1 leto, %d meseca1 leto, %d meseci1 leto, %d mesecev1 leto, 1 mesec................danminutatrenutekmesecsekundaletouramilijardamilijardimilijardemilijardkvintilijardakvintilijardikvintilijardekvintilijardosempetštirigugolgugolagugoligugolovmilijonmilijonamilijonimilijonovdevetkvintilijonkvintilijonakvintilijonikvintilijonovzdajkvadrilijardakvadrilijardikvadrilijardekvadrilijardenabilijardabilijardibilijardebilijardtrilijontrilijonatrilijonitrilijonovkvadrilijonkvadrilijonakvadrilijonikvadrilijonovsedemtrilijardatrilijarditrilijardetrilijardšesttisočtisočtisočtisočtridanesjutribilijonbilijonabilijonibilijonovdvevčerajnič././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/sl_SI/LC_MESSAGES/humanize.po0000644000076500000000000001670200000000000023006 0ustar00hugowheel# Slovenian translations for PACKAGE package. # Copyright (C) 2021 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # vlin , 2021. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-06-11 22:52+0200\n" "PO-Revision-Date: 2021-06-11 23:39+0200\n" "Last-Translator: dkrat7 \n" "Language-Team: Slovenian\n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" "%100==4 ? 2 : 3);\n" "X-Generator: Poedit 2.3\n" #: src/humanize/number.py:58 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:59 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:60 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:61 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:62 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:63 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:64 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:65 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:66 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:67 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:71 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:72 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:73 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:74 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:75 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:76 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:77 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:78 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:79 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:80 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "tisoč" msgstr[1] "tisoč" msgstr[2] "tisoč" msgstr[3] "tisoč" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "milijon" msgstr[1] "milijona" msgstr[2] "milijoni" msgstr[3] "milijonov" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "milijarda" msgstr[1] "milijardi" msgstr[2] "milijarde" msgstr[3] "milijard" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilijon" msgstr[1] "bilijona" msgstr[2] "bilijoni" msgstr[3] "bilijonov" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "bilijarda" msgstr[1] "bilijardi" msgstr[2] "bilijarde" msgstr[3] "bilijard" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trilijon" msgstr[1] "trilijona" msgstr[2] "trilijoni" msgstr[3] "trilijonov" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "trilijarda" msgstr[1] "trilijardi" msgstr[2] "trilijarde" msgstr[3] "trilijard" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "kvadrilijon" msgstr[1] "kvadrilijona" msgstr[2] "kvadrilijoni" msgstr[3] "kvadrilijonov" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "kvadrilijarda" msgstr[1] "kvadrilijardi" msgstr[2] "kvadrilijarde" msgstr[3] "kvadrilijard" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "kvintilijon" msgstr[1] "kvintilijona" msgstr[2] "kvintilijoni" msgstr[3] "kvintilijonov" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "kvintilijarda" msgstr[1] "kvintilijardi" msgstr[2] "kvintilijarde" msgstr[3] "kvintilijard" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "gugol" msgstr[1] "gugola" msgstr[2] "gugoli" msgstr[3] "gugolov" #: src/humanize/number.py:247 msgid "zero" msgstr "nič" #: src/humanize/number.py:248 msgid "one" msgstr "ena" #: src/humanize/number.py:249 msgid "two" msgstr "dve" #: src/humanize/number.py:250 msgid "three" msgstr "tri" #: src/humanize/number.py:251 msgid "four" msgstr "štiri" #: src/humanize/number.py:252 msgid "five" msgstr "pet" #: src/humanize/number.py:253 msgid "six" msgstr "šest" #: src/humanize/number.py:254 msgid "seven" msgstr "sedem" #: src/humanize/number.py:255 msgid "eight" msgstr "osem" #: src/humanize/number.py:256 msgid "nine" msgstr "devet" #: src/humanize/time.py:138 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekunda" msgstr[1] "%d mikrosekundi" msgstr[2] "%d mikrosekunde" msgstr[3] "%d mikrosekund" #: src/humanize/time.py:147 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milisekunda" msgstr[1] "%d milisekundi" msgstr[2] "%d milisekunde" msgstr[3] "%d milisekund" #: src/humanize/time.py:150 src/humanize/time.py:231 msgid "a moment" msgstr "trenutek" #: src/humanize/time.py:152 msgid "a second" msgstr "sekunda" #: src/humanize/time.py:154 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekunda" msgstr[1] "%d sekundi" msgstr[2] "%d sekunde" msgstr[3] "%d sekund" #: src/humanize/time.py:156 msgid "a minute" msgstr "minuta" #: src/humanize/time.py:159 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuta" msgstr[1] "%d minuti" msgstr[2] "%d minute" msgstr[3] "%d minut" #: src/humanize/time.py:161 msgid "an hour" msgstr "ura" #: src/humanize/time.py:164 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ura" msgstr[1] "%d uri" msgstr[2] "%d ure" msgstr[3] "%d ur" #: src/humanize/time.py:167 msgid "a day" msgstr "dan" #: src/humanize/time.py:169 src/humanize/time.py:172 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dan" msgstr[1] "%d dneva" msgstr[2] "%d dnevi" msgstr[3] "%d dni" #: src/humanize/time.py:174 msgid "a month" msgstr "mesec" #: src/humanize/time.py:176 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mesec" msgstr[1] "%d meseca" msgstr[2] "%d meseci" msgstr[3] "%d mesecev" #: src/humanize/time.py:179 msgid "a year" msgstr "leto" #: src/humanize/time.py:181 src/humanize/time.py:190 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 leto, %d dan" msgstr[1] "1 leto, %d dneva" msgstr[2] "1 leto, %d dnevi" msgstr[3] "1 leto, %d dni" #: src/humanize/time.py:184 msgid "1 year, 1 month" msgstr "1 leto, 1 mesec" #: src/humanize/time.py:187 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 leto, %d mesec" msgstr[1] "1 leto, %d meseca" msgstr[2] "1 leto, %d meseci" msgstr[3] "1 leto, %d mesecev" #: src/humanize/time.py:192 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d leto" msgstr[1] "%d leti" msgstr[2] "%d leta" msgstr[3] "%d let" #: src/humanize/time.py:228 #, python-format msgid "%s from now" msgstr "%s od zdaj" #: src/humanize/time.py:228 #, python-format msgid "%s ago" msgstr "%s nazaj" #: src/humanize/time.py:232 msgid "now" msgstr "zdaj" #: src/humanize/time.py:255 msgid "today" msgstr "danes" #: src/humanize/time.py:257 msgid "tomorrow" msgstr "jutri" #: src/humanize/time.py:259 msgid "yesterday" msgstr "včeraj" #: src/humanize/time.py:545 #, python-format msgid "%s and %s" msgstr "%s in %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1519992 humanize-4.0.0/src/humanize/locale/sv_SE/0000755000076500000000000000000000000000000017041 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2362845 humanize-4.0.0/src/humanize/locale/sv_SE/LC_MESSAGES/0000755000076500000000000000000000000000000020626 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/sv_SE/LC_MESSAGES/humanize.mo0000644000076500000000000000664200000000000023013 0ustar00hugowheelD<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l eq     8 L b x       #            ! $ ' * - 0 3 : C R \ f n w             1 I M a e q u z     5<>+=6D94%2#)" !, 3:A 1*-;'/&0(@8B. C7 $ ?%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: humanize Report-Msgid-Bugs-To: https://github.com/jmoiron/humanize/issues PO-Revision-Date: 2021-07-05 10:30+0200 Last-Translator: Kess Vargavind Language-Team: Swedish Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %d dag%d dagar%d timme%d timmar%d mikrosekund%d mikrosekunder%d millsekund%d millsekunder%d minut%d minuter%d månad%d månader%d sekund%d sekunder%d år%d år%s sedan%s och %s%s från nu:e:e:a:a1 år, %d dag1 år, %d dagar1 år, %d månad1 år, %d månader1 år, 1 månad:a:a:e:e:e:e:e:e:e:e:e:e:e:e:e:een dagen minuten liten stunden månaden sekundett åren timmemiljardmiljarderkvintiljardkvintiljarderåttafemfyragoogolgoogolmiljonmiljonerniokvintiljonkvintiljonernukvadriljardkvadriljarderettbiljardbiljardertriljontriljonerkvadriljonkvadriljonersjutriljardtriljardersextusentusentreidagimorgonbiljonbiljonertvåigårnoll././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/sv_SE/LC_MESSAGES/humanize.po0000644000076500000000000001467400000000000023022 0ustar00hugowheel# Swedish (Sweden) translations for humanize package. # Copyright (C) 2021 # This file is distributed under the same license as the humanize project. # Kess Vargavind , 2021. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: https://github.com/jmoiron/humanize/issues\n" "POT-Creation-Date: 2021-07-05 09:49+0200\n" "PO-Revision-Date: 2021-07-05 10:30+0200\n" "Last-Translator: Kess Vargavind \n" "Language-Team: Swedish\n" "Language: sv\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:58 msgctxt "0 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:59 msgctxt "1 (male)" msgid "st" msgstr ":a" #: src/humanize/number.py:60 msgctxt "2 (male)" msgid "nd" msgstr ":a" #: src/humanize/number.py:61 msgctxt "3 (male)" msgid "rd" msgstr ":e" #: src/humanize/number.py:62 msgctxt "4 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:63 msgctxt "5 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:64 msgctxt "6 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:65 msgctxt "7 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:66 msgctxt "8 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:67 msgctxt "9 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:71 msgctxt "0 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:72 msgctxt "1 (female)" msgid "st" msgstr ":a" #: src/humanize/number.py:73 msgctxt "2 (female)" msgid "nd" msgstr ":a" #: src/humanize/number.py:74 msgctxt "3 (female)" msgid "rd" msgstr ":e" #: src/humanize/number.py:75 msgctxt "4 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:76 msgctxt "5 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:77 msgctxt "6 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:78 msgctxt "7 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:79 msgctxt "8 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:80 msgctxt "9 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:141 msgid "thousand" msgid_plural "thousand" msgstr[0] "tusen" msgstr[1] "tusen" #: src/humanize/number.py:142 msgid "million" msgid_plural "million" msgstr[0] "miljon" msgstr[1] "miljoner" #: src/humanize/number.py:143 msgid "billion" msgid_plural "billion" msgstr[0] "miljard" msgstr[1] "miljarder" #: src/humanize/number.py:144 msgid "trillion" msgid_plural "trillion" msgstr[0] "biljon" msgstr[1] "biljoner" #: src/humanize/number.py:145 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "biljard" msgstr[1] "biljarder" #: src/humanize/number.py:146 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "triljon" msgstr[1] "triljoner" #: src/humanize/number.py:147 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "triljard" msgstr[1] "triljarder" #: src/humanize/number.py:148 msgid "septillion" msgid_plural "septillion" msgstr[0] "kvadriljon" msgstr[1] "kvadriljoner" #: src/humanize/number.py:149 msgid "octillion" msgid_plural "octillion" msgstr[0] "kvadriljard" msgstr[1] "kvadriljarder" #: src/humanize/number.py:150 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "kvintiljon" msgstr[1] "kvintiljoner" #: src/humanize/number.py:151 msgid "decillion" msgid_plural "decillion" msgstr[0] "kvintiljard" msgstr[1] "kvintiljarder" #: src/humanize/number.py:152 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:247 msgid "zero" msgstr "noll" #: src/humanize/number.py:248 msgid "one" msgstr "ett" #: src/humanize/number.py:249 msgid "two" msgstr "två" #: src/humanize/number.py:250 msgid "three" msgstr "tre" #: src/humanize/number.py:251 msgid "four" msgstr "fyra" #: src/humanize/number.py:252 msgid "five" msgstr "fem" #: src/humanize/number.py:253 msgid "six" msgstr "sex" #: src/humanize/number.py:254 msgid "seven" msgstr "sju" #: src/humanize/number.py:255 msgid "eight" msgstr "åtta" #: src/humanize/number.py:256 msgid "nine" msgstr "nio" #: src/humanize/time.py:138 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekund" msgstr[1] "%d mikrosekunder" #: src/humanize/time.py:147 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d millsekund" msgstr[1] "%d millsekunder" #: src/humanize/time.py:150 src/humanize/time.py:231 msgid "a moment" msgstr "en liten stund" #: src/humanize/time.py:152 msgid "a second" msgstr "en sekund" #: src/humanize/time.py:154 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekund" msgstr[1] "%d sekunder" #: src/humanize/time.py:156 msgid "a minute" msgstr "en minut" #: src/humanize/time.py:159 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minut" msgstr[1] "%d minuter" #: src/humanize/time.py:161 msgid "an hour" msgstr "en timme" #: src/humanize/time.py:164 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d timme" msgstr[1] "%d timmar" #: src/humanize/time.py:167 msgid "a day" msgstr "en dag" #: src/humanize/time.py:169 src/humanize/time.py:172 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dag" msgstr[1] "%d dagar" #: src/humanize/time.py:174 msgid "a month" msgstr "en månad" #: src/humanize/time.py:176 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d månad" msgstr[1] "%d månader" #: src/humanize/time.py:179 msgid "a year" msgstr "ett år" #: src/humanize/time.py:181 src/humanize/time.py:190 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 år, %d dag" msgstr[1] "1 år, %d dagar" #: src/humanize/time.py:184 msgid "1 year, 1 month" msgstr "1 år, 1 månad" #: src/humanize/time.py:187 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 år, %d månad" msgstr[1] "1 år, %d månader" #: src/humanize/time.py:192 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d år" msgstr[1] "%d år" #: src/humanize/time.py:228 #, python-format msgid "%s from now" msgstr "%s från nu" #: src/humanize/time.py:228 #, python-format msgid "%s ago" msgstr "%s sedan" #: src/humanize/time.py:232 msgid "now" msgstr "nu" #: src/humanize/time.py:255 msgid "today" msgstr "idag" #: src/humanize/time.py:257 msgid "tomorrow" msgstr "imorgon" #: src/humanize/time.py:259 msgid "yesterday" msgstr "igår" #: src/humanize/time.py:545 #, python-format msgid "%s and %s" msgstr "%s och %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1522586 humanize-4.0.0/src/humanize/locale/tr_TR/0000755000076500000000000000000000000000000017054 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.237687 humanize-4.0.0/src/humanize/locale/tr_TR/LC_MESSAGES/0000755000076500000000000000000000000000000020641 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/tr_TR/LC_MESSAGES/humanize.mo0000644000076500000000000000611700000000000023023 0ustar00hugowheel?Y pq     &"Eh x             " . <HNW`hqx 7MSimsy o " 2 F R f v                            ' 2 ; D R d j o u            # ( / 6 F J 9!=$6123/;8 -?% , : 5+<&()>'.4" 70#*%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 now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayProject-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 saatmilyarmilyardesilyondesilyonsekizbeşdörtgoogolgoogolmilyonmilyondokuznonilyonnonilyonşimdioktilyonoktilyonbirkatrilyonkatrilyonkentilyonkentilyonseptilyonseptilyonyedisekstilyonsekstilyonaltıüçbugünyarıntrilyontrilyonikidün././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/tr_TR/LC_MESSAGES/humanize.po0000644000076500000000000001451700000000000023031 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "milyon" msgstr[1] "milyon" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "milyar" msgstr[1] "milyar" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "trilyon" msgstr[1] "trilyon" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "katrilyon" msgstr[1] "katrilyon" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "kentilyon" msgstr[1] "kentilyon" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sekstilyon" msgstr[1] "sekstilyon" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "septilyon" msgstr[1] "septilyon" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "oktilyon" msgstr[1] "oktilyon" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonilyon" msgstr[1] "nonilyon" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "desilyon" msgstr[1] "desilyon" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:246 msgid "zero" msgstr "" #: src/humanize/number.py:247 msgid "one" msgstr "bir" #: src/humanize/number.py:248 msgid "two" msgstr "iki" #: src/humanize/number.py:249 msgid "three" msgstr "üç" #: src/humanize/number.py:250 msgid "four" msgstr "dört" #: src/humanize/number.py:251 msgid "five" msgstr "beş" #: src/humanize/number.py:252 msgid "six" msgstr "altı" #: src/humanize/number.py:253 msgid "seven" msgstr "yedi" #: src/humanize/number.py:254 msgid "eight" msgstr "sekiz" #: src/humanize/number.py:255 msgid "nine" msgstr "dokuz" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "" msgstr[1] "" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "" msgstr[1] "" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "biraz" #: src/humanize/time.py:147 msgid "a second" msgstr "bir saniye" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d saniye" msgstr[1] "%d saniye" #: src/humanize/time.py:151 msgid "a minute" msgstr "bir dakika" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d dakika" msgstr[1] "%d dakika" #: src/humanize/time.py:156 msgid "an hour" msgstr "bir saat" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d saat" msgstr[1] "%d saat" #: src/humanize/time.py:162 msgid "a day" msgstr "bir gün" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d gün" msgstr[1] "%d gün" #: src/humanize/time.py:169 msgid "a month" msgstr "bir ay" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d ay" msgstr[1] "%d ay" #: src/humanize/time.py:174 msgid "a year" msgstr "bir yıl" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "1 yıl, 1 ay" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d yıl" msgstr[1] "%d yıl" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "şu andan itibaren %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s önce" #: src/humanize/time.py:221 msgid "now" msgstr "şimdi" #: src/humanize/time.py:244 msgid "today" msgstr "bugün" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "yarın" #: src/humanize/time.py:248 msgid "yesterday" msgstr "dün" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644743744.152533 humanize-4.0.0/src/humanize/locale/uk_UA/0000755000076500000000000000000000000000000017026 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2390864 humanize-4.0.0/src/humanize/locale/uk_UA/LC_MESSAGES/0000755000076500000000000000000000000000000020613 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/uk_UA/LC_MESSAGES/humanize.mo0000644000076500000000000001013400000000000022767 0ustar00hugowheelB,Y<   , : F T`"          ( 4 B N \ h v  %)=AYq o!c - 3 1 3 #M q      ? O : S X ] b g l q v {             2 >5 t  " 2 > 9>DJDDaJh $ 8A HS:"?%7234'B=9 .A& - < 60,> )*@(/5#!8;1$ +%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 and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: Last-Translator: TL Language-Team: uk_UA Language: uk 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: X-Generator: %d день%d дня%d днів%d година%d години%d годин%d хвилина%d хвилини%d хвилин%d місяць%d місяця%d місяців%d секунда%d секунди%d секунд%d рік%d роки%d років%s назад%s й %sчерез %sийийийий1 рік, %d день1 рік, %d дня1 рік, %d днів1 рік, %d місяць1 рік, %d місяця1 рік, %d місяців1 рік, 1 місяцьийийійійийийийийийийийийийийийийденьхвилинау цей моментмісяцьсекундарікгодинамільярдмільярдамільярдівдецильйондецильйонадецильйоніввісімп'ятьчотиригуголгуглагуглівмільйонмільйонамільйонівдев'ятьнонильйоннонильйонанонильйонівзаразоктильйоноктильйонаоктильйоніводинквадрильйонквадрильйонаквадрильйонівквинтиліонквинтиліонаквинтиліонівсептильйонсептильйонасептильйонівсімсикстильйонсикстильйонасикстильйонівшістьтисячатисячітисячтрисьогоднізавтратрильйонтрильйонатрильйонівдвавчорануль././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/uk_UA/LC_MESSAGES/humanize.po0000644000076500000000000001675500000000000023011 0ustar00hugowheelmsgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-05-04 23:15+0200\n" "PO-Revision-Date: \n" "Last-Translator: TL\n" "Language-Team: uk_UA\n" "Language: uk\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:\n" "X-Generator: \n" #: src/humanize/number.py:57 msgctxt "0 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "ий" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "ий" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "ій" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "ий" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "ий" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "ій" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "тисяча" msgstr[1] "тисячі" msgstr[2] "тисяч" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "мільйон" msgstr[1] "мільйона" msgstr[2] "мільйонів" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "мільярд" msgstr[1] "мільярда" msgstr[2] "мільярдів" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "трильйон" msgstr[1] "трильйона" msgstr[2] "трильйонів" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "квадрильйон" msgstr[1] "квадрильйона" msgstr[2] "квадрильйонів" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "квинтиліон" msgstr[1] "квинтиліона" msgstr[2] "квинтиліонів" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "сикстильйон" msgstr[1] "сикстильйона" msgstr[2] "сикстильйонів" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "септильйон" msgstr[1] "септильйона" msgstr[2] "септильйонів" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "октильйон" msgstr[1] "октильйона" msgstr[2] "октильйонів" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "нонильйон" msgstr[1] "нонильйона" msgstr[2] "нонильйонів" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "децильйон" msgstr[1] "децильйона" msgstr[2] "децильйонів" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "гугол" msgstr[1] "гугла" msgstr[2] "гуглів" #: src/humanize/number.py:246 msgid "zero" msgstr "нуль" #: src/humanize/number.py:247 msgid "one" msgstr "один" #: src/humanize/number.py:248 msgid "two" msgstr "два" #: src/humanize/number.py:249 msgid "three" msgstr "три" #: src/humanize/number.py:250 msgid "four" msgstr "чотири" #: src/humanize/number.py:251 msgid "five" msgstr "п'ять" #: src/humanize/number.py:252 msgid "six" msgstr "шість" #: src/humanize/number.py:253 msgid "seven" msgstr "сім" #: src/humanize/number.py:254 msgid "eight" msgstr "вісім" #: src/humanize/number.py:255 msgid "nine" msgstr "дев'ять" #: src/humanize/time.py:133 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d мікросекунда" msgstr[1] "%d мікросекунди" msgstr[2] "%d мікросекунд" #: src/humanize/time.py:142 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d мілісекунда" msgstr[1] "%d мілісекунди" msgstr[2] "%d мілісекунд" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "у цей момент" #: src/humanize/time.py:147 msgid "a second" msgstr "секунда" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d секунда" msgstr[1] "%d секунди" msgstr[2] "%d секунд" #: src/humanize/time.py:151 msgid "a minute" msgstr "хвилина" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d хвилина" msgstr[1] "%d хвилини" msgstr[2] "%d хвилин" #: src/humanize/time.py:156 msgid "an hour" msgstr "година" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d година" msgstr[1] "%d години" msgstr[2] "%d годин" #: src/humanize/time.py:162 msgid "a day" msgstr "день" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d день" msgstr[1] "%d дня" msgstr[2] "%d днів" #: src/humanize/time.py:169 msgid "a month" msgstr "місяць" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d місяць" msgstr[1] "%d місяця" msgstr[2] "%d місяців" #: src/humanize/time.py:174 msgid "a year" msgstr "рік" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "1 рік, 1 місяць" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d рік" msgstr[1] "%d роки" msgstr[2] "%d років" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "через %s" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s назад" #: src/humanize/time.py:221 msgid "now" msgstr "зараз" #: src/humanize/time.py:244 msgid "today" msgstr "сьогодні" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "завтра" #: src/humanize/time.py:248 msgid "yesterday" msgstr "вчора" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s й %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1527934 humanize-4.0.0/src/humanize/locale/vi_VN/0000755000076500000000000000000000000000000017043 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1644743744.24054 humanize-4.0.0/src/humanize/locale/vi_VN/LC_MESSAGES/0000755000076500000000000000000000000000000020630 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/vi_VN/LC_MESSAGES/humanize.mo0000644000076500000000000000613400000000000023011 0ustar00hugowheel=S89HYx      *6"Ux             $ 2 > LX^gpx ( ,6;     / C U e q {      !                     + 8 D O [ e j o %u    -     - B F U  5 %1!96*032 "<,-  ;$#7(4+)&=8'/. :%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbillioneightfivefourmillionmillionninenowonequadrillionquadrillionsevensixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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 micro giây%d micro giây%d mili giây%d mili giây%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 và %s%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ỷtámnămbốn%(value)s triệu%(value)s triệuchínngay bây giờmột%(value)s triệu tỷ%(value)s triệu tỷbảysáunghìnnghìnbahôm nayngày mai%(value)s nghìn tỷ%(value)s nghìn tỷhaingày hôm quakhông././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/vi_VN/LC_MESSAGES/humanize.po0000644000076500000000000001541000000000000023011 0ustar00hugowheel# Vietnamese (Vietnam) 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "nghìn" msgstr[1] "nghìn" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "%(value)s triệu" msgstr[1] "%(value)s triệu" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "tỷ" msgstr[1] "tỷ" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "%(value)s nghìn tỷ" msgstr[1] "%(value)s nghìn tỷ" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "%(value)s triệu tỷ" msgstr[1] "%(value)s triệu tỷ" #: src/humanize/number.py:145 #, fuzzy msgid "quintillion" msgid_plural "quintillion" msgstr[0] "%(value)s tỷ tỷ" msgstr[1] "%(value)s tỷ tỷ" #: src/humanize/number.py:146 #, fuzzy msgid "sextillion" msgid_plural "sextillion" msgstr[0] "%(value)s sextillion" msgstr[1] "%(value)s sextillion" #: src/humanize/number.py:147 #, fuzzy msgid "septillion" msgid_plural "septillion" msgstr[0] "%(value)s septillion" msgstr[1] "%(value)s septillion" #: src/humanize/number.py:148 #, fuzzy msgid "octillion" msgid_plural "octillion" msgstr[0] "%(value)s octillion" msgstr[1] "%(value)s octillion" #: src/humanize/number.py:149 #, fuzzy msgid "nonillion" msgid_plural "nonillion" msgstr[0] "%(value)s nonillion" msgstr[1] "%(value)s nonillion" #: src/humanize/number.py:150 #, fuzzy msgid "decillion" msgid_plural "decillion" msgstr[0] "%(value)s décillion" msgstr[1] "%(value)s décillion" #: src/humanize/number.py:151 #, fuzzy msgid "googol" msgid_plural "googol" msgstr[0] "%(value)s gogol" msgstr[1] "%(value)s gogol" #: src/humanize/number.py:246 msgid "zero" msgstr "không" #: src/humanize/number.py:247 msgid "one" msgstr "một" #: src/humanize/number.py:248 msgid "two" msgstr "hai" #: src/humanize/number.py:249 msgid "three" msgstr "ba" #: src/humanize/number.py:250 msgid "four" msgstr "bốn" #: src/humanize/number.py:251 msgid "five" msgstr "năm" #: src/humanize/number.py:252 msgid "six" msgstr "sáu" #: src/humanize/number.py:253 msgid "seven" msgstr "bảy" #: src/humanize/number.py:254 msgid "eight" msgstr "tám" #: src/humanize/number.py:255 msgid "nine" msgstr "chín" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d micro giây" msgstr[1] "%d micro giây" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d mili giây" msgstr[1] "%d mili giây" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "ngay lúc này" #: src/humanize/time.py:147 msgid "a second" msgstr "một giây" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d giây" msgstr[1] "%d giây" #: src/humanize/time.py:151 msgid "a minute" msgstr "một phút" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d phút" msgstr[1] "%d phút" #: src/humanize/time.py:156 msgid "an hour" msgstr "một giờ" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d giờ" msgstr[1] "%d giờ" #: src/humanize/time.py:162 msgid "a day" msgstr "một ngày" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d ngày" msgstr[1] "%d ngày" #: src/humanize/time.py:169 msgid "a month" msgstr "một tháng" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d tháng" msgstr[1] "%d tháng" #: src/humanize/time.py:174 msgid "a year" msgstr "một năm" #: src/humanize/time.py:176 src/humanize/time.py:185 #, 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:179 msgid "1 year, 1 month" msgstr "1 năm 1 tháng" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d năm" msgstr[1] "%d năm" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "%s ngày tới" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s trước" #: src/humanize/time.py:221 msgid "now" msgstr "ngay bây giờ" #: src/humanize/time.py:244 msgid "today" msgstr "hôm nay" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "ngày mai" #: src/humanize/time.py:248 msgid "yesterday" msgstr "ngày hôm qua" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s và %s" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1530466 humanize-4.0.0/src/humanize/locale/zh_CN/0000755000076500000000000000000000000000000017023 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2419386 humanize-4.0.0/src/humanize/locale/zh_CN/LC_MESSAGES/0000755000076500000000000000000000000000000020610 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/zh_CN/LC_MESSAGES/humanize.mo0000644000076500000000000000570300000000000022772 0ustar00hugowheel?Y pq     &"Eh x             " . <HNW`hqx 7MSimsy ?   $ 0 9 B F J N R ^ x                           + 9 = K R ` d r          9!=$6123/;8 -?% , : 5+<&()>'.4" 70#*%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 now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayProject-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小时十亿十亿十沟十沟八五四古高尔古高尔百万百万九百穰百穰现在千秭千秭一万亿万亿百京百京秭秭七十垓十垓六三今天明天兆兆二昨天././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/zh_CN/LC_MESSAGES/humanize.po0000644000076500000000000001432700000000000022777 0ustar00hugowheel# 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: 2021-05-04 23:15+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:57 msgctxt "0 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "第" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "第" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "第" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "第" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "第" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "第" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "百万" msgstr[1] "百万" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "十亿" msgstr[1] "十亿" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "兆" msgstr[1] "兆" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "万亿" msgstr[1] "万亿" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "百京" msgstr[1] "百京" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "十垓" msgstr[1] "十垓" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "秭" msgstr[1] "秭" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "千秭" msgstr[1] "千秭" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "百穰" msgstr[1] "百穰" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "十沟" msgstr[1] "十沟" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "古高尔" msgstr[1] "古高尔" #: src/humanize/number.py:246 msgid "zero" msgstr "" #: src/humanize/number.py:247 msgid "one" msgstr "一" #: src/humanize/number.py:248 msgid "two" msgstr "二" #: src/humanize/number.py:249 msgid "three" msgstr "三" #: src/humanize/number.py:250 msgid "four" msgstr "四" #: src/humanize/number.py:251 msgid "five" msgstr "五" #: src/humanize/number.py:252 msgid "six" msgstr "六" #: src/humanize/number.py:253 msgid "seven" msgstr "七" #: src/humanize/number.py:254 msgid "eight" msgstr "八" #: src/humanize/number.py:255 msgid "nine" msgstr "九" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "" msgstr[1] "" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "" msgstr[1] "" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "一会儿" #: src/humanize/time.py:147 msgid "a second" msgstr "1秒" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d秒" msgstr[1] "%d秒" #: src/humanize/time.py:151 msgid "a minute" msgstr "1分" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d分" msgstr[1] "%d分" #: src/humanize/time.py:156 msgid "an hour" msgstr "1小时" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d小时" msgstr[1] "%d小时" #: src/humanize/time.py:162 msgid "a day" msgstr "1天" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d天" msgstr[1] "%d天" #: src/humanize/time.py:169 msgid "a month" msgstr "1月" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d月" msgstr[1] "%d月" #: src/humanize/time.py:174 msgid "a year" msgstr "1年" #: src/humanize/time.py:176 src/humanize/time.py:185 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "%d年" msgstr[1] "%d年" #: src/humanize/time.py:179 msgid "1 year, 1 month" msgstr "1年又1月" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d年" msgstr[1] "%d年" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "%s之后" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s之前" #: src/humanize/time.py:221 msgid "now" msgstr "现在" #: src/humanize/time.py:244 msgid "today" msgstr "今天" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "明天" #: src/humanize/time.py:248 msgid "yesterday" msgstr "昨天" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.1532986 humanize-4.0.0/src/humanize/locale/zh_HK/0000755000076500000000000000000000000000000017025 5ustar00hugowheel././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2434304 humanize-4.0.0/src/humanize/locale/zh_HK/LC_MESSAGES/0000755000076500000000000000000000000000000020612 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743556.0 humanize-4.0.0/src/humanize/locale/zh_HK/LC_MESSAGES/humanize.mo0000644000076500000000000000637300000000000023000 0ustar00hugowheelD<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l >q       * 6 @ J T X \ ` d %r                          ) 7 ; ? C W e i w ~             5<>+=6D94%2#)" !, 3:A 1*-;'/&0(@8B. C7 $ ?%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: 1.0 Report-Msgid-Bugs-To: PO-Revision-Date: 2016-11-14 23:02+0000 Last-Translator: Edward Ho Language-Team: Chinese (traditional) Language: zh_HK 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 月%d 秒%d 秒%d年%d年%s 之前%s 與 %s%s 之後第第第第%d 年%d 年1 年又 %d 個月1 年又 %d 個月1 年又 1 個月第第第第第第第第第第第第第第第第1 天1 分鐘一會1 月1 秒1 年1 小時十億十億十溝十溝八五四古高爾古高爾百萬百萬九百穰百穰現在千秭千秭一萬億萬億百京百京秭秭七十垓十垓六千千三今天明天兆兆二昨天零././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/locale/zh_HK/LC_MESSAGES/humanize.po0000644000076500000000000001453700000000000023004 0ustar00hugowheel# Traditional Chinese (China) translation for the project # Copyright (C) 2021 # This file is distributed under the same license as the PACKAGE package. # AZLisme , 2016. # Liwen SUN , 2019. # Edward Ho , 2021. # msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-05-04 23:15+0200\n" "PO-Revision-Date: 2016-11-14 23:02+0000\n" "Last-Translator: Edward Ho \n" "Language-Team: Chinese (traditional)\n" "Language: zh_HK\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:57 msgctxt "0 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:58 msgctxt "1 (male)" msgid "st" msgstr "第" #: src/humanize/number.py:59 msgctxt "2 (male)" msgid "nd" msgstr "第" #: src/humanize/number.py:60 msgctxt "3 (male)" msgid "rd" msgstr "第" #: src/humanize/number.py:61 msgctxt "4 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:62 msgctxt "5 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:63 msgctxt "6 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:64 msgctxt "7 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:65 msgctxt "8 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:66 msgctxt "9 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:70 msgctxt "0 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:71 msgctxt "1 (female)" msgid "st" msgstr "第" #: src/humanize/number.py:72 msgctxt "2 (female)" msgid "nd" msgstr "第" #: src/humanize/number.py:73 msgctxt "3 (female)" msgid "rd" msgstr "第" #: src/humanize/number.py:74 msgctxt "4 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:75 msgctxt "5 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:76 msgctxt "6 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:77 msgctxt "7 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:78 msgctxt "8 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:79 msgctxt "9 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:140 msgid "thousand" msgid_plural "thousand" msgstr[0] "千" msgstr[1] "千" #: src/humanize/number.py:141 msgid "million" msgid_plural "million" msgstr[0] "百萬" msgstr[1] "百萬" #: src/humanize/number.py:142 msgid "billion" msgid_plural "billion" msgstr[0] "十億" msgstr[1] "十億" #: src/humanize/number.py:143 msgid "trillion" msgid_plural "trillion" msgstr[0] "兆" msgstr[1] "兆" #: src/humanize/number.py:144 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "萬億" msgstr[1] "萬億" #: src/humanize/number.py:145 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "百京" msgstr[1] "百京" #: src/humanize/number.py:146 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "十垓" msgstr[1] "十垓" #: src/humanize/number.py:147 msgid "septillion" msgid_plural "septillion" msgstr[0] "秭" msgstr[1] "秭" #: src/humanize/number.py:148 msgid "octillion" msgid_plural "octillion" msgstr[0] "千秭" msgstr[1] "千秭" #: src/humanize/number.py:149 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "百穰" msgstr[1] "百穰" #: src/humanize/number.py:150 msgid "decillion" msgid_plural "decillion" msgstr[0] "十溝" msgstr[1] "十溝" #: src/humanize/number.py:151 msgid "googol" msgid_plural "googol" msgstr[0] "古高爾" msgstr[1] "古高爾" #: src/humanize/number.py:246 msgid "zero" msgstr "零" #: src/humanize/number.py:247 msgid "one" msgstr "一" #: src/humanize/number.py:248 msgid "two" msgstr "二" #: src/humanize/number.py:249 msgid "three" msgstr "三" #: src/humanize/number.py:250 msgid "four" msgstr "四" #: src/humanize/number.py:251 msgid "five" msgstr "五" #: src/humanize/number.py:252 msgid "six" msgstr "六" #: src/humanize/number.py:253 msgid "seven" msgstr "七" #: src/humanize/number.py:254 msgid "eight" msgstr "八" #: src/humanize/number.py:255 msgid "nine" msgstr "九" #: src/humanize/time.py:133 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d 微秒" msgstr[1] "%d 微秒" #: src/humanize/time.py:142 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d 毫秒" msgstr[1] "%d 毫秒" #: src/humanize/time.py:145 src/humanize/time.py:220 msgid "a moment" msgstr "一會" #: src/humanize/time.py:147 msgid "a second" msgstr "1 秒" #: src/humanize/time.py:149 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d 秒" msgstr[1] "%d 秒" #: src/humanize/time.py:151 msgid "a minute" msgstr "1 分鐘" #: src/humanize/time.py:154 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d 分鐘" msgstr[1] "%d 分鐘" #: src/humanize/time.py:156 msgid "an hour" msgstr "1 小時" #: src/humanize/time.py:159 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d 小時" msgstr[1] "%d 小時" #: src/humanize/time.py:162 msgid "a day" msgstr "1 天" #: src/humanize/time.py:164 src/humanize/time.py:167 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d 天" msgstr[1] "%d 天" #: src/humanize/time.py:169 msgid "a month" msgstr "1 月" #: src/humanize/time.py:171 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d 月" msgstr[1] "%d 月" #: src/humanize/time.py:174 msgid "a year" msgstr "1 年" #: src/humanize/time.py:176 src/humanize/time.py:185 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "%d 年" msgstr[1] "%d 年" #: src/humanize/time.py:179 msgid "1 year, 1 month" msgstr "1 年又 1 個月" #: src/humanize/time.py:182 #, 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:187 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d年" msgstr[1] "%d年" #: src/humanize/time.py:217 #, python-format msgid "%s from now" msgstr "%s 之後" #: src/humanize/time.py:217 #, python-format msgid "%s ago" msgstr "%s 之前" #: src/humanize/time.py:221 msgid "now" msgstr "現在" #: src/humanize/time.py:244 msgid "today" msgstr "今天" #: src/humanize/time.py:246 msgid "tomorrow" msgstr "明天" #: src/humanize/time.py:248 msgid "yesterday" msgstr "昨天" #: src/humanize/time.py:534 #, python-format msgid "%s and %s" msgstr "%s 與 %s" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/number.py0000644000076500000000000003010400000000000016423 0ustar00hugowheel#!/usr/bin/env python """Humanizing functions for numbers.""" import math import re from fractions import Fraction from .i18n import _gettext as _ from .i18n import _ngettext from .i18n import _ngettext_noop as NS_ from .i18n import _pgettext as P_ from .i18n import thousands_separator def ordinal(value, gender="male"): """Converts an integer to its ordinal as a string. For example, 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. Examples: ```pycon >>> ordinal(1) '1st' >>> ordinal(1002) '1002nd' >>> ordinal(103) '103rd' >>> ordinal(4) '4th' >>> ordinal(12) '12th' >>> ordinal(101) '101st' >>> ordinal(111) '111th' >>> ordinal("something else") 'something else' >>> ordinal(None) is None True ``` Args: value (int, str, float): Integer to convert. gender (str): Gender for translations. Accepts either "male" or "female". Returns: str: Ordinal string. """ try: value = int(value) except (TypeError, ValueError): return value if gender == "male": t = ( P_("0 (male)", "th"), P_("1 (male)", "st"), P_("2 (male)", "nd"), P_("3 (male)", "rd"), P_("4 (male)", "th"), P_("5 (male)", "th"), P_("6 (male)", "th"), P_("7 (male)", "th"), P_("8 (male)", "th"), P_("9 (male)", "th"), ) else: t = ( P_("0 (female)", "th"), P_("1 (female)", "st"), P_("2 (female)", "nd"), P_("3 (female)", "rd"), P_("4 (female)", "th"), P_("5 (female)", "th"), P_("6 (female)", "th"), P_("7 (female)", "th"), P_("8 (female)", "th"), P_("9 (female)", "th"), ) if value % 100 in (11, 12, 13): # special case return f"{value}{t[0]}" return f"{value}{t[value % 10]}" def intcomma(value, ndigits=None): """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. Examples: ```pycon >>> intcomma(100) '100' >>> intcomma("1000") '1,000' >>> intcomma(1_000_000) '1,000,000' >>> intcomma(1_234_567.25) '1,234,567.25' >>> intcomma(1234.5454545, 2) '1,234.55' >>> intcomma(14308.40, 1) '14,308.4' >>> intcomma(None) is None True ``` Args: value (int, float, str): Integer or float to convert. ndigits (int, None): Digits of precision for rounding after the decimal point. Returns: str: string containing commas every three digits. """ sep = thousands_separator() try: if isinstance(value, str): float(value.replace(sep, "")) else: float(value) except (TypeError, ValueError): return value if ndigits: orig = "{0:.{1}f}".format(value, ndigits) else: orig = str(value) new = re.sub(r"^(-?\d+)(\d{3})", rf"\g<1>{sep}\g<2>", orig) if orig == new: return new else: return intcomma(new) powers = [10**x for x in (3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 100)] human_powers = ( NS_("thousand", "thousand"), NS_("million", "million"), NS_("billion", "billion"), NS_("trillion", "trillion"), NS_("quadrillion", "quadrillion"), NS_("quintillion", "quintillion"), NS_("sextillion", "sextillion"), NS_("septillion", "septillion"), NS_("octillion", "octillion"), NS_("nonillion", "nonillion"), NS_("decillion", "decillion"), NS_("googol", "googol"), ) def intword(value, format="%.1f"): """Converts a large integer to a friendly text representation. Works best for numbers over 1 million. For example, 1_000_000 becomes "1.0 million", 1200000 becomes "1.2 million" and "1_200_000_000" becomes "1.2 billion". Supports up to decillion (33 digits) and googol (100 digits). Examples: ```pycon >>> intword("100") '100' >>> intword("12400") '12.4 thousand' >>> intword("1000000") '1.0 million' >>> intword(1_200_000_000) '1.2 billion' >>> intword(8100000000000000000000000000000000) '8.1 decillion' >>> intword(None) is None True >>> intword("1234000", "%0.3f") '1.234 million' ``` Args: value (int, float, str): Integer to convert. format (str): To change the number of decimal or general format of the number portion. Returns: str: Friendly text representation as a string, unless the value passed could not 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]) if float(format % chopped) == float(10**3): chopped = value / float(powers[ordinal]) singular, plural = human_powers[ordinal] return ( " ".join([format, _ngettext(singular, plural, math.ceil(chopped))]) ) % chopped else: singular, plural = human_powers[ordinal - 1] return ( " ".join([format, _ngettext(singular, plural, math.ceil(chopped))]) ) % chopped return str(value) def apnumber(value): """Converts an integer to Associated Press style. Examples: ```pycon >>> apnumber(0) 'zero' >>> apnumber(5) 'five' >>> apnumber(10) '10' >>> apnumber("7") 'seven' >>> apnumber("foo") 'foo' >>> apnumber(None) is None True ``` Args: value (int, float, str): Integer to convert. Returns: str: For numbers 0-9, the number spelled out. Otherwise, the number. 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 ( _("zero"), _("one"), _("two"), _("three"), _("four"), _("five"), _("six"), _("seven"), _("eight"), _("nine"), )[value] def fractional(value): """Convert to fractional number. 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 a whole number * or a mixed fraction Examples: ```pycon >>> fractional(0.3) '3/10' >>> fractional(1.3) '1 3/10' >>> fractional(float(1/3)) '1/3' >>> fractional(1) '1' >>> fractional("ten") 'ten' >>> fractional(None) is None True ``` Args: value (int, float, str): Integer to convert. Returns: str: Fractional number as a string. """ try: number = float(value) except (TypeError, ValueError): return value whole_number = int(number) frac = Fraction(number - whole_number).limit_denominator(1000) numerator = frac._numerator denominator = frac._denominator if whole_number and not numerator and denominator == 1: # this means that an integer was passed in # (or variants of that integer like 1.0000) return f"{whole_number:.0f}" elif not whole_number: return f"{numerator:.0f}/{denominator:.0f}" else: return f"{whole_number:.0f} {numerator:.0f}/{denominator:.0f}" def scientific(value, precision=2): """Return number in string scientific notation z.wq x 10ⁿ. Examples: ```pycon >>> scientific(float(0.3)) '3.00 x 10⁻¹' >>> scientific(int(500)) '5.00 x 10²' >>> scientific(-1000) '1.00 x 10⁻³' >>> scientific(1000, 1) '1.0 x 10³' >>> scientific(1000, 3) '1.000 x 10³' >>> scientific("99") '9.90 x 10¹' >>> scientific("foo") 'foo' >>> scientific(None) is None True ``` Args: value (int, float, str): Input number. precision (int): Number of decimal for first part of the number. Returns: str: Number in scientific notation z.wq x 10ⁿ. """ exponents = { "0": "⁰", "1": "¹", "2": "²", "3": "³", "4": "⁴", "5": "⁵", "6": "⁶", "7": "⁷", "8": "⁸", "9": "⁹", "+": "⁺", "-": "⁻", } negative = False try: if "-" in str(value): value = str(value).replace("-", "") negative = True if isinstance(value, str): value = float(value) fmt = "{:.%se}" % str(int(precision)) n = fmt.format(value) except (ValueError, TypeError): return value part1, part2 = n.split("e") if "-0" in part2: part2 = part2.replace("-0", "-") if "+0" in part2: part2 = part2.replace("+0", "") new_part2 = [] if negative: new_part2.append(exponents["-"]) for char in part2: new_part2.append(exponents[char]) final_str = part1 + " x 10" + "".join(new_part2) return final_str def clamp(value, format="{:}", floor=None, ceil=None, floor_token="<", ceil_token=">"): """Returns number with the specified format, clamped between floor and ceil. If the number is larger than ceil or smaller than floor, then the respective limit will be returned, formatted and prepended with a token specifying as such. Examples: ```pycon >>> clamp(123.456) '123.456' >>> clamp(0.0001, floor=0.01) '<0.01' >>> clamp(0.99, format="{:.0%}", ceil=0.99) '99%' >>> clamp(0.999, format="{:.0%}", ceil=0.99) '>99%' >>> clamp(1, format=intword, floor=1e6, floor_token="under ") 'under 1.0 million' >>> clamp(None) is None True ``` Args: value (int, float): Input number. format (str OR callable): Can either be a formatting string, or a callable function than receives value and returns a string. floor (int, float): Smallest value before clamping. ceil (int, float): Largest value before clamping. floor_token (str): If value is smaller than floor, token will be prepended to output. ceil_token (str): If value is larger than ceil, token will be prepended to output. Returns: str: Formatted number. The output is clamped between the indicated floor and ceil. If the number if larger than ceil or smaller than floor, the output will be prepended with a token indicating as such. """ if value is None: return None if floor is not None and value < floor: value = floor token = floor_token elif ceil is not None and value > ceil: value = ceil token = ceil_token else: token = "" if isinstance(format, str): return token + format.format(value) elif callable(format): return token + format(value) else: raise ValueError( "Invalid format. Must be either a valid formatting string, or a function " "that accepts value and returns a string." ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/src/humanize/time.py0000644000076500000000000004215300000000000016100 0ustar00hugowheel#!/usr/bin/env python """Time humanizing functions. These are largely borrowed from Django's `contrib.humanize`. """ import datetime as dt import math from enum import Enum from functools import total_ordering from .i18n import _gettext as _ from .i18n import _ngettext from .number import intcomma __all__ = [ "naturaldelta", "naturaltime", "naturalday", "naturaldate", "precisedelta", ] @total_ordering class Unit(Enum): MICROSECONDS = 0 MILLISECONDS = 1 SECONDS = 2 MINUTES = 3 HOURS = 4 DAYS = 5 MONTHS = 6 YEARS = 7 def __lt__(self, other): if self.__class__ is other.__class__: return self.value < other.value return NotImplemented def _now(): return dt.datetime.now() def _abs_timedelta(delta): """Return an "absolute" value for a timedelta, always representing a time distance. Args: delta (datetime.timedelta): Input timedelta. Returns: datetime.timedelta: Absolute timedelta. """ if delta.days < 0: now = _now() return now - (now + delta) return delta def _date_and_delta(value, *, now=None): """Turn a value into a date and a timedelta which represents how long ago it was. If that's not possible, return `(None, value)`. """ if not now: now = _now() if isinstance(value, dt.datetime): date = value delta = now - value elif isinstance(value, dt.timedelta): date = now - value delta = value else: try: value = int(value) delta = dt.timedelta(seconds=value) date = now - delta except (ValueError, TypeError): return None, value return date, _abs_timedelta(delta) def naturaldelta( value, months=True, minimum_unit="seconds", ) -> str: """Return a natural representation of a timedelta or number of seconds. This is similar to `naturaltime`, but does not add tense to the result. Args: value (datetime.timedelta or int): A timedelta or a number of seconds. months (bool): If `True`, then a number of months (based on 30.5 days) will be used for fuzziness between years. minimum_unit (str): The lowest unit that can be used. when (datetime.datetime): Removed in version 4.0; If you need to construct a timedelta, do it inline as the first argument. Returns: str (str or `value`): A natural representation of the amount of time elapsed unless `value` is not datetime.timedelta or cannot be converted to int. In that case, a `value` is returned unchanged. Raises: OverflowError: If `value` is too large to convert to datetime.timedelta. Examples Compare two timestamps in a custom local timezone:: import datetime as dt from dateutil.tz import gettz berlin = gettz("Europe/Berlin") now = dt.datetime.now(tz=berlin) later = now + dt.timedelta(minutes=30) assert naturaldelta(later - now) == "30 minutes" """ tmp = Unit[minimum_unit.upper()] if tmp not in (Unit.SECONDS, Unit.MILLISECONDS, Unit.MICROSECONDS): raise ValueError(f"Minimum unit '{minimum_unit}' not supported") minimum_unit = tmp if isinstance(value, dt.timedelta): delta = value else: try: value = int(value) delta = dt.timedelta(seconds=value) except (ValueError, TypeError): 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: if minimum_unit == Unit.MICROSECONDS and delta.microseconds < 1000: return ( _ngettext("%d microsecond", "%d microseconds", delta.microseconds) % delta.microseconds ) elif minimum_unit == Unit.MILLISECONDS or ( minimum_unit == Unit.MICROSECONDS and 1000 <= delta.microseconds < 1_000_000 ): milliseconds = delta.microseconds / 1000 return ( _ngettext("%d millisecond", "%d milliseconds", milliseconds) % milliseconds ) 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("%s year", "%s years", years) % intcomma(years) def naturaltime( value, future=False, months=True, minimum_unit="seconds", when=None, ) -> str: """Return a natural representation of a time in a resolution that makes sense. This is more or less compatible with Django's `naturaltime` filter. Args: value (datetime.datetime, int): A `datetime` or a number of seconds. future (bool): Ignored for `datetime`s, where the tense is always figured out based on the current time. For integers, the return value will be past tense by default, unless future is `True`. months (bool): If `True`, then a number of months (based on 30.5 days) will be used for fuzziness between years. minimum_unit (str): The lowest unit that can be used. when (datetime.datetime): Point in time relative to which _value_ is interpreted. Defaults to the current time in the local timezone. Returns: str: A natural representation of the input in a resolution that makes sense. """ now = when or _now() date, delta = _date_and_delta(value, now=now) if date is None: return value # determine tense by value only if datetime/timedelta were passed if isinstance(value, (dt.datetime, dt.timedelta)): future = date > now ago = _("%s from now") if future else _("%s ago") delta = naturaldelta(delta, months, minimum_unit) if delta == _("a moment"): return _("now") return ago % delta def naturalday(value, format="%b %d") -> str: """Return a natural day. For date values that are tomorrow, today or yesterday compared to present day return representing string. Otherwise, return a string formatted according to `format`. """ try: value = dt.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 - dt.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) -> str: """Like `naturalday`, but append a year for dates more than ~five months away.""" try: value = dt.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 - dt.date.today()) if delta.days >= 5 * 365 / 12: return naturalday(value, "%b %d %Y") return naturalday(value) def _quotient_and_remainder(value, divisor, unit, minimum_unit, suppress): """Divide `value` by `divisor` returning the quotient and remainder. If `unit` is `minimum_unit`, makes the quotient a float number and the remainder will be zero. The rational is that if `unit` is the unit of the quotient, we cannot represent the remainder because it would require a unit smaller than the `minimum_unit`. >>> from humanize.time import _quotient_and_remainder, Unit >>> _quotient_and_remainder(36, 24, Unit.DAYS, Unit.DAYS, []) (1.5, 0) If unit is in `suppress`, the quotient will be zero and the remainder will be the initial value. The idea is that if we cannot use `unit`, we are forced to use a lower unit so we cannot do the division. >>> _quotient_and_remainder(36, 24, Unit.DAYS, Unit.HOURS, [Unit.DAYS]) (0, 36) In other case return quotient and remainder as `divmod` would do it. >>> _quotient_and_remainder(36, 24, Unit.DAYS, Unit.HOURS, []) (1, 12) """ if unit == minimum_unit: return (value / divisor, 0) elif unit in suppress: return (0, value) else: return divmod(value, divisor) def _carry(value1, value2, ratio, unit, min_unit, suppress): """Return a tuple with two values. If the unit is in `suppress`, multiply `value1` by `ratio` and add it to `value2` (carry to right). The idea is that if we cannot represent `value1` we need to represent it in a lower unit. >>> from humanize.time import _carry, Unit >>> _carry(2, 6, 24, Unit.DAYS, Unit.SECONDS, [Unit.DAYS]) (0, 54) If the unit is the minimum unit, `value2` is divided by `ratio` and added to `value1` (carry to left). We assume that `value2` has a lower unit so we need to carry it to `value1`. >>> _carry(2, 6, 24, Unit.DAYS, Unit.DAYS, []) (2.25, 0) Otherwise, just return the same input: >>> _carry(2, 6, 24, Unit.DAYS, Unit.SECONDS, []) (2, 6) """ if unit == min_unit: return (value1 + value2 / ratio, 0) elif unit in suppress: return (0, value2 + value1 * ratio) else: return (value1, value2) def _suitable_minimum_unit(min_unit, suppress): """Return a minimum unit suitable that is not suppressed. If not suppressed, return the same unit: >>> from humanize.time import _suitable_minimum_unit, Unit >>> _suitable_minimum_unit(Unit.HOURS, []).name 'HOURS' But if suppressed, find a unit greather than the original one that is not suppressed: >>> _suitable_minimum_unit(Unit.HOURS, [Unit.HOURS]).name 'DAYS' >>> _suitable_minimum_unit(Unit.HOURS, [Unit.HOURS, Unit.DAYS]).name 'MONTHS' """ if min_unit in suppress: for unit in Unit: if unit > min_unit and unit not in suppress: return unit raise ValueError( "Minimum unit is suppressed and no suitable replacement was found" ) return min_unit def _suppress_lower_units(min_unit, suppress): """Extend suppressed units (if any) with all units lower than the minimum unit. >>> from humanize.time import _suppress_lower_units, Unit >>> [x.name for x in sorted(_suppress_lower_units(Unit.SECONDS, [Unit.DAYS]))] ['MICROSECONDS', 'MILLISECONDS', 'DAYS'] """ suppress = set(suppress) for u in Unit: if u == min_unit: break suppress.add(u) return suppress def precisedelta(value, minimum_unit="seconds", suppress=(), format="%0.2f") -> str: """Return a precise representation of a timedelta. ```pycon >>> import datetime as dt >>> from humanize.time import precisedelta >>> delta = dt.timedelta(seconds=3633, days=2, microseconds=123000) >>> precisedelta(delta) '2 days, 1 hour and 33.12 seconds' ``` A custom `format` can be specified to control how the fractional part is represented: ```pycon >>> precisedelta(delta, format="%0.4f") '2 days, 1 hour and 33.1230 seconds' ``` Instead, the `minimum_unit` can be changed to have a better resolution; the function will still readjust the unit to use the greatest of the units that does not lose precision. For example setting microseconds but still representing the date with milliseconds: ```pycon >>> precisedelta(delta, minimum_unit="microseconds") '2 days, 1 hour, 33 seconds and 123 milliseconds' ``` If desired, some units can be suppressed: you will not see them represented and the time of the other units will be adjusted to keep representing the same timedelta: ```pycon >>> precisedelta(delta, suppress=['days']) '49 hours and 33.12 seconds' ``` Note that microseconds precision is lost if the seconds and all the units below are suppressed: ```pycon >>> delta = dt.timedelta(seconds=90, microseconds=100) >>> precisedelta(delta, suppress=['seconds', 'milliseconds', 'microseconds']) '1.50 minutes' ``` If the delta is too small to be represented with the minimum unit, a value of zero will be returned: ```pycon >>> delta = dt.timedelta(seconds=1) >>> precisedelta(delta, minimum_unit="minutes") '0.02 minutes' >>> delta = dt.timedelta(seconds=0.1) >>> precisedelta(delta, minimum_unit="minutes") '0 minutes' ``` """ date, delta = _date_and_delta(value) if date is None: return value suppress = [Unit[s.upper()] for s in suppress] # Find a suitable minimum unit (it can be greater the one that the # user gave us if it is suppressed). min_unit = Unit[minimum_unit.upper()] min_unit = _suitable_minimum_unit(min_unit, suppress) del minimum_unit # Expand the suppressed units list/set to include all the units # that are below the minimum unit suppress = _suppress_lower_units(min_unit, suppress) # handy aliases days = delta.days secs = delta.seconds usecs = delta.microseconds MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, MONTHS, YEARS = list( Unit ) # Given DAYS compute YEARS and the remainder of DAYS as follows: # if YEARS is the minimum unit, we cannot use DAYS so # we will use a float for YEARS and 0 for DAYS: # years, days = years/days, 0 # # if YEARS is suppressed, use DAYS: # years, days = 0, days # # otherwise: # years, days = divmod(years, days) # # The same applies for months, hours, minutes and milliseconds below years, days = _quotient_and_remainder(days, 365, YEARS, min_unit, suppress) months, days = _quotient_and_remainder(days, 30.5, MONTHS, min_unit, suppress) # If DAYS is not in suppress, we can represent the days but # if it is a suppressed unit, we need to carry it to a lower unit, # seconds in this case. # # The same applies for secs and usecs below days, secs = _carry(days, secs, 24 * 3600, DAYS, min_unit, suppress) hours, secs = _quotient_and_remainder(secs, 3600, HOURS, min_unit, suppress) minutes, secs = _quotient_and_remainder(secs, 60, MINUTES, min_unit, suppress) secs, usecs = _carry(secs, usecs, 1e6, SECONDS, min_unit, suppress) msecs, usecs = _quotient_and_remainder( usecs, 1000, MILLISECONDS, min_unit, suppress ) # if _unused != 0 we had lost some precision usecs, _unused = _carry(usecs, 0, 1, MICROSECONDS, min_unit, suppress) fmts = [ ("%d year", "%d years", years), ("%d month", "%d months", months), ("%d day", "%d days", days), ("%d hour", "%d hours", hours), ("%d minute", "%d minutes", minutes), ("%d second", "%d seconds", secs), ("%d millisecond", "%d milliseconds", msecs), ("%d microsecond", "%d microseconds", usecs), ] texts = [] for unit, fmt in zip(reversed(Unit), fmts): singular_txt, plural_txt, value = fmt if value > 0 or (not texts and unit == min_unit): fmt_txt = _ngettext(singular_txt, plural_txt, value) if unit == min_unit and math.modf(value)[0] > 0: fmt_txt = fmt_txt.replace("%d", format) elif unit == YEARS: fmt_txt = fmt_txt.replace("%d", "%s") texts.append(fmt_txt % intcomma(value)) continue texts.append(fmt_txt % value) if unit == min_unit: break if len(texts) == 1: return texts[0] head = ", ".join(texts[:-1]) tail = texts[-1] return _("%s and %s") % (head, tail) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2012894 humanize-4.0.0/src/humanize.egg-info/0000755000076500000000000000000000000000000016255 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743744.0 humanize-4.0.0/src/humanize.egg-info/PKG-INFO0000644000076500000000000001623700000000000017363 0ustar00hugowheelMetadata-Version: 2.1 Name: humanize Version: 4.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 Project-URL: Source, https://github.com/jmoiron/humanize Project-URL: Issue tracker, https://github.com/jmoiron/humanize/issues Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-humanize?utm_source=pypi-humanize&utm_medium=pypi Project-URL: Documentation, https://python-humanize.readthedocs.io/ Project-URL: Release notes, https://github.com/jmoiron/humanize/releases 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 :: 3 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Text Processing Classifier: Topic :: Text Processing :: General Requires-Python: >=3.7 Description-Content-Type: text/markdown Provides-Extra: tests License-File: LICENCE # 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/) [![Documentation Status](https://readthedocs.org/projects/python-humanize/badge/?version=latest)](https://python-humanize.readthedocs.io/en/latest/?badge=latest) [![PyPI downloads](https://img.shields.io/pypi/dm/humanize.svg)](https://pypistats.org/packages/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)](LICENCE) [![Tidelift](https://tidelift.com/badges/package/pypi/humanize)](https://tidelift.com/subscription/pkg/pypi-humanize?utm_source=pypi-humanize&utm_medium=badge) 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 is localized to: * Bengali * Brazilian Portuguese * Catalan * Danish * Dutch * European Portuguese * Finnish * French * German * Indonesian * Italian * Japanese * Korean * Persian * Polish * Russian * Simplified Chinese * Slovak * Slovenian * Spanish * Swedish * Turkish * Ukrainian * Vietnamese ## API reference [https://python-humanize.readthedocs.io](https://python-humanize.readthedocs.io) ## 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 humanize >>> import datetime as dt >>> humanize.naturalday(dt.datetime.now()) 'today' >>> humanize.naturaldelta(dt.timedelta(seconds=1001)) '16 minutes' >>> humanize.naturalday(dt.datetime.now() - dt.timedelta(days=1)) 'yesterday' >>> humanize.naturalday(dt.date(2007, 6, 5)) 'Jun 05' >>> humanize.naturaldate(dt.date(2007, 6, 5)) 'Jun 05 2007' >>> humanize.naturaltime(dt.datetime.now() - dt.timedelta(seconds=1)) 'a second ago' >>> humanize.naturaltime(dt.datetime.now() - dt.timedelta(seconds=3600)) 'an hour ago' ``` ### Precise time delta ```pycon >>> import humanize >>> import datetime as dt >>> delta = dt.timedelta(seconds=3633, days=2, microseconds=123000) >>> humanize.precisedelta(delta) '2 days, 1 hour and 33.12 seconds' >>> humanize.precisedelta(delta, minimum_unit="microseconds") '2 days, 1 hour, 33 seconds and 123 milliseconds' >>> humanize.precisedelta(delta, suppress=["days"], format="%0.4f") '49 hours and 33.1230 seconds' ``` #### Smaller units If seconds are too large, set `minimum_unit` to milliseconds or microseconds: ```pycon >>> import humanize >>> import datetime as dt >>> humanize.naturaldelta(dt.timedelta(seconds=2)) '2 seconds' ``` ```pycon >>> delta = dt.timedelta(milliseconds=4) >>> humanize.naturaldelta(delta) 'a moment' >>> humanize.naturaldelta(delta, minimum_unit="milliseconds") '4 milliseconds' >>> humanize.naturaldelta(delta, minimum_unit="microseconds") '4 milliseconds' ``` ```pycon >>> humanize.naturaltime(delta) 'now' >>> humanize.naturaltime(delta, minimum_unit="milliseconds") '4 milliseconds ago' >>> humanize.naturaltime(delta, minimum_unit="microseconds") '4 milliseconds ago' ``` ### File size humanization ```pycon >>> import humanize >>> humanize.naturalsize(1_000_000) '1.0 MB' >>> humanize.naturalsize(1_000_000, binary=True) '976.6 KiB' >>> humanize.naturalsize(1_000_000, gnu=True) '976.6K' ``` ### Human-readable floating point numbers ```pycon >>> import humanize >>> humanize.fractional(1/3) '1/3' >>> humanize.fractional(1.5) '1 1/2' >>> humanize.fractional(0.3) '3/10' >>> humanize.fractional(0.333) '333/1000' >>> humanize.fractional(1) '1' ``` ### Scientific notation ```pycon >>> import humanize >>> humanize.scientific(0.3) '3.00 x 10⁻¹' >>> humanize.scientific(500) '5.00 x 10²' >>> humanize.scientific("20000") '2.00 x 10⁴' >>> humanize.scientific(1**10) '1.00 x 10⁰' >>> humanize.scientific(1**10, precision=1) '1.0 x 10⁰' >>> humanize.scientific(1**10, precision=0) '1 x 10⁰' ``` ## Localization How to change locale at runtime: ```pycon >>> import humanize >>> import datetime as dt >>> humanize.naturaltime(dt.timedelta(seconds=3)) '3 seconds ago' >>> _t = humanize.i18n.activate("ru_RU") >>> humanize.naturaltime(dt.timedelta(seconds=3)) '3 секунды назад' >>> humanize.i18n.deactivate() >>> humanize.naturaltime(dt.timedelta(seconds=3)) '3 seconds ago' ``` You can pass additional parameter `path` to `activate` to specify a path to search locales in. ```pycon >>> import humanize >>> humanize.i18n.activate("xx_XX") <...> FileNotFoundError: [Errno 2] No translation file found for domain: 'humanize' >>> humanize.i18n.activate("pt_BR", path="path/to/my/own/translation/") ``` How to add new phrases to existing locale files: ```console $ xgettext --from-code=UTF-8 -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 ``` 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. List the language at the top of this README. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743744.0 humanize-4.0.0/src/humanize.egg-info/SOURCES.txt0000644000076500000000000000674700000000000020157 0ustar00hugowheel.gitignore .pre-commit-config.yaml .readthedocs.yml LICENCE MANIFEST.in README.md RELEASING.md mkdocs.yml pyproject.toml setup.cfg setup.py tox.ini .github/CONTRIBUTING.md .github/FUNDING.md .github/ISSUE_TEMPLATE.md .github/PULL_REQUEST_TEMPLATE.md .github/SECURITY.md .github/labels.yml .github/release-drafter.yml .github/workflows/docs.yml .github/workflows/labels.yml .github/workflows/lint.yml .github/workflows/release-drafter.yml .github/workflows/test.yml docs/filesize.md docs/i18n.md docs/index.md docs/number.md docs/requirements.txt docs/time.md scripts/generate-translation-binaries.sh scripts/update-translations.sh src/humanize/__init__.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/bn_BD/LC_MESSAGES/humanize.mo src/humanize/locale/bn_BD/LC_MESSAGES/humanize.po src/humanize/locale/ca_ES/LC_MESSAGES/humanize.mo src/humanize/locale/ca_ES/LC_MESSAGES/humanize.po src/humanize/locale/da_DK/LC_MESSAGES/humanize.mo src/humanize/locale/da_DK/LC_MESSAGES/humanize.po src/humanize/locale/de_DE/LC_MESSAGES/humanize.mo src/humanize/locale/de_DE/LC_MESSAGES/humanize.po src/humanize/locale/es_ES/LC_MESSAGES/humanize.mo src/humanize/locale/es_ES/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/pl_PL/LC_MESSAGES/humanize.mo src/humanize/locale/pl_PL/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/pt_PT/LC_MESSAGES/humanize.mo src/humanize/locale/pt_PT/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/sl_SI/LC_MESSAGES/humanize.mo src/humanize/locale/sl_SI/LC_MESSAGES/humanize.po src/humanize/locale/sv_SE/LC_MESSAGES/humanize.mo src/humanize/locale/sv_SE/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/uk_UA/LC_MESSAGES/humanize.mo src/humanize/locale/uk_UA/LC_MESSAGES/humanize.po src/humanize/locale/vi_VN/LC_MESSAGES/humanize.mo src/humanize/locale/vi_VN/LC_MESSAGES/humanize.po src/humanize/locale/zh_CN/LC_MESSAGES/humanize.mo src/humanize/locale/zh_CN/LC_MESSAGES/humanize.po src/humanize/locale/zh_HK/LC_MESSAGES/humanize.mo src/humanize/locale/zh_HK/LC_MESSAGES/humanize.po tests/__init__.py tests/test_filesize.py tests/test_i18n.py tests/test_number.py tests/test_time.py././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743744.0 humanize-4.0.0/src/humanize.egg-info/dependency_links.txt0000644000076500000000000000000100000000000022323 0ustar00hugowheel ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743577.0 humanize-4.0.0/src/humanize.egg-info/not-zip-safe0000644000076500000000000000000100000000000020503 0ustar00hugowheel ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743744.0 humanize-4.0.0/src/humanize.egg-info/requires.txt0000644000076500000000000000012300000000000020651 0ustar00hugowheel [:python_version < "3.8"] importlib-metadata [tests] freezegun pytest pytest-cov ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743744.0 humanize-4.0.0/src/humanize.egg-info/top_level.txt0000644000076500000000000000001100000000000020777 0ustar00hugowheelhumanize ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644743744.2477808 humanize-4.0.0/tests/0000755000076500000000000000000000000000000013316 5ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/tests/__init__.py0000644000076500000000000000000000000000000015415 0ustar00hugowheel././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/tests/test_filesize.py0000644000076500000000000000227600000000000016550 0ustar00hugowheel#!/usr/bin/env python """Tests for filesize humanizing.""" import pytest import humanize @pytest.mark.parametrize( "test_args, expected", [ ([300], "300 Bytes"), ([3000], "3.0 kB"), ([3000000], "3.0 MB"), ([3000000000], "3.0 GB"), ([3000000000000], "3.0 TB"), ([300, True], "300 Bytes"), ([3000, True], "2.9 KiB"), ([3000000, True], "2.9 MiB"), ([300, False, True], "300B"), ([3000, False, True], "2.9K"), ([3000000, False, True], "2.9M"), ([1024, False, True], "1.0K"), ([10**26 * 30, False, True], "2481.5Y"), ([10**26 * 30, True], "2481.5 YiB"), ([10**26 * 30], "3000.0 YB"), ([1, False, False], "1 Byte"), ([3141592, False, False, "%.2f"], "3.14 MB"), ([3000, False, True, "%.3f"], "2.930K"), ([3000000000, False, True, "%.0f"], "3G"), ([10**26 * 30, True, False, "%.3f"], "2481.542 YiB"), ], ) def test_naturalsize(test_args, expected): assert humanize.naturalsize(*test_args) == expected args_with_negative = test_args args_with_negative[0] *= -1 assert humanize.naturalsize(*args_with_negative) == "-" + expected ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/tests/test_i18n.py0000644000076500000000000001010300000000000015501 0ustar00hugowheel"""Internationalisation tests.""" import datetime as dt import importlib import pytest import humanize def test_i18n(): three_seconds = dt.timedelta(seconds=3) one_min_three_seconds = dt.timedelta(milliseconds=67_000) assert humanize.naturaltime(three_seconds) == "3 seconds ago" assert humanize.ordinal(5) == "5th" assert humanize.precisedelta(one_min_three_seconds) == "1 minute and 7 seconds" try: humanize.i18n.activate("ru_RU") assert humanize.naturaltime(three_seconds) == "3 секунды назад" assert humanize.ordinal(5) == "5ый" assert humanize.precisedelta(one_min_three_seconds) == "1 минута и 7 секунд" except FileNotFoundError: pytest.skip("Generate .mo with scripts/generate-translation-binaries.sh") finally: humanize.i18n.deactivate() assert humanize.naturaltime(three_seconds) == "3 seconds ago" assert humanize.ordinal(5) == "5th" assert humanize.precisedelta(one_min_three_seconds) == "1 minute and 7 seconds" def test_intcomma(): number = 10_000_000 assert humanize.intcomma(number) == "10,000,000" try: humanize.i18n.activate("fr_FR") assert humanize.intcomma(number) == "10 000 000" except FileNotFoundError: pytest.skip("Generate .mo with scripts/generate-translation-binaries.sh") finally: humanize.i18n.deactivate() assert humanize.intcomma(number) == "10,000,000" @pytest.mark.parametrize( ("locale", "number", "expected_result"), ( ("es_ES", 1000000, "1.0 millón"), ("es_ES", 3500000, "3.5 millones"), ("es_ES", 1000000000, "1.0 billón"), ("es_ES", 1200000000, "1.2 billones"), ("es_ES", 1000000000000, "1.0 trillón"), ("es_ES", 6700000000000, "6.7 trillones"), ), ) def test_intword_plurals(locale, number, expected_result): try: humanize.i18n.activate(locale) except FileNotFoundError: pytest.skip("Generate .mo with scripts/generate-translation-binaries.sh") else: assert humanize.intword(number) == expected_result finally: humanize.i18n.deactivate() @pytest.mark.parametrize( ("locale", "number", "gender", "expected_result"), ( ("fr_FR", 1, "male", "1er"), ("fr_FR", 1, "female", "1ère"), ("fr_FR", 2, "male", "2e"), ("es_ES", 1, "male", "1º"), ("es_ES", 5, "female", "5ª"), ("it_IT", 3, "male", "3º"), ("it_IT", 8, "female", "8ª"), ), ) def test_ordinal_genders(locale, number, gender, expected_result): try: humanize.i18n.activate(locale) except FileNotFoundError: pytest.skip("Generate .mo with scripts/generate-translation-binaries.sh") else: assert humanize.ordinal(number, gender=gender) == expected_result finally: humanize.i18n.deactivate() def test_default_locale_path_defined__file__(): i18n = importlib.import_module("humanize.i18n") assert i18n._get_default_locale_path() is not None def test_default_locale_path_null__file__(): i18n = importlib.import_module("humanize.i18n") i18n.__file__ = None assert i18n._get_default_locale_path() is None def test_default_locale_path_undefined__file__(): i18n = importlib.import_module("humanize.i18n") del i18n.__file__ i18n._get_default_locale_path() is None class TestActivate: expected_msg = ( "Humanize cannot determinate the default location of the" " 'locale' folder. You need to pass the path explicitly." ) def test_default_locale_path_null__file__(self): i18n = importlib.import_module("humanize.i18n") i18n.__file__ = None with pytest.raises(Exception) as excinfo: i18n.activate("ru_RU") assert str(excinfo.value) == self.expected_msg def test_default_locale_path_undefined__file__(self): i18n = importlib.import_module("humanize.i18n") del i18n.__file__ with pytest.raises(Exception) as excinfo: i18n.activate("ru_RU") assert str(excinfo.value) == self.expected_msg ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/tests/test_number.py0000644000076500000000000001130400000000000016216 0ustar00hugowheel"""Number tests.""" import pytest import humanize from humanize import number @pytest.mark.parametrize( "test_input, expected", [ ("1", "1st"), ("2", "2nd"), ("3", "3rd"), ("4", "4th"), ("11", "11th"), ("12", "12th"), ("13", "13th"), ("101", "101st"), ("102", "102nd"), ("103", "103rd"), ("111", "111th"), ("something else", "something else"), (None, None), ], ) def test_ordinal(test_input, expected): assert humanize.ordinal(test_input) == expected @pytest.mark.parametrize( "test_args, expected", [ ([100], "100"), ([1000], "1,000"), ([10123], "10,123"), ([10311], "10,311"), ([1_000_000], "1,000,000"), ([1_234_567.25], "1,234,567.25"), (["100"], "100"), (["1000"], "1,000"), (["10123"], "10,123"), (["10311"], "10,311"), (["1000000"], "1,000,000"), (["1234567.1234567"], "1,234,567.1234567"), ([None], None), ([14308.40], "14,308.4"), ([14308.40, None], "14,308.4"), ([14308.40, 1], "14,308.4"), ([14308.40, 2], "14,308.40"), ([14308.40, 3], "14,308.400"), ([1234.5454545], "1,234.5454545"), ([1234.5454545, None], "1,234.5454545"), ([1234.5454545, 1], "1,234.5"), ([1234.5454545, 2], "1,234.55"), ([1234.5454545, 3], "1,234.545"), ([1234.5454545, 10], "1,234.5454545000"), ], ) def test_intcomma(test_args, expected): assert humanize.intcomma(*test_args) == expected def test_intword_powers(): # make sure that powers & human_powers have the same number of items assert len(number.powers) == len(number.human_powers) @pytest.mark.parametrize( "test_args, expected", [ (["100"], "100"), (["1000"], "1.0 thousand"), (["12400"], "12.4 thousand"), (["12490"], "12.5 thousand"), (["1000000"], "1.0 million"), (["1200000"], "1.2 million"), (["1290000"], "1.3 million"), (["999999999"], "1.0 billion"), (["1000000000"], "1.0 billion"), (["2000000000"], "2.0 billion"), (["999999999999"], "1.0 trillion"), (["1000000000000"], "1.0 trillion"), (["6000000000000"], "6.0 trillion"), (["999999999999999"], "1.0 quadrillion"), (["1000000000000000"], "1.0 quadrillion"), (["1300000000000000"], "1.3 quadrillion"), (["3500000000000000000000"], "3.5 sextillion"), (["8100000000000000000000000000000000"], "8.1 decillion"), ([None], None), (["1230000", "%0.2f"], "1.23 million"), ([10**101], "1" + "0" * 101), ], ) def test_intword(test_args, expected): assert humanize.intword(*test_args) == expected @pytest.mark.parametrize( "test_input, expected", [ (0, "zero"), (1, "one"), (2, "two"), (4, "four"), (5, "five"), (9, "nine"), (10, "10"), ("7", "seven"), (None, None), ], ) def test_apnumber(test_input, expected): assert humanize.apnumber(test_input) == expected @pytest.mark.parametrize( "test_input, expected", [ (1, "1"), (2.0, "2"), (4.0 / 3.0, "1 1/3"), (5.0 / 6.0, "5/6"), ("7", "7"), ("8.9", "8 9/10"), ("ten", "ten"), (None, None), (1 / 3, "1/3"), (1.5, "1 1/2"), (0.3, "3/10"), (0.333, "333/1000"), ], ) def test_fractional(test_input, expected): assert humanize.fractional(test_input) == expected @pytest.mark.parametrize( "test_args, expected", [ ([1000], "1.00 x 10³"), ([-1000], "1.00 x 10⁻³"), ([5.5], "5.50 x 10⁰"), ([5781651000], "5.78 x 10⁹"), (["1000"], "1.00 x 10³"), (["99"], "9.90 x 10¹"), ([float(0.3)], "3.00 x 10⁻¹"), (["foo"], "foo"), ([None], None), ([1000, 1], "1.0 x 10³"), ([float(0.3), 1], "3.0 x 10⁻¹"), ([1000, 0], "1 x 10³"), ([float(0.3), 0], "3 x 10⁻¹"), ], ) def test_scientific(test_args, expected): assert humanize.scientific(*test_args) == expected @pytest.mark.parametrize( "test_args, expected", [ ([1], "1"), ([None], None), ([0.0001, "{:.0%}"], "0%"), ([0.0001, "{:.0%}", 0.01], "<1%"), ([0.9999, "{:.0%}", None, 0.99], ">99%"), ([0.0001, "{:.0%}", 0.01, None, "under ", None], "under 1%"), ([0.9999, "{:.0%}", None, 0.99, None, "above "], "above 99%"), ([1, humanize.intword, 1e6, None, "under "], "under 1.0 million"), ], ) def test_clamp(test_args, expected): assert humanize.clamp(*test_args) == expected ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/tests/test_time.py0000644000076500000000000005422400000000000015674 0ustar00hugowheel"""Tests for time humanizing.""" import datetime as dt import pytest from freezegun import freeze_time import humanize from humanize import time ONE_DAY_DELTA = dt.timedelta(days=1) # In seconds ONE_MICROSECOND = 1 / 1000000 FOUR_MICROSECONDS = 4 / 1000000 ONE_MILLISECOND = 1 / 1000 FOUR_MILLISECONDS = 4 / 1000 MICROSECONDS_101_943 = 101943 / 1000000 # 101.94 milliseconds MILLISECONDS_1_337 = 1337 / 1000 # 1.337 seconds ONE_HOUR = 3600 ONE_DAY = 24 * ONE_HOUR ONE_YEAR = 365.25 * ONE_DAY with freeze_time("2020-02-02"): NOW = dt.datetime.now() NOW_UTC = dt.datetime.now(tz=dt.timezone.utc) NOW_UTC_PLUS_01_00 = dt.datetime.now(tz=dt.timezone(offset=dt.timedelta(hours=1))) TODAY = dt.date.today() TOMORROW = TODAY + ONE_DAY_DELTA YESTERDAY = TODAY - ONE_DAY_DELTA class FakeDate: 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) def assertEqualDatetime(dt1, dt2): assert (dt1 - dt2).seconds == 0 def assertEqualTimedelta(td1, td2): assert td1.days == td2.days assert td1.seconds == td2.seconds # These are not considered "public" interfaces, but require tests anyway. def test_date_and_delta(): now = dt.datetime.now() td = dt.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): date, d = time._date_and_delta(arg) assertEqualDatetime(date, result[0]) assertEqualTimedelta(d, result[1]) assert time._date_and_delta("NaN") == (None, "NaN") # Tests for the public interface of humanize.time def nd_nomonths(d): return humanize.naturaldelta(d, months=False) @pytest.mark.parametrize( "test_input, expected", [ (dt.timedelta(days=7), "7 days"), (dt.timedelta(days=31), "31 days"), (dt.timedelta(days=230), "230 days"), (dt.timedelta(days=400), "1 year, 35 days"), ], ) def test_naturaldelta_nomonths(test_input, expected): assert nd_nomonths(test_input) == expected @pytest.mark.parametrize( "test_input, expected", [ (0, "a moment"), (1, "a second"), (30, "30 seconds"), (dt.timedelta(minutes=1, seconds=30), "a minute"), (dt.timedelta(minutes=2), "2 minutes"), (dt.timedelta(hours=1, minutes=30, seconds=30), "an hour"), (dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours"), (dt.timedelta(days=1), "a day"), (dt.timedelta(days=500), "1 year, 4 months"), (dt.timedelta(days=365 * 2 + 35), "2 years"), (dt.timedelta(seconds=1), "a second"), (dt.timedelta(seconds=30), "30 seconds"), (dt.timedelta(minutes=1, seconds=30), "a minute"), (dt.timedelta(minutes=2), "2 minutes"), (dt.timedelta(hours=1, minutes=30, seconds=30), "an hour"), (dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours"), (dt.timedelta(days=1), "a day"), (dt.timedelta(days=500), "1 year, 4 months"), (dt.timedelta(days=365 * 2 + 35), "2 years"), # regression tests for bugs in post-release humanize (dt.timedelta(days=10000), "27 years"), (dt.timedelta(days=365 + 35), "1 year, 1 month"), (30, "30 seconds"), (dt.timedelta(days=365 * 2 + 65), "2 years"), (dt.timedelta(days=365 + 4), "1 year, 4 days"), (dt.timedelta(days=35), "a month"), (dt.timedelta(days=65), "2 months"), (dt.timedelta(days=9), "9 days"), (dt.timedelta(days=365), "a year"), (dt.timedelta(days=365 * 1_141), "1,141 years"), ("NaN", "NaN"), # Returns non-numbers unchanged. # largest possible timedelta (dt.timedelta(days=999_999_999), "2,739,726 years"), ], ) def test_naturaldelta(test_input, expected): assert humanize.naturaldelta(test_input) == expected @freeze_time("2020-02-02") @pytest.mark.parametrize( "test_input, expected", [ (NOW, "now"), (NOW - dt.timedelta(seconds=1), "a second ago"), (NOW - dt.timedelta(seconds=30), "30 seconds ago"), (NOW - dt.timedelta(minutes=1, seconds=30), "a minute ago"), (NOW - dt.timedelta(minutes=2), "2 minutes ago"), (NOW - dt.timedelta(hours=1, minutes=30, seconds=30), "an hour ago"), (NOW - dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours ago"), (NOW - dt.timedelta(days=1), "a day ago"), (NOW - dt.timedelta(days=500), "1 year, 4 months ago"), (NOW - dt.timedelta(days=365 * 2 + 35), "2 years ago"), (NOW + dt.timedelta(seconds=1), "a second from now"), (NOW + dt.timedelta(seconds=30), "30 seconds from now"), (NOW + dt.timedelta(minutes=1, seconds=30), "a minute from now"), (NOW + dt.timedelta(minutes=2), "2 minutes from now"), (NOW + dt.timedelta(hours=1, minutes=30, seconds=30), "an hour from now"), (NOW + dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours from now"), (NOW + dt.timedelta(days=1), "a day from now"), (NOW + dt.timedelta(days=500), "1 year, 4 months from now"), (NOW + dt.timedelta(days=365 * 2 + 35), "2 years from now"), # regression tests for bugs in post-release humanize (NOW + dt.timedelta(days=10000), "27 years from now"), (NOW - dt.timedelta(days=365 + 35), "1 year, 1 month ago"), (30, "30 seconds ago"), (NOW - dt.timedelta(days=365 * 2 + 65), "2 years ago"), (NOW - dt.timedelta(days=365 + 4), "1 year, 4 days ago"), ("NaN", "NaN"), ], ) def test_naturaltime(test_input, expected): assert humanize.naturaltime(test_input) == expected def nt_nomonths(d): return humanize.naturaltime(d, months=False) @freeze_time("2020-02-02") @pytest.mark.parametrize( "test_input, expected", [ (NOW, "now"), (NOW - dt.timedelta(seconds=1), "a second ago"), (NOW - dt.timedelta(seconds=30), "30 seconds ago"), (NOW - dt.timedelta(minutes=1, seconds=30), "a minute ago"), (NOW - dt.timedelta(minutes=2), "2 minutes ago"), (NOW - dt.timedelta(hours=1, minutes=30, seconds=30), "an hour ago"), (NOW - dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours ago"), (NOW - dt.timedelta(days=1), "a day ago"), (NOW - dt.timedelta(days=17), "17 days ago"), (NOW - dt.timedelta(days=47), "47 days ago"), (NOW - dt.timedelta(days=500), "1 year, 135 days ago"), (NOW - dt.timedelta(days=365 * 2 + 35), "2 years ago"), (NOW + dt.timedelta(seconds=1), "a second from now"), (NOW + dt.timedelta(seconds=30), "30 seconds from now"), (NOW + dt.timedelta(minutes=1, seconds=30), "a minute from now"), (NOW + dt.timedelta(minutes=2), "2 minutes from now"), (NOW + dt.timedelta(hours=1, minutes=30, seconds=30), "an hour from now"), (NOW + dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours from now"), (NOW + dt.timedelta(days=1), "a day from now"), (NOW + dt.timedelta(days=500), "1 year, 135 days from now"), (NOW + dt.timedelta(days=365 * 2 + 35), "2 years from now"), # regression tests for bugs in post-release humanize (NOW + dt.timedelta(days=10000), "27 years from now"), (NOW - dt.timedelta(days=365 + 35), "1 year, 35 days ago"), (30, "30 seconds ago"), (NOW - dt.timedelta(days=365 * 2 + 65), "2 years ago"), (NOW - dt.timedelta(days=365 + 4), "1 year, 4 days ago"), ("NaN", "NaN"), ], ) def test_naturaltime_nomonths(test_input, expected): assert nt_nomonths(test_input) == expected @freeze_time("2020-02-02") @pytest.mark.parametrize( "test_args, expected", [ ([TODAY], "today"), ([TOMORROW], "tomorrow"), ([YESTERDAY], "yesterday"), ([dt.date(TODAY.year, 3, 5)], "Mar 05"), (["02/26/1984"], "02/26/1984"), ([dt.date(1982, 6, 27), "%Y.%m.%d"], "1982.06.27"), ([None], None), (["Not a date at all."], "Not a date at all."), ([VALUE_ERROR_TEST], VALUE_ERROR_TEST), ([OVERFLOW_ERROR_TEST], OVERFLOW_ERROR_TEST), ], ) def test_naturalday(test_args, expected): assert humanize.naturalday(*test_args) == expected @freeze_time("2020-02-02") @pytest.mark.parametrize( "test_input, expected", [ (TODAY, "today"), (TOMORROW, "tomorrow"), (YESTERDAY, "yesterday"), (dt.date(TODAY.year, 3, 5), "Mar 05"), (dt.date(1982, 6, 27), "Jun 27 1982"), (None, None), ("Not a date at all.", "Not a date at all."), (VALUE_ERROR_TEST, VALUE_ERROR_TEST), (OVERFLOW_ERROR_TEST, OVERFLOW_ERROR_TEST), (dt.date(2019, 2, 2), "Feb 02 2019"), (dt.date(2019, 3, 2), "Mar 02 2019"), (dt.date(2019, 4, 2), "Apr 02 2019"), (dt.date(2019, 5, 2), "May 02 2019"), (dt.date(2019, 6, 2), "Jun 02 2019"), (dt.date(2019, 7, 2), "Jul 02 2019"), (dt.date(2019, 8, 2), "Aug 02 2019"), (dt.date(2019, 9, 2), "Sep 02 2019"), (dt.date(2019, 10, 2), "Oct 02"), (dt.date(2019, 11, 2), "Nov 02"), (dt.date(2019, 12, 2), "Dec 02"), (dt.date(2020, 1, 2), "Jan 02"), (dt.date(2020, 2, 2), "today"), (dt.date(2020, 3, 2), "Mar 02"), (dt.date(2020, 4, 2), "Apr 02"), (dt.date(2020, 5, 2), "May 02"), (dt.date(2020, 6, 2), "Jun 02"), (dt.date(2020, 7, 2), "Jul 02"), (dt.date(2020, 8, 2), "Aug 02 2020"), (dt.date(2020, 9, 2), "Sep 02 2020"), (dt.date(2020, 10, 2), "Oct 02 2020"), (dt.date(2020, 11, 2), "Nov 02 2020"), (dt.date(2020, 12, 2), "Dec 02 2020"), (dt.date(2021, 1, 2), "Jan 02 2021"), (dt.date(2021, 2, 2), "Feb 02 2021"), ], ) def test_naturaldate(test_input, expected): assert humanize.naturaldate(test_input) == expected @pytest.mark.parametrize( "seconds, expected", [ (ONE_MICROSECOND, "a moment"), (FOUR_MICROSECONDS, "a moment"), (ONE_MILLISECOND, "a moment"), (FOUR_MILLISECONDS, "a moment"), (2, "2 seconds"), (4, "4 seconds"), (ONE_HOUR + FOUR_MILLISECONDS, "an hour"), (ONE_DAY + FOUR_MILLISECONDS, "a day"), (ONE_YEAR + FOUR_MICROSECONDS, "a year"), ], ) def test_naturaldelta_minimum_unit_default(seconds, expected): # Arrange delta = dt.timedelta(seconds=seconds) # Act / Assert assert humanize.naturaldelta(delta) == expected @pytest.mark.parametrize( "minimum_unit, seconds, expected", [ ("seconds", ONE_MICROSECOND, "a moment"), ("seconds", FOUR_MICROSECONDS, "a moment"), ("seconds", ONE_MILLISECOND, "a moment"), ("seconds", FOUR_MILLISECONDS, "a moment"), ("seconds", MICROSECONDS_101_943, "a moment"), # 0.10194 s ("seconds", MILLISECONDS_1_337, "a second"), # 1.337 s ("seconds", 2, "2 seconds"), ("seconds", 4, "4 seconds"), ("seconds", ONE_HOUR + FOUR_MILLISECONDS, "an hour"), ("seconds", ONE_DAY + FOUR_MILLISECONDS, "a day"), ("seconds", ONE_YEAR + FOUR_MICROSECONDS, "a year"), ("milliseconds", FOUR_MICROSECONDS, "0 milliseconds"), ("milliseconds", ONE_MILLISECOND, "1 millisecond"), ("milliseconds", FOUR_MILLISECONDS, "4 milliseconds"), ("milliseconds", MICROSECONDS_101_943, "101 milliseconds"), # 101.94 ms ("milliseconds", MILLISECONDS_1_337, "a second"), # 1,337 ms ("milliseconds", 2, "2 seconds"), ("milliseconds", 4, "4 seconds"), ("milliseconds", ONE_HOUR + FOUR_MILLISECONDS, "an hour"), ("milliseconds", ONE_YEAR + FOUR_MICROSECONDS, "a year"), ("microseconds", ONE_MICROSECOND, "1 microsecond"), ("microseconds", FOUR_MICROSECONDS, "4 microseconds"), ("microseconds", FOUR_MILLISECONDS, "4 milliseconds"), ("microseconds", MICROSECONDS_101_943, "101 milliseconds"), # 101,940 µs ("microseconds", MILLISECONDS_1_337, "a second"), # 1,337,000 µs ("microseconds", 2, "2 seconds"), ("microseconds", 4, "4 seconds"), ("microseconds", ONE_HOUR + FOUR_MILLISECONDS, "an hour"), ("microseconds", ONE_DAY + FOUR_MILLISECONDS, "a day"), ("microseconds", ONE_YEAR + FOUR_MICROSECONDS, "a year"), ], ) def test_naturaldelta_minimum_unit_explicit(minimum_unit, seconds, expected): # Arrange delta = dt.timedelta(seconds=seconds) # Act / Assert assert humanize.naturaldelta(delta, minimum_unit=minimum_unit) == expected @pytest.mark.parametrize( "seconds, expected", [ (ONE_MICROSECOND, "now"), (FOUR_MICROSECONDS, "now"), (ONE_MILLISECOND, "now"), (FOUR_MILLISECONDS, "now"), (2, "2 seconds ago"), (4, "4 seconds ago"), (ONE_HOUR + FOUR_MILLISECONDS, "an hour ago"), (ONE_DAY + FOUR_MILLISECONDS, "a day ago"), (ONE_YEAR + FOUR_MICROSECONDS, "a year ago"), ], ) def test_naturaltime_minimum_unit_default(seconds, expected): # Arrange delta = dt.timedelta(seconds=seconds) # Act / Assert assert humanize.naturaltime(delta) == expected @pytest.mark.parametrize( "minimum_unit, seconds, expected", [ ("seconds", ONE_MICROSECOND, "now"), ("seconds", FOUR_MICROSECONDS, "now"), ("seconds", ONE_MILLISECOND, "now"), ("seconds", FOUR_MILLISECONDS, "now"), ("seconds", MICROSECONDS_101_943, "now"), # 0.10194 s ("seconds", MILLISECONDS_1_337, "a second ago"), # 1.337 s ("seconds", 2, "2 seconds ago"), ("seconds", 4, "4 seconds ago"), ("seconds", ONE_HOUR + FOUR_MILLISECONDS, "an hour ago"), ("seconds", ONE_DAY + FOUR_MILLISECONDS, "a day ago"), ("seconds", ONE_YEAR + FOUR_MICROSECONDS, "a year ago"), ("milliseconds", FOUR_MICROSECONDS, "0 milliseconds ago"), ("milliseconds", ONE_MILLISECOND, "1 millisecond ago"), ("milliseconds", FOUR_MILLISECONDS, "4 milliseconds ago"), ("milliseconds", MICROSECONDS_101_943, "101 milliseconds ago"), # 101.94 ms ("milliseconds", MILLISECONDS_1_337, "a second ago"), # 1,337 ms ("milliseconds", 2, "2 seconds ago"), ("milliseconds", 4, "4 seconds ago"), ("milliseconds", ONE_HOUR + FOUR_MILLISECONDS, "an hour ago"), ("milliseconds", ONE_YEAR + FOUR_MICROSECONDS, "a year ago"), ("microseconds", ONE_MICROSECOND, "1 microsecond ago"), ("microseconds", FOUR_MICROSECONDS, "4 microseconds ago"), ("microseconds", FOUR_MILLISECONDS, "4 milliseconds ago"), ("microseconds", MICROSECONDS_101_943, "101 milliseconds ago"), # 101,940 µs ("microseconds", MILLISECONDS_1_337, "a second ago"), # 1,337,000 µs ("microseconds", 2, "2 seconds ago"), ("microseconds", 4, "4 seconds ago"), ("microseconds", ONE_HOUR + FOUR_MILLISECONDS, "an hour ago"), ("microseconds", ONE_DAY + FOUR_MILLISECONDS, "a day ago"), ("microseconds", ONE_YEAR + FOUR_MICROSECONDS, "a year ago"), ], ) def test_naturaltime_minimum_unit_explicit(minimum_unit, seconds, expected): # Arrange delta = dt.timedelta(seconds=seconds) # Act / Assert assert humanize.naturaltime(delta, minimum_unit=minimum_unit) == expected @pytest.mark.parametrize( "val, min_unit, expected", [ (dt.timedelta(microseconds=1), "microseconds", "1 microsecond"), (dt.timedelta(microseconds=2), "microseconds", "2 microseconds"), (dt.timedelta(microseconds=1000), "microseconds", "1 millisecond"), (dt.timedelta(microseconds=2000), "microseconds", "2 milliseconds"), (dt.timedelta(seconds=1), "seconds", "1 second"), (1, "seconds", "1 second"), (2, "seconds", "2 seconds"), (60, "seconds", "1 minute"), (120, "seconds", "2 minutes"), (3600, "seconds", "1 hour"), (3600 * 2, "seconds", "2 hours"), (3600 * 24, "seconds", "1 day"), (3600 * 24 * 2, "seconds", "2 days"), (3600 * 24 * 365, "seconds", "1 year"), (3600 * 24 * 365 * 2, "seconds", "2 years"), (3600 * 24 * 365 * 1_963, "seconds", "1,963 years"), ], ) def test_precisedelta_one_unit_enough(val, min_unit, expected): assert humanize.precisedelta(val, minimum_unit=min_unit) == expected @pytest.mark.parametrize( "val, min_unit, expected", [ ( dt.timedelta(microseconds=1001), "microseconds", "1 millisecond and 1 microsecond", ), ( dt.timedelta(microseconds=2002), "microseconds", "2 milliseconds and 2 microseconds", ), ( dt.timedelta(seconds=1, microseconds=2), "microseconds", "1 second and 2 microseconds", ), ( dt.timedelta(hours=4, seconds=3, microseconds=2), "microseconds", "4 hours, 3 seconds and 2 microseconds", ), ( dt.timedelta(days=5, hours=4, seconds=3, microseconds=2), "microseconds", "5 days, 4 hours, 3 seconds and 2 microseconds", ), ( dt.timedelta(days=370, hours=4, seconds=3, microseconds=2), "microseconds", "1 year, 5 days, 4 hours, 3 seconds and 2 microseconds", ), ( dt.timedelta(days=370, microseconds=2), "microseconds", "1 year, 5 days and 2 microseconds", ), ( dt.timedelta(days=370, seconds=2), "microseconds", "1 year, 5 days and 2 seconds", ), ( dt.timedelta(seconds=0.01), "minutes", "0 minutes", ), ], ) def test_precisedelta_multiple_units(val, min_unit, expected): assert humanize.precisedelta(val, minimum_unit=min_unit) == expected @pytest.mark.parametrize( "val, min_unit, fmt, expected", [ ( dt.timedelta(microseconds=1001), "milliseconds", "%0.4f", "1.0010 milliseconds", ), ( dt.timedelta(microseconds=2002), "milliseconds", "%0.4f", "2.0020 milliseconds", ), (dt.timedelta(microseconds=2002), "milliseconds", "%0.2f", "2.00 milliseconds"), ( dt.timedelta(seconds=1, microseconds=230000), "seconds", "%0.2f", "1.23 seconds", ), ( dt.timedelta(hours=4, seconds=3, microseconds=200000), "seconds", "%0.2f", "4 hours and 3.20 seconds", ), ( dt.timedelta(days=5, hours=4, seconds=30 * 60), "seconds", "%0.2f", "5 days, 4 hours and 30 minutes", ), ( dt.timedelta(days=5, hours=4, seconds=30 * 60), "hours", "%0.2f", "5 days and 4.50 hours", ), (dt.timedelta(days=5, hours=4, seconds=30 * 60), "days", "%0.2f", "5.19 days"), (dt.timedelta(days=120), "months", "%0.2f", "3.93 months"), (dt.timedelta(days=183), "years", "%0.1f", "0.5 years"), ], ) def test_precisedelta_custom_format(val, min_unit, fmt, expected): assert humanize.precisedelta(val, minimum_unit=min_unit, format=fmt) == expected @pytest.mark.parametrize( "val, min_unit, suppress, expected", [ ( dt.timedelta(microseconds=1200), "microseconds", [], "1 millisecond and 200 microseconds", ), ( dt.timedelta(microseconds=1200), "microseconds", ["milliseconds"], "1200 microseconds", ), ( dt.timedelta(microseconds=1200), "microseconds", ["microseconds"], "1.20 milliseconds", ), ( dt.timedelta(seconds=1, microseconds=200), "microseconds", ["seconds"], "1000 milliseconds and 200 microseconds", ), ( dt.timedelta(seconds=1, microseconds=200000), "microseconds", ["milliseconds"], "1 second and 200000 microseconds", ), ( dt.timedelta(seconds=1, microseconds=200000), "microseconds", ["milliseconds", "microseconds"], "1.20 seconds", ), ( dt.timedelta(hours=4, seconds=30, microseconds=200), "microseconds", ["microseconds"], "4 hours, 30 seconds and 0.20 milliseconds", ), ( dt.timedelta(hours=4, seconds=30, microseconds=200), "microseconds", ["seconds"], "4 hours, 30000 milliseconds and 200 microseconds", ), ( dt.timedelta(hours=4, seconds=30, microseconds=200), "microseconds", ["seconds", "milliseconds"], "4 hours and 30000200 microseconds", ), ( dt.timedelta(hours=4, seconds=30, microseconds=200), "microseconds", ["hours"], "240 minutes, 30 seconds and 200 microseconds", ), ( dt.timedelta(hours=4, seconds=30, microseconds=200), "microseconds", ["hours", "seconds", "milliseconds", "microseconds"], "240.50 minutes", ), ], ) def test_precisedelta_suppress_units(val, min_unit, suppress, expected): assert ( humanize.precisedelta(val, minimum_unit=min_unit, suppress=suppress) == expected ) def test_precisedelta_bogus_call(): assert humanize.precisedelta(None) is None with pytest.raises(ValueError): humanize.precisedelta(1, minimum_unit="years", suppress=["years"]) with pytest.raises(ValueError): humanize.naturaldelta(1, minimum_unit="years") def test_time_unit(): years, minutes = time.Unit["YEARS"], time.Unit["MINUTES"] assert minutes < years assert years > minutes assert minutes == minutes with pytest.raises(TypeError): years < "foo" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1644743555.0 humanize-4.0.0/tox.ini0000644000076500000000000000073300000000000013472 0ustar00hugowheel[tox] envlist = py{py3, 310, 39, 38, 37} [testenv] passenv = FORCE_COLOR extras = tests commands = {envpython} -m pytest --cov humanize --cov tests --cov-report xml {posargs} [testenv:docs] deps = -rdocs/requirements.txt commands = mkdocs build [testenv:lint] passenv = PRE_COMMIT_COLOR skip_install = true deps = pre-commit commands = pre-commit run --all-files --show-diff-on-failure [pytest] addopts = --color=yes --doctest-modules